changeset 2359:cb7b6eb39ebb refactoring

refactoring MeasureTool
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 08 Oct 2026 10:47:46 +0200
parents 047bf02a8864
children 1fb8828effa1
files OrthancStone/Sources/Scene2DViewport/AngleMeasureTool.cpp OrthancStone/Sources/Scene2DViewport/AngleMeasureTool.h OrthancStone/Sources/Scene2DViewport/EditAngleMeasureTracker.cpp OrthancStone/Sources/Scene2DViewport/EditLineMeasureTracker.cpp OrthancStone/Sources/Scene2DViewport/LineMeasureTool.cpp OrthancStone/Sources/Scene2DViewport/LineMeasureTool.h OrthancStone/Sources/Scene2DViewport/MeasureCommands.cpp OrthancStone/Sources/Scene2DViewport/MeasureCommands.h OrthancStone/Sources/Scene2DViewport/MeasureTool.h
diffstat 9 files changed, 56 insertions(+), 56 deletions(-) [+]
line wrap: on
line diff
--- a/OrthancStone/Sources/Scene2DViewport/AngleMeasureTool.cpp	Thu Oct 08 10:22:05 2026 +0200
+++ b/OrthancStone/Sources/Scene2DViewport/AngleMeasureTool.cpp	Thu Oct 08 10:47:46 2026 +0200
@@ -106,18 +106,18 @@
   }
 
 
-  MeasureToolMemento* AngleMeasureTool::CreateMemento() const
+  MeasureTool::IMemento* AngleMeasureTool::CreateMemento() const
   {
-    std::unique_ptr<AngleMeasureToolMemento> memento(new AngleMeasureToolMemento());
+    std::unique_ptr<AngleMeasureTool::Memento> memento(new AngleMeasureTool::Memento());
     memento->center_ = center_;
     memento->side1End_ = side1End_;
     memento->side2End_ = side2End_;
     return memento.release();
   }
   
-  void AngleMeasureTool::SetMemento(const MeasureToolMemento& mementoBase)
+  void AngleMeasureTool::SetMemento(const MeasureTool::IMemento& mementoBase)
   {
-    const AngleMeasureToolMemento& memento = dynamic_cast<const AngleMeasureToolMemento&>(mementoBase);
+    const AngleMeasureTool::Memento& memento = dynamic_cast<const AngleMeasureTool::Memento&>(mementoBase);
     center_   = memento.center_;
     side1End_ = memento.side1End_;
     side2End_ = memento.side2End_;
--- a/OrthancStone/Sources/Scene2DViewport/AngleMeasureTool.h	Thu Oct 08 10:22:05 2026 +0200
+++ b/OrthancStone/Sources/Scene2DViewport/AngleMeasureTool.h	Thu Oct 08 10:47:46 2026 +0200
@@ -42,6 +42,15 @@
   class AngleMeasureTool : public MeasureTool
   {
   public:
+    class Memento : public IMemento
+    {
+    public:
+      ScenePoint2D   side1End_;
+      ScenePoint2D   side2End_;
+      ScenePoint2D   center_;
+    };
+
+  public:
     static boost::shared_ptr<AngleMeasureTool> Create(boost::weak_ptr<IViewport> viewport);
 
     ~AngleMeasureTool();
@@ -54,8 +63,8 @@
     virtual void Highlight(ScenePoint2D p) ORTHANC_OVERRIDE;
     virtual void ResetHighlightState() ORTHANC_OVERRIDE;
     virtual IFlexiblePointerTracker* CreateEditionTracker(const PointerEvent& e) ORTHANC_OVERRIDE;
-    virtual MeasureToolMemento* CreateMemento() const ORTHANC_OVERRIDE;
-    virtual void SetMemento(const MeasureToolMemento& memento) ORTHANC_OVERRIDE;
+    virtual IMemento* CreateMemento() const ORTHANC_OVERRIDE;
+    virtual void SetMemento(const IMemento& memento) ORTHANC_OVERRIDE;
     virtual std::string GetDescription() ORTHANC_OVERRIDE;
 
     enum AngleHighlightArea
@@ -85,14 +94,6 @@
     boost::shared_ptr<LayerHolder>  layerHolder_;
     AngleHighlightArea              angleHighlightArea_;
   };
-
-  class AngleMeasureToolMemento : public MeasureToolMemento
-  {
-  public:
-    ScenePoint2D                    side1End_;
-    ScenePoint2D                    side2End_;
-    ScenePoint2D                    center_;
-  };
 }
 
 
--- a/OrthancStone/Sources/Scene2DViewport/EditAngleMeasureTracker.cpp	Thu Oct 08 10:22:05 2026 +0200
+++ b/OrthancStone/Sources/Scene2DViewport/EditAngleMeasureTracker.cpp	Thu Oct 08 10:47:46 2026 +0200
@@ -63,8 +63,8 @@
 
     ScenePoint2D delta = scenePos - GetOriginalClickPosition();
 
-    const AngleMeasureToolMemento& memento =
-      dynamic_cast<const AngleMeasureToolMemento&>(command_->GetMementoOriginal());
+    const AngleMeasureTool::Memento& memento =
+      dynamic_cast<const AngleMeasureTool::Memento&>(command_->GetMementoOriginal());
 
     switch (modifiedZone_)
     {
--- a/OrthancStone/Sources/Scene2DViewport/EditLineMeasureTracker.cpp	Thu Oct 08 10:22:05 2026 +0200
+++ b/OrthancStone/Sources/Scene2DViewport/EditLineMeasureTracker.cpp	Thu Oct 08 10:47:46 2026 +0200
@@ -58,8 +58,8 @@
 
     ScenePoint2D delta = scenePos - GetOriginalClickPosition();
 
-    const LineMeasureToolMemento& memento =
-      dynamic_cast<const LineMeasureToolMemento&>(command_->GetMementoOriginal());
+    const LineMeasureTool::Memento& memento =
+      dynamic_cast<const LineMeasureTool::Memento&>(command_->GetMementoOriginal());
 
     switch (modifiedZone_)
     {
--- a/OrthancStone/Sources/Scene2DViewport/LineMeasureTool.cpp	Thu Oct 08 10:22:05 2026 +0200
+++ b/OrthancStone/Sources/Scene2DViewport/LineMeasureTool.cpp	Thu Oct 08 10:47:46 2026 +0200
@@ -181,17 +181,17 @@
     }
   }
 
-  MeasureToolMemento* LineMeasureTool::CreateMemento() const
+  MeasureTool::IMemento* LineMeasureTool::CreateMemento() const
   {
-    std::unique_ptr<LineMeasureToolMemento> memento(new LineMeasureToolMemento());
+    std::unique_ptr<Memento> memento(new Memento());
     memento->start_ = start_;
     memento->end_ = end_;
     return memento.release();
   }
 
-  void LineMeasureTool::SetMemento(const MeasureToolMemento& mementoBase)
+  void LineMeasureTool::SetMemento(const MeasureTool::IMemento& mementoBase)
   {
-    const LineMeasureToolMemento& memento = dynamic_cast<const LineMeasureToolMemento&>(mementoBase);
+    const LineMeasureTool::Memento& memento = dynamic_cast<const LineMeasureTool::Memento&>(mementoBase);
     start_ = memento.start_;
     end_ = memento.end_;
     RefreshScene();
--- a/OrthancStone/Sources/Scene2DViewport/LineMeasureTool.h	Thu Oct 08 10:22:05 2026 +0200
+++ b/OrthancStone/Sources/Scene2DViewport/LineMeasureTool.h	Thu Oct 08 10:47:46 2026 +0200
@@ -40,6 +40,14 @@
   class LineMeasureTool : public MeasureTool
   {
   public:
+    class Memento : public IMemento
+    {
+    public:
+      ScenePoint2D                    start_;
+      ScenePoint2D                    end_;
+    };
+
+  public:
     static boost::shared_ptr<LineMeasureTool> Create(boost::weak_ptr<IViewport> viewport);
 
     ~LineMeasureTool();
@@ -53,8 +61,8 @@
     virtual void Highlight(ScenePoint2D p) ORTHANC_OVERRIDE;
     virtual void ResetHighlightState() ORTHANC_OVERRIDE;
     virtual IFlexiblePointerTracker* CreateEditionTracker(const PointerEvent& e) ORTHANC_OVERRIDE;
-    virtual MeasureToolMemento* CreateMemento() const ORTHANC_OVERRIDE;
-    virtual void SetMemento(const MeasureToolMemento& memento) ORTHANC_OVERRIDE;
+    virtual IMemento* CreateMemento() const ORTHANC_OVERRIDE;
+    virtual void SetMemento(const IMemento& memento) ORTHANC_OVERRIDE;
     virtual std::string GetDescription() ORTHANC_OVERRIDE;
 
     enum LineHighlightArea
@@ -84,13 +92,5 @@
     int                             baseLayerIndex_;
     LineHighlightArea               lineHighlightArea_;
   };
-
-  class LineMeasureToolMemento : public MeasureToolMemento
-  {
-  public:
-    ScenePoint2D                    start_;
-    ScenePoint2D                    end_;
-  };
-
 }
 
--- a/OrthancStone/Sources/Scene2DViewport/MeasureCommands.cpp	Thu Oct 08 10:22:05 2026 +0200
+++ b/OrthancStone/Sources/Scene2DViewport/MeasureCommands.cpp	Thu Oct 08 10:47:46 2026 +0200
@@ -124,13 +124,13 @@
     GetMeasureTool()->SetMemento(*mementoModified_);
   }
 
-  const MeasureToolMemento& EditMeasureCommand::GetMementoOriginal() const
+  const MeasureTool::IMemento& EditMeasureCommand::GetMementoOriginal() const
   {
     assert(mementoOriginal_.get() != NULL);
     return *mementoOriginal_;
   }    
 
-  void EditMeasureCommand::SetMementoModified(MeasureToolMemento* memento)
+  void EditMeasureCommand::SetMementoModified(MeasureTool::IMemento* memento)
   {
     if (memento == NULL)
     {
@@ -142,13 +142,13 @@
     }
   }
 
-  const MeasureToolMemento& DeleteMeasureCommand::GetMementoOriginal() const
+  const MeasureTool::IMemento& DeleteMeasureCommand::GetMementoOriginal() const
   {
     assert(mementoOriginal_.get() != NULL);
     return *mementoOriginal_;
   }    
 
-  void DeleteMeasureCommand::SetMementoModified(MeasureToolMemento* memento)
+  void DeleteMeasureCommand::SetMementoModified(MeasureTool::IMemento* memento)
   {
     if (memento == NULL)
     {
--- a/OrthancStone/Sources/Scene2DViewport/MeasureCommands.h	Thu Oct 08 10:22:05 2026 +0200
+++ b/OrthancStone/Sources/Scene2DViewport/MeasureCommands.h	Thu Oct 08 10:47:46 2026 +0200
@@ -86,13 +86,13 @@
     virtual boost::shared_ptr<MeasureTool> GetMeasureTool() = 0;
 
     /** This memento is updated by the subclasses upon modifications */
-    std::unique_ptr<MeasureToolMemento> mementoModified_;
+    std::unique_ptr<MeasureTool::IMemento> mementoModified_;
     
     /** This memento is the original object state */
-    std::unique_ptr<MeasureToolMemento> mementoOriginal_;
+    std::unique_ptr<MeasureTool::IMemento> mementoOriginal_;
 
   protected:
-    void SetMementoModified(MeasureToolMemento* memento);  // takes ownership
+    void SetMementoModified(MeasureTool::IMemento* memento);  // takes ownership
 
   public:
     EditMeasureCommand(boost::shared_ptr<MeasureTool> measureTool,
@@ -104,7 +104,7 @@
 
     virtual void Redo() ORTHANC_OVERRIDE;
 
-    const MeasureToolMemento& GetMementoOriginal() const;
+    const MeasureTool::IMemento& GetMementoOriginal() const;
   };
 
   
@@ -120,13 +120,13 @@
     boost::shared_ptr<MeasureTool> measureTool_;
 
     /** This memento is updated by the subclasses upon modifications */
-    std::unique_ptr<MeasureToolMemento> mementoModified_;
+    std::unique_ptr<MeasureTool::IMemento> mementoModified_;
 
     /** This memento is the original object state */
-    std::unique_ptr<MeasureToolMemento> mementoOriginal_;
+    std::unique_ptr<MeasureTool::IMemento> mementoOriginal_;
 
   protected:
-    void SetMementoModified(MeasureToolMemento* memento);  // takes ownership
+    void SetMementoModified(MeasureTool::IMemento* memento);  // takes ownership
 
   public:
     DeleteMeasureCommand(boost::shared_ptr<MeasureTool> measureTool,
@@ -138,7 +138,7 @@
     
     virtual void Redo() ORTHANC_OVERRIDE;
 
-    const MeasureToolMemento& GetMementoOriginal() const;
+    const MeasureTool::IMemento& GetMementoOriginal() const;
   };
 }
 
--- a/OrthancStone/Sources/Scene2DViewport/MeasureTool.h	Thu Oct 08 10:22:05 2026 +0200
+++ b/OrthancStone/Sources/Scene2DViewport/MeasureTool.h	Thu Oct 08 10:47:46 2026 +0200
@@ -39,10 +39,18 @@
 namespace OrthancStone
 {
   class IFlexiblePointerTracker;
-  class MeasureToolMemento;
 
   class MeasureTool : public ObserverBase<MeasureTool>
   {
+  public:
+    class IMemento : public boost::noncopyable
+    {
+    public:
+      virtual ~IMemento()
+      {
+      }
+    };
+
   private:
     bool     enabled_;
 
@@ -126,13 +134,13 @@
        This method must return a memento the captures the tool state (not including
        the highlighting state
     */
-    virtual MeasureToolMemento* CreateMemento() const = 0;
+    virtual IMemento* CreateMemento() const = 0;
 
     /**
        This method must apply the supplied memento (this requires RTTI to check
        the type)
     */
-    virtual void SetMemento(const MeasureToolMemento& memento) = 0;
+    virtual void SetMemento(const IMemento& memento) = 0;
 
     /**
        This must create an edition tracker suitable for the supplied click position,
@@ -157,15 +165,6 @@
     */
     virtual std::string GetDescription() = 0;
   };
-
-  class MeasureToolMemento : public boost::noncopyable
-  {
-  public:
-    virtual ~MeasureToolMemento()
-    {
-    }
-  };
-
 }
 
 //extern void TrackerSample_SetInfoDisplayMessage(