# HG changeset patch # User Sebastien Jodogne # Date 1791485537 -7200 # Node ID 9aae69fb63e189488d8519a62111a695d6557695 # Parent 2788f73cb1a45b3b18824694b669c2d4501b1c0c added pan-zoom to the sample simple viewer diff -r 2788f73cb1a4 -r 9aae69fb63e1 Applications/Samples/Common/SimpleViewerCore.cpp --- 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 > 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 viewportLock(core_->viewport_->Lock()); - tools = viewportLock->GetController().HitTestMeasureTools(p); - } - if (!tools.empty()) - { - if (core_->annotations_->GetActiveTool() == AnnotationsSceneLayer::Tool_Remove) + std::vector< boost::shared_ptr > tools; + tools = viewportLock->GetController().HitTestMeasureTools(p); + + if (!tools.empty()) { - std::unique_ptr viewportLock(core_->viewport_->Lock()); - - boost::shared_ptr command(new DeleteMeasureCommand(viewportLock->GetController(), tools[0])); - viewportLock->GetController().PushCommand(command); - return NULL; + if (core_->annotations_->GetActiveTool() == AnnotationsSceneLayer::Tool_Remove) + { + boost::shared_ptr 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 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 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