Mercurial > hg > orthanc-stone
annotate RenderingPlugin/Sources/Plugin.cpp @ 1884:0c6923982fdd
rendering options from GET args
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 14 Jan 2022 14:14:25 +0100 |
parents | fba6e550e0ee |
children | ddaee6b96501 |
rev | line source |
---|---|
1877
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1 /** |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
2 * Stone of Orthanc |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
5 * Copyright (C) 2017-2022 Osimis S.A., Belgium |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
6 * Copyright (C) 2021-2022 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
7 * |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
8 * This program is free software: you can redistribute it and/or |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
9 * modify it under the terms of the GNU General Public License as |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
10 * published by the Free Software Foundation, either version 3 of the |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
11 * License, or (at your option) any later version. |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
12 * |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
13 * This program is distributed in the hope that it will be useful, but |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
14 * WITHOUT ANY WARRANTY; without even the implied warranty of |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
16 * General Public License for more details. |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
17 * |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
18 * You should have received a copy of the GNU General Public License |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
19 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
20 **/ |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
21 |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
22 |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
23 #include "../Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h" |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
24 |
1882
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
25 #include "../../OrthancStone/Sources/Toolbox/AffineTransform2D.h" |
1883
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
26 #include "../../OrthancStone/Sources/Toolbox/DicomInstanceParameters.h" |
1882
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
27 |
1877
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
28 #include <EmbeddedResources.h> |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
29 |
1882
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
30 #include <Images/Image.h> |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
31 #include <Images/ImageProcessing.h> |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
32 #include <Images/NumpyWriter.h> |
1877
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
33 #include <Logging.h> |
1884
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
34 #include <SerializationToolbox.h> |
1877
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
35 |
1882
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
36 #include <boost/math/constants/constants.hpp> |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
37 |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
38 |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
39 static Orthanc::PixelFormat Convert(OrthancPluginPixelFormat format) |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
40 { |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
41 switch (format) |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
42 { |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
43 case OrthancPluginPixelFormat_RGB24: |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
44 return Orthanc::PixelFormat_RGB24; |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
45 |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
46 case OrthancPluginPixelFormat_Grayscale8: |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
47 return Orthanc::PixelFormat_Grayscale8; |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
48 |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
49 case OrthancPluginPixelFormat_Grayscale16: |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
50 return Orthanc::PixelFormat_Grayscale16; |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
51 |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
52 case OrthancPluginPixelFormat_SignedGrayscale16: |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
53 return Orthanc::PixelFormat_SignedGrayscale16; |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
54 |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
55 default: |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
56 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented); |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
57 } |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
58 } |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
59 |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
60 |
1884
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
61 static bool ParseBoolean(const std::string& key, |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
62 const std::string& value) |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
63 { |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
64 bool result; |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
65 |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
66 if (Orthanc::SerializationToolbox::ParseBoolean(result, value)) |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
67 { |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
68 return result; |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
69 } |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
70 else |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
71 { |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
72 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange, |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
73 "Bad value for " + key + ": " + value); |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
74 } |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
75 } |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
76 |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
77 |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
78 static double ParseDouble(const std::string& key, |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
79 const std::string& value) |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
80 { |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
81 double result; |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
82 |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
83 if (Orthanc::SerializationToolbox::ParseDouble(result, value)) |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
84 { |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
85 return result; |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
86 } |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
87 else |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
88 { |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
89 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange, |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
90 "Bad value for " + key + ": " + value); |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
91 } |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
92 } |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
93 |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
94 |
1882
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
95 static void RenderNumpyFrame(OrthancPluginRestOutput* output, |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
96 const char* url, |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
97 const OrthancPluginHttpRequest* request) |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
98 { |
1884
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
99 double angleRadians = 0; |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
100 double scaling = 1; |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
101 double offsetX = 0; |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
102 double offsetY = 0; |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
103 bool flipX = false; |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
104 bool flipY = false; |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
105 bool compress = false; |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
106 |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
107 for (uint32_t i = 0; i < request->getCount; i++) |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
108 { |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
109 std::string key(request->getKeys[i]); |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
110 std::string value(request->getValues[i]); |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
111 |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
112 if (key == "angle") |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
113 { |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
114 double angle = ParseDouble(key, value); |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
115 angleRadians = angle / 180.0 * boost::math::constants::pi<double>(); |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
116 } |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
117 else if (key == "scaling") |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
118 { |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
119 scaling = ParseDouble(key, value); |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
120 } |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
121 else if (key == "offset-x") |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
122 { |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
123 offsetX = ParseDouble(key, value); |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
124 } |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
125 else if (key == "offset-y") |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
126 { |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
127 offsetY = ParseDouble(key, value); |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
128 } |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
129 else if (key == "flip-x") |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
130 { |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
131 flipX = ParseBoolean(key, value); |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
132 } |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
133 else if (key == "flip-y") |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
134 { |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
135 flipY = ParseBoolean(key, value); |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
136 } |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
137 else if (key == "compress") |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
138 { |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
139 compress = ParseBoolean(key, value); |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
140 } |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
141 else |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
142 { |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
143 LOG(WARNING) << "Unsupported option: " << key; |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
144 } |
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
145 } |
1883
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
146 |
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
147 OrthancPlugins::MemoryBuffer tags; |
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
148 if (!tags.RestApiGet("/instances/" + std::string(request->groups[0]) + "/tags", false)) |
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
149 { |
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
150 throw Orthanc::OrthancException(Orthanc::ErrorCode_InexistentItem); |
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
151 } |
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
152 |
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
153 Json::Value json; |
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
154 tags.ToJson(json); |
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
155 |
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
156 Orthanc::DicomMap m; |
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
157 m.FromDicomAsJson(json); |
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
158 |
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
159 OrthancStone::DicomInstanceParameters parameters(m); |
1882
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
160 |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
161 OrthancPlugins::MemoryBuffer dicom; |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
162 dicom.GetDicomInstance(request->groups[0]); |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
163 |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
164 unsigned int frame = boost::lexical_cast<unsigned int>(request->groups[1]); |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
165 |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
166 OrthancPlugins::OrthancImage image; |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
167 image.DecodeDicomImage(dicom.GetData(), dicom.GetSize(), frame); |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
168 |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
169 Orthanc::ImageAccessor source; |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
170 source.AssignReadOnly(Convert(image.GetPixelFormat()), image.GetWidth(), image.GetHeight(), |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
171 image.GetPitch(), image.GetBuffer()); |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
172 |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
173 OrthancStone::AffineTransform2D t; |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
174 t = OrthancStone::AffineTransform2D::Combine( |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
175 OrthancStone::AffineTransform2D::CreateOffset(static_cast<double>(image.GetWidth()) / 2.0 + offsetX, |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
176 static_cast<double>(image.GetHeight()) / 2.0 + offsetY), |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
177 OrthancStone::AffineTransform2D::CreateScaling(scaling, scaling), |
1884
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
178 OrthancStone::AffineTransform2D::CreateRotation(angleRadians), |
1882
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
179 OrthancStone::AffineTransform2D::CreateOffset(-static_cast<double>(image.GetWidth()) / 2.0, |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
180 -static_cast<double>(image.GetHeight()) / 2.0), |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
181 OrthancStone::AffineTransform2D::CreateFlip(flipX, flipY, image.GetWidth(), image.GetHeight())); |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
182 |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
183 std::unique_ptr<Orthanc::ImageAccessor> modified; |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
184 |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
185 if (source.GetFormat() == Orthanc::PixelFormat_RGB24) |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
186 { |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
187 LOG(WARNING) << "Bilinear interpolation for color images is not implemented yet"; |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
188 |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
189 modified.reset(new Orthanc::Image(source.GetFormat(), source.GetWidth(), source.GetHeight(), false)); |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
190 t.Apply(*modified, source, OrthancStone::ImageInterpolation_Nearest, true); |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
191 } |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
192 else |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
193 { |
1883
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
194 std::unique_ptr<Orthanc::ImageAccessor> converted(parameters.ConvertToFloat(source)); |
1882
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
195 |
1883
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
196 assert(converted.get() != NULL); |
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
197 modified.reset(new Orthanc::Image(converted->GetFormat(), converted->GetWidth(), converted->GetHeight(), false)); |
fba6e550e0ee
apply rescale slope/intercept in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1882
diff
changeset
|
198 t.Apply(*modified, *converted, OrthancStone::ImageInterpolation_Bilinear, true); |
1882
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
199 } |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
200 |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
201 assert(modified.get() != NULL); |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
202 |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
203 std::string answer; |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
204 Orthanc::NumpyWriter writer; |
1884
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
205 writer.SetCompressed(compress); |
1882
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
206 Orthanc::IImageWriter::WriteToMemory(writer, answer, *modified); |
1884
0c6923982fdd
rendering options from GET args
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1883
diff
changeset
|
207 |
1882
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
208 OrthancPluginAnswerBuffer(OrthancPlugins::GetGlobalContext(), output, |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
209 answer.c_str(), answer.size(), "text/plain"); |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
210 } |
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
211 |
1877
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
212 |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
213 extern "C" |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
214 { |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
215 ORTHANC_PLUGINS_API int32_t OrthancPluginInitialize(OrthancPluginContext* context) |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
216 { |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
217 OrthancPlugins::SetGlobalContext(context); |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
218 |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
219 #if ORTHANC_FRAMEWORK_VERSION_IS_ABOVE(1, 7, 2) |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
220 Orthanc::Logging::InitializePluginContext(context); |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
221 #else |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
222 Orthanc::Logging::Initialize(context); |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
223 #endif |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
224 |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
225 /* Check the version of the Orthanc core */ |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
226 if (OrthancPluginCheckVersion(context) == 0) |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
227 { |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
228 char info[1024]; |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
229 sprintf(info, "Your version of Orthanc (%s) must be above %d.%d.%d to run this plugin", |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
230 context->orthancVersion, |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
231 ORTHANC_PLUGINS_MINIMAL_MAJOR_NUMBER, |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
232 ORTHANC_PLUGINS_MINIMAL_MINOR_NUMBER, |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
233 ORTHANC_PLUGINS_MINIMAL_REVISION_NUMBER); |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
234 OrthancPluginLogError(context, info); |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
235 return -1; |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
236 } |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
237 |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
238 try |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
239 { |
1882
4e80b8afd0da
numpy in rendering plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1877
diff
changeset
|
240 OrthancPlugins::RegisterRestCallback<RenderNumpyFrame>("/stone/instances/([^/]+)/frames/([0-9]+)/numpy", true); |
1877
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
241 } |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
242 catch (...) |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
243 { |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
244 OrthancPlugins::LogError("Exception while initializing the Stone Web viewer plugin"); |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
245 return -1; |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
246 } |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
247 |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
248 return 0; |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
249 } |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
250 |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
251 |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
252 ORTHANC_PLUGINS_API void OrthancPluginFinalize() |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
253 { |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
254 } |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
255 |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
256 |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
257 ORTHANC_PLUGINS_API const char* OrthancPluginGetName() |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
258 { |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
259 return PLUGIN_NAME; |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
260 } |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
261 |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
262 |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
263 ORTHANC_PLUGINS_API const char* OrthancPluginGetVersion() |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
264 { |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
265 return PLUGIN_VERSION; |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
266 } |
a2955abe4c2e
skeleton for the RenderingPlugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
267 } |