Mercurial > hg > orthanc-stone
diff 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 |
line wrap: on
line diff
--- a/OrthancStone/Sources/Scene2D/AnnotationsSceneLayer.cpp Fri Oct 28 13:38:19 2022 +0200 +++ b/OrthancStone/Sources/Scene2D/AnnotationsSceneLayer.cpp Fri Oct 28 16:21:28 2022 +0200 @@ -736,20 +736,23 @@ { } - virtual void PointerMove(const PointerEvent& event) ORTHANC_OVERRIDE + virtual void PointerMove(const PointerEvent& event, + const Scene2D& scene) ORTHANC_OVERRIDE { primitive_.MovePreview(event.GetMainPosition().Apply(canvasToScene_) - sceneClick_); that_.BroadcastMessage(AnnotationChangedMessage(that_)); } - virtual void PointerUp(const PointerEvent& event) ORTHANC_OVERRIDE + virtual void PointerUp(const PointerEvent& event, + const Scene2D& scene) ORTHANC_OVERRIDE { primitive_.MoveDone(event.GetMainPosition().Apply(canvasToScene_) - sceneClick_); alive_ = false; that_.BroadcastMessage(AnnotationChangedMessage(that_)); } - virtual void PointerDown(const PointerEvent& event) ORTHANC_OVERRIDE + virtual void PointerDown(const PointerEvent& event, + const Scene2D& scene) ORTHANC_OVERRIDE { } @@ -1221,7 +1224,8 @@ handle2_ != NULL); } - virtual void PointerMove(const PointerEvent& event) ORTHANC_OVERRIDE + virtual void PointerMove(const PointerEvent& event, + const Scene2D& scene) ORTHANC_OVERRIDE { if (annotation_ != NULL) { @@ -1233,14 +1237,16 @@ } } - virtual void PointerUp(const PointerEvent& event) ORTHANC_OVERRIDE + virtual void PointerUp(const PointerEvent& event, + const Scene2D& scene) ORTHANC_OVERRIDE { annotation_ = NULL; // IsAlive() becomes false that_.BroadcastMessage(AnnotationAddedMessage(that_)); } - virtual void PointerDown(const PointerEvent& event) ORTHANC_OVERRIDE + virtual void PointerDown(const PointerEvent& event, + const Scene2D& scene) ORTHANC_OVERRIDE { } @@ -1281,7 +1287,8 @@ segment_ = new SegmentAnnotation(that, units, false /* no length label */, sceneClick, sceneClick); } - virtual void PointerMove(const PointerEvent& event) ORTHANC_OVERRIDE + virtual void PointerMove(const PointerEvent& event, + const Scene2D& scene) ORTHANC_OVERRIDE { if (segment_ != NULL) { @@ -1298,7 +1305,8 @@ } } - virtual void PointerUp(const PointerEvent& event) ORTHANC_OVERRIDE + virtual void PointerUp(const PointerEvent& event, + const Scene2D& scene) ORTHANC_OVERRIDE { if (segment_ != NULL) { @@ -1321,7 +1329,8 @@ } } - virtual void PointerDown(const PointerEvent& event) ORTHANC_OVERRIDE + virtual void PointerDown(const PointerEvent& event, + const Scene2D& scene) ORTHANC_OVERRIDE { } @@ -1357,15 +1366,18 @@ { } - virtual void PointerMove(const PointerEvent& event) ORTHANC_OVERRIDE + virtual void PointerMove(const PointerEvent& event, + const Scene2D& scene) ORTHANC_OVERRIDE { } - virtual void PointerUp(const PointerEvent& event) ORTHANC_OVERRIDE + virtual void PointerUp(const PointerEvent& event, + const Scene2D& scene) ORTHANC_OVERRIDE { } - virtual void PointerDown(const PointerEvent& event) ORTHANC_OVERRIDE + virtual void PointerDown(const PointerEvent& event, + const Scene2D& scene) ORTHANC_OVERRIDE { } @@ -1566,6 +1578,10 @@ IFlexiblePointerTracker* AnnotationsSceneLayer::CreateTracker(const ScenePoint2D& p, const Scene2D& scene) { + /** + * WARNING: The created trackers must NOT keep a reference to "scene"! + **/ + if (activeTool_ == Tool_None) { return NULL;