changeset 1345:0d6a01ffa1dd broker

Clean version of the hack commited in the previous commit : the DicomStructureSetLoader now properly increments its revision during progressive loading. The "force update" method in the VolumeSceneLayerSource isn't needed anymore.
author Benjamin Golinvaux <bgo@osimis.io>
date Mon, 06 Apr 2020 09:17:40 +0200
parents 00c8322bbe69
children df8bf351c23f
files Framework/Loaders/DicomStructureSetLoader.cpp Framework/Volumes/VolumeSceneLayerSource.cpp Framework/Volumes/VolumeSceneLayerSource.h
diffstat 3 files changed, 4 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/Framework/Loaders/DicomStructureSetLoader.cpp	Mon Apr 06 08:44:10 2020 +0200
+++ b/Framework/Loaders/DicomStructureSetLoader.cpp	Mon Apr 06 09:17:40 2020 +0200
@@ -76,6 +76,7 @@
       loader.countProcessedInstances_ ++;
       assert(loader.countProcessedInstances_ <= loader.countReferencedInstances_);
 
+      loader.revision_++;
       loader.SetStructuresUpdated();
 
       if (loader.countProcessedInstances_ == loader.countReferencedInstances_)
--- a/Framework/Volumes/VolumeSceneLayerSource.cpp	Mon Apr 06 08:44:10 2020 +0200
+++ b/Framework/Volumes/VolumeSceneLayerSource.cpp	Mon Apr 06 09:17:40 2020 +0200
@@ -102,7 +102,7 @@
   }
 
 
-  void VolumeSceneLayerSource::Update(const CoordinateSystem3D& plane, bool forceLayerRecreation)
+  void VolumeSceneLayerSource::Update(const CoordinateSystem3D& plane)
   {
     assert(slicer_.get() != NULL);
     std::unique_ptr<IVolumeSlicer::IExtractedSlice> slice(slicer_->ExtractSlice(plane));
@@ -117,8 +117,7 @@
       // The slicer cannot handle this cutting plane: Clear the layer
       ClearLayer();
     }
-    else if (!forceLayerRecreation && 
-             lastPlane_.get() != NULL &&
+    else if (lastPlane_.get() != NULL &&
              IsSameCuttingPlane(*lastPlane_, plane) &&
              lastRevision_ == slice->GetRevision())
     {
--- a/Framework/Volumes/VolumeSceneLayerSource.h	Mon Apr 06 08:44:10 2020 +0200
+++ b/Framework/Volumes/VolumeSceneLayerSource.h	Mon Apr 06 09:17:40 2020 +0200
@@ -80,6 +80,6 @@
     you can lock the whole viewport data (including scene) by means of the 
     IViewport::Lock method.
     */ 
-    void Update(const CoordinateSystem3D& plane, bool forceLayerRecreation = false); 
+    void Update(const CoordinateSystem3D& plane); 
   };
 }