comparison OrthancStone/Sources/Scene2D/LookupTableStyleConfigurator.cpp @ 1512:244ad1e4e76a

reorganization of folders
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 07 Jul 2020 16:21:02 +0200
parents Framework/Scene2D/LookupTableStyleConfigurator.cpp@28c64c246312
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 #include "LookupTableStyleConfigurator.h"
23
24 #include <OrthancException.h>
25
26 namespace OrthancStone
27 {
28 static void StringToVector(std::vector<uint8_t>& target,
29 const std::string& source)
30 {
31 target.resize(source.size());
32
33 for (size_t i = 0; i < source.size(); i++)
34 {
35 target[i] = source[i];
36 }
37 }
38
39 LookupTableStyleConfigurator::LookupTableStyleConfigurator() :
40 revision_(0),
41 hasLut_(false),
42 hasRange_(false),
43 applyLog_(false)
44 {
45 }
46
47 void LookupTableStyleConfigurator::SetLookupTable(const std::vector<uint8_t>& lut)
48 {
49 hasLut_ = true;
50 lut_ = lut;
51 revision_++;
52 }
53
54 void LookupTableStyleConfigurator::SetLookupTable(const std::string& lut)
55 {
56 std::vector<uint8_t> tmp;
57 StringToVector(tmp, lut);
58 SetLookupTable(tmp);
59 }
60
61 void LookupTableStyleConfigurator::SetRange(float minValue,
62 float maxValue)
63 {
64 if (minValue > maxValue)
65 {
66 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
67 }
68 else
69 {
70 if ((!hasRange_) || (minValue_ != minValue) || (maxValue_ != maxValue))
71 revision_++;
72 hasRange_ = true;
73 minValue_ = minValue;
74 maxValue_ = maxValue;
75 }
76 }
77
78 void LookupTableStyleConfigurator::SetApplyLog(bool apply)
79 {
80 applyLog_ = apply;
81 revision_++;
82 }
83
84 TextureBaseSceneLayer* LookupTableStyleConfigurator::CreateTextureFromImage(const Orthanc::ImageAccessor& image) const
85 {
86 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
87 }
88
89 void LookupTableStyleConfigurator::ApplyStyle(ISceneLayer& layer) const
90 {
91 LookupTableTextureSceneLayer& l = dynamic_cast<LookupTableTextureSceneLayer&>(layer);
92
93 if (hasLut_)
94 {
95 l.SetLookupTable(lut_);
96 }
97
98 if (hasRange_)
99 {
100 l.SetRange(minValue_, maxValue_);
101 }
102 else
103 {
104 l.FitRange();
105 }
106
107 l.SetApplyLog(applyLog_);
108 }
109 }