# HG changeset patch # User Sebastien Jodogne # Date 1643648410 -3600 # Node ID c7bc9e1776a66f5ac164503ff28a53771bfe4024 # Parent 1cfd602de69d3a13fe48726d28f438cf73f225c2 fix rendering of RT sample diff -r 1cfd602de69d -r c7bc9e1776a6 Applications/Samples/Common/RtViewerApp.cpp --- 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 @@ -84,7 +84,8 @@ // Create the volumes that will be filled later on ctVolume_(boost::make_shared()), doseVolume_(boost::make_shared()), - undoStack_(new UndoStack) + undoStack_(new UndoStack), + isFirstSlice_(true) { } @@ -142,9 +143,6 @@ Register (*ctLoader_, &RtViewerApp::HandleGeometryReady); - Register - (*ctLoader_, &RtViewerApp::HandleCTLoaded); - Register (*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(); } diff -r 1cfd602de69d -r c7bc9e1776a6 Applications/Samples/Common/RtViewerApp.h --- a/Applications/Samples/Common/RtViewerApp.h Sat Jan 29 18:30:26 2022 +0100 +++ b/Applications/Samples/Common/RtViewerApp.h Mon Jan 31 18:00:10 2022 +0100 @@ -126,7 +126,6 @@ void HandleGeometryReady(const DicomVolumeImage::GeometryReadyMessage& message); // TODO: wire this - void HandleCTLoaded(const OrthancSeriesVolumeProgressiveLoader::VolumeImageReadyInHighQuality& message); void HandleCTContentUpdated(const DicomVolumeImage::ContentUpdatedMessage& message); void HandleDoseLoaded(const DicomVolumeImage::ContentUpdatedMessage& message); void HandleStructuresReady(const DicomStructureSetLoader::StructuresReady& message); @@ -135,7 +134,6 @@ private: void RetrieveGeometry(); - void FitContent(); void InvalidateAllViewports(); void UpdateLayersInAllViews(); @@ -162,6 +160,8 @@ boost::shared_ptr activeTracker_; boost::shared_ptr undoStack_; + + bool isFirstSlice_; }; } diff -r 1cfd602de69d -r c7bc9e1776a6 Applications/Samples/Common/RtViewerView.cpp --- a/Applications/Samples/Common/RtViewerView.cpp Sat Jan 29 18:30:26 2022 +0100 +++ b/Applications/Samples/Common/RtViewerView.cpp Mon Jan 31 18:00:10 2022 +0100 @@ -217,8 +217,6 @@ { planes_[z] = geometry.GetProjectionSlice(projection_, z); } - - UpdateLayers(); } void RtViewerView::UpdateLayers()