comparison OrthancStone/Sources/Scene2D/AnnotationsSceneLayer.cpp @ 1972:9c0adcc8feec

refactoring to simplify OneGesturePointerTracker
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 28 Oct 2022 16:21:28 +0200
parents 7053b8a0aaec
children 5a434f5889f8
comparison
equal deleted inserted replaced
1971:e5b31d55206d 1972:9c0adcc8feec
734 canvasToScene_(canvasToScene), 734 canvasToScene_(canvasToScene),
735 alive_(true) 735 alive_(true)
736 { 736 {
737 } 737 }
738 738
739 virtual void PointerMove(const PointerEvent& event) ORTHANC_OVERRIDE 739 virtual void PointerMove(const PointerEvent& event,
740 const Scene2D& scene) ORTHANC_OVERRIDE
740 { 741 {
741 primitive_.MovePreview(event.GetMainPosition().Apply(canvasToScene_) - sceneClick_); 742 primitive_.MovePreview(event.GetMainPosition().Apply(canvasToScene_) - sceneClick_);
742 that_.BroadcastMessage(AnnotationChangedMessage(that_)); 743 that_.BroadcastMessage(AnnotationChangedMessage(that_));
743 } 744 }
744 745
745 virtual void PointerUp(const PointerEvent& event) ORTHANC_OVERRIDE 746 virtual void PointerUp(const PointerEvent& event,
747 const Scene2D& scene) ORTHANC_OVERRIDE
746 { 748 {
747 primitive_.MoveDone(event.GetMainPosition().Apply(canvasToScene_) - sceneClick_); 749 primitive_.MoveDone(event.GetMainPosition().Apply(canvasToScene_) - sceneClick_);
748 alive_ = false; 750 alive_ = false;
749 that_.BroadcastMessage(AnnotationChangedMessage(that_)); 751 that_.BroadcastMessage(AnnotationChangedMessage(that_));
750 } 752 }
751 753
752 virtual void PointerDown(const PointerEvent& event) ORTHANC_OVERRIDE 754 virtual void PointerDown(const PointerEvent& event,
755 const Scene2D& scene) ORTHANC_OVERRIDE
753 { 756 {
754 } 757 }
755 758
756 virtual bool IsAlive() const ORTHANC_OVERRIDE 759 virtual bool IsAlive() const ORTHANC_OVERRIDE
757 { 760 {
1219 1222
1220 assert(annotation_ != NULL && 1223 assert(annotation_ != NULL &&
1221 handle2_ != NULL); 1224 handle2_ != NULL);
1222 } 1225 }
1223 1226
1224 virtual void PointerMove(const PointerEvent& event) ORTHANC_OVERRIDE 1227 virtual void PointerMove(const PointerEvent& event,
1228 const Scene2D& scene) ORTHANC_OVERRIDE
1225 { 1229 {
1226 if (annotation_ != NULL) 1230 if (annotation_ != NULL)
1227 { 1231 {
1228 assert(handle2_ != NULL); 1232 assert(handle2_ != NULL);
1229 handle2_->SetCenter(event.GetMainPosition().Apply(canvasToScene_)); 1233 handle2_->SetCenter(event.GetMainPosition().Apply(canvasToScene_));
1231 1235
1232 that_.BroadcastMessage(AnnotationChangedMessage(that_)); 1236 that_.BroadcastMessage(AnnotationChangedMessage(that_));
1233 } 1237 }
1234 } 1238 }
1235 1239
1236 virtual void PointerUp(const PointerEvent& event) ORTHANC_OVERRIDE 1240 virtual void PointerUp(const PointerEvent& event,
1241 const Scene2D& scene) ORTHANC_OVERRIDE
1237 { 1242 {
1238 annotation_ = NULL; // IsAlive() becomes false 1243 annotation_ = NULL; // IsAlive() becomes false
1239 1244
1240 that_.BroadcastMessage(AnnotationAddedMessage(that_)); 1245 that_.BroadcastMessage(AnnotationAddedMessage(that_));
1241 } 1246 }
1242 1247
1243 virtual void PointerDown(const PointerEvent& event) ORTHANC_OVERRIDE 1248 virtual void PointerDown(const PointerEvent& event,
1249 const Scene2D& scene) ORTHANC_OVERRIDE
1244 { 1250 {
1245 } 1251 }
1246 1252
1247 virtual bool IsAlive() const ORTHANC_OVERRIDE 1253 virtual bool IsAlive() const ORTHANC_OVERRIDE
1248 { 1254 {
1279 canvasToScene_(canvasToScene) 1285 canvasToScene_(canvasToScene)
1280 { 1286 {
1281 segment_ = new SegmentAnnotation(that, units, false /* no length label */, sceneClick, sceneClick); 1287 segment_ = new SegmentAnnotation(that, units, false /* no length label */, sceneClick, sceneClick);
1282 } 1288 }
1283 1289
1284 virtual void PointerMove(const PointerEvent& event) ORTHANC_OVERRIDE 1290 virtual void PointerMove(const PointerEvent& event,
1291 const Scene2D& scene) ORTHANC_OVERRIDE
1285 { 1292 {
1286 if (segment_ != NULL) 1293 if (segment_ != NULL)
1287 { 1294 {
1288 segment_->GetHandle2().SetCenter(event.GetMainPosition().Apply(canvasToScene_)); 1295 segment_->GetHandle2().SetCenter(event.GetMainPosition().Apply(canvasToScene_));
1289 segment_->SignalMove(segment_->GetHandle2()); 1296 segment_->SignalMove(segment_->GetHandle2());
1296 angle_->SignalMove(angle_->GetEndHandle()); 1303 angle_->SignalMove(angle_->GetEndHandle());
1297 that_.BroadcastMessage(AnnotationChangedMessage(that_)); 1304 that_.BroadcastMessage(AnnotationChangedMessage(that_));
1298 } 1305 }
1299 } 1306 }
1300 1307
1301 virtual void PointerUp(const PointerEvent& event) ORTHANC_OVERRIDE 1308 virtual void PointerUp(const PointerEvent& event,
1309 const Scene2D& scene) ORTHANC_OVERRIDE
1302 { 1310 {
1303 if (segment_ != NULL) 1311 if (segment_ != NULL)
1304 { 1312 {
1305 // End of first step: The first segment is available, now create the angle 1313 // End of first step: The first segment is available, now create the angle
1306 1314
1319 1327
1320 that_.BroadcastMessage(AnnotationAddedMessage(that_)); 1328 that_.BroadcastMessage(AnnotationAddedMessage(that_));
1321 } 1329 }
1322 } 1330 }
1323 1331
1324 virtual void PointerDown(const PointerEvent& event) ORTHANC_OVERRIDE 1332 virtual void PointerDown(const PointerEvent& event,
1333 const Scene2D& scene) ORTHANC_OVERRIDE
1325 { 1334 {
1326 } 1335 }
1327 1336
1328 virtual bool IsAlive() const ORTHANC_OVERRIDE 1337 virtual bool IsAlive() const ORTHANC_OVERRIDE
1329 { 1338 {
1355 public: 1364 public:
1356 RemoveTracker() 1365 RemoveTracker()
1357 { 1366 {
1358 } 1367 }
1359 1368
1360 virtual void PointerMove(const PointerEvent& event) ORTHANC_OVERRIDE 1369 virtual void PointerMove(const PointerEvent& event,
1361 { 1370 const Scene2D& scene) ORTHANC_OVERRIDE
1362 } 1371 {
1363 1372 }
1364 virtual void PointerUp(const PointerEvent& event) ORTHANC_OVERRIDE 1373
1365 { 1374 virtual void PointerUp(const PointerEvent& event,
1366 } 1375 const Scene2D& scene) ORTHANC_OVERRIDE
1367 1376 {
1368 virtual void PointerDown(const PointerEvent& event) ORTHANC_OVERRIDE 1377 }
1378
1379 virtual void PointerDown(const PointerEvent& event,
1380 const Scene2D& scene) ORTHANC_OVERRIDE
1369 { 1381 {
1370 } 1382 }
1371 1383
1372 virtual bool IsAlive() const ORTHANC_OVERRIDE 1384 virtual bool IsAlive() const ORTHANC_OVERRIDE
1373 { 1385 {
1564 1576
1565 1577
1566 IFlexiblePointerTracker* AnnotationsSceneLayer::CreateTracker(const ScenePoint2D& p, 1578 IFlexiblePointerTracker* AnnotationsSceneLayer::CreateTracker(const ScenePoint2D& p,
1567 const Scene2D& scene) 1579 const Scene2D& scene)
1568 { 1580 {
1581 /**
1582 * WARNING: The created trackers must NOT keep a reference to "scene"!
1583 **/
1584
1569 if (activeTool_ == Tool_None) 1585 if (activeTool_ == Tool_None)
1570 { 1586 {
1571 return NULL; 1587 return NULL;
1572 } 1588 }
1573 else 1589 else