# HG changeset patch # User Sebastien Jodogne # Date 1791449266 -7200 # Node ID cb7b6eb39ebbac71fdf1525d35b1c96965e01dfc # Parent 047bf02a886447aeb6889f940fe15bf613380d8e refactoring MeasureTool diff -r 047bf02a8864 -r cb7b6eb39ebb OrthancStone/Sources/Scene2DViewport/AngleMeasureTool.cpp --- 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 memento(new AngleMeasureToolMemento()); + std::unique_ptr 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(mementoBase); + const AngleMeasureTool::Memento& memento = dynamic_cast(mementoBase); center_ = memento.center_; side1End_ = memento.side1End_; side2End_ = memento.side2End_; diff -r 047bf02a8864 -r cb7b6eb39ebb OrthancStone/Sources/Scene2DViewport/AngleMeasureTool.h --- 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 Create(boost::weak_ptr 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_; AngleHighlightArea angleHighlightArea_; }; - - class AngleMeasureToolMemento : public MeasureToolMemento - { - public: - ScenePoint2D side1End_; - ScenePoint2D side2End_; - ScenePoint2D center_; - }; } diff -r 047bf02a8864 -r cb7b6eb39ebb OrthancStone/Sources/Scene2DViewport/EditAngleMeasureTracker.cpp --- 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(command_->GetMementoOriginal()); + const AngleMeasureTool::Memento& memento = + dynamic_cast(command_->GetMementoOriginal()); switch (modifiedZone_) { diff -r 047bf02a8864 -r cb7b6eb39ebb OrthancStone/Sources/Scene2DViewport/EditLineMeasureTracker.cpp --- 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(command_->GetMementoOriginal()); + const LineMeasureTool::Memento& memento = + dynamic_cast(command_->GetMementoOriginal()); switch (modifiedZone_) { diff -r 047bf02a8864 -r cb7b6eb39ebb OrthancStone/Sources/Scene2DViewport/LineMeasureTool.cpp --- 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 memento(new LineMeasureToolMemento()); + std::unique_ptr 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(mementoBase); + const LineMeasureTool::Memento& memento = dynamic_cast(mementoBase); start_ = memento.start_; end_ = memento.end_; RefreshScene(); diff -r 047bf02a8864 -r cb7b6eb39ebb OrthancStone/Sources/Scene2DViewport/LineMeasureTool.h --- 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 Create(boost::weak_ptr 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_; - }; - } diff -r 047bf02a8864 -r cb7b6eb39ebb OrthancStone/Sources/Scene2DViewport/MeasureCommands.cpp --- 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) { diff -r 047bf02a8864 -r cb7b6eb39ebb OrthancStone/Sources/Scene2DViewport/MeasureCommands.h --- 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 GetMeasureTool() = 0; /** This memento is updated by the subclasses upon modifications */ - std::unique_ptr mementoModified_; + std::unique_ptr mementoModified_; /** This memento is the original object state */ - std::unique_ptr mementoOriginal_; + std::unique_ptr mementoOriginal_; protected: - void SetMementoModified(MeasureToolMemento* memento); // takes ownership + void SetMementoModified(MeasureTool::IMemento* memento); // takes ownership public: EditMeasureCommand(boost::shared_ptr 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_; /** This memento is updated by the subclasses upon modifications */ - std::unique_ptr mementoModified_; + std::unique_ptr mementoModified_; /** This memento is the original object state */ - std::unique_ptr mementoOriginal_; + std::unique_ptr mementoOriginal_; protected: - void SetMementoModified(MeasureToolMemento* memento); // takes ownership + void SetMementoModified(MeasureTool::IMemento* memento); // takes ownership public: DeleteMeasureCommand(boost::shared_ptr measureTool, @@ -138,7 +138,7 @@ virtual void Redo() ORTHANC_OVERRIDE; - const MeasureToolMemento& GetMementoOriginal() const; + const MeasureTool::IMemento& GetMementoOriginal() const; }; } diff -r 047bf02a8864 -r cb7b6eb39ebb OrthancStone/Sources/Scene2DViewport/MeasureTool.h --- 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 { + 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(