1 // --------------------------------------------------------------------------- 2 // 3 // @file TwOpenGL.h 4 // @brief OpenGL graph functions 5 // @author Philippe Decaudin 6 // @license This file is part of the AntTweakBar library. 7 // For conditions of distribution and use, see License.txt 8 // 9 // note: Private header 10 // 11 // --------------------------------------------------------------------------- 12 13 14 #if !defined ANT_TW_OPENGL_INCLUDED 15 #define ANT_TW_OPENGL_INCLUDED 16 17 #include "TwGraph.h" 18 19 // --------------------------------------------------------------------------- 20 21 class CTwGraphOpenGL : public ITwGraph 22 { 23 public: 24 virtual int Init(); 25 virtual int Shut(); 26 virtual void BeginDraw(int _WndWidth, int _WndHeight); 27 virtual void EndDraw(); 28 virtual bool IsDrawing(); 29 virtual void Restore(); 30 virtual void DrawLine(int _X0, int _Y0, int _X1, int _Y1, color32 _Color0, color32 _Color1, bool _AntiAliased=false); 31 virtual void DrawLine(int _X0, int _Y0, int _X1, int _Y1, color32 _Color, bool _AntiAliased=false) { DrawLine(_X0, _Y0, _X1, _Y1, _Color, _Color, _AntiAliased); } 32 virtual void DrawRect(int _X0, int _Y0, int _X1, int _Y1, color32 _Color00, color32 _Color10, color32 _Color01, color32 _Color11); DrawRect(int _X0,int _Y0,int _X1,int _Y1,color32 _Color)33 virtual void DrawRect(int _X0, int _Y0, int _X1, int _Y1, color32 _Color) { DrawRect(_X0, _Y0, _X1, _Y1, _Color, _Color, _Color, _Color); } 34 virtual void DrawTriangles(int _NumTriangles, int *_Vertices, color32 *_Colors, Cull _CullMode); 35 36 virtual void * NewTextObj(); 37 virtual void DeleteTextObj(void *_TextObj); 38 virtual void BuildText(void *_TextObj, const std::string *_TextLines, color32 *_LineColors, color32 *_LineBgColors, int _NbLines, const CTexFont *_Font, int _Sep, int _BgWidth); 39 virtual void DrawText(void *_TextObj, int _X, int _Y, color32 _Color, color32 _BgColor); 40 41 virtual void ChangeViewport(int _X0, int _Y0, int _Width, int _Height, int _OffsetX, int _OffsetY); 42 virtual void RestoreViewport(); 43 virtual void SetScissor(int _X0, int _Y0, int _Width, int _Height); 44 45 protected: 46 bool m_Drawing; 47 GLuint m_FontTexID; 48 const CTexFont * m_FontTex; 49 GLfloat m_PrevLineWidth; 50 GLint m_PrevTexEnv; 51 GLint m_PrevPolygonMode[2]; 52 GLint m_MaxClipPlanes; 53 GLint m_PrevTexture; 54 GLint m_PrevArrayBufferARB; 55 GLint m_PrevElementArrayBufferARB; 56 GLboolean m_PrevVertexProgramARB; 57 GLboolean m_PrevFragmentProgramARB; 58 GLuint m_PrevProgramObjectARB; 59 GLboolean m_PrevTexture3D; 60 enum EMaxTextures { MAX_TEXTURES = 128 }; 61 GLboolean m_PrevActiveTexture1D[MAX_TEXTURES]; 62 GLboolean m_PrevActiveTexture2D[MAX_TEXTURES]; 63 GLboolean m_PrevActiveTexture3D[MAX_TEXTURES]; 64 GLboolean m_PrevClientTexCoordArray[MAX_TEXTURES]; 65 GLint m_PrevActiveTextureARB; 66 GLint m_PrevClientActiveTextureARB; 67 bool m_SupportTexRect; 68 GLboolean m_PrevTexRectARB; 69 GLint m_PrevBlendEquation; 70 GLint m_PrevBlendEquationRGB; 71 GLint m_PrevBlendEquationAlpha; 72 GLint m_PrevBlendSrcRGB; 73 GLint m_PrevBlendDstRGB; 74 GLint m_PrevBlendSrcAlpha; 75 GLint m_PrevBlendDstAlpha; 76 GLuint m_PrevVertexArray; 77 GLint m_ViewportInit[4]; 78 GLfloat m_ProjMatrixInit[16]; 79 enum EMaxVtxAttribs { MAX_VERTEX_ATTRIBS = 128 }; 80 GLint m_PrevEnabledVertexAttrib[MAX_VERTEX_ATTRIBS]; 81 int m_WndWidth; 82 int m_WndHeight; 83 Vec2Vec284 struct Vec2 { GLfloat x, y; Vec2(){} Vec2(GLfloat _X, GLfloat _Y):x(_X),y(_Y){} Vec2(int _X, int _Y):x(GLfloat(_X)),y(GLfloat(_Y)){} }; 85 struct CTextObj 86 { 87 std::vector<Vec2> m_TextVerts; 88 std::vector<Vec2> m_TextUVs; 89 std::vector<Vec2> m_BgVerts; 90 std::vector<color32>m_Colors; 91 std::vector<color32>m_BgColors; 92 }; 93 }; 94 95 // --------------------------------------------------------------------------- 96 97 98 #endif // !defined ANT_TW_OPENGL_INCLUDED 99