# HG changeset patch # User Sebastien Jodogne # Date 1670053536 -3600 # Node ID 6099c7925202fb89ba79ddd668892526e7ba5dbf # Parent 7e45941acc1d06ae35fae56d3b5251a96e2314f0 synchronized browsing against the vertical slider diff -r 7e45941acc1d -r 6099c7925202 Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp --- a/Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp Sat Dec 03 08:27:14 2022 +0100 +++ b/Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp Sat Dec 03 08:45:36 2022 +0100 @@ -3458,6 +3458,23 @@ stoneAnnotations_->AddTextAnnotation(label, pointedPosition, labelPosition); Redraw(); } + + + void SignalSynchronizedBrowsing() + { + if (synchronizationEnabled_ && + frames_.get() != NULL && + cursor_.get() != NULL) + { + const size_t currentCursorIndex = cursor_->GetCurrentIndex(); + + const OrthancStone::CoordinateSystem3D current = + frames_->GetFrameGeometry(currentCursorIndex); + + observer_->SignalSynchronizedBrowsing( + *this, current.GetOrigin() + synchronizationOffset_, current.GetNormal()); + } + } }; @@ -4164,7 +4181,9 @@ { try { - return GetViewport(canvas)->ChangeFrame(SeriesCursor::Action_Minus, isCircular) ? 1 : 0; + bool changed = GetViewport(canvas)->ChangeFrame(SeriesCursor::Action_Minus, isCircular); + GetViewport(canvas)->SignalSynchronizedBrowsing(); + return changed ? 1 : 0; } EXTERN_CATCH_EXCEPTIONS; return 0; @@ -4177,7 +4196,9 @@ { try { - return GetViewport(canvas)->ChangeFrame(SeriesCursor::Action_Plus, isCircular) ? 1 : 0; + bool changed = GetViewport(canvas)->ChangeFrame(SeriesCursor::Action_Plus, isCircular); + GetViewport(canvas)->SignalSynchronizedBrowsing(); + return changed ? 1 : 0; } EXTERN_CATCH_EXCEPTIONS; return 0; @@ -4193,6 +4214,7 @@ if (frameNumber >= 0) { GetViewport(canvas)->SetFrame(static_cast(frameNumber)); + GetViewport(canvas)->SignalSynchronizedBrowsing(); } } EXTERN_CATCH_EXCEPTIONS; @@ -4205,6 +4227,7 @@ try { GetViewport(canvas)->GoToFirstFrame(); + GetViewport(canvas)->SignalSynchronizedBrowsing(); } EXTERN_CATCH_EXCEPTIONS; } @@ -4216,6 +4239,7 @@ try { GetViewport(canvas)->GoToLastFrame(); + GetViewport(canvas)->SignalSynchronizedBrowsing(); } EXTERN_CATCH_EXCEPTIONS; }