comparison UnitTestsSources/VolumeRenderingTests.cpp @ 1802:757987cb5a68

recycling of layers in MacroSceneLayer
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 20 May 2021 13:58:26 +0200
parents 4fd065ad1fc0
children 3889ae96d2e9
comparison
equal deleted inserted replaced
1801:64dad1d7aca4 1802:757987cb5a68
20 20
21 21
22 #include "../OrthancStone/Sources/Scene2D/CairoCompositor.h" 22 #include "../OrthancStone/Sources/Scene2D/CairoCompositor.h"
23 #include "../OrthancStone/Sources/Scene2D/ColorTextureSceneLayer.h" 23 #include "../OrthancStone/Sources/Scene2D/ColorTextureSceneLayer.h"
24 #include "../OrthancStone/Sources/Scene2D/CopyStyleConfigurator.h" 24 #include "../OrthancStone/Sources/Scene2D/CopyStyleConfigurator.h"
25 #include "../OrthancStone/Sources/Scene2D/MacroSceneLayer.h"
26 #include "../OrthancStone/Sources/Scene2D/PolylineSceneLayer.h"
25 #include "../OrthancStone/Sources/Toolbox/SubvoxelReader.h" 27 #include "../OrthancStone/Sources/Toolbox/SubvoxelReader.h"
26 #include "../OrthancStone/Sources/Volumes/DicomVolumeImageMPRSlicer.h" 28 #include "../OrthancStone/Sources/Volumes/DicomVolumeImageMPRSlicer.h"
27 #include "../OrthancStone/Sources/Volumes/DicomVolumeImageReslicer.h" 29 #include "../OrthancStone/Sources/Volumes/DicomVolumeImageReslicer.h"
28 30
29 #include <Images/ImageProcessing.h> 31 #include <Images/ImageProcessing.h>
1010 (layer->GetTexture().GetWidth() == 0 && // This is for DicomVolumeImageReslicer 1012 (layer->GetTexture().GetWidth() == 0 && // This is for DicomVolumeImageReslicer
1011 layer->GetTexture().GetHeight() == 0)); 1013 layer->GetTexture().GetHeight() == 0));
1012 } 1014 }
1013 } 1015 }
1014 } 1016 }
1017
1018
1019 TEST(VolumeRendering, MacroLayer)
1020 {
1021 OrthancStone::MacroSceneLayer layer;
1022 ASSERT_THROW(layer.AddLayer(NULL), Orthanc::OrthancException);
1023
1024 ASSERT_EQ(0u, layer.AddLayer(new OrthancStone::PolylineSceneLayer));
1025 ASSERT_EQ(1u, layer.AddLayer(new OrthancStone::PolylineSceneLayer));
1026 ASSERT_EQ(2u, layer.AddLayer(new OrthancStone::PolylineSceneLayer));
1027 ASSERT_EQ(3u, layer.GetSize());
1028 ASSERT_TRUE(layer.HasLayer(0));
1029 ASSERT_TRUE(layer.HasLayer(1));
1030 ASSERT_TRUE(layer.HasLayer(2));
1031
1032 layer.DeleteLayer(1);
1033 ASSERT_EQ(3u, layer.GetSize());
1034 ASSERT_TRUE(layer.HasLayer(0));
1035 ASSERT_FALSE(layer.HasLayer(1));
1036 ASSERT_TRUE(layer.HasLayer(2));
1037
1038 ASSERT_THROW(layer.UpdateLayer(1, NULL), Orthanc::OrthancException);
1039 layer.UpdateLayer(1, new OrthancStone::PolylineSceneLayer);
1040 ASSERT_TRUE(layer.HasLayer(1));
1041
1042 ASSERT_EQ(3u, layer.AddLayer(new OrthancStone::PolylineSceneLayer));
1043 ASSERT_EQ(4u, layer.GetSize());
1044
1045 layer.DeleteLayer(1);
1046 layer.DeleteLayer(2);
1047 ASSERT_EQ(1u, layer.AddLayer(new OrthancStone::PolylineSceneLayer));
1048
1049 std::unique_ptr<OrthancStone::MacroSceneLayer> clone(dynamic_cast<OrthancStone::MacroSceneLayer*>(layer.Clone()));
1050
1051 layer.UpdateLayer(2, new OrthancStone::PolylineSceneLayer);
1052 ASSERT_EQ(4u, layer.AddLayer(new OrthancStone::PolylineSceneLayer));
1053 ASSERT_EQ(5u, layer.GetSize());
1054 ASSERT_TRUE(layer.HasLayer(0));
1055 ASSERT_TRUE(layer.HasLayer(1));
1056 ASSERT_TRUE(layer.HasLayer(2));
1057 ASSERT_TRUE(layer.HasLayer(3));
1058 ASSERT_TRUE(layer.HasLayer(4));
1059
1060 ASSERT_EQ(2u, clone->AddLayer(new OrthancStone::PolylineSceneLayer));
1061 ASSERT_EQ(4u, clone->GetSize());
1062 ASSERT_TRUE(clone->HasLayer(0));
1063 ASSERT_TRUE(clone->HasLayer(1));
1064 ASSERT_TRUE(clone->HasLayer(2));
1065 ASSERT_TRUE(clone->HasLayer(3));
1066 ASSERT_THROW(clone->HasLayer(4), Orthanc::OrthancException);
1067 }