comparison Applications/Samples/SimpleViewerApplication.h @ 318:3a4ca166fafa am-2

ImageAccessor refactoring + implemented Image Cache in SmartLoader
author am@osimis.io
date Mon, 08 Oct 2018 17:10:08 +0200
parents b66d13708f40
children
comparison
equal deleted inserted replaced
317:b66d13708f40 318:3a4ca166fafa
171 171
172 172
173 #if ORTHANC_ENABLE_WASM==1 173 #if ORTHANC_ENABLE_WASM==1
174 class SimpleViewerApplicationAdapter : public WasmPlatformApplicationAdapter 174 class SimpleViewerApplicationAdapter : public WasmPlatformApplicationAdapter
175 { 175 {
176 SimpleViewerApplication& viewerApplication_;
177
176 public: 178 public:
177 SimpleViewerApplicationAdapter(MessageBroker& broker, SimpleViewerApplication& application) 179 SimpleViewerApplicationAdapter(MessageBroker& broker, SimpleViewerApplication& application)
178 : WasmPlatformApplicationAdapter(broker, application) 180 : WasmPlatformApplicationAdapter(broker, application),
181 viewerApplication_(application)
179 { 182 {
180 183
181 } 184 }
182 185
183 virtual void HandleMessageFromWeb(std::string& output, const std::string& input) { 186 virtual void HandleMessageFromWeb(std::string& output, const std::string& input) {
184 if (input == "select-tool:line-measure") 187 if (input == "select-tool:line-measure")
185 { 188 {
186 application.currentTool_ = Tools_LineMeasure; 189 viewerApplication_.currentTool_ = Tools_LineMeasure;
187 NotifyStatusUpdateFromCppToWeb("currentTool=line-measure"); 190 NotifyStatusUpdateFromCppToWeb("currentTool=line-measure");
188 } 191 }
189 else if (input == "select-tool:circle-measure") 192 else if (input == "select-tool:circle-measure")
190 { 193 {
191 application.currentTool_ = Tools_CircleMeasure; 194 viewerApplication_.currentTool_ = Tools_CircleMeasure;
192 NotifyStatusUpdateFromCppToWeb("currentTool=circle-measure"); 195 NotifyStatusUpdateFromCppToWeb("currentTool=circle-measure");
193 } 196 }
194 197
195 output = "ok"; 198 output = "ok";
196 } 199 }
348 LoadThumbnailForSeries(seriesId, instancesIdsPerSeriesId_[seriesId][0]); 351 LoadThumbnailForSeries(seriesId, instancesIdsPerSeriesId_[seriesId][0]);
349 352
350 // if this is the first thumbnail loaded, load the first instance in the mainWidget 353 // if this is the first thumbnail loaded, load the first instance in the mainWidget
351 if (mainWidget_->GetLayerCount() == 0) 354 if (mainWidget_->GetLayerCount() == 0)
352 { 355 {
353 mainWidget_->AddLayer(smartLoader_->GetFrame(instancesIdsPerSeriesId_[seriesId][0], 0)); 356 smartLoader_->SetFrameInWidget(*mainWidget_, 0, instancesIdsPerSeriesId_[seriesId][0], 0);
354 } 357 }
355 } 358 }
356 } 359 }
357 360
358 void LoadThumbnailForSeries(const std::string& seriesId, const std::string& instanceId) 361 void LoadThumbnailForSeries(const std::string& seriesId, const std::string& instanceId)
360 LOG(INFO) << "Loading thumbnail for series " << seriesId; 363 LOG(INFO) << "Loading thumbnail for series " << seriesId;
361 LayerWidget* thumbnailWidget = new LayerWidget(IObserver::broker_, "thumbnail-series-" + seriesId); 364 LayerWidget* thumbnailWidget = new LayerWidget(IObserver::broker_, "thumbnail-series-" + seriesId);
362 thumbnails_.push_back(thumbnailWidget); 365 thumbnails_.push_back(thumbnailWidget);
363 thumbnailsLayout_->AddWidget(thumbnailWidget); 366 thumbnailsLayout_->AddWidget(thumbnailWidget);
364 thumbnailWidget->RegisterObserverCallback(new Callable<SimpleViewerApplication, LayerWidget::GeometryChangedMessage>(*this, &SimpleViewerApplication::OnWidgetGeometryChanged)); 367 thumbnailWidget->RegisterObserverCallback(new Callable<SimpleViewerApplication, LayerWidget::GeometryChangedMessage>(*this, &SimpleViewerApplication::OnWidgetGeometryChanged));
365 thumbnailWidget->AddLayer(smartLoader_->GetFrame(instanceId, 0)); 368 smartLoader_->SetFrameInWidget(*thumbnailWidget, 0, instanceId, 0);
366 thumbnailWidget->SetInteractor(*thumbnailInteractor_); 369 thumbnailWidget->SetInteractor(*thumbnailInteractor_);
367 } 370 }
368 371
369 void SelectStudy(const std::string& studyId) 372 void SelectStudy(const std::string& studyId)
370 { 373 {
376 message.origin_.SetDefaultView(); 379 message.origin_.SetDefaultView();
377 } 380 }
378 381
379 void SelectSeriesInMainViewport(const std::string& seriesId) 382 void SelectSeriesInMainViewport(const std::string& seriesId)
380 { 383 {
381 mainWidget_->ReplaceLayer(0, smartLoader_->GetFrame(instancesIdsPerSeriesId_[seriesId][0], 0)); 384 smartLoader_->SetFrameInWidget(*mainWidget_, 0, instancesIdsPerSeriesId_[seriesId][0], 0);
382 #if ORTHANC_ENABLE_WASM==1
383 NotifyStatusUpdateFromCppToWeb("series-description=" + seriesTags_[seriesId]["MainDicomTags"]["SeriesDescription"].asString());
384 #endif
385 } 385 }
386 386
387 virtual void OnPushButton1Clicked() {} 387 virtual void OnPushButton1Clicked() {}
388 virtual void OnPushButton2Clicked() {} 388 virtual void OnPushButton2Clicked() {}
389 virtual void OnTool1Clicked() { currentTool_ = Tools_LineMeasure;} 389 virtual void OnTool1Clicked() { currentTool_ = Tools_LineMeasure;}