Crazy Eddie's GUI System  0.8.2
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
GeometryBuffer.h
1 /***********************************************************************
2  filename: CEGUIGeometryBuffer.h
3  created: Thu Jan 8 2009
4  author: Paul D Turner
5 *************************************************************************/
6 /***************************************************************************
7  * Copyright (C) 2004 - 2010 Paul D Turner & The CEGUI Development Team
8  *
9  * Permission is hereby granted, free of charge, to any person obtaining
10  * a copy of this software and associated documentation files (the
11  * "Software"), to deal in the Software without restriction, including
12  * without limitation the rights to use, copy, modify, merge, publish,
13  * distribute, sublicense, and/or sell copies of the Software, and to
14  * permit persons to whom the Software is furnished to do so, subject to
15  * the following conditions:
16  *
17  * The above copyright notice and this permission notice shall be
18  * included in all copies or substantial portions of the Software.
19  *
20  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23  * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
24  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
25  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26  * OTHER DEALINGS IN THE SOFTWARE.
27  ***************************************************************************/
28 #ifndef _CEGUIGeometryBuffer_h_
29 #define _CEGUIGeometryBuffer_h_
30 
31 #include "CEGUI/Base.h"
32 #include "CEGUI/Renderer.h"
33 #include "CEGUI/Rect.h"
34 
35 // Start of CEGUI namespace section
36 namespace CEGUI
37 {
43 class CEGUIEXPORT GeometryBuffer :
44  public AllocatedObject<GeometryBuffer>
45 {
46 public:
48  virtual ~GeometryBuffer();
49 
54  virtual void draw() const = 0;
55 
64  virtual void setTranslation(const Vector3f& v) = 0;
65 
74  virtual void setRotation(const Quaternion& r) = 0;
75 
84  virtual void setPivot(const Vector3f& p) = 0;
85 
90  virtual void setClippingRegion(const Rectf& region) = 0;
91 
99  virtual void appendVertex(const Vertex& vertex) = 0;
100 
113  virtual void appendGeometry(const Vertex* const vbuff, uint vertex_count)=0;
114 
124  virtual void setActiveTexture(Texture* texture) = 0;
125 
131  virtual void reset() = 0;
132 
142  virtual Texture* getActiveTexture() const = 0;
143 
152  virtual uint getVertexCount() const = 0;
153 
167  virtual uint getBatchCount() const = 0;
168 
183  virtual void setRenderEffect(RenderEffect* effect) = 0;
184 
190  virtual RenderEffect* getRenderEffect() = 0;
191 
204  virtual void setBlendMode(const BlendMode mode);
205 
215  virtual BlendMode getBlendMode() const;
216 
227  virtual void setClippingActive(const bool active) = 0;
228 
229  /*
230  \brief
231  Return whether clipping will be used for the current batch
232  of vertices being defined.
233 
234  \return
235  - true if vertices subsequently added to the GeometryBuffer will
236  be clipped to the clipping region defined for this GeometryBuffer.
237  - false if vertices subsequently added will not be clippled (other than
238  to the edges of the rendering target).
239  */
240  virtual bool isClippingActive() const = 0;
241 
242 protected:
244  GeometryBuffer();
245 
248 };
249 
250 } // End of CEGUI namespace section
251 
252 #endif // end of guard _CEGUIGeometryBuffer_h_