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 }