1 /*=========================================================================
2 *
3 * Copyright Insight Software Consortium
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0.txt
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *=========================================================================*/
18
19 #include "itkMeshIOBase.h"
20
21 namespace itk
22 {
23 MeshIOBase
MeshIOBase()24 ::MeshIOBase() :
25 m_NumberOfPoints(itk::NumericTraits< SizeValueType >::ZeroValue()),
26 m_NumberOfCells(itk::NumericTraits< SizeValueType >::ZeroValue()),
27 m_NumberOfPointPixels(itk::NumericTraits< SizeValueType >::ZeroValue()),
28 m_NumberOfCellPixels(itk::NumericTraits< SizeValueType >::ZeroValue()),
29 m_CellBufferSize(itk::NumericTraits< SizeValueType >::ZeroValue())
30
31 {}
32
33 const MeshIOBase::ArrayOfExtensionsType &
34 MeshIOBase
GetSupportedReadExtensions() const35 ::GetSupportedReadExtensions() const
36 {
37 return this->m_SupportedReadExtensions;
38 }
39
40 const MeshIOBase::ArrayOfExtensionsType &
41 MeshIOBase
GetSupportedWriteExtensions() const42 ::GetSupportedWriteExtensions() const
43 {
44 return this->m_SupportedWriteExtensions;
45 }
46
47 void
48 MeshIOBase
AddSupportedReadExtension(const char * extension)49 ::AddSupportedReadExtension(const char *extension)
50 {
51 this->m_SupportedReadExtensions.push_back(extension);
52 }
53
54 void
55 MeshIOBase
AddSupportedWriteExtension(const char * extension)56 ::AddSupportedWriteExtension(const char *extension)
57 {
58 this->m_SupportedWriteExtensions.push_back(extension);
59 }
60
61 unsigned int
62 MeshIOBase
GetComponentSize(IOComponentType componentType) const63 ::GetComponentSize(IOComponentType componentType) const
64 {
65 switch ( componentType )
66 {
67 case UCHAR:
68 return sizeof( unsigned char );
69 case CHAR:
70 return sizeof( char );
71 case USHORT:
72 return sizeof( unsigned short );
73 case SHORT:
74 return sizeof( short );
75 case UINT:
76 return sizeof( unsigned int );
77 case INT:
78 return sizeof( int );
79 case ULONG:
80 return sizeof( unsigned long );
81 case LONG:
82 return sizeof( long );
83 case LONGLONG:
84 return sizeof( long long );
85 case ULONGLONG:
86 return sizeof( unsigned long long );
87 case FLOAT:
88 return sizeof( float );
89 case DOUBLE:
90 return sizeof( double );
91 case LDOUBLE:
92 return sizeof( long double );
93 case UNKNOWNCOMPONENTTYPE:
94 default:
95 itkExceptionMacro ("Unknown component type: " << componentType);
96 }
97 }
98
99 std::string
100 MeshIOBase
GetFileTypeAsString(FileType t) const101 ::GetFileTypeAsString(FileType t) const
102 {
103 switch ( t )
104 {
105 case ASCII:
106 return std::string("ASCII");
107 case BINARY:
108 return std::string("BINARY");
109 case TYPENOTAPPLICABLE:
110 break;
111 default:
112 break;
113 }
114 return std::string("TYPENOTAPPLICABLE");
115 }
116
117 std::string
118 MeshIOBase::
GetByteOrderAsString(ByteOrder t) const119 GetByteOrderAsString(ByteOrder t) const
120 {
121 switch ( t )
122 {
123 case BigEndian:
124 return std::string("BigEndian");
125 case LittleEndian:
126 return std::string("LittleEndian");
127 case OrderNotApplicable:
128 break;
129 default:
130 break;
131 }
132 return std::string("OrderNotApplicable");
133 }
134
135 std::string
136 MeshIOBase
GetComponentTypeAsString(IOComponentType t) const137 ::GetComponentTypeAsString(IOComponentType t) const
138 {
139 switch ( t )
140 {
141 case UCHAR:
142 return std::string( "unsigned_char" );
143 case CHAR:
144 return std::string( "char" );
145 case USHORT:
146 return std::string( "unsigned_short" );
147 case SHORT:
148 return std::string( "short" );
149 case UINT:
150 return std::string( "unsigned_int" );
151 case INT:
152 return std::string( "int" );
153 case ULONG:
154 return std::string( "unsigned_long" );
155 case LONG:
156 return std::string( "long" );
157 case LONGLONG:
158 return std::string( "long_long" );
159 case ULONGLONG:
160 return std::string( "unsigned_long_long" );
161 case FLOAT:
162 return std::string( "float" );
163 case DOUBLE:
164 return std::string( "double" );
165 case LDOUBLE:
166 return std::string( "long_double" );
167 case UNKNOWNCOMPONENTTYPE:
168 return std::string( "unknown" );
169 default:
170 break;
171 }
172 itkExceptionMacro ("Unknown component type: " << t);
173 }
174
175 std::string
176 MeshIOBase
GetPixelTypeAsString(IOPixelType t) const177 ::GetPixelTypeAsString(IOPixelType t) const
178 {
179 switch ( t )
180 {
181 case SCALAR:
182 return std::string( "scalar" );
183 case VECTOR:
184 return std::string( "vector" );
185 case COVARIANTVECTOR:
186 return std::string( "covariant_vector" );
187 case POINT:
188 return std::string( "point" );
189 case OFFSET:
190 return std::string( "offset" );
191 case RGB:
192 return std::string( "rgb" );
193 case RGBA:
194 return std::string( "rgba" );
195 case SYMMETRICSECONDRANKTENSOR:
196 return std::string( "symmetric_second_rank_tensor" );
197 case DIFFUSIONTENSOR3D:
198 return std::string( "diffusion_tensor_3D" );
199 case COMPLEX:
200 return std::string( "complex" );
201 case FIXEDARRAY:
202 return std::string( "fixed_array" );
203 case ARRAY:
204 return std::string( "array" );
205 case MATRIX:
206 return std::string( "matrix" );
207 case VARIABLELENGTHVECTOR:
208 return std::string( "variable_length_vector" );
209 case VARIABLESIZEMATRIX:
210 return std::string( "variable_size_matrix" );
211 case UNKNOWNPIXELTYPE:
212 return std::string( "unknown" );
213 default:
214 break;
215 }
216 itkExceptionMacro ("Unknown pixel type: " << t);
217 }
218
219 void
220 MeshIOBase
PrintSelf(std::ostream & os,Indent indent) const221 ::PrintSelf(std::ostream & os, Indent indent) const
222 {
223 Superclass::PrintSelf(os, indent);
224
225 os << indent << "FileName: " << m_FileName << std::endl;
226 os << indent << "FileType: " << GetFileTypeAsString(m_FileType) << std::endl;
227 os << indent << "ByteOrder: " << GetByteOrderAsString(m_ByteOrder) << std::endl;
228 os << indent << "Point dimension: " << m_PointDimension << std::endl;
229 os << indent << "Point component type: " << GetComponentTypeAsString(m_PointComponentType) << std::endl;
230 os << indent << "Cell component type: " << GetComponentTypeAsString(m_CellComponentType) << std::endl;
231 os << indent << "Number of point pixel components: " << m_NumberOfPointPixelComponents << std::endl;
232 os << indent << "Number of cell pixel components: " << m_NumberOfCellPixelComponents << std::endl;
233 os << indent << "Number of points: " << m_NumberOfPoints << std::endl;
234 os << indent << "Number of cells: " << m_NumberOfCells << std::endl;
235 os << indent << "Number of point pixels: " << m_NumberOfPointPixels << std::endl;
236 os << indent << "Number of cell pixels: " << m_NumberOfCellPixels << std::endl;
237 os << indent << "Point pixel type: " << GetPixelTypeAsString(m_PointPixelType) << std::endl;
238 os << indent << "Cell pixel type: " << GetPixelTypeAsString(m_CellPixelType) << std::endl;
239 os << indent << "Point pixel component type: " << GetComponentTypeAsString(m_PointPixelComponentType) << std::endl;
240 os << indent << "Cell pixel component type: " << GetComponentTypeAsString(m_CellPixelComponentType) << std::endl;
241 }
242 } // namespace itk end
243