Mercurial > hg > orthanc-stone
comparison Framework/Scene2DViewport/AngleMeasureTool.cpp @ 891:0aff28f15ea2
new abstraction: IViewport
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 10 Jul 2019 18:18:42 +0200 |
parents | c71ef52602a0 |
children | f557b18d287f |
comparison
equal
deleted
inserted
replaced
890:77c96ba899f9 | 891:0aff28f15ea2 |
---|---|
118 } | 118 } |
119 | 119 |
120 AngleMeasureTool::AngleHighlightArea AngleMeasureTool::AngleHitTest(ScenePoint2D p) const | 120 AngleMeasureTool::AngleHighlightArea AngleMeasureTool::AngleHitTest(ScenePoint2D p) const |
121 { | 121 { |
122 const double pixelToScene = | 122 const double pixelToScene = |
123 GetScene()->GetCanvasToSceneTransform().ComputeZoom(); | 123 GetController()->GetScene().GetCanvasToSceneTransform().ComputeZoom(); |
124 const double SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD = pixelToScene * HIT_TEST_MAX_DISTANCE_CANVAS_COORD * pixelToScene * HIT_TEST_MAX_DISTANCE_CANVAS_COORD; | 124 const double SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD = pixelToScene * HIT_TEST_MAX_DISTANCE_CANVAS_COORD * pixelToScene * HIT_TEST_MAX_DISTANCE_CANVAS_COORD; |
125 | 125 |
126 { | 126 { |
127 const double sqDistanceFromSide1End = ScenePoint2D::SquaredDistancePtPt(p, side1End_); | 127 const double sqDistanceFromSide1End = ScenePoint2D::SquaredDistancePtPt(p, side1End_); |
128 if (sqDistanceFromSide1End <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD) | 128 if (sqDistanceFromSide1End <= SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD) |
163 | 163 |
164 | 164 |
165 boost::shared_ptr<IFlexiblePointerTracker> AngleMeasureTool::CreateEditionTracker(const PointerEvent& e) | 165 boost::shared_ptr<IFlexiblePointerTracker> AngleMeasureTool::CreateEditionTracker(const PointerEvent& e) |
166 { | 166 { |
167 ScenePoint2D scenePos = e.GetMainPosition().Apply( | 167 ScenePoint2D scenePos = e.GetMainPosition().Apply( |
168 GetScene()->GetCanvasToSceneTransform()); | 168 GetController()->GetScene().GetCanvasToSceneTransform()); |
169 | 169 |
170 if (!HitTest(scenePos)) | 170 if (!HitTest(scenePos)) |
171 return boost::shared_ptr<IFlexiblePointerTracker>(); | 171 return boost::shared_ptr<IFlexiblePointerTracker>(); |
172 | 172 |
173 /** | 173 /** |
231 // Create the handles | 231 // Create the handles |
232 { | 232 { |
233 { | 233 { |
234 PolylineSceneLayer::Chain chain; | 234 PolylineSceneLayer::Chain chain; |
235 //TODO: take DPI into account | 235 //TODO: take DPI into account |
236 AddSquare(chain, GetScene(), side1End_, | 236 AddSquare(chain, GetController()->GetScene(), side1End_, |
237 GetController()->GetHandleSideLengthS()); | 237 GetController()->GetHandleSideLengthS()); |
238 | 238 |
239 if (angleHighlightArea_ == AngleHighlightArea_Side1End) | 239 if (angleHighlightArea_ == AngleHighlightArea_Side1End) |
240 polylineLayer->AddChain(chain, true, highlightColor); | 240 polylineLayer->AddChain(chain, true, highlightColor); |
241 else | 241 else |
243 | 243 |
244 } | 244 } |
245 { | 245 { |
246 PolylineSceneLayer::Chain chain; | 246 PolylineSceneLayer::Chain chain; |
247 //TODO: take DPI into account | 247 //TODO: take DPI into account |
248 AddSquare(chain, GetScene(), side2End_, | 248 AddSquare(chain, GetController()->GetScene(), side2End_, |
249 GetController()->GetHandleSideLengthS()); | 249 GetController()->GetHandleSideLengthS()); |
250 | 250 |
251 if (angleHighlightArea_ == AngleHighlightArea_Side2End) | 251 if (angleHighlightArea_ == AngleHighlightArea_Side2End) |
252 polylineLayer->AddChain(chain, true, highlightColor); | 252 polylineLayer->AddChain(chain, true, highlightColor); |
253 else | 253 else |
292 | 292 |
293 // http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=00B0&mode=hex | 293 // http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=00B0&mode=hex |
294 sprintf(buf, "%0.02f\xc2\xb0", angleDeg); | 294 sprintf(buf, "%0.02f\xc2\xb0", angleDeg); |
295 | 295 |
296 SetTextLayerOutlineProperties( | 296 SetTextLayerOutlineProperties( |
297 GetScene(), layerHolder_, buf, ScenePoint2D(pointX, pointY)); | 297 GetController()->GetScene(), layerHolder_, buf, ScenePoint2D(pointX, pointY)); |
298 | 298 |
299 #if 0 | 299 #if 0 |
300 // TODO:make it togglable | 300 // TODO:make it togglable |
301 bool enableInfoDisplay = false; | 301 bool enableInfoDisplay = false; |
302 if (enableInfoDisplay) | 302 if (enableInfoDisplay) |