| [1638] | 1 | /************************************************************************ | 
|---|
 | 2 |     filename:   OgreCEGUITexture.h | 
|---|
 | 3 |     created:    11/5/2004 | 
|---|
 | 4 |     author:             Paul D Turner | 
|---|
 | 5 |      | 
|---|
 | 6 |     purpose:    Interface to Texture implemented via Ogre engine | 
|---|
 | 7 | *************************************************************************/ | 
|---|
 | 8 | /************************************************************************* | 
|---|
 | 9 |     Crazy Eddie's GUI System (http://www.cegui.org.uk) | 
|---|
 | 10 |     Copyright (C)2004 - 2005 Paul D Turner (paul@cegui.org.uk) | 
|---|
 | 11 |  | 
|---|
 | 12 |     This library is free software; you can redistribute it and/or | 
|---|
 | 13 |     modify it under the terms of the GNU Lesser General Public | 
|---|
 | 14 |     License as published by the Free Software Foundation; either | 
|---|
 | 15 |     version 2.1 of the License, or (at your option) any later version. | 
|---|
 | 16 |  | 
|---|
 | 17 |     This library is distributed in the hope that it will be useful, | 
|---|
 | 18 |     but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|---|
 | 19 |     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|---|
 | 20 |     Lesser General Public License for more details. | 
|---|
 | 21 |  | 
|---|
 | 22 |     You should have received a copy of the GNU Lesser General Public | 
|---|
 | 23 |     License along with this library; if not, write to the Free Software | 
|---|
 | 24 |     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | 
|---|
 | 25 | *************************************************************************/ | 
|---|
| [1784] | 26 | #ifndef _OgreCEGUITexture_H__ | 
|---|
 | 27 | #define _OgreCEGUITexture_H__ | 
|---|
| [1638] | 28 |  | 
|---|
 | 29 | #include <CEGUIBase.h> | 
|---|
 | 30 | #include <CEGUIRenderer.h> | 
|---|
 | 31 | #include <CEGUITexture.h> | 
|---|
 | 32 | #include "OgreCEGUIRenderer.h" | 
|---|
 | 33 |  | 
|---|
 | 34 | // Start of CEGUI namespace section | 
|---|
 | 35 | namespace CEGUI | 
|---|
 | 36 | { | 
|---|
 | 37 | /*! | 
|---|
 | 38 | \brief | 
|---|
 | 39 |     Texture class that is created by OgreCEGUIRenderer objects | 
|---|
 | 40 | */ | 
|---|
 | 41 | class _OgrePrivate OgreCEGUITexture : public Texture | 
|---|
 | 42 | { | 
|---|
 | 43 | private: | 
|---|
 | 44 |     /************************************************************************* | 
|---|
 | 45 |         Friends (to allow construction and destruction) | 
|---|
 | 46 |     *************************************************************************/ | 
|---|
 | 47 |     friend      Texture* OgreCEGUIRenderer::createTexture(void); | 
|---|
 | 48 |     friend      Texture* OgreCEGUIRenderer::createTexture(const String& filename, const String& resourceGroup); | 
|---|
 | 49 |     friend      Texture* OgreCEGUIRenderer::createTexture(float size); | 
|---|
 | 50 |     friend      void     OgreCEGUIRenderer::destroyTexture(Texture* texture); | 
|---|
 | 51 |  | 
|---|
 | 52 |  | 
|---|
 | 53 |     /************************************************************************* | 
|---|
 | 54 |         Construction & Destruction (by Renderer object only) | 
|---|
 | 55 |     *************************************************************************/ | 
|---|
 | 56 |     OgreCEGUITexture(Renderer* owner); | 
|---|
 | 57 |     virtual ~OgreCEGUITexture(void); | 
|---|
 | 58 |  | 
|---|
 | 59 | public: | 
|---|
 | 60 |     /*! | 
|---|
 | 61 |     \brief | 
|---|
 | 62 |         Returns the current pixel width of the texture | 
|---|
 | 63 |  | 
|---|
 | 64 |     \return | 
|---|
 | 65 |         ushort value that is the current width of the texture in pixels | 
|---|
 | 66 |     */ | 
|---|
 | 67 |     virtual     ushort  getWidth(void) const            {return d_width;} | 
|---|
 | 68 |  | 
|---|
 | 69 |  | 
|---|
 | 70 |     /*! | 
|---|
 | 71 |     \brief | 
|---|
 | 72 |         Returns the current pixel height of the texture | 
|---|
 | 73 |  | 
|---|
 | 74 |     \return | 
|---|
 | 75 |         ushort value that is the current height of the texture in pixels | 
|---|
 | 76 |     */ | 
|---|
 | 77 |     virtual     ushort  getHeight(void) const           {return d_height;} | 
|---|
 | 78 |  | 
|---|
 | 79 |  | 
|---|
 | 80 |     /*! | 
|---|
 | 81 |     \brief | 
|---|
 | 82 |         Loads the specified image file into the texture.  The texture is resized as required to hold the image. | 
|---|
 | 83 |  | 
|---|
 | 84 |     \param filename | 
|---|
 | 85 |         The filename of the image file that is to be loaded into the texture | 
|---|
 | 86 |  | 
|---|
 | 87 |     \return | 
|---|
 | 88 |         Nothing. | 
|---|
 | 89 |     */ | 
|---|
 | 90 |     virtual void        loadFromFile(const String& filename, const String& resourceGroup); | 
|---|
 | 91 |  | 
|---|
 | 92 |  | 
|---|
 | 93 |     /*! | 
|---|
 | 94 |     \brief | 
|---|
 | 95 |         Loads (copies) an image in memory into the texture.  The texture is resized as required to hold the image. | 
|---|
 | 96 |      | 
|---|
 | 97 |     \param buffPtr | 
|---|
 | 98 |         Pointer to the buffer containing the image data | 
|---|
 | 99 |      | 
|---|
 | 100 |     \param buffWidth | 
|---|
 | 101 |         Width of the buffer (in pixels as specified by \a pixelFormat ) | 
|---|
 | 102 |      | 
|---|
 | 103 |     \param buffHeight | 
|---|
 | 104 |         Height of the buffer (in pixels as specified by \a pixelFormat ) | 
|---|
 | 105 |      | 
|---|
 | 106 |     \param pixelFormat | 
|---|
 | 107 |     PixelFormat value describing the format contained in \a buffPtr | 
|---|
 | 108 |      | 
|---|
 | 109 |     \return | 
|---|
 | 110 |         Nothing. | 
|---|
 | 111 |     */ | 
|---|
 | 112 |     virtual void        loadFromMemory(const void* buffPtr, uint buffWidth, uint buffHeight, PixelFormat pixelFormat); | 
|---|
 | 113 |  | 
|---|
 | 114 |  | 
|---|
 | 115 |     /*! | 
|---|
 | 116 |     \brief | 
|---|
 | 117 |         Return a pointer to the internal Ogre::Texture object | 
|---|
 | 118 |  | 
|---|
 | 119 |     \return | 
|---|
 | 120 |         Pointer to the Ogre::Texture object currently being used by this Texture object | 
|---|
 | 121 |     */ | 
|---|
 | 122 |     Ogre::TexturePtr    getOgreTexture(void) const              {return d_ogre_texture;} | 
|---|
 | 123 |  | 
|---|
 | 124 |  | 
|---|
 | 125 |     /*! | 
|---|
 | 126 |     \brief | 
|---|
 | 127 |         set the size of the internal Ogre texture.  Previous Ogre texture is lost. | 
|---|
 | 128 |  | 
|---|
 | 129 |     \param size | 
|---|
 | 130 |         pixel size of the new internal texture.  This will be rounded up to a power of 2. | 
|---|
 | 131 |  | 
|---|
 | 132 |     \return | 
|---|
 | 133 |         Nothing. | 
|---|
 | 134 |     */ | 
|---|
 | 135 |     void        setOgreTextureSize(uint size); | 
|---|
 | 136 |  | 
|---|
 | 137 |  | 
|---|
 | 138 |     /*! | 
|---|
 | 139 |     \brief | 
|---|
 | 140 |         Set the internal Ogre::TexturePtr object. | 
|---|
 | 141 |  | 
|---|
 | 142 |     \param texture | 
|---|
 | 143 |         Reference to an Ogre::TexturePtr object that is to be used by this Texture object. | 
|---|
 | 144 |  | 
|---|
 | 145 |     \return | 
|---|
 | 146 |         Nothing. | 
|---|
 | 147 |     */ | 
|---|
 | 148 |     void        setOgreTexture(Ogre::TexturePtr& texture); | 
|---|
 | 149 |  | 
|---|
 | 150 |  | 
|---|
 | 151 | private: | 
|---|
 | 152 |     /************************************************************************* | 
|---|
 | 153 |         Implementation Functions | 
|---|
 | 154 |     *************************************************************************/ | 
|---|
 | 155 |     // safely free Ogre::Texture texture (can be called multiple times with no ill effect) | 
|---|
 | 156 |     void        freeOgreTexture(void); | 
|---|
 | 157 |  | 
|---|
 | 158 |     // return a Ogre::string that contains a unique name. | 
|---|
 | 159 |     Ogre::String        getUniqueName(void); | 
|---|
 | 160 |  | 
|---|
 | 161 |  | 
|---|
 | 162 |     /************************************************************************* | 
|---|
 | 163 |         Implementation Data | 
|---|
 | 164 |     *************************************************************************/ | 
|---|
 | 165 |     static      uint32          d_texturenumber;        //!< Counter used to provide unique texture names. | 
|---|
 | 166 |  | 
|---|
 | 167 |     Ogre::TexturePtr            d_ogre_texture;         //!< The 'real' texture. | 
|---|
 | 168 |  | 
|---|
 | 169 |     ushort                                      d_width;                        //!< cached width of the texture | 
|---|
 | 170 |     ushort                                      d_height;                       //!< cached height of the texture | 
|---|
 | 171 |  | 
|---|
 | 172 |     bool        d_isLinked;             //!< True if we are linked to a texture we did not actually create. | 
|---|
 | 173 | }; | 
|---|
 | 174 |  | 
|---|
 | 175 |  | 
|---|
 | 176 | } // End of  CEGUI namespace section | 
|---|
 | 177 |  | 
|---|
 | 178 |  | 
|---|
| [1784] | 179 | #endif  // end of guard _OgreCEGUITexture_H__ | 
|---|