Mercurial > hg > orthanc-stone
diff 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 |
line wrap: on
line diff
--- a/Framework/Scene2DViewport/ViewportController.h Fri May 17 09:20:46 2019 +0200 +++ b/Framework/Scene2DViewport/ViewportController.h Sun May 19 16:26:17 2019 +0200 @@ -24,7 +24,6 @@ #include <Framework/Scene2D/Scene2D.h> #include <Framework/Scene2D/PointerEvent.h> -#include <Framework/Scene2DViewport/MeasureTools.h> #include <Framework/Scene2DViewport/IFlexiblePointerTracker.h> namespace OrthancStone @@ -41,9 +40,12 @@ Each canvas or other GUI area where we want to display a 2D image, either directly or through slicing must be assigned a ViewportController. */ - class ViewportController : public boost::noncopyable + class ViewportController : public IObservable { public: + ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, \ + SceneTransformChanged, ViewportController); + ViewportController(MessageBroker& broker); Scene2DPtr GetScene(); @@ -67,9 +69,18 @@ */ void SetActiveTracker(FlexiblePointerTrackerPtr tracker); + /** Forwarded to the underlying scene */ + const AffineTransform2D& GetCanvasToSceneTransform() const; + + /** Forwarded to the underlying scene */ + const AffineTransform2D& GetSceneToCanvasTransform() const; + + /** Forwarded to the underlying scene, and broadcasted to the observers */ + void SetSceneToCanvasTransform(const AffineTransform2D& transform); + + private: - MessageBroker& broker_; - Scene2DWPtr scene_; + Scene2DPtr scene_; FlexiblePointerTrackerPtr tracker_; }; }