diff Framework/Layers/OrthancFrameLayerSource.cpp @ 247:3d523c9a8f0d am

trying to use boost::signals2 even more.
author am@osimis.io
date Mon, 02 Jul 2018 12:32:02 +0200
parents 5412adf19980
children
line wrap: on
line diff
--- a/Framework/Layers/OrthancFrameLayerSource.cpp	Tue Jun 26 13:55:17 2018 +0200
+++ b/Framework/Layers/OrthancFrameLayerSource.cpp	Mon Jul 02 12:32:02 2018 +0200
@@ -55,7 +55,7 @@
                                                       SliceImageQuality quality)
   {
     bool isFull = (quality == SliceImageQuality_Full);
-    LayerSourceBase::NotifyLayerReady(FrameRenderer::CreateRenderer(image.release(), slice, isFull),
+    LayerSourceBase::NotifyLayerReady(boost::shared_ptr<ILayerRenderer>(FrameRenderer::CreateRenderer(image.release(), slice, isFull)),
                                       slice.GetGeometry(), false);
   }
 
@@ -68,29 +68,33 @@
   }
 
 
-  OrthancFrameLayerSource::OrthancFrameLayerSource(IWebService& orthanc) :
-    loader_(*this, orthanc),
+  OrthancFrameLayerSource::OrthancFrameLayerSource() :
     quality_(SliceImageQuality_Full)
   {
   }
 
-  
+  void OrthancFrameLayerSource::Init(IWebService& orthanc) {
+    // note: there must have been a shared_ptr created on this object before calling shared_from_this()
+
+    loader_.reset(new OrthancSlicesLoader(shared_from_this(), orthanc));
+  }
+
   void OrthancFrameLayerSource::LoadSeries(const std::string& seriesId)
   {
-    loader_.ScheduleLoadSeries(seriesId);
+    loader_->ScheduleLoadSeries(loader_, seriesId);
   }
 
 
   void OrthancFrameLayerSource::LoadInstance(const std::string& instanceId)
   {
-    loader_.ScheduleLoadInstance(instanceId);
+    loader_->ScheduleLoadInstance(loader_, instanceId);
   }
 
 
   void OrthancFrameLayerSource::LoadFrame(const std::string& instanceId,
                                           unsigned int frame)
   {
-    loader_.ScheduleLoadFrame(instanceId, frame);
+    loader_->ScheduleLoadFrame(loader_, instanceId, frame);
   }
 
 
@@ -98,10 +102,10 @@
                                           const CoordinateSystem3D& viewportSlice)
   {
     size_t index;
-    if (loader_.IsGeometryReady() &&
-        loader_.LookupSlice(index, viewportSlice))
+    if (loader_->IsGeometryReady() &&
+        loader_->LookupSlice(index, viewportSlice))
     {
-      loader_.GetSlice(index).GetExtent(points);
+      loader_->GetSlice(index).GetExtent(points);
       return true;
     }
     else
@@ -115,11 +119,11 @@
   {
     size_t index;
 
-    if (loader_.IsGeometryReady())
+    if (loader_->IsGeometryReady())
     {
-      if (loader_.LookupSlice(index, viewportSlice))
+      if (loader_->LookupSlice(index, viewportSlice))
       {
-        loader_.ScheduleLoadSliceImage(index, quality_);
+        loader_->ScheduleLoadSliceImage(loader_, index, quality_);
       }
       else
       {