]> Creatis software - creaMaracasVisu.git/blob - lib/Kernel/ITKVTK/itktovtkimageimport.txx
85a34778de3fe9e6c762469f6687c8441809717a
[creaMaracasVisu.git] / lib / Kernel / ITKVTK / itktovtkimageimport.txx
1 #ifndef __ITKToVTKImageImport_TXX
2 #define __ITKToVTKImageImport_TXX
3
4
5 namespace itk{
6
7 /**
8 ** Default constructor, allocates the vtkImageExport and itkImageImport
9 **      Connects the pipelines and set them ready to be use
10 **/
11 template<typename TypeImage>
12 ITKToVTKImageImport<TypeImage>::ITKToVTKImageImport(){
13
14         vtkimageexport  = vtkImageExport::New();
15         imageimportpointer = ImageImportType::New();
16
17         imageimportpointer->SetUpdateInformationCallback(vtkimageexport->GetUpdateInformationCallback());
18         imageimportpointer->SetPipelineModifiedCallback(vtkimageexport->GetPipelineModifiedCallback());
19         imageimportpointer->SetWholeExtentCallback(vtkimageexport->GetWholeExtentCallback());
20         imageimportpointer->SetSpacingCallback(vtkimageexport->GetSpacingCallback());
21         imageimportpointer->SetOriginCallback(vtkimageexport->GetOriginCallback());
22         imageimportpointer->SetScalarTypeCallback(vtkimageexport->GetScalarTypeCallback());
23         imageimportpointer->SetNumberOfComponentsCallback(vtkimageexport->GetNumberOfComponentsCallback());
24         imageimportpointer->SetPropagateUpdateExtentCallback(vtkimageexport->GetPropagateUpdateExtentCallback());
25         imageimportpointer->SetUpdateDataCallback(vtkimageexport->GetUpdateDataCallback());
26         imageimportpointer->SetDataExtentCallback(vtkimageexport->GetDataExtentCallback());
27         imageimportpointer->SetBufferPointerCallback(vtkimageexport->GetBufferPointerCallback());
28         imageimportpointer->SetCallbackUserData(vtkimageexport->GetCallbackUserData());
29
30
31         imageexportpointer = ImageExportType::New();
32         vtkimageimport = vtkImageImport::New();
33
34         vtkimageimport->SetUpdateInformationCallback(imageexportpointer->GetUpdateInformationCallback());
35         vtkimageimport->SetPipelineModifiedCallback(imageexportpointer->GetPipelineModifiedCallback());
36         vtkimageimport->SetWholeExtentCallback(imageexportpointer->GetWholeExtentCallback());
37         vtkimageimport->SetSpacingCallback(imageexportpointer->GetSpacingCallback());
38         vtkimageimport->SetOriginCallback(imageexportpointer->GetOriginCallback());
39         vtkimageimport->SetScalarTypeCallback(imageexportpointer->GetScalarTypeCallback());
40         vtkimageimport->SetNumberOfComponentsCallback(imageexportpointer->GetNumberOfComponentsCallback());
41         vtkimageimport->SetPropagateUpdateExtentCallback(imageexportpointer->GetPropagateUpdateExtentCallback());
42         vtkimageimport->SetUpdateDataCallback(imageexportpointer->GetUpdateDataCallback());
43         vtkimageimport->SetDataExtentCallback(imageexportpointer->GetDataExtentCallback());
44         vtkimageimport->SetBufferPointerCallback(imageexportpointer->GetBufferPointerCallback());
45         vtkimageimport->SetCallbackUserData(imageexportpointer->GetCallbackUserData());
46
47 }
48
49
50 template<typename TypeImage >
51 ITKToVTKImageImport<TypeImage>::~ITKToVTKImageImport(){
52         /*std::cout<<"delete ~ITKToVTKImageImport(){"<<std::endl;*/
53         vtkimageimport->Delete();
54         vtkimageexport->Delete();
55 }
56 /*
57 *       set the vtkImage data to connect to itk pipeline
58 */
59 template<typename TypeImage>
60 void ITKToVTKImageImport<TypeImage>::SetVTKImage(vtkImageData* img) {
61         vtkimageexport->SetInput( img );
62         vtkimageexport->Update();
63         imageimportpointer->Update();
64 }
65
66 /*
67 *
68 */
69 template<typename TypeImage>
70 typename ITKToVTKImageImport<TypeImage>::InputImagePointerType ITKToVTKImageImport<TypeImage>::GetOutputITKImage() {
71         if(vtkimageexport->GetInput()==0){
72                 throw "Image not set to get the ItkImage, set the VtkImage before.\0";
73         }
74         return  imageimportpointer->GetOutput();
75 }
76
77 /*
78 *       Get the vtkImageData from the itk image
79 */
80 template<typename TypeImage >
81 vtkImageData* ITKToVTKImageImport<TypeImage >::GetOutputVTKImage() {
82         return vtkimageimport->GetOutput();
83 }
84 /*
85 *       set the vtkImage data to connect to itk pipeline
86 */
87 template<typename TypeImage>
88 void ITKToVTKImageImport<TypeImage >::SetITKImage(InputImagePointerType itkimage){
89         //std::cout<<"image pointer setITKImage"<<img<<std::endl;
90
91     m_ITKImage = itkimage;
92     imageexportpointer->SetInput(itkimage);
93     imageexportpointer->Update();
94     vtkimageimport->Update();
95
96 }
97
98 }
99 #endif