Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/hudimprovements/src/external/ogreceguirenderer/OgreCEGUITexture.h @ 8740

Last change on this file since 8740 was 5781, checked in by rgrieder, 15 years ago

Reverted trunk again. We might want to find a way to delete these revisions again (x3n's changes are still available as diff in the commit mails).

  • Property svn:eol-style set to native
File size: 5.4 KB
Line 
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*************************************************************************/
26#ifndef _OgreCEGUITexture_h_
27#define _OgreCEGUITexture_h_
28
29#include <CEGUIBase.h>
30#include <CEGUIRenderer.h>
31#include <CEGUITexture.h>
32#include "OgreCEGUIRenderer.h"
33
34// Start of CEGUI namespace section
35namespace CEGUI
36{
37/*!
38\brief
39        Texture class that is created by OgreCEGUIRenderer objects
40*/
41class _OgrePrivate OgreCEGUITexture : public Texture
42{
43private:
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
59public:
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
151private:
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
179#endif  // end of guard _OgreCEGUITexture_h_
Note: See TracBrowser for help on using the repository browser.