Mercurial > hg > orthanc-stone
comparison Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp @ 2018:6099c7925202
synchronized browsing against the vertical slider
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sat, 03 Dec 2022 08:45:36 +0100 |
parents | c818be7cb940 |
children | 04148de691a7 f36de3ba43c8 |
comparison
equal
deleted
inserted
replaced
2017:7e45941acc1d | 2018:6099c7925202 |
---|---|
3456 const OrthancStone::ScenePoint2D& labelPosition) | 3456 const OrthancStone::ScenePoint2D& labelPosition) |
3457 { | 3457 { |
3458 stoneAnnotations_->AddTextAnnotation(label, pointedPosition, labelPosition); | 3458 stoneAnnotations_->AddTextAnnotation(label, pointedPosition, labelPosition); |
3459 Redraw(); | 3459 Redraw(); |
3460 } | 3460 } |
3461 | |
3462 | |
3463 void SignalSynchronizedBrowsing() | |
3464 { | |
3465 if (synchronizationEnabled_ && | |
3466 frames_.get() != NULL && | |
3467 cursor_.get() != NULL) | |
3468 { | |
3469 const size_t currentCursorIndex = cursor_->GetCurrentIndex(); | |
3470 | |
3471 const OrthancStone::CoordinateSystem3D current = | |
3472 frames_->GetFrameGeometry(currentCursorIndex); | |
3473 | |
3474 observer_->SignalSynchronizedBrowsing( | |
3475 *this, current.GetOrigin() + synchronizationOffset_, current.GetNormal()); | |
3476 } | |
3477 } | |
3461 }; | 3478 }; |
3462 | 3479 |
3463 | 3480 |
3464 | 3481 |
3465 | 3482 |
4162 int DecrementFrame(const char* canvas, | 4179 int DecrementFrame(const char* canvas, |
4163 int isCircular) | 4180 int isCircular) |
4164 { | 4181 { |
4165 try | 4182 try |
4166 { | 4183 { |
4167 return GetViewport(canvas)->ChangeFrame(SeriesCursor::Action_Minus, isCircular) ? 1 : 0; | 4184 bool changed = GetViewport(canvas)->ChangeFrame(SeriesCursor::Action_Minus, isCircular); |
4185 GetViewport(canvas)->SignalSynchronizedBrowsing(); | |
4186 return changed ? 1 : 0; | |
4168 } | 4187 } |
4169 EXTERN_CATCH_EXCEPTIONS; | 4188 EXTERN_CATCH_EXCEPTIONS; |
4170 return 0; | 4189 return 0; |
4171 } | 4190 } |
4172 | 4191 |
4175 int IncrementFrame(const char* canvas, | 4194 int IncrementFrame(const char* canvas, |
4176 int isCircular) | 4195 int isCircular) |
4177 { | 4196 { |
4178 try | 4197 try |
4179 { | 4198 { |
4180 return GetViewport(canvas)->ChangeFrame(SeriesCursor::Action_Plus, isCircular) ? 1 : 0; | 4199 bool changed = GetViewport(canvas)->ChangeFrame(SeriesCursor::Action_Plus, isCircular); |
4200 GetViewport(canvas)->SignalSynchronizedBrowsing(); | |
4201 return changed ? 1 : 0; | |
4181 } | 4202 } |
4182 EXTERN_CATCH_EXCEPTIONS; | 4203 EXTERN_CATCH_EXCEPTIONS; |
4183 return 0; | 4204 return 0; |
4184 } | 4205 } |
4185 | 4206 |
4191 try | 4212 try |
4192 { | 4213 { |
4193 if (frameNumber >= 0) | 4214 if (frameNumber >= 0) |
4194 { | 4215 { |
4195 GetViewport(canvas)->SetFrame(static_cast<unsigned int>(frameNumber)); | 4216 GetViewport(canvas)->SetFrame(static_cast<unsigned int>(frameNumber)); |
4217 GetViewport(canvas)->SignalSynchronizedBrowsing(); | |
4196 } | 4218 } |
4197 } | 4219 } |
4198 EXTERN_CATCH_EXCEPTIONS; | 4220 EXTERN_CATCH_EXCEPTIONS; |
4199 } | 4221 } |
4200 | 4222 |
4203 void GoToFirstFrame(const char* canvas) | 4225 void GoToFirstFrame(const char* canvas) |
4204 { | 4226 { |
4205 try | 4227 try |
4206 { | 4228 { |
4207 GetViewport(canvas)->GoToFirstFrame(); | 4229 GetViewport(canvas)->GoToFirstFrame(); |
4230 GetViewport(canvas)->SignalSynchronizedBrowsing(); | |
4208 } | 4231 } |
4209 EXTERN_CATCH_EXCEPTIONS; | 4232 EXTERN_CATCH_EXCEPTIONS; |
4210 } | 4233 } |
4211 | 4234 |
4212 | 4235 |
4214 void GoToLastFrame(const char* canvas) | 4237 void GoToLastFrame(const char* canvas) |
4215 { | 4238 { |
4216 try | 4239 try |
4217 { | 4240 { |
4218 GetViewport(canvas)->GoToLastFrame(); | 4241 GetViewport(canvas)->GoToLastFrame(); |
4242 GetViewport(canvas)->SignalSynchronizedBrowsing(); | |
4219 } | 4243 } |
4220 EXTERN_CATCH_EXCEPTIONS; | 4244 EXTERN_CATCH_EXCEPTIONS; |
4221 } | 4245 } |
4222 | 4246 |
4223 | 4247 |