TextureResource.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef ROCKETCORETEXTURERESOURCE_H
00029 #define ROCKETCORETEXTURERESOURCE_H
00030
00031 #include <Rocket/Core/ReferenceCountable.h>
00032 #include <Rocket/Core/Texture.h>
00033
00034 namespace Rocket {
00035 namespace Core {
00036
00044 class TextureResource : public ReferenceCountable
00045 {
00046 friend class TextureDatabase;
00047
00048 public:
00049 virtual ~TextureResource();
00050
00054 bool Load(const String& source);
00055
00057 TextureHandle GetHandle(RenderInterface* render_interface) const;
00059 const Vector2i& GetDimensions(RenderInterface* render_interface) const;
00060
00062 const String& GetSource() const;
00063
00065 void Release(RenderInterface* render_interface = NULL);
00066
00067 protected:
00069 bool Load(RenderInterface* render_interface) const;
00070
00072 virtual void OnReferenceDeactivate();
00073
00074 private:
00075 TextureResource();
00076
00077 String source;
00078
00079 typedef std::pair< TextureHandle, Vector2i > TextureData;
00080 typedef std::map< RenderInterface*, TextureData > TextureDataMap;
00081 mutable TextureDataMap texture_data;
00082 };
00083
00084 }
00085 }
00086
00087 #endif