Mercurial > hg > orthanc-stone
comparison Samples/Sdl/RtViewer/RtViewerSdl.cpp @ 1389:5c83be3a6be5
split SDL / common + RtViewer rename + html test file
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Tue, 28 Apr 2020 08:58:41 +0200 |
parents | dfb48f0794b1 |
children | ffdb82850e98 |
comparison
equal
deleted
inserted
replaced
1388:240531afdd2d | 1389:5c83be3a6be5 |
---|---|
49 { | 49 { |
50 void RtViewerApp::ProcessOptions(int argc, char* argv[]) | 50 void RtViewerApp::ProcessOptions(int argc, char* argv[]) |
51 { | 51 { |
52 namespace po = boost::program_options; | 52 namespace po = boost::program_options; |
53 po::options_description desc("Usage:"); | 53 po::options_description desc("Usage:"); |
54 | |
55 //ctLoader->LoadSeries("a04ecf01-79b2fc33-58239f7e-ad9db983-28e81afa"); // CT | |
56 //doseLoader->LoadInstance("830a69ff-8e4b5ee3-b7f966c8-bccc20fb-d322dceb"); // RT-DOSE | |
57 //rtstructLoader->LoadInstance("54460695-ba3885ee-ddf61ac0-f028e31d-a6e474d9"); // RT-STRUCT | |
58 | |
59 | 54 |
60 desc.add_options() | 55 desc.add_options() |
61 ("loglevel", po::value<std::string>()->default_value("WARNING"), | 56 ("loglevel", po::value<std::string>()->default_value("WARNING"), |
62 "You can choose WARNING, INFO or TRACE for the logging level: Errors and warnings will always be displayed. (default: WARNING)") | 57 "You can choose WARNING, INFO or TRACE for the logging level: Errors and warnings will always be displayed. (default: WARNING)") |
63 | 58 |
121 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); | 116 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
122 ViewportController& controller = lock->GetController(); | 117 ViewportController& controller = lock->GetController(); |
123 Scene2D& scene = controller.GetScene(); | 118 Scene2D& scene = controller.GetScene(); |
124 ICompositor& compositor = lock->GetCompositor(); | 119 ICompositor& compositor = lock->GetCompositor(); |
125 | 120 |
126 // False means we do NOT let Windows treat this as a legacy application | 121 // False means we do NOT let a hi-DPI aware desktop managedr treat this as a legacy application that requires |
127 // that needs to be scaled | 122 // scaling. |
128 controller.FitContent(compositor.GetCanvasWidth(), compositor.GetCanvasHeight()); | 123 controller.FitContent(compositor.GetCanvasWidth(), compositor.GetCanvasHeight()); |
129 | 124 |
130 glEnable(GL_DEBUG_OUTPUT); | 125 glEnable(GL_DEBUG_OUTPUT); |
131 glDebugMessageCallback(OpenGLMessageCallback, 0); | 126 glDebugMessageCallback(OpenGLMessageCallback, 0); |
132 | 127 |
139 | 134 |
140 loadersContext_.reset(new GenericLoadersContext(1, 4, 1)); | 135 loadersContext_.reset(new GenericLoadersContext(1, 4, 1)); |
141 loadersContext_->StartOracle(); | 136 loadersContext_->StartOracle(); |
142 | 137 |
143 /** | 138 /** |
144 It is very important that the Oracle (responsible for network I/O be started before creating and firing the | 139 It is very important that the Oracle (responsible for network I/O) be started before creating and firing the |
145 loaders, for any command scheduled by the loader before the oracle is started will be lost. | 140 loaders, for any command scheduled by the loader before the oracle is started will be lost. |
146 */ | 141 */ |
147 PrepareLoadersAndSlicers(); | 142 PrepareLoadersAndSlicers(); |
148 | 143 |
149 bool stopApplication = false; | 144 bool stopApplication = false; |
150 | 145 |
151 while (!stopApplication) | 146 while (!stopApplication) |
152 { | 147 { |
153 //compositor.Refresh(scene); | |
154 | |
155 SDL_Event event; | 148 SDL_Event event; |
156 while (!stopApplication && SDL_PollEvent(&event)) | 149 while (!stopApplication && SDL_PollEvent(&event)) |
157 { | 150 { |
158 if (event.type == SDL_QUIT) | 151 if (event.type == SDL_QUIT) |
159 { | 152 { |
161 break; | 154 break; |
162 } | 155 } |
163 else if (event.type == SDL_WINDOWEVENT && | 156 else if (event.type == SDL_WINDOWEVENT && |
164 event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED) | 157 event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED) |
165 { | 158 { |
166 DisableTracker(); // was: tracker.reset(NULL); | 159 DisableTracker(); |
167 } | 160 } |
168 else if (event.type == SDL_KEYDOWN && | 161 else if (event.type == SDL_KEYDOWN && |
169 event.key.repeat == 0 /* Ignore key bounce */) | 162 event.key.repeat == 0 /* Ignore key bounce */) |
170 { | 163 { |
171 switch (event.key.keysym.sym) | 164 switch (event.key.keysym.sym) |
172 { | 165 { |
173 case SDLK_f: | 166 case SDLK_f: |
174 // TODO: implement GetWindow!!! | 167 // TODO: implement GetWindow to be able to do: |
175 // viewport_->GetContext()->GetWindow().ToggleMaximize(); | 168 // viewport_->GetWindow().ToggleMaximize(); |
176 ORTHANC_ASSERT(false, "Please implement GetWindow()"); | 169 ORTHANC_ASSERT(false, "Please implement GetWindow()"); |
177 break; | 170 break; |
178 case SDLK_q: | 171 case SDLK_q: |
179 stopApplication = true; | 172 stopApplication = true; |
180 break; | 173 break; |
181 default: | 174 default: |
182 break; | 175 break; |
183 } | 176 } |
184 } | 177 } |
178 // the code above is rather application-neutral. | |
179 // the following call handles events specific to the application | |
185 HandleApplicationEvent(event); | 180 HandleApplicationEvent(event); |
186 } | 181 } |
187 SDL_Delay(1); | 182 SDL_Delay(1); |
188 } | 183 } |
189 loadersContext_->StopOracle(); | 184 loadersContext_->StopOracle(); |