Mercurial > hg > orthanc-stone
annotate UnitTestsSources/VolumeRenderingTests.cpp @ 1782:f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 14 May 2021 16:30:54 +0200 |
parents | bf4b15b059ea |
children | 75d3e2ab1fe1 |
rev | line source |
---|---|
1771
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1 /** |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
2 * Stone of Orthanc |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
5 * Copyright (C) 2017-2021 Osimis S.A., Belgium |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
6 * |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
7 * This program is free software: you can redistribute it and/or |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
8 * modify it under the terms of the GNU Affero General Public License |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
9 * as published by the Free Software Foundation, either version 3 of |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
10 * the License, or (at your option) any later version. |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
11 * |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
12 * This program is distributed in the hope that it will be useful, but |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
13 * WITHOUT ANY WARRANTY; without even the implied warranty of |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
15 * Affero General Public License for more details. |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
16 * |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
17 * You should have received a copy of the GNU Affero General Public License |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
19 **/ |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
20 |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
21 |
1772
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
22 #include "../OrthancStone/Sources/Scene2D/CairoCompositor.h" |
1781
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
23 #include "../OrthancStone/Sources/Scene2D/ColorTextureSceneLayer.h" |
1772
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
24 #include "../OrthancStone/Sources/Scene2D/CopyStyleConfigurator.h" |
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
25 #include "../OrthancStone/Sources/Volumes/DicomVolumeImageMPRSlicer.h" |
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
26 #include "../OrthancStone/Sources/Volumes/DicomVolumeImageReslicer.h" |
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
27 |
1779
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
28 #include <Images/ImageProcessing.h> |
1772
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
29 #include <Images/ImageTraits.h> |
1778
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
30 #include <OrthancException.h> |
1772
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
31 |
1771
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
32 #include <gtest/gtest.h> |
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
33 |
1778
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
34 |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
35 static float GetPixelValue(const Orthanc::ImageAccessor& image, |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
36 unsigned int x, |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
37 unsigned int y) |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
38 { |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
39 switch (image.GetFormat()) |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
40 { |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
41 case Orthanc::PixelFormat_Grayscale8: |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
42 return Orthanc::ImageTraits<Orthanc::PixelFormat_Grayscale8>::GetFloatPixel(image, x, y); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
43 |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
44 case Orthanc::PixelFormat_Float32: |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
45 return Orthanc::ImageTraits<Orthanc::PixelFormat_Float32>::GetFloatPixel(image, x, y); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
46 |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
47 case Orthanc::PixelFormat_RGB24: |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
48 { |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
49 Orthanc::PixelTraits<Orthanc::PixelFormat_RGB24>::PixelType pixel; |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
50 Orthanc::ImageTraits<Orthanc::PixelFormat_RGB24>::GetPixel(pixel, image, x, y); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
51 return pixel.red_; |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
52 } |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
53 |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
54 case Orthanc::PixelFormat_BGRA32: |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
55 { |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
56 Orthanc::PixelTraits<Orthanc::PixelFormat_BGRA32>::PixelType pixel; |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
57 Orthanc::ImageTraits<Orthanc::PixelFormat_BGRA32>::GetPixel(pixel, image, x, y); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
58 return pixel.red_; |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
59 } |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
60 |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
61 default: |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
62 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
63 } |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
64 } |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
65 |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
66 |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
67 static bool IsConstImage(float value, |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
68 const Orthanc::ImageAccessor& image) |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
69 { |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
70 for (unsigned int y = 0; y < image.GetHeight(); y++) |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
71 { |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
72 for (unsigned int x = 0; x < image.GetWidth(); x++) |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
73 { |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
74 if (!OrthancStone::LinearAlgebra::IsNear(value, GetPixelValue(image, x, y))) |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
75 { |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
76 return false; |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
77 } |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
78 } |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
79 } |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
80 |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
81 return true; |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
82 } |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
83 |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
84 |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
85 static bool IsConstRegion(float value, |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
86 const Orthanc::ImageAccessor& image, |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
87 unsigned int x, |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
88 unsigned int y, |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
89 unsigned int width, |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
90 unsigned int height) |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
91 { |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
92 Orthanc::ImageAccessor region; |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
93 image.GetRegion(region, x, y, width, height); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
94 return IsConstImage(value, region); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
95 } |
1779
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
96 |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
97 |
1781
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
98 static bool IsConstImageWithExclusion(float value, |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
99 const Orthanc::ImageAccessor& image, |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
100 unsigned int exclusionX, |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
101 unsigned int exclusionY, |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
102 unsigned int exclusionWidth, |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
103 unsigned int exclusionHeight) |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
104 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
105 for (unsigned int y = 0; y < image.GetHeight(); y++) |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
106 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
107 for (unsigned int x = 0; x < image.GetWidth(); x++) |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
108 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
109 if ((x < exclusionX || |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
110 y < exclusionY || |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
111 x >= exclusionX + exclusionWidth || |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
112 y >= exclusionY + exclusionHeight) && |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
113 !OrthancStone::LinearAlgebra::IsNear(value, GetPixelValue(image, x, y))) |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
114 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
115 return false; |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
116 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
117 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
118 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
119 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
120 return true; |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
121 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
122 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
123 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
124 static bool AreSameImages(const Orthanc::ImageAccessor& image1, |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
125 const Orthanc::ImageAccessor& image2) |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
126 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
127 if (image1.GetWidth() != image2.GetWidth() || |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
128 image1.GetHeight() != image2.GetHeight()) |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
129 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
130 return false; |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
131 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
132 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
133 for (unsigned int y = 0; y < image1.GetHeight(); y++) |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
134 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
135 for (unsigned int x = 0; x < image1.GetWidth(); x++) |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
136 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
137 if (!OrthancStone::LinearAlgebra::IsNear(GetPixelValue(image1, x, y), |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
138 GetPixelValue(image2, x, y))) |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
139 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
140 return false; |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
141 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
142 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
143 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
144 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
145 return true; |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
146 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
147 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
148 |
1779
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
149 static void Assign3x3Pattern(Orthanc::ImageAccessor& image) |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
150 { |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
151 if (image.GetFormat() == Orthanc::PixelFormat_Grayscale8 && |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
152 image.GetWidth() == 3 && |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
153 image.GetHeight() == 3) |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
154 { |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
155 unsigned int v = 0; |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
156 for (unsigned int y = 0; y < image.GetHeight(); y++) |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
157 { |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
158 uint8_t *p = reinterpret_cast<uint8_t*>(image.GetRow(y)); |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
159 for (unsigned int x = 0; x < image.GetWidth(); x++, p++) |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
160 { |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
161 *p = v; |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
162 v += 25; |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
163 } |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
164 } |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
165 } |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
166 else |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
167 { |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
168 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
169 } |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
170 } |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
171 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
172 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
173 static Orthanc::ImageAccessor* Render(const OrthancStone::Scene2D& scene, |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
174 unsigned int width, |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
175 unsigned int height) |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
176 { |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
177 OrthancStone::CairoCompositor compositor(width, height); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
178 compositor.Refresh(scene); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
179 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
180 Orthanc::ImageAccessor rendered; |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
181 compositor.GetCanvas().GetReadOnlyAccessor(rendered); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
182 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
183 return Orthanc::Image::Clone(rendered); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
184 } |
1778
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
185 |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
186 |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
187 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
188 // Render the scene using the identity viewpoint (default) |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
189 static Orthanc::ImageAccessor* Render(OrthancStone::ISceneLayer* layer, |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
190 unsigned int width, |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
191 unsigned int height, |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
192 bool fitScene) |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
193 { |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
194 OrthancStone::Scene2D scene; |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
195 scene.SetLayer(0, layer); |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
196 |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
197 if (fitScene) |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
198 { |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
199 scene.FitContent(width, height); |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
200 } |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
201 |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
202 return Render(scene, width, height); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
203 } |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
204 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
205 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
206 enum SlicerType |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
207 { |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
208 SlicerType_MPR = 0, |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
209 SlicerType_Reslicer = 1 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
210 }; |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
211 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
212 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
213 static OrthancStone::TextureBaseSceneLayer* SliceVolume(boost::shared_ptr<OrthancStone::DicomVolumeImage> volume, |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
214 const OrthancStone::CoordinateSystem3D& volumeCoordinates, |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
215 const OrthancStone::CoordinateSystem3D& cuttingPlane, |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
216 SlicerType type) |
1771
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
217 { |
1772
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
218 Orthanc::DicomMap dicom; |
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
219 dicom.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false); |
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
220 dicom.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false); |
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
221 dicom.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop", false); |
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
222 |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
223 volume->SetDicomParameters(OrthancStone::DicomInstanceParameters(dicom)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
224 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
225 std::unique_ptr<OrthancStone::IVolumeSlicer> slicer; |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
226 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
227 switch (type) |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
228 { |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
229 case SlicerType_MPR: |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
230 slicer.reset(new OrthancStone::DicomVolumeImageMPRSlicer(volume)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
231 break; |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
232 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
233 case SlicerType_Reslicer: |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
234 slicer.reset(new OrthancStone::DicomVolumeImageReslicer(volume)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
235 break; |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
236 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
237 default: |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
238 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
239 } |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
240 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
241 std::unique_ptr<OrthancStone::IVolumeSlicer::IExtractedSlice> slice(slicer->ExtractSlice(cuttingPlane)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
242 if (slice->IsValid()) |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
243 { |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
244 OrthancStone::CopyStyleConfigurator configurator; |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
245 return dynamic_cast<OrthancStone::TextureBaseSceneLayer*>(slice->CreateSceneLayer(&configurator, cuttingPlane)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
246 } |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
247 else |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
248 { |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
249 return NULL; |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
250 } |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
251 } |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
252 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
253 |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
254 static OrthancStone::TextureBaseSceneLayer* Slice3x3x1Pattern(OrthancStone::VolumeProjection projection, |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
255 const OrthancStone::CoordinateSystem3D& volumeCoordinates, |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
256 const OrthancStone::CoordinateSystem3D& cuttingPlane, |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
257 SlicerType type) |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
258 { |
1772
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
259 OrthancStone::VolumeImageGeometry geometry; |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
260 |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
261 switch (projection) |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
262 { |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
263 case OrthancStone::VolumeProjection_Axial: |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
264 geometry.SetSizeInVoxels(3, 3, 1); |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
265 break; |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
266 |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
267 case OrthancStone::VolumeProjection_Sagittal: |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
268 geometry.SetSizeInVoxels(1, 3, 3); |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
269 break; |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
270 |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
271 case OrthancStone::VolumeProjection_Coronal: |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
272 geometry.SetSizeInVoxels(3, 1, 3); |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
273 break; |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
274 |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
275 default: |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
276 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
277 } |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
278 |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
279 geometry.SetAxialGeometry(volumeCoordinates); |
1775
fca942f4b4a7
fix conversion from voxel centers to texture borders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1774
diff
changeset
|
280 |
1772
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
281 boost::shared_ptr<OrthancStone::DicomVolumeImage> volume(new OrthancStone::DicomVolumeImage); |
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
282 volume->Initialize(geometry, Orthanc::PixelFormat_Grayscale8, false); |
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
283 |
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
284 { |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
285 OrthancStone::ImageBuffer3D::SliceWriter writer(volume->GetPixelData(), projection, 0); |
1779
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
286 Assign3x3Pattern(writer.GetAccessor()); |
1772
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
287 } |
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
288 |
1775
fca942f4b4a7
fix conversion from voxel centers to texture borders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1774
diff
changeset
|
289 OrthancStone::Vector v = volume->GetGeometry().GetVoxelDimensions(OrthancStone::VolumeProjection_Axial); |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
290 if (!OrthancStone::LinearAlgebra::IsNear(1, v[0]) || |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
291 !OrthancStone::LinearAlgebra::IsNear(1, v[1]) || |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
292 !OrthancStone::LinearAlgebra::IsNear(1, v[2])) |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
293 { |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
294 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
295 } |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
296 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
297 return SliceVolume(volume, volumeCoordinates, cuttingPlane, type); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
298 } |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
299 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
300 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
301 TEST(VolumeRendering, Axial) |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
302 { |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
303 OrthancStone::CoordinateSystem3D axial(OrthancStone::LinearAlgebra::CreateVector(-0.5, -0.5, 0), |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
304 OrthancStone::LinearAlgebra::CreateVector(1, 0, 0), |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
305 OrthancStone::LinearAlgebra::CreateVector(0, 1, 0)); |
1775
fca942f4b4a7
fix conversion from voxel centers to texture borders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1774
diff
changeset
|
306 |
1774
95ece40bb298
DicomVolumeImageReslicer and DicomVolumeImageMPRSlicer behave identically on axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1772
diff
changeset
|
307 for (unsigned int mode = 0; mode < 2; mode++) |
95ece40bb298
DicomVolumeImageReslicer and DicomVolumeImageMPRSlicer behave identically on axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1772
diff
changeset
|
308 { |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
309 OrthancStone::CoordinateSystem3D cuttingPlane; |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
310 |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
311 std::unique_ptr<OrthancStone::TextureBaseSceneLayer> layer( |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
312 Slice3x3x1Pattern(OrthancStone::VolumeProjection_Axial, axial, cuttingPlane, static_cast<SlicerType>(mode))); |
1772
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
313 |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
314 ASSERT_TRUE(layer.get() != NULL); |
1775
fca942f4b4a7
fix conversion from voxel centers to texture borders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1774
diff
changeset
|
315 ASSERT_EQ(OrthancStone::ISceneLayer::Type_FloatTexture, layer->GetType()); |
fca942f4b4a7
fix conversion from voxel centers to texture borders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1774
diff
changeset
|
316 |
fca942f4b4a7
fix conversion from voxel centers to texture borders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1774
diff
changeset
|
317 OrthancStone::Extent2D box; |
fca942f4b4a7
fix conversion from voxel centers to texture borders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1774
diff
changeset
|
318 layer->GetBoundingBox(box); |
fca942f4b4a7
fix conversion from voxel centers to texture borders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1774
diff
changeset
|
319 ASSERT_FLOAT_EQ(-1.0f, box.GetX1()); |
fca942f4b4a7
fix conversion from voxel centers to texture borders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1774
diff
changeset
|
320 ASSERT_FLOAT_EQ(-1.0f, box.GetY1()); |
fca942f4b4a7
fix conversion from voxel centers to texture borders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1774
diff
changeset
|
321 ASSERT_FLOAT_EQ(2.0f, box.GetX2()); |
fca942f4b4a7
fix conversion from voxel centers to texture borders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1774
diff
changeset
|
322 ASSERT_FLOAT_EQ(2.0f, box.GetY2()); |
fca942f4b4a7
fix conversion from voxel centers to texture borders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1774
diff
changeset
|
323 |
1774
95ece40bb298
DicomVolumeImageReslicer and DicomVolumeImageMPRSlicer behave identically on axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1772
diff
changeset
|
324 { |
1778
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
325 const Orthanc::ImageAccessor& texture = dynamic_cast<OrthancStone::TextureBaseSceneLayer&>(*layer).GetTexture(); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
326 ASSERT_EQ(3u, texture.GetWidth()); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
327 ASSERT_EQ(3u, texture.GetHeight()); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
328 ASSERT_FLOAT_EQ(0, GetPixelValue(texture, 0, 0)); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
329 ASSERT_FLOAT_EQ(25, GetPixelValue(texture, 1, 0)); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
330 ASSERT_FLOAT_EQ(50, GetPixelValue(texture, 2, 0)); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
331 ASSERT_FLOAT_EQ(75, GetPixelValue(texture, 0, 1)); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
332 ASSERT_FLOAT_EQ(100, GetPixelValue(texture, 1, 1)); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
333 ASSERT_FLOAT_EQ(125, GetPixelValue(texture, 2, 1)); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
334 ASSERT_FLOAT_EQ(150, GetPixelValue(texture, 0, 2)); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
335 ASSERT_FLOAT_EQ(175, GetPixelValue(texture, 1, 2)); |
de5c965f0697
simplifying test VolumeRendering.Axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1775
diff
changeset
|
336 ASSERT_FLOAT_EQ(200, GetPixelValue(texture, 2, 2)); |
1774
95ece40bb298
DicomVolumeImageReslicer and DicomVolumeImageMPRSlicer behave identically on axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1772
diff
changeset
|
337 } |
1772
6c246f862b00
unit test VolumeRendering.Basic
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1771
diff
changeset
|
338 |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
339 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 5, 5, false)); |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
340 ASSERT_EQ(5u, rendered->GetWidth()); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
341 ASSERT_EQ(5u, rendered->GetHeight()); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
342 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 0)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
343 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 0)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
344 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 2, 0)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
345 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 3, 0)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
346 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 4, 0)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
347 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 1)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
348 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 1)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
349 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 2, 1)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
350 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 3, 1)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
351 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 4, 1)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
352 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 2)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
353 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 2)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
354 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 2, 2)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
355 ASSERT_FLOAT_EQ(25, GetPixelValue(*rendered, 3, 2)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
356 ASSERT_FLOAT_EQ(50, GetPixelValue(*rendered, 4, 2)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
357 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 3)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
358 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 3)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
359 ASSERT_FLOAT_EQ(75, GetPixelValue(*rendered, 2, 3)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
360 ASSERT_FLOAT_EQ(100, GetPixelValue(*rendered, 3, 3)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
361 ASSERT_FLOAT_EQ(125, GetPixelValue(*rendered, 4, 3)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
362 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 4)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
363 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 4)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
364 ASSERT_FLOAT_EQ(150, GetPixelValue(*rendered, 2, 4)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
365 ASSERT_FLOAT_EQ(175, GetPixelValue(*rendered, 3, 4)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
366 ASSERT_FLOAT_EQ(200, GetPixelValue(*rendered, 4, 4)); |
1774
95ece40bb298
DicomVolumeImageReslicer and DicomVolumeImageMPRSlicer behave identically on axial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1772
diff
changeset
|
367 } |
1771
f302bbddf94d
sync, trying to fix DicomVolumeImageReslicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
368 } |
1779
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
369 |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
370 |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
371 TEST(VolumeRendering, TextureCorners) |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
372 { |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
373 // The origin of a 2D texture is the coordinate of the BORDER of the |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
374 // top-left pixel, *not* the center of the top-left pixel (as in |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
375 // DICOM 3D convention) |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
376 |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
377 Orthanc::Image pixel(Orthanc::PixelFormat_RGB24, 1, 1, false); |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
378 Orthanc::ImageProcessing::Set(pixel, 255, 0, 0, 255); |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
379 |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
380 { |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
381 std::unique_ptr<OrthancStone::ColorTextureSceneLayer> layer(new OrthancStone::ColorTextureSceneLayer(pixel)); |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
382 layer->SetOrigin(0, 0); |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
383 |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
384 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 2, 2, false)); |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
385 ASSERT_EQ(2u, rendered->GetWidth()); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
386 ASSERT_EQ(2u, rendered->GetHeight()); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
387 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 0)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
388 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 0)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
389 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 1)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
390 ASSERT_FLOAT_EQ(255, GetPixelValue(*rendered, 1, 1)); |
1779
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
391 } |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
392 |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
393 { |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
394 std::unique_ptr<OrthancStone::ColorTextureSceneLayer> layer(new OrthancStone::ColorTextureSceneLayer(pixel)); |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
395 layer->SetOrigin(-0.01, 0); |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
396 |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
397 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 2, 2, false)); |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
398 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 0)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
399 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 0)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
400 ASSERT_FLOAT_EQ(255, GetPixelValue(*rendered, 0, 1)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
401 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 1)); |
1779
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
402 } |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
403 |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
404 { |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
405 std::unique_ptr<OrthancStone::ColorTextureSceneLayer> layer(new OrthancStone::ColorTextureSceneLayer(pixel)); |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
406 layer->SetOrigin(-0.01, -0.01); |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
407 |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
408 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 2, 2, false)); |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
409 ASSERT_FLOAT_EQ(255, GetPixelValue(*rendered, 0, 0)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
410 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 0)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
411 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 1)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
412 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 1)); |
1779
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
413 } |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
414 |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
415 { |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
416 std::unique_ptr<OrthancStone::ColorTextureSceneLayer> layer(new OrthancStone::ColorTextureSceneLayer(pixel)); |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
417 layer->SetOrigin(0, -0.01); |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
418 |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
419 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 2, 2, false)); |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
420 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 0)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
421 ASSERT_FLOAT_EQ(255, GetPixelValue(*rendered, 1, 0)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
422 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 0, 1)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
423 ASSERT_FLOAT_EQ(0, GetPixelValue(*rendered, 1, 1)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
424 } |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
425 } |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
426 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
427 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
428 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
429 TEST(VolumeRendering, FitTexture) |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
430 { |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
431 Orthanc::Image pixel(Orthanc::PixelFormat_RGB24, 1, 1, false); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
432 Orthanc::ImageProcessing::Set(pixel, 255, 0, 0, 255); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
433 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
434 { |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
435 std::unique_ptr<OrthancStone::ColorTextureSceneLayer> layer(new OrthancStone::ColorTextureSceneLayer(pixel)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
436 layer->SetOrigin(-42.0f, 35.0f); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
437 layer->SetPixelSpacing(2, 3); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
438 |
1779
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
439 OrthancStone::Scene2D scene; |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
440 scene.SetLayer(0, layer.release()); |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
441 scene.FitContent(30, 30); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
442 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
443 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(scene, 30, 30)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
444 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 0, 5, 30)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
445 ASSERT_TRUE(IsConstRegion(255.0f, *rendered, 5, 0, 20, 30)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
446 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 25, 0, 5, 30)); |
1779
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
447 |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
448 rendered.reset(Render(scene, 40, 30)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
449 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 0, 10, 30)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
450 ASSERT_TRUE(IsConstRegion(255.0f, *rendered, 10, 0, 20, 30)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
451 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 30, 0, 5, 30)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
452 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
453 scene.FitContent(40, 30); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
454 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 0, 10, 30)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
455 ASSERT_TRUE(IsConstRegion(255.0f, *rendered, 10, 0, 20, 30)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
456 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 30, 0, 5, 30)); |
1779
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
457 |
1780
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
458 rendered.reset(Render(scene, 30, 36)); // The scene has not been fitted |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
459 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 0, 30, 3)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
460 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 0, 3, 36)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
461 ASSERT_TRUE(IsConstRegion(255.0f, *rendered, 5, 3, 20, 30)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
462 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 25, 0, 5, 36)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
463 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 33, 30, 3)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
464 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
465 scene.FitContent(30, 36); // Refit |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
466 rendered.reset(Render(scene, 30, 36)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
467 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 0, 3, 36)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
468 ASSERT_TRUE(IsConstRegion(255.0f, *rendered, 3, 0, 24, 36)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
469 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 27, 0, 3, 36)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
470 } |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
471 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
472 { |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
473 std::unique_ptr<OrthancStone::ColorTextureSceneLayer> layer(new OrthancStone::ColorTextureSceneLayer(pixel)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
474 layer->SetOrigin(42.0f, -35.0f); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
475 layer->SetPixelSpacing(3, 2); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
476 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
477 OrthancStone::Scene2D scene; |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
478 scene.SetLayer(0, layer.release()); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
479 scene.FitContent(30, 30); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
480 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
481 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(scene, 30, 30)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
482 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 0, 30, 5)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
483 ASSERT_TRUE(IsConstRegion(255.0f, *rendered, 0, 5, 30, 20)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
484 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 25, 30, 5)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
485 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
486 rendered.reset(Render(scene, 30, 40)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
487 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 0, 30, 10)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
488 ASSERT_TRUE(IsConstRegion(255.0f, *rendered, 0, 10, 30, 20)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
489 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 30, 30, 5)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
490 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
491 scene.FitContent(30, 40); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
492 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 0, 30, 10)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
493 ASSERT_TRUE(IsConstRegion(255.0f, *rendered, 0, 10, 30, 20)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
494 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 30, 30, 5)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
495 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
496 rendered.reset(Render(scene, 36, 30)); // The scene has not been fitted |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
497 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 0, 3, 30)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
498 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 0, 36, 3)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
499 ASSERT_TRUE(IsConstRegion(255.0f, *rendered, 3, 5, 30, 20)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
500 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 25, 36, 5)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
501 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 33, 0, 3, 30)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
502 |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
503 scene.FitContent(36, 30); // Refit |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
504 rendered.reset(Render(scene, 36, 30)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
505 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 0, 36, 3)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
506 ASSERT_TRUE(IsConstRegion(255.0f, *rendered, 0, 3, 36, 24)); |
b7c9fd1e9fb0
unit test VolumeRendering.FitTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1779
diff
changeset
|
507 ASSERT_TRUE(IsConstRegion(0.0f, *rendered, 0, 27, 36, 3)); |
1779
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
508 } |
9ab251c03eda
unit test VolumeRendering.TextureCorners
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1778
diff
changeset
|
509 } |
1781
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
510 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
511 |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
512 |
1781
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
513 TEST(VolumeRendering, FlipAxial) |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
514 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
515 double x = 2; |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
516 double y = 1; |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
517 OrthancStone::CoordinateSystem3D axial(OrthancStone::LinearAlgebra::CreateVector(x, y, 0), |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
518 OrthancStone::LinearAlgebra::CreateVector(1, 0, 0), |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
519 OrthancStone::LinearAlgebra::CreateVector(0, 1, 0)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
520 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
521 Orthanc::Image pattern(Orthanc::PixelFormat_Grayscale8, 3, 3, false); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
522 Assign3x3Pattern(pattern); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
523 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
524 Orthanc::Image patternX(Orthanc::PixelFormat_Grayscale8, 3, 3, false); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
525 Assign3x3Pattern(patternX); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
526 Orthanc::ImageProcessing::FlipX(patternX); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
527 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
528 Orthanc::Image patternY(Orthanc::PixelFormat_Grayscale8, 3, 3, false); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
529 Assign3x3Pattern(patternY); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
530 Orthanc::ImageProcessing::FlipY(patternY); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
531 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
532 Orthanc::Image patternXY(Orthanc::PixelFormat_Grayscale8, 3, 3, false); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
533 Assign3x3Pattern(patternXY); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
534 Orthanc::ImageProcessing::FlipX(patternXY); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
535 Orthanc::ImageProcessing::FlipY(patternXY); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
536 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
537 for (unsigned int mode = 0; mode < 2; mode++) |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
538 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
539 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
540 OrthancStone::CoordinateSystem3D cuttingPlane(OrthancStone::LinearAlgebra::CreateVector(0, 0, 0), |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
541 OrthancStone::LinearAlgebra::CreateVector(1, 0, 0), |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
542 OrthancStone::LinearAlgebra::CreateVector(0, 1, 0)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
543 |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
544 std::unique_ptr<OrthancStone::TextureBaseSceneLayer> layer( |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
545 Slice3x3x1Pattern(OrthancStone::VolumeProjection_Axial, axial, cuttingPlane, static_cast<SlicerType>(mode))); |
1781
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
546 ASSERT_TRUE(AreSameImages(layer->GetTexture(), pattern)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
547 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
548 OrthancStone::Extent2D extent; |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
549 layer->GetBoundingBox(extent); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
550 ASSERT_FLOAT_EQ(x - 0.5, extent.GetX1()); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
551 ASSERT_FLOAT_EQ(y - 0.5, extent.GetY1()); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
552 ASSERT_FLOAT_EQ(x + 2.5, extent.GetX2()); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
553 ASSERT_FLOAT_EQ(y + 2.5, extent.GetY2()); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
554 |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
555 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 15, 15, false)); |
1781
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
556 ASSERT_TRUE(IsConstImageWithExclusion(0.0f, *rendered, 9, 8, 3, 3)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
557 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
558 Orthanc::ImageAccessor p; |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
559 rendered->GetRegion(p, 9, 8, 3, 3); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
560 ASSERT_TRUE(AreSameImages(p, pattern)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
561 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
562 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
563 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
564 OrthancStone::CoordinateSystem3D cuttingPlane(OrthancStone::LinearAlgebra::CreateVector(0, 0, 0), |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
565 OrthancStone::LinearAlgebra::CreateVector(-1, 0, 0), |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
566 OrthancStone::LinearAlgebra::CreateVector(0, 1, 0)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
567 |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
568 std::unique_ptr<OrthancStone::TextureBaseSceneLayer> layer( |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
569 Slice3x3x1Pattern(OrthancStone::VolumeProjection_Axial, axial, cuttingPlane, static_cast<SlicerType>(mode))); |
1781
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
570 if (mode == 1) |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
571 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
572 // Reslicer directly flips the pixels of the texture |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
573 ASSERT_TRUE(AreSameImages(layer->GetTexture(), patternX)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
574 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
575 else |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
576 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
577 // MPR slicer uses "TextureBaseSceneLayer::SetTransform()" to flip |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
578 ASSERT_TRUE(AreSameImages(layer->GetTexture(), pattern)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
579 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
580 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
581 OrthancStone::Extent2D extent; |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
582 layer->GetBoundingBox(extent); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
583 ASSERT_FLOAT_EQ(-(x + 2.5), extent.GetX1()); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
584 ASSERT_FLOAT_EQ(y - 0.5, extent.GetY1()); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
585 ASSERT_FLOAT_EQ(-(x - 0.5), extent.GetX2()); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
586 ASSERT_FLOAT_EQ(y + 2.5, extent.GetY2()); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
587 |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
588 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 15, 15, false)); |
1781
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
589 ASSERT_TRUE(IsConstImageWithExclusion(0.0f, *rendered, 3, 8, 3, 3)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
590 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
591 Orthanc::ImageAccessor p; |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
592 rendered->GetRegion(p, 3, 8, 3, 3); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
593 ASSERT_TRUE(AreSameImages(p, patternX)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
594 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
595 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
596 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
597 OrthancStone::CoordinateSystem3D cuttingPlane(OrthancStone::LinearAlgebra::CreateVector(0, 0, 0), |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
598 OrthancStone::LinearAlgebra::CreateVector(1, 0, 0), |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
599 OrthancStone::LinearAlgebra::CreateVector(0, -1, 0)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
600 |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
601 std::unique_ptr<OrthancStone::TextureBaseSceneLayer> layer( |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
602 Slice3x3x1Pattern(OrthancStone::VolumeProjection_Axial, axial, cuttingPlane, static_cast<SlicerType>(mode))); |
1781
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
603 if (mode == 1) |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
604 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
605 ASSERT_TRUE(AreSameImages(layer->GetTexture(), patternY)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
606 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
607 else |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
608 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
609 ASSERT_TRUE(AreSameImages(layer->GetTexture(), pattern)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
610 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
611 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
612 OrthancStone::Extent2D extent; |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
613 layer->GetBoundingBox(extent); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
614 ASSERT_FLOAT_EQ(x - 0.5, extent.GetX1()); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
615 ASSERT_FLOAT_EQ(-(y + 2.5), extent.GetY1()); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
616 ASSERT_FLOAT_EQ(x + 2.5, extent.GetX2()); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
617 ASSERT_FLOAT_EQ(-(y - 0.5), extent.GetY2()); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
618 |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
619 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 15, 15, false)); |
1781
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
620 ASSERT_TRUE(IsConstImageWithExclusion(0.0f, *rendered, 9, 4, 3, 3)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
621 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
622 Orthanc::ImageAccessor p; |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
623 rendered->GetRegion(p, 9, 4, 3, 3); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
624 ASSERT_TRUE(AreSameImages(p, patternY)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
625 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
626 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
627 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
628 OrthancStone::CoordinateSystem3D cuttingPlane(OrthancStone::LinearAlgebra::CreateVector(0, 0, 0), |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
629 OrthancStone::LinearAlgebra::CreateVector(-1, 0, 0), |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
630 OrthancStone::LinearAlgebra::CreateVector(0, -1, 0)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
631 |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
632 std::unique_ptr<OrthancStone::TextureBaseSceneLayer> layer( |
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
633 Slice3x3x1Pattern(OrthancStone::VolumeProjection_Axial, axial, cuttingPlane, static_cast<SlicerType>(mode))); |
1781
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
634 if (mode == 1) |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
635 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
636 ASSERT_TRUE(AreSameImages(layer->GetTexture(), patternXY)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
637 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
638 else |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
639 { |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
640 ASSERT_TRUE(AreSameImages(layer->GetTexture(), pattern)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
641 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
642 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
643 OrthancStone::Extent2D extent; |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
644 layer->GetBoundingBox(extent); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
645 ASSERT_FLOAT_EQ(-(x + 2.5), extent.GetX1()); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
646 ASSERT_FLOAT_EQ(-(y + 2.5), extent.GetY1()); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
647 ASSERT_FLOAT_EQ(-(x - 0.5), extent.GetX2()); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
648 ASSERT_FLOAT_EQ(-(y - 0.5), extent.GetY2()); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
649 |
1782
f053c80ea411
ImageBuffer3D::CommitSagittalSlice()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1781
diff
changeset
|
650 std::unique_ptr<Orthanc::ImageAccessor> rendered(Render(layer.release(), 15, 15, false)); |
1781
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
651 ASSERT_TRUE(IsConstImageWithExclusion(0.0f, *rendered, 3, 4, 3, 3)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
652 |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
653 Orthanc::ImageAccessor p; |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
654 rendered->GetRegion(p, 3, 4, 3, 3); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
655 ASSERT_TRUE(AreSameImages(p, patternXY)); |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
656 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
657 } |
bf4b15b059ea
unit test VolumeRendering.FlipAxial
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1780
diff
changeset
|
658 } |