Mercurial > hg > orthanc-stone
changeset 2350:ee74c9c97cbe refactoring
simplified IViewportInteractor::CreateTracker()
| author | Sebastien Jodogne <s.jodogne@gmail.com> |
|---|---|
| date | Tue, 06 Oct 2026 18:32:31 +0200 |
| parents | 1f313d1113d7 |
| children | a7a9457a07c6 |
| files | Applications/Samples/Common/SimpleViewerCore.cpp Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp OrthancStone/Sources/Scene2DViewport/ViewportController.cpp OrthancStone/Sources/Viewport/DefaultViewportInteractor.cpp OrthancStone/Sources/Viewport/DefaultViewportInteractor.h OrthancStone/Sources/Viewport/IViewportInteractor.h |
| diffstat | 6 files changed, 22 insertions(+), 38 deletions(-) [+] |
line wrap: on
line diff
--- a/Applications/Samples/Common/SimpleViewerCore.cpp Tue Oct 06 18:21:55 2026 +0200 +++ b/Applications/Samples/Common/SimpleViewerCore.cpp Tue Oct 06 18:32:31 2026 +0200 @@ -165,7 +165,7 @@ default_.SetWindowingLayer(0); } - virtual IFlexiblePointerTracker* CreateTracker(const boost::shared_ptr<IViewport>& viewport, + virtual IFlexiblePointerTracker* CreateTracker(Scene2D& scene, const PointerEvent& event, unsigned int viewportWidth, unsigned int viewportHeight) ORTHANC_OVERRIDE @@ -174,15 +174,12 @@ if (event.GetMouseButton() == MouseButton_Left) { - boost::shared_ptr<IViewport> lock(viewport); - if (lock) - { - std::unique_ptr<IViewport::ILock> viewportLock(lock->Lock()); - return annotations_->CreateTracker(event.GetMainPosition(), viewportLock->GetController().GetScene()); - } + return annotations_->CreateTracker(event.GetMainPosition(), scene); } - - return default_.CreateTracker(viewport, event, viewportWidth, viewportHeight); + else + { + return default_.CreateTracker(scene, event, viewportWidth, viewportHeight); + } } virtual bool HasMouseHover() const ORTHANC_OVERRIDE
--- a/Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp Tue Oct 06 18:21:55 2026 +0200 +++ b/Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp Tue Oct 06 18:32:31 2026 +0200 @@ -3959,23 +3959,20 @@ SetGrayscaleWindowingObserverFactory(new GrayscaleFactory(viewer)); } - virtual OrthancStone::IFlexiblePointerTracker* CreateTracker( - const boost::shared_ptr<OrthancStone::IViewport>& viewport, - const OrthancStone::PointerEvent& event, - unsigned int viewportWidth, - unsigned int viewportHeight) ORTHANC_OVERRIDE + virtual OrthancStone::IFlexiblePointerTracker* CreateTracker(OrthancStone::Scene2D& scene, + const OrthancStone::PointerEvent& event, + unsigned int viewportWidth, + unsigned int viewportHeight) ORTHANC_OVERRIDE { if (IsAction(event, WebViewerAction_Crosshair)) { OrthancStone::CoordinateSystem3D plane; if (viewer_.GetCurrentPlane(plane)) { - std::unique_ptr<OrthancStone::IViewport::ILock> viewportLock(viewport->Lock()); - const OrthancStone::ScenePoint2D p = event.GetMainPosition(); double x = p.GetX(); double y = p.GetY(); - viewportLock->GetController().GetScene().GetCanvasToSceneTransform().Apply(x, y); + scene.GetCanvasToSceneTransform().Apply(x, y); OrthancStone::Vector click = plane.MapSliceToWorldCoordinates(x, y); if (viewer_.observer_.get() != NULL) @@ -4031,10 +4028,8 @@ } { - std::unique_ptr<OrthancStone::IViewport::ILock> viewportLock(viewport->Lock()); - std::unique_ptr<OrthancStone::IFlexiblePointerTracker> t; - t.reset(viewer_.stoneAnnotations_->CreateTracker(event.GetMainPosition(), viewportLock->GetController().GetScene())); + t.reset(viewer_.stoneAnnotations_->CreateTracker(event.GetMainPosition(), scene)); if (t.get() != NULL) { @@ -4043,7 +4038,7 @@ } } - return DefaultViewportInteractor::CreateTracker(viewport, event, viewportWidth, viewportHeight); + return DefaultViewportInteractor::CreateTracker(scene, event, viewportWidth, viewportHeight); } }
--- a/OrthancStone/Sources/Scene2DViewport/ViewportController.cpp Tue Oct 06 18:21:55 2026 +0200 +++ b/OrthancStone/Sources/Scene2DViewport/ViewportController.cpp Tue Oct 06 18:32:31 2026 +0200 @@ -210,10 +210,11 @@ } // No measure tool, create new tracker from the interactor - boost::shared_ptr<IViewport> lock(viewport_); - if (lock) + boost::shared_ptr<IViewport> sharedViewport(viewport_); + if (sharedViewport) { - activeTracker_.reset(interactor.CreateTracker(lock, event, viewportWidth, viewportHeight)); + std::unique_ptr<IViewport::ILock> lock(sharedViewport->Lock()); + activeTracker_.reset(interactor.CreateTracker(lock->GetController().GetScene(), event, viewportWidth, viewportHeight)); } else {
--- a/OrthancStone/Sources/Viewport/DefaultViewportInteractor.cpp Tue Oct 06 18:21:55 2026 +0200 +++ b/OrthancStone/Sources/Viewport/DefaultViewportInteractor.cpp Tue Oct 06 18:32:31 2026 +0200 @@ -87,16 +87,11 @@ IFlexiblePointerTracker* DefaultViewportInteractor::CreateTracker( - const boost::shared_ptr<IViewport>& viewport, + Scene2D& scene, const PointerEvent& event, unsigned int viewportWidth, unsigned int viewportHeight) { - if (!viewport) - { - throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer); - } - MouseAction action; switch (event.GetMouseButton()) @@ -117,8 +112,7 @@ if (event.GetPositionsCount() == 1 || event.GetPositionsCount() == 2) { - std::unique_ptr<IViewport::ILock> lock(viewport->Lock()); - return new PinchZoomTracker(lock->GetController().GetScene(), event); + return new PinchZoomTracker(scene, event); } else { @@ -129,10 +123,7 @@ return NULL; } - { - std::unique_ptr<IViewport::ILock> lock(viewport->Lock()); - return CreateTrackerInternal(lock->GetController().GetScene(), action, event, viewportWidth, viewportHeight); - } + return CreateTrackerInternal(scene, action, event, viewportWidth, viewportHeight); }
--- a/OrthancStone/Sources/Viewport/DefaultViewportInteractor.h Tue Oct 06 18:21:55 2026 +0200 +++ b/OrthancStone/Sources/Viewport/DefaultViewportInteractor.h Tue Oct 06 18:32:31 2026 +0200 @@ -95,7 +95,7 @@ rightButtonAction_ = action; } - virtual IFlexiblePointerTracker* CreateTracker(const boost::shared_ptr<IViewport>& viewport, + virtual IFlexiblePointerTracker* CreateTracker(Scene2D& scene, const PointerEvent& event, unsigned int viewportWidth, unsigned int viewportHeight) ORTHANC_OVERRIDE;
--- a/OrthancStone/Sources/Viewport/IViewportInteractor.h Tue Oct 06 18:21:55 2026 +0200 +++ b/OrthancStone/Sources/Viewport/IViewportInteractor.h Tue Oct 06 18:32:31 2026 +0200 @@ -34,7 +34,7 @@ { } - virtual IFlexiblePointerTracker* CreateTracker(const boost::shared_ptr<IViewport>& viewport, // TODO Refactoring - Why not reference here? + virtual IFlexiblePointerTracker* CreateTracker(Scene2D& scene, const PointerEvent& event, unsigned int viewportWidth, unsigned int viewportHeight) = 0;
