Mercurial > hg > orthanc-stone
comparison Applications/Samples/SimpleViewerApplication.h @ 258:e5a9b3d03478 am-2
first very basic version of SmartLoader
author | am@osimis.io |
---|---|
date | Tue, 10 Jul 2018 14:48:13 +0200 |
parents | 9afafb192180 |
children | c9cf95b49a86 |
comparison
equal
deleted
inserted
replaced
257:9afafb192180 | 258:e5a9b3d03478 |
---|---|
25 | 25 |
26 #include "../../Framework/Layers/OrthancFrameLayerSource.h" | 26 #include "../../Framework/Layers/OrthancFrameLayerSource.h" |
27 #include "../../Framework/Widgets/LayerWidget.h" | 27 #include "../../Framework/Widgets/LayerWidget.h" |
28 #include "../../Framework/Widgets/LayoutWidget.h" | 28 #include "../../Framework/Widgets/LayoutWidget.h" |
29 #include "../../Framework/Messages/IObserver.h" | 29 #include "../../Framework/Messages/IObserver.h" |
30 #include "../../Framework/SmartLoader.h" | |
30 | 31 |
31 #include <Core/Logging.h> | 32 #include <Core/Logging.h> |
32 | 33 |
33 namespace OrthancStone | 34 namespace OrthancStone |
34 { | 35 { |
193 unsigned int currentInstanceIndex_; | 194 unsigned int currentInstanceIndex_; |
194 OrthancStone::WidgetViewport* wasmViewport1_; | 195 OrthancStone::WidgetViewport* wasmViewport1_; |
195 OrthancStone::WidgetViewport* wasmViewport2_; | 196 OrthancStone::WidgetViewport* wasmViewport2_; |
196 | 197 |
197 IStatusBar* statusBar_; | 198 IStatusBar* statusBar_; |
198 OrthancFrameLayerSource* source_; | |
199 unsigned int slice_; | 199 unsigned int slice_; |
200 std::unique_ptr<SmartLoader> smartLoader_; | |
200 | 201 |
201 public: | 202 public: |
202 SimpleViewerApplication(MessageBroker& broker) : | 203 SimpleViewerApplication(MessageBroker& broker) : |
204 IObserver(broker), | |
203 mainLayout_(NULL), | 205 mainLayout_(NULL), |
204 currentInstanceIndex_(0), | 206 currentInstanceIndex_(0), |
205 source_(NULL), | |
206 slice_(0), | |
207 wasmViewport1_(NULL), | 207 wasmViewport1_(NULL), |
208 wasmViewport2_(NULL), | 208 wasmViewport2_(NULL), |
209 IObserver(broker) | 209 slice_(0) |
210 { | 210 { |
211 } | 211 } |
212 | 212 |
213 virtual void Finalize() {} | 213 virtual void Finalize() {} |
214 virtual IWidget* GetCentralWidget() {return mainLayout_;} | 214 virtual IWidget* GetCentralWidget() {return mainLayout_;} |
273 mainLayout_->AddWidget(mainViewport_); | 273 mainLayout_->AddWidget(mainViewport_); |
274 thumbnailsLayout_->AddWidget(thumbnails_[0]); | 274 thumbnailsLayout_->AddWidget(thumbnails_[0]); |
275 thumbnailsLayout_->AddWidget(thumbnails_[1]); | 275 thumbnailsLayout_->AddWidget(thumbnails_[1]); |
276 | 276 |
277 // sources | 277 // sources |
278 source_ = new OrthancFrameLayerSource(broker_, context_->GetWebService()); | 278 smartLoader_.reset(new SmartLoader(broker_, context_->GetWebService())); |
279 source_->RegisterObserver(*this); | 279 smartLoader_->SetImageQuality(SliceImageQuality_FullPam); |
280 source_->SetImageQuality(SliceImageQuality_FullPam); | 280 smartLoader_->RegisterObserver(*this); |
281 source_->LoadFrame(instances_[currentInstanceIndex_], 0); | 281 |
282 | 282 mainViewport_->AddLayer(smartLoader_->GetFrame(instances_[currentInstanceIndex_], 0)); |
283 mainViewport_->AddLayer(source_); | 283 thumbnails_[0]->AddLayer(smartLoader_->GetFrame(instances_[0], 0)); |
284 | 284 thumbnails_[1]->AddLayer(smartLoader_->GetFrame(instances_[1], 0)); |
285 OrthancFrameLayerSource* thumb0 = new OrthancFrameLayerSource(broker_, context_->GetWebService()); | |
286 thumb0->RegisterObserver(*this); | |
287 thumb0->SetImageQuality(SliceImageQuality_FullPam); | |
288 thumb0->LoadFrame(instances_[0], 0); | |
289 OrthancFrameLayerSource* thumb1 = new OrthancFrameLayerSource(broker_, context_->GetWebService()); | |
290 thumb1->RegisterObserver(*this); | |
291 thumb1->SetImageQuality(SliceImageQuality_FullPam); | |
292 thumb1->LoadFrame(instances_[1], 0); | |
293 | |
294 thumbnails_[0]->AddLayer(thumb0); | |
295 thumbnails_[1]->AddLayer(thumb1); | |
296 | 285 |
297 mainLayout_->SetTransmitMouseOver(true); | 286 mainLayout_->SetTransmitMouseOver(true); |
298 interactor_.reset(new Interactor(*this)); | 287 interactor_.reset(new Interactor(*this)); |
299 mainViewport_->SetInteractor(*interactor_); | 288 mainViewport_->SetInteractor(*interactor_); |
300 } | 289 } |
311 assert(context_); | 300 assert(context_); |
312 statusBar_->SetMessage("displaying next image"); | 301 statusBar_->SetMessage("displaying next image"); |
313 | 302 |
314 currentInstanceIndex_ = (currentInstanceIndex_ + 1) % instances_.size(); | 303 currentInstanceIndex_ = (currentInstanceIndex_ + 1) % instances_.size(); |
315 | 304 |
316 std::auto_ptr<OrthancFrameLayerSource> layer | 305 mainViewport_->ReplaceLayer(0, smartLoader_->GetFrame(instances_[currentInstanceIndex_], 0)); |
317 (new OrthancFrameLayerSource(broker_, context_->GetWebService())); | 306 |
318 layer->SetImageQuality(SliceImageQuality_FullPam); | |
319 layer->RegisterObserver(*this); | |
320 layer->LoadFrame(instances_[currentInstanceIndex_], 0); | |
321 | |
322 mainViewport_->ReplaceLayer(0, layer.release()); | |
323 } | 307 } |
324 }; | 308 }; |
325 | 309 |
326 | 310 |
327 } | 311 } |