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);