TDME2  1.9.200
GUIRenderer.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <array>
4 #include <memory>
5 #include <string>
6 #include <vector>
7 
8 #include <tdme/tdme.h>
11 #include <tdme/gui/fwd-tdme.h>
15 #include <tdme/math/Math.h>
16 #include <tdme/math/Matrix3x3.h>
18 #include <tdme/utilities/Console.h>
21 
22 using std::array;
23 using std::string;
24 using std::to_string;
25 using std::unique_ptr;
26 using std::vector;
27 
33 using tdme::gui::GUI;
34 using tdme::math::Math;
40 
41 /**
42  * GUI renderer
43  * @author Andreas Drewke
44  */
46 {
47 public:
48  static constexpr float SCREEN_LEFT { -1.0f };
49  static constexpr float SCREEN_TOP { 1.0f };
50  static constexpr float SCREEN_RIGHT { 1.0f };
51  static constexpr float SCREEN_BOTTOM { -1.0f };
52 
53 private:
54  static constexpr int QUAD_COUNT { 16384 };
55 
60  float guiEffectOffsetX,
61  float guiEffectOffsetY
62  ):
67  {}
72  };
73 
74  GUI* gui { nullptr };
75  Renderer* renderer { nullptr };
76  vector<int32_t>* vboIds { nullptr };
77  int quadCount { 0 };
78  unique_ptr<ByteBuffer> sbIndicesByteBuffer;
79  unique_ptr<ByteBuffer> fbVerticesByteBuffer;
81  unique_ptr<ByteBuffer> fbColorsByteBuffer;
83  unique_ptr<ByteBuffer> fbSolidColorsByteBuffer;
85  unique_ptr<ByteBuffer> fbTextureCoordinatesByteBuffer;
93  GUIScreenNode* screenNode { nullptr };
96  array<float, 4> fontColor;
97  array<float, 4> effectColorMul;
98  array<float, 4> effectColorAdd;
99  array<float, 4> effectColorMulFinal;
100  array<float, 4> effectColorAddFinal;
103  vector<GUIEffectStackEntity> stackedEffects;
104 
105 public:
106  // forbid class copy
108 
109  /**
110  * Public constructor
111  */
113 
114  /**
115  * Destructor
116  */
117  ~GUIRenderer();
118 
119  /**
120  * Set GUI
121  * @param gui gui
122  */
123  inline void setGUI(GUI* gui) {
124  this->gui = gui;
125  }
126 
127  /**
128  * @return GUI
129  */
130  inline GUI* getGUI() {
131  return gui;
132  }
133 
134  /**
135  * Init
136  */
137  void initialize();
138 
139  /**
140  * Dispose
141  */
142  void dispose();
143 
144  /**
145  * Init rendering
146  */
147  void initRendering();
148 
149  /**
150  * Done rendering
151  */
152  void doneRendering();
153 
154  /**
155  * @return GUI screen node
156  */
158  return screenNode;
159  }
160 
161  /**
162  * Init screen
163  * @param screenNode screen node
164  */
166 
167  /**
168  * Done screen
169  */
170  void doneScreen();
171 
172  /**
173  * Set effect color mul
174  * @param color color
175  */
176  inline void setFontColor(const GUIColor& color) {
177  fontColor = color.getArray();
178  }
179 
180  /**
181  * Set effect color mul
182  * @param color color
183  */
184  inline void setEffectColorMul(const GUIColor& color) {
185  effectColorMul = color.getArray();
186  }
187 
188  /**
189  * Set effect color add
190  * @param color color
191  */
192  inline void setEffectColorAdd(const GUIColor& color) {
193  effectColorAdd = color.getArray();;
194  }
195 
196  /**
197  * @return effect color mul
198  */
199  inline const GUIColor& getGUIEffectColorMul() {
200  return guiEffectColorMul;
201  }
202 
203  /**
204  * Set GUI effect color mul
205  * @param color color
206  */
207  void setGUIEffectColorMul(const GUIColor& color) {
208  guiEffectColorMul = color;
209  }
210 
211  /**
212  * @return effect color add
213  */
214  inline const GUIColor& getGUIEffectColorAdd() {
215  return guiEffectColorAdd;
216  }
217 
218  /**
219  * Set GUI effect color add
220  * @param color color
221  */
222  inline void setGUIEffectColorAdd(const GUIColor& color) {
223  guiEffectColorAdd = color;
224  }
225 
226  /**
227  * @return GUI effect offset X
228  */
229  inline float getGUIEffectOffsetX() {
230  return guiEffectOffsetX;
231  }
232 
233  /**
234  * Set GUI effect offset X
235  * @param guiEffectOffsetX gui effect offset X
236  */
238 
239  /**
240  * @return GUI effect offset Y
241  */
242  inline float getGUIEffectOffsetY() {
243  return guiEffectOffsetY;
244  }
245 
246  /**
247  * Set GUI effect offset Y
248  * @param guiEffectOffsetY GUI effect offset Y
249  */
251 
252  /**
253  * @return render area left
254  */
255  inline float getRenderAreaLeft() {
256  return renderAreaLeft;
257  }
258 
259  /**
260  * Set up render area left
261  * @param renderAreaLeft render area left
262  */
263  inline void setRenderAreaLeft(float renderAreaLeft) {
264  this->renderAreaLeft = renderAreaLeft;
265  }
266 
267  /**
268  * Set sub render area left
269  * @param renderAreaLeft render area left
270  */
272  this->renderAreaLeft = renderAreaLeft > this->renderAreaLeft?renderAreaLeft:this->renderAreaLeft;
273  }
274 
275  /**
276  * @return render area top
277  */
278  inline float getRenderAreaTop() {
279  return renderAreaTop;
280  }
281 
282  /**
283  * Set up render area top
284  * @param renderAreaTop render area top
285  */
286  inline void setRenderAreaTop(float renderAreaTop) {
287  this->renderAreaTop = renderAreaTop;
288  }
289 
290  /**
291  * Set sub render area top
292  * @param renderAreaTop render area top
293  */
294  inline void setSubRenderAreaTop(float renderAreaTop) {
295  this->renderAreaTop = renderAreaTop < this->renderAreaTop?renderAreaTop:this->renderAreaTop;
296  }
297 
298  /**
299  * @return render area right
300  */
301  inline float getRenderAreaRight() {
302  return renderAreaRight;
303  }
304 
305  /**
306  * Set up render area right
307  * @param renderAreaRight render area right
308  */
309  inline void setRenderAreaRight(float renderAreaRight) {
310  this->renderAreaRight = renderAreaRight;
311  }
312 
313  /**
314  * Set sub render area right
315  * @param renderAreaRight render area right
316  */
318  this->renderAreaRight = renderAreaRight < this->renderAreaRight?renderAreaRight:this->renderAreaRight;
319  }
320 
321  /**
322  * @return render area bottom
323  */
324  inline float getRenderAreaBottom() {
325  return renderAreaBottom;
326  }
327 
328  /**
329  * Set up render area bottom
330  * @param renderAreaBottom render area bottom
331  */
332  inline void setRenderAreaBottom(float renderAreaBottom) {
333  this->renderAreaBottom = renderAreaBottom;
334  }
335 
336  /**
337  * Set sub render area bottom
338  * @param renderAreaBottom render area bottom
339  */
341  this->renderAreaBottom = renderAreaBottom > this->renderAreaBottom?renderAreaBottom:this->renderAreaBottom;
342  }
343 
344  /**
345  * @return render offset x
346  */
347  inline float getRenderOffsetX() {
348  return renderOffsetX;
349  }
350 
351  /**
352  * Set render offset x
353  * @param renderOffsetX render offset x
354  */
355  inline void setRenderOffsetX(float renderOffsetX) {
356  this->renderOffsetX = renderOffsetX;
357  }
358 
359  /**
360  * @return render offset y
361  */
362  inline float getRenderOffsetY() {
363  return renderOffsetY;
364  }
365 
366  /**
367  * Set render offset y
368  * @param renderOffsetY render offset y
369  */
370  inline void setRenderOffsetY(float renderOffsetY) {
371  this->renderOffsetY = renderOffsetY;
372  }
373 
374  /**
375  * Push effects
376  * @oaran effects effects
377  */
378  inline void pushEffects(const vector<GUIEffect*>& effects) {
379  this->stackedEffects.emplace_back(
384  );
385  for (auto effect: effects) effect->apply(this);
386  }
387 
388  /**
389  * Pop effects
390  */
391  inline void popEffects() {
392  if (stackedEffects.empty() == true) {
393  guiEffectColorMul = GUIColor(1.0f, 1.0f, 1.0f, 1.0f);
394  guiEffectColorAdd = GUIColor(0.0f, 0.0f, 0.0f, 0.0f);
395  guiEffectOffsetX = 0.0f;
396  guiEffectOffsetY = 0.0f;
397  } else {
398  auto effectsIndex = stackedEffects.size() - 1;
399  const auto& effectStackEntity = stackedEffects[effectsIndex];
400  guiEffectColorMul = effectStackEntity.guiEffectColorMul;
401  guiEffectColorAdd = effectStackEntity.guiEffectColorAdd;
402  guiEffectOffsetX = effectStackEntity.guiEffectOffsetX;
403  guiEffectOffsetY = effectStackEntity.guiEffectOffsetY;
404  stackedEffects.erase(stackedEffects.begin() + effectsIndex);
405  }
406  }
407 
408  /**
409  * @return if quad is visible
410  */
411  inline bool isQuadVisible(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) {
412  x1 -= renderOffsetX;
413  x2 -= renderOffsetX;
414  y1 += renderOffsetY;
415  y3 += renderOffsetY;
416  x1 -= guiEffectOffsetX;
417  x2 -= guiEffectOffsetX;
418  y1 += guiEffectOffsetY;
419  y3 += guiEffectOffsetY;
420  auto renderAreaTop = this->renderAreaTop;
421  auto renderAreaBottom = this->renderAreaBottom;
422  auto renderAreaRight = this->renderAreaRight;
423  auto renderAreaLeft = this->renderAreaLeft;
424  // TODO: This prevented off screen rendering, but does collide with position effects and parent children viewport caches
425  renderAreaTop = Math::min(renderAreaTop + guiEffectOffsetY, SCREEN_TOP);
433  if (y3 > renderAreaTop) return false;
434  if (y1 < renderAreaBottom) return false;
435  if (x1 > renderAreaRight) return false;
436  if (x2 < renderAreaLeft) return false;
437  return true;
438  }
439 
440  /**
441  * @return if quad is visible without taking X into account
442  */
443  inline bool isQuadVisible2(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) {
444  y1 += renderOffsetY;
445  y3 += renderOffsetY;
446  y1 += guiEffectOffsetY;
447  y3 += guiEffectOffsetY;
448  auto renderAreaTop = this->renderAreaTop;
449  auto renderAreaBottom = this->renderAreaBottom;
450  auto renderAreaRight = this->renderAreaRight;
451  auto renderAreaLeft = this->renderAreaLeft;
452  // TODO: This prevented off screen rendering, but does collide with position effects and parent children viewport caches
453  renderAreaTop = Math::min(renderAreaTop + guiEffectOffsetY, SCREEN_TOP);
459  if (y3 > renderAreaTop) return false;
460  if (y1 < renderAreaBottom) return false;
461  return true;
462  }
463  /**
464  * Add quad
465  * Note: quad vertices order
466  * 1 2
467  * +----+
468  * | |
469  * | |
470  * +----+
471  * 4 3
472  * @param x1 x 1
473  * @param y1 y 1
474  * @param colorR1 color red 1
475  * @param colorG1 color green 1
476  * @param colorB1 color blue 1
477  * @param colorA1 color alpha 1
478  * @param tu1 texture u 1
479  * @param tv1 texture v 1
480  * @param x2 x 2
481  * @param y2 y 2
482  * @param colorR2 color red 2
483  * @param colorG2 color green 2
484  * @param colorB2 color blue 2
485  * @param colorA2 color alpha 2
486  * @param tu2 texture u 2
487  * @param tv2 texture v 2
488  * @param x3 x 3
489  * @param y3 y 3
490  * @param colorR3 color red 3
491  * @param colorG3 color green 3
492  * @param colorB3 color blue 3
493  * @param colorA3 color alpha 3
494  * @param tu3 texture u 3
495  * @param tv3 texture v 3
496  * @param x4 x 4
497  * @param y4 y 4
498  * @param colorR4 color red 4
499  * @param colorG4 color green 4
500  * @param colorB4 color blue 4
501  * @param colorA4 color alpha 4
502  * @param tu4 texture u 4
503  * @param tv4 texture v 4
504  * @param solidColor only render solid color
505  * @param rotated rotated
506  */
507  inline void addQuad(float x1, float y1, float colorR1, float colorG1, float colorB1, float colorA1, float tu1, float tv1, float x2, float y2, float colorR2, float colorG2, float colorB2, float colorA2, float tu2, float tv2, float x3, float y3, float colorR3, float colorG3, float colorB3, float colorA3, float tu3, float tv3, float x4, float y4, float colorR4, float colorG4, float colorB4, float colorA4, float tu4, float tv4, bool solidColor = false, bool rotated = false) {
508  if (quadCount > QUAD_COUNT) {
509  Console::println("GUIRenderer::addQuad()::too many quads");
510  return;
511  }
512  x1 -= renderOffsetX;
513  x2 -= renderOffsetX;
514  x3 -= renderOffsetX;
515  x4 -= renderOffsetX;
516  y1 += renderOffsetY;
517  y2 += renderOffsetY;
518  y3 += renderOffsetY;
519  y4 += renderOffsetY;
520  x1 -= guiEffectOffsetX;
521  x2 -= guiEffectOffsetX;
522  x3 -= guiEffectOffsetX;
523  x4 -= guiEffectOffsetX;
524  y1 += guiEffectOffsetY;
525  y2 += guiEffectOffsetY;
526  y3 += guiEffectOffsetY;
527  y4 += guiEffectOffsetY;
528  auto renderAreaTop = this->renderAreaTop;
529  auto renderAreaBottom = this->renderAreaBottom;
530  auto renderAreaRight = this->renderAreaRight;
531  auto renderAreaLeft = this->renderAreaLeft;
532  renderAreaTop = Math::min(renderAreaTop + guiEffectOffsetY, SCREEN_TOP);
536 
537 
538  auto quadBottom = y3;
539  if (quadBottom > renderAreaTop) return;
540  auto quadTop = y1;
541  if (quadTop < renderAreaBottom) return;
542  auto quadLeft = x1;
543  if (quadLeft > renderAreaRight) return;
544  auto quadRight = x2;
545  if (quadRight < renderAreaLeft) return;
546 
547  if (quadBottom < renderAreaBottom) {
548  tv3 = tv1 + ((tv3 - tv1) * ((y1 - renderAreaBottom) / (y1 - y3)));
549  tv4 = tv2 + ((tv4 - tv2) * ((y2 - renderAreaBottom) / (y1 - y4)));
550  y3 = renderAreaBottom;
551  y4 = renderAreaBottom;
552  }
553  if (quadTop > renderAreaTop) {
554  tv1 = tv1 + ((tv3 - tv1) * ((y1 - renderAreaTop) / (y1 - y3)));
555  tv2 = tv2 + ((tv4 - tv2) * ((y2 - renderAreaTop) / (y1 - y4)));
556  y1 = renderAreaTop;
557  y2 = renderAreaTop;
558  }
559  if (quadLeft < renderAreaLeft) {
560  tu1 = tu1 + ((tu2 - tu1) * ((renderAreaLeft - x1) / (x2 - x1)));
561  tu4 = tu4 + ((tu3 - tu4) * ((renderAreaLeft - x4) / (x3 - x4)));
562  x1 = renderAreaLeft;
563  x4 = renderAreaLeft;
564  }
565  if (quadRight > renderAreaRight) {
566  tu2 = tu2 - ((tu2 - tu1) * ((x2 - renderAreaRight) / (x2 - x1)));
567  tu3 = tu3 - ((tu3 - tu4) * ((x3 - renderAreaRight) / (x3 - x4)));
568  x2 = renderAreaRight;
569  x3 = renderAreaRight;
570  }
571 
572  fbVertices.put(x1);
573  fbVertices.put(y1);
574  fbColors.put(colorR1);
575  fbColors.put(colorG1);
576  fbColors.put(colorB1);
577  fbColors.put(colorA1);
578  fbVertices.put(x2);
579  fbVertices.put(y2);
580  fbColors.put(colorR2);
581  fbColors.put(colorG2);
582  fbColors.put(colorB2);
583  fbColors.put(colorA2);
584  fbVertices.put(x3);
585  fbVertices.put(y3);
586  fbColors.put(colorR3);
587  fbColors.put(colorG3);
588  fbColors.put(colorB3);
589  fbColors.put(colorA3);
590  fbVertices.put(x4);
591  fbVertices.put(y4);
592  fbColors.put(colorR4);
593  fbColors.put(colorG4);
594  fbColors.put(colorB4);
595  fbColors.put(colorA4);
596  if (rotated == false) {
605  } else {
614  }
615  if (solidColor == true) {
616  fbSolidColors.put(1.0f);
617  fbSolidColors.put(1.0f);
618  fbSolidColors.put(1.0f);
619  fbSolidColors.put(1.0f);
620  } else {
621  fbSolidColors.put(0.0f);
622  fbSolidColors.put(0.0f);
623  fbSolidColors.put(0.0f);
624  fbSolidColors.put(0.0f);
625  }
626  quadCount++;
627  }
628 
629  /**
630  * Set texture matrix
631  * @param textureMatrix texture matrix
632  */
633  void setTexureMatrix(const Matrix3x3& textureMatrix);
634 
635  /**
636  * Bind texture
637  * @param textureId texture
638  */
639  void bindTexture(int32_t textureId);
640 
641  /**
642  * Bind mask texture
643  * @param textureId texture
644  */
645  void bindMask(int32_t textureId);
646 
647  /**
648  * Set mask max value
649  * @param maskMaxValue mask maximum value
650  */
651  void setMaskMaxValue(float maskMaxValue);
652 
653  /**
654  * Set gradient properties
655  * @deprecated use rather custom UI shader and parameters
656  * @param count color count
657  * @param colors colors
658  * @param colorStarts color starts
659  * @param rotationAngle rotationAngle
660  */
661  void setGradient(int count, array<GUIColor, 10>& colors, array<float, 10>& colorStarts, float rotationAngle);
662 
663  /**
664  * Disable gradient
665  * @deprecated use rather custom UI shader and parameters
666  */
667  void unsetGradient();
668 
669  /**
670  * Render
671  */
672  void render();
673 
674 };
const array< float, 4 > & getArray() const
Definition: Color4.h:262
GUI module class.
Definition: GUI.h:64
GUI effect base class.
Definition: GUIEffect.h:26
GUI node base class.
Definition: GUINode.h:64
GUI screen node that represents a screen that can be rendered via GUI system.
Definition: GUIScreenNode.h:72
void setSubRenderAreaBottom(float renderAreaBottom)
Set sub render area bottom.
Definition: GUIRenderer.h:340
unique_ptr< ByteBuffer > sbIndicesByteBuffer
Definition: GUIRenderer.h:78
void setGradient(int count, array< GUIColor, 10 > &colors, array< float, 10 > &colorStarts, float rotationAngle)
Set gradient properties.
void setRenderAreaLeft(float renderAreaLeft)
Set up render area left.
Definition: GUIRenderer.h:263
void initRendering()
Init rendering.
void setMaskMaxValue(float maskMaxValue)
Set mask max value.
const GUIColor & getGUIEffectColorAdd()
Definition: GUIRenderer.h:214
void setTexureMatrix(const Matrix3x3 &textureMatrix)
Set texture matrix.
void unsetGradient()
Disable gradient.
void setGUIEffectOffsetY(float guiEffectOffsetY)
Set GUI effect offset Y.
void setGUIEffectColorMul(const GUIColor &color)
Set GUI effect color mul.
Definition: GUIRenderer.h:207
static constexpr float SCREEN_BOTTOM
Definition: GUIRenderer.h:51
static constexpr float SCREEN_TOP
Definition: GUIRenderer.h:49
array< float, 4 > effectColorMulFinal
Definition: GUIRenderer.h:99
void setGUIEffectColorAdd(const GUIColor &color)
Set GUI effect color add.
Definition: GUIRenderer.h:222
void initScreen(GUIScreenNode *screenNode)
Init screen.
void bindTexture(int32_t textureId)
Bind texture.
void setGUIEffectOffsetX(float guiEffectOffsetX)
Set GUI effect offset X.
void doneRendering()
Done rendering.
array< float, 4 > effectColorAdd
Definition: GUIRenderer.h:98
vector< GUIEffectStackEntity > stackedEffects
Definition: GUIRenderer.h:103
void setRenderAreaRight(float renderAreaRight)
Set up render area right.
Definition: GUIRenderer.h:309
void setRenderAreaTop(float renderAreaTop)
Set up render area top.
Definition: GUIRenderer.h:286
static constexpr float SCREEN_RIGHT
Definition: GUIRenderer.h:50
void setSubRenderAreaRight(float renderAreaRight)
Set sub render area right.
Definition: GUIRenderer.h:317
void setSubRenderAreaLeft(float renderAreaLeft)
Set sub render area left.
Definition: GUIRenderer.h:271
static constexpr int QUAD_COUNT
Definition: GUIRenderer.h:54
void setEffectColorAdd(const GUIColor &color)
Set effect color add.
Definition: GUIRenderer.h:192
vector< int32_t > * vboIds
Definition: GUIRenderer.h:76
bool isQuadVisible(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4)
Definition: GUIRenderer.h:411
bool isQuadVisible2(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4)
Definition: GUIRenderer.h:443
unique_ptr< ByteBuffer > fbColorsByteBuffer
Definition: GUIRenderer.h:81
void setSubRenderAreaTop(float renderAreaTop)
Set sub render area top.
Definition: GUIRenderer.h:294
void popEffects()
Pop effects.
Definition: GUIRenderer.h:391
GUIScreenNode * getScreenNode()
Definition: GUIRenderer.h:157
void setGUI(GUI *gui)
Set GUI.
Definition: GUIRenderer.h:123
void setRenderOffsetY(float renderOffsetY)
Set render offset y.
Definition: GUIRenderer.h:370
void setEffectColorMul(const GUIColor &color)
Set effect color mul.
Definition: GUIRenderer.h:184
void pushEffects(const vector< GUIEffect * > &effects)
Push effects @oaran effects effects.
Definition: GUIRenderer.h:378
unique_ptr< ByteBuffer > fbVerticesByteBuffer
Definition: GUIRenderer.h:79
void bindMask(int32_t textureId)
Bind mask texture.
void setRenderAreaBottom(float renderAreaBottom)
Set up render area bottom.
Definition: GUIRenderer.h:332
void addQuad(float x1, float y1, float colorR1, float colorG1, float colorB1, float colorA1, float tu1, float tv1, float x2, float y2, float colorR2, float colorG2, float colorB2, float colorA2, float tu2, float tv2, float x3, float y3, float colorR3, float colorG3, float colorB3, float colorA3, float tu3, float tv3, float x4, float y4, float colorR4, float colorG4, float colorB4, float colorA4, float tu4, float tv4, bool solidColor=false, bool rotated=false)
Add quad Note: quad vertices order 1 2 +-—+ | | | | +-—+ 4 3.
Definition: GUIRenderer.h:507
unique_ptr< ByteBuffer > fbSolidColorsByteBuffer
Definition: GUIRenderer.h:83
array< float, 4 > effectColorAddFinal
Definition: GUIRenderer.h:100
static constexpr float SCREEN_LEFT
Definition: GUIRenderer.h:48
void setFontColor(const GUIColor &color)
Set effect color mul.
Definition: GUIRenderer.h:176
array< float, 4 > effectColorMul
Definition: GUIRenderer.h:97
const GUIColor & getGUIEffectColorMul()
Definition: GUIRenderer.h:199
void setRenderOffsetX(float renderOffsetX)
Set render offset x.
Definition: GUIRenderer.h:355
GUIRenderer(Renderer *renderer)
Public constructor.
Definition: GUIRenderer.cpp:45
unique_ptr< ByteBuffer > fbTextureCoordinatesByteBuffer
Definition: GUIRenderer.h:85
Standard math functions.
Definition: Math.h:19
Matrix3x3 class representing matrix3x3 mathematical structure and operations for 2d space.
Definition: Matrix3x3.h:20
Byte buffer class.
Definition: ByteBuffer.h:27
Console class.
Definition: Console.h:29
Float buffer class.
Definition: FloatBuffer.h:18
FloatBuffer * put(float value)
Put a float value into float buffer.
Definition: FloatBuffer.h:67
Short buffer class.
Definition: ShortBuffer.h:14
GUIEffectStackEntity(const GUIColor &guiEffectColorMul, const GUIColor &guiEffectColorAdd, float guiEffectOffsetX, float guiEffectOffsetY)
Definition: GUIRenderer.h:57
#define FORBID_CLASS_COPY(CLASS)
Definition: tdme.h:6