Skip to content

Commit 1ba6681

Browse files
committed
ENH: Expand Visual Studio debug visualizer specifications
* Generalize FixedArray for template types other than float/double * Add customized member names for Point Add new visualizers for: * Vector * CovariantVector * ContinuousIndex * RGBPixel * RGBAPixel * VariableLengthVector * Matrix
1 parent 9a1f98f commit 1ba6681

1 file changed

Lines changed: 146 additions & 9 deletions

File tree

Utilities/Debugger/ITK.natvis

Lines changed: 146 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -86,41 +86,178 @@
8686
</Expand>
8787
</Type>
8888

89-
<Type Name="itk::FixedArray&lt;double,1&gt;" Inheritable="true">
90-
<AlternativeType Name="itk::FixedArray&lt;float,1&gt;" Inheritable="true"/>
89+
<Type Name="itk::FixedArray&lt;*,1&gt;" Inheritable="true">
9190
<DisplayString>[{m_InternalArray[0],g}]</DisplayString>
9291
<Expand>
9392
<Item Name="i">m_InternalArray[0]</Item>
9493
</Expand>
9594
</Type>
96-
<Type Name="itk::FixedArray&lt;double,2&gt;" Inheritable="true">
97-
<AlternativeType Name="itk::FixedArray&lt;float,2&gt;" Inheritable="true"/>
95+
<Type Name="itk::FixedArray&lt;*,2&gt;" Inheritable="true">
9896
<DisplayString>[{m_InternalArray[0],g}, {m_InternalArray[1],g}]</DisplayString>
9997
<Expand>
10098
<Item Name="i">m_InternalArray[0]</Item>
10199
<Item Name="j">m_InternalArray[1]</Item>
102100
</Expand>
103101
</Type>
104-
<Type Name="itk::FixedArray&lt;double,3&gt;" Inheritable="true">
105-
<AlternativeType Name="itk::FixedArray&lt;float,3&gt;" Inheritable="true"/>
102+
<Type Name="itk::FixedArray&lt;*,3&gt;" Inheritable="true">
106103
<DisplayString>[{m_InternalArray[0],g}, {m_InternalArray[1],g}, {m_InternalArray[2],g}]</DisplayString>
107104
<Expand>
108105
<Item Name="i">m_InternalArray[0]</Item>
109106
<Item Name="j">m_InternalArray[1]</Item>
110107
<Item Name="k">m_InternalArray[2]</Item>
111108
</Expand>
112109
</Type>
113-
<Type Name="itk::FixedArray&lt;double,*&gt;" Inheritable="true">
114-
<AlternativeType Name="itk::FixedArray&lt;float,*&gt;" Inheritable="true"/>
110+
<Type Name="itk::FixedArray&lt;*,*&gt;" Inheritable="true">
115111
<DisplayString>{m_InternalArray}</DisplayString>
116112
<Expand>
117113
<ArrayItems>
118-
<Size>$T1</Size>
114+
<Size>$T2</Size>
115+
<ValuePointer>m_InternalArray</ValuePointer>
116+
</ArrayItems>
117+
</Expand>
118+
</Type>
119+
120+
<!-- Point, Vector and CovariantVector are all subclasses of FixedArray and inherit
121+
its visualizers automatically; these entries only override the display name. -->
122+
<Type Name="itk::Point&lt;*,1&gt;" Inheritable="true">
123+
<DisplayString>Point[{m_InternalArray[0],g}]</DisplayString>
124+
<Expand>
125+
<Item Name="x">m_InternalArray[0]</Item>
126+
</Expand>
127+
</Type>
128+
<Type Name="itk::Point&lt;*,2&gt;" Inheritable="true">
129+
<DisplayString>Point[{m_InternalArray[0],g}, {m_InternalArray[1],g}]</DisplayString>
130+
<Expand>
131+
<Item Name="x">m_InternalArray[0]</Item>
132+
<Item Name="y">m_InternalArray[1]</Item>
133+
</Expand>
134+
</Type>
135+
<Type Name="itk::Point&lt;*,3&gt;" Inheritable="true">
136+
<DisplayString>Point[{m_InternalArray[0],g}, {m_InternalArray[1],g}, {m_InternalArray[2],g}]</DisplayString>
137+
<Expand>
138+
<Item Name="x">m_InternalArray[0]</Item>
139+
<Item Name="y">m_InternalArray[1]</Item>
140+
<Item Name="z">m_InternalArray[2]</Item>
141+
</Expand>
142+
</Type>
143+
<Type Name="itk::Point&lt;*,*&gt;" Inheritable="true">
144+
<DisplayString>Point{m_InternalArray}</DisplayString>
145+
<Expand>
146+
<ArrayItems>
147+
<Size>$T2</Size>
148+
<ValuePointer>m_InternalArray</ValuePointer>
149+
</ArrayItems>
150+
</Expand>
151+
</Type>
152+
153+
<Type Name="itk::Vector&lt;*,*&gt;" Inheritable="true">
154+
<DisplayString>Vector{m_InternalArray}</DisplayString>
155+
<Expand>
156+
<ArrayItems>
157+
<Size>$T2</Size>
158+
<ValuePointer>m_InternalArray</ValuePointer>
159+
</ArrayItems>
160+
</Expand>
161+
</Type>
162+
163+
<Type Name="itk::CovariantVector&lt;*,*&gt;" Inheritable="true">
164+
<DisplayString>CovariantVector{m_InternalArray}</DisplayString>
165+
<Expand>
166+
<ArrayItems>
167+
<Size>$T2</Size>
119168
<ValuePointer>m_InternalArray</ValuePointer>
120169
</ArrayItems>
121170
</Expand>
122171
</Type>
123172

173+
<Type Name="itk::ContinuousIndex&lt;*,1&gt;" Inheritable="true">
174+
<DisplayString>ContinuousIndex[{m_InternalArray[0]}]</DisplayString>
175+
<Expand>
176+
<Item Name="i">m_InternalArray[0]</Item>
177+
</Expand>
178+
</Type>
179+
<Type Name="itk::ContinuousIndex&lt;*,2&gt;" Inheritable="true">
180+
<DisplayString>ContinuousIndex[{m_InternalArray[0]}, {m_InternalArray[1]}]</DisplayString>
181+
<Expand>
182+
<Item Name="i">m_InternalArray[0]</Item>
183+
<Item Name="j">m_InternalArray[1]</Item>
184+
</Expand>
185+
</Type>
186+
<Type Name="itk::ContinuousIndex&lt;*,3&gt;" Inheritable="true">
187+
<DisplayString>ContinuousIndex[{m_InternalArray[0]}, {m_InternalArray[1]}, {m_InternalArray[2]}]</DisplayString>
188+
<Expand>
189+
<Item Name="i">m_InternalArray[0]</Item>
190+
<Item Name="j">m_InternalArray[1]</Item>
191+
<Item Name="k">m_InternalArray[2]</Item>
192+
</Expand>
193+
</Type>
194+
<Type Name="itk::ContinuousIndex&lt;*,*&gt;" Inheritable="true">
195+
<DisplayString>ContinuousIndex{m_InternalArray}</DisplayString>
196+
<Expand>
197+
<ArrayItems>
198+
<Size>$T2</Size>
199+
<ValuePointer>m_InternalArray</ValuePointer>
200+
</ArrayItems>
201+
</Expand>
202+
</Type>
203+
204+
<Type Name="itk::RGBPixel&lt;*&gt;" Inheritable="true">
205+
<DisplayString>RGB({m_InternalArray[0]}, {m_InternalArray[1]}, {m_InternalArray[2]})</DisplayString>
206+
<Expand>
207+
<Item Name="Red">m_InternalArray[0]</Item>
208+
<Item Name="Green">m_InternalArray[1]</Item>
209+
<Item Name="Blue">m_InternalArray[2]</Item>
210+
</Expand>
211+
</Type>
212+
213+
<Type Name="itk::RGBAPixel&lt;*&gt;" Inheritable="true">
214+
<DisplayString>RGBA({m_InternalArray[0]}, {m_InternalArray[1]}, {m_InternalArray[2]}, {m_InternalArray[3]})</DisplayString>
215+
<Expand>
216+
<Item Name="Red">m_InternalArray[0]</Item>
217+
<Item Name="Green">m_InternalArray[1]</Item>
218+
<Item Name="Blue">m_InternalArray[2]</Item>
219+
<Item Name="Alpha">m_InternalArray[3]</Item>
220+
</Expand>
221+
</Type>
222+
223+
<Type Name="itk::VariableLengthVector&lt;*&gt;">
224+
<DisplayString Condition="m_Data == 0">empty</DisplayString>
225+
<DisplayString>{m_Data,[m_NumElements]}</DisplayString>
226+
<Expand>
227+
<Item Name="Size">m_NumElements</Item>
228+
<Item Name="ManagesMemory">m_LetArrayManageMemory</Item>
229+
<ArrayItems>
230+
<Size>m_NumElements</Size>
231+
<ValuePointer>m_Data</ValuePointer>
232+
</ArrayItems>
233+
</Expand>
234+
</Type>
235+
236+
<Type Name="itk::Array&lt;*&gt;">
237+
<DisplayString Condition="data == 0">empty</DisplayString>
238+
<DisplayString>{data,[num_elmts]}</DisplayString>
239+
<Expand>
240+
<Item Name="Size">num_elmts</Item>
241+
<ArrayItems>
242+
<Size>num_elmts</Size>
243+
<ValuePointer>data</ValuePointer>
244+
</ArrayItems>
245+
</Expand>
246+
</Type>
247+
248+
<Type Name="itk::Matrix&lt;*,*,*&gt;">
249+
<DisplayString>Matrix {$T2}x{$T3}</DisplayString>
250+
<Expand>
251+
<ArrayItems>
252+
<Direction>Forward</Direction>
253+
<Rank>2</Rank>
254+
<Size>$T2</Size>
255+
<Size>$T3</Size>
256+
<ValuePointer>m_Matrix.data_[0]</ValuePointer>
257+
</ArrayItems>
258+
</Expand>
259+
</Type>
260+
124261
<Type Name="itk::ImageRegion&lt;1&gt;">
125262
<DisplayString>({m_Index}->[{m_Index.m_InternalArray[0] + long long(m_Size.m_InternalArray[0])}])</DisplayString>
126263
<Expand>

0 commit comments

Comments
 (0)