Crazy Eddie's GUI System
0.8.4
|
00001 /*********************************************************************** 00002 created: Sun Jan 11 2009 00003 author: Paul D Turner 00004 *************************************************************************/ 00005 /*************************************************************************** 00006 * Copyright (C) 2004 - 2009 Paul D Turner & The CEGUI Development Team 00007 * 00008 * Permission is hereby granted, free of charge, to any person obtaining 00009 * a copy of this software and associated documentation files (the 00010 * "Software"), to deal in the Software without restriction, including 00011 * without limitation the rights to use, copy, modify, merge, publish, 00012 * distribute, sublicense, and/or sell copies of the Software, and to 00013 * permit persons to whom the Software is furnished to do so, subject to 00014 * the following conditions: 00015 * 00016 * The above copyright notice and this permission notice shall be 00017 * included in all copies or substantial portions of the Software. 00018 * 00019 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 00020 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 00021 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 00022 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 00023 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 00024 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 00025 * OTHER DEALINGS IN THE SOFTWARE. 00026 ***************************************************************************/ 00027 #ifndef _CEGUIOpenGLESTexture_h_ 00028 #define _CEGUIOpenGLESTexture_h_ 00029 00030 #include "CEGUI/Base.h" 00031 #include "CEGUI/Renderer.h" 00032 #include "CEGUI/Texture.h" 00033 #include "CEGUI/RendererModules/OpenGLES/Renderer.h" 00034 00035 // Start of CEGUI namespace section 00036 namespace CEGUI 00037 { 00039 class OPENGLES_GUIRENDERER_API OpenGLESTexture : public Texture 00040 { 00041 public: 00047 void setOpenGLESTexture(GLuint tex, const Sizef& size); 00048 00056 GLuint getOpenGLESTexture() const; 00057 00078 void setTextureSize(const Sizef& sz); 00079 00087 void grabTexture(); 00088 00094 void restoreTexture(); 00095 00096 // implement abstract members from base class. 00097 const String& getName() const; 00098 const Sizef& getSize() const; 00099 const Sizef& getOriginalDataSize() const; 00100 const Vector2f& getTexelScaling() const; 00101 void loadFromFile(const String& filename, const String& resourceGroup); 00102 void loadFromMemory(const void* buffer, const Sizef& buffer_size, 00103 PixelFormat pixel_format); 00104 void blitFromMemory(const void* sourceData, const Rectf& area); 00105 void blitToMemory(void* targetData); 00106 bool isPixelFormatSupported(const PixelFormat fmt) const; 00107 00108 protected: 00109 // Friends (to allow construction and destruction) 00110 friend Texture& OpenGLESRenderer::createTexture(const String&); 00111 friend Texture& OpenGLESRenderer::createTexture(const String&, const String&, const String&); 00112 friend Texture& OpenGLESRenderer::createTexture(const String&, const Sizef&); 00113 friend Texture& OpenGLESRenderer::createTexture(const String&, GLuint, const Sizef&); 00114 friend void OpenGLESRenderer::destroyTexture(const String&); 00115 friend void OpenGLESRenderer::destroyTexture(Texture&); 00116 00118 OpenGLESTexture(OpenGLESRenderer& owner, const String& name); 00120 OpenGLESTexture(OpenGLESRenderer& owner, const String& name, 00121 const String& filename, const String& resourceGroup); 00123 OpenGLESTexture(OpenGLESRenderer& owner, const String& name, 00124 const Sizef& size); 00126 OpenGLESTexture(OpenGLESRenderer& owner, const String& name, GLuint tex, 00127 const Sizef& size); 00129 virtual ~OpenGLESTexture(); 00130 00132 void generateOpenGLESTexture(); 00133 00135 void updateCachedScaleValues(); 00136 00138 void cleanupOpenGLESTexture(); 00139 00141 void initPixelFormatFields(const PixelFormat fmt); 00142 00144 void setTextureSize_impl(const Sizef& sz); 00145 00147 void loadUncompressedTextureBuffer(const Sizef& buffer_size, 00148 const void* buffer) const; 00149 00151 void loadCompressedTextureBuffer(const Sizef& buffer_size, 00152 const void* buffer) const; 00153 00154 GLsizei getCompressedTextureSize(const Sizef& pixel_size) const; 00155 00157 GLuint d_ogltexture; 00159 Sizef d_size; 00161 uint8* d_grabBuffer; 00163 Sizef d_dataSize; 00165 Vector2f d_texelScaling; 00167 OpenGLESRenderer& d_owner; 00169 const String d_name; 00171 GLenum d_format; 00173 GLenum d_subpixelFormat; 00175 bool d_isCompressed; 00176 }; 00177 00178 } // End of CEGUI namespace section 00179 00180 00181 #endif // end of guard _CEGUIOpenGLESTexture_h_