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