Mercurial > hg > orthanc-stone
annotate Framework/Scene2D/OpenGLCompositor.h @ 1327:4f8db2d202c8 broker
OrthancSeriesProgressiveLoader now has two modes that
can be selected at object creation :
- progressive (will first load jpeg50, then jpeg90 then PAM)
- non-progressive (will directly load PAM (uncompressed))
Please note that the slice loading order remains dynamic
and depending upon the slice that the client code wishes
to extract from the volume.
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Wed, 25 Mar 2020 14:34:27 +0100 |
parents | c38c89684d83 |
children | 28c64c246312 |
rev | line source |
---|---|
594 | 1 /** |
2 * Stone of Orthanc | |
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics | |
4 * Department, University Hospital of Liege, Belgium | |
1270
2d8ab34c8c91
upgrade to year 2020
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
947
diff
changeset
|
5 * Copyright (C) 2017-2020 Osimis S.A., Belgium |
594 | 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 | |
905
88bf49aebc13
introduced ICompositor and allow SdlViewport to work with a CairoCompositor (to run on machines without OpenGL drivers)
Alain Mazy <alain@mazy.be>
parents:
891
diff
changeset
|
24 #include "ICompositor.h" |
594 | 25 #include "Internals/CompositorHelper.h" |
26 #include "Internals/OpenGLColorTextureProgram.h" | |
27 #include "Internals/OpenGLFloatTextureProgram.h" | |
28 #include "Internals/OpenGLLinesProgram.h" | |
29 #include "Internals/OpenGLTextProgram.h" | |
30 | |
31 namespace OrthancStone | |
32 { | |
942
685c9a2d115f
Added missing ORTHANC_OVERRIDE + preparation for lost GL context handling + stubs for GL context event handlers
Benjamin Golinvaux <bgo@osimis.io>
parents:
911
diff
changeset
|
33 class OpenGLCompositor : public ICompositor, private Internals::CompositorHelper::IRendererFactory |
594 | 34 { |
35 private: | |
36 class Font; | |
37 | |
38 typedef std::map<size_t, Font*> Fonts; | |
39 | |
1211
d10d2acb8a02
compositors do not keep a reference to the scene anymore
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
947
diff
changeset
|
40 OpenGL::IOpenGLContext& context_; |
d10d2acb8a02
compositors do not keep a reference to the scene anymore
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
947
diff
changeset
|
41 Fonts fonts_; |
1299
c38c89684d83
replacing std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1279
diff
changeset
|
42 std::unique_ptr<Internals::CompositorHelper> helper_; |
1211
d10d2acb8a02
compositors do not keep a reference to the scene anymore
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
947
diff
changeset
|
43 Internals::OpenGLColorTextureProgram colorTextureProgram_; |
d10d2acb8a02
compositors do not keep a reference to the scene anymore
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
947
diff
changeset
|
44 Internals::OpenGLFloatTextureProgram floatTextureProgram_; |
d10d2acb8a02
compositors do not keep a reference to the scene anymore
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
947
diff
changeset
|
45 Internals::OpenGLLinesProgram linesProgram_; |
d10d2acb8a02
compositors do not keep a reference to the scene anymore
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
947
diff
changeset
|
46 Internals::OpenGLTextProgram textProgram_; |
d10d2acb8a02
compositors do not keep a reference to the scene anymore
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
947
diff
changeset
|
47 unsigned int canvasWidth_; |
d10d2acb8a02
compositors do not keep a reference to the scene anymore
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
947
diff
changeset
|
48 unsigned int canvasHeight_; |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
942
diff
changeset
|
49 |
594 | 50 const Font* GetFont(size_t fontIndex) const; |
51 | |
942
685c9a2d115f
Added missing ORTHANC_OVERRIDE + preparation for lost GL context handling + stubs for GL context event handlers
Benjamin Golinvaux <bgo@osimis.io>
parents:
911
diff
changeset
|
52 virtual Internals::CompositorHelper::ILayerRenderer* Create(const ISceneLayer& layer) ORTHANC_OVERRIDE; |
594 | 53 |
54 public: | |
1211
d10d2acb8a02
compositors do not keep a reference to the scene anymore
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
947
diff
changeset
|
55 OpenGLCompositor(OpenGL::IOpenGLContext& context); |
594 | 56 |
905
88bf49aebc13
introduced ICompositor and allow SdlViewport to work with a CairoCompositor (to run on machines without OpenGL drivers)
Alain Mazy <alain@mazy.be>
parents:
891
diff
changeset
|
57 virtual ~OpenGLCompositor(); |
594 | 58 |
1211
d10d2acb8a02
compositors do not keep a reference to the scene anymore
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
947
diff
changeset
|
59 virtual void Refresh(const Scene2D& scene) ORTHANC_OVERRIDE; |
d10d2acb8a02
compositors do not keep a reference to the scene anymore
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
947
diff
changeset
|
60 |
d10d2acb8a02
compositors do not keep a reference to the scene anymore
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
947
diff
changeset
|
61 virtual void ResetScene() ORTHANC_OVERRIDE |
d10d2acb8a02
compositors do not keep a reference to the scene anymore
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
947
diff
changeset
|
62 { |
d10d2acb8a02
compositors do not keep a reference to the scene anymore
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
947
diff
changeset
|
63 helper_.reset(new Internals::CompositorHelper(*this)); |
d10d2acb8a02
compositors do not keep a reference to the scene anymore
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
947
diff
changeset
|
64 } |
594 | 65 |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
942
diff
changeset
|
66 void SetFont(size_t index, const GlyphBitmapAlphabet& dict); |
594 | 67 |
68 #if ORTHANC_ENABLE_LOCALE == 1 | |
69 void SetFont(size_t index, | |
70 Orthanc::EmbeddedResources::FileResourceId resource, | |
71 unsigned int fontSize, | |
942
685c9a2d115f
Added missing ORTHANC_OVERRIDE + preparation for lost GL context handling + stubs for GL context event handlers
Benjamin Golinvaux <bgo@osimis.io>
parents:
911
diff
changeset
|
72 Orthanc::Encoding codepage) ORTHANC_OVERRIDE; |
594 | 73 #endif |
617 | 74 |
942
685c9a2d115f
Added missing ORTHANC_OVERRIDE + preparation for lost GL context handling + stubs for GL context event handlers
Benjamin Golinvaux <bgo@osimis.io>
parents:
911
diff
changeset
|
75 virtual unsigned int GetCanvasWidth() const ORTHANC_OVERRIDE |
617 | 76 { |
77 return canvasWidth_; | |
78 } | |
79 | |
942
685c9a2d115f
Added missing ORTHANC_OVERRIDE + preparation for lost GL context handling + stubs for GL context event handlers
Benjamin Golinvaux <bgo@osimis.io>
parents:
911
diff
changeset
|
80 virtual unsigned int GetCanvasHeight() const ORTHANC_OVERRIDE |
617 | 81 { |
82 return canvasHeight_; | |
83 } | |
594 | 84 }; |
85 } |