/usr/include/CEGUI/CEGUIGeometryBuffer.h is in libcegui-mk2-dev 0.7.5-8.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 | /***********************************************************************
filename: CEGUIGeometryBuffer.h
created: Thu Jan 8 2009
author: Paul D Turner
*************************************************************************/
/***************************************************************************
* Copyright (C) 2004 - 2010 Paul D Turner & The CEGUI Development Team
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
***************************************************************************/
#ifndef _CEGUIGeometryBuffer_h_
#define _CEGUIGeometryBuffer_h_
#include "CEGUIBase.h"
#include "CEGUIRenderer.h"
// Start of CEGUI namespace section
namespace CEGUI
{
/*!
\brief
Abstract class defining the interface for objects that buffer geometry for
later rendering.
*/
class CEGUIEXPORT GeometryBuffer
{
public:
//! Destructor
virtual ~GeometryBuffer();
/*!
\brief
Draw the geometry buffered within this GeometryBuffer object.
*/
virtual void draw() const = 0;
/*!
\brief
Set the translation to be applied to the geometry in the buffer when it
is subsequently rendered.
\param v
Vector3 describing the three axis translation vector to be used.
*/
virtual void setTranslation(const Vector3& v) = 0;
/*!
\brief
Set the rotations to be applied to the geometry in the buffer when it is
subsequently rendered.
\param r
Vector3 describing the rotation factors to be used.
*/
virtual void setRotation(const Vector3& r) = 0;
/*!
\brief
Set the pivot point to be used when applying the rotations.
\param p
Vector3 describing the location of the pivot point to be used when
applying the rotation to the geometry.
*/
virtual void setPivot(const Vector3& p) = 0;
/*!
\brief
Set the clipping region to be used when rendering this buffer.
*/
virtual void setClippingRegion(const Rect& region) = 0;
/*!
\brief
Append a single vertex to the buffer.
\param vertex
Vertex object describing the vertex to be added to the GeometryBuffer.
*/
virtual void appendVertex(const Vertex& vertex) = 0;
/*!
\brief
Append a number of vertices from an array to the GeometryBuffer.
\param vbuff
Pointer to an array of Vertex objects that describe the vertices that
are to be added to the GeometryBuffer.
\param vertex_count
The number of Vertex objects from the array \a vbuff that are to be
added to the GeometryBuffer.
*/
virtual void appendGeometry(const Vertex* const vbuff, uint vertex_count)=0;
/*!
\brief
Set the active texture to be used with all subsequently added vertices.
\param texture
Pointer to a Texture object that shall be used for subsequently added
vertices. This may be 0, in which case texturing will be disabled for
subsequently added vertices.
*/
virtual void setActiveTexture(Texture* texture) = 0;
/*!
\brief
Clear all buffered data and reset the GeometryBuffer to the default
state.
*/
virtual void reset() = 0;
/*!
\brief
Return a pointer to the currently active Texture object. This may
return 0 if no texture is set.
\return
Pointer the Texture object that is currently active, or 0 if texturing
is not being used.
*/
virtual Texture* getActiveTexture() const = 0;
/*!
\brief
Return the total number of vertices currently held by this
GeometryBuffer object.
\return
The number of vertices that have been appended to this GeometryBuffer.
*/
virtual uint getVertexCount() const = 0;
/*!
\brief
Return the number of batches of geometry that this GeometryBuffer has
split the vertices into.
\note
How batching is done will be largely implementation specific, although
it would be reasonable to expect that you will have <em>at least</em>
one batch of geometry per texture switch.
\return
The number of batches of geometry held by the GeometryBuffer.
*/
virtual uint getBatchCount() const = 0;
/*!
\brief
Set the RenderEffect to be used by this GeometryBuffer.
\param effect
Pointer to the RenderEffect to be used during renderng of the
GeometryBuffer. May be 0 to remove a previously added RenderEffect.
\note
When adding a RenderEffect, the GeometryBuffer <em>does not</em> take
ownership of, nor make a copy of, the passed RenderEffect - this means
you need to be careful not to delete the RenderEffect if it might still
be in use!
*/
virtual void setRenderEffect(RenderEffect* effect) = 0;
/*!
\brief
Return the RenderEffect object that is assigned to this GeometryBuffer
or 0 if none.
*/
virtual RenderEffect* getRenderEffect() = 0;
/*!
\brief
Set the blend mode option to use when rendering this GeometryBuffer.
\note
The blend mode setting is not a 'state' setting, but is used for \e all
geometry added to the buffer regardless of when the blend mode is set.
\param mode
One of the BlendMode enumerated values indicating the blending mode to
be used.
*/
virtual void setBlendMode(const BlendMode mode);
/*!
\brief
Return the blend mode that is set to be used for this GeometryBuffer.
\return
One of the BlendMode enumerated values indicating the blending mode
that will be used when rendering all geometry added to this
GeometryBuffer object.
*/
virtual BlendMode getBlendMode() const;
protected:
//! Constructor.
GeometryBuffer();
//! The BlendMode to use when rendering this GeometryBuffer.
BlendMode d_blendMode;
};
} // End of CEGUI namespace section
#endif // end of guard _CEGUIGeometryBuffer_h_
|