Mercurial > hg > orthanc-stone
changeset 2387:560be8bec5d7 refactoring
SimpleViewerCore does not use IViewport
| author | Sebastien Jodogne <s.jodogne@gmail.com> |
|---|---|
| date | Sun, 11 Oct 2026 10:45:16 +0200 |
| parents | f5f903bfa044 |
| children | 153403085188 |
| files | Applications/Samples/Common/RtViewerView.cpp Applications/Samples/Common/SimpleViewerCore.cpp Applications/Samples/Common/SimpleViewerCore.h |
| diffstat | 3 files changed, 26 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/Applications/Samples/Common/RtViewerView.cpp Sun Oct 11 10:33:33 2026 +0200 +++ b/Applications/Samples/Common/RtViewerView.cpp Sun Oct 11 10:45:16 2026 +0200 @@ -118,9 +118,7 @@ void RtViewerView::DisplayFloatingCtrlInfoText(const PointerEvent& e) { - std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); - ViewportController& controller = *viewport_->GetController(); - Scene2D& scene = controller.GetScene(); + Scene2D& scene = viewport_->GetController()->GetScene(); ScenePoint2D p = e.GetMainPosition().Apply(scene.GetCanvasToSceneTransform()); @@ -150,11 +148,7 @@ void RtViewerView::HideInfoText() { - std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); - ViewportController& controller = *viewport_->GetController(); - Scene2D& scene = controller.GetScene(); - - scene.DeleteLayer(FLOATING_INFOTEXT_LAYER_ZINDEX); + viewport_->GetController()->GetScene().DeleteLayer(FLOATING_INFOTEXT_LAYER_ZINDEX); } void RtViewerView::OnSceneTransformChanged( @@ -165,16 +159,12 @@ void RtViewerView::Invalidate() { - std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); - lock->GetCompositor().FitContent(viewport_->GetController()->GetScene()); - lock->Invalidate(); + viewport_->GetController()->InvalidateViewport(); } void RtViewerView::FitContent() { - std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); - lock->GetCompositor().FitContent(viewport_->GetController()->GetScene()); - lock->Invalidate(); + viewport_->GetController()->FitContent(); } void RtViewerView::Scroll(int delta) @@ -223,6 +213,7 @@ void RtViewerView::UpdateLayers() { + // TODO Refactoring - Moving this lock down results in crash => is the environment mutex locked? std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); if (planes_.size() == 0)
--- a/Applications/Samples/Common/SimpleViewerCore.cpp Sun Oct 11 10:33:33 2026 +0200 +++ b/Applications/Samples/Common/SimpleViewerCore.cpp Sun Oct 11 10:45:16 2026 +0200 @@ -51,8 +51,8 @@ //layer->SetLinearInterpolation(true); layer->SetLinearInterpolation(false); - viewport_->GetController()->GetScene().SetLayer(0, layer.release()); - viewport_->GetController()->FitContent(); + controller_->GetScene().SetLayer(0, layer.release()); + controller_->FitContent(); } @@ -116,8 +116,8 @@ void SimpleViewerCore::RenderAnnotations() { - annotations_->Render(viewport_->GetController()->GetScene()); - viewport_->GetController()->InvalidateViewport(); + annotations_->Render(controller_->GetScene()); + controller_->InvalidateViewport(); } @@ -136,14 +136,14 @@ } if (context_ || - viewport_ || + controller_ || annotations_) { throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); } context_ = context; - viewport_ = viewport; + controller_ = viewport->GetController(); dicomLoader_ = DicomResourcesLoader::Create(*context); @@ -159,26 +159,26 @@ Register<AnnotationsSceneLayer::AnnotationRemovedMessage>(*annotations_, &SimpleViewerCore::Handle); - viewport_->GetController()->SetUndoStack(boost::make_shared<UndoStack>()); + controller_->SetUndoStack(boost::make_shared<UndoStack>()); #if TEST_MEASURE_TOOLS == 1 { - boost::shared_ptr<LineMeasureTool> tool = OrthancStone::LineMeasureTool::Create(viewport_->GetController()); + boost::shared_ptr<LineMeasureTool> tool = OrthancStone::LineMeasureTool::Create(controller_); tool->Enable(); tool->Set(OrthancStone::ScenePoint2D(200, 100), OrthancStone::ScenePoint2D(100, 200)); - viewport_->GetController()->AddMeasureTool(boost::dynamic_pointer_cast<MeasureTool>(tool)); + controller_->AddMeasureTool(boost::dynamic_pointer_cast<MeasureTool>(tool)); } { - boost::shared_ptr<AngleMeasureTool> tool = OrthancStone::AngleMeasureTool::Create(viewport_->GetController()); + boost::shared_ptr<AngleMeasureTool> tool = OrthancStone::AngleMeasureTool::Create(controller_); tool->Enable(); tool->SetCenter(OrthancStone::ScenePoint2D(300, 300)); tool->SetSide1End(OrthancStone::ScenePoint2D(200, 400)); tool->SetSide2End(OrthancStone::ScenePoint2D(400, 400)); - viewport_->GetController()->AddMeasureTool(boost::dynamic_pointer_cast<MeasureTool>(tool)); + controller_->AddMeasureTool(boost::dynamic_pointer_cast<MeasureTool>(tool)); } #endif } @@ -259,14 +259,14 @@ const ScenePoint2D p = event.GetMainPosition().Apply(scene.GetCanvasToSceneTransform()); std::vector< boost::shared_ptr<MeasureTool> > tools; - tools = core_->viewport_->GetController()->HitTestMeasureTools(p); + tools = core_->controller_->HitTestMeasureTools(p); if (!tools.empty()) { if (core_->annotations_->GetActiveTool() == AnnotationsSceneLayer::Tool_Remove) { boost::shared_ptr<MeasureCommand> command(new DeleteMeasureCommand(tools[0])); - core_->viewport_->GetController()->PushCommand(command); + core_->controller_->PushCommand(command); return NULL; } else @@ -283,10 +283,10 @@ break; case AnnotationsSceneLayer::Tool_Length: - return core_->viewport_->GetController()->CreateLineMeasure(event); + return core_->controller_->CreateLineMeasure(event); case AnnotationsSceneLayer::Tool_Angle: - return core_->viewport_->GetController()->CreateAngleMeasure(event); + return core_->controller_->CreateAngleMeasure(event); default: LOG(ERROR) << "This tool is not supported if not using the annotations layer"; @@ -341,23 +341,23 @@ switch (key) { case 's': - viewport_->GetController()->FitContent(); + controller_->FitContent(); break; case 'u': { - if (viewport_->GetController()->CanUndo()) + if (controller_->CanUndo()) { - viewport_->GetController()->Undo(); + controller_->Undo(); } break; } case 'U': { - if (viewport_->GetController()->CanRedo()) + if (controller_->CanRedo()) { - viewport_->GetController()->Redo(); + controller_->Redo(); } break; }
--- a/Applications/Samples/Common/SimpleViewerCore.h Sun Oct 11 10:33:33 2026 +0200 +++ b/Applications/Samples/Common/SimpleViewerCore.h Sun Oct 11 10:45:16 2026 +0200 @@ -40,7 +40,7 @@ { protected: boost::shared_ptr<StoneApplication::Context> context_; - boost::shared_ptr<IViewport> viewport_; + boost::shared_ptr<ViewportController> controller_; private: class Interactor;
