Mercurial > hg > orthanc-stone
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;} |