Mercurial > hg > orthanc-stone
changeset 2376:9aae69fb63e1 refactoring
added pan-zoom to the sample simple viewer
| author | Sebastien Jodogne <s.jodogne@gmail.com> |
|---|---|
| date | Thu, 08 Oct 2026 20:52:17 +0200 |
| parents | 2788f73cb1a4 |
| children | 94d62ecd8d50 |
| files | Applications/Samples/Common/SimpleViewerCore.cpp |
| diffstat | 1 files changed, 36 insertions(+), 38 deletions(-) [+] |
line wrap: on
line diff
--- a/Applications/Samples/Common/SimpleViewerCore.cpp Thu Oct 08 20:44:33 2026 +0200 +++ b/Applications/Samples/Common/SimpleViewerCore.cpp Thu Oct 08 20:52:17 2026 +0200 @@ -249,55 +249,53 @@ unsigned int viewportHeight) ORTHANC_OVERRIDE { #if TEST_MEASURE_TOOLS == 1 - const ScenePoint2D p = event.GetMainPosition().Apply(scene.GetCanvasToSceneTransform()); - - std::vector< boost::shared_ptr<MeasureTool> > tools; + if (event.GetMouseButton() == MouseButton_Middle || + event.GetMouseButton() == MouseButton_Right) + { + return default_.CreateTracker(scene, event, viewportWidth, viewportHeight); + } + else + { + const ScenePoint2D p = event.GetMainPosition().Apply(scene.GetCanvasToSceneTransform()); - { std::unique_ptr<IViewport::ILock> viewportLock(core_->viewport_->Lock()); - tools = viewportLock->GetController().HitTestMeasureTools(p); - } - if (!tools.empty()) - { - if (core_->annotations_->GetActiveTool() == AnnotationsSceneLayer::Tool_Remove) + std::vector< boost::shared_ptr<MeasureTool> > tools; + tools = viewportLock->GetController().HitTestMeasureTools(p); + + if (!tools.empty()) { - std::unique_ptr<IViewport::ILock> viewportLock(core_->viewport_->Lock()); - - boost::shared_ptr<MeasureCommand> command(new DeleteMeasureCommand(viewportLock->GetController(), tools[0])); - viewportLock->GetController().PushCommand(command); - return NULL; + if (core_->annotations_->GetActiveTool() == AnnotationsSceneLayer::Tool_Remove) + { + boost::shared_ptr<MeasureCommand> command(new DeleteMeasureCommand(viewportLock->GetController(), tools[0])); + viewportLock->GetController().PushCommand(command); + return NULL; + } + else + { + return tools[0]->CreateEditionTracker(false, event); + } } else { - return tools[0]->CreateEditionTracker(false, event); - } - } - else - { - switch (core_->annotations_->GetActiveTool()) - { - case AnnotationsSceneLayer::Tool_Remove: - LOG(WARNING) << "Nothing to delete there"; - break; + switch (core_->annotations_->GetActiveTool()) + { + case AnnotationsSceneLayer::Tool_Remove: + LOG(WARNING) << "Nothing to delete there"; + break; - case AnnotationsSceneLayer::Tool_Length: - { - std::unique_ptr<IViewport::ILock> viewportLock(core_->viewport_->Lock()); - return viewportLock->GetController().CreateLineMeasure(event); + case AnnotationsSceneLayer::Tool_Length: + return viewportLock->GetController().CreateLineMeasure(event); + + case AnnotationsSceneLayer::Tool_Angle: + return viewportLock->GetController().CreateAngleMeasure(event); + + default: + LOG(ERROR) << "This tool is not supported if not using the annotations layer"; } - case AnnotationsSceneLayer::Tool_Angle: - { - std::unique_ptr<IViewport::ILock> viewportLock(core_->viewport_->Lock()); - return viewportLock->GetController().CreateAngleMeasure(event); - } - - default: - LOG(ERROR) << "This tool is not supported if not using the annotations layer"; + return NULL; } - - return NULL; } #endif
