diff options
Diffstat (limited to 'chart2/source/view/main/OpenGLRender.hxx')
-rwxr-xr-x | chart2/source/view/main/OpenGLRender.hxx | 298 |
1 files changed, 0 insertions, 298 deletions
diff --git a/chart2/source/view/main/OpenGLRender.hxx b/chart2/source/view/main/OpenGLRender.hxx deleted file mode 100755 index 8e5314da1e41..000000000000 --- a/chart2/source/view/main/OpenGLRender.hxx +++ /dev/null @@ -1,298 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -#if defined( MACOSX ) -#elif defined( UNX ) -# include <prex.h> -# include "GL/glxew.h" -# include <postx.h> -#elif defined( _WIN32 ) -# include "prewin.h" -# include "windows.h" -# include "postwin.h" -#endif - -#include <GL/glew.h> - -#include <vcl/window.hxx> -#include <vcl/syschild.hxx> -#include <vcl/sysdata.hxx> -#include <vcl/bitmapex.hxx> -#include <com/sun/star/drawing/HomogenMatrix3.hpp> -#include <com/sun/star/drawing/XDrawPage.hpp> -#include <vcl/font.hxx> - - -#if defined( _WIN32 ) -#include <GL/glext.h> -#include <GL/wglext.h> -#elif defined( MACOSX ) -#elif defined( UNX ) -#include <GL/glext.h> -#define GLX_GLXEXT_PROTOTYPES 1 -#include <GL/glx.h> -#include <GL/glxext.h> - -#endif - -// Include GLM -#include <list> -#include "glm/glm.hpp" -#include "glm/gtx/transform.hpp" -#include "glm/gtx/euler_angles.hpp" -#include "glm/gtx/quaternion.hpp" - -#define OPENGL_SCALE_VALUE 20 -#define DEBUG_POSITIONING 0 -#define RENDER_TO_FILE 0 - -struct PosVecf3 -{ - float x; - float y; - float z; -}; - -typedef std::vector<GLfloat> Line2DPointList; - -struct Bubble2DPointList -{ - float x; - float y; - float xScale; - float yScale; -}; - -typedef std::vector<GLfloat> Bubble2DCircle; - -struct RectanglePointList -{ - float points[12]; -}; - -struct TextInfo -{ - GLuint texture; - double rotation; - float vertex[12]; - float nDx; - float nDy; -}; - -typedef std::vector<GLfloat> Area2DPointList; -typedef std::vector<GLfloat> PieSegment2DPointList; -typedef std::vector<GLfloat> PointList; - -/// Holds the information of our new child window -struct GLWindow -{ -#if defined( _WIN32 ) - HWND hWnd; - HDC hDC; - HGLRC hRC; -#elif defined( MACOSX ) -#elif defined( UNX ) - Display* dpy; - int screen; - XLIB_Window win; -#if defined( GLX_VERSION_1_3 ) && defined( GLX_EXT_texture_from_pixmap ) - GLXFBConfig fbc; -#endif - XVisualInfo* vi; - GLXContext ctx; - - bool HasGLXExtension( const char* name ) { return gluCheckExtension( (const GLubyte*) name, (const GLubyte*) GLXExtensions ); } - const char* GLXExtensions; -#endif - unsigned int bpp; - unsigned int Width; - unsigned int Height; - const GLubyte* GLExtensions; - - bool HasGLExtension( const char* name ) { return gluCheckExtension( (const GLubyte*) name, GLExtensions ); } - - GLWindow() - : -#if defined( _WIN32 ) -#elif defined( MACOSX ) -#elif defined( UNX ) - dpy(NULL), - screen(0), - win(0), -#if defined( GLX_VERSION_1_3 ) && defined( GLX_EXT_texture_from_pixmap ) - fbc(0), -#endif - vi(NULL), - ctx(0), - GLXExtensions(NULL), -#endif - bpp(0), - Width(0), - Height(0), - GLExtensions(NULL) - { - } -}; - -class OpenGLRender -{ -public: - OpenGLRender(com::sun::star::uno::Reference< - com::sun::star::drawing::XShape > xTarget ); - ~OpenGLRender(); - int InitOpenGL(GLWindow); - int MoveModelf(PosVecf3 trans, PosVecf3 angle, PosVecf3 scale); - void SetSize(int width, int height); - void Release(); -#if RENDER_TO_FILE - int CreateBMPHeader(sal_uInt8 *bmpHeader, int xsize, int ysize); -#endif - int RenderLine2FBO(int wholeFlag); - int SetLine2DShapePoint(float x, float y, int listLength); - void SetLine2DColor(sal_uInt8 r, sal_uInt8 g, sal_uInt8 b, sal_uInt8 nAlpha); - void SetLine2DWidth(int width); - BitmapEx GetAsBitmap(); -#if defined( _WIN32 ) - bool InitMultisample(PIXELFORMATDESCRIPTOR pfd); - bool GetMSAASupport(); - int GetMSAAFormat(); -#endif - void SetColor(sal_uInt32 color, sal_uInt8 nAlpha); - int Bubble2DShapePoint(float x, float y, float directionX, float directionY); - int RenderBubble2FBO(int wholeFlag); - - void prepareToRender(); - void renderToBitmap(); - - int RenderRectangleShape(bool bBorder, bool bFill); - int RectangleShapePoint(float x, float y, float directionX, float directionY); - - int CreateTextTexture(const BitmapEx& rBitmapEx, - const com::sun::star::awt::Point& aPos, const com::sun::star::awt::Size& aSize, - long rotation, const com::sun::star::drawing::HomogenMatrix3& rTrans); - int RenderTextShape(); - - int SetArea2DShapePoint(float x, float y, int listLength); - int RenderArea2DShape(); - void SetChartTransparencyGradient(long transparencyGradient); - - void GeneratePieSegment2D(double, double, double, double); - int RenderPieSegment2DShape(float, float, float); - - int RenderSymbol2DShape(float, float, float, float, sal_Int32); -#if DEBUG_POSITIONING - void renderDebug(); -#endif - - void SetBackGroundColor(sal_uInt32 color1, sal_uInt32 color2, sal_uInt8 nAlpha); -private: - GLint LoadShaders(const OUString& rVertexShaderName, const OUString& rFragmentShaderName); - int CreateTextureObj(int width, int height); - int CreateRenderObj(int width, int height); - int CreateFrameBufferObj(); -#if defined( _WIN32 ) - int InitTempWindow(HWND *hwnd, int width, int height, PIXELFORMATDESCRIPTOR inPfd); - bool WGLisExtensionSupported(const char *extension); -#endif - int CreateMultiSampleFrameBufObj(); - int Create2DCircle(int detail); - -private: - // Projection matrix : default 45 degree Field of View, 4:3 ratio, display range : 0.1 unit <-> 100 units - glm::mat4 m_Projection; - // Camera matrix - glm::mat4 m_View; - // Model matrix : an identity matrix (model will be at the origin - glm::mat4 m_Model; - // Our ModelViewProjection : multiplication of our 3 matrices - glm::mat4 m_MVP; - - GLuint m_VertexBuffer; - - GLuint m_ColorBuffer; - - GLint m_MatrixID; - - GLuint m_TextureObj; - - GLuint m_FboID; - - GLuint m_RboID; - - int m_iWidth; - - int m_iHeight; - - GLWindow glWin; - - Line2DPointList m_Line2DPointList; - - float m_fLineWidth; - - std::list <Line2DPointList> m_Line2DShapePointList; - - com::sun::star::uno::Reference< com::sun::star::drawing::XShape > mxRenderTarget; - - bool mbArbMultisampleSupported; -#if defined( _WIN32 ) - int m_iArbMultisampleFormat; -#endif - - glm::vec4 m_2DColor; - GLuint m_frameBufferMS; - GLuint m_renderBufferColorMS; - GLuint m_renderBufferDepthMS; - - Bubble2DCircle m_Bubble2DCircle; - - std::list <Bubble2DPointList> m_Bubble2DShapePointList; - GLint m_CommonProID; - GLint m_2DVertexID; - GLint m_2DColorID; - - float m_fZStep; - - std::list <RectanglePointList> m_RectangleShapePointList; - // add for text - std::list <TextInfo> m_TextInfoList; - GLint m_TextProID; - GLint m_TextMatrixID; - GLint m_TextVertexID; - GLint m_TextTexCoordID; - GLuint m_TextTexCoordBuf; - GLint m_TextTexID; - - Area2DPointList m_Area2DPointList; - std::list <Area2DPointList> m_Area2DShapePointList; - - GLint m_BackgroundProID; - GLint m_BackgroundMatrixID; - GLint m_BackgroundVertexID; - GLint m_BackgroundColorID; - - float m_BackgroundColor[16]; - - std::list <PieSegment2DPointList> m_PieSegment2DShapePointList; - PointList m_Symbol2DPointList; - std::list<PointList> m_Symbol2DShapePointList; - - GLuint m_SymbolProID; - GLuint m_SymbolVertexID; - GLuint m_SymbolMatrixID; - GLuint m_SymbolColorID; - GLuint m_SymbolShapeID; - -#if DEBUG_POSITIONING - GLuint m_DebugProID; - GLuint m_DebugVertexID; - GLuint m_DebugColorID; -#endif -}; - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |