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 }