-#define BBTK_TEMPLATE_VTK_IMAGE_DATA_SWITCH_DIM(I,DIM,M) \
- if (I->GetDataDimension()==DIM) \
- { \
- if (I->GetScalarType()==VTK_CHAR) M<char,DIM>(); \
- else if (I->GetScalarType()==VTK_SIGNED_CHAR) M<signed char,DIM>(); \
- else if (I->GetScalarType()==VTK_UNSIGNED_CHAR) M<unsigned char,DIM>(); \
- else if (I->GetScalarType()==VTK_SHORT) M<short,DIM>(); \
- else if (I->GetScalarType()==VTK_UNSIGNED_SHORT) M<unsigned short,DIM>(); \
- else if (I->GetScalarType()==VTK_INT) M<int,DIM>(); \
- else if (I->GetScalarType()==VTK_UNSIGNED_INT) M<unsigned int,DIM>(); \
- else if (I->GetScalarType()==VTK_LONG) M<long,DIM>(); \
- else if (I->GetScalarType()==VTK_UNSIGNED_LONG) M<unsigned long,DIM>(); \
- else if (I->GetScalarType()==VTK_FLOAT) M<float,DIM>(); \
- else if (I->GetScalarType()==VTK_DOUBLE) M<double,DIM>(); \
+// we assume all the vector elements have the same type
+#define BBTK_TEMPLATE_VTK_IMAGE_DATA_SWITCH_DIM(I,DIM,M) \
+ if (I[0]->GetDataDimension()==DIM) \
+ { \
+ if (I[0]->GetScalarType()==VTK_CHAR) M<char,DIM>(); \
+ else if (I[0]->GetScalarType()==VTK_SIGNED_CHAR) M<signed char,DIM>(); \
+ else if (I[0]->GetScalarType()==VTK_UNSIGNED_CHAR) M<unsigned char,DIM>(); \
+ else if (I[0]->GetScalarType()==VTK_SHORT) M<short,DIM>(); \
+ else if (I[0]->GetScalarType()==VTK_UNSIGNED_SHORT) M<unsigned short,DIM>(); \
+ else if (I[0]->GetScalarType()==VTK_INT) M<int,DIM>(); \
+ else if (I[0]->GetScalarType()==VTK_UNSIGNED_INT) M<unsigned int,DIM>(); \
+ else if (I[0]->GetScalarType()==VTK_LONG) M<long,DIM>(); \
+ else if (I[0]->GetScalarType()==VTK_UNSIGNED_LONG) M<unsigned long,DIM>(); \
+ else if (I[0]->GetScalarType()==VTK_FLOAT) M<float,DIM>(); \
+ else if (I[0]->GetScalarType()==VTK_DOUBLE) M<double,DIM>(); \