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();