]> Creatis software - bbtk.git/blobdiff - packages/itkvtk/src/bbitkvtkvtkImageDataVector2itkImageVector.h
Add converters between std::vector of vtkImageData* and bbitk::anyImagePointer
[bbtk.git] / packages / itkvtk / src / bbitkvtkvtkImageDataVector2itkImageVector.h
diff --git a/packages/itkvtk/src/bbitkvtkvtkImageDataVector2itkImageVector.h b/packages/itkvtk/src/bbitkvtkvtkImageDataVector2itkImageVector.h
new file mode 100644 (file)
index 0000000..868f22d
--- /dev/null
@@ -0,0 +1,83 @@
+/*=========================================================================
+                                                                                
+  Program:   bbtk
+  Module:    $RCSfile: bbitkvtkvtkImageDataVector2itkImageVector.h,v $
+  Language:  C++
+  Date:      $Date: 2011/06/16 12:28:57 $
+  Version:   $Revision: 1.1 $
+                                                                                
+  Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
+  l'Image). All rights reserved. See Doc/License.txt or
+  http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
+                                                                                
+     This software is distributed WITHOUT ANY WARRANTY; without even
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+     PURPOSE.  See the above copyright notices for more information.
+                                                                                
+=========================================================================*/
+/**
+ * \file 
+ * \brief class vtkImageDataVector2itkImageVector : Converts a vtkImageData to a generic itkImage
+ */
+/**
+ * \class vtkImageDataVector2itkImageVector 
+ * \brief Converts a vtkImageData to a generic itkImage
+ */
+#ifdef _USE_ITK_
+#ifdef _USE_VTK_
+
+#ifndef __bbitkvtkvtkImageDataVector2itkImageVector_h__
+#define __bbvitkvtktkImageData2itkImage_h__
+
+#include "bbtkAtomicBlackBox.h"
+#include "bbitkImage.h"
+#include "vtkImageData.h"
+#include "itkProcessObject.h"
+
+namespace bbitkvtk
+{
+
+  class /*BBTK_EXPORT*/ vtkImageDataVector2itkImageVector : public bbtk::AtomicBlackBox  
+  {
+    
+    BBTK_BLACK_BOX_INTERFACE(vtkImageDataVector2itkImageVector,
+                            bbtk::AtomicBlackBox);
+
+    BBTK_DECLARE_INPUT(In,std::vector<vtkImageData*>);
+    BBTK_DECLARE_OUTPUT(Out,std::vector<bbitk::anyImagePointer>);
+    BBTK_PROCESS(Convert);
+    void Convert();
+
+  private:
+    // Convert method : template on type of the itk image to be created
+    template<class T, unsigned int D> void Convert();
+    // stores the pointer on the template itk::VTKImageToImageFilter 
+    itk::ProcessObject::Pointer mConverter;
+    std::vector<bbitk::anyImagePointer> m_Output_Vector;
+  }; 
+  
+
+  //=================================================================
+  // AtomicBlackBox description
+  BBTK_BEGIN_DESCRIBE_BLACK_BOX(vtkImageDataVector2itkImageVector,bbtk::AtomicBlackBox);
+  BBTK_NAME("vtkImageDataVector2itkImageVector");
+  BBTK_AUTHOR("jpr@creatis.insa-lyon.fr");
+  BBTK_DESCRIPTION("Converts a std::vector of vtkImageData* to a std::vector of generic itkImage pointer");
+  BBTK_DEFAULT_ADAPTOR();
+  BBTK_INPUT(vtkImageDataVector2itkImageVector,In,
+            "Input std::vector of vtkImageData*",std::vector<vtkImageData*>,"");
+  BBTK_OUTPUT(vtkImageDataVector2itkImageVector,Out,
+             "Output std::vector of generic itkImage pointer",
+             std::vector<bbitk::anyImagePointer>,"");
+  BBTK_END_DESCRIBE_BLACK_BOX(vtkImageDataVector2itkImageVector);
+  //=================================================================
+
+
+}
+//namespace bbitkvtk
+#endif
+// _USE_VTK_
+#endif
+// _USE_ITK_
+
+#endif