Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : */
9 :
10 : #include <glm/glm.hpp>
11 :
12 : #include <tools/color.hxx>
13 : #include <vcl/bitmapex.hxx>
14 :
15 : #include <vcl/OpenGLContext.hxx>
16 :
17 : namespace chart {
18 :
19 : namespace opengl3D {
20 :
21 : class Renderable3DObject
22 : {
23 : public:
24 : Renderable3DObject(sal_uInt32 nId);
25 :
26 0 : virtual ~Renderable3DObject() {};
27 :
28 : virtual void render();
29 :
30 : protected:
31 : sal_uInt32 mnUniqueId;
32 : };
33 :
34 0 : class Bar : public Renderable3DObject
35 : {
36 : public:
37 : Bar( const glm::mat4& rPosition, sal_uInt32 nId );
38 :
39 : virtual void render() SAL_OVERRIDE;
40 : private:
41 : bool mbRoundedCorners;
42 : glm::mat4 maPos;
43 : Color maColor; // RGBA fill color
44 : };
45 :
46 0 : class Line : public Renderable3DObject
47 : {
48 : public:
49 : Line( sal_uInt32 nId );
50 :
51 : private:
52 : glm::vec3 maPosBegin;
53 : glm::vec3 maPosEnd;
54 : Color maLineColor; // RGBA line color
55 : };
56 :
57 0 : class Text : public Renderable3DObject
58 : {
59 : public:
60 : Text( sal_uInt32 nId );
61 : private:
62 : BitmapEx maText;
63 : glm::vec3 maTopLeft;
64 : glm::vec3 maTopRight;
65 : glm::vec3 maBottomRight;
66 : };
67 :
68 0 : class Rectangle : public Renderable3DObject
69 : {
70 : public:
71 : Rectangle( sal_uInt32 nId );
72 : private:
73 : glm::vec3 maTopLeft;
74 : glm::vec3 maTopRight;
75 : glm::vec3 maBottomRight;
76 : Color maColor; // RGBA fill color
77 : Color maLineColor; // RGBA line color
78 : };
79 :
80 0 : class Camera : public Renderable3DObject
81 : {
82 : public:
83 : Camera();
84 : private:
85 : glm::vec3 maPos;
86 : glm::vec3 maDirection;
87 : };
88 :
89 : namespace temporary {
90 :
91 0 : class TemporaryContext
92 : {
93 : public:
94 : TemporaryContext();
95 :
96 : void init();
97 : void render();
98 :
99 : private:
100 : OpenGLContext maContext;
101 :
102 : int miWidth;
103 : int miHeight;
104 : };
105 :
106 : }
107 :
108 : }
109 :
110 : }
111 :
112 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|