changeset 2361:521fbb596148 refactoring

cont
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 08 Oct 2026 11:51:01 +0200
parents 1fb8828effa1
children fd6db8542d10
files OrthancStone/Sources/Scene2DViewport/EditAngleMeasureCommand.cpp OrthancStone/Sources/Scene2DViewport/EditAngleMeasureCommand.h OrthancStone/Sources/Scene2DViewport/EditLineMeasureCommand.cpp OrthancStone/Sources/Scene2DViewport/EditLineMeasureCommand.h OrthancStone/Sources/Scene2DViewport/MeasureCommands.cpp OrthancStone/Sources/Scene2DViewport/MeasureCommands.h
diffstat 6 files changed, 52 insertions(+), 69 deletions(-) [+]
line wrap: on
line diff
--- a/OrthancStone/Sources/Scene2DViewport/EditAngleMeasureCommand.cpp	Thu Oct 08 11:11:36 2026 +0200
+++ b/OrthancStone/Sources/Scene2DViewport/EditAngleMeasureCommand.cpp	Thu Oct 08 11:51:01 2026 +0200
@@ -24,31 +24,29 @@
 
 namespace OrthancStone
 {
-  EditAngleMeasureCommand::EditAngleMeasureCommand(
-    boost::shared_ptr<MeasureTool>  measureTool,
-    boost::weak_ptr<IViewport> viewport)
-    : EditMeasureCommand(measureTool, viewport)
-    , measureTool_(measureTool)
+  EditAngleMeasureCommand::EditAngleMeasureCommand(const boost::shared_ptr<MeasureTool>& measureTool,
+                                                   boost::weak_ptr<IViewport> viewport) :
+    EditMeasureCommand(measureTool, viewport)
   {
   }
 
   void EditAngleMeasureCommand::SetCenter(ScenePoint2D scenePos)
   {
-    dynamic_cast<AngleMeasureTool&>(*measureTool_).SetCenter(scenePos);
-    SetMementoModified(measureTool_->CreateMemento());
+    dynamic_cast<AngleMeasureTool&>(GetMeasureTool()).SetCenter(scenePos);
+    SetMementoModified(GetMeasureTool().CreateMemento());
   }
 
 
   void EditAngleMeasureCommand::SetSide1End(ScenePoint2D scenePos)
   {
-    dynamic_cast<AngleMeasureTool&>(*measureTool_).SetSide1End(scenePos);
-    SetMementoModified(measureTool_->CreateMemento());
+    dynamic_cast<AngleMeasureTool&>(GetMeasureTool()).SetSide1End(scenePos);
+    SetMementoModified(GetMeasureTool().CreateMemento());
   }
 
 
   void EditAngleMeasureCommand::SetSide2End(ScenePoint2D scenePos)
   {
-    dynamic_cast<AngleMeasureTool&>(*measureTool_).SetSide2End(scenePos);
-    SetMementoModified(measureTool_->CreateMemento());
+    dynamic_cast<AngleMeasureTool&>(GetMeasureTool()).SetSide2End(scenePos);
+    SetMementoModified(GetMeasureTool().CreateMemento());
   }
 }
--- a/OrthancStone/Sources/Scene2DViewport/EditAngleMeasureCommand.h	Thu Oct 08 11:11:36 2026 +0200
+++ b/OrthancStone/Sources/Scene2DViewport/EditAngleMeasureCommand.h	Thu Oct 08 11:51:01 2026 +0200
@@ -29,9 +29,8 @@
   {
   public:
     /** Ctor sets end of side 1*/
-    EditAngleMeasureCommand(
-      boost::shared_ptr<MeasureTool>  measureTool,
-      boost::weak_ptr<IViewport> viewport);
+    EditAngleMeasureCommand(const boost::shared_ptr<MeasureTool>& measureTool,
+                            boost::weak_ptr<IViewport> viewport);
 
     /** This method sets center*/
     void SetCenter(ScenePoint2D scenePos);
@@ -41,12 +40,5 @@
 
     /** This method sets end of side 2*/
     void SetSide2End(ScenePoint2D scenePos);
-
-  private:
-    virtual boost::shared_ptr<MeasureTool> GetMeasureTool() ORTHANC_OVERRIDE
-    {
-      return measureTool_;
-    }
-    boost::shared_ptr<MeasureTool> measureTool_;
   };
 }
--- a/OrthancStone/Sources/Scene2DViewport/EditLineMeasureCommand.cpp	Thu Oct 08 11:11:36 2026 +0200
+++ b/OrthancStone/Sources/Scene2DViewport/EditLineMeasureCommand.cpp	Thu Oct 08 11:51:01 2026 +0200
@@ -24,25 +24,23 @@
 
 namespace OrthancStone
 {
-  EditLineMeasureCommand::EditLineMeasureCommand(
-    boost::shared_ptr<MeasureTool>  measureTool,
-    boost::weak_ptr<IViewport> viewport)
-    : EditMeasureCommand(measureTool, viewport)
-    , measureTool_(measureTool)
+  EditLineMeasureCommand::EditLineMeasureCommand(const boost::shared_ptr<MeasureTool>& measureTool,
+                                                 boost::weak_ptr<IViewport> viewport) :
+  EditMeasureCommand(measureTool, viewport)
   {
   }
 
 
   void EditLineMeasureCommand::SetStart(ScenePoint2D scenePos)
   {
-    dynamic_cast<LineMeasureTool&>(*measureTool_).SetStart(scenePos);
-    SetMementoModified(measureTool_->CreateMemento());
+    dynamic_cast<LineMeasureTool&>(GetMeasureTool()).SetStart(scenePos);
+    SetMementoModified(GetMeasureTool().CreateMemento());
   }
 
 
   void EditLineMeasureCommand::SetEnd(ScenePoint2D scenePos)
   {
-    dynamic_cast<LineMeasureTool&>(*measureTool_).SetEnd(scenePos);
-    SetMementoModified(measureTool_->CreateMemento());
+    dynamic_cast<LineMeasureTool&>(GetMeasureTool()).SetEnd(scenePos);
+    SetMementoModified(GetMeasureTool().CreateMemento());
   }
 }
--- a/OrthancStone/Sources/Scene2DViewport/EditLineMeasureCommand.h	Thu Oct 08 11:11:36 2026 +0200
+++ b/OrthancStone/Sources/Scene2DViewport/EditLineMeasureCommand.h	Thu Oct 08 11:51:01 2026 +0200
@@ -28,18 +28,10 @@
   class EditLineMeasureCommand : public EditMeasureCommand
   {
   public:
-    EditLineMeasureCommand(
-      boost::shared_ptr<MeasureTool>  measureTool,
-      boost::weak_ptr<IViewport> viewport);
+    EditLineMeasureCommand(const boost::shared_ptr<MeasureTool>& measureTool,
+                           boost::weak_ptr<IViewport> viewport);
 
     void SetStart(ScenePoint2D scenePos);
     void SetEnd(ScenePoint2D scenePos);
-
-  private:
-    virtual boost::shared_ptr<MeasureTool> GetMeasureTool() ORTHANC_OVERRIDE
-    {
-      return measureTool_;
-    }
-    boost::shared_ptr<MeasureTool> measureTool_;
   };
 }
--- a/OrthancStone/Sources/Scene2DViewport/MeasureCommands.cpp	Thu Oct 08 11:11:36 2026 +0200
+++ b/OrthancStone/Sources/Scene2DViewport/MeasureCommands.cpp	Thu Oct 08 11:51:01 2026 +0200
@@ -70,15 +70,15 @@
   {
     std::unique_ptr<IViewport::ILock> lock(GetViewportLock());
     // simply disable the measure tool upon undo
-    GetMeasureTool()->Disable();
-    lock->GetController().RemoveMeasureTool(GetMeasureTool());
+    measureTool_->Disable();
+    lock->GetController().RemoveMeasureTool(measureTool_);
   }
 
   void DeleteMeasureCommand::Undo()
   {
     std::unique_ptr<IViewport::ILock> lock(GetViewportLock());
-    GetMeasureTool()->Enable();
-    lock->GetController().AddMeasureTool(GetMeasureTool());
+    measureTool_->Enable();
+    lock->GetController().AddMeasureTool(measureTool_);
   }
 
   DeleteMeasureCommand::~DeleteMeasureCommand()
@@ -87,41 +87,49 @@
     // we thus leave it as is
   }
 
-  DeleteMeasureCommand::DeleteMeasureCommand(boost::shared_ptr<MeasureTool> measureTool,
+  DeleteMeasureCommand::DeleteMeasureCommand(const boost::shared_ptr<MeasureTool>& measureTool,
                                              boost::weak_ptr<IViewport> viewport) :
     MeasureCommand(viewport),
     measureTool_(measureTool),
     mementoModified_(measureTool->CreateMemento()),
     mementoOriginal_(measureTool->CreateMemento())
   {
-    std::unique_ptr<IViewport::ILock> lock(GetViewportLock());
-    measureTool_->Disable();
-    lock->GetController().RemoveMeasureTool(measureTool_);
+    if (!measureTool)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+
+    {
+      std::unique_ptr<IViewport::ILock> lock(GetViewportLock());
+      measureTool_->Disable();
+      lock->GetController().RemoveMeasureTool(measureTool_);
+    }
   }
 
-  EditMeasureCommand::EditMeasureCommand(boost::shared_ptr<MeasureTool> measureTool,
+  EditMeasureCommand::EditMeasureCommand(const boost::shared_ptr<MeasureTool>& measureTool,
                                          boost::weak_ptr<IViewport> viewport) :
     MeasureCommand(viewport),
+    measureTool_(measureTool),
     mementoModified_(measureTool->CreateMemento()),
     mementoOriginal_(measureTool->CreateMemento())
   {
-  }
-
-  EditMeasureCommand::~EditMeasureCommand()
-  {
+    if (!measureTool)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
   }
 
   void EditMeasureCommand::Undo()
   {
     // simply disable the measure tool upon undo
     assert(mementoOriginal_.get() != NULL);
-    GetMeasureTool()->SetMemento(*mementoOriginal_);
+    GetMeasureTool().SetMemento(*mementoOriginal_);
   }
 
   void EditMeasureCommand::Redo()
   {
     assert(mementoModified_.get() != NULL);
-    GetMeasureTool()->SetMemento(*mementoModified_);
+    GetMeasureTool().SetMemento(*mementoModified_);
   }
 
   const MeasureTool::IMemento& EditMeasureCommand::GetMementoOriginal() const
--- a/OrthancStone/Sources/Scene2DViewport/MeasureCommands.h	Thu Oct 08 11:11:36 2026 +0200
+++ b/OrthancStone/Sources/Scene2DViewport/MeasureCommands.h	Thu Oct 08 11:51:01 2026 +0200
@@ -81,8 +81,7 @@
   class EditMeasureCommand : public MeasureCommand
   {
   private:
-    /** Must be implemented by the subclasses that edit the actual tool */
-    virtual boost::shared_ptr<MeasureTool> GetMeasureTool() = 0;
+    boost::shared_ptr<MeasureTool>  measureTool_;
 
     /** This memento is updated by the subclasses upon modifications */
     std::unique_ptr<MeasureTool::IMemento> mementoModified_;
@@ -91,14 +90,17 @@
     std::unique_ptr<MeasureTool::IMemento> mementoOriginal_;
 
   protected:
+    MeasureTool& GetMeasureTool() const
+    {
+      return *measureTool_;
+    }
+
     void SetMementoModified(MeasureTool::IMemento* memento);  // takes ownership
 
   public:
-    EditMeasureCommand(boost::shared_ptr<MeasureTool> measureTool,
+    EditMeasureCommand(const boost::shared_ptr<MeasureTool>& measureTool,
                        boost::weak_ptr<IViewport> viewport);
 
-    virtual ~EditMeasureCommand();
-
     virtual void Undo() ORTHANC_OVERRIDE;
 
     virtual void Redo() ORTHANC_OVERRIDE;
@@ -106,16 +108,10 @@
     const MeasureTool::IMemento& GetMementoOriginal() const;
   };
 
-  
+
   class DeleteMeasureCommand : public MeasureCommand
   {
   private:
-    /** Must be implemented by the subclasses that edit the actual tool */
-    virtual boost::shared_ptr<MeasureTool> GetMeasureTool()
-    {
-      return measureTool_;
-    }
-
     boost::shared_ptr<MeasureTool> measureTool_;
 
     /** This memento is updated by the subclasses upon modifications */
@@ -128,7 +124,7 @@
     void SetMementoModified(MeasureTool::IMemento* memento);  // takes ownership
 
   public:
-    DeleteMeasureCommand(boost::shared_ptr<MeasureTool> measureTool,
+    DeleteMeasureCommand(const boost::shared_ptr<MeasureTool>& measureTool,
                          boost::weak_ptr<IViewport> viewport);
 
     virtual ~DeleteMeasureCommand();
@@ -140,4 +136,3 @@
     const MeasureTool::IMemento& GetMementoOriginal() const;
   };
 }
-