diff OrthancStone/Sources/Scene2DViewport/MeasureCommands.cpp @ 1791:9b650ab68d4c

replaced unneeded use of boost::share_ptr for MeasureCommand mementos by std::unique_ptr
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 17 May 2021 16:11:17 +0200
parents 9ac2a65d4172
children 3889ae96d2e9
line wrap: on
line diff
--- a/OrthancStone/Sources/Scene2DViewport/MeasureCommands.cpp	Mon May 17 13:57:25 2021 +0200
+++ b/OrthancStone/Sources/Scene2DViewport/MeasureCommands.cpp	Mon May 17 16:11:17 2021 +0200
@@ -90,8 +90,8 @@
                                              boost::weak_ptr<IViewport> viewport) :
     MeasureCommand(viewport),
     measureTool_(measureTool),
-    mementoModified_(measureTool->GetMemento()),
-    mementoOriginal_(measureTool->GetMemento())
+    mementoModified_(measureTool->CreateMemento()),
+    mementoOriginal_(measureTool->CreateMemento())
   {
     std::unique_ptr<IViewport::ILock> lock(GetViewportLock());
     GetMeasureTool()->Disable();
@@ -101,8 +101,8 @@
   EditMeasureCommand::EditMeasureCommand(boost::shared_ptr<MeasureTool> measureTool,
                                          boost::weak_ptr<IViewport> viewport) :
     MeasureCommand(viewport),
-    mementoModified_(measureTool->GetMemento()),
-    mementoOriginal_(measureTool->GetMemento())
+    mementoModified_(measureTool->CreateMemento()),
+    mementoOriginal_(measureTool->CreateMemento())
   {
   }
 
@@ -113,11 +113,49 @@
   void EditMeasureCommand::Undo()
   {
     // simply disable the measure tool upon undo
-    GetMeasureTool()->SetMemento(mementoOriginal_);
+    assert(mementoOriginal_.get() != NULL);
+    GetMeasureTool()->SetMemento(*mementoOriginal_);
   }
 
   void EditMeasureCommand::Redo()
   {
-    GetMeasureTool()->SetMemento(mementoModified_);
+    assert(mementoModified_.get() != NULL);
+    GetMeasureTool()->SetMemento(*mementoModified_);
+  }
+
+  const MeasureToolMemento& EditMeasureCommand::GetMementoOriginal() const
+  {
+    assert(mementoOriginal_.get() != NULL);
+    return *mementoOriginal_;
+  }    
+
+  void EditMeasureCommand::SetMementoModified(MeasureToolMemento* memento)
+  {
+    if (memento == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+    else
+    {
+      mementoModified_.reset(memento);
+    }
+  }
+
+  const MeasureToolMemento& DeleteMeasureCommand::GetMementoOriginal() const
+  {
+    assert(mementoOriginal_.get() != NULL);
+    return *mementoOriginal_;
+  }    
+
+  void DeleteMeasureCommand::SetMementoModified(MeasureToolMemento* memento)
+  {
+    if (memento == NULL)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
+    }
+    else
+    {
+      mementoModified_.reset(memento);
+    }
   }
 }