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)