diff Framework/Layers/OrthancFrameLayerSource.h @ 77:f5f54ed8d307 wasm

refactoring
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 24 May 2017 21:13:29 +0200
parents 298f375dcb68
children 02c3a7a4938f
line wrap: on
line diff
--- a/Framework/Layers/OrthancFrameLayerSource.h	Wed May 24 12:42:08 2017 +0200
+++ b/Framework/Layers/OrthancFrameLayerSource.h	Wed May 24 21:13:29 2017 +0200
@@ -24,54 +24,45 @@
 #include "LayerSourceBase.h"
 #include "../Toolbox/IWebService.h"
 #include "../Toolbox/IVolumeSlicesObserver.h"
-#include "../../Resources/Orthanc/Plugins/Samples/Common/FullOrthancDataset.h"
+#include "../Toolbox/OrthancSlicesLoader.h"
 
 namespace OrthancStone
 {  
   class OrthancFrameLayerSource :
     public LayerSourceBase,
-    public IWebService::ICallback   // TODO move this into a PImpl
+    private OrthancSlicesLoader::ICallback
   {
   private:
-    enum Content
-    {
-      Content_Tags,
-      Content_Frame
-    };
+    std::string             instanceId_;
+    unsigned int            frame_;
+    OrthancSlicesLoader     loader_;
+    IVolumeSlicesObserver*  observer2_;
+
+    virtual void NotifyGeometryReady(const OrthancSlicesLoader& loader);
+
+    virtual void NotifyGeometryError(const OrthancSlicesLoader& loader);
 
-    class Operation;
-    
-    IWebService&                                      orthanc_;
-    std::string                                       instanceId_;
-    unsigned int                                      frame_;
-    std::auto_ptr<OrthancPlugins::FullOrthancDataset> dataset_;
-    unsigned int                                      frameWidth_;
-    unsigned int                                      frameHeight_;
-    Orthanc::PixelFormat                              format_;
-    double                                            pixelSpacingX_;
-    double                                            pixelSpacingY_;
-    IVolumeSlicesObserver*                            observer2_;
+    virtual void NotifySliceImageReady(const OrthancSlicesLoader& loader,
+                                       unsigned int sliceIndex,
+                                       const Slice& slice,
+                                       Orthanc::ImageAccessor* image);
+
+    virtual void NotifySliceImageError(const OrthancSlicesLoader& loader,
+                                       unsigned int sliceIndex,
+                                       const Slice& slice);
 
   protected:
     virtual void StartInternal();
 
   public:
+    using LayerSourceBase::SetObserver;
+
     OrthancFrameLayerSource(IWebService& orthanc,
                             const std::string& instanceId,
                             unsigned int frame);
 
-    virtual void SetObserver(IObserver& observer);
-
     void SetObserver(IVolumeSlicesObserver& observer);
 
-    virtual void NotifyError(const std::string& uri,
-                             Orthanc::IDynamicObject* payload);
-
-    virtual void NotifySuccess(const std::string& uri,
-                               const void* answer,
-                               size_t answerSize,
-                               Orthanc::IDynamicObject* payload);
-
     virtual bool GetExtent(double& x1,
                            double& y1,
                            double& x2,