annotate Applications/Samples/SingleFrameEditorApplication.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 257f2c9a02ac
children 379c00958553
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
325
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
1 /**
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
2 * Stone of Orthanc
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
4 * Department, University Hospital of Liege, Belgium
1270
2d8ab34c8c91 upgrade to year 2020
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1223
diff changeset
5 * Copyright (C) 2017-2020 Osimis S.A., Belgium
325
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
6 *
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
7 * This program is free software: you can redistribute it and/or
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
8 * modify it under the terms of the GNU Affero General Public License
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
9 * as published by the Free Software Foundation, either version 3 of
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
10 * the License, or (at your option) any later version.
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
11 *
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful, but
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
15 * Affero General Public License for more details.
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
16 *
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
17 * You should have received a copy of the GNU Affero General Public License
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
19 **/
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
20
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
21
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
22 #pragma once
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
23
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
24 #include "SampleApplicationBase.h"
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
25
415
c0589c3173fd finished reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
26 #include "../../Framework/Radiography/RadiographyLayerCropTracker.h"
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
27 #include "../../Framework/Radiography/RadiographyLayerMaskTracker.h"
414
f7616c010056 reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
28 #include "../../Framework/Radiography/RadiographyLayerMoveTracker.h"
415
c0589c3173fd finished reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
29 #include "../../Framework/Radiography/RadiographyLayerResizeTracker.h"
414
f7616c010056 reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
30 #include "../../Framework/Radiography/RadiographyLayerRotateTracker.h"
1089
998d9e4402e0 integration mainline->broker
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1070 1086
diff changeset
31 #include "../../Framework/Radiography/RadiographyMaskLayer.h"
408
6834c236b36d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 407
diff changeset
32 #include "../../Framework/Radiography/RadiographyScene.h"
414
f7616c010056 reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 413
diff changeset
33 #include "../../Framework/Radiography/RadiographySceneCommand.h"
1089
998d9e4402e0 integration mainline->broker
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1070 1086
diff changeset
34 #include "../../Framework/Radiography/RadiographySceneReader.h"
998d9e4402e0 integration mainline->broker
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1070 1086
diff changeset
35 #include "../../Framework/Radiography/RadiographySceneWriter.h"
413
18b707fb8620 reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 410
diff changeset
36 #include "../../Framework/Radiography/RadiographyWidget.h"
415
c0589c3173fd finished reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 414
diff changeset
37 #include "../../Framework/Radiography/RadiographyWindowingTracker.h"
1101
141593f1aa88 fix build on ubuntu
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1086
diff changeset
38 #include "../../Framework/Toolbox/TextRenderer.h"
1085
63539e826355 Added TextRenderer
Alain Mazy <alain@mazy.be>
parents: 1047
diff changeset
39
418
c23df8b3433b refactoring
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 417
diff changeset
40 #include <Core/HttpClient.h>
325
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
41 #include <Core/Logging.h>
403
99e31898910e IObservable.cpp
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 393
diff changeset
42 #include <Core/OrthancException.h>
1085
63539e826355 Added TextRenderer
Alain Mazy <alain@mazy.be>
parents: 1047
diff changeset
43 #include <Core/Images/PngWriter.h>
63539e826355 Added TextRenderer
Alain Mazy <alain@mazy.be>
parents: 1047
diff changeset
44 #include <Core/Images/PngReader.h>
325
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
45
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
46
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
47 // Export using PAM is faster than using PNG, but requires Orthanc
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
48 // core >= 1.4.3
362
12cec26d08ce export of a valid DICOM CR
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 361
diff changeset
49 #define EXPORT_USING_PAM 1
12cec26d08ce export of a valid DICOM CR
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 361
diff changeset
50
340
f5d5814a41a0 rendering BitmapStack
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 339
diff changeset
51
325
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
52 namespace OrthancStone
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
53 {
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
54 namespace Samples
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
55 {
408
6834c236b36d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 407
diff changeset
56 class RadiographyEditorInteractor :
726
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
57 public Deprecated::IWorldSceneInteractor,
1066
b537002f83a9 removing broker from deprecated classes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1047
diff changeset
58 public ObserverBase<RadiographyEditorInteractor>
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
59 {
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
60 private:
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
61 enum Tool
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
62 {
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
63 Tool_Move,
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
64 Tool_Rotate,
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
65 Tool_Crop,
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
66 Tool_Resize,
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
67 Tool_Mask,
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
68 Tool_Windowing
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
69 };
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
70
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
71
417
aee3d7941c9b preparing to load images using DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
72 StoneApplicationContext* context_;
aee3d7941c9b preparing to load images using DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
73 UndoRedoStack undoRedoStack_;
aee3d7941c9b preparing to load images using DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
74 Tool tool_;
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
75 RadiographyMaskLayer* maskLayer_;
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
76
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
77
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
78 static double GetHandleSize()
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
79 {
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
80 return 10.0;
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
81 }
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
82
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
83
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
84 public:
1066
b537002f83a9 removing broker from deprecated classes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1047
diff changeset
85 RadiographyEditorInteractor() :
417
aee3d7941c9b preparing to load images using DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
86 context_(NULL),
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
87 tool_(Tool_Move),
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
88 maskLayer_(NULL)
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
89 {
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
90 }
417
aee3d7941c9b preparing to load images using DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
91
aee3d7941c9b preparing to load images using DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
92 void SetContext(StoneApplicationContext& context)
aee3d7941c9b preparing to load images using DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
93 {
aee3d7941c9b preparing to load images using DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
94 context_ = &context;
aee3d7941c9b preparing to load images using DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
95 }
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
96
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
97 void SetMaskLayer(RadiographyMaskLayer* maskLayer)
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
98 {
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
99 maskLayer_ = maskLayer;
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
100 }
726
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
101 virtual Deprecated::IWorldSceneMouseTracker* CreateMouseTracker(Deprecated::WorldSceneWidget& worldWidget,
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
102 const Deprecated::ViewportGeometry& view,
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
103 MouseButton button,
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
104 KeyboardModifiers modifiers,
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
105 int viewportX,
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
106 int viewportY,
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
107 double x,
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
108 double y,
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
109 Deprecated::IStatusBar* statusBar,
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
110 const std::vector<Deprecated::Touch>& displayTouches)
357
ec4ad6c5eb99 avoid breaking class hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 356
diff changeset
111 {
408
6834c236b36d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 407
diff changeset
112 RadiographyWidget& widget = dynamic_cast<RadiographyWidget&>(worldWidget);
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
113
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
114 if (button == MouseButton_Left)
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
115 {
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
116 size_t selected;
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
117
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
118 if (tool_ == Tool_Windowing)
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
119 {
408
6834c236b36d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 407
diff changeset
120 return new RadiographyWindowingTracker(
1085
63539e826355 Added TextRenderer
Alain Mazy <alain@mazy.be>
parents: 1047
diff changeset
121 undoRedoStack_,
63539e826355 Added TextRenderer
Alain Mazy <alain@mazy.be>
parents: 1047
diff changeset
122 widget.GetScene(),
63539e826355 Added TextRenderer
Alain Mazy <alain@mazy.be>
parents: 1047
diff changeset
123 widget,
63539e826355 Added TextRenderer
Alain Mazy <alain@mazy.be>
parents: 1047
diff changeset
124 OrthancStone::ImageInterpolation_Nearest,
63539e826355 Added TextRenderer
Alain Mazy <alain@mazy.be>
parents: 1047
diff changeset
125 viewportX, viewportY,
63539e826355 Added TextRenderer
Alain Mazy <alain@mazy.be>
parents: 1047
diff changeset
126 RadiographyWindowingTracker::Action_DecreaseWidth,
63539e826355 Added TextRenderer
Alain Mazy <alain@mazy.be>
parents: 1047
diff changeset
127 RadiographyWindowingTracker::Action_IncreaseWidth,
63539e826355 Added TextRenderer
Alain Mazy <alain@mazy.be>
parents: 1047
diff changeset
128 RadiographyWindowingTracker::Action_DecreaseCenter,
63539e826355 Added TextRenderer
Alain Mazy <alain@mazy.be>
parents: 1047
diff changeset
129 RadiographyWindowingTracker::Action_IncreaseCenter);
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
130 }
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
131 else if (!widget.LookupSelectedLayer(selected))
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
132 {
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
133 // No layer is currently selected
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
134 size_t layer;
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
135 if (widget.GetScene().LookupLayer(layer, x, y))
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
136 {
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
137 widget.Select(layer);
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
138 }
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
139
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
140 return NULL;
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
141 }
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
142 else if (tool_ == Tool_Crop ||
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
143 tool_ == Tool_Resize ||
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
144 tool_ == Tool_Mask)
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
145 {
408
6834c236b36d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 407
diff changeset
146 RadiographyScene::LayerAccessor accessor(widget.GetScene(), selected);
410
6decc0ba9da5 rename RadiographyScene::Layer as RadiographyLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
147
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
148 ControlPoint controlPoint;
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
149 if (accessor.GetLayer().LookupControlPoint(controlPoint, x, y, view.GetZoom(), GetHandleSize()))
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
150 {
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
151 switch (tool_)
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
152 {
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
153 case Tool_Crop:
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
154 return new RadiographyLayerCropTracker
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
155 (undoRedoStack_, widget.GetScene(), view, selected, controlPoint);
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
156
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
157 case Tool_Mask:
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
158 return new RadiographyLayerMaskTracker
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
159 (undoRedoStack_, widget.GetScene(), view, selected, controlPoint);
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
160
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
161 case Tool_Resize:
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
162 return new RadiographyLayerResizeTracker
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
163 (undoRedoStack_, widget.GetScene(), selected, controlPoint,
408
6834c236b36d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 407
diff changeset
164 (modifiers & KeyboardModifiers_Shift));
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
165
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
166 default:
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
167 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
168 }
384
d20d75f20c5d better following of the MVC design pattern
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 377
diff changeset
169 }
d20d75f20c5d better following of the MVC design pattern
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 377
diff changeset
170 else
d20d75f20c5d better following of the MVC design pattern
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 377
diff changeset
171 {
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
172 size_t layer;
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
173
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
174 if (widget.GetScene().LookupLayer(layer, x, y))
384
d20d75f20c5d better following of the MVC design pattern
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 377
diff changeset
175 {
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
176 widget.Select(layer);
384
d20d75f20c5d better following of the MVC design pattern
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 377
diff changeset
177 }
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
178 else
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
179 {
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
180 widget.Unselect();
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
181 }
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
182
384
d20d75f20c5d better following of the MVC design pattern
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 377
diff changeset
183 return NULL;
d20d75f20c5d better following of the MVC design pattern
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 377
diff changeset
184 }
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
185 }
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
186 else
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
187 {
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
188 size_t layer;
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
189
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
190 if (widget.GetScene().LookupLayer(layer, x, y))
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
191 {
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
192 if (layer == selected)
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
193 {
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
194 switch (tool_)
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
195 {
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
196 case Tool_Move:
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
197 return new RadiographyLayerMoveTracker
408
6834c236b36d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 407
diff changeset
198 (undoRedoStack_, widget.GetScene(), layer, x, y,
6834c236b36d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 407
diff changeset
199 (modifiers & KeyboardModifiers_Shift));
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
200
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
201 case Tool_Rotate:
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
202 return new RadiographyLayerRotateTracker
408
6834c236b36d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 407
diff changeset
203 (undoRedoStack_, widget.GetScene(), view, layer, x, y,
6834c236b36d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 407
diff changeset
204 (modifiers & KeyboardModifiers_Shift));
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
205
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
206 default:
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
207 break;
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
208 }
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
209
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
210 return NULL;
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
211 }
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
212 else
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
213 {
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
214 widget.Select(layer);
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
215 return NULL;
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
216 }
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
217 }
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
218 else
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
219 {
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
220 widget.Unselect();
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
221 return NULL;
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
222 }
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
223 }
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
224 }
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
225 else
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
226 {
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
227 return NULL;
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
228 }
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
229 return NULL;
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
230 }
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
231
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
232 virtual void MouseOver(CairoContext& context,
726
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
233 Deprecated::WorldSceneWidget& worldWidget,
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
234 const Deprecated::ViewportGeometry& view,
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
235 double x,
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
236 double y,
726
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
237 Deprecated::IStatusBar* statusBar)
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
238 {
408
6834c236b36d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 407
diff changeset
239 RadiographyWidget& widget = dynamic_cast<RadiographyWidget&>(worldWidget);
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
240
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
241 #if 0
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
242 if (statusBar != NULL)
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
243 {
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
244 char buf[64];
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
245 sprintf(buf, "X = %.02f Y = %.02f (in cm)", x / 10.0, y / 10.0);
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
246 statusBar->SetMessage(buf);
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
247 }
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
248 #endif
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
249
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
250 size_t selected;
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
251
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
252 if (widget.LookupSelectedLayer(selected) &&
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
253 (tool_ == Tool_Crop ||
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
254 tool_ == Tool_Resize ||
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
255 tool_ == Tool_Mask))
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
256 {
408
6834c236b36d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 407
diff changeset
257 RadiographyScene::LayerAccessor accessor(widget.GetScene(), selected);
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
258
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
259 ControlPoint controlPoint;
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
260 if (accessor.GetLayer().LookupControlPoint(controlPoint, x, y, view.GetZoom(), GetHandleSize()))
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
261 {
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
262 double z = 1.0 / view.GetZoom();
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
263
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
264 context.SetSourceColor(255, 0, 0);
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
265 cairo_t* cr = context.GetObject();
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
266 cairo_set_line_width(cr, 2.0 * z);
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
267 cairo_move_to(cr, controlPoint.x - GetHandleSize() * z, controlPoint.y - GetHandleSize() * z);
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
268 cairo_line_to(cr, controlPoint.x + GetHandleSize() * z, controlPoint.y - GetHandleSize() * z);
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
269 cairo_line_to(cr, controlPoint.x + GetHandleSize() * z, controlPoint.y + GetHandleSize() * z);
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
270 cairo_line_to(cr, controlPoint.x - GetHandleSize() * z, controlPoint.y + GetHandleSize() * z);
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
271 cairo_line_to(cr, controlPoint.x - GetHandleSize() * z, controlPoint.y - GetHandleSize() * z);
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
272 cairo_stroke(cr);
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
273 }
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
274 }
339
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 338
diff changeset
275 }
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
276
726
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
277 virtual void MouseWheel(Deprecated::WorldSceneWidget& widget,
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
278 MouseWheelDirection direction,
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
279 KeyboardModifiers modifiers,
726
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
280 Deprecated::IStatusBar* statusBar)
344
fdec8e6893cb ordering of bitmap layers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 343
diff changeset
281 {
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
282 }
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
283
726
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
284 virtual void KeyPressed(Deprecated::WorldSceneWidget& worldWidget,
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
285 KeyboardKeys key,
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
286 char keyChar,
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
287 KeyboardModifiers modifiers,
726
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
288 Deprecated::IStatusBar* statusBar)
345
55438b1ca317 drawing borders
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 344
diff changeset
289 {
408
6834c236b36d reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 407
diff changeset
290 RadiographyWidget& widget = dynamic_cast<RadiographyWidget&>(worldWidget);
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
291
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
292 switch (keyChar)
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
293 {
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
294 case 'a':
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
295 widget.FitContent();
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
296 break;
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
297
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
298 case 'c':
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
299 tool_ = Tool_Crop;
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
300 break;
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
301
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
302 case 'm':
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
303 tool_ = Tool_Mask;
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
304 widget.Select(1);
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
305 break;
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
306
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
307 case 'd':
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
308 {
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
309 // dump to json and reload
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
310 Json::Value snapshot;
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
311 RadiographySceneWriter writer;
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
312 writer.Write(snapshot, widget.GetScene());
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
313
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
314 LOG(INFO) << "JSON export was successful: "
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
315 << snapshot.toStyledString();
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
316
1066
b537002f83a9 removing broker from deprecated classes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1047
diff changeset
317 boost::shared_ptr<RadiographyScene> scene(new RadiographyScene);
1279
7ec8fea061b9 integration mainline->broker
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1271 1270
diff changeset
318 RadiographySceneReader reader(*scene, *context_->GetOrthancApiClient());
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
319 reader.Read(snapshot);
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
320
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
321 widget.SetScene(scene);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
322 };break;
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
323
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
324 case 'e':
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
325 {
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
326 Orthanc::DicomMap tags;
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
327
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
328 // Minimal set of tags to generate a valid CR image
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
329 tags.SetValue(Orthanc::DICOM_TAG_ACCESSION_NUMBER, "NOPE", false);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
330 tags.SetValue(Orthanc::DICOM_TAG_BODY_PART_EXAMINED, "PELVIS", false);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
331 tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "1", false);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
332 //tags.SetValue(Orthanc::DICOM_TAG_LATERALITY, "", false);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
333 tags.SetValue(Orthanc::DICOM_TAG_MANUFACTURER, "OSIMIS", false);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
334 tags.SetValue(Orthanc::DICOM_TAG_MODALITY, "CR", false);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
335 tags.SetValue(Orthanc::DICOM_TAG_PATIENT_BIRTH_DATE, "20000101", false);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
336 tags.SetValue(Orthanc::DICOM_TAG_PATIENT_ID, "hello", false);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
337 tags.SetValue(Orthanc::DICOM_TAG_PATIENT_NAME, "HELLO^WORLD", false);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
338 tags.SetValue(Orthanc::DICOM_TAG_PATIENT_ORIENTATION, "", false);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
339 tags.SetValue(Orthanc::DICOM_TAG_PATIENT_SEX, "M", false);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
340 tags.SetValue(Orthanc::DICOM_TAG_REFERRING_PHYSICIAN_NAME, "HOUSE^MD", false);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
341 tags.SetValue(Orthanc::DICOM_TAG_SERIES_NUMBER, "1", false);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
342 tags.SetValue(Orthanc::DICOM_TAG_SOP_CLASS_UID, "1.2.840.10008.5.1.4.1.1.1", false);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
343 tags.SetValue(Orthanc::DICOM_TAG_STUDY_ID, "STUDY", false);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
344 tags.SetValue(Orthanc::DICOM_TAG_VIEW_POSITION, "", false);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
345
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
346 if (context_ != NULL)
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
347 {
1070
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1066
diff changeset
348 widget.GetScene().ExportDicom(*context_->GetOrthancApiClient(),
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
349 tags, std::string(), 0.1, 0.1, widget.IsInverted(),
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
350 widget.GetInterpolation(), EXPORT_USING_PAM);
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
351 }
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
352
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
353 break;
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
354 }
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
355
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
356 case 'i':
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
357 widget.SwitchInvert();
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
358 break;
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
359
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
360 case 't':
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
361 tool_ = Tool_Move;
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
362 break;
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
363
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
364 case 'n':
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
365 {
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
366 switch (widget.GetInterpolation())
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
367 {
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
368 case ImageInterpolation_Nearest:
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
369 LOG(INFO) << "Switching to bilinear interpolation";
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
370 widget.SetInterpolation(ImageInterpolation_Bilinear);
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
371 break;
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
372
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
373 case ImageInterpolation_Bilinear:
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
374 LOG(INFO) << "Switching to nearest neighbor interpolation";
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
375 widget.SetInterpolation(ImageInterpolation_Nearest);
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
376 break;
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
377
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
378 default:
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
379 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
380 }
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
381
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
382 break;
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
383 }
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
384
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
385 case 'r':
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
386 tool_ = Tool_Rotate;
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
387 break;
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
388
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
389 case 's':
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
390 tool_ = Tool_Resize;
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
391 break;
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
392
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
393 case 'w':
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
394 tool_ = Tool_Windowing;
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
395 break;
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
396
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
397 case 'y':
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
398 if (modifiers & KeyboardModifiers_Control)
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
399 {
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
400 undoRedoStack_.Redo();
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
401 widget.NotifyContentChanged();
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
402 }
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
403 break;
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
404
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
405 case 'z':
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
406 if (modifiers & KeyboardModifiers_Control)
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
407 {
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
408 undoRedoStack_.Undo();
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
409 widget.NotifyContentChanged();
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
410 }
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
411 break;
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
412
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
413 default:
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
414 break;
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
415 }
345
55438b1ca317 drawing borders
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 344
diff changeset
416 }
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
417 };
336
c7fdc8bac581 creating GrayscaleBitmapStack
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 334
diff changeset
418
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
419
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
420
325
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
421 class SingleFrameEditorApplication :
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
422 public SampleSingleCanvasApplicationBase,
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
423 public IObserver
325
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
424 {
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
425 private:
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
426 boost::shared_ptr<RadiographyScene> scene_;
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
427 RadiographyEditorInteractor interactor_;
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
428 RadiographyMaskLayer* maskLayer_;
325
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
429
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
430 public:
384
d20d75f20c5d better following of the MVC design pattern
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 377
diff changeset
431 virtual ~SingleFrameEditorApplication()
d20d75f20c5d better following of the MVC design pattern
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 377
diff changeset
432 {
d20d75f20c5d better following of the MVC design pattern
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 377
diff changeset
433 LOG(WARNING) << "Destroying the application";
d20d75f20c5d better following of the MVC design pattern
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 377
diff changeset
434 }
325
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
435
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
436 virtual void DeclareStartupOptions(boost::program_options::options_description& options)
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
437 {
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
438 boost::program_options::options_description generic("Sample options");
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
439 generic.add_options()
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
440 ("instance", boost::program_options::value<std::string>(),
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
441 "Orthanc ID of the instance")
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
442 ("frame", boost::program_options::value<unsigned int>()->default_value(0),
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
443 "Number of the frame, for multi-frame DICOM instances")
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
444 ;
325
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
445
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
446 options.add(generic);
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
447 }
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
448
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
449 virtual void Initialize(StoneApplicationContext* context,
726
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
450 Deprecated::IStatusBar& statusBar,
325
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
451 const boost::program_options::variables_map& parameters)
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
452 {
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
453 using namespace OrthancStone;
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
454
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
455 context_ = context;
417
aee3d7941c9b preparing to load images using DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
456 interactor_.SetContext(*context);
325
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
457
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
458 statusBar.SetMessage("Use the key \"a\" to reinitialize the layout");
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
459 statusBar.SetMessage("Use the key \"c\" to crop");
359
100df90bf0ea preparing to implement Export
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 358
diff changeset
460 statusBar.SetMessage("Use the key \"e\" to export DICOM to the Orthanc server");
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
461 statusBar.SetMessage("Use the key \"f\" to switch full screen");
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
462 statusBar.SetMessage("Use the key \"i\" to invert contrast");
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
463 statusBar.SetMessage("Use the key \"m\" to modify the mask");
359
100df90bf0ea preparing to implement Export
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 358
diff changeset
464 statusBar.SetMessage("Use the key \"n\" to switch between nearest neighbor and bilinear interpolation");
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
465 statusBar.SetMessage("Use the key \"r\" to rotate objects");
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
466 statusBar.SetMessage("Use the key \"s\" to resize objects (not applicable to DICOM layers)");
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
467 statusBar.SetMessage("Use the key \"t\" to move (translate) objects");
358
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
468 statusBar.SetMessage("Use the key \"w\" to change windowing");
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
469
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
470 statusBar.SetMessage("Use the key \"ctrl-z\" to undo action");
b8eeb49f3e65 cleaning up
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 357
diff changeset
471 statusBar.SetMessage("Use the key \"ctrl-y\" to redo action");
325
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
472
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
473 if (parameters.count("instance") != 1)
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
474 {
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
475 LOG(ERROR) << "The instance ID is missing";
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
476 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
477 }
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
478
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
479 std::string instance = parameters["instance"].as<std::string>();
726
4f2416d519b4 moving layers, widgets and loaders to Deprecated namespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 535
diff changeset
480 //int frame = parameters["frame"].as<unsigned int>();
325
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
481
1066
b537002f83a9 removing broker from deprecated classes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1047
diff changeset
482 scene_.reset(new RadiographyScene);
535
79bb0a02d1cc - Added ORTHANC_OVERRIDE to several methods (translates to "override" in C++ 11 compilers)
Benjamin Golinvaux <bgo@osimis.io>
parents: 518
diff changeset
483
1070
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1066
diff changeset
484 RadiographyLayer& dicomLayer = scene_->LoadDicomFrame(*context->GetOrthancApiClient(), instance, 0, false, NULL);
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
485 //scene_->LoadDicomFrame(instance, frame, false); //.SetPan(200, 0);
535
79bb0a02d1cc - Added ORTHANC_OVERRIDE to several methods (translates to "override" in C++ 11 compilers)
Benjamin Golinvaux <bgo@osimis.io>
parents: 518
diff changeset
486 // = scene_->LoadDicomFrame(context->GetOrthancApiClient(), "61f3143e-96f34791-ad6bbb8d-62559e75-45943e1b", 0, false, NULL);
418
c23df8b3433b refactoring
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 417
diff changeset
487
c23df8b3433b refactoring
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 417
diff changeset
488 #if !defined(ORTHANC_ENABLE_WASM) || ORTHANC_ENABLE_WASM != 1
c23df8b3433b refactoring
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 417
diff changeset
489 Orthanc::HttpClient::ConfigureSsl(true, "/etc/ssl/certs/ca-certificates.crt");
c23df8b3433b refactoring
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 417
diff changeset
490 #endif
c23df8b3433b refactoring
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 417
diff changeset
491
417
aee3d7941c9b preparing to load images using DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
492 //scene_->LoadDicomWebFrame(context->GetWebService());
aee3d7941c9b preparing to load images using DICOMweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 415
diff changeset
493
518
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
494 std::vector<Orthanc::ImageProcessing::ImagePoint> mask;
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
495 mask.push_back(Orthanc::ImageProcessing::ImagePoint(1100, 100));
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
496 mask.push_back(Orthanc::ImageProcessing::ImagePoint(1100, 1000));
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
497 mask.push_back(Orthanc::ImageProcessing::ImagePoint(2000, 1000));
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
498 mask.push_back(Orthanc::ImageProcessing::ImagePoint(2200, 150));
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
499 mask.push_back(Orthanc::ImageProcessing::ImagePoint(1500, 550));
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
500 maskLayer_ = dynamic_cast<RadiographyMaskLayer*>(&(scene_->LoadMask(mask, dynamic_cast<RadiographyDicomLayer&>(dicomLayer), 128.0f, NULL)));
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
501 interactor_.SetMaskLayer(maskLayer_);
40bb5eb247a5 Reverted a couple of files to AM version (wrong changes on my end)
Benjamin Golinvaux <bgo@osimis.io>
parents: 516
diff changeset
502
354
f806779bd40f UndoRedoStack
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
503 {
1298
8a0a62189f46 replacing std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1270
diff changeset
504 std::unique_ptr<Orthanc::ImageAccessor> renderedTextAlpha(TextRenderer::Render(Orthanc::EmbeddedResources::UBUNTU_FONT, 100,
1085
63539e826355 Added TextRenderer
Alain Mazy <alain@mazy.be>
parents: 1047
diff changeset
505 "%öÇaA&#"));
63539e826355 Added TextRenderer
Alain Mazy <alain@mazy.be>
parents: 1047
diff changeset
506 RadiographyLayer& layer = scene_->LoadAlphaBitmap(renderedTextAlpha.release(), NULL);
1196
a5f2a6b04a31 RadiographyScene: windowing is now only applied to the Dicom layer
Alain Mazy <alain@mazy.be>
parents: 1101
diff changeset
507 dynamic_cast<RadiographyAlphaLayer&>(layer).SetForegroundValue(200.0f * 256.0f);
1085
63539e826355 Added TextRenderer
Alain Mazy <alain@mazy.be>
parents: 1047
diff changeset
508 }
63539e826355 Added TextRenderer
Alain Mazy <alain@mazy.be>
parents: 1047
diff changeset
509
63539e826355 Added TextRenderer
Alain Mazy <alain@mazy.be>
parents: 1047
diff changeset
510 {
1223
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1197
diff changeset
511 RadiographyTextLayer::RegisterFont("ubuntu", Orthanc::EmbeddedResources::UBUNTU_FONT);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1197
diff changeset
512 RadiographyLayer& layer = scene_->LoadText("Hello\nworld", "ubuntu", 20, 128, NULL, false);
410
6decc0ba9da5 rename RadiographyScene::Layer as RadiographyLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
513 layer.SetResizeable(true);
354
f806779bd40f UndoRedoStack
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
514 }
f806779bd40f UndoRedoStack
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
515
f806779bd40f UndoRedoStack
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
516 {
430
b85f635f1eb5 added serialization for RadiographyScene
am@osimis.io
parents: 428
diff changeset
517 RadiographyLayer& layer = scene_->LoadTestBlock(100, 50, NULL);
410
6decc0ba9da5 rename RadiographyScene::Layer as RadiographyLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
518 layer.SetResizeable(true);
6decc0ba9da5 rename RadiographyScene::Layer as RadiographyLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 408
diff changeset
519 layer.SetPan(0, 200);
354
f806779bd40f UndoRedoStack
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
520 }
f806779bd40f UndoRedoStack
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 353
diff changeset
521
1070
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1066
diff changeset
522 boost::shared_ptr<RadiographyWidget> widget(new RadiographyWidget(scene_, "main-widget"));
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1066
diff changeset
523 widget->SetTransmitMouseOver(true);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1066
diff changeset
524 widget->SetInteractor(interactor_);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1066
diff changeset
525 SetCentralWidget(widget);
325
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
526
407
842a3c7cfdc0 renames
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 403
diff changeset
527 //scene_->SetWindowing(128, 256);
325
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
528 }
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
529 };
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
530 }
37ab9d83dc9b reactivate SingleFrameApplication sample + Added SingleFrameEditorApplication (SDL only)
am@osimis.io
parents:
diff changeset
531 }