diff Applications/Samples/Common/RtViewerApp.cpp @ 1903:c7bc9e1776a6

fix rendering of RT sample
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 31 Jan 2022 18:00:10 +0100
parents b3c08e607d9f
children 5a434f5889f8
line wrap: on
line diff
--- a/Applications/Samples/Common/RtViewerApp.cpp	Sat Jan 29 18:30:26 2022 +0100
+++ b/Applications/Samples/Common/RtViewerApp.cpp	Mon Jan 31 18:00:10 2022 +0100
@@ -25,25 +25,25 @@
 #include "SampleHelpers.h"
 
 // Stone of Orthanc
-#include "../../../OrthancStone/Sources/StoneInitialization.h"
+#include "../../../OrthancStone/Sources/Oracle/GetOrthancWebViewerJpegCommand.h"
 #include "../../../OrthancStone/Sources/Scene2D/CairoCompositor.h"
 #include "../../../OrthancStone/Sources/Scene2D/ColorTextureSceneLayer.h"
+#include "../../../OrthancStone/Sources/Scene2D/GrayscaleStyleConfigurator.h"
+#include "../../../OrthancStone/Sources/Scene2D/LookupTableStyleConfigurator.h"
 #include "../../../OrthancStone/Sources/Scene2D/OpenGLCompositor.h"
 #include "../../../OrthancStone/Sources/Scene2D/PanSceneTracker.h"
+#include "../../../OrthancStone/Sources/Scene2D/RotateSceneTracker.h"
 #include "../../../OrthancStone/Sources/Scene2D/ZoomSceneTracker.h"
-#include "../../../OrthancStone/Sources/Scene2D/RotateSceneTracker.h"
-#include "../../../OrthancStone/Sources/Scene2DViewport/UndoStack.h"
+#include "../../../OrthancStone/Sources/Scene2DViewport/CreateAngleMeasureTracker.h"
 #include "../../../OrthancStone/Sources/Scene2DViewport/CreateLineMeasureTracker.h"
-#include "../../../OrthancStone/Sources/Scene2DViewport/CreateAngleMeasureTracker.h"
 #include "../../../OrthancStone/Sources/Scene2DViewport/IFlexiblePointerTracker.h"
 #include "../../../OrthancStone/Sources/Scene2DViewport/MeasureTool.h"
 #include "../../../OrthancStone/Sources/Scene2DViewport/PredeclaredTypes.h"
+#include "../../../OrthancStone/Sources/Scene2DViewport/UndoStack.h"
+#include "../../../OrthancStone/Sources/StoneException.h"
+#include "../../../OrthancStone/Sources/StoneInitialization.h"
+#include "../../../OrthancStone/Sources/Volumes/DicomVolumeImageMPRSlicer.h"
 #include "../../../OrthancStone/Sources/Volumes/VolumeSceneLayerSource.h"
-#include "../../../OrthancStone/Sources/Oracle/GetOrthancWebViewerJpegCommand.h"
-#include "../../../OrthancStone/Sources/Scene2D/GrayscaleStyleConfigurator.h"
-#include "../../../OrthancStone/Sources/Scene2D/LookupTableStyleConfigurator.h"
-#include "../../../OrthancStone/Sources/Volumes/DicomVolumeImageMPRSlicer.h"
-#include "../../../OrthancStone/Sources/StoneException.h"
 
 // Orthanc
 #include <Logging.h>
@@ -84,7 +84,8 @@
     // Create the volumes that will be filled later on
     ctVolume_(boost::make_shared<DicomVolumeImage>()),
     doseVolume_(boost::make_shared<DicomVolumeImage>()),
-    undoStack_(new UndoStack)
+    undoStack_(new UndoStack),
+    isFirstSlice_(true)
   {
   }
 
@@ -142,9 +143,6 @@
     Register<DicomVolumeImage::GeometryReadyMessage>
       (*ctLoader_, &RtViewerApp::HandleGeometryReady);
 
-    Register<OrthancSeriesVolumeProgressiveLoader::VolumeImageReadyInHighQuality>
-      (*ctLoader_, &RtViewerApp::HandleCTLoaded);
-
     Register<DicomVolumeImage::ContentUpdatedMessage>
       (*ctLoader_, &RtViewerApp::HandleCTContentUpdated);
 
@@ -197,22 +195,9 @@
 
   void RtViewerApp::HandleGeometryReady(const DicomVolumeImage::GeometryReadyMessage& message)
   {
-    for (size_t i = 0; i < views_.size(); ++i)
-    {
-      views_[i]->RetrieveGeometry();
-    }
-    FitContent();
     UpdateLayersInAllViews();
   }
 
-  void RtViewerApp::FitContent()
-  {
-    for (size_t i = 0; i < views_.size(); ++i)
-    {
-      views_[i]->FitContent();
-    }
-  }
-
   void RtViewerApp::UpdateLayersInAllViews()
   {
     for (size_t i = 0; i < views_.size(); ++i)
@@ -221,17 +206,19 @@
     }
   }
 
-  void RtViewerApp::HandleCTLoaded(const OrthancSeriesVolumeProgressiveLoader::VolumeImageReadyInHighQuality& message)
-  {
-    for (size_t i = 0; i < views_.size(); ++i)
-    {
-      views_[i]->RetrieveGeometry();
-    }
-    UpdateLayersInAllViews();
-  }
-
   void RtViewerApp::HandleCTContentUpdated(const DicomVolumeImage::ContentUpdatedMessage& message)
   {
+    if (isFirstSlice_)
+    {
+      for (size_t i = 0; i < views_.size(); ++i)
+      {
+        views_[i]->RetrieveGeometry();
+        views_[i]->FitContent();
+      }
+
+      isFirstSlice_ = false;
+    }
+    
     UpdateLayersInAllViews();
   }