diff 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
line wrap: on
line diff
--- a/Applications/Samples/SimpleViewerApplication.h	Tue Jul 10 12:39:01 2018 +0200
+++ b/Applications/Samples/SimpleViewerApplication.h	Tue Jul 10 14:48:13 2018 +0200
@@ -27,6 +27,7 @@
 #include "../../Framework/Widgets/LayerWidget.h"
 #include "../../Framework/Widgets/LayoutWidget.h"
 #include "../../Framework/Messages/IObserver.h"
+#include "../../Framework/SmartLoader.h"
 
 #include <Core/Logging.h>
 
@@ -195,18 +196,17 @@
       OrthancStone::WidgetViewport*                wasmViewport2_;
 
       IStatusBar*                     statusBar_;
-      OrthancFrameLayerSource*        source_;
       unsigned int                    slice_;
+      std::unique_ptr<SmartLoader>    smartLoader_;
 
     public:
       SimpleViewerApplication(MessageBroker& broker) :
+        IObserver(broker),
         mainLayout_(NULL),
         currentInstanceIndex_(0),
-        source_(NULL),
-        slice_(0),
         wasmViewport1_(NULL),
         wasmViewport2_(NULL),
-        IObserver(broker)
+        slice_(0)
       {
       }
 
@@ -275,24 +275,13 @@
         thumbnailsLayout_->AddWidget(thumbnails_[1]);
 
         // sources
-        source_ = new OrthancFrameLayerSource(broker_, context_->GetWebService());
-        source_->RegisterObserver(*this);
-        source_->SetImageQuality(SliceImageQuality_FullPam);
-        source_->LoadFrame(instances_[currentInstanceIndex_], 0);
-
-        mainViewport_->AddLayer(source_);
+        smartLoader_.reset(new SmartLoader(broker_, context_->GetWebService()));
+        smartLoader_->SetImageQuality(SliceImageQuality_FullPam);
+        smartLoader_->RegisterObserver(*this);
 
-        OrthancFrameLayerSource* thumb0 = new OrthancFrameLayerSource(broker_, context_->GetWebService());
-        thumb0->RegisterObserver(*this);
-        thumb0->SetImageQuality(SliceImageQuality_FullPam);
-        thumb0->LoadFrame(instances_[0], 0);
-        OrthancFrameLayerSource* thumb1 = new OrthancFrameLayerSource(broker_, context_->GetWebService());
-        thumb1->RegisterObserver(*this);
-        thumb1->SetImageQuality(SliceImageQuality_FullPam);
-        thumb1->LoadFrame(instances_[1], 0);
-
-        thumbnails_[0]->AddLayer(thumb0);
-        thumbnails_[1]->AddLayer(thumb1);
+        mainViewport_->AddLayer(smartLoader_->GetFrame(instances_[currentInstanceIndex_], 0));
+        thumbnails_[0]->AddLayer(smartLoader_->GetFrame(instances_[0], 0));
+        thumbnails_[1]->AddLayer(smartLoader_->GetFrame(instances_[1], 0));
 
         mainLayout_->SetTransmitMouseOver(true);
         interactor_.reset(new Interactor(*this));
@@ -313,13 +302,8 @@
 
         currentInstanceIndex_ = (currentInstanceIndex_ + 1) % instances_.size();
 
-        std::auto_ptr<OrthancFrameLayerSource> layer
-            (new OrthancFrameLayerSource(broker_, context_->GetWebService()));
-        layer->SetImageQuality(SliceImageQuality_FullPam);
-        layer->RegisterObserver(*this);
-        layer->LoadFrame(instances_[currentInstanceIndex_], 0);
+        mainViewport_->ReplaceLayer(0, smartLoader_->GetFrame(instances_[currentInstanceIndex_], 0));
 
-        mainViewport_->ReplaceLayer(0, layer.release());
       }
     };