comparison Framework/Scene2DViewport/ViewportController.cpp @ 1210:644baa70373d broker

removing interactor from the ViewportController members
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 04 Dec 2019 16:13:10 +0100
parents 00e6bff9ea39
children 86a8266b8888
comparison
equal deleted inserted replaced
1208:00e6bff9ea39 1210:644baa70373d
70 { 70 {
71 if (viewport.get() == NULL) 71 if (viewport.get() == NULL)
72 { 72 {
73 throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer); 73 throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
74 } 74 }
75
76 interactor_.reset(new DefaultViewportInteractor);
77 } 75 }
78 76
79 ViewportController::~ViewportController() 77 ViewportController::~ViewportController()
80 { 78 {
81 }
82
83 void ViewportController::SetInteractor(boost::shared_ptr<IViewportInteractor> interactor)
84 {
85 activeTracker_.reset();
86 interactor_ = interactor;
87 } 79 }
88 80
89 void ViewportController::PushCommand(boost::shared_ptr<MeasureCommand> command) 81 void ViewportController::PushCommand(boost::shared_ptr<MeasureCommand> command)
90 { 82 {
91 boost::shared_ptr<UndoStack> undoStack = undoStackW_.lock(); 83 boost::shared_ptr<UndoStack> undoStack = undoStackW_.lock();
249 { 241 {
250 return TEXT_CENTER_DISTANCE_CANVAS_COORD * GetCanvasToSceneFactor(); 242 return TEXT_CENTER_DISTANCE_CANVAS_COORD * GetCanvasToSceneFactor();
251 } 243 }
252 244
253 245
254 void ViewportController::HandleMousePress(const PointerEvent& event) 246 void ViewportController::HandleMousePress(IViewportInteractor& interactor,
247 const PointerEvent& event)
255 { 248 {
256 if (activeTracker_) 249 if (activeTracker_)
257 { 250 {
258 // We are dealing with a multi-stage tracker (that is made of several interactions) 251 // We are dealing with a multi-stage tracker (that is made of several interactions)
259 activeTracker_->PointerDown(event); 252 activeTracker_->PointerDown(event);
274 return; 267 return;
275 } 268 }
276 } 269 }
277 270
278 // No measure tool, create new tracker from the interactor 271 // No measure tool, create new tracker from the interactor
279 if (interactor_) 272 activeTracker_.reset(interactor.CreateTracker(shared_from_this(), event));
280 { 273 }
281 activeTracker_.reset(interactor_->CreateTracker(shared_from_this(), event)); 274 }
282 } 275
283 else 276 void ViewportController::HandleMouseMove(const PointerEvent& event)
277 {
278 if (activeTracker_)
279 {
280 activeTracker_->PointerMove(event);
281 }
282 }
283
284 void ViewportController::HandleMouseRelease(const PointerEvent& event)
285 {
286 if (activeTracker_)
287 {
288 activeTracker_->PointerUp(event);
289
290 if (!activeTracker_->IsAlive())
284 { 291 {
285 activeTracker_.reset(); 292 activeTracker_.reset();
286 } 293 }
287 } 294 }
288 } 295 }
289
290 void ViewportController::HandleMouseMove(const PointerEvent& event)
291 {
292 if (activeTracker_)
293 {
294 activeTracker_->PointerMove(event);
295 }
296 }
297
298 void ViewportController::HandleMouseRelease(const PointerEvent& event)
299 {
300 if (activeTracker_)
301 {
302 activeTracker_->PointerUp(event);
303
304 if (!activeTracker_->IsAlive())
305 {
306 activeTracker_.reset();
307 }
308 }
309 }
310 } 296 }