Mercurial > hg > orthanc-stone
comparison Framework/Scene2DViewport/CreateLineMeasureCommand.cpp @ 1305:a5326ce4f24b broker
Trackers and measuring tools now use the viewport instead of ViewportController, so that proper locks can be used
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Wed, 04 Mar 2020 09:45:38 +0100 |
parents | 7ec8fea061b9 |
children | 1f877e0846fe |
comparison
equal
deleted
inserted
replaced
1304:b7fa67bf87fa | 1305:a5326ce4f24b |
---|---|
24 #include <boost/ref.hpp> | 24 #include <boost/ref.hpp> |
25 | 25 |
26 namespace OrthancStone | 26 namespace OrthancStone |
27 { | 27 { |
28 CreateLineMeasureCommand::CreateLineMeasureCommand( | 28 CreateLineMeasureCommand::CreateLineMeasureCommand( |
29 boost::weak_ptr<ViewportController> controllerW, | 29 IViewport& viewport, |
30 ScenePoint2D point) | 30 ScenePoint2D point) |
31 : CreateMeasureCommand(controllerW) | 31 : CreateMeasureCommand(viewport) |
32 , measureTool_( | 32 , measureTool_( |
33 boost::make_shared<LineMeasureTool>(controllerW)) | 33 boost::make_shared<LineMeasureTool>(viewport)) |
34 { | 34 { |
35 GetController()->AddMeasureTool(measureTool_); | 35 |
36 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); | |
37 ViewportController& controller = lock->GetController(); | |
38 controller.AddMeasureTool(measureTool_); | |
36 measureTool_->Set(point, point); | 39 measureTool_->Set(point, point); |
40 lock->Invalidate(); | |
37 } | 41 } |
38 | 42 |
39 void CreateLineMeasureCommand::SetEnd(ScenePoint2D scenePos) | 43 void CreateLineMeasureCommand::SetEnd(ScenePoint2D scenePos) |
40 { | 44 { |
41 measureTool_->SetEnd(scenePos); | 45 measureTool_->SetEnd(scenePos); |