]> Creatis software - creaMaracasVisu.git/blobdiff - lib/Kernel/ITKVTK/ITKToVTKImageImport.h_
addition of files
[creaMaracasVisu.git] / lib / Kernel / ITKVTK / ITKToVTKImageImport.h_
diff --git a/lib/Kernel/ITKVTK/ITKToVTKImageImport.h_ b/lib/Kernel/ITKVTK/ITKToVTKImageImport.h_
new file mode 100644 (file)
index 0000000..5287ae9
--- /dev/null
@@ -0,0 +1,155 @@
+#ifndef __ITKToVTKImageImport_h_
+#define __ITKToVTKImageImport_h_
+
+#include "itkImage.h"
+#include "itkVTKImageImport.h"
+#include "itkVTKImageExport.h"
+
+#include "vtkImageData.h"
+#include "vtkImageImport.h"
+#include "vtkImageExport.h"
+
+#define DIM 3
+#define TRY_CLAUSE_ITK         try{
+#define CATCH_CLAUSE_ITK       }catch(itk::ExceptionObject &e){                \
+                                                                std::cout<<e<<std::endl;                       \
+                                                                std::string ex = e.GetDescription();}\
+
+//------------------------------------------------------------------------------------------------------------
+// Includes
+//------------------------------------------------------------------------------------------------------------
+template<typename TypeImage,unsigned int dim>
+class ITKToVTKImageImport {
+
+//------------------------------------------------------------------------------------------------------------
+// Constructors & Destructors
+//------------------------------------------------------------------------------------------------------------
+public:
+        /* !!!!!some type definitions!!!!!!
+        */
+        /*
+        *      type definition for the itk image that is going to be use
+        */
+        typedef itk::Image<TypeImage,dim> itkImageType;
+        /*
+        *      type definition for the itk image import
+        */
+        typedef itk::VTKImageImport<itkImageType> ImageImportType;
+        /*
+        *      type definition for the pointer of the image import
+        */
+        typedef typename ImageImportType::Pointer ImageImportPointer;
+        /*
+        *      type definition for the itk image import
+        */
+        typedef itk::VTKImageExport<itkImageType> ImageExportType;
+        /*
+        *      type definition for the pointer of the image import
+        */
+        typedef typename ImageExportType::Pointer ImageExportPointer;
+        /**
+        ** Default constructor, allocates the vtkImageExport and itkImageImport
+        **     Connects the pipelines and set them ready to be use
+        **/
+        ITKToVTKImageImport(){
+
+                vtkimageexport  = vtkImageExport::New();
+                imageimportpointer = ImageImportType::New();
+
+                imageimportpointer->SetUpdateInformationCallback(vtkimageexport->GetUpdateInformationCallback());
+                imageimportpointer->SetPipelineModifiedCallback(vtkimageexport->GetPipelineModifiedCallback());
+                imageimportpointer->SetWholeExtentCallback(vtkimageexport->GetWholeExtentCallback());
+                imageimportpointer->SetSpacingCallback(vtkimageexport->GetSpacingCallback());
+                imageimportpointer->SetOriginCallback(vtkimageexport->GetOriginCallback());
+                imageimportpointer->SetScalarTypeCallback(vtkimageexport->GetScalarTypeCallback());
+                imageimportpointer->SetNumberOfComponentsCallback(vtkimageexport->GetNumberOfComponentsCallback());
+                imageimportpointer->SetPropagateUpdateExtentCallback(vtkimageexport->GetPropagateUpdateExtentCallback());
+                imageimportpointer->SetUpdateDataCallback(vtkimageexport->GetUpdateDataCallback());
+                imageimportpointer->SetDataExtentCallback(vtkimageexport->GetDataExtentCallback());
+                imageimportpointer->SetBufferPointerCallback(vtkimageexport->GetBufferPointerCallback());
+                imageimportpointer->SetCallbackUserData(vtkimageexport->GetCallbackUserData());
+
+
+                imageexportpointer = ImageExportType::New();
+                vtkimageimport = vtkImageImport::New();
+
+                vtkimageimport->SetUpdateInformationCallback(imageexportpointer->GetUpdateInformationCallback());
+                vtkimageimport->SetPipelineModifiedCallback(imageexportpointer->GetPipelineModifiedCallback());
+                vtkimageimport->SetWholeExtentCallback(imageexportpointer->GetWholeExtentCallback());
+                vtkimageimport->SetSpacingCallback(imageexportpointer->GetSpacingCallback());
+                vtkimageimport->SetOriginCallback(imageexportpointer->GetOriginCallback());
+                vtkimageimport->SetScalarTypeCallback(imageexportpointer->GetScalarTypeCallback());
+                vtkimageimport->SetNumberOfComponentsCallback(imageexportpointer->GetNumberOfComponentsCallback());
+                vtkimageimport->SetPropagateUpdateExtentCallback(imageexportpointer->GetPropagateUpdateExtentCallback());
+                vtkimageimport->SetUpdateDataCallback(imageexportpointer->GetUpdateDataCallback());
+                vtkimageimport->SetDataExtentCallback(imageexportpointer->GetDataExtentCallback());
+                vtkimageimport->SetBufferPointerCallback(imageexportpointer->GetBufferPointerCallback());
+                vtkimageimport->SetCallbackUserData(imageexportpointer->GetCallbackUserData());
+
+        }
+
+
+        ~ITKToVTKImageImport(){
+                /*std::cout<<"delete ~ITKToVTKImageImport(){"<<std::endl;*/
+                vtkimageimport->Delete();
+                vtkimageexport->Delete();
+        }
+        /*
+        *      set the vtkImage data to connect to itk pipeline
+        */
+        void setVTKImage(vtkImageData* img) {
+                vtkimageexport->SetInput( img );
+                vtkimageexport->Update();
+                imageimportpointer->Update();
+        }
+        /*
+        *
+        */
+        itk::Image<TypeImage,dim>* getITKImage() {
+                if(vtkimageexport->GetInput()==0){
+                        throw "Image not set to get the ItkImage, set the VtkImage before.\0";
+                }
+                return imageimportpointer->GetOutput();
+        }
+
+        /*
+        *      Get the vtkImageData from the itk image
+        */
+        vtkImageData* GetOutputVTKImageDataImport() {
+                return vtkimageimport->GetOutput();
+        }
+        /*
+        *      set the vtkImage data to connect to itk pipeline
+        */
+        void setITKImage(itkImageType* img) {
+                //std::cout<<"image pointer setITKImage"<<img<<std::endl;
+                imageexportpointer->SetInput(img);
+                imageexportpointer->Update();
+                vtkimageimport->Update();
+        }
+
+//------------------------------------------------------------------------------------------------------------
+// Attributes
+//------------------------------------------------------------------------------------------------------------
+private:
+
+
+
+        /*
+        *      Pointer to vtkImageExport
+        */
+        vtkImageExport * vtkimageexport;
+        /*
+        *      itk::VTKImageImport pointer
+        */
+        ImageImportPointer imageimportpointer;
+        /*
+        *      Pointer to vtkImageExport
+        */
+        vtkImageImport * vtkimageimport;
+        /*
+        *      Pointer to Export the itk image into vtk
+        */
+        ImageExportPointer imageexportpointer;
+};
+#endif