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 _CEGUIOgreTexture_h_
00029 #define _CEGUIOgreTexture_h_
00030
00031 #include "../../CEGUITexture.h"
00032 #include "CEGUIOgreRenderer.h"
00033 #include <OgreTexture.h>
00034
00035
00036 namespace CEGUI
00037 {
00039 class OGRE_GUIRENDERER_API OgreTexture : public Texture
00040 {
00041 public:
00043 void setOgreTexture(Ogre::TexturePtr texture, bool take_ownership = false);
00045 Ogre::TexturePtr getOgreTexture() const;
00046
00048 static Ogre::String getUniqueName();
00049
00050
00051 const Size& getSize() const;
00052 const Size& getOriginalDataSize() const;
00053 const Vector2& getTexelScaling() const;
00054 void loadFromFile(const String& filename, const String& resourceGroup);
00055 void loadFromMemory(const void* buffer, const Size& buffer_size,
00056 PixelFormat pixel_format);
00057 void saveToMemory(void* buffer);
00058
00059 protected:
00060
00061 friend Texture& OgreRenderer::createTexture();
00062 friend Texture& OgreRenderer::createTexture(const String&, const String&);
00063 friend Texture& OgreRenderer::createTexture(const Size&);
00064 friend Texture& OgreRenderer::createTexture(Ogre::TexturePtr&, bool);
00065 friend void OgreRenderer::destroyTexture(Texture&);
00066
00068 OgreTexture();
00070 OgreTexture(const String& filename, const String& resourceGroup);
00072 OgreTexture(const Size& sz);
00074 OgreTexture(Ogre::TexturePtr& tex, bool take_ownership);
00075
00077 virtual ~OgreTexture();
00079 void freeOgreTexture();
00081 void updateCachedScaleValues();
00082
00084 static uint32 d_textureNumber;
00086 Ogre::TexturePtr d_texture;
00088 bool d_isLinked;
00090 Size d_size;
00092 Size d_dataSize;
00094 Vector2 d_texelScaling;
00095 };
00096
00097 }
00098
00099 #endif // end of guard _CEGUIOgreTexture_h_