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