Mercurial > hg > orthanc-stone
changeset 2366:0e47eebd492c refactoring
reorganization
| author | Sebastien Jodogne <s.jodogne@gmail.com> |
|---|---|
| date | Thu, 08 Oct 2026 17:25:01 +0200 |
| parents | 77f819365bb2 |
| children | 1cd6717413bb |
| files | Applications/Samples/Common/SimpleViewerCore.cpp OrthancStone/Sources/Scene2DViewport/MeasureCommands.cpp OrthancStone/Sources/Scene2DViewport/ViewportController.cpp OrthancStone/Sources/Scene2DViewport/ViewportController.h |
| diffstat | 4 files changed, 54 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/Applications/Samples/Common/SimpleViewerCore.cpp Thu Oct 08 17:01:30 2026 +0200 +++ b/Applications/Samples/Common/SimpleViewerCore.cpp Thu Oct 08 17:25:01 2026 +0200 @@ -264,7 +264,16 @@ if (!tools.empty()) { - return tools[0]->CreateEditionTracker(false, event); + if (core_->annotations_->GetActiveTool() == AnnotationsSceneLayer::Tool_Remove) + { + std::unique_ptr<IViewport::ILock> viewportLock(core_->viewport_->Lock()); + viewportLock->GetController().PushCommand(boost::make_shared<DeleteMeasureCommand>(tools[0], core_->viewport_)); + return NULL; + } + else + { + return tools[0]->CreateEditionTracker(false, event); + } } else { @@ -276,19 +285,15 @@ case AnnotationsSceneLayer::Tool_Length: { - boost::shared_ptr<LineMeasureTool> tool = OrthancStone::LineMeasureTool::Create(core_->viewport_); - tool->Enable(); - tool->Set(p, p); - - { - std::unique_ptr<IViewport::ILock> viewportLock(core_->viewport_->Lock()); - viewportLock->GetController().AddMeasureTool(boost::dynamic_pointer_cast<MeasureTool>(tool)); - } - - return tool->CreateEditionTracker(true, event); + std::unique_ptr<IViewport::ILock> viewportLock(core_->viewport_->Lock()); + return viewportLock->GetController().CreateLineMeasure(event); } case AnnotationsSceneLayer::Tool_Angle: + { + std::unique_ptr<IViewport::ILock> viewportLock(core_->viewport_->Lock()); + return viewportLock->GetController().CreateAngleMeasure(event); + } default: LOG(ERROR) << "This tool is not supported if not using the annotations layer";
--- a/OrthancStone/Sources/Scene2DViewport/MeasureCommands.cpp Thu Oct 08 17:01:30 2026 +0200 +++ b/OrthancStone/Sources/Scene2DViewport/MeasureCommands.cpp Thu Oct 08 17:25:01 2026 +0200 @@ -81,8 +81,8 @@ boost::weak_ptr<IViewport> viewport) : MeasureCommand(viewport), measureTool_(measureTool), - mementoModified_(measureTool->CreateMemento()), - mementoOriginal_(measureTool->CreateMemento()) + mementoModified_(measureTool->CreateMemento()), // TODO Refactoring - Why this? + mementoOriginal_(measureTool->CreateMemento()) // TODO Refactoring - Why this? { if (!measureTool) { @@ -92,7 +92,7 @@ { std::unique_ptr<IViewport::ILock> lock(GetViewportLock()); measureTool_->Disable(); - lock->GetController().RemoveMeasureTool(measureTool_); + lock->GetController().RemoveMeasureTool(measureTool_); // TODO Refactoring - Should probably be moved into ViewportController } }
--- a/OrthancStone/Sources/Scene2DViewport/ViewportController.cpp Thu Oct 08 17:01:30 2026 +0200 +++ b/OrthancStone/Sources/Scene2DViewport/ViewportController.cpp Thu Oct 08 17:25:01 2026 +0200 @@ -145,6 +145,7 @@ measureTools_.push_back(measureTool); } + void ViewportController::RemoveMeasureTool( boost::shared_ptr<MeasureTool> measureTool) { @@ -158,6 +159,36 @@ } + IFlexiblePointerTracker* ViewportController::CreateLineMeasure(const PointerEvent& event) + { + const ScenePoint2D p = event.GetMainPosition().Apply(scene_->GetCanvasToSceneTransform()); + + boost::shared_ptr<LineMeasureTool> tool = LineMeasureTool::Create(viewport_); + tool->Enable(); + tool->Set(p, p); + + AddMeasureTool(boost::dynamic_pointer_cast<MeasureTool>(tool)); + + return tool->CreateEditionTracker(true, event); + } + + + IFlexiblePointerTracker* ViewportController::CreateAngleMeasure(const PointerEvent& event) + { + const ScenePoint2D p = event.GetMainPosition().Apply(scene_->GetCanvasToSceneTransform()); + + boost::shared_ptr<AngleMeasureTool> tool = AngleMeasureTool::Create(viewport_); + tool->Enable(); + tool->SetCenter(p); + tool->SetSide1End(p); + tool->SetSide2End(p); + + AddMeasureTool(boost::dynamic_pointer_cast<MeasureTool>(tool)); + + return tool->CreateEditionTracker(true, event); + } + + double ViewportController::GetHandleSideLengthS() const { return HANDLE_SIDE_LENGTH_CANVAS_COORD * scene_->GetCanvasToSceneTransform().ComputeZoom();
--- a/OrthancStone/Sources/Scene2DViewport/ViewportController.h Thu Oct 08 17:01:30 2026 +0200 +++ b/OrthancStone/Sources/Scene2DViewport/ViewportController.h Thu Oct 08 17:25:01 2026 +0200 @@ -126,6 +126,10 @@ /** Removes a measure tool or throws if it cannot be found */ void RemoveMeasureTool(boost::shared_ptr<MeasureTool> measureTool); + IFlexiblePointerTracker* CreateLineMeasure(const PointerEvent& event); + + IFlexiblePointerTracker* CreateAngleMeasure(const PointerEvent& event); + /** TODO Refactoring - Remove this?
