Mercurial > hg > orthanc-stone
annotate Applications/Samples/Sdl/SingleFrameViewer/SdlSimpleViewer.cpp @ 1577:e8a120dd05bd
cont
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 24 Sep 2020 16:51:14 +0200 |
parents | 92fca2b3ba3d |
children | 5887a4f8594b |
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 |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
5 * Copyright (C) 2017-2020 Osimis S.A., Belgium |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
6 * |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
7 * 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
|
8 * 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
|
9 * 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
|
10 * the License, or (at your option) any later version. |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
11 * |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
12 * 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
|
13 * WITHOUT ANY WARRANTY; without even the implied warranty of |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
15 * Affero General Public License for more details. |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
16 * |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
17 * 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
|
18 * 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
|
19 **/ |
828a9b4ee1b7
added missing copyright
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1457
diff
changeset
|
20 |
1368 | 21 |
22 #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
|
23 #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
|
24 #include "../../Common/SampleHelpers.h" |
1368 | 25 |
1542 | 26 #include "../../../../OrthancStone/Sources/Loaders/GenericLoadersContext.h" |
1560
b4ccd4963d37
fix sdl and wasm samples
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1542
diff
changeset
|
27 #include "../../../../OrthancStone/Sources/StoneEnumerations.h" |
1542 | 28 #include "../../../../OrthancStone/Sources/StoneException.h" |
29 #include "../../../../OrthancStone/Sources/StoneInitialization.h" | |
1560
b4ccd4963d37
fix sdl and wasm samples
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1542
diff
changeset
|
30 #include "../../../../OrthancStone/Sources/Viewport/DefaultViewportInteractor.h" |
1542 | 31 #include "../../../../OrthancStone/Sources/Viewport/SdlViewport.h" |
1368 | 32 |
1507
169adf9090a6
replacing deprecated std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1458
diff
changeset
|
33 #include <Compatibility.h> // For std::unique_ptr<> |
1457 | 34 #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
|
35 |
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
|
36 #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
|
37 #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
|
38 |
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
|
39 #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
|
40 |
1368 | 41 |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
42 std::string orthancUrl; |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
43 std::string instanceId; |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
44 int frameIndex = 0; |
1368 | 45 |
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
|
46 |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
47 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
|
48 { |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
49 namespace po = boost::program_options; |
1532
c7a37c3a0b8e
print help in sdl samples
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
50 po::options_description desc("Usage"); |
1368 | 51 |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
52 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
|
53 ("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
|
54 "You can choose WARNING, INFO or TRACE for the logging level: Errors and warnings will always be displayed. (default: WARNING)") |
1368 | 55 |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
56 ("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
|
57 "Base URL of the Orthanc instance") |
1368 | 58 |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
59 ("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
|
60 "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
|
61 |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
62 ("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
|
63 "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
|
64 ; |
1368 | 65 |
1532
c7a37c3a0b8e
print help in sdl samples
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
66 std::cout << desc << std::endl; |
c7a37c3a0b8e
print help in sdl samples
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
67 |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
68 po::variables_map vm; |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
69 try |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
70 { |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
71 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
|
72 po::notify(vm); |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
73 } |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
74 catch (std::exception& e) |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
75 { |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
76 std::cerr << "Please check your command line options! (\"" << e.what() << "\")" << std::endl; |
1368 | 77 } |
78 | |
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
|
79 if (vm.count("loglevel") > 0) |
1368 | 80 { |
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
|
81 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
|
82 OrthancStoneHelpers::SetLogLevel(logLevel); |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
83 } |
1368 | 84 |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
85 if (vm.count("orthanc") > 0) |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
86 { |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
87 // maybe check URL validity here |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
88 orthancUrl = vm["orthanc"].as<std::string>(); |
1368 | 89 } |
90 | |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
91 if (vm.count("instance") > 0) |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
92 { |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
93 instanceId = vm["instance"].as<std::string>(); |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
94 } |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
95 |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
96 if (vm.count("frame_index") > 0) |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
97 { |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
98 frameIndex = vm["frame_index"].as<int>(); |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
99 } |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
100 |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
101 } |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
102 |
1368 | 103 /** |
104 * IMPORTANT: The full arguments to "main()" are needed for SDL on | |
105 * Windows. Otherwise, one gets the linking error "undefined reference | |
106 * to `SDL_main'". https://wiki.libsdl.org/FAQWindows | |
107 **/ | |
108 int main(int argc, char* argv[]) | |
109 { | |
110 try | |
111 { | |
112 OrthancStone::StoneInitialize(); | |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
113 |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
114 ProcessOptions(argc, argv); |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
115 |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
116 //Orthanc::Logging::EnableInfoLevel(true); |
1368 | 117 //Orthanc::Logging::EnableTraceLevel(true); |
118 | |
119 { | |
120 | |
121 #if 1 | |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
122 boost::shared_ptr<OrthancStone::SdlViewport> viewport = |
1368 | 123 OrthancStone::SdlOpenGLViewport::Create("Stone of Orthanc", 800, 600); |
124 #else | |
125 boost::shared_ptr<OrthancStone::SdlViewport> viewport = | |
126 OrthancStone::SdlCairoViewport::Create("Stone of Orthanc", 800, 600); | |
127 #endif | |
128 | |
129 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
|
130 |
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
|
131 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
|
132 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
|
133 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
|
134 |
1368 | 135 context.StartOracle(); |
136 | |
137 { | |
138 | |
139 boost::shared_ptr<SdlSimpleViewerApplication> application( | |
140 SdlSimpleViewerApplication::Create(context, viewport)); | |
141 | |
142 OrthancStone::DicomSource source; | |
143 | |
144 application->LoadOrthancFrame(source, instanceId, frameIndex); | |
145 | |
146 OrthancStone::DefaultViewportInteractor interactor; | |
1535
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1532
diff
changeset
|
147 interactor.SetWindowingLayer(0); |
1368 | 148 |
149 { | |
150 int scancodeCount = 0; | |
151 const uint8_t* keyboardState = SDL_GetKeyboardState(&scancodeCount); | |
152 | |
153 bool stop = false; | |
154 while (!stop) | |
155 { | |
156 bool paint = false; | |
157 SDL_Event event; | |
158 while (SDL_PollEvent(&event)) | |
159 { | |
160 if (event.type == SDL_QUIT) | |
161 { | |
162 stop = true; | |
163 break; | |
164 } | |
165 else if (viewport->IsRefreshEvent(event)) | |
166 { | |
167 paint = true; | |
168 } | |
169 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
|
170 (event.window.event == SDL_WINDOWEVENT_RESIZED || |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
171 event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)) |
1368 | 172 { |
173 viewport->UpdateSize(event.window.data1, event.window.data2); | |
174 } | |
175 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
|
176 (event.window.event == SDL_WINDOWEVENT_SHOWN || |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
177 event.window.event == SDL_WINDOWEVENT_EXPOSED)) |
1368 | 178 { |
1576
92fca2b3ba3d
sanitizing the handling of canvas size
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1560
diff
changeset
|
179 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
|
180 lock->RefreshCanvasSize(); |
1368 | 181 } |
182 else if (event.type == SDL_KEYDOWN && | |
183 event.key.repeat == 0 /* Ignore key bounce */) | |
184 { | |
185 switch (event.key.keysym.sym) | |
186 { | |
187 case SDLK_f: | |
188 viewport->ToggleMaximize(); | |
189 break; | |
190 | |
191 case SDLK_s: | |
192 application->FitContent(); | |
193 break; | |
194 | |
195 case SDLK_q: | |
196 stop = true; | |
197 break; | |
198 | |
199 default: | |
200 break; | |
201 } | |
202 } | |
203 else if (event.type == SDL_MOUSEBUTTONDOWN || | |
204 event.type == SDL_MOUSEMOTION || | |
205 event.type == SDL_MOUSEBUTTONUP) | |
206 { | |
1507
169adf9090a6
replacing deprecated std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1458
diff
changeset
|
207 std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport->Lock()); |
1368 | 208 if (lock->HasCompositor()) |
209 { | |
210 OrthancStone::PointerEvent p; | |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
211 OrthancStoneHelpers::GetPointerEvent(p, lock->GetCompositor(), |
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
212 event, keyboardState, scancodeCount); |
1368 | 213 |
214 switch (event.type) | |
215 { | |
216 case SDL_MOUSEBUTTONDOWN: | |
217 lock->GetController().HandleMousePress(interactor, p, | |
218 lock->GetCompositor().GetCanvasWidth(), | |
219 lock->GetCompositor().GetCanvasHeight()); | |
220 lock->Invalidate(); | |
221 break; | |
222 | |
223 case SDL_MOUSEMOTION: | |
224 if (lock->GetController().HandleMouseMove(p)) | |
225 { | |
226 lock->Invalidate(); | |
227 } | |
228 break; | |
229 | |
230 case SDL_MOUSEBUTTONUP: | |
231 lock->GetController().HandleMouseRelease(p); | |
232 lock->Invalidate(); | |
233 break; | |
234 | |
235 default: | |
236 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); | |
237 } | |
238 } | |
239 } | |
240 } | |
241 | |
242 if (paint) | |
243 { | |
244 viewport->Paint(); | |
245 } | |
246 | |
247 // Small delay to avoid using 100% of CPU | |
248 SDL_Delay(1); | |
249 } | |
250 } | |
251 context.StopOracle(); | |
252 } | |
253 } | |
254 | |
255 OrthancStone::StoneFinalize(); | |
256 return 0; | |
257 } | |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
258 catch (Orthanc::OrthancException& e) |
1368 | 259 { |
260 LOG(ERROR) << "OrthancException: " << e.What(); | |
261 return -1; | |
262 } | |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
263 catch (OrthancStone::StoneException& e) |
1368 | 264 { |
265 LOG(ERROR) << "StoneException: " << e.What(); | |
266 return -1; | |
267 } | |
1382
9d138883be66
Proper command-line parameter management for SDL sample
Benjamin Golinvaux <bgo@osimis.io>
parents:
1368
diff
changeset
|
268 catch (std::runtime_error& e) |
1368 | 269 { |
270 LOG(ERROR) << "Runtime error: " << e.what(); | |
271 return -1; | |
272 } | |
273 catch (...) | |
274 { | |
275 LOG(ERROR) << "Native exception"; | |
276 return -1; | |
277 } | |
278 } |