comparison Framework/Scene2DViewport/LineMeasureTool.cpp @ 1213:86a8266b8888 broker

moving the scene from IViewport to ViewportController
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 04 Dec 2019 17:54:10 +0100
parents f3bb9a6dd949
children 0ca50d275b9a
comparison
equal deleted inserted replaced
1212:ab06dfdf3b75 1213:86a8266b8888
106 SetLineHighlightArea(lineHighlightArea); 106 SetLineHighlightArea(lineHighlightArea);
107 } 107 }
108 108
109 LineMeasureTool::LineHighlightArea LineMeasureTool::LineHitTest(ScenePoint2D p) const 109 LineMeasureTool::LineHighlightArea LineMeasureTool::LineHitTest(ScenePoint2D p) const
110 { 110 {
111 std::auto_ptr<IViewport::ILock> lock(GetController()->GetViewport().Lock());
112
113 const double pixelToScene = 111 const double pixelToScene =
114 lock->GetScene().GetCanvasToSceneTransform().ComputeZoom(); 112 GetController()->GetScene().GetCanvasToSceneTransform().ComputeZoom();
115 const double SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD = pixelToScene * HIT_TEST_MAX_DISTANCE_CANVAS_COORD * pixelToScene * HIT_TEST_MAX_DISTANCE_CANVAS_COORD; 113 const double SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD = pixelToScene * HIT_TEST_MAX_DISTANCE_CANVAS_COORD * pixelToScene * HIT_TEST_MAX_DISTANCE_CANVAS_COORD;
116 114
117 const double sqDistanceFromStart = ScenePoint2D::SquaredDistancePtPt(p, start_); 115 const double sqDistanceFromStart = ScenePoint2D::SquaredDistancePtPt(p, start_);
118 if (sqDistanceFromStart <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD) 116 if (sqDistanceFromStart <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD)
119 return LineHighlightArea_Start; 117 return LineHighlightArea_Start;
134 return LineHitTest(p) != LineHighlightArea_None; 132 return LineHitTest(p) != LineHighlightArea_None;
135 } 133 }
136 134
137 boost::shared_ptr<IFlexiblePointerTracker> LineMeasureTool::CreateEditionTracker(const PointerEvent& e) 135 boost::shared_ptr<IFlexiblePointerTracker> LineMeasureTool::CreateEditionTracker(const PointerEvent& e)
138 { 136 {
139 std::auto_ptr<IViewport::ILock> lock(GetController()->GetViewport().Lock());
140
141 ScenePoint2D scenePos = e.GetMainPosition().Apply( 137 ScenePoint2D scenePos = e.GetMainPosition().Apply(
142 lock->GetScene().GetCanvasToSceneTransform()); 138 GetController()->GetScene().GetCanvasToSceneTransform());
143 139
144 if (!HitTest(scenePos)) 140 if (!HitTest(scenePos))
145 return boost::shared_ptr<IFlexiblePointerTracker>(); 141 return boost::shared_ptr<IFlexiblePointerTracker>();
146 142
147 /** 143 /**
178 { 174 {
179 if (IsSceneAlive()) 175 if (IsSceneAlive())
180 { 176 {
181 if (IsEnabled()) 177 if (IsEnabled())
182 { 178 {
183 std::auto_ptr<IViewport::ILock> lock(GetController()->GetViewport().Lock());
184
185 layerHolder_->CreateLayersIfNeeded(); 179 layerHolder_->CreateLayersIfNeeded();
186 180
187 { 181 {
188 // Fill the polyline layer with the measurement line 182 // Fill the polyline layer with the measurement line
189 183
214 { 208 {
215 { 209 {
216 PolylineSceneLayer::Chain chain; 210 PolylineSceneLayer::Chain chain;
217 211
218 //TODO: take DPI into account 212 //TODO: take DPI into account
219 AddSquare(chain, lock->GetScene(), start_, 213 AddSquare(chain, GetController()->GetScene(), start_,
220 GetController()->GetHandleSideLengthS()); 214 GetController()->GetHandleSideLengthS());
221 215
222 if (lineHighlightArea_ == LineHighlightArea_Start) 216 if (lineHighlightArea_ == LineHighlightArea_Start)
223 polylineLayer->AddChain(chain, true, highlightColor); 217 polylineLayer->AddChain(chain, true, highlightColor);
224 else 218 else
227 221
228 { 222 {
229 PolylineSceneLayer::Chain chain; 223 PolylineSceneLayer::Chain chain;
230 224
231 //TODO: take DPI into account 225 //TODO: take DPI into account
232 AddSquare(chain, lock->GetScene(), end_, 226 AddSquare(chain, GetController()->GetScene(), end_,
233 GetController()->GetHandleSideLengthS()); 227 GetController()->GetHandleSideLengthS());
234 228
235 if (lineHighlightArea_ == LineHighlightArea_End) 229 if (lineHighlightArea_ == LineHighlightArea_End)
236 polylineLayer->AddChain(chain, true, highlightColor); 230 polylineLayer->AddChain(chain, true, highlightColor);
237 else 231 else
254 double midX = 0.5 * (end_.GetX() + start_.GetX()); 248 double midX = 0.5 * (end_.GetX() + start_.GetX());
255 double midY = 0.5 * (end_.GetY() + start_.GetY()); 249 double midY = 0.5 * (end_.GetY() + start_.GetY());
256 250
257 #if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1 251 #if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1
258 SetTextLayerOutlineProperties( 252 SetTextLayerOutlineProperties(
259 lock->GetScene(), layerHolder_, buf, ScenePoint2D(midX, midY), 0); 253 GetController()->GetScene(), layerHolder_, buf, ScenePoint2D(midX, midY), 0);
260 #else 254 #else
261 SetTextLayerProperties( 255 SetTextLayerProperties(
262 lock->GetScene(), layerHolder_, buf, ScenePoint2D(midX, midY), 0); 256 GetController()->GetScene(), layerHolder_, buf, ScenePoint2D(midX, midY), 0);
263 #endif 257 #endif
264 } 258 }
265 } 259 }
266 else 260 else
267 { 261 {