Mercurial > hg > orthanc-stone
annotate Applications/Samples/Sdl/SingleFrameViewer/SdlSimpleViewer.cpp @ 1979:b31e494e34c5
cppcheck
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sat, 29 Oct 2022 17:10:21 +0200 |
parents | 5a434f5889f8 |
children | ba45e1b0812a |
rev | line source |
---|---|
1458
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
1 /** |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
2 * Stone of Orthanc |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
1871
7053b8a0aaec
upgrade to year 2022
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1870
diff
changeset
|
5 * Copyright (C) 2017-2022 Osimis S.A., Belgium |
7053b8a0aaec
upgrade to year 2022
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1870
diff
changeset
|
6 * Copyright (C) 2021-2022 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
1458
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
7 * |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
8 * This program is free software: you can redistribute it and/or |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
9 * modify it under the terms of the GNU Affero General Public License |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
10 * as published by the Free Software Foundation, either version 3 of |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
11 * the License, or (at your option) any later version. |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
12 * |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
13 * This program is distributed in the hope that it will be useful, but |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
14 * WITHOUT ANY WARRANTY; without even the implied warranty of |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
16 * Affero General Public License for more details. |
1596
4fb8fdf03314
removed annoying whitespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1591
diff
changeset
|
17 * |
1458
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
18 * You should have received a copy of the GNU Affero General Public License |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
19 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
20 **/ |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
21 |
1368 | 22 |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
23 |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
24 #define SAMPLE_USE_OPENGL 1 |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
25 #define SAMPLE_USE_ANNOTATIONS_LAYER 1 |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
26 |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
27 |
1368 | 28 #include "SdlSimpleViewerApplication.h" |
1387
4ebf246f3919
Fixed big mistake (factoring the option parsing, which only adds noise to the people reading the code)
Benjamin Golinvaux <bgo@osimis.io>
parents:
1383
diff
changeset
|
29 #include "../SdlHelpers.h" |
4ebf246f3919
Fixed big mistake (factoring the option parsing, which only adds noise to the people reading the code)
Benjamin Golinvaux <bgo@osimis.io>
parents:
1383
diff
changeset
|
30 #include "../../Common/SampleHelpers.h" |
1368 | 31 |
1542 | 32 #include "../../../../OrthancStone/Sources/Loaders/GenericLoadersContext.h" |
1901 | 33 #include "../../../../OrthancStone/Sources/Platforms/Sdl/SdlViewport.h" |
1804 | 34 #include "../../../../OrthancStone/Sources/Scene2D/AnnotationsSceneLayer.h" |
1790
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
35 #include "../../../../OrthancStone/Sources/Scene2DViewport/AngleMeasureTool.h" |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
36 #include "../../../../OrthancStone/Sources/Scene2DViewport/LineMeasureTool.h" |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
37 #include "../../../../OrthancStone/Sources/Scene2DViewport/UndoStack.h" |
1542 | 38 #include "../../../../OrthancStone/Sources/StoneException.h" |
39 #include "../../../../OrthancStone/Sources/StoneInitialization.h" | |
1560
b4ccd4963d37
fix sdl and wasm samples
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1542
diff
changeset
|
40 #include "../../../../OrthancStone/Sources/Viewport/DefaultViewportInteractor.h" |
1368 | 41 |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
42 #include <EmbeddedResources.h> |
1507
169adf9090a6
replacing deprecated std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1458
diff
changeset
|
43 #include <Compatibility.h> // For std::unique_ptr<> |
1457 | 44 #include <OrthancException.h> |
1387
4ebf246f3919
Fixed big mistake (factoring the option parsing, which only adds noise to the people reading the code)
Benjamin Golinvaux <bgo@osimis.io>
parents:
1383
diff
changeset
|
45 |
4ebf246f3919
Fixed big mistake (factoring the option parsing, which only adds noise to the people reading the code)
Benjamin Golinvaux <bgo@osimis.io>
parents:
1383
diff
changeset
|
46 #include <boost/program_options.hpp> |
4ebf246f3919
Fixed big mistake (factoring the option parsing, which only adds noise to the people reading the code)
Benjamin Golinvaux <bgo@osimis.io>
parents:
1383
diff
changeset
|
47 #include <SDL.h> |
4ebf246f3919
Fixed big mistake (factoring the option parsing, which only adds noise to the people reading the code)
Benjamin Golinvaux <bgo@osimis.io>
parents:
1383
diff
changeset
|
48 |
4ebf246f3919
Fixed big mistake (factoring the option parsing, which only adds noise to the people reading the code)
Benjamin Golinvaux <bgo@osimis.io>
parents:
1383
diff
changeset
|
49 #include <string> |
4ebf246f3919
Fixed big mistake (factoring the option parsing, which only adds noise to the people reading the code)
Benjamin Golinvaux <bgo@osimis.io>
parents:
1383
diff
changeset
|
50 |
1368 | 51 |
1804 | 52 static std::string orthancUrl; |
53 static std::string instanceId; | |
54 static int frameIndex = 0; | |
1368 | 55 |
1387
4ebf246f3919
Fixed big mistake (factoring the option parsing, which only adds noise to the people reading the code)
Benjamin Golinvaux <bgo@osimis.io>
parents:
1383
diff
changeset
|
56 |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
57 static void ProcessOptions(int argc, char* argv[]) |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
58 { |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
59 namespace po = boost::program_options; |
1532
c7a37c3a0b8e
print help in sdl samples
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
60 po::options_description desc("Usage"); |
1368 | 61 |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
62 desc.add_options() |
1387
4ebf246f3919
Fixed big mistake (factoring the option parsing, which only adds noise to the people reading the code)
Benjamin Golinvaux <bgo@osimis.io>
parents:
1383
diff
changeset
|
63 ("loglevel", po::value<std::string>()->default_value("WARNING"), |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
64 "You can choose WARNING, INFO or TRACE for the logging level: Errors and warnings will always be displayed. (default: WARNING)") |
1368 | 65 |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
66 ("orthanc", po::value<std::string>()->default_value("http://localhost:8042"), |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
67 "Base URL of the Orthanc instance") |
1368 | 68 |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
69 ("instance", po::value<std::string>()->default_value("285dece8-e1956b38-cdc7d084-6ce3371e-536a9ffc"), |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
70 "Orthanc ID of the instance to display") |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
71 |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
72 ("frame_index", po::value<int>()->default_value(0), |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
73 "The zero-based index of the frame (for multi-frame instances)") |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
74 ; |
1368 | 75 |
1532
c7a37c3a0b8e
print help in sdl samples
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
76 std::cout << desc << std::endl; |
c7a37c3a0b8e
print help in sdl samples
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
77 |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
78 std::cout << std::endl << "Keyboard shorcuts:" << std::endl |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
79 #if SAMPLE_USE_ANNOTATIONS_LAYER == 1 |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
80 << " a\tCreate angle annotations" << std::endl |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
81 << " c\tCreate circle annotations" << std::endl |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
82 << " d\tDelete mode for annotations" << std::endl |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
83 << " e\tEdit mode, don't create annotation (default)" << std::endl |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
84 << " l\tCreate line annotations" << std::endl |
1975
5a434f5889f8
starting pixel probe
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1901
diff
changeset
|
85 << " p\tCreate pixel probe" << std::endl |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
86 #else |
1799
1125793d82d3
serialization of annotations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1798
diff
changeset
|
87 << " a\tEnable/disable the angle annotation tool" << std::endl |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
88 << " l\tEnable/disable the line annotation tool" << std::endl |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
89 << " r\tRedo the last edit to the annotation tools" << std::endl |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
90 << " u\tUndo the last edit to the annotation tools" << std::endl |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
91 #endif |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
92 << " f\tToggle fullscreen display" << std::endl |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
93 << " q\tExit" << std::endl |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
94 << " s\tFit the viewpoint to the image" << std::endl |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
95 << std::endl << "Mouse buttons:" << std::endl |
1799
1125793d82d3
serialization of annotations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1798
diff
changeset
|
96 << " left \tChange windowing, or edit annotation" << std::endl |
1125793d82d3
serialization of annotations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1798
diff
changeset
|
97 << " center\tMove the viewpoint, or edit annotation" << std::endl |
1125793d82d3
serialization of annotations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1798
diff
changeset
|
98 << " right \tZoom, or edit annotation" << std::endl |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
99 << std::endl; |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
100 |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
101 po::variables_map vm; |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
102 try |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
103 { |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
104 po::store(po::parse_command_line(argc, argv, desc), vm); |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
105 po::notify(vm); |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
106 } |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
107 catch (std::exception& e) |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
108 { |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
109 std::cerr << "Please check your command line options! (\"" << e.what() << "\")" << std::endl; |
1368 | 110 } |
111 | |
1387
4ebf246f3919
Fixed big mistake (factoring the option parsing, which only adds noise to the people reading the code)
Benjamin Golinvaux <bgo@osimis.io>
parents:
1383
diff
changeset
|
112 if (vm.count("loglevel") > 0) |
1368 | 113 { |
1387
4ebf246f3919
Fixed big mistake (factoring the option parsing, which only adds noise to the people reading the code)
Benjamin Golinvaux <bgo@osimis.io>
parents:
1383
diff
changeset
|
114 std::string logLevel = vm["loglevel"].as<std::string>(); |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
115 OrthancStoneHelpers::SetLogLevel(logLevel); |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
116 } |
1368 | 117 |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
118 if (vm.count("orthanc") > 0) |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
119 { |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
120 // maybe check URL validity here |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
121 orthancUrl = vm["orthanc"].as<std::string>(); |
1368 | 122 } |
123 | |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
124 if (vm.count("instance") > 0) |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
125 { |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
126 instanceId = vm["instance"].as<std::string>(); |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
127 } |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
128 |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
129 if (vm.count("frame_index") > 0) |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
130 { |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
131 frameIndex = vm["frame_index"].as<int>(); |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
132 } |
1790
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
133 } |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
134 |
1790
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
135 |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
136 enum ActiveTool |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
137 { |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
138 ActiveTool_None, |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
139 ActiveTool_Line, |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
140 ActiveTool_Angle |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
141 }; |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
142 |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
143 |
1368 | 144 /** |
145 * IMPORTANT: The full arguments to "main()" are needed for SDL on | |
146 * Windows. Otherwise, one gets the linking error "undefined reference | |
147 * to `SDL_main'". https://wiki.libsdl.org/FAQWindows | |
148 **/ | |
149 int main(int argc, char* argv[]) | |
150 { | |
151 try | |
152 { | |
153 OrthancStone::StoneInitialize(); | |
1591
5887a4f8594b
moving platform-specific files out of the "OrthancStone" folder
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1576
diff
changeset
|
154 OrthancStone::SdlWindow::GlobalInitialize(); |
5887a4f8594b
moving platform-specific files out of the "OrthancStone" folder
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1576
diff
changeset
|
155 |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
156 ProcessOptions(argc, argv); |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
157 |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
158 //Orthanc::Logging::EnableInfoLevel(true); |
1368 | 159 //Orthanc::Logging::EnableTraceLevel(true); |
160 | |
161 { | |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
162 #if SAMPLE_USE_OPENGL == 1 |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
163 boost::shared_ptr<OrthancStone::SdlViewport> viewport = |
1368 | 164 OrthancStone::SdlOpenGLViewport::Create("Stone of Orthanc", 800, 600); |
165 #else | |
166 boost::shared_ptr<OrthancStone::SdlViewport> viewport = | |
167 OrthancStone::SdlCairoViewport::Create("Stone of Orthanc", 800, 600); | |
168 #endif | |
169 | |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
170 #if SAMPLE_USE_ANNOTATIONS_LAYER != 1 |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
171 boost::shared_ptr<OrthancStone::UndoStack> undoStack(new OrthancStone::UndoStack); |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
172 #endif |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
173 |
1368 | 174 OrthancStone::GenericLoadersContext context(1, 4, 1); |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
175 |
1395
62dc0d737e7b
build script for wasm sample + updated instructions + fixed Sdl sample for Orthanc listening on other ports that 8042
Alain Mazy <alain@mazy.be>
parents:
1392
diff
changeset
|
176 Orthanc::WebServiceParameters orthancWebService; |
62dc0d737e7b
build script for wasm sample + updated instructions + fixed Sdl sample for Orthanc listening on other ports that 8042
Alain Mazy <alain@mazy.be>
parents:
1392
diff
changeset
|
177 orthancWebService.SetUrl(orthancUrl); |
62dc0d737e7b
build script for wasm sample + updated instructions + fixed Sdl sample for Orthanc listening on other ports that 8042
Alain Mazy <alain@mazy.be>
parents:
1392
diff
changeset
|
178 context.SetOrthancParameters(orthancWebService); |
62dc0d737e7b
build script for wasm sample + updated instructions + fixed Sdl sample for Orthanc listening on other ports that 8042
Alain Mazy <alain@mazy.be>
parents:
1392
diff
changeset
|
179 |
1368 | 180 context.StartOracle(); |
181 | |
182 { | |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
183 { |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
184 std::string font; |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
185 Orthanc::EmbeddedResources::GetFileResource(font, Orthanc::EmbeddedResources::UBUNTU_FONT); |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
186 |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
187 std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport->Lock()); |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
188 lock->GetCompositor().SetFont(0, font, 16, Orthanc::Encoding_Latin1); |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
189 |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
190 #if SAMPLE_USE_ANNOTATIONS_LAYER != 1 |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
191 lock->GetController().SetUndoStack(undoStack); |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
192 #endif |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
193 } |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
194 |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
195 #if SAMPLE_USE_ANNOTATIONS_LAYER == 1 |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
196 OrthancStone::AnnotationsSceneLayer annotations(10); |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
197 annotations.SetActiveTool(OrthancStone::AnnotationsSceneLayer::Tool_Edit); |
1975
5a434f5889f8
starting pixel probe
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1901
diff
changeset
|
198 annotations.SetProbedLayer(0); |
1806
0840a25c6d41
removed hard-coded test in AnnotationsSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1805
diff
changeset
|
199 |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
200 #else |
1790
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
201 ActiveTool activeTool = ActiveTool_None; |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
202 |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
203 boost::shared_ptr<OrthancStone::LineMeasureTool> lineMeasureTool(OrthancStone::LineMeasureTool::Create(viewport)); |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
204 bool lineMeasureFirst = true; |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
205 lineMeasureTool->Disable(); |
1368 | 206 |
1790
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
207 boost::shared_ptr<OrthancStone::AngleMeasureTool> angleMeasureTool(OrthancStone::AngleMeasureTool::Create(viewport)); |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
208 bool angleMeasureFirst = true; |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
209 angleMeasureTool->Disable(); |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
210 #endif |
1799
1125793d82d3
serialization of annotations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1798
diff
changeset
|
211 |
1368 | 212 boost::shared_ptr<SdlSimpleViewerApplication> application( |
213 SdlSimpleViewerApplication::Create(context, viewport)); | |
214 | |
215 OrthancStone::DicomSource source; | |
216 | |
217 application->LoadOrthancFrame(source, instanceId, frameIndex); | |
218 | |
219 OrthancStone::DefaultViewportInteractor interactor; | |
1535
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1532
diff
changeset
|
220 interactor.SetWindowingLayer(0); |
1368 | 221 |
222 { | |
223 int scancodeCount = 0; | |
224 const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount); | |
225 | |
226 bool stop = false; | |
227 while (!stop) | |
228 { | |
1821
36430d73e36c
introducing measure units in AnnotationsSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1809
diff
changeset
|
229 annotations.SetUnits(application->GetUnits()); |
36430d73e36c
introducing measure units in AnnotationsSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1809
diff
changeset
|
230 |
1368 | 231 bool paint = false; |
232 SDL_Event event; | |
233 while (SDL_PollEvent(&event)) | |
234 { | |
235 if (event.type == SDL_QUIT) | |
236 { | |
237 stop = true; | |
238 break; | |
239 } | |
240 else if (viewport->IsRefreshEvent(event)) | |
241 { | |
242 paint = true; | |
243 } | |
244 else if (event.type == SDL_WINDOWEVENT && | |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
245 (event.window.event == SDL_WINDOWEVENT_RESIZED || |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
246 event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)) |
1368 | 247 { |
248 viewport->UpdateSize(event.window.data1, event.window.data2); | |
249 } | |
250 else if (event.type == SDL_WINDOWEVENT && | |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
251 (event.window.event == SDL_WINDOWEVENT_SHOWN || |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
252 event.window.event == SDL_WINDOWEVENT_EXPOSED)) |
1368 | 253 { |
1576
92fca2b3ba3d
sanitizing the handling of canvas size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1560
diff
changeset
|
254 std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport->Lock()); |
92fca2b3ba3d
sanitizing the handling of canvas size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1560
diff
changeset
|
255 lock->RefreshCanvasSize(); |
1368 | 256 } |
257 else if (event.type == SDL_KEYDOWN && | |
258 event.key.repeat == 0 /* Ignore key bounce */) | |
259 { | |
260 switch (event.key.keysym.sym) | |
261 { | |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
262 case SDLK_f: |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
263 viewport->ToggleMaximize(); |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
264 break; |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
265 |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
266 case SDLK_s: |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
267 application->FitContent(); |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
268 break; |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
269 |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
270 case SDLK_q: |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
271 stop = true; |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
272 break; |
1368 | 273 |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
274 #if SAMPLE_USE_ANNOTATIONS_LAYER != 1 |
1790
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
275 case SDLK_u: |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
276 { |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
277 std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport->Lock()); |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
278 if (lock->GetController().CanUndo()) |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
279 { |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
280 lock->GetController().Undo(); |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
281 } |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
282 break; |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
283 } |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
284 #endif |
1790
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
285 |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
286 #if SAMPLE_USE_ANNOTATIONS_LAYER != 1 |
1790
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
287 case SDLK_r: |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
288 { |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
289 std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport->Lock()); |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
290 if (lock->GetController().CanRedo()) |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
291 { |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
292 lock->GetController().Redo(); |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
293 } |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
294 break; |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
295 } |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
296 #endif |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
297 |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
298 #if SAMPLE_USE_ANNOTATIONS_LAYER == 1 |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
299 case SDLK_c: |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
300 annotations.SetActiveTool(OrthancStone::AnnotationsSceneLayer::Tool_Circle); |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
301 break; |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
302 #endif |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
303 |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
304 #if SAMPLE_USE_ANNOTATIONS_LAYER == 1 |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
305 case SDLK_e: |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
306 annotations.SetActiveTool(OrthancStone::AnnotationsSceneLayer::Tool_Edit); |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
307 break; |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
308 #endif |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
309 |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
310 #if SAMPLE_USE_ANNOTATIONS_LAYER == 1 |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
311 case SDLK_d: |
1809
79a5838739a6
starting the integration of AnnotationsSceneLayer into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1806
diff
changeset
|
312 annotations.SetActiveTool(OrthancStone::AnnotationsSceneLayer::Tool_Remove); |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
313 break; |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
314 #endif |
1790
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
315 |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
316 case SDLK_l: |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
317 #if SAMPLE_USE_ANNOTATIONS_LAYER == 1 |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
318 annotations.SetActiveTool(OrthancStone::AnnotationsSceneLayer::Tool_Segment); |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
319 #else |
1790
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
320 if (activeTool == ActiveTool_Line) |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
321 { |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
322 lineMeasureTool->Disable(); |
1790
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
323 activeTool = ActiveTool_None; |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
324 } |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
325 else |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
326 { |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
327 if (lineMeasureFirst) |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
328 { |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
329 std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport->Lock()); |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
330 OrthancStone::Extent2D extent; |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
331 lock->GetController().GetScene().GetBoundingBox(extent); |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
332 if (!extent.IsEmpty()) |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
333 { |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
334 OrthancStone::ScenePoint2D p(extent.GetCenterX(), extent.GetCenterY()); |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
335 lineMeasureTool->Set(p, p); |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
336 } |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
337 lineMeasureFirst = false; |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
338 } |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
339 |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
340 lineMeasureTool->Enable(); |
1790
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
341 angleMeasureTool->Disable(); |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
342 activeTool = ActiveTool_Line; |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
343 } |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
344 #endif |
1790
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
345 break; |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
346 |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
347 case SDLK_a: |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
348 #if SAMPLE_USE_ANNOTATIONS_LAYER == 1 |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
349 annotations.SetActiveTool(OrthancStone::AnnotationsSceneLayer::Tool_Angle); |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
350 #else |
1790
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
351 if (activeTool == ActiveTool_Angle) |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
352 { |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
353 angleMeasureTool->Disable(); |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
354 activeTool = ActiveTool_None; |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
355 } |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
356 else |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
357 { |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
358 if (angleMeasureFirst) |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
359 { |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
360 std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport->Lock()); |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
361 OrthancStone::Extent2D extent; |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
362 lock->GetController().GetScene().GetBoundingBox(extent); |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
363 if (!extent.IsEmpty()) |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
364 { |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
365 OrthancStone::ScenePoint2D p1(1.0 * extent.GetX1() / 3.0 + 2.0 * extent.GetX2() / 3.0, |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
366 2.0 * extent.GetY1() / 3.0 + 2.0 * extent.GetY2() / 3.0); |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
367 OrthancStone::ScenePoint2D p2(1.0 * extent.GetX1() / 2.0 + 1.0 * extent.GetX2() / 2.0, |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
368 1.0 * extent.GetY1() / 3.0 + 1.0 * extent.GetY2() / 3.0); |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
369 OrthancStone::ScenePoint2D p3(2.0 * extent.GetX1() / 3.0 + 1.0 * extent.GetX2() / 3.0, |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
370 2.0 * extent.GetY1() / 3.0 + 2.0 * extent.GetY2() / 3.0); |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
371 angleMeasureTool->SetSide1End(p1); |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
372 angleMeasureTool->SetCenter(p2); |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
373 angleMeasureTool->SetSide2End(p3); |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
374 } |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
375 angleMeasureFirst = false; |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
376 } |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
377 |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
378 lineMeasureTool->Disable(); |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
379 angleMeasureTool->Enable(); |
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
380 activeTool = ActiveTool_Angle; |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
381 } |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
382 #endif |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
383 break; |
1368 | 384 |
1975
5a434f5889f8
starting pixel probe
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1901
diff
changeset
|
385 #if SAMPLE_USE_ANNOTATIONS_LAYER == 1 |
5a434f5889f8
starting pixel probe
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1901
diff
changeset
|
386 case SDLK_p: |
5a434f5889f8
starting pixel probe
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1901
diff
changeset
|
387 annotations.SetActiveTool(OrthancStone::AnnotationsSceneLayer::Tool_PixelProbe); |
5a434f5889f8
starting pixel probe
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1901
diff
changeset
|
388 break; |
5a434f5889f8
starting pixel probe
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1901
diff
changeset
|
389 #endif |
5a434f5889f8
starting pixel probe
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1901
diff
changeset
|
390 |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
391 default: |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
392 break; |
1368 | 393 } |
394 } | |
395 else if (event.type == SDL_MOUSEBUTTONDOWN || | |
396 event.type == SDL_MOUSEMOTION || | |
397 event.type == SDL_MOUSEBUTTONUP) | |
398 { | |
1507
169adf9090a6
replacing deprecated std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1458
diff
changeset
|
399 std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport->Lock()); |
1368 | 400 if (lock->HasCompositor()) |
401 { | |
402 OrthancStone::PointerEvent p; | |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
403 OrthancStoneHelpers::GetPointerEvent(p, lock->GetCompositor(), |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
404 event, keyboardState, scancodeCount); |
1368 | 405 |
406 switch (event.type) | |
407 { | |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
408 case SDL_MOUSEBUTTONDOWN: |
1368 | 409 { |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
410 boost::shared_ptr<OrthancStone::IFlexiblePointerTracker> t; |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
411 |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
412 #if SAMPLE_USE_ANNOTATIONS_LAYER == 1 |
1799
1125793d82d3
serialization of annotations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1798
diff
changeset
|
413 if (p.GetMouseButton() == OrthancStone::MouseButton_Left) |
1125793d82d3
serialization of annotations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1798
diff
changeset
|
414 { |
1803
d1849468729b
added messages to AnnotationsLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1801
diff
changeset
|
415 t.reset(annotations.CreateTracker(p.GetMainPosition(), lock->GetController().GetScene())); |
1799
1125793d82d3
serialization of annotations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1798
diff
changeset
|
416 } |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
417 #else |
1796
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
418 if (t.get() == NULL) |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
419 { |
1796
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
420 switch (activeTool) |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
421 { |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
422 case ActiveTool_Angle: |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
423 t = angleMeasureTool->CreateEditionTracker(p); |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
424 break; |
1790
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
425 |
1796
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
426 case ActiveTool_Line: |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
427 t = lineMeasureTool->CreateEditionTracker(p); |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
428 break; |
1790
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
429 |
1796
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
430 case ActiveTool_None: |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
431 break; |
1790
b325761e0bd3
angle measure and undo/redo in sdl simple viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1789
diff
changeset
|
432 |
1796
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
433 default: |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
434 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented); |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
435 } |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
436 } |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
437 #endif |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
438 |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
439 if (t.get() != NULL) |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
440 { |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
441 lock->GetController().AcquireActiveTracker(t); |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
442 } |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
443 else |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
444 { |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
445 lock->GetController().HandleMousePress(interactor, p, |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
446 lock->GetCompositor().GetCanvasWidth(), |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
447 lock->GetCompositor().GetCanvasHeight()); |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
448 } |
1368 | 449 lock->Invalidate(); |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
450 break; |
1368 | 451 } |
452 | |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
453 case SDL_MOUSEMOTION: |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
454 #if SAMPLE_USE_ANNOTATIONS_LAYER == 1 |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
455 if (lock->GetController().HandleMouseMove(p)) |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
456 { |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
457 lock->Invalidate(); |
1803
d1849468729b
added messages to AnnotationsLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1801
diff
changeset
|
458 if (annotations.ClearHover()) |
1796
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
459 { |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
460 paint = true; |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
461 } |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
462 } |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
463 else |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
464 { |
1803
d1849468729b
added messages to AnnotationsLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1801
diff
changeset
|
465 if (annotations.SetMouseHover(p.GetMainPosition(), lock->GetController().GetScene())) |
1796
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
466 { |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
467 paint = true; |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
468 } |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
469 } |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
470 #else |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
471 if (lock->GetController().HandleMouseMove(p)) |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
472 { |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
473 lock->Invalidate(); |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
474 paint = true; |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
475 } |
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
476 #endif |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
477 break; |
1368 | 478 |
1789
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
479 case SDL_MOUSEBUTTONUP: |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
480 lock->GetController().HandleMouseRelease(p); |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
481 lock->Invalidate(); |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
482 break; |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
483 |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
484 default: |
462d7a0e064e
added line measures to sdl single frame viewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1739
diff
changeset
|
485 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); |
1368 | 486 } |
487 } | |
488 } | |
489 } | |
490 | |
491 if (paint) | |
492 { | |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
493 #if SAMPLE_USE_ANNOTATIONS_LAYER == 1 |
1796
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
494 { |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
495 std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport->Lock()); |
1803
d1849468729b
added messages to AnnotationsLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1801
diff
changeset
|
496 annotations.Render(lock->GetController().GetScene()); |
1796
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
497 } |
1805
de7cea710008
recovery of old SdlSimpleViewer sample
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1804
diff
changeset
|
498 #endif |
1796
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1790
diff
changeset
|
499 |
1368 | 500 viewport->Paint(); |
501 } | |
502 | |
503 // Small delay to avoid using 100% of CPU | |
504 SDL_Delay(1); | |
505 } | |
506 } | |
507 context.StopOracle(); | |
508 } | |
509 } | |
510 | |
1591
5887a4f8594b
moving platform-specific files out of the "OrthancStone" folder
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1576
diff
changeset
|
511 OrthancStone::SdlWindow::GlobalFinalize(); |
1368 | 512 OrthancStone::StoneFinalize(); |
513 return 0; | |
514 } | |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
515 catch (Orthanc::OrthancException& e) |
1368 | 516 { |
517 LOG(ERROR) << "OrthancException: " << e.What(); | |
518 return -1; | |
519 } | |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
520 catch (OrthancStone::StoneException& e) |
1368 | 521 { |
522 LOG(ERROR) << "StoneException: " << e.What(); | |
523 return -1; | |
524 } | |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
525 catch (std::runtime_error& e) |
1368 | 526 { |
527 LOG(ERROR) << "Runtime error: " << e.what(); | |
528 return -1; | |
529 } | |
530 catch (...) | |
531 { | |
532 LOG(ERROR) << "Native exception"; | |
533 return -1; | |
534 } | |
535 } |