comparison OrthancStone/Sources/Scene2D/InfoPanelSceneLayer.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/InfoPanelSceneLayer.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 "ISceneLayer.h"
25 #include "../StoneEnumerations.h"
26
27 #include <Compatibility.h>
28 #include <Images/ImageAccessor.h>
29
30 #include <memory>
31
32 namespace OrthancStone
33 {
34 class InfoPanelSceneLayer : public ISceneLayer
35 {
36 private:
37 std::unique_ptr<Orthanc::ImageAccessor> texture_;
38 BitmapAnchor anchor_;
39 bool isLinearInterpolation_;
40 bool applySceneRotation_;
41
42 public:
43 /**
44 * If you supply `true` for `applySceneRotation`, then, in addition to
45 * a translation to bring it at the desired anchoring location, the image
46 * will be rotated around its center by the same rotation as the scene
47 * transformation.
48 */
49 InfoPanelSceneLayer(const Orthanc::ImageAccessor& texture,
50 BitmapAnchor anchor,
51 bool isLinearInterpolation,
52 bool applySceneRotation = false);
53
54 virtual ISceneLayer* Clone() const
55 {
56 return new InfoPanelSceneLayer(*texture_,
57 anchor_,
58 isLinearInterpolation_,
59 applySceneRotation_);
60 }
61
62 const Orthanc::ImageAccessor& GetTexture() const
63 {
64 return *texture_;
65 }
66
67 BitmapAnchor GetAnchor() const
68 {
69 return anchor_;
70 }
71
72 bool ShouldApplySceneRotation() const
73 {
74 return applySceneRotation_;
75 }
76
77 bool IsLinearInterpolation() const
78 {
79 return isLinearInterpolation_;
80 }
81
82 virtual Type GetType() const
83 {
84 return Type_InfoPanel;
85 }
86
87 virtual bool GetBoundingBox(Extent2D& target) const
88 {
89 return false;
90 }
91
92 virtual uint64_t GetRevision() const
93 {
94 return 0;
95 }
96
97 static void ComputeAnchorLocation(int& x,
98 int& y,
99 BitmapAnchor anchor,
100 unsigned int textureWidth,
101 unsigned int textureHeight,
102 unsigned int canvasWidth,
103 unsigned int canvasHeight);
104 };
105 }