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