comparison Samples/Sdl/TrackerSampleApp.cpp @ 871:4bc8d9609447

Added support for measuring tool edition in TrackerSampleApp
author Benjamin Golinvaux <bgo@osimis.io>
date Tue, 25 Jun 2019 18:17:33 +0200
parents e3c56d4f863f
children 31319fe867b9 77c96ba899f9
comparison
equal deleted inserted replaced
870:d337f2704f79 871:4bc8d9609447
245 e.AddPosition(compositor_->GetPixelCenterCoordinates( 245 e.AddPosition(compositor_->GetPixelCenterCoordinates(
246 event.button.x, event.button.y)); 246 event.button.x, event.button.y));
247 247
248 DisplayFloatingCtrlInfoText(e); 248 DisplayFloatingCtrlInfoText(e);
249 } 249 }
250 else 250 else if (activeTracker_.get() != NULL)
251 { 251 {
252 HideInfoText(); 252 HideInfoText();
253 //LOG(TRACE) << "(event.type == SDL_MOUSEMOTION)"; 253 //LOG(TRACE) << "(event.type == SDL_MOUSEMOTION)";
254 if (activeTracker_.get() != NULL) 254 if (activeTracker_.get() != NULL)
255 { 255 {
264 e.GetMainPosition().GetX() << " " << e.GetMainPosition().GetY(); 264 e.GetMainPosition().GetX() << " " << e.GetMainPosition().GetY();
265 265
266 activeTracker_->PointerMove(e); 266 activeTracker_->PointerMove(e);
267 if (!activeTracker_->IsAlive()) 267 if (!activeTracker_->IsAlive())
268 activeTracker_.reset(); 268 activeTracker_.reset();
269 }
270 }
271 else
272 {
273 HideInfoText();
274
275 PointerEvent e;
276 e.AddPosition(compositor_->GetPixelCenterCoordinates(event.button.x, event.button.y));
277
278 ScenePoint2D scenePos = e.GetMainPosition().Apply(
279 controller_->GetScene()->GetCanvasToSceneTransform());
280 //auto measureTools = GetController()->HitTestMeasureTools(scenePos);
281 //LOG(TRACE) << "# of hit tests: " << measureTools.size();
282
283 // this returns the collection of measuring tools where hit test is true
284 std::vector<boost::shared_ptr<MeasureTool> > measureTools = controller_->HitTestMeasureTools(scenePos);
285
286 // let's refresh the measuring tools highlighted state
287 // first let's tag them as "unhighlighted"
288 controller_->ResetMeasuringToolsHighlight();
289
290 // then immediately take the first one and ask it to highlight the
291 // measuring tool UI part that is hot
292 if (measureTools.size() > 0)
293 {
294 measureTools[0]->Highlight(scenePos);
269 } 295 }
270 } 296 }
271 } 297 }
272 else if (event.type == SDL_MOUSEBUTTONUP) 298 else if (event.type == SDL_MOUSEBUTTONUP)
273 { 299 {
594 620
595 621
596 boost::shared_ptr<IFlexiblePointerTracker> TrackerSampleApp::TrackerHitTest(const PointerEvent & e) 622 boost::shared_ptr<IFlexiblePointerTracker> TrackerSampleApp::TrackerHitTest(const PointerEvent & e)
597 { 623 {
598 // std::vector<boost::shared_ptr<MeasureTool>> measureTools_; 624 // std::vector<boost::shared_ptr<MeasureTool>> measureTools_;
625 ScenePoint2D scenePos = e.GetMainPosition().Apply(
626 controller_->GetScene()->GetCanvasToSceneTransform());
627
628 std::vector<boost::shared_ptr<MeasureTool> > measureTools = controller_->HitTestMeasureTools(scenePos);
629
630 if (measureTools.size() > 0)
631 {
632 return measureTools[0]->CreateEditionTracker(e);
633 }
599 return boost::shared_ptr<IFlexiblePointerTracker>(); 634 return boost::shared_ptr<IFlexiblePointerTracker>();
600 } 635 }
601 636
602 static void GLAPIENTRY 637 static void GLAPIENTRY
603 OpenGLMessageCallback(GLenum source, 638 OpenGLMessageCallback(GLenum source,