1 /*********************************************************************** 2 created: Fri Jan 15 2010 3 author: Eugene Marcotte 4 *************************************************************************/ 5 /*************************************************************************** 6 * Copyright (C) 2004 - 2010 Paul D Turner & The CEGUI Development Team 7 * 8 * Permission is hereby granted, free of charge, to any person obtaining 9 * a copy of this software and associated documentation files (the 10 * "Software"), to deal in the Software without restriction, including 11 * without limitation the rights to use, copy, modify, merge, publish, 12 * distribute, sublicense, and/or sell copies of the Software, and to 13 * permit persons to whom the Software is furnished to do so, subject to 14 * the following conditions: 15 * 16 * The above copyright notice and this permission notice shall be 17 * included in all copies or substantial portions of the Software. 18 * 19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 22 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 23 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 24 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 25 * OTHER DEALINGS IN THE SOFTWARE. 26 ***************************************************************************/ 27 #ifndef _CEGUINullGeometryBuffer_h_ 28 #define _CEGUINullGeometryBuffer_h_ 29 30 #include "../../GeometryBuffer.h" 31 #include "CEGUI/RendererModules/Null/Renderer.h" 32 #include "../../Rect.h" 33 #include "../../Colour.h" 34 #include "../../Vertex.h" 35 #include "../../Quaternion.h" 36 37 #include <utility> 38 #include <vector> 39 40 #if defined(_MSC_VER) 41 # pragma warning(push) 42 # pragma warning(disable : 4251) 43 #endif 44 45 // Start of CEGUI namespace section 46 namespace CEGUI 47 { 48 //! Implementation of CEGUI::GeometryBuffer for the Null engine 49 class NULL_GUIRENDERER_API NullGeometryBuffer : public GeometryBuffer 50 { 51 public: 52 //! Constructor 53 NullGeometryBuffer(); 54 //! Destructor 55 virtual ~NullGeometryBuffer(); 56 57 // implement CEGUI::GeometryBuffer interface. 58 void draw() const; 59 void setTranslation(const Vector3f& v); 60 void setRotation(const Quaternion& r); 61 void setPivot(const Vector3f& p); 62 void setClippingRegion(const Rectf& region); 63 void appendVertex(const Vertex& vertex); 64 void appendGeometry(const Vertex* const vbuff, uint vertex_count); 65 void setActiveTexture(Texture* texture); 66 void reset(); 67 Texture* getActiveTexture() const; 68 uint getVertexCount() const; 69 uint getBatchCount() const; 70 void setRenderEffect(RenderEffect* effect); 71 RenderEffect* getRenderEffect(); 72 void setClippingActive(const bool active); 73 bool isClippingActive() const; 74 75 protected: 76 //! Texture that is set as active 77 NullTexture* d_activeTexture; 78 //! rectangular clip region 79 Rectf d_clipRect; 80 //! whether clipping will be active for the current batch 81 bool d_clippingActive; 82 //! translation vector 83 Vector3f d_translation; 84 //! rotation quaternion 85 Quaternion d_rotation; 86 //! pivot point for rotation 87 Vector3f d_pivot; 88 //! RenderEffect that will be used by the GeometryBuffer 89 RenderEffect* d_effect; 90 //! type of container used to queue the geometry 91 typedef std::vector<Vertex> VertexList; 92 //! container where added geometry is stored. 93 VertexList d_vertices; 94 }; 95 96 97 } // End of CEGUI namespace section 98 99 #if defined(_MSC_VER) 100 # pragma warning(pop) 101 #endif 102 103 #endif // end of guard _CEGUINullGeometryBuffer_h_ 104