# HG changeset patch # User Sebastien Jodogne # Date 1575483128 -3600 # Node ID 741201eab130d520c62a069c6ab8589a85ac3f04 # Parent 86a8266b88886b3a228c3e911f09f2743ced2bd8 removing pointer to viewport from ViewportController diff -r 86a8266b8888 -r 741201eab130 Framework/Scene2DViewport/ViewportController.cpp --- a/Framework/Scene2DViewport/ViewportController.cpp Wed Dec 04 17:54:10 2019 +0100 +++ b/Framework/Scene2DViewport/ViewportController.cpp Wed Dec 04 19:12:08 2019 +0100 @@ -32,8 +32,10 @@ namespace OrthancStone { - IFlexiblePointerTracker* DefaultViewportInteractor::CreateTracker(boost::shared_ptr controller, - const PointerEvent& event) + IFlexiblePointerTracker* DefaultViewportInteractor::CreateTracker( + boost::shared_ptr controller, + IViewport& viewport, + const PointerEvent& event) { switch (event.GetMouseButton()) { @@ -45,7 +47,7 @@ case MouseButton_Right: { - std::auto_ptr lock(controller->GetViewport().Lock()); + std::auto_ptr lock(viewport.Lock()); if (lock->HasCompositor()) { return new ZoomSceneTracker(controller, event, lock->GetCompositor().GetCanvasWidth()); @@ -62,16 +64,10 @@ } - ViewportController::ViewportController(boost::weak_ptr undoStackW, - boost::shared_ptr viewport) + ViewportController::ViewportController(boost::weak_ptr undoStackW) : undoStackW_(undoStackW) - , viewport_(viewport) , canvasToSceneFactor_(1) { - if (viewport.get() == NULL) - { - throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer); - } } ViewportController::~ViewportController() @@ -185,10 +181,10 @@ BroadcastMessage(SceneTransformChanged(*this)); } - void ViewportController::FitContent() + void ViewportController::FitContent(IViewport& viewport) { { - std::auto_ptr lock(viewport_->Lock()); + std::auto_ptr lock(viewport.Lock()); lock->FitContent(scene_); } @@ -238,7 +234,8 @@ } - void ViewportController::HandleMousePress(IViewportInteractor& interactor, + void ViewportController::HandleMousePress(IViewport& viewport, + IViewportInteractor& interactor, const PointerEvent& event) { if (activeTracker_) @@ -264,7 +261,7 @@ } // No measure tool, create new tracker from the interactor - activeTracker_.reset(interactor.CreateTracker(shared_from_this(), event)); + activeTracker_.reset(interactor.CreateTracker(shared_from_this(), viewport, event)); } } diff -r 86a8266b8888 -r 741201eab130 Framework/Scene2DViewport/ViewportController.h --- a/Framework/Scene2DViewport/ViewportController.h Wed Dec 04 17:54:10 2019 +0100 +++ b/Framework/Scene2DViewport/ViewportController.h Wed Dec 04 19:12:08 2019 +0100 @@ -39,6 +39,7 @@ } virtual IFlexiblePointerTracker* CreateTracker(boost::shared_ptr controller, + IViewport& viewport, const PointerEvent& event) = 0; }; @@ -48,6 +49,7 @@ { public: virtual IFlexiblePointerTracker* CreateTracker(boost::shared_ptr controller, + IViewport& viewport, const PointerEvent& event) ORTHANC_OVERRIDE; }; @@ -104,8 +106,7 @@ ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, \ SceneTransformChanged, ViewportController); - ViewportController(boost::weak_ptr undoStackW, - boost::shared_ptr viewport); + ViewportController(boost::weak_ptr undoStackW); ~ViewportController(); @@ -138,7 +139,7 @@ void SetSceneToCanvasTransform(const AffineTransform2D& transform); /** Forwarded to the underlying scene, and broadcasted to the observers */ - void FitContent(); + void FitContent(IViewport& viewport); /** Adds a new measure tool */ void AddMeasureTool(boost::shared_ptr measureTool); @@ -188,14 +189,10 @@ /** forwarded to the UndoStack */ bool CanRedo() const; - IViewport& GetViewport() const - { - return *viewport_; - } - // Must be expressed in canvas coordinates - void HandleMousePress(IViewportInteractor& interactor, + void HandleMousePress(IViewport& viewport, + IViewportInteractor& interactor, const PointerEvent& event); // Must be expressed in canvas coordinates @@ -218,9 +215,8 @@ double GetCanvasToSceneFactor() const; boost::weak_ptr undoStackW_; // Global stack, possibly shared by all viewports - boost::shared_ptr viewport_; std::vector > measureTools_; - boost::shared_ptr activeTracker_; // TODO - Can't this be a "std::auto_ptr"? + boost::shared_ptr activeTracker_; // TODO - Couldn't this be a "std::auto_ptr"? Scene2D scene_;