Mercurial > hg > orthanc-stone
diff Framework/Scene2DViewport/CreateAngleMeasureTracker.cpp @ 700:059e1fd05fd6 refactor-viewport-controller
Introduced the ViewportController that sits between the application and the
Scene2D to handle the trackers and measuring tools. This is a work in progress.
The Scene2D is no longer an observable. Message sending is managed by the
ViewportController.
Move some refs to shared and weak to prevent lifetime issues.
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Sun, 19 May 2019 16:26:17 +0200 |
parents | 8b6adfb62a2f |
children | 28b9e3a54200 |
line wrap: on
line diff
--- a/Framework/Scene2DViewport/CreateAngleMeasureTracker.cpp Fri May 17 09:20:46 2019 +0200 +++ b/Framework/Scene2DViewport/CreateAngleMeasureTracker.cpp Sun May 19 16:26:17 2019 +0200 @@ -27,20 +27,19 @@ { CreateAngleMeasureTracker::CreateAngleMeasureTracker( MessageBroker& broker, - Scene2DWPtr sceneW, + ViewportControllerWPtr controllerW, std::vector<TrackerCommandPtr>& undoStack, MeasureToolList& measureTools, const PointerEvent& e) - : CreateMeasureTracker(sceneW, undoStack, measureTools) + : CreateMeasureTracker(controllerW, undoStack, measureTools) , state_(CreatingSide1) { - Scene2DPtr scene = sceneW.lock(); command_.reset( new CreateAngleMeasureCommand( broker, - sceneW, + controllerW, measureTools, - e.GetMainPosition().Apply(scene->GetCanvasToSceneTransform()))); + e.GetMainPosition().Apply(GetScene()->GetCanvasToSceneTransform()))); } CreateAngleMeasureTracker::~CreateAngleMeasureTracker() @@ -49,8 +48,9 @@ void CreateAngleMeasureTracker::PointerMove(const PointerEvent& event) { - Scene2DPtr scene = scene_.lock(); - if (!active_) + assert(GetScene()); + + if (!alive_) { throw OrthancException(ErrorCode_InternalError, "Internal error: wrong state in CreateAngleMeasureTracker::" @@ -58,7 +58,7 @@ } ScenePoint2D scenePos = event.GetMainPosition().Apply( - scene->GetCanvasToSceneTransform()); + GetScene()->GetCanvasToSceneTransform()); switch (state_) { @@ -113,7 +113,7 @@ break; case CreatingSide2: // we are done - active_ = false; + alive_ = false; break; default: throw OrthancException(ErrorCode_InternalError,