]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Interface/Image.hxx
...
[cpPlugins.git] / lib / cpPlugins / Interface / Image.hxx
index bb1c667bf30af84bc91df05d8e38723728d12ffd..ab2c5ea00c9b6399ce0afa635dd1bba997b50805 100644 (file)
@@ -1,8 +1,10 @@
 #ifndef __CPPLUGINS__INTERFACE__IMAGE__HXX__
 #define __CPPLUGINS__INTERFACE__IMAGE__HXX__
 
-#define ITK_MANUAL_INSTANTIATION
+#include <complex>
+
 #include <itkImage.h>
+#include <itkVectorImage.h>
 #include <itkImageToVTKImageFilter.h>
 
 #include <itkCovariantVector.h>
 #include <itkVector.h>
 
 // -------------------------------------------------------------------------
-#define cpPlugins_Image_Demangle( TI, T, D, o )                 \
-  if( typeid( typename TI::PixelType ) == typeid( T ) )         \
+#define cpPlugins_VTKImage_Demangle( TI, T, D, o )              \
+  if( typeid( TI ) == typeid( itk::Image< T, D > ) )            \
     this->_ITK_2_VTK< T, D >( o )
 
 // -------------------------------------------------------------------------
-#define cpPlugins_ImageArray_Demangle( TI, T, P, DP, DI, o )           \
-  if( typeid( typename TI::PixelType ) == typeid( T< P, DP > ) )       \
+#define cpPlugins_VTKImageArray_Demangle( TI, T, P, DP, DI, o )      \
+  if( typeid( TI ) == typeid( itk::Image< T< P, DP >, DI > ) )       \
     this->_ITK_2_VTK< T< P, DP >, DI >( o )
 
 // -------------------------------------------------------------------------
-#define cpPlugins_Image_Demangle_Dimension( TI, D, o )                  \
-  cpPlugins_Image_Demangle( TI, char, D, o );                           \
-  else cpPlugins_Image_Demangle( TI, short, D, o );                     \
-  else cpPlugins_Image_Demangle( TI, int, D, o );                       \
-  else cpPlugins_Image_Demangle( TI, long, D, o );                      \
-  else cpPlugins_Image_Demangle( TI, float, D, o );                     \
-  else cpPlugins_Image_Demangle( TI, double, D, o );                    \
-  else cpPlugins_Image_Demangle( TI, unsigned char, D, o );             \
-  else cpPlugins_Image_Demangle( TI, unsigned short, D, o );            \
-  else cpPlugins_Image_Demangle( TI, unsigned int, D, o );              \
-  else cpPlugins_Image_Demangle( TI, unsigned long, D, o );             \
-  else cpPlugins_Image_Demangle( TI, itk::RGBPixel< char >, D, o );     \
-  else cpPlugins_Image_Demangle( TI, itk::RGBPixel< short >, D, o );    \
-  else cpPlugins_Image_Demangle(                                        \
-    TI, itk::RGBPixel< unsigned char >, D, o                            \
-    );                                                                  \
-  else cpPlugins_Image_Demangle(                                        \
-    TI, itk::RGBPixel< unsigned short >, D, o                           \
-    );                                                                  \
-  else cpPlugins_Image_Demangle( TI, itk::RGBAPixel< char >, D, o );    \
-  else cpPlugins_Image_Demangle( TI, itk::RGBAPixel< short >, D, o );   \
-  else cpPlugins_Image_Demangle(                                        \
-    TI, itk::RGBAPixel< unsigned char >, D, o                           \
-    );                                                                  \
-  else cpPlugins_Image_Demangle(                                        \
-    TI, itk::RGBAPixel< unsigned short >, D, o                          \
-    );                                                                  \
-  else cpPlugins_ImageArray_Demangle(                                   \
-    TI, itk::Vector, float, D, D, o                                     \
-    );                                                                  \
-  else cpPlugins_ImageArray_Demangle(                                   \
-    TI, itk::Vector, double, D, D, o                                    \
-    );                                                                  \
-  else cpPlugins_ImageArray_Demangle(                                   \
-    TI, itk::CovariantVector, float, D, D, o                            \
-    );                                                                  \
-  else cpPlugins_ImageArray_Demangle(                                   \
-    TI, itk::CovariantVector, double, D, D, o                           \
-    );                                                                  \
-  else cpPlugins_ImageArray_Demangle( TI, itk::Point, float, D, D, o ); \
-  else cpPlugins_ImageArray_Demangle(                                   \
-    TI, itk::Point, double, D, D, o                                     \
-    );                                                                  \
-  else cpPlugins_ImageArray_Demangle(                                   \
-    TI, itk::SymmetricSecondRankTensor, float, D, D, o                  \
-    );                                                                  \
-  else cpPlugins_ImageArray_Demangle(                                   \
-    TI, itk::SymmetricSecondRankTensor, double, D, D, o                 \
-    )
+#define cpPlugins_VTKImage_Demangle_AllDims( TI, T, o )         \
+  cpPlugins_VTKImage_Demangle( TI, T, 2, o );                   \
+  else cpPlugins_VTKImage_Demangle( TI, T, 3, o )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VTKImageArray_Demangle_AllDims( TI, T, P, o )      \
+  cpPlugins_VTKImageArray_Demangle( TI, T, P, 2, 2, o );             \
+  else cpPlugins_VTKImageArray_Demangle( TI, T, P, 3, 3, o )
 
 // -------------------------------------------------------------------------
 template< class I >
 void cpPlugins::Interface::Image::
-SetITKImage( itk::DataObject* object )
+SetITK( itk::Object* object )
 {
   // Check if input object has the desired type
   I* image = dynamic_cast< I* >( object );
@@ -87,36 +48,57 @@ SetITKImage( itk::DataObject* object )
     this->m_VTKObject = NULL;
     this->m_ITKvVTKConnection = NULL;
     this->Modified( );
+    return;
 
   } // fi
 
+  // --------- TODO ---------------
+  typename I::DirectionType norm_dir;
+  norm_dir.SetIdentity( );
+  image->SetDirection( norm_dir );
+  // --------- TODO ---------------
+
   // Connect it to VTK
-  if( I::ImageDimension == 2 )
-  {
-    cpPlugins_Image_Demangle_Dimension( I, 2, object );
-    else
-    {
-      this->m_VTKObject = NULL;
-      this->m_ITKvVTKConnection = NULL;
-
-    } // fi
-  }
-  else if( I::ImageDimension == 3 )
-  {
-    cpPlugins_Image_Demangle_Dimension( I, 3, object );
-    else cpPlugins_Image_Demangle(
-      I, itk::DiffusionTensor3D< float >, 3, object
-      );
-    else cpPlugins_Image_Demangle(
-      I, itk::DiffusionTensor3D< double >, 3, object
-      );
-    else
-    {
-      this->m_VTKObject = NULL;
-      this->m_ITKvVTKConnection = NULL;
-
-    } // fi
-  }
+  cpPlugins_VTKImage_Demangle_AllDims( I, char, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, short, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, int, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, long, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, unsigned char, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, unsigned short, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, unsigned int, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, unsigned long, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, float, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, double, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBPixel< char >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBPixel< short >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBPixel< int >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBPixel< long >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBPixel< unsigned char >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBPixel< unsigned short >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBPixel< unsigned int >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBPixel< unsigned long >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBPixel< float >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBPixel< double >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBAPixel< char >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBAPixel< short >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBAPixel< int >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBAPixel< long >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBAPixel< unsigned char >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBAPixel< unsigned short >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBAPixel< unsigned int >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBAPixel< unsigned long >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBAPixel< float >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::RGBAPixel< double >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::DiffusionTensor3D< float >, image );
+  else cpPlugins_VTKImage_Demangle_AllDims( I, itk::DiffusionTensor3D< double >, image );
+  else cpPlugins_VTKImageArray_Demangle_AllDims( I, itk::Vector, float, image );
+  else cpPlugins_VTKImageArray_Demangle_AllDims( I, itk::Vector, double, image );
+  else cpPlugins_VTKImageArray_Demangle_AllDims( I, itk::CovariantVector, float, image );
+  else cpPlugins_VTKImageArray_Demangle_AllDims( I, itk::CovariantVector, double, image );
+  else cpPlugins_VTKImageArray_Demangle_AllDims( I, itk::Point, float, image );
+  else cpPlugins_VTKImageArray_Demangle_AllDims( I, itk::Point, double, image );
+  else cpPlugins_VTKImageArray_Demangle_AllDims( I, itk::SymmetricSecondRankTensor, float, image );
+  else cpPlugins_VTKImageArray_Demangle_AllDims( I, itk::SymmetricSecondRankTensor, double, image );
   else
   {
     this->m_VTKObject = NULL;
@@ -129,45 +111,266 @@ SetITKImage( itk::DataObject* object )
   this->Modified( );
 }
 
-// -------------------------------------------------------------------------
-template< class I >
-I* cpPlugins::Interface::Image::
-GetITKImage( )
-{
-  return( dynamic_cast< I* >( this->m_ITKObject.GetPointer( ) ) );
-}
-
-// -------------------------------------------------------------------------
-template< class I >
-const I* cpPlugins::Interface::Image::
-GetITKImage( ) const
-{
-  return( dynamic_cast< const I* >( this->m_ITKObject.GetPointer( ) ) );
-}
-
 // -------------------------------------------------------------------------
 template< class P, unsigned int D >
 void cpPlugins::Interface::Image::
-_ITK_2_VTK( itk::DataObject* object )
+_ITK_2_VTK( itk::Object* object )
 {
   typedef itk::Image< P, D > _I;
+  typedef itk::ImageToVTKImageFilter< _I > _I2Vtk;
 
-  // Check if input object has the desired type
+  // Check (yes, again!!!) if input object has the desired type
   _I* image = dynamic_cast< _I* >( object );
   if( image == NULL )
     return;
 
   // Connect it to VTK
-  typename itk::ImageToVTKImageFilter< _I >::Pointer f =
-    itk::ImageToVTKImageFilter< _I >::New( );
+  _I2Vtk* f =
+    dynamic_cast< _I2Vtk* >( this->m_ITKvVTKConnection.GetPointer( ) );
+  if( f == NULL )
+  {
+    typename _I2Vtk::Pointer nf = _I2Vtk::New( );
+    this->m_ITKvVTKConnection = nf;
+    f = nf.GetPointer( );
+
+  } // fi
   f->SetInput( image );
   f->Update( );
 
-  // Keep objects
+  // Keep object track
   this->m_VTKObject = f->GetOutput( );
-  this->m_ITKvVTKConnection = f;
 }
 
+#ifndef cpPlugins_Interface_EXPORTS
+
+// =========================================================================
+// ==========           Declare import itk::Image types           ==========
+// =========================================================================
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ITKImage_Import( T, D )                       \
+  cpPlugins_TEMPLATE_IMPORT(                                    \
+    2(class cpPlugins_Interface_EXPORT itk::Image< T, D >)      \
+    )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ITKArrayImage_Import( A, T, DA, DI )                  \
+  cpPlugins_TEMPLATE_IMPORT(                                            \
+    3(class cpPlugins_Interface_EXPORT itk::Image< A< T, DA >, DI >)    \
+    )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ITKImage_AllDims_Import( T )  \
+  cpPlugins_ITKImage_Import( T, 2 );            \
+  cpPlugins_ITKImage_Import( T, 3 );            \
+  cpPlugins_ITKImage_Import( T, 4 )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ITKArrayImage_AllDims_Import( A, T )  \
+  cpPlugins_ITKArrayImage_Import( A, T, 2, 2 );         \
+  cpPlugins_ITKArrayImage_Import( A, T, 3, 3 );         \
+  cpPlugins_ITKArrayImage_Import( A, T, 4, 4 )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VTKImage_Import( T, D )               \
+  cpPlugins_TEMPLATE_IMPORT(                            \
+    2(                                                  \
+      class cpPlugins_Interface_EXPORT                  \
+      itk::ImageToVTKImageFilter< itk::Image< T, D > >  \
+      )                                                 \
+    )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VTKArrayImage_Import( A, T, DA, DI )                  \
+  cpPlugins_TEMPLATE_IMPORT(                                            \
+    3(class                                                             \
+      cpPlugins_Interface_EXPORT                                        \
+      itk::ImageToVTKImageFilter< itk::Image< A< T, DA >, DI > >)       \
+    )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VTKImage_AllDims_Import( T )  \
+  cpPlugins_VTKImage_Import( T, 2 );            \
+  cpPlugins_VTKImage_Import( T, 3 )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VTKArrayImage_AllDims_Import( A, T )  \
+  cpPlugins_VTKArrayImage_Import( A, T, 2, 2 );         \
+  cpPlugins_VTKArrayImage_Import( A, T, 3, 3 )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_Image_Import( T, D )          \
+  cpPlugins_ITKImage_Import( T, D );            \
+  cpPlugins_VTKImage_Import( T, D )             \
+  
+// -------------------------------------------------------------------------
+#define cpPlugins_Image_AllDims_Import( T )     \
+  cpPlugins_ITKImage_AllDims_Import( T );       \
+  cpPlugins_VTKImage_AllDims_Import( T )        \
+  
+// -------------------------------------------------------------------------
+#define cpPlugins_ArrayImage_AllDims_Import( A, T )     \
+  cpPlugins_ITKArrayImage_AllDims_Import( A, T );       \
+  cpPlugins_VTKArrayImage_AllDims_Import( A, T )        \
+  
+// -------------------------------------------------------------------------
+// ITK-VTK base clases
+// -------------------------------------------------------------------------
+
+cpPlugins_Image_AllDims_Import( char );
+cpPlugins_Image_AllDims_Import( short );
+cpPlugins_Image_AllDims_Import( int );
+cpPlugins_Image_AllDims_Import( long );
+cpPlugins_Image_AllDims_Import( unsigned char );
+cpPlugins_Image_AllDims_Import( unsigned short );
+cpPlugins_Image_AllDims_Import( unsigned int );
+cpPlugins_Image_AllDims_Import( unsigned long );
+cpPlugins_Image_AllDims_Import( float );
+cpPlugins_Image_AllDims_Import( double );
+
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< char > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< short > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< int > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< long > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< unsigned char > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< unsigned short > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< unsigned int > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< unsigned long > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< float > );
+cpPlugins_Image_AllDims_Import( itk::RGBPixel< double > );
+
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< char > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< short > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< int > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< long > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< unsigned char > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< unsigned short > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< unsigned int > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< unsigned long > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< float > );
+cpPlugins_Image_AllDims_Import( itk::RGBAPixel< double > );
+
+cpPlugins_Image_AllDims_Import( itk::DiffusionTensor3D< float > );
+cpPlugins_Image_AllDims_Import( itk::DiffusionTensor3D< double > );
+
+cpPlugins_ArrayImage_AllDims_Import( itk::Vector, float );
+cpPlugins_ArrayImage_AllDims_Import( itk::Vector, double );
+
+cpPlugins_ArrayImage_AllDims_Import( itk::CovariantVector, float );
+cpPlugins_ArrayImage_AllDims_Import( itk::CovariantVector, double );
+
+cpPlugins_ArrayImage_AllDims_Import( itk::Point, float );
+cpPlugins_ArrayImage_AllDims_Import( itk::Point, double );
+
+cpPlugins_ArrayImage_AllDims_Import( itk::SymmetricSecondRankTensor, float );
+cpPlugins_ArrayImage_AllDims_Import( itk::SymmetricSecondRankTensor, double );
+
+// -------------------------------------------------------------------------
+// ITK-only base clases
+// -------------------------------------------------------------------------
+
+cpPlugins_ITKImage_AllDims_Import( std::complex< float > );
+cpPlugins_ITKImage_AllDims_Import( std::complex< double > );
+
+cpPlugins_ITKImage_Import( itk::Offset< 2 >, 2 );
+cpPlugins_ITKImage_Import( itk::Offset< 3 >, 3 );
+cpPlugins_ITKImage_Import( itk::Offset< 4 >, 4 );
+
+// =========================================================================
+// ==========        Declare import itk::VectorImage types        ==========
+// =========================================================================
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VectorImage_Import( T, D )                            \
+  cpPlugins_TEMPLATE_IMPORT(                                            \
+    2(class cpPlugins_Interface_EXPORT itk::VectorImage< T, D >)        \
+    )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ArrayVectorImage_Import( A, T, DA, DI )               \
+  cpPlugins_TEMPLATE_IMPORT(                                            \
+    3(class                                                             \
+      cpPlugins_Interface_EXPORT                                        \
+      itk::VectorImage< A< T, DA >, DI >)                               \
+    )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VectorImage_AllDims_Import( T )  \
+  cpPlugins_VectorImage_Import( T, 2 );            \
+  cpPlugins_VectorImage_Import( T, 3 );            \
+  cpPlugins_VectorImage_Import( T, 4 )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ArrayVectorImage_AllDims_Import( A, T )     \
+  cpPlugins_ArrayVectorImage_Import( A, T, 2, 2 );            \
+  cpPlugins_ArrayVectorImage_Import( A, T, 3, 3 );            \
+  cpPlugins_ArrayVectorImage_Import( A, T, 4, 4 )
+
+// -------------------------------------------------------------------------
+// ITK-VTK base clases
+// -------------------------------------------------------------------------
+
+cpPlugins_VectorImage_AllDims_Import( char );
+cpPlugins_VectorImage_AllDims_Import( short );
+cpPlugins_VectorImage_AllDims_Import( int );
+cpPlugins_VectorImage_AllDims_Import( long );
+cpPlugins_VectorImage_AllDims_Import( unsigned char );
+cpPlugins_VectorImage_AllDims_Import( unsigned short );
+cpPlugins_VectorImage_AllDims_Import( unsigned int );
+cpPlugins_VectorImage_AllDims_Import( unsigned long );
+cpPlugins_VectorImage_AllDims_Import( float );
+cpPlugins_VectorImage_AllDims_Import( double );
+
+cpPlugins_VectorImage_AllDims_Import( std::complex< float > );
+cpPlugins_VectorImage_AllDims_Import( std::complex< double > );
+
+cpPlugins_VectorImage_Import( itk::Offset< 2 >, 2 );
+cpPlugins_VectorImage_Import( itk::Offset< 3 >, 3 );
+cpPlugins_VectorImage_Import( itk::Offset< 4 >, 4 );
+
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< char > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< short > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< int > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< long > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< unsigned char > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< unsigned short > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< unsigned int > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< unsigned long > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< float > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBPixel< double > );
+
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< char > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< short > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< int > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< long > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< unsigned char > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< unsigned short > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< unsigned int > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< unsigned long > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< float > );
+cpPlugins_VectorImage_AllDims_Import( itk::RGBAPixel< double > );
+
+cpPlugins_VectorImage_AllDims_Import( itk::DiffusionTensor3D< float > );
+cpPlugins_VectorImage_AllDims_Import( itk::DiffusionTensor3D< double > );
+
+cpPlugins_ArrayVectorImage_AllDims_Import( itk::Vector, float );
+cpPlugins_ArrayVectorImage_AllDims_Import( itk::Vector, double );
+
+cpPlugins_ArrayVectorImage_AllDims_Import( itk::CovariantVector, float );
+cpPlugins_ArrayVectorImage_AllDims_Import( itk::CovariantVector, double );
+
+cpPlugins_ArrayVectorImage_AllDims_Import( itk::Point, float );
+cpPlugins_ArrayVectorImage_AllDims_Import( itk::Point, double );
+
+cpPlugins_ArrayVectorImage_AllDims_Import(
+  itk::SymmetricSecondRankTensor, float
+  );
+cpPlugins_ArrayVectorImage_AllDims_Import(
+  itk::SymmetricSecondRankTensor, double
+  );
+
+#endif // cpPlugins_Interface_EXPORTS
+
 #endif // __CPPLUGINS__INTERFACE__IMAGE__HXX__
 
 // eof - $RCSfile$