MeVisLabToolboxReference
|
00001 // **InsertLicense** code 00002 //---------------------------------------------------------------------------------- 00004 00008 //---------------------------------------------------------------------------------- 00009 #ifndef __mlITKNonScalarSupport_H 00010 #define __mlITKNonScalarSupport_H 00011 00012 #ifndef __mlITKSupport_H 00013 #include "mlITKSupport.h" 00014 #endif 00015 00016 #include <complex> 00017 #include <itkDiffusionTensor3D.h> 00018 00019 00020 00021 ML_START_NAMESPACE 00022 00024 typedef itk::Vector<float, 2> mlItkVector2f; 00025 typedef itk::Vector<float, 3> mlItkVector3f; 00026 typedef itk::Vector<float, 4> mlItkVector4f; 00027 typedef itk::Vector<float, 6> mlItkVector6f; 00028 typedef itk::Vector<float, 8> mlItkVector8f; 00029 typedef itk::CovariantVector<float, 2> mlItkCVVector2f; 00030 typedef itk::CovariantVector<float, 3> mlItkCVVector3f; 00031 typedef itk::CovariantVector<float, 4> mlItkCVVector4f; 00032 typedef itk::CovariantVector<float, 6> mlItkCVVector6f; 00033 typedef itk::CovariantVector<float, 8> mlItkCVVector8f; 00035 00037 typedef itk::Vector<double, 2> mlItkVector2d; 00038 typedef itk::Vector<double, 3> mlItkVector3d; 00039 typedef itk::Vector<double, 4> mlItkVector4d; 00040 typedef itk::Vector<double, 6> mlItkVector6d; 00041 typedef itk::Vector<double, 8> mlItkVector8d; 00042 typedef itk::CovariantVector<double, 2> mlItkCVVector2d; 00043 typedef itk::CovariantVector<double, 3> mlItkCVVector3d; 00044 typedef itk::CovariantVector<double, 4> mlItkCVVector4d; 00045 typedef itk::CovariantVector<double, 6> mlItkCVVector6d; 00046 typedef itk::CovariantVector<double, 8> mlItkCVVector8d; 00048 00050 typedef std::complex<float> mlItkComplexf; 00051 typedef std::complex<double> mlItkComplexd; 00053 00055 typedef std::complex<float> Complexf; 00056 typedef std::complex<double> Complexd; 00058 00060 typedef itk::DiffusionTensor3D<float> mlItkDiffusionTensor3Df; 00061 typedef itk::DiffusionTensor3D<double> mlItkDiffusionTensor3Dd; 00062 typedef itk::SymmetricSecondRankTensor<float, 3> mlItkSymmetricSecondRankTensor3Df; 00063 typedef itk::SymmetricSecondRankTensor<double,3> mlItkSymmetricSecondRankTensor3Dd; 00065 00066 00067 00070 #define _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME) \ 00071 case MLuint8Type: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Dummy MLuint8Type type is not legal and is ignored."); break; 00072 00073 //--------------------------------------------------------------------------- 00074 // 00076 // 00077 //--------------------------------------------------------------------------- 00079 #define _ML_IMPLEMENT_FVECTOR_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, ML_IT_VEC_TYPE) \ 00080 case MLVector2fType : \ 00081 DIM_INST(Vector2f, ML_IT_VEC_TYPE##2f, Vector2f, ML_IT_VEC_TYPE##2f, USER_CODE, CLASS_NAME, DIM); \ 00082 break; \ 00083 \ 00084 case MLVector3fType : \ 00085 DIM_INST(Vector3f, ML_IT_VEC_TYPE##3f, Vector3f, ML_IT_VEC_TYPE##3f, USER_CODE, CLASS_NAME, DIM); \ 00086 break; \ 00087 \ 00088 case MLVector4fType : \ 00089 DIM_INST(Vector4f, ML_IT_VEC_TYPE##4f, Vector4f, ML_IT_VEC_TYPE##4f, USER_CODE, CLASS_NAME, DIM); \ 00090 break; \ 00091 \ 00092 case MLVector6fType : \ 00093 DIM_INST(Vector6f, ML_IT_VEC_TYPE##6f, Vector6f, ML_IT_VEC_TYPE##6f, USER_CODE, CLASS_NAME, DIM); \ 00094 break; \ 00095 \ 00096 case MLVector8fType : \ 00097 DIM_INST(Vector8f, ML_IT_VEC_TYPE##8f, Vector8f, ML_IT_VEC_TYPE##8f, USER_CODE, CLASS_NAME, DIM); \ 00098 break; \ 00099 00100 00101 #define _ML_IMPLEMENT_DVECTOR_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, ML_IT_VEC_TYPE) \ 00102 case MLVector2dType : \ 00103 DIM_INST(Vector2d, ML_IT_VEC_TYPE##2d, Vector2d, ML_IT_VEC_TYPE##2d, USER_CODE, CLASS_NAME, DIM); \ 00104 break; \ 00105 \ 00106 case MLVector3dType : \ 00107 DIM_INST(Vector3d, ML_IT_VEC_TYPE##3d, Vector3d, ML_IT_VEC_TYPE##3d, USER_CODE, CLASS_NAME, DIM); \ 00108 break; \ 00109 \ 00110 case MLVector4dType : \ 00111 DIM_INST(Vector4d, ML_IT_VEC_TYPE##4d, Vector4d, ML_IT_VEC_TYPE##4d, USER_CODE, CLASS_NAME, DIM); \ 00112 break; \ 00113 \ 00114 case MLVector6dType : \ 00115 DIM_INST(Vector6d, ML_IT_VEC_TYPE##6d, Vector6d, ML_IT_VEC_TYPE##6d, USER_CODE, CLASS_NAME, DIM); \ 00116 break; \ 00117 \ 00118 case MLVector8dType : \ 00119 DIM_INST(Vector8d, ML_IT_VEC_TYPE##8d, Vector8d, ML_IT_VEC_TYPE##8d, USER_CODE, CLASS_NAME, DIM); \ 00120 break; \ 00121 \ 00122 \ 00123 00124 00125 #define _ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, FCASES, DCASES) \ 00126 { \ 00127 /* Check for float component of first component of output image type. */ \ 00128 bool isFloatType = _addOns->getOutSubImageTypeInfos()->structInfoString[0]=='f'; \ 00129 bool isDoubleType = _addOns->getOutSubImageTypeInfos()->structInfoString[0]=='d'; \ 00130 if (isFloatType){ \ 00131 switch (DATATYPE_ENUM){ \ 00132 FCASES \ 00133 default: { \ 00134 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, \ 00135 "Data type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES, 1).", \ 00136 ", DATATYPE_ENUM=", DATATYPE_ENUM); \ 00137 } \ 00138 break; \ 00139 } \ 00140 } \ 00141 else if (isDoubleType){ \ 00142 switch (DATATYPE_ENUM){ \ 00143 DCASES \ 00144 default: { \ 00145 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, \ 00146 "Data type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES, 2).", \ 00147 ", DATATYPE_ENUM=", DATATYPE_ENUM); \ 00148 } \ 00149 break; \ 00150 } \ 00151 } \ 00152 else { \ 00153 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, \ 00154 "Input data type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES)," \ 00155 "because it is neither a float nor a double vector type.", \ 00156 ", DATATYPE_ENUM=", DATATYPE_ENUM); \ 00157 } \ 00158 } \ 00159 00160 00161 00162 00163 00164 //--------------------------------------------------------------------------- 00165 // 00167 // 00168 //--------------------------------------------------------------------------- 00170 #define _ML_IMPLEMENT_FVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, ML_IT_VEC_TYPE) \ 00171 case MLVector2fType : \ 00172 if (MLint16Type == _m_PixelType){ \ 00173 DIM_INST(MLint16, MLint16, Vector2f, ML_IT_VEC_TYPE##2f, USER_CODE, CLASS_NAME, DIM); \ 00174 } else { \ 00175 DIM_INST(MLint32, MLint32, Vector2f, ML_IT_VEC_TYPE##2f, USER_CODE, CLASS_NAME, DIM); \ 00176 } \ 00177 break; \ 00178 \ 00179 case MLVector3fType : \ 00180 if (MLint16Type == _m_PixelType){ \ 00181 DIM_INST(MLint16, MLint16, Vector3f, ML_IT_VEC_TYPE##3f, USER_CODE, CLASS_NAME, DIM); \ 00182 } else { \ 00183 DIM_INST(MLint32, MLint32, Vector3f, ML_IT_VEC_TYPE##3f, USER_CODE, CLASS_NAME, DIM); \ 00184 } \ 00185 break; \ 00186 \ 00187 case MLVector4fType : \ 00188 if (MLint16Type == _m_PixelType){ \ 00189 DIM_INST(MLint16, MLint16, Vector4f, ML_IT_VEC_TYPE##4f, USER_CODE, CLASS_NAME, DIM); \ 00190 } else { \ 00191 DIM_INST(MLint32, MLint32, Vector4f, ML_IT_VEC_TYPE##4f, USER_CODE, CLASS_NAME, DIM); \ 00192 } \ 00193 break; \ 00194 \ 00195 case MLVector6fType : \ 00196 if (MLint16Type == _m_PixelType){ \ 00197 DIM_INST(MLint16, MLint16, Vector6f, ML_IT_VEC_TYPE##6f, USER_CODE, CLASS_NAME, DIM); \ 00198 } else { \ 00199 DIM_INST(MLint32, MLint32, Vector6f, ML_IT_VEC_TYPE##6f, USER_CODE, CLASS_NAME, DIM); \ 00200 } \ 00201 break; \ 00202 \ 00203 case MLVector8fType : \ 00204 if (MLint16Type == _m_PixelType){ \ 00205 DIM_INST(MLint16, MLint16, Vector8f, ML_IT_VEC_TYPE##8f, USER_CODE, CLASS_NAME, DIM); \ 00206 } else { \ 00207 DIM_INST(MLint32, MLint32, Vector8f, ML_IT_VEC_TYPE##8f, USER_CODE, CLASS_NAME, DIM); \ 00208 } \ 00209 break; \ 00210 00211 00212 #define _ML_IMPLEMENT_DVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, ML_IT_VEC_TYPE) \ 00213 case MLVector2dType : \ 00214 if (MLint16Type == _m_PixelType){ \ 00215 DIM_INST(MLint16, MLint16, Vector2d, ML_IT_VEC_TYPE##2d, USER_CODE, CLASS_NAME, DIM); \ 00216 } else { \ 00217 DIM_INST(MLint32, MLint32, Vector2d, ML_IT_VEC_TYPE##2d, USER_CODE, CLASS_NAME, DIM); \ 00218 } \ 00219 break; \ 00220 \ 00221 case MLVector3dType : \ 00222 if (MLint16Type == _m_PixelType){ \ 00223 DIM_INST(MLint16, MLint16, Vector3d, ML_IT_VEC_TYPE##3d, USER_CODE, CLASS_NAME, DIM); \ 00224 } else { \ 00225 DIM_INST(MLint32, MLint32, Vector3d, ML_IT_VEC_TYPE##3d, USER_CODE, CLASS_NAME, DIM); \ 00226 } \ 00227 break; \ 00228 \ 00229 case MLVector4dType : \ 00230 if (MLint16Type == _m_PixelType){ \ 00231 DIM_INST(MLint16, MLint16, Vector4d, ML_IT_VEC_TYPE##4d, USER_CODE, CLASS_NAME, DIM); \ 00232 } else { \ 00233 DIM_INST(MLint32, MLint32, Vector4d, ML_IT_VEC_TYPE##4d, USER_CODE, CLASS_NAME, DIM); \ 00234 } \ 00235 break; \ 00236 \ 00237 case MLVector6dType : \ 00238 if (MLint16Type == _m_PixelType){ \ 00239 DIM_INST(MLint16, MLint16, Vector6d, ML_IT_VEC_TYPE##6d, USER_CODE, CLASS_NAME, DIM); \ 00240 } else { \ 00241 DIM_INST(MLint32, MLint32, Vector6d, ML_IT_VEC_TYPE##6d, USER_CODE, CLASS_NAME, DIM); \ 00242 } \ 00243 break; \ 00244 \ 00245 case MLVector8dType : \ 00246 if (MLint16Type == _m_PixelType){ \ 00247 DIM_INST(MLint16, MLint16, Vector8d, ML_IT_VEC_TYPE##8d, USER_CODE, CLASS_NAME, DIM); \ 00248 } else { \ 00249 DIM_INST(MLint32, MLint32, Vector8d, ML_IT_VEC_TYPE##8d, USER_CODE, CLASS_NAME, DIM); \ 00250 } \ 00251 break; \ 00252 00253 00254 #define _ML_IMPLEMENT_FDVECTOR_TO_INT_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, FCASES, DCASES) \ 00255 { \ 00256 /* Check first component of input pixel type to select correct implementation for float or double vectors. */ \ 00257 bool isFloatType = _addOns->getInSubImageTypeInfos()->structInfoString[0]=='f'; \ 00258 bool isDoubleType = _addOns->getInSubImageTypeInfos()->structInfoString[0]=='d'; \ 00259 if (isFloatType){ \ 00260 const MLDataType fDataType = _addOns->getInputSubImageDataType(); \ 00261 switch (fDataType){ \ 00262 FCASES \ 00263 default: { \ 00264 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, \ 00265 "Input type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_INT_CASES, 1).", \ 00266 ", fDataType=", fDataType, ", _m_PixelType=", _m_PixelType); \ 00267 } \ 00268 break; \ 00269 }; \ 00270 } \ 00271 else if (isDoubleType){ \ 00272 const MLDataType dDataType = _addOns->getInputSubImageDataType(); \ 00273 switch (dDataType){ \ 00274 DCASES \ 00275 default: { \ 00276 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, \ 00277 "Input type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_INT_CASES, 2).", \ 00278 ", dDataType=", dDataType, ", _m_PixelType=", _m_PixelType); \ 00279 } \ 00280 }; \ 00281 } \ 00282 else{ \ 00283 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, \ 00284 "Input type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_INT_CASES), because it is neither " \ 00285 "a float nor a double vector type)", " _m_PixelType=", _m_PixelType); \ 00286 } \ 00287 } \ 00288 00289 00290 00291 00292 00293 //--------------------------------------------------------------------------- 00294 // 00296 // 00297 //--------------------------------------------------------------------------- 00299 #define _ML_IMPLEMENT_FVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, ML_IT_VEC_TYPE) \ 00300 case MLVector2fType : \ 00301 DIM_INST(MLfloat, MLfloat, Vector2f, ML_IT_VEC_TYPE##2f, USER_CODE, CLASS_NAME, DIM); \ 00302 break; \ 00303 \ 00304 case MLVector3fType : \ 00305 DIM_INST(MLfloat, MLfloat, Vector3f, ML_IT_VEC_TYPE##3f, USER_CODE, CLASS_NAME, DIM); \ 00306 break; \ 00307 \ 00308 case MLVector4fType : \ 00309 DIM_INST(MLfloat, MLfloat, Vector4f, ML_IT_VEC_TYPE##4f, USER_CODE, CLASS_NAME, DIM); \ 00310 break; \ 00311 \ 00312 case MLVector6fType : \ 00313 DIM_INST(MLfloat, MLfloat, Vector6f, ML_IT_VEC_TYPE##6f, USER_CODE, CLASS_NAME, DIM); \ 00314 break; \ 00315 \ 00316 case MLVector8fType : \ 00317 DIM_INST(MLfloat, MLfloat, Vector8f, ML_IT_VEC_TYPE##8f, USER_CODE, CLASS_NAME, DIM); \ 00318 break; \ 00319 00320 00321 #define _ML_IMPLEMENT_DVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, ML_IT_VEC_TYPE) \ 00322 case MLVector2dType : \ 00323 DIM_INST(MLdouble, MLdouble, Vector2d, ML_IT_VEC_TYPE##2d, USER_CODE, CLASS_NAME, DIM); \ 00324 break; \ 00325 \ 00326 case MLVector3dType : \ 00327 DIM_INST(MLdouble, MLdouble, Vector3d, ML_IT_VEC_TYPE##3d, USER_CODE, CLASS_NAME, DIM); \ 00328 break; \ 00329 \ 00330 case MLVector4dType : \ 00331 DIM_INST(MLdouble, MLdouble, Vector4d, ML_IT_VEC_TYPE##4d, USER_CODE, CLASS_NAME, DIM); \ 00332 break; \ 00333 \ 00334 case MLVector6dType : \ 00335 DIM_INST(MLdouble, MLdouble, Vector6d, ML_IT_VEC_TYPE##6d, USER_CODE, CLASS_NAME, DIM); \ 00336 break; \ 00337 \ 00338 case MLVector8dType : \ 00339 DIM_INST(MLdouble, MLdouble, Vector8d, ML_IT_VEC_TYPE##8d, USER_CODE, CLASS_NAME, DIM); \ 00340 break; \ 00341 00342 00343 #define _ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, FCASES, DCASES) \ 00344 { \ 00345 switch (_m_PixelType){ \ 00346 case MLfloatType : { \ 00347 const MLDataType fDataType = _addOns->getInputSubImageDataType(); \ 00348 switch (fDataType){ \ 00349 FCASES \ 00350 default: { \ 00351 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, \ 00352 "Input type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES, 1).", \ 00353 ", fDataType=", fDataType, ", _m_PixelType=", _m_PixelType);\ 00354 } \ 00355 break; \ 00356 }; \ 00357 }; \ 00358 break; \ 00359 \ 00360 case MLdoubleType : { \ 00361 const MLDataType dDataType = _addOns->getInputSubImageDataType(); \ 00362 switch (dDataType){ \ 00363 DCASES \ 00364 default: { \ 00365 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, \ 00366 "Input type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES, 2).", \ 00367 ", dDataType=", dDataType, ", _m_PixelType=", _m_PixelType); \ 00368 } \ 00369 }; \ 00370 }; \ 00371 break; \ 00372 \ 00373 default: { \ 00374 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, \ 00375 "Output type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES, 3).", \ 00376 ", _m_PixelType=", _m_PixelType); \ 00377 } \ 00378 break; \ 00379 } \ 00380 } \ 00381 00382 00383 //--------------------------------------------------------------------------- 00384 // 00386 // 00387 //--------------------------------------------------------------------------- 00389 #define _ML_IMPLEMENT_REAL_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, ML_IT_VEC_TYPE) \ 00390 case MLVector2fType : \ 00391 DIM_INST(Vector2f, ML_IT_VEC_TYPE##2f, MLfloat, MLfloat, USER_CODE, CLASS_NAME, DIM); \ 00392 break; \ 00393 \ 00394 case MLVector3fType : \ 00395 DIM_INST(Vector3f, ML_IT_VEC_TYPE##3f, MLfloat, MLfloat, USER_CODE, CLASS_NAME, DIM); \ 00396 break; \ 00397 \ 00398 case MLVector4fType : \ 00399 DIM_INST(Vector4f, ML_IT_VEC_TYPE##4f, MLfloat, MLfloat, USER_CODE, CLASS_NAME, DIM); \ 00400 break; \ 00401 \ 00402 case MLVector6fType : \ 00403 DIM_INST(Vector6f, ML_IT_VEC_TYPE##6f, MLfloat, MLfloat, USER_CODE, CLASS_NAME, DIM); \ 00404 break; \ 00405 \ 00406 case MLVector8fType : \ 00407 DIM_INST(Vector8f, ML_IT_VEC_TYPE##8f, MLfloat, MLfloat, USER_CODE, CLASS_NAME, DIM); \ 00408 break; \ 00409 00410 00411 #define _ML_IMPLEMENT_REAL_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, ML_IT_VEC_TYPE) \ 00412 case MLVector2dType : \ 00413 DIM_INST(Vector2d, ML_IT_VEC_TYPE##2d, MLdouble, MLdouble, USER_CODE, CLASS_NAME, DIM); \ 00414 break; \ 00415 \ 00416 case MLVector3dType : \ 00417 DIM_INST(Vector3d, ML_IT_VEC_TYPE##3d, MLdouble, MLdouble, USER_CODE, CLASS_NAME, DIM); \ 00418 break; \ 00419 \ 00420 case MLVector4dType : \ 00421 DIM_INST(Vector4d, ML_IT_VEC_TYPE##4d, MLdouble, MLdouble, USER_CODE, CLASS_NAME, DIM); \ 00422 break; \ 00423 \ 00424 case MLVector6dType : \ 00425 DIM_INST(Vector6d, ML_IT_VEC_TYPE##6d, MLdouble, MLdouble, USER_CODE, CLASS_NAME, DIM); \ 00426 break; \ 00427 \ 00428 case MLVector8dType : \ 00429 DIM_INST(Vector8d, ML_IT_VEC_TYPE##8d, MLdouble, MLdouble, USER_CODE, CLASS_NAME, DIM); \ 00430 break; \ 00431 00432 00433 #define _ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, FCASES, DCASES) \ 00434 { \ 00435 /* Check for float component of first component of output image type. */ \ 00436 bool isFloatType = _addOns->getOutSubImageTypeInfos()->structInfoString[0]=='f'; \ 00437 if (isFloatType){ \ 00438 switch (DATATYPE_ENUM){ \ 00439 FCASES \ 00440 default: { \ 00441 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Data type case not executed(_ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES, 1).", ", DATATYPE_ENUM=", DATATYPE_ENUM); \ 00442 } \ 00443 break; \ 00444 } \ 00445 } \ 00446 else{ \ 00447 switch (DATATYPE_ENUM){ \ 00448 DCASES \ 00449 default: { \ 00450 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Data type case not executed(_ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES, 2).", ", DATATYPE_ENUM=", DATATYPE_ENUM); \ 00451 } \ 00452 break; \ 00453 } \ 00454 } \ 00455 } \ 00456 00457 00458 00459 //--------------------------------------------------------------------------------------------------------------------------- 00461 //--------------------------------------------------------------------------------------------------------------------------- 00462 00463 //--------------------------------------------------------------------------- 00464 // Float and double vectors. 00465 //--------------------------------------------------------------------------- 00466 #define ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00467 _ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00468 _ML_IMPLEMENT_FVECTOR_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector),\ 00469 _ML_IMPLEMENT_DVECTOR_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector)) 00470 00471 #define ML_IMPLEMENT_FDVECTOR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00472 _ML_IMPLEMENT_FDVECTOR_TO_INT_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00473 _ML_IMPLEMENT_FVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector), \ 00474 _ML_IMPLEMENT_DVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector)) 00475 00476 #define ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00477 _ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00478 _ML_IMPLEMENT_FVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector), \ 00479 _ML_IMPLEMENT_DVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector)) 00480 00481 #define ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00482 _ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00483 _ML_IMPLEMENT_REAL_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector), \ 00484 _ML_IMPLEMENT_REAL_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector)) 00485 00486 00487 //--------------------------------------------------------------------------- 00488 // Only float vectors. 00489 //--------------------------------------------------------------------------- 00490 #define ML_IMPLEMENT_FVECTOR_TO_FVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00491 _ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00492 _ML_IMPLEMENT_FVECTOR_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector), \ 00493 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME)) 00494 00495 #define ML_IMPLEMENT_FVECTOR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00496 _ML_IMPLEMENT_FDVECTOR_TO_INT_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00497 _ML_IMPLEMENT_FVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector), \ 00498 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME)) 00499 00500 #define ML_IMPLEMENT_FVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00501 _ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00502 _ML_IMPLEMENT_FVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector), \ 00503 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME)) 00504 00505 #define ML_IMPLEMENT_REAL_TO_FVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00506 _ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00507 _ML_IMPLEMENT_REAL_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector), \ 00508 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME)) 00509 00510 //--------------------------------------------------------------------------- 00511 // Only double vectors. 00512 //--------------------------------------------------------------------------- 00513 #define ML_IMPLEMENT_DVECTOR_TO_DVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00514 _ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00515 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME), \ 00516 _ML_IMPLEMENT_DVECTOR_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector)) 00517 00518 #define ML_IMPLEMENT_DVECTOR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00519 _ML_IMPLEMENT_FDVECTOR_TO_INT_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00520 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME), \ 00521 _ML_IMPLEMENT_DVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector)) 00522 00523 #define ML_IMPLEMENT_DVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00524 _ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00525 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME), \ 00526 _ML_IMPLEMENT_DVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector)) 00527 00528 #define ML_IMPLEMENT_REAL_TO_DVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00529 _ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00530 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME), \ 00531 _ML_IMPLEMENT_REAL_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector)) 00532 00533 00534 00535 //--------------------------------------------------------------------------------------------------------------------------- 00537 //--------------------------------------------------------------------------------------------------------------------------- 00538 00539 //--------------------------------------------------------------------------- 00540 // Float and double vectors. 00541 //--------------------------------------------------------------------------- 00542 #define ML_IMPLEMENT_CVFDVECTOR_TO_CVFDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00543 _ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00544 _ML_IMPLEMENT_FVECTOR_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector),\ 00545 _ML_IMPLEMENT_DVECTOR_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector)) 00546 00547 #define ML_IMPLEMENT_CVFDVECTOR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00548 _ML_IMPLEMENT_FDVECTOR_TO_INT_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00549 _ML_IMPLEMENT_FVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector), \ 00550 _ML_IMPLEMENT_DVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector)) 00551 00552 #define ML_IMPLEMENT_CVFDVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00553 _ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00554 _ML_IMPLEMENT_FVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector), \ 00555 _ML_IMPLEMENT_DVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector)) 00556 00557 #define ML_IMPLEMENT_REAL_TO_CVFDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00558 _ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00559 _ML_IMPLEMENT_REAL_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector), \ 00560 _ML_IMPLEMENT_REAL_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector)) 00561 00562 00563 //--------------------------------------------------------------------------- 00564 // Only float vectors. 00565 //--------------------------------------------------------------------------- 00566 #define ML_IMPLEMENT_CVFVECTOR_TO_CVFVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00567 _ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00568 _ML_IMPLEMENT_FVECTOR_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector), \ 00569 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME)) 00570 00571 #define ML_IMPLEMENT_CVFVECTOR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00572 _ML_IMPLEMENT_FDVECTOR_TO_INT_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00573 _ML_IMPLEMENT_FVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector), \ 00574 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME)) 00575 00576 #define ML_IMPLEMENT_CVFVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00577 _ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00578 _ML_IMPLEMENT_FVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector),\ 00579 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME)) 00580 00581 #define ML_IMPLEMENT_REAL_TO_CVFVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00582 _ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00583 _ML_IMPLEMENT_REAL_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector),\ 00584 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME)) 00585 00586 //--------------------------------------------------------------------------- 00587 // Only double vectors. 00588 //--------------------------------------------------------------------------- 00589 #define ML_IMPLEMENT_CVDVECTOR_TO_CVDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00590 _ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00591 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME), \ 00592 _ML_IMPLEMENT_DVECTOR_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector)) 00593 00594 #define ML_IMPLEMENT_CVDVECTOR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00595 _ML_IMPLEMENT_FDVECTOR_TO_INT_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00596 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME), \ 00597 _ML_IMPLEMENT_DVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector)) 00598 00599 #define ML_IMPLEMENT_CVDVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00600 _ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00601 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME), \ 00602 _ML_IMPLEMENT_DVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector)) 00603 00604 #define ML_IMPLEMENT_REAL_TO_CVDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00605 _ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, \ 00606 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME), \ 00607 _ML_IMPLEMENT_REAL_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector)) 00608 00609 00610 00611 00612 00613 00614 // START REAL TO IMG DIM 00615 00616 //---------------------------------------------------------------------------------- 00618 //---------------------------------------------------------------------------------- 00619 #define _ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE) \ 00620 { \ 00621 switch (DIM){ \ 00622 case 2 : USER_CODE(Vector2f, ML_ITK_VECTOR_TYPE##2f, MLfloat, MLfloat, 2, CLASS_NAME); break; \ 00623 case 3 : USER_CODE(Vector3f, ML_ITK_VECTOR_TYPE##3f, MLfloat, MLfloat, 3, CLASS_NAME); break; \ 00624 case 4 : USER_CODE(Vector4f, ML_ITK_VECTOR_TYPE##4f, MLfloat, MLfloat, 4, CLASS_NAME); break; \ 00625 case 6 : USER_CODE(Vector6f, ML_ITK_VECTOR_TYPE##6f, MLfloat, MLfloat, 6, CLASS_NAME); break; \ 00626 default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASES).", ", DIM=", DIM); break; \ 00627 } \ 00628 } \ 00629 00630 //---------------------------------------------------------------------------------- 00632 //---------------------------------------------------------------------------------- 00633 #define _ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE) \ 00634 { \ 00635 switch (DIM){ \ 00636 case 2 : USER_CODE(Vector2d, ML_ITK_VECTOR_TYPE##2d, MLdouble, MLdouble, 2, CLASS_NAME); break; \ 00637 case 3 : USER_CODE(Vector3d, ML_ITK_VECTOR_TYPE##3d, MLdouble, MLdouble, 3, CLASS_NAME); break; \ 00638 case 4 : USER_CODE(Vector4d, ML_ITK_VECTOR_TYPE##4d, MLdouble, MLdouble, 4, CLASS_NAME); break; \ 00639 case 6 : USER_CODE(Vector6d, ML_ITK_VECTOR_TYPE##6d, MLdouble, MLdouble, 6, CLASS_NAME); break; \ 00640 default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASES).", ", DIM=", DIM); break; \ 00641 } \ 00642 } \ 00643 00644 //-------------------------------------------------------------------------------------------- 00646 //-------------------------------------------------------------------------------------------- 00647 #define _ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE) \ 00648 { \ 00649 if (_addOns->getInputSubImageDataType()==MLfloatType){ \ 00650 switch (DIM){ \ 00651 case 2 : USER_CODE(Vector2f, ML_ITK_VECTOR_TYPE##2f, MLfloat, MLfloat, 2, CLASS_NAME); break; \ 00652 case 3 : USER_CODE(Vector3f, ML_ITK_VECTOR_TYPE##3f, MLfloat, MLfloat, 3, CLASS_NAME); break; \ 00653 case 4 : USER_CODE(Vector4f, ML_ITK_VECTOR_TYPE##4f, MLfloat, MLfloat, 4, CLASS_NAME); break; \ 00654 case 6 : USER_CODE(Vector6f, ML_ITK_VECTOR_TYPE##6f, MLfloat, MLfloat, 6, CLASS_NAME); break; \ 00655 default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASES), 1.", ", DIM=", DIM); break; \ 00656 } \ 00657 } \ 00658 else{ \ 00659 switch (DIM){ \ 00660 case 2 : USER_CODE(Vector2d, ML_ITK_VECTOR_TYPE##2d, MLdouble, MLdouble, 2, CLASS_NAME); break; \ 00661 case 3 : USER_CODE(Vector3d, ML_ITK_VECTOR_TYPE##3d, MLdouble, MLdouble, 3, CLASS_NAME); break; \ 00662 case 4 : USER_CODE(Vector4d, ML_ITK_VECTOR_TYPE##4d, MLdouble, MLdouble, 4, CLASS_NAME); break; \ 00663 case 6 : USER_CODE(Vector6d, ML_ITK_VECTOR_TYPE##6d, MLdouble, MLdouble, 6, CLASS_NAME); break; \ 00664 default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASES, 2).", ", DIM=", DIM); break; \ 00665 } \ 00666 } \ 00667 } \ 00668 00669 //---------------------------------------------------------------------------------- 00671 //---------------------------------------------------------------------------------- 00672 #define _ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD) \ 00673 { \ 00674 USER_CODE(Vector##DIM_C##f, ML_ITK_VECTOR_TYPE##DIM_C##f, MLfloat, MLfloat, DIM_C, CLASS_NAME); \ 00675 } \ 00676 00677 //---------------------------------------------------------------------------------- 00679 //---------------------------------------------------------------------------------- 00680 #define _ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD) \ 00681 { \ 00682 USER_CODE(Vector##DIM_C##d, ML_ITK_VECTOR_TYPE##DIM_C##d, MLdouble, MLdouble, DIM_C, CLASS_NAME); \ 00683 } \ 00684 00685 //-------------------------------------------------------------------------------------------- 00687 //-------------------------------------------------------------------------------------------- 00688 #define _ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD) \ 00689 { \ 00690 if (_addOns->getInputSubImageDataType() == MLfloatType){ \ 00691 USER_CODE(Vector##DIM_C##f, ML_ITK_VECTOR_TYPE##DIM_C##f, MLfloat, MLfloat, DIM_C, CLASS_NAME); \ 00692 } \ 00693 else{ \ 00694 USER_CODE(Vector##DIM_C##d, ML_ITK_VECTOR_TYPE##DIM_C##d, MLdouble, MLdouble, DIM_C, CLASS_NAME); \ 00695 } \ 00696 } \ 00697 00698 00699 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVFVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00700 _ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 2, 8, 16) 00701 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVFVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00702 _ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 3, 12, 24) 00703 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVFVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00704 _ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector) 00705 00706 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVDVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00707 _ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 2, 8, 16) 00708 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVDVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00709 _ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 3, 12, 24) 00710 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVDVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00711 _ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector) 00712 00713 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVFDVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00714 _ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 2, 8, 16) 00715 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVFDVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00716 _ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 3, 12, 24) 00717 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVFDVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00718 _ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector) 00719 00720 00722 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00723 _ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 2, 8, 16) 00724 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00725 _ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 3, 12, 24) 00726 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00727 _ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector) 00728 00729 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00730 _ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 2, 8, 16) 00731 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00732 _ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 3, 12, 24) 00733 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00734 _ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector) 00735 00736 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00737 _ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 2, 8, 16) 00738 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00739 _ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 3, 12, 24) 00740 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00741 _ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector) 00742 00743 00744 // END REAL TO IMG DIM 00745 00746 00747 00748 00749 00750 00751 00752 // START IMG DIM TO REAL 00753 00754 // IMPORTANT: !!! ONLY TESTED FOR ONE CASE! Switches may still be incomplete or data types may be of invalid order etc. !!!! 00755 00756 //---------------------------------------------------------------------------------- 00758 //---------------------------------------------------------------------------------- 00759 #define _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE) \ 00760 { \ 00761 switch (DIM){ \ 00762 case 2 : USER_CODE(MLfloat, MLfloat, Vector2f, ML_ITK_VECTOR_TYPE##2f, 2, CLASS_NAME); break; \ 00763 case 3 : USER_CODE(MLfloat, MLfloat, Vector3f, ML_ITK_VECTOR_TYPE##3f, 3, CLASS_NAME); break; \ 00764 case 4 : USER_CODE(MLfloat, MLfloat, Vector4f, ML_ITK_VECTOR_TYPE##4f, 4, CLASS_NAME); break; \ 00765 case 6 : USER_CODE(MLfloat, MLfloat, Vector6f, ML_ITK_VECTOR_TYPE##6f, 6, CLASS_NAME); break; \ 00766 default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASES).", ", DIM=", DIM); break; \ 00767 } \ 00768 } \ 00769 00770 //---------------------------------------------------------------------------------- 00772 //---------------------------------------------------------------------------------- 00773 #define _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE) \ 00774 { \ 00775 switch (DIM){ \ 00776 case 2 : USER_CODE(MLdouble, MLdouble, Vector2d, ML_ITK_VECTOR_TYPE##2d, 2, CLASS_NAME); break; \ 00777 case 3 : USER_CODE(MLdouble, MLdouble, Vector3d, ML_ITK_VECTOR_TYPE##3d, 3, CLASS_NAME); break; \ 00778 case 4 : USER_CODE(MLdouble, MLdouble, Vector4d, ML_ITK_VECTOR_TYPE##4d, 4, CLASS_NAME); break; \ 00779 case 6 : USER_CODE(MLdouble, MLdouble, Vector6d, ML_ITK_VECTOR_TYPE##6d, 6, CLASS_NAME); break; \ 00780 default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASES).", ", DIM=", DIM); break; \ 00781 } \ 00782 } \ 00783 00784 //-------------------------------------------------------------------------------------------- 00786 //-------------------------------------------------------------------------------------------- 00787 #define _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE) \ 00788 { \ 00789 /* Check for float point type input vector. */ \ 00790 const bool isFloatType = _addOns->getInSubImageTypeInfos()->structInfoString[0]=='f'; \ 00791 if (isFloatType){ \ 00792 switch (DIM){ \ 00793 case 2 : USER_CODE(MLfloat, MLfloat, Vector2f, ML_ITK_VECTOR_TYPE##2f, 2, CLASS_NAME); break; \ 00794 case 3 : USER_CODE(MLfloat, MLfloat, Vector3f, ML_ITK_VECTOR_TYPE##3f, 3, CLASS_NAME); break; \ 00795 case 4 : USER_CODE(MLfloat, MLfloat, Vector4f, ML_ITK_VECTOR_TYPE##4f, 4, CLASS_NAME); break; \ 00796 case 6 : USER_CODE(MLfloat, MLfloat, Vector6f, ML_ITK_VECTOR_TYPE##6f, 6, CLASS_NAME); break; \ 00797 default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASES, 1).", ", DIM=", DIM); break; \ 00798 } \ 00799 } \ 00800 else{ \ 00801 switch (DIM){ \ 00802 case 2 : USER_CODE(MLdouble, MLdouble, Vector2d, ML_ITK_VECTOR_TYPE##2d, 2, CLASS_NAME); break; \ 00803 case 3 : USER_CODE(MLdouble, MLdouble, Vector3d, ML_ITK_VECTOR_TYPE##3d, 3, CLASS_NAME); break; \ 00804 case 4 : USER_CODE(MLdouble, MLdouble, Vector4d, ML_ITK_VECTOR_TYPE##4d, 4, CLASS_NAME); break; \ 00805 case 6 : USER_CODE(MLdouble, MLdouble, Vector6d, ML_ITK_VECTOR_TYPE##6d, 6, CLASS_NAME); break; \ 00806 default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASES, 2).", ", DIM=", DIM); break; \ 00807 } \ 00808 } \ 00809 } \ 00810 00811 //---------------------------------------------------------------------------------- 00813 //---------------------------------------------------------------------------------- 00814 #define _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD) \ 00815 { \ 00816 USER_CODE(MLfloat, MLfloat, Vector##DIM_C##f, ML_ITK_VECTOR_TYPE##DIM_C##f, DIM_C, CLASS_NAME); \ 00817 } \ 00818 00819 //---------------------------------------------------------------------------------- 00821 //---------------------------------------------------------------------------------- 00822 #define _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD) \ 00823 { \ 00824 USER_CODE(MLdouble, MLdouble, Vector##DIM_C##d, ML_ITK_VECTOR_TYPE##DIM_C##d, DIM_C, CLASS_NAME); \ 00825 } \ 00826 00827 //-------------------------------------------------------------------------------------------- 00837 //-------------------------------------------------------------------------------------------- 00838 #define _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD) \ 00839 { \ 00840 /* Check for float point type input vector. */ \ 00841 const bool isFloatType = _addOns->getInSubImageTypeInfos()->structInfoString[0]=='f'; \ 00842 if (isFloatType){ \ 00843 USER_CODE(Vector##DIM_C##f, ML_ITK_VECTOR_TYPE##DIM_C##f, MLfloat, MLfloat, DIM_C, CLASS_NAME); \ 00844 } \ 00845 else{ \ 00846 USER_CODE(MLdouble, MLdouble, Vector##DIM_C##d, ML_ITK_VECTOR_TYPE##DIM_C##d, DIM_C, CLASS_NAME); \ 00847 } \ 00848 } \ 00849 00850 00851 #define ML_IMPLEMENT_IMG_DIM_CVFVECTOR_TO_REAL_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00852 _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 2, 8, 16) 00853 #define ML_IMPLEMENT_IMG_DIM_CVFVECTOR_TO_REAL_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00854 _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 3, 12, 24) 00855 #define ML_IMPLEMENT_IMG_DIM_CVFVECTOR_TO_REAL_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00856 _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector) 00857 00858 #define ML_IMPLEMENT_IMG_DIM_CVDVECTOR_TO_REAL_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00859 _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 2, 8, 16) 00860 #define ML_IMPLEMENT_IMG_DIM_CVDVECTOR_TO_REAL_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00861 _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 3, 12, 24) 00862 #define ML_IMPLEMENT_IMG_DIM_CVDVECTOR_TO_REAL_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00863 _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector) 00864 00865 #define ML_IMPLEMENT_IMG_DIM_CVFDVECTOR_TO_REAL_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00866 _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 2, 8, 16) 00867 #define ML_IMPLEMENT_IMG_DIM_CVFDVECTOR_TO_REAL_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00868 _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 3, 12, 24) 00869 #define ML_IMPLEMENT_IMG_DIM_CVFDVECTOR_TO_REAL_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00870 _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector) 00871 00872 00874 #define ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00875 _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 2, 8, 16) 00876 #define ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00877 _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 3, 12, 24) 00878 #define ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00879 _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector) 00880 00881 #define ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00882 _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 2, 8, 16) 00883 #define ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00884 _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 3, 12, 24) 00885 #define ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00886 _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector) 00887 00888 #define ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00889 _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 2, 8, 16) 00890 #define ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00891 _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 3, 12, 24) 00892 #define ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00893 _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector) 00894 00895 00896 // IMPORTANT: STILL NOT TESTED!!!! 00897 00898 // END IMG DIM TO REAL 00899 00900 00901 00902 00903 00904 00905 00906 00907 // START IMG DIM TO IMG DIM 00908 00909 //---------------------------------------------------------------------------------- 00911 //---------------------------------------------------------------------------------- 00912 #define _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE) \ 00913 { \ 00914 switch (DIM){ \ 00915 case 2 : USER_CODE(Vector2f, ML_ITK_VECTOR_TYPE##2f, Vector2f, ML_ITK_VECTOR_TYPE##2f, 2, CLASS_NAME); break; \ 00916 case 3 : USER_CODE(Vector3f, ML_ITK_VECTOR_TYPE##3f, Vector3f, ML_ITK_VECTOR_TYPE##3f, 3, CLASS_NAME); break; \ 00917 case 4 : USER_CODE(Vector4f, ML_ITK_VECTOR_TYPE##4f, Vector4f, ML_ITK_VECTOR_TYPE##4f, 4, CLASS_NAME); break; \ 00918 case 6 : USER_CODE(Vector6f, ML_ITK_VECTOR_TYPE##6f, Vector6f, ML_ITK_VECTOR_TYPE##6f, 6, CLASS_NAME); break; \ 00919 default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASES).", ", DIM=", DIM); break; \ 00920 } \ 00921 } \ 00922 00923 //---------------------------------------------------------------------------------- 00925 //---------------------------------------------------------------------------------- 00926 #define _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE) \ 00927 { \ 00928 switch (DIM){ \ 00929 case 2 : USER_CODE(Vector2d, ML_ITK_VECTOR_TYPE##2d, Vector2d, ML_ITK_VECTOR_TYPE##2d, 2, CLASS_NAME); break; \ 00930 case 3 : USER_CODE(Vector3d, ML_ITK_VECTOR_TYPE##3d, Vector3d, ML_ITK_VECTOR_TYPE##3d, 3, CLASS_NAME); break; \ 00931 case 4 : USER_CODE(Vector4d, ML_ITK_VECTOR_TYPE##4d, Vector4d, ML_ITK_VECTOR_TYPE##4d, 4, CLASS_NAME); break; \ 00932 case 6 : USER_CODE(Vector6d, ML_ITK_VECTOR_TYPE##6d, Vector6d, ML_ITK_VECTOR_TYPE##6d, 6, CLASS_NAME); break; \ 00933 default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASES).", ", DIM=", DIM); break; \ 00934 } \ 00935 } \ 00936 00937 //-------------------------------------------------------------------------------------------- 00939 //-------------------------------------------------------------------------------------------- 00940 #define _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE) \ 00941 { \ 00942 /* Check for float component of first component of input image type. */ \ 00943 bool isFloatType = _addOns->getInSubImageTypeInfos()->structInfoString[0]=='f'; \ 00944 if (isFloatType){ \ 00945 switch (DIM){ \ 00946 case 2 : USER_CODE(Vector2f, ML_ITK_VECTOR_TYPE##2f, Vector2f, ML_ITK_VECTOR_TYPE##2f, 2, CLASS_NAME); break; \ 00947 case 3 : USER_CODE(Vector3f, ML_ITK_VECTOR_TYPE##3f, Vector3f, ML_ITK_VECTOR_TYPE##3f, 3, CLASS_NAME); break; \ 00948 case 4 : USER_CODE(Vector4f, ML_ITK_VECTOR_TYPE##4f, Vector4f, ML_ITK_VECTOR_TYPE##4f, 4, CLASS_NAME); break; \ 00949 case 6 : USER_CODE(Vector6f, ML_ITK_VECTOR_TYPE##6f, Vector6f, ML_ITK_VECTOR_TYPE##6f, 6, CLASS_NAME); break; \ 00950 default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASES, 1).", ", DIM=", DIM); break; \ 00951 } \ 00952 } \ 00953 else{ \ 00954 switch (DIM){ \ 00955 case 2 : USER_CODE(Vector2d, ML_ITK_VECTOR_TYPE##2d, Vector2d, ML_ITK_VECTOR_TYPE##2d, 2, CLASS_NAME); break; \ 00956 case 3 : USER_CODE(Vector3d, ML_ITK_VECTOR_TYPE##3d, Vector3d, ML_ITK_VECTOR_TYPE##3d, 3, CLASS_NAME); break; \ 00957 case 4 : USER_CODE(Vector4d, ML_ITK_VECTOR_TYPE##4d, Vector4d, ML_ITK_VECTOR_TYPE##4d, 4, CLASS_NAME); break; \ 00958 case 6 : USER_CODE(Vector6d, ML_ITK_VECTOR_TYPE##6d, Vector6d, ML_ITK_VECTOR_TYPE##6d, 6, CLASS_NAME); break; \ 00959 default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASES, 2).", ", DIM=", DIM); break; \ 00960 } \ 00961 } \ 00962 } \ 00963 00964 //---------------------------------------------------------------------------------- 00966 //---------------------------------------------------------------------------------- 00967 #define _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD) \ 00968 { \ 00969 USER_CODE(Vector##DIM_C##f, ML_ITK_VECTOR_TYPE##DIM_C##f, MLfloat, MLfloat, DIM_C, CLASS_NAME); \ 00970 } \ 00971 00972 //---------------------------------------------------------------------------------- 00974 //---------------------------------------------------------------------------------- 00975 #define _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD) \ 00976 { \ 00977 USER_CODE(Vector##DIM_C##d, ML_ITK_VECTOR_TYPE##DIM_C##d, Vector##DIM_C##d, ML_ITK_VECTOR_TYPE##DIM_C##d, DIM_C, CLASS_NAME); \ 00978 } \ 00979 00980 //-------------------------------------------------------------------------------------------- 00982 //-------------------------------------------------------------------------------------------- 00983 #define _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD) \ 00984 { \ 00985 /* Check for float component of first component of input image type. */ \ 00986 bool isFloatType = _addOns->getInSubImageTypeInfos()->structInfoString[0]=='f'; \ 00987 if (isFloatType){ \ 00988 USER_CODE(Vector##DIM_C##f, ML_ITK_VECTOR_TYPE##DIM_C##f, Vector##DIM_C##f, ML_ITK_VECTOR_TYPE##DIM_C##f, DIM_C, CLASS_NAME); \ 00989 } \ 00990 else{ \ 00991 USER_CODE(Vector##DIM_C##d, ML_ITK_VECTOR_TYPE##DIM_C##d, Vector##DIM_C##d, ML_ITK_VECTOR_TYPE##DIM_C##d, DIM_C, CLASS_NAME); \ 00992 } \ 00993 } \ 00994 00995 00996 #define ML_IMPLEMENT_IMG_DIM_CVFVECTOR_TO_IMG_DIM_CVFVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00997 _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 2, 8, 16) 00998 #define ML_IMPLEMENT_IMG_DIM_CVFVECTOR_TO_IMG_DIM_CVFVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 00999 _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 3, 12, 24) 01000 #define ML_IMPLEMENT_IMG_DIM_CVFVECTOR_TO_IMG_DIM_CVFVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01001 _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector) 01002 01003 #define ML_IMPLEMENT_IMG_DIM_CVDVECTOR_TO_IMG_DIM_CVDVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01004 _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 2, 8, 16) 01005 #define ML_IMPLEMENT_IMG_DIM_CVDVECTOR_TO_IMG_DIM_CVDVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01006 _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 3, 12, 24) 01007 #define ML_IMPLEMENT_IMG_DIM_CVDVECTOR_TO_IMG_DIM_CVDVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01008 _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector) 01009 01010 #define ML_IMPLEMENT_IMG_DIM_CVFDVECTOR_TO_IMG_DIM_CVFDVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01011 _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 2, 8, 16) 01012 #define ML_IMPLEMENT_IMG_DIM_CVFDVECTOR_TO_IMG_DIM_CVFDVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01013 _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector, 3, 12, 24) 01014 #define ML_IMPLEMENT_IMG_DIM_CVFDVECTOR_TO_IMG_DIM_CVFDVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01015 _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector) 01016 01017 01019 #define ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01020 _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 2, 8, 16) 01021 #define ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01022 _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 3, 12, 24) 01023 #define ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01024 _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector) 01025 01026 #define ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01027 _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 2, 8, 16) 01028 #define ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01029 _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 3, 12, 24) 01030 #define ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01031 _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector) 01032 01033 #define ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01034 _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 2, 8, 16) 01035 #define ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01036 _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector, 3, 12, 24) 01037 #define ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01038 _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector) 01039 01040 01041 // END IMG DIM TO IMG DIM 01042 01043 01044 01045 01046 01047 01048 01049 01050 01051 //--------------------------------------------------------------------------- 01053 //--------------------------------------------------------------------------- 01054 #define _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01055 case ML##FCARRIER##Type : \ 01056 DIM_INST(FCARRIER, ML_ITK_NONSCALAR_TYPE##f, FCARRIER, ML_ITK_NONSCALAR_TYPE##f, USER_CODE, CLASS_NAME, DIM); \ 01057 break; \ 01058 01059 //--------------------------------------------------------------------------- 01061 //--------------------------------------------------------------------------- 01062 #define _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01063 case ML##DCARRIER##Type : \ 01064 DIM_INST(DCARRIER, ML_ITK_NONSCALAR_TYPE##d, DCARRIER, ML_ITK_NONSCALAR_TYPE##d, USER_CODE, CLASS_NAME, DIM); \ 01065 break; \ 01066 01067 //--------------------------------------------------------------------------- 01069 //--------------------------------------------------------------------------- 01070 #define _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01071 _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01072 _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) 01073 01074 //--------------------------------------------------------------------------- 01076 //--------------------------------------------------------------------------- 01077 #define _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER, INST_CASES)\ 01078 { \ 01079 switch (DATATYPE_ENUM){ \ 01080 INST_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01081 default: { \ 01082 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Data type case(_ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES) not executed.", ", DATATYPE_ENUM=", DATATYPE_ENUM); \ 01083 } \ 01084 break; \ 01085 } \ 01086 } \ 01087 01088 01089 01090 //--------------------------------------------------------------------------- 01092 //--------------------------------------------------------------------------- 01093 #define _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01094 case ML##FCARRIER##Type : \ 01095 DIM_INST(FCARRIER, ML_ITK_NONSCALAR_TYPE##f, MLfloat, MLfloat, USER_CODE, CLASS_NAME, DIM); \ 01096 break; \ 01097 01098 //--------------------------------------------------------------------------- 01100 //--------------------------------------------------------------------------- 01101 #define _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01102 case ML##DCARRIER##Type : \ 01103 DIM_INST(DCARRIER, ML_ITK_NONSCALAR_TYPE##d, MLdouble, MLdouble, USER_CODE, CLASS_NAME, DIM); \ 01104 break; \ 01105 01106 //--------------------------------------------------------------------------- 01108 //--------------------------------------------------------------------------- 01109 #define _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01110 _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01111 _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) 01112 01113 01114 //--------------------------------------------------------------------------- 01116 //--------------------------------------------------------------------------- 01117 #define _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER, INST_CASES) \ 01118 { \ 01119 switch (DATATYPE_ENUM){ \ 01120 INST_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01121 \ 01122 default: { \ 01123 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Data type case(_ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES) not executed.", ", DATATYPE_ENUM=", DATATYPE_ENUM); \ 01124 } \ 01125 break; \ 01126 } \ 01127 } \ 01128 01129 01130 01131 //--------------------------------------------------------------------------- 01133 //--------------------------------------------------------------------------- 01134 #define _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01135 case MLint16Type : { \ 01136 const MLDataType i16DataType = _addOns->getInputSubImageDataType(); \ 01137 switch (i16DataType){ \ 01138 case ML##FCARRIER##Type: \ 01139 DIM_INST(MLint16, MLint16, FCARRIER, ML_ITK_NONSCALAR_TYPE##f, USER_CODE, CLASS_NAME, DIM); \ 01140 break; \ 01141 \ 01142 default: { \ 01143 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Input type case(_ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_F) not executed.", ", i16DataType=", i16DataType);\ 01144 } \ 01145 break; \ 01146 } \ 01147 } \ 01148 break; \ 01149 01150 //--------------------------------------------------------------------------- 01152 //--------------------------------------------------------------------------- 01153 #define _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01154 case MLint32Type : { \ 01155 const MLDataType i32DataType = _addOns->getInputSubImageDataType(); \ 01156 switch (i32DataType){ \ 01157 case ML##DCARRIER##Type: \ 01158 DIM_INST(MLint32, MLint32, DCARRIER, ML_ITK_NONSCALAR_TYPE##d, USER_CODE, CLASS_NAME, DIM); \ 01159 break; \ 01160 \ 01161 default: { \ 01162 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Input type case(_ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_D) not executed.", ", i32DataType=", i32DataType);\ 01163 } \ 01164 break; \ 01165 } \ 01166 } \ 01167 break; \ 01168 01169 //--------------------------------------------------------------------------- 01171 //--------------------------------------------------------------------------- 01172 #define _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01173 _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01174 _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) 01175 01176 //--------------------------------------------------------------------------- 01178 //--------------------------------------------------------------------------- 01179 #define _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER, INST_CASES) \ 01180 { \ 01181 switch (_m_PixelType){ \ 01182 INST_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01183 \ 01184 default: { \ 01185 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Output data type case for _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES not executed.", ", _m_PixelType=", _m_PixelType); \ 01186 } \ 01187 break; \ 01188 } \ 01189 } \ 01190 01191 01192 01193 01194 //--------------------------------------------------------------------------- 01196 //--------------------------------------------------------------------------- 01197 #define _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01198 case MLfloatType : { \ 01199 const MLDataType fDataType = _addOns->getInputSubImageDataType(); \ 01200 switch (fDataType){ \ 01201 case ML##FCARRIER##Type: \ 01202 DIM_INST(MLfloat, MLfloat, FCARRIER, ML_ITK_NONSCALAR_TYPE##f, USER_CODE, CLASS_NAME, DIM); \ 01203 break; \ 01204 \ 01205 default: { \ 01206 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Input type case not executed.", ", fDataType=", fDataType); \ 01207 } \ 01208 break; \ 01209 } \ 01210 } \ 01211 break; \ 01212 01213 //--------------------------------------------------------------------------- 01215 //--------------------------------------------------------------------------- 01216 #define _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01217 case MLdoubleType : { \ 01218 const MLDataType dDataType = _addOns->getInputSubImageDataType(); \ 01219 switch (dDataType){ \ 01220 case ML##DCARRIER##Type: \ 01221 DIM_INST(MLdouble, MLdouble, DCARRIER, ML_ITK_NONSCALAR_TYPE##d, USER_CODE, CLASS_NAME, DIM); \ 01222 break; \ 01223 \ 01224 default: { \ 01225 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Input type case not executed.", ", dDataType=", dDataType); \ 01226 } \ 01227 break; \ 01228 } \ 01229 } \ 01230 break; \ 01231 01232 //--------------------------------------------------------------------------- 01234 //--------------------------------------------------------------------------- 01235 #define _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01236 _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01237 _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) 01238 01239 //--------------------------------------------------------------------------- 01241 //--------------------------------------------------------------------------- 01242 #define _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER, INST_CASES) \ 01243 { \ 01244 switch (_m_PixelType){ \ 01245 INST_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \ 01246 \ 01247 default: { \ 01248 ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Output data type case not executed.", ", _m_PixelType=", _m_PixelType); \ 01249 } \ 01250 break; \ 01251 } \ 01252 } \ 01253 01254 01256 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_DIFFUSION3D_TENSOR_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01257 _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_FD) 01258 01259 #define ML_IMPLEMENT_REAL_TO_DIFFUSION3D_TENSOR_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01260 _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_FD) 01261 01262 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_INT_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01263 _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_FD) 01264 01265 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_REAL_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01266 _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_FD) 01267 01268 01269 01271 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_DIFFUSION3D_TENSOR_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01272 _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_FD) 01273 01274 #define ML_IMPLEMENT_REAL_TO_DIFFUSION3D_TENSOR_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01275 _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_FD) 01276 01277 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_INT_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01278 _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_FD) 01279 01280 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_REAL_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01281 _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_FD) 01282 01283 01285 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_SYMMETRICSECONDRANK3D_TENSOR_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01286 _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_FD) 01287 01288 #define ML_IMPLEMENT_REAL_TO_SYMMETRICSECONDRANK3D_TENSOR_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01289 _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_FD) 01290 01291 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_INT_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01292 _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_FD) 01293 01294 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_REAL_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01295 _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_FD) 01296 01297 01299 #define ML_IMPLEMENT_COMPLEX_TO_COMPLEX_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01300 _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_FD) 01301 01302 #define ML_IMPLEMENT_REAL_TO_COMPLEX_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01303 _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_FD) 01304 01305 #define ML_IMPLEMENT_COMPLEX_TO_INT_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01306 _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_FD) 01307 01308 #define ML_IMPLEMENT_COMPLEX_TO_REAL_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01309 _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_FD) 01310 01311 01312 01313 01315 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_DIFFUSION3D_TENSOR_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01316 _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_F) 01317 01318 #define ML_IMPLEMENT_REAL_TO_DIFFUSION3D_TENSOR_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01319 _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_F) 01320 01321 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_INT_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01322 _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_F) 01323 01324 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_REAL_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01325 _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_F) 01326 01327 01329 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_SYMMETRICSECONDRANK3D_TENSOR_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01330 _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_F) 01331 01332 #define ML_IMPLEMENT_REAL_TO_SYMMETRICSECONDRANK3D_TENSOR_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01333 _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_F) 01334 01335 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_INT_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01336 _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_F) 01337 01338 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_REAL_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01339 _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_F) 01340 01341 01343 #define ML_IMPLEMENT_COMPLEX_TO_COMPLEX_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01344 _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_F) 01345 01346 #define ML_IMPLEMENT_REAL_TO_COMPLEX_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01347 _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_F) 01348 01349 #define ML_IMPLEMENT_COMPLEX_TO_INT_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01350 _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_F) 01351 01352 #define ML_IMPLEMENT_COMPLEX_TO_REAL_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01353 _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_F) 01354 01355 01356 01357 01359 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_DIFFUSION3D_TENSOR_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01360 _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_D) 01361 01362 #define ML_IMPLEMENT_REAL_TO_DIFFUSION3D_TENSOR_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01363 _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_D) 01364 01365 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_INT_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01366 _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_D) 01367 01368 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_REAL_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01369 _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_D) 01370 01371 01373 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_SYMMETRICSECONDRANK3D_TENSOR_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01374 _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_D) 01375 01376 #define ML_IMPLEMENT_REAL_TO_SYMMETRICSECONDRANK3D_TENSOR_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01377 _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_D) 01378 01379 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_INT_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01380 _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_D) 01381 01382 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_REAL_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01383 _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_D) 01384 01385 01387 #define ML_IMPLEMENT_COMPLEX_TO_COMPLEX_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01388 _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_D) 01389 01390 #define ML_IMPLEMENT_REAL_TO_COMPLEX_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\ 01391 _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_D) 01392 01393 #define ML_IMPLEMENT_COMPLEX_TO_INT_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01394 _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_D) 01395 01396 #define ML_IMPLEMENT_COMPLEX_TO_REAL_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \ 01397 _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_D) 01398 01399 01400 01401 ML_END_NAMESPACE 01402 01403 #endif // __mlITKNonScalarSupport_H 01404 01405