comparison OrthancStone/Sources/Scene2D/Internals/OpenGLLinesProgram.h @ 1512:244ad1e4e76a

reorganization of folders
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 07 Jul 2020 16:21:02 +0200
parents Framework/Scene2D/Internals/OpenGLLinesProgram.h@30deba7bc8e2
children 85e117739eca
comparison
equal deleted inserted replaced
1511:9dfeee74c1e6 1512:244ad1e4e76a
1 /**
2 * Stone of Orthanc
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
4 * Department, University Hospital of Liege, Belgium
5 * Copyright (C) 2017-2020 Osimis S.A., Belgium
6 *
7 * This program is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU Affero General Public License
9 * as published by the Free Software Foundation, either version 3 of
10 * the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Affero General Public License for more details.
16 *
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 **/
20
21
22 #pragma once
23
24 #include "../../OpenGL/IOpenGLContext.h"
25 #include "../../OpenGL/OpenGLProgram.h"
26 #include "../../Toolbox/AffineTransform2D.h"
27 #include "../PolylineSceneLayer.h"
28
29 #include <Compatibility.h>
30
31 namespace OrthancStone
32 {
33 namespace Internals
34 {
35 class OpenGLLinesProgram : public boost::noncopyable
36 {
37 public:
38 class Data : public boost::noncopyable
39 {
40 private:
41 class Segment;
42
43 OpenGL::IOpenGLContext& context_;
44 GLuint buffers_[3];
45 size_t verticesCount_;
46 float thickness_;
47
48 public:
49 Data(OpenGL::IOpenGLContext& context,
50 const PolylineSceneLayer& layer);
51
52 ~Data();
53
54 bool IsEmpty() const
55 {
56 return verticesCount_ == 0;
57 }
58
59 const size_t GetVerticesCount() const
60 {
61 return verticesCount_;
62 }
63
64 GLuint GetVerticesBuffer() const;
65
66 GLuint GetMiterDirectionsBuffer() const;
67
68 GLuint GetColorsBuffer() const;
69
70 float GetThickness() const
71 {
72 return thickness_;
73 }
74 };
75
76 private:
77 OpenGL::IOpenGLContext& context_;
78 std::unique_ptr<OpenGL::OpenGLProgram> program_;
79
80 public:
81 OpenGLLinesProgram(OpenGL::IOpenGLContext& context);
82
83 void Apply(const Data& data,
84 const AffineTransform2D& transform,
85 bool antialiasing,
86 bool scaleIndependantThickness);
87 };
88 }
89 }