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 _CEGUIIrrlichtTexture_h_
00029 #define _CEGUIIrrlichtTexture_h_
00030
00031 #include "CEGUIIrrlichtRendererDef.h"
00032 #include "../../CEGUITexture.h"
00033 #include "CEGUIIrrlichtRenderer.h"
00034 #include <string>
00035
00036 namespace irr
00037 {
00038 namespace video
00039 {
00040 class ITexture;
00041 }
00042 }
00043
00044
00045 namespace CEGUI
00046 {
00047 class IrrlichtRenderer;
00048
00050 class IRR_GUIRENDERER_API IrrlichtTexture : public Texture
00051 {
00052 public:
00054 void setIrrlichtTexture(irr::video::ITexture* tex);
00055
00057 irr::video::ITexture* getIrrlichtTexture() const;
00058
00066 void setOriginalDataSize(const Size& sz);
00067
00069 static std::string getUniqueName();
00070
00071
00072 const Size& getSize() const;
00073 const Size& getOriginalDataSize() const;
00074 const Vector2& getTexelScaling() const;
00075 void loadFromFile(const String& filename, const String& resourceGroup);
00076 void loadFromMemory(const void* buffer, const Size& buffer_size,
00077 PixelFormat pixel_format);
00078 void saveToMemory(void* buffer);
00079
00080 protected:
00081
00082 friend Texture& IrrlichtRenderer::createTexture();
00083 friend Texture& IrrlichtRenderer::createTexture(const String&,
00084 const String&);
00085 friend Texture& IrrlichtRenderer::createTexture(const Size&);
00086 friend void IrrlichtRenderer::destroyTexture(Texture&);
00087
00089 IrrlichtTexture(IrrlichtRenderer& owner, irr::video::IVideoDriver& driver);
00091 IrrlichtTexture(IrrlichtRenderer& owner, irr::video::IVideoDriver& driver,
00092 const String& filename, const String& resourceGroup);
00094 IrrlichtTexture(IrrlichtRenderer& owner, irr::video::IVideoDriver& driver,
00095 const Size& size);
00097 ~IrrlichtTexture();
00098
00100 void createIrrlichtTexture(const Size& sz);
00101
00103 void freeIrrlichtTexture();
00104
00106 void updateCachedScaleValues();
00107
00109 static uint32 d_textureNumber;
00111 irr::video::IVideoDriver& d_driver;
00113 irr::video::ITexture* d_texture;
00115 Size d_size;
00117 Size d_dataSize;
00119 Vector2 d_texelScaling;
00121 IrrlichtRenderer& d_owner;
00122 };
00123
00124 }
00125
00126 #endif // end of guard _CEGUIIrrlichtTexture_h_