diff Framework/dev.h @ 247:3d523c9a8f0d am

trying to use boost::signals2 even more.
author am@osimis.io
date Mon, 02 Jul 2018 12:32:02 +0200
parents c4ea26865975
children
line wrap: on
line diff
--- a/Framework/dev.h	Tue Jun 26 13:55:17 2018 +0200
+++ b/Framework/dev.h	Mon Jul 02 12:32:02 2018 +0200
@@ -43,10 +43,10 @@
   // TODO: Handle errors while loading
   class OrthancVolumeImage : 
     public SlicedVolumeBase,
-    private OrthancSlicesLoader::ICallback
+    public OrthancSlicesLoader::IObserver
   { 
   private:
-    OrthancSlicesLoader           loader_;
+    boost::shared_ptr<OrthancSlicesLoader> loader_;
     std::auto_ptr<ImageBuffer3D>  image_;
     std::auto_ptr<DownloadStack>  downloadStack_;
     bool                          computeRange_;
@@ -59,7 +59,7 @@
       unsigned int slice;
       if (downloadStack_->Pop(slice))
       {
-        loader_.ScheduleLoadSliceImage(slice, SliceImageQuality_Jpeg90);
+        loader_->ScheduleLoadSliceImage(loader_, slice, SliceImageQuality_Jpeg90);
       }
     }
 
@@ -217,36 +217,36 @@
   public:
     OrthancVolumeImage(IWebService& orthanc,
                        bool computeRange) : 
-      loader_(*this, orthanc),
       computeRange_(computeRange),
       pendingSlices_(0)
     {
+        loader_.reset(new OrthancSlicesLoader(boost::shared_ptr<OrthancSlicesLoader::IObserver>(this), orthanc));
     }
 
     void ScheduleLoadSeries(const std::string& seriesId)
     {
-      loader_.ScheduleLoadSeries(seriesId);
+      loader_->ScheduleLoadSeries(loader_, seriesId);
     }
 
     void ScheduleLoadInstance(const std::string& instanceId)
     {
-      loader_.ScheduleLoadInstance(instanceId);
+      loader_->ScheduleLoadInstance(loader_, instanceId);
     }
 
     void ScheduleLoadFrame(const std::string& instanceId,
                            unsigned int frame)
     {
-      loader_.ScheduleLoadFrame(instanceId, frame);
+      loader_->ScheduleLoadFrame(loader_, instanceId, frame);
     }
 
     virtual size_t GetSliceCount() const
     {
-      return loader_.GetSliceCount();
+      return loader_->GetSliceCount();
     }
 
     virtual const Slice& GetSlice(size_t index) const
     {
-      return loader_.GetSlice(index);
+      return loader_->GetSlice(index);
     }
 
     ImageBuffer3D& GetImage() const
@@ -629,8 +629,8 @@
           }
 
           std::auto_ptr<Slice> slice(geometry.GetSlice(closest));
-          LayerSourceBase::NotifyLayerReady(
-            FrameRenderer::CreateRenderer(frame.release(), *slice, isFullQuality),
+          LayerSourceBase::NotifyLayerReady(boost::shared_ptr<ILayerRenderer>(
+            FrameRenderer::CreateRenderer(frame.release(), *slice, isFullQuality)),
             //new SliceOutlineRenderer(slice),
             slice->GetGeometry(), false);
           return;
@@ -855,7 +855,7 @@
                                                  extent.GetX1(), extent.GetY1(),
                                                  extent.GetX2(), extent.GetY2()))
         {
-          NotifyLayerReady(new LineLayerRenderer(x1, y1, x2, y2, slice), reference.GetGeometry(), false);
+          NotifyLayerReady(boost::shared_ptr<ILayerRenderer>(new LineLayerRenderer(x1, y1, x2, y2, slice)), reference.GetGeometry(), false);
         }
         else
         {