Mercurial > hg > orthanc-stone
changeset 2339:c92f0758001e refactoring
handle zoom change in annotations
| author | Sebastien Jodogne <s.jodogne@gmail.com> |
|---|---|
| date | Tue, 06 Oct 2026 09:37:43 +0200 |
| parents | 1bbd7011c2e2 |
| children | ed5785f0f7c0 |
| files | Applications/Samples/Common/SimpleViewerCore.cpp Applications/Samples/Common/SimpleViewerCore.h |
| diffstat | 2 files changed, 18 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/Applications/Samples/Common/SimpleViewerCore.cpp Tue Oct 06 09:11:34 2026 +0200 +++ b/Applications/Samples/Common/SimpleViewerCore.cpp Tue Oct 06 09:37:43 2026 +0200 @@ -109,6 +109,15 @@ } + void SimpleViewerCore::Handle(const ViewportController::SceneTransformChanged& message) + { + // This is necessary to update the size of handles in the annotations layer while zoom level changes + std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock()); + annotations_->Render(lock->GetController().GetScene()); + lock->Invalidate(); + } + + void SimpleViewerCore::CreateComponents(const boost::shared_ptr<StoneApplication::Context>& context, const boost::shared_ptr<IViewport>& viewport) { @@ -137,6 +146,8 @@ { std::unique_ptr<IViewport::ILock> viewportLock(viewport->Lock()); viewportLock->GetController().SetUndoStack(boost::make_shared<UndoStack>()); + + Register<OrthancStone::ViewportController::SceneTransformChanged>(viewportLock->GetController(), &SimpleViewerCore::Handle); } } @@ -154,7 +165,7 @@ default_.SetWindowingLayer(0); } - virtual IFlexiblePointerTracker* CreateTracker(boost::weak_ptr<IViewport> viewport, + virtual IFlexiblePointerTracker* CreateTracker(boost::weak_ptr<IViewport> viewport, // TODO Refactoring - Should be std::shared_ptr const PointerEvent& event, unsigned int viewportWidth, unsigned int viewportHeight) ORTHANC_OVERRIDE @@ -179,7 +190,7 @@ return true; } - virtual void HandleMouseHover(IViewport& viewport, + virtual void HandleMouseHover(IViewport& viewport, // TODO Refactoring - Should be a IViewport::ILock const PointerEvent& event) ORTHANC_OVERRIDE { std::unique_ptr<IViewport::ILock> viewportLock(viewport.Lock());
--- a/Applications/Samples/Common/SimpleViewerCore.h Tue Oct 06 09:11:34 2026 +0200 +++ b/Applications/Samples/Common/SimpleViewerCore.h Tue Oct 06 09:37:43 2026 +0200 @@ -33,9 +33,10 @@ { class SimpleViewerCore : public ISingleViewportApplicationCore, - public boost::enable_shared_from_this<SimpleViewerCore>, + //public boost::enable_shared_from_this<SimpleViewerCore>, // TODO Refactoring - Revert public New::TypedObserver<FrameDecodedMessage>, - public New::TypedObserver<DicomResourcesLoadedMessage> + public New::TypedObserver<DicomResourcesLoadedMessage>, + public OrthancStone::ObserverBase<SimpleViewerCore> // TODO Refactoring - Remove { protected: boost::shared_ptr<StoneApplication::Context> context_; @@ -55,6 +56,8 @@ virtual void Handle(const New::IObservable& observable, const DicomResourcesLoadedMessage& message) ORTHANC_OVERRIDE; + void Handle(const ViewportController::SceneTransformChanged& message); + protected: virtual void CreateComponents(const boost::shared_ptr<StoneApplication::Context>& context, const boost::shared_ptr<IViewport>& viewport) ORTHANC_OVERRIDE;
