1 /*=========================================================================
4 Module: $RCSfile: bbitkvtkvtkImageData2itkImage.cxx,v $
6 Date: $Date: 2008/03/03 11:49:17 $
7 Version: $Revision: 1.1 $
9 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10 l'Image). All rights reserved. See Doc/License.txt or
11 http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notices for more information.
17 =========================================================================*/
25 #include "bbitkvtkvtkImageData2itkImage.h"
26 #include "bbitkvtkPackage.h"
28 #include "itkVTKImageToImageFilter.h"
30 //#include "itkImageToVTKImageFilter.h"
36 BBTK_USER_BLACK_BOX_IMPLEMENTATION(vtkImageData2itkImage,bbtk::AtomicBlackBox);
38 BBTK_ADD_BLACK_BOX_TO_PACKAGE(itkvtk,vtkImageData2itkImage);
40 #define BBTK_TEMPLATE_VTK_IMAGE_DATA_SWITCH_DIM(I,DIM,M) \
41 if (I->GetDataDimension()==DIM) \
43 if (I->GetScalarType()==VTK_CHAR) M<char,DIM>(); \
44 else if (I->GetScalarType()==VTK_SIGNED_CHAR) M<signed char,DIM>(); \
45 else if (I->GetScalarType()==VTK_UNSIGNED_CHAR) M<unsigned char,DIM>(); \
46 else if (I->GetScalarType()==VTK_SHORT) M<short,DIM>(); \
47 else if (I->GetScalarType()==VTK_UNSIGNED_SHORT) M<unsigned short,DIM>(); \
48 else if (I->GetScalarType()==VTK_INT) M<int,DIM>(); \
49 else if (I->GetScalarType()==VTK_UNSIGNED_INT) M<unsigned int,DIM>(); \
50 else if (I->GetScalarType()==VTK_LONG) M<long,DIM>(); \
51 else if (I->GetScalarType()==VTK_UNSIGNED_LONG) M<unsigned long,DIM>(); \
52 else if (I->GetScalarType()==VTK_FLOAT) M<float,DIM>(); \
53 else if (I->GetScalarType()==VTK_DOUBLE) M<double,DIM>(); \
56 #define BBTK_TEMPLATE_VTK_IMAGE_DATA_SWITCH(I,M) \
57 BBTK_TEMPLATE_VTK_IMAGE_DATA_SWITCH_DIM(I,2,M) \
58 BBTK_TEMPLATE_VTK_IMAGE_DATA_SWITCH_DIM(I,3,M)
60 void vtkImageData2itkImage::Convert()
62 BBTK_TEMPLATE_VTK_IMAGE_DATA_SWITCH(bbGetInputIn(),Convert)
67 template<class T, unsigned int D>
68 void vtkImageData2itkImage::Convert()
70 bbtkDebugMessageInc("Core",9,"vtkImageData2itkImage<"
71 <<bbtk::TypeName<T>()<<","<<D
72 <<">::Convert()"<<std::endl);
74 typedef itk::Image<T,D> itkImageType;
75 typedef itk::VTKImageToImageFilter< itkImageType > VtkToItkConnection;
76 //typedef itk::ImageToVTKImageFilter< itkImageType > ItkToVtkConnection;
81 typename VtkToItkConnection::Pointer conv = VtkToItkConnection::New();
82 conv->SetInput( this->bbGetInputIn() );
85 // How to unreference the old output (is in an any...) ?
86 //if (bbGetOutputOut()) bbGetOutputOut()->Unreference();
88 itkImageType* out = const_cast<itkImageType*>(conv->GetOutput());
92 catch( itk::ExceptionObject & e)
94 bbtkError("vtkImageData2itkImage<"
95 <<bbtk::TypeName<T>()<<","<<D
96 <<">::Convert() : "<<e);
99 bbtkDebugDecTab("Core",9);