Mercurial > hg > orthanc-stone
diff Framework/Scene2DViewport/ViewportController.cpp @ 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.cpp Fri May 17 09:20:46 2019 +0200 +++ b/Framework/Scene2DViewport/ViewportController.cpp Sun May 19 16:26:17 2019 +0200 @@ -22,28 +22,44 @@ #include <Framework/StoneException.h> +#include <boost/make_shared.hpp> + using namespace Orthanc; namespace OrthancStone { - ViewportController::ViewportController(MessageBroker& broker) - : broker_(broker) + : IObservable(broker) { - + scene_ = boost::make_shared<Scene2D>(); } Scene2DPtr ViewportController::GetScene() { - Scene2DPtr scene = scene_.lock(); - if (!scene) - throw OrthancException(ErrorCode_InternalError, "Using dead object!"); - return scene; + return scene_; } bool ViewportController::HandlePointerEvent(PointerEvent e) { throw StoneException(ErrorCode_NotImplemented); } + + const OrthancStone::AffineTransform2D& ViewportController::GetCanvasToSceneTransform() const + { + return scene_->GetCanvasToSceneTransform(); + } + + const OrthancStone::AffineTransform2D& ViewportController::GetSceneToCanvasTransform() const + { + return scene_->GetSceneToCanvasTransform(); + } + + void ViewportController::SetSceneToCanvasTransform( + const AffineTransform2D& transform) + { + scene_->SetSceneToCanvasTransform(transform); + BroadcastMessage(SceneTransformChanged(*this)); + } + }