Mercurial > hg > orthanc-stone
comparison Framework/Scene2DViewport/ViewportController.h @ 700:059e1fd05fd6 refactor-viewport-controller
Introduced the ViewportController that sits between the application and the
Scene2D to handle the trackers and measuring tools. This is a work in progress.
The Scene2D is no longer an observable. Message sending is managed by the
ViewportController.
Move some refs to shared and weak to prevent lifetime issues.
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Sun, 19 May 2019 16:26:17 +0200 |
parents | 8b6adfb62a2f |
children | af0aa0c149fa |
comparison
equal
deleted
inserted
replaced
699:5c551f078c18 | 700:059e1fd05fd6 |
---|---|
22 | 22 |
23 #include "PointerTypes.h" | 23 #include "PointerTypes.h" |
24 | 24 |
25 #include <Framework/Scene2D/Scene2D.h> | 25 #include <Framework/Scene2D/Scene2D.h> |
26 #include <Framework/Scene2D/PointerEvent.h> | 26 #include <Framework/Scene2D/PointerEvent.h> |
27 #include <Framework/Scene2DViewport/MeasureTools.h> | |
28 #include <Framework/Scene2DViewport/IFlexiblePointerTracker.h> | 27 #include <Framework/Scene2DViewport/IFlexiblePointerTracker.h> |
29 | 28 |
30 namespace OrthancStone | 29 namespace OrthancStone |
31 { | 30 { |
32 /** | 31 /** |
39 The active tracker is also stored in the viewport controller. | 38 The active tracker is also stored in the viewport controller. |
40 | 39 |
41 Each canvas or other GUI area where we want to display a 2D image, either | 40 Each canvas or other GUI area where we want to display a 2D image, either |
42 directly or through slicing must be assigned a ViewportController. | 41 directly or through slicing must be assigned a ViewportController. |
43 */ | 42 */ |
44 class ViewportController : public boost::noncopyable | 43 class ViewportController : public IObservable |
45 { | 44 { |
46 public: | 45 public: |
46 ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, \ | |
47 SceneTransformChanged, ViewportController); | |
48 | |
47 ViewportController(MessageBroker& broker); | 49 ViewportController(MessageBroker& broker); |
48 | 50 |
49 Scene2DPtr GetScene(); | 51 Scene2DPtr GetScene(); |
50 | 52 |
51 /** | 53 /** |
65 With this method, the object takes ownership of the supplied tracker and | 67 With this method, the object takes ownership of the supplied tracker and |
66 updates it according to user interaction | 68 updates it according to user interaction |
67 */ | 69 */ |
68 void SetActiveTracker(FlexiblePointerTrackerPtr tracker); | 70 void SetActiveTracker(FlexiblePointerTrackerPtr tracker); |
69 | 71 |
72 /** Forwarded to the underlying scene */ | |
73 const AffineTransform2D& GetCanvasToSceneTransform() const; | |
74 | |
75 /** Forwarded to the underlying scene */ | |
76 const AffineTransform2D& GetSceneToCanvasTransform() const; | |
77 | |
78 /** Forwarded to the underlying scene, and broadcasted to the observers */ | |
79 void SetSceneToCanvasTransform(const AffineTransform2D& transform); | |
80 | |
81 | |
70 private: | 82 private: |
71 MessageBroker& broker_; | 83 Scene2DPtr scene_; |
72 Scene2DWPtr scene_; | |
73 FlexiblePointerTrackerPtr tracker_; | 84 FlexiblePointerTrackerPtr tracker_; |
74 }; | 85 }; |
75 } | 86 } |