]> Creatis software - cpPlugins.git/commitdiff
...
authorLeonardo Florez-Valencia <florez-l@javeriana.edu.co>
Sun, 20 Sep 2015 10:25:41 +0000 (12:25 +0200)
committerLeonardo Florez-Valencia <florez-l@javeriana.edu.co>
Sun, 20 Sep 2015 10:25:41 +0000 (12:25 +0200)
47 files changed:
CMakeLists.txt
appli/CMakeLists.txt
appli/examples/CMakeLists.txt
lib/cpExtensions/Algorithms/BezierCurveFunction.h
lib/cpExtensions/Algorithms/GradientFunctionBase.h
lib/cpExtensions/Algorithms/GulsunTekMedialness.h
lib/cpExtensions/Algorithms/ImageFunctionFilter.h
lib/cpExtensions/Algorithms/InertiaMedialness.h
lib/cpExtensions/Algorithms/InertiaTensorFunction.h
lib/cpExtensions/Algorithms/IsoImageSlicer.h
lib/cpExtensions/Algorithms/IterativeGaussianModelEstimator.h
lib/cpExtensions/Algorithms/KalmanConstantFilter.h
lib/cpExtensions/Algorithms/KalmanFilter.h
lib/cpExtensions/Algorithms/LightCompensationFilter.h
lib/cpExtensions/Algorithms/MultiScaleGaussianImageFilter.h
lib/cpExtensions/Algorithms/ParallelImageMean.h
lib/cpExtensions/Algorithms/RGBImageToOtherChannelsFilter.h
lib/cpExtensions/CMakeLists.txt
lib/cpExtensions/DataStructures/QuadEdge.h
lib/cpExtensions/DataStructures/QuadEdgeCell.h
lib/cpExtensions/DataStructures/QuadEdgeIterators.h
lib/cpExtensions/DataStructures/QuadEdgeMesh.h
lib/cpExtensions/IO/MeshReader.h
lib/cpExtensions/IO/WaveFrontOBJReader.h
lib/cpExtensions/Visualization/MeshMapper.h
lib/cpExtensions/Visualization/OpenGLMeshMapper.h
lib/cpPlugins/Interface/BaseProcessObjects.cxx
lib/cpPlugins/Interface/BaseProcessObjects.h
lib/cpPlugins/Interface/Image.h
lib/cpPlugins/Interface/Image.hxx
lib/cpPlugins/Interface/ProcessObject.h
lib/cpPlugins/Interface/ProcessObject.hxx
lib/cpPlugins/Plugins/CMakeLists.txt
lib/cpPlugins/Plugins/ImageReader.cxx
lib/cpPlugins/Plugins/ImageReader.h
lib/cpPlugins/Plugins/ImageWriter.cxx
lib/cpPlugins/Plugins/ImageWriter.h
lib/cpPlugins/Plugins/Instances_itkImage.cxx
lib/cpPlugins/Plugins/Instances_itkMesh.cxx
lib/cpPlugins/Plugins/MarchingCubes.cxx
lib/cpPlugins/Plugins/MarchingCubes.h
lib/cpPlugins/Plugins/MeshReader.cxx
lib/cpPlugins/Plugins/MeshReader.h
lib/cpPlugins/Plugins/MeshWriter.cxx
lib/cpPlugins/Plugins/MeshWriter.h
lib/cpPlugins/Plugins/OtsuThresholdImageFilter.cxx
lib/cpPlugins/Plugins/OtsuThresholdImageFilter.h

index 16233ddf8ac8e1a01f283964e2cf3094fe9fdef1..83c4b843c7568a621d7a3c7fb8228d59d2cd736c 100644 (file)
@@ -36,6 +36,13 @@ SET(
 OPTION(USE_QT4 "Build Qt4-based code" OFF)
 OPTION(BUILD_EXAMPLES "Build examples" OFF)
 
+OPTION(BUILD_SHARED_LIBRARIES "Build libraries as shared" OFF)
+IF(BUILD_SHARED_LIBRARIES)
+  SET(LIBRARY_TYPE SHARED)
+ELSE(BUILD_SHARED_LIBRARIES)
+  SET(LIBRARY_TYPE STATIC)
+ENDIF(BUILD_SHARED_LIBRARIES)
+
 ## ========================
 ## = Packages and options =
 ## ========================
index 7ca64d43ccc1308a2fce1060d3c872859574e387..6e05dedf3580c6a8613cd437877bcdf2ce731868 100644 (file)
@@ -1,7 +1,7 @@
 IF(BUILD_EXAMPLES)
   SUBDIRS(
     examples
-    ImageMPR
+    #ImageMPR
     )
 ENDIF(BUILD_EXAMPLES)
 
index 1de245a6dcddee57c01bd7365a1fb6d42404e41c..1e5b94321022c4366d07ca633621b56507acebf9 100644 (file)
@@ -6,10 +6,10 @@
 SET(
   EXAMPLES_PROGRAMS
   ## example_TestParameters
-  #example_LoadPlugins
-  #example_ReadWriteImage
-  #example_MarchingCubes
-  #example_OtsuFilter
+  example_LoadPlugins
+  example_ReadWriteImage
+  example_MarchingCubes
+  example_OtsuFilter
   ## example_ReadImageSeriesWriteImage
   ## example_ReadQuadEdgeMesh
   ## example_RenderQuadEdgeMesh
@@ -23,10 +23,10 @@ FOREACH(prog ${EXAMPLES_PROGRAMS})
     ${prog}
     ${prog}.cxx
     )
-  #TARGET_LINK_LIBRARIES(
-  #  ${prog}
-  #  cpPlugins_Interface
-  #  )
+  TARGET_LINK_LIBRARIES(
+    ${prog}
+    cpPlugins_Interface
+    )
 ENDFOREACH(prog)
 
 SET(
index ee512da6a240b91eac6d7634687ee3d51224ef3d..2deba450a5c79af6f66a5d238df83b2ab89a50da 100644 (file)
@@ -67,7 +67,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/Algorithms/BezierCurveFunction.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__ALGORITHMS__BEZIERCURVEFUNCTION__H__
 
index 2c4f5b669d869fba67c971056f7c4408be8a1160..0472cc4efec3dc49450a8d16620c70077049ac48 100644 (file)
@@ -75,7 +75,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/Algorithms/GradientFunctionBase.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__ALGORITHMS__GRADIENTFUNCTIONBASE__H__
 
index 27c1c7ecab644dc1cea7fa10d055a91d195db838..2fdf61cedc78d02320b39a520b169d7c8903a614 100644 (file)
@@ -76,7 +76,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/Algorithms/GulsunTekMedialness.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__ALGORITHMS__GULSUNTEKMEDIALNESS__H__
 
index 9c0e76d3fbaec6d29d21bbdd8fd2614ca4f2f213..39007a5988de88db127ff7fb4cc55743876702cc 100644 (file)
@@ -97,7 +97,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 // TODO: #include <cpExtensions/Algorithms/ImageFunctionFilter.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__ALGORITHMS__IMAGEFUNCTIONFILTER__H__
 
index e9ad2a962698e5cf8f82366007c4cbec8a3588a5..e385513632948f1afb92a0a12555dbf722f0c867 100644 (file)
@@ -206,7 +206,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 // TODO: #include <cpExtensions/Algorithms/InertiaMedialness.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__ALGORITHMS__INERTIAMEDIALNESS__H__
 
index de097a49dccf0f4975066745cc8e8cb9b69ca98e..ecb341de9e2e7cf45657575d439ef28d157c9b74 100644 (file)
@@ -171,7 +171,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 // #include <cpExtensions/Algorithms/InertiaTensorFunction.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__ALGORITHMS__INERTIATENSORFUNCTION__H__
 
index 2582cf9f6400859366a4326c6e2d95bdcf522f68..cf4968d28faf8a98381ef44682db16aac3462633 100644 (file)
@@ -158,28 +158,28 @@ namespace cpExtensions
     void operator=( const Self& );                                      \
   };
 
-namespace cpPlugins
+namespace cpExtensions
 {
-  namespace Extensions
+  namespace Algorithms
   {
-    namespace Algorithms
-    {
-      CPPLUGINS_DEFINE_ISOIMAGESLICER(
-        IsoImageSlicer,
-        itk::ResampleImageFilter,
-        itk::InterpolateImageFunction
-        );
-      CPPLUGINS_DEFINE_ISOIMAGESLICER(
-        VectorIsoImageSlicer,
-        itk::VectorResampleImageFilter,
-        itk::VectorInterpolateImageFunction
-        );
-
-    } // ecapseman
+    CPPLUGINS_DEFINE_ISOIMAGESLICER(
+      IsoImageSlicer,
+      itk::ResampleImageFilter,
+      itk::InterpolateImageFunction
+      );
+    CPPLUGINS_DEFINE_ISOIMAGESLICER(
+      VectorIsoImageSlicer,
+      itk::VectorResampleImageFilter,
+      itk::VectorInterpolateImageFunction
+      );
 
   } // ecapseman
 
+} // ecapseman
+
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/Algorithms/IsoImageSlicer.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__ALGORITHMS__ISOIMAGESLICER__H__
 
index 8a30510be5b937606498dfbd43b2bfbdb84958b4..5cf7332ce1957bbe313f70372b4e1f699d381be7 100644 (file)
@@ -102,7 +102,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/Algorithms/IterativeGaussianModelEstimator.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__ALGORITHMS__ITERATIVEGAUSSIANMODELESTIMATOR__H__
 
index e9d0192b2c6cb89a0d065ab4d422da6686f2a915..860a8f3f1cf3b3ec788689a14bf410f865b3d22e 100644 (file)
@@ -34,17 +34,17 @@ namespace cpExtensions
     public:
       void Configure( unsigned int m );
 
-      /// Iteration methods
-        virtual void Initialize( );
+      // Iteration methods
+      virtual void Initialize( );
 
     protected:
-        KalmanConstantFilter( );
-        virtual ~KalmanConstantFilter( );
+      KalmanConstantFilter( );
+      virtual ~KalmanConstantFilter( );
 
     private:
-        // Purposely not implemented.
-        KalmanConstantFilter( const Self& );
-        void operator=( const Self& );
+      // Purposely not implemented.
+      KalmanConstantFilter( const Self& );
+      void operator=( const Self& );
     };
 
   } // ecapseman
index a96c6208c116e741bfc4d7c51670459bf66fb729..bd0c17a701a5505bbc7d93c43459ee916a44ae46 100644 (file)
@@ -130,83 +130,85 @@ namespace cpExtensions
 
       void Configure( unsigned int s, unsigned int i, unsigned int m );
 
-      /// Iteration methods
-        virtual void Initialize( );
-        virtual void Predict( );
-        virtual void Innovate( );
-        virtual void Filtrate( );
-        virtual void OneStep( )
+      // Iteration methods
+      virtual void Initialize( );
+      virtual void Predict( );
+      virtual void Innovate( );
+      virtual void Filtrate( );
+      virtual void OneStep( )
         {
           this->Predict( );
           this->Innovate( );
           this->Filtrate( );
         }
-        virtual void NSteps( unsigned int n )
+      virtual void NSteps( unsigned int n )
         {
           for( unsigned int i = 0; i < n; i++ )
             this->OneStep( );
         }
-        unsigned int CurrentIteration( ) const
+      unsigned int CurrentIteration( ) const
         { return( this->m_I ); }
-        unsigned char CurrentStep( ) const
+      unsigned char CurrentStep( ) const
         { return( this->m_Step ); }
 
     protected:
-        KalmanFilter( );
-        virtual ~KalmanFilter( );
+      KalmanFilter( );
+      virtual ~KalmanFilter( );
 
     private:
-        // Purposely not implemented
-        KalmanFilter( const Self& );
-        void operator=( const Self& );
+      // Purposely not implemented
+      KalmanFilter( const Self& );
+      void operator=( const Self& );
 
     protected:
-        // Filter dimensions
-        unsigned int m_StateSize;
-        unsigned int m_InputSize;
-        unsigned int m_MeasureSize;
-
-        // Transition matrices
-        TMatrix m_A;  /// Transition
-          TMatrix m_B;  /// Input control
-            TMatrix m_H;  /// Measure
-              TMatrix m_Id; /// Identity matrix
-
-                // Noise matrices
-                TMatrix m_Q; /// Process noise covariance
-                  TMatrix m_R; /// Measure noise covariance
-
-                    // Initial values
-                    TVector m_x0; /// Initial state
-                      TMatrix m_P0; /// Initial error covariance
-
-                        // Loop vectors
-                        TVector m_u;  /// Last real input
-                          TVector m_m;  /// Last real measure
-                            TVector m_xm; /// A priori state
-                              TVector m_xp; /// A posteriori state
-
-                                // Loop matrices
-                                TMatrix m_K; /// kalman gain
-                                  TMatrix m_Pm; /// A priori error
-                                    TMatrix m_Pp; /// A posteriori error
-
-                                      // Loop values
-                                      unsigned int  m_I;    /// Current iteration
-                                        unsigned char m_Step; /// Current step within current iteration
-
-                                          // -----------------------------------------------------------------
-                                          // Classic kronecker product operator
-                                          // -----------------------------------------------------------------
-                                          template< class M >
-                                            static void Kronecker( M& AkB, const M& A, const M& B );
+      // Filter dimensions
+      unsigned int m_StateSize;
+      unsigned int m_InputSize;
+      unsigned int m_MeasureSize;
+
+      // Transition matrices
+      TMatrix m_A;  // Transition
+      TMatrix m_B;  // Input control
+      TMatrix m_H;  // Measure
+      TMatrix m_Id; // Identity matrix
+
+      // Noise matrices
+      TMatrix m_Q; // Process noise covariance
+      TMatrix m_R; // Measure noise covariance
+
+      // Initial values
+      TVector m_x0; // Initial state
+      TMatrix m_P0; // Initial error covariance
+
+      // Loop vectors
+      TVector m_u;  // Last real input
+      TVector m_m;  // Last real measure
+      TVector m_xm; // A priori state
+      TVector m_xp; // A posteriori state
+
+      // Loop matrices
+      TMatrix m_K; // kalman gain
+      TMatrix m_Pm; // A priori error
+      TMatrix m_Pp; // A posteriori error
+
+      // Loop values
+      unsigned int  m_I;    // Current iteration
+      unsigned char m_Step; // Current step within current iteration
+
+      // -------------------------------------------------------------------
+      // Classic kronecker product operator
+      // -------------------------------------------------------------------
+      template< class M >
+      static void Kronecker( M& AkB, const M& A, const M& B );
     };
 
   } // ecapseman
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/Algorithms/KalmanFilter.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__ALGORITHMS__KALMANFILTER__H__
 
index d219c7ddd7a627d4f3a7dc97b3d223938978d2dd..a3c28ff0ae79fb538bfd8f58e23b2c571fbe8f7b 100644 (file)
@@ -56,7 +56,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/Algorithms/LightCompensationFilter.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__ALGORITHMS__LIGHTCOMPENSATIONFILTER__H__
 
index 079d9d4a3eee8f22a835fa6956710ed6aebbe1bf..5dba45bfb2e710a1a1da8055b941e182d7fd19b5 100644 (file)
@@ -93,7 +93,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/Algorithms/MultiScaleGaussianImageFilter.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__ALGORITHMS__MULTISCALEGAUSSIANIMAGEFILTER__H__
 
index 1fe204ae54cf0bbcab914d0c81d8e71cca9914ba..6122ce37362cd5c7ba17ce7186e9a4328f184ba5 100644 (file)
@@ -61,7 +61,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/Algorithms/ParallelImageMean.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__ALGORITHMS__PARALLELIMAGEMEAN__H__
 
index b5370154bdda2920efdf21fb78711c62f550937b..eec919d8b89034409d10faca6e7bd1cc1e032aad 100644 (file)
@@ -71,7 +71,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/Algorithms/RGBImageToOtherChannelsFilter.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__ALGORITHMS__RGBIMAGETOOTHERCHANNELSFILTER__H__
 
index 376a35384ecdb2405eec10f09cc9f3bbb1f33336..8819756bfda67e484662e5532894dd6c76e36b86 100644 (file)
@@ -45,7 +45,7 @@ FILE(GLOB LIB_Visualization_SOURCES_CXX "Visualization/*.cxx")
 
 ADD_LIBRARY(
   ${LIBRARY_NAME}
-  SHARED
+  ${LIBRARY_TYPE}
   ${LIB_SOURCES_C}
   ${LIB_SOURCES_CPP}
   ${LIB_SOURCES_CXX}
index 1914d03482c61b9e59faf89eb7325c1e7aff3bc9..bcb1f886365a9751c85e8fa8db8223fdde5ab789 100644 (file)
@@ -462,7 +462,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/DataStructures/QuadEdge.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__DATASTRUCTURES__QUADEDGE__H__
 
index d177e3d47ab381f462d2d83d7229bf252c56c7ba..84ae92fe3c77e3d1fc7aa210bb454917fc5d86c1 100644 (file)
@@ -117,7 +117,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/DataStructures/QuadEdgeCell.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__DATASTRUCTURES__QUADEDGECELL__H__
 
index c1a06a73691d5cc43a6060fbc0fb151b15a73b26..c82ac346eef708509d34c4053bee06610b86f72e 100644 (file)
@@ -164,7 +164,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/DataStructures/QuadEdgeIterators.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__DATASTRUCTURES__QUADEDGEITERATORS__H__
 
index 7ce48fe6fa534f93af9989d289dce107d2b7b694..40cdf1f7f4fd0ce8c9c59a5828c0ad6dee8226f9 100644 (file)
@@ -276,7 +276,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/DataStructures/QuadEdgeMesh.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__DATASTRUCTURES__QUADEDGEMESH__H__
 
index d6e8e1fadbd4bb0fe32c9c45f50a4678bb40dc9f..af162931cb346ca6c9e92bf6b10b3476e6a03712 100644 (file)
@@ -55,7 +55,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/IO/MeshReader.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__IO__MESHREADER__H__
 
index 98274d8cc81db19906f8db326ac88c0a264810e3..4cd744695439bcf1d6b26e3c1c8f408850221ed6 100644 (file)
@@ -72,7 +72,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/IO/WaveFrontOBJReader.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__IO__WAVEFRONTOBJREADER__H__
 
index e833f128f03496ca133c78a5be1862e99dd2c397..c6aee51990d84b206e674263a7dcb72a90777c8b 100644 (file)
@@ -96,7 +96,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/Visualization/MeshMapper.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__VISUALIZATION__MESHMAPPER__H__
 
index 02ffeac9d9fc24216c2b83b6933a95b84772fad3..ff80ce37ddffcc79fdddc7ad0b8320b8a407cea1 100644 (file)
@@ -69,7 +69,9 @@ namespace cpExtensions
 
 } // ecapseman
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include <cpExtensions/Visualization/OpenGLMeshMapper.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
 
 #endif // __CPEXTENSIONS__VISUALIZATION__OPENGLMESHMAPPER__H__
 
index 8f03de01bbee429b30125d8783fc57a3a739ec95..004d9394679703a4d5902de982833103f494ba4a 100644 (file)
@@ -7,9 +7,9 @@ cpPlugins_Interface_Code_ProcessObject( ImageSource );
 cpPlugins_Interface_Code_ProcessObject( MeshSource );
 cpPlugins_Interface_Code_ProcessObject( ImageSink );
 cpPlugins_Interface_Code_ProcessObject( MeshSink );
-cpPlugins_Interface_Code_ProcessObject( ImageToImageFitler );
-cpPlugins_Interface_Code_ProcessObject( ImageToMeshFitler );
-cpPlugins_Interface_Code_ProcessObject( MeshToImageFitler );
-cpPlugins_Interface_Code_ProcessObject( MeshToMeshFitler );
+cpPlugins_Interface_Code_ProcessObject( ImageToImageFilter );
+cpPlugins_Interface_Code_ProcessObject( ImageToMeshFilter );
+cpPlugins_Interface_Code_ProcessObject( MeshToImageFilter );
+cpPlugins_Interface_Code_ProcessObject( MeshToMeshFilter );
 
 // eof - $RCSfile$
index 687a00fa6a80a399209699390277c09315a0b404..688a9555f6847b065277ff72d84a0e77d4c73832 100644 (file)
   }                                                     \
   cpPlugins::Interface::O::~O( ) { }
 
+// -------------------------------------------------------------------------
+#define cpPlugins_Image_Input_Demangle( T, D, I, O, r, f )      \
+  if( ( O = I->GetITKImage< itk::Image< T, D > >( ) ) != NULL ) \
+    r = this->f< itk::Image< T, D > >( O )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ImageArray_Input_Demangle( A, T, DP, DI, I, O, r, f ) \
+  if(                                                                   \
+    ( O = I->GetITKImage< itk::Image< A< T, DP >, DI > >( ) ) != NULL   \
+    )                                                                   \
+    r = this->f< itk::Image< A< T, DP >, DI > >( O )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_Image_Input_Demangle_Dimension_AllScalarTypes( D, I, O, r, f ) \
+  cpPlugins_Image_Input_Demangle( char, D, I, O, r, f );                \
+  else cpPlugins_Image_Input_Demangle( short, D, I, O, r, f );          \
+  else cpPlugins_Image_Input_Demangle( int, D, I, O, r, f );            \
+  else cpPlugins_Image_Input_Demangle( long, D, I, O, r, f );           \
+  else cpPlugins_Image_Input_Demangle( float, D, I, O, r, f );          \
+  else cpPlugins_Image_Input_Demangle( double, D, I, O, r, f );         \
+  else cpPlugins_Image_Input_Demangle( unsigned char, D, I, O, r, f );  \
+  else cpPlugins_Image_Input_Demangle( unsigned short, D, I, O, r, f ); \
+  else cpPlugins_Image_Input_Demangle( unsigned int, D, I, O, r, f );   \
+  else cpPlugins_Image_Input_Demangle( unsigned long, D, I, O, r, f )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_Image_Input_Demangle_Dimension_AllTypes( D, I, O, r, f ) \
+  cpPlugins_Image_Input_Demangle( char, D, I, O, r, f );                \
+  else cpPlugins_Image_Input_Demangle( short, D, I, O, r, f );          \
+  else cpPlugins_Image_Input_Demangle( int, D, I, O, r, f );            \
+  else cpPlugins_Image_Input_Demangle( long, D, I, O, r, f );           \
+  else cpPlugins_Image_Input_Demangle( float, D, I, O, r, f );          \
+  else cpPlugins_Image_Input_Demangle( double, D, I, O, r, f );         \
+  else cpPlugins_Image_Input_Demangle( unsigned char, D, I, O, r, f );  \
+  else cpPlugins_Image_Input_Demangle( unsigned short, D, I, O, r, f ); \
+  else cpPlugins_Image_Input_Demangle( unsigned int, D, I, O, r, f );   \
+  else cpPlugins_Image_Input_Demangle( unsigned long, D, I, O, r, f );  \
+  else cpPlugins_Image_Input_Demangle(                                  \
+    std::complex< float >, D, I, O, r, f                                \
+    );                                                                  \
+  else cpPlugins_Image_Input_Demangle(                                  \
+    std::complex< double >, D, I, O, r, f                               \
+    );                                                                  \
+  else cpPlugins_Image_Input_Demangle(                                  \
+    itk::RGBPixel< char >, D, I, O, r, f                                \
+    );                                                                  \
+  else cpPlugins_Image_Input_Demangle(                                  \
+    itk::RGBPixel< short >, D, I, O, r, f                               \
+    );                                                                  \
+  else cpPlugins_Image_Input_Demangle(                                  \
+    itk::RGBPixel< unsigned char >, D, I, O, r, f                       \
+    );                                                                  \
+  else cpPlugins_Image_Input_Demangle(                                  \
+    itk::RGBPixel< unsigned short >, D, I, O, r, f                      \
+    );                                                                  \
+  else cpPlugins_Image_Input_Demangle(                                  \
+    itk::RGBAPixel< char >, D, I, O, r, f                               \
+    );                                                                  \
+  else cpPlugins_Image_Input_Demangle(                                  \
+    itk::RGBAPixel< short >, D, I, O, r, f                              \
+    );                                                                  \
+  else cpPlugins_Image_Input_Demangle(                                  \
+    itk::RGBAPixel< unsigned char >, D, I, O, r, f                      \
+    );                                                                  \
+  else cpPlugins_Image_Input_Demangle(                                  \
+    itk::RGBAPixel< unsigned short >, D, I, O, r, f                     \
+    );                                                                  \
+  else cpPlugins_Image_Input_Demangle(                                  \
+    itk::Offset< D >, D, I, O, r, f                                     \
+    );                                                                  \
+  else cpPlugins_ImageArray_Input_Demangle(                             \
+    itk::Vector, float, D, D, I, O, r, f                                \
+    );                                                                  \
+  else cpPlugins_ImageArray_Input_Demangle(                             \
+    itk::Vector, double, D, D, I, O, r, f                               \
+    );                                                                  \
+  else cpPlugins_ImageArray_Input_Demangle(                             \
+    itk::Point, float, D, D, I, O, r, f                                 \
+    );                                                                  \
+  else cpPlugins_ImageArray_Input_Demangle(                             \
+    itk::Point, double, D, D, I, O, r, f                                \
+    );                                                                  \
+  else cpPlugins_ImageArray_Input_Demangle(                             \
+    itk::CovariantVector, float, D, D, I, O, r, f                       \
+    );                                                                  \
+  else cpPlugins_ImageArray_Input_Demangle(                             \
+    itk::CovariantVector, double, D, D, I, O, r, f                      \
+    );                                                                  \
+  else cpPlugins_ImageArray_Input_Demangle(                             \
+    itk::SymmetricSecondRankTensor, float, D, D, I, O, r, f             \
+    );                                                                  \
+  else cpPlugins_ImageArray_Input_Demangle(                             \
+    itk::SymmetricSecondRankTensor, double, D, D, I, O, r, f            \
+    )
+
 namespace cpPlugins
 {
   namespace Interface
@@ -44,10 +139,10 @@ namespace cpPlugins
     cpPlugins_Interface_Define_ProcessObject( MeshSource, SourceObject );
     cpPlugins_Interface_Define_ProcessObject( ImageSink, SinkObject );
     cpPlugins_Interface_Define_ProcessObject( MeshSink, SinkObject );
-    cpPlugins_Interface_Define_ProcessObject( ImageToImageFitler, FilterObject );
-    cpPlugins_Interface_Define_ProcessObject( ImageToMeshFitler, FilterObject );
-    cpPlugins_Interface_Define_ProcessObject( MeshToImageFitler, FilterObject );
-    cpPlugins_Interface_Define_ProcessObject( MeshToMeshFitler, FilterObject );
+    cpPlugins_Interface_Define_ProcessObject( ImageToImageFilter, FilterObject );
+    cpPlugins_Interface_Define_ProcessObject( ImageToMeshFilter, FilterObject );
+    cpPlugins_Interface_Define_ProcessObject( MeshToImageFilter, FilterObject );
+    cpPlugins_Interface_Define_ProcessObject( MeshToMeshFilter, FilterObject );
 
   } // ecapseman
 
index 6902b706fce2b79b3e6bcac322f9d168b9ee052f..1da443bfa457df5350392f859d0b9884d502005e 100644 (file)
@@ -64,6 +64,9 @@ namespace cpPlugins
       Image( );
       virtual ~Image( );
 
+      template< class P, unsigned int D >
+        inline void _ITK_2_VTK( itk::DataObject* object );
+
       /* TODO
          template< unsigned int D >
          bool _Dim( itk::DataObject* o );
index bd8ee0411f7500550db29c85d8553870d4a1c001..bb1c667bf30af84bc91df05d8e38723728d12ffd 100644 (file)
@@ -2,8 +2,78 @@
 #define __CPPLUGINS__INTERFACE__IMAGE__HXX__
 
 #define ITK_MANUAL_INSTANTIATION
+#include <itkImage.h>
 #include <itkImageToVTKImageFilter.h>
 
+#include <itkCovariantVector.h>
+#include <itkDiffusionTensor3D.h>
+#include <itkPoint.h>
+#include <itkRGBPixel.h>
+#include <itkRGBAPixel.h>
+#include <itkSymmetricSecondRankTensor.h>
+#include <itkVector.h>
+
+// -------------------------------------------------------------------------
+#define cpPlugins_Image_Demangle( TI, T, D, o )                 \
+  if( typeid( typename TI::PixelType ) == typeid( T ) )         \
+    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 > ) )       \
+    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                 \
+    )
+
 // -------------------------------------------------------------------------
 template< class I >
 void cpPlugins::Interface::Image::
@@ -12,18 +82,50 @@ SetITKImage( itk::DataObject* object )
   // Check if input object has the desired type
   I* image = dynamic_cast< I* >( object );
   if( image == NULL )
-    return;
+  {
+    this->m_ITKObject = NULL;
+    this->m_VTKObject = NULL;
+    this->m_ITKvVTKConnection = NULL;
+    this->Modified( );
+
+  } // fi
 
   // Connect it to VTK
-  typename itk::ImageToVTKImageFilter< I >::Pointer f =
-    itk::ImageToVTKImageFilter< I >::New( );
-  f->SetInput( image );
-  f->Update( );
+  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
+  }
+  else
+  {
+    this->m_VTKObject = NULL;
+    this->m_ITKvVTKConnection = NULL;
+
+  } // fi
 
   // Keep objects
   this->m_ITKObject = object;
-  this->m_VTKObject = f->GetOutput( );
-  this->m_ITKvVTKConnection = f;
   this->Modified( );
 }
 
@@ -43,6 +145,29 @@ 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 )
+{
+  typedef itk::Image< P, D > _I;
+
+  // Check 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( );
+  f->SetInput( image );
+  f->Update( );
+
+  // Keep objects
+  this->m_VTKObject = f->GetOutput( );
+  this->m_ITKvVTKConnection = f;
+}
+
 #endif // __CPPLUGINS__INTERFACE__IMAGE__HXX__
 
 // eof - $RCSfile$
index 31a9e62daa22c5ff17451e687434b6e5c4b7f53b..ee5beddc025258d57c24e77c4faedf0de802ce60 100644 (file)
@@ -50,6 +50,18 @@ namespace cpPlugins
       template< class O >
         inline void _MakeOutput( unsigned int idx );
 
+      template< class T >
+        inline T* _Input( unsigned int idx );
+
+      template< class T >
+        inline const T* _Input( unsigned int idx ) const;
+
+      template< class T >
+        inline T* _Output( unsigned int idx );
+
+      template< class T >
+        inline const T* _Output( unsigned int idx ) const;
+
       virtual std::string _GenerateData( ) = 0;
 
     private:
index 6dcbb7de08ddfe6f7024b859096032ebe449e7bb..7b4e080c5245aec6ab6aafc80c9d6ee43e4ab807 100644 (file)
@@ -12,6 +12,50 @@ _MakeOutput( unsigned int idx )
   this->m_Outputs[ idx ]->SetSource( this );
 }
 
+// -------------------------------------------------------------------------
+template< class T >
+T* cpPlugins::Interface::ProcessObject::
+_Input( unsigned int idx )
+{
+  if( idx < this->m_Inputs.size( ) )
+    return( dynamic_cast< T* >( this->m_Inputs[ idx ].GetPointer( ) ) );
+  else
+    return( NULL );
+}
+
+// -------------------------------------------------------------------------
+template< class T >
+const T* cpPlugins::Interface::ProcessObject::
+_Input( unsigned int idx ) const
+{
+  if( idx < this->m_Inputs.size( ) )
+    return( dynamic_cast< const T* >( this->m_Inputs[ idx ].GetPointer( ) ) );
+  else
+    return( NULL );
+}
+
+// -------------------------------------------------------------------------
+template< class T >
+T* cpPlugins::Interface::ProcessObject::
+_Output( unsigned int idx )
+{
+  if( idx < this->m_Outputs.size( ) )
+    return( dynamic_cast< T* >( this->m_Outputs[ idx ].GetPointer( ) ) );
+  else
+    return( NULL );
+}
+
+// -------------------------------------------------------------------------
+template< class T >
+const T* cpPlugins::Interface::ProcessObject::
+_Output( unsigned int idx ) const
+{
+  if( idx < this->m_Outputs.size( ) )
+    return( dynamic_cast< const T* >( this->m_Outputs[ idx ].GetPointer( ) ) );
+  else
+    return( NULL );
+}
+
 #endif // __CPPLUGINS__INTERFACE__PROCESSOBJECT__HXX__
 
 // eof - $RCSfile$
index ccb6f7599c97c54d9f0956a3f3eaf77017af7d8e..21a1217f97ca74765d3608734b4d0858211c99e8 100644 (file)
@@ -23,6 +23,8 @@ SET(
   )
 SET(
   LIB_SOURCES_CXX
+  Instances_itkImage.cxx
+  Instances_itkMesh.cxx
   Host.cxx
   ImageReader.cxx
   ImageWriter.cxx
index 24399718c9e5477f8c6a45fb6461abe95e5e0570..d4ca0ba1471f500df0036b130cdb87b93e6e032e 100644 (file)
@@ -66,7 +66,6 @@ _GenerateData( )
       {
         switch( io->GetNumberOfDimensions( ) )
         {
-        case 1: r = this->_GD0< 1 >( io, names ); break;
         case 2: r = this->_GD0< 2 >( io, names ); break;
         case 3: r = this->_GD0< 3 >( io, names ); break;
         case 4: r = this->_GD0< 4 >( io, names ); break;
@@ -283,9 +282,6 @@ _GD0( itk::ImageIOBase* io, const TStringList& names )
   {
     switch( D )
     {
-    case 1:
-      r = this->_RealGD< itk::Offset< 1 >, 1 >( names );
-      break;
     case 2:
       r = this->_RealGD< itk::Offset< 2 >, 2 >( names );
       break;
@@ -436,12 +432,22 @@ _RealGD( const TStringList& names )
     try
     {
       reader->Update( );
-      this->m_Outputs[ 0 ]->SetITKDataObject( reader->GetOutput( ) );
+      cpPlugins::Interface::Image* out =
+        this->_Output< cpPlugins::Interface::Image >( 0 );
+      if( out != NULL )
+        out->SetITKImage< _I >( reader->GetOutput( ) );
+      else
+        r = "ImageReader: output not correctly created.";
     }
     catch( itk::ExceptionObject& err )
     {
       r = "ImageReader: " + std::string( err.GetDescription( ) );
-      this->m_Outputs[ 0 ]->SetITKDataObject( NULL );
+      cpPlugins::Interface::Image* out =
+        this->_Output< cpPlugins::Interface::Image >( 0 );
+      if( out != NULL )
+        out->SetITKImage< _I >( NULL );
+      else
+        r = "ImageReader: output not correctly created.";
 
     } // yrt
   }
@@ -468,12 +474,22 @@ _RealGD( const TStringList& names )
     try
     {
       reader->Update( );
-      this->m_Outputs[ 0 ]->SetITKDataObject( reader->GetOutput( ) );
+      cpPlugins::Interface::Image* out =
+        this->_Output< cpPlugins::Interface::Image >( 0 );
+      if( out != NULL )
+        out->SetITKImage< _I >( reader->GetOutput( ) );
+      else
+        r = "ImageReader: output not correctly created.";
     }
     catch( itk::ExceptionObject& err )
     {
       r = "ImageReader: " + std::string( err.GetDescription( ) );
-      this->m_Outputs[ 0 ]->SetITKDataObject( NULL );
+      cpPlugins::Interface::Image* out =
+        this->_Output< cpPlugins::Interface::Image >( 0 );
+      if( out != NULL )
+        out->SetITKImage< _I >( NULL );
+      else
+        r = "ImageReader: output not correctly created.";
 
     } // yrt
   }
index f52d4096c54dd8732295426dc2c3b7c51da70fb5..47fff4102b959aedeb80f4d9e1573521923c95e0 100644 (file)
@@ -3,8 +3,8 @@
 
 #include <vector>
 
-#include <cpPlugins/cpPlugins_Export.h>
-#include <cpPlugins/Interface/ImageSource.h>
+#include <cpPlugins/Plugins/cpPlugins_Export.h>
+#include <cpPlugins/Interface/BaseProcessObjects.h>
 
 #define ITK_MANUAL_INSTANTIATION
 #include <itkImageIOBase.h>
@@ -15,7 +15,7 @@ namespace cpPlugins
   {
     /**
      */
-    class cpPlugins_EXPORT ImageReader
+    class /*cpPlugins_EXPORT*/ ImageReader
       : public cpPlugins::Interface::ImageSource
     {
     public:
index 176e9f663ee9197aaabb01bfdd5423a936f6fd3f..955d1913259fd0fdd2de0ecba1ce1ad99021db7b 100644 (file)
@@ -1,4 +1,5 @@
 #include <cpPlugins/Plugins/ImageWriter.h>
+#include <cpPlugins/Interface/Image.h>
 
 #include <complex>
 
@@ -40,17 +41,31 @@ cpPlugins::Plugins::ImageWriter::
 std::string cpPlugins::Plugins::ImageWriter::
 _GenerateData( )
 {
-  itk::DataObject* i = this->m_Inputs[ 0 ]->GetITKDataObject( );
-  return( this->_DemangleImageDimension( i ) );
-}
+  cpPlugins::Interface::Image* image =
+    this->_Input< cpPlugins::Interface::Image >( 0 );
+  if( image == NULL )
+    return( "ImageWriter: No input image." );
 
-// -------------------------------------------------------------------------
-namespace cpPlugins
-{
-  namespace Plugins
-  {
-    cpPlugins_Image_Demangle_Methods_Code( ImageWriter, _RealGD );
-  }
+  itk::DataObject* itk_image = NULL;
+  std::string r = "";
+  cpPlugins_Image_Input_Demangle_Dimension_AllTypes(
+    2, image, itk_image, r, _RealGD
+    );
+  else cpPlugins_Image_Input_Demangle_Dimension_AllTypes(
+    3, image, itk_image, r, _RealGD
+    );
+  else cpPlugins_Image_Input_Demangle_Dimension_AllTypes(
+    4, image, itk_image, r, _RealGD
+    );
+  else cpPlugins_Image_Input_Demangle(
+    itk::DiffusionTensor3D< float >, 3, image, itk_image, r, _RealGD
+    );
+  else cpPlugins_Image_Input_Demangle(
+    itk::DiffusionTensor3D< double >, 3, image, itk_image, r, _RealGD
+    );
+  else r = "ImageWriter: Input image type not supported.";
+
+  return( r );
 }
 
 // -------------------------------------------------------------------------
@@ -59,12 +74,9 @@ std::string cpPlugins::Plugins::ImageWriter::
 _RealGD( itk::DataObject* image )
 {
   typedef itk::ImageFileWriter< I > _W;
-
+  
   // Get filename
-  using namespace cpPlugins::Interface;
-  Parameters::TString fname =
-    this->m_Parameters.GetValueAsString( "FileName" );
-
+  std::string fname = this->m_Parameters.GetValueAsString( "FileName" );
   _W* writer = dynamic_cast< _W* >( this->m_RealProcessObject.GetPointer( ) );
   if( writer == NULL )
   {
index 31bdad1abb6486202c24600403f997273319b70a..4fc04f5a34545eb862e2093c1ad6077d6fa580e3 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef __CPPLUGINS__PLUGINS__IMAGEWRITER__H__
 #define __CPPLUGINS__PLUGINS__IMAGEWRITER__H__
 
-#include <cpPlugins/cpPlugins_Export.h>
-#include <cpPlugins/Interface/ImageSink.h>
+#include <cpPlugins/Plugins/cpPlugins_Export.h>
+#include <cpPlugins/Interface/BaseProcessObjects.h>
 
 namespace cpPlugins
 {
@@ -29,10 +29,8 @@ namespace cpPlugins
 
       virtual std::string _GenerateData( );
 
-      cpPlugins_Image_Demangle_Methods( ImageWriter );
-
       template< class I >
-        std::string _RealGD( itk::DataObject* image );
+        inline std::string _RealGD( itk::DataObject* image );
 
     private:
       // Purposely not implemented
index a6308b818014874eaf4735d690c0226e5e2517ab..ef296779898efbf894defc66ac89c48a59643c69 100644 (file)
@@ -1,3 +1,5 @@
+#include <cpPlugins/Plugins/cpPlugins_Export.h>
+
 #include <complex>
 
 #undef ITK_MANUAL_INSTANTIATION
 #include <itkVector.h>
 
 // -------------------------------------------------------------------------
-#define cpPlugins_I_itk( p, d )                 \
-  template class itk::Image< p, d >;
+#define cpPlugins_I_itk( p, d )                         \
+  template class cpPlugins_EXPORT itk::Image< p, d >;
 
 // -------------------------------------------------------------------------
-#define cpPlugins_I_itk_array( a, p, da, di )   \
-  template class itk::Image< a< p, da >, di >;
+#define cpPlugins_I_itk_array( a, p, da, di )                   \
+  template class cpPlugins_EXPORT itk::Image< a< p, da >, di >;
 
 // -------------------------------------------------------------------------
 #define cpPlugins_I_itk_Container( p )                                  \
-  template class itk::ImportImageContainer< itk::SizeValueType, p >;
+  template class cpPlugins_EXPORT                                       \
+  itk::ImportImageContainer< itk::SizeValueType, p >;
 
 // -------------------------------------------------------------------------
-#define cpPlugins_I_itk_array_Container( a, p, d )                      \
-  template class itk::ImportImageContainer< itk::SizeValueType, a< p, d > >;
+#define cpPlugins_I_itk_array_Container( a, p, d )              \
+  template class cpPlugins_EXPORT                               \
+  itk::ImportImageContainer< itk::SizeValueType, a< p, d > >;
 
 // -------------------------------------------------------------------------
 #define cpPlugins_I_itk_vtk( p, d )                                     \
-  template class itk::ImageToVTKImageFilter< itk::Image< p, d > >;
+  template class cpPlugins_EXPORT                                       \
+  itk::ImageToVTKImageFilter< itk::Image< p, d > >;
 
 // -------------------------------------------------------------------------
 #define cpPlugins_I_itk_vtk_array( a, p, da, di )                       \
-  template class                                                        \
+  template class cpPlugins_EXPORT                                       \
   itk::ImageToVTKImageFilter< itk::Image< a< p, da > , di > >;
 
 // -------------------------------------------------------------------------
 
 namespace itk
 {
-  template std::ostream& operator<<(
-    std::ostream& os, const ImageRegion< 1 >& obj
-    );
-  template class Point< double, 1 >;
-  template class Vector< double, 1 >;
+  /* TODO
+     template cpPlugins_EXPORT std::ostream& operator<<(
+     std::ostream& os, const ImageRegion< 1 >& obj
+     );
+     template class cpPlugins_EXPORT Point< double, 1 >;
+     template class cpPlugins_EXPORT Vector< double, 1 >;
+  */
 
 } // ecapseman
 
@@ -71,36 +78,27 @@ cpPlugins_I_itk_Container( itk::RGBAPixel< char > );
 cpPlugins_I_itk_Container( itk::RGBAPixel< short > );
 cpPlugins_I_itk_Container( itk::RGBAPixel< unsigned char > );
 cpPlugins_I_itk_Container( itk::RGBAPixel< unsigned short > );
-cpPlugins_I_itk_Container( itk::Offset< 1 > );
 cpPlugins_I_itk_Container( itk::Offset< 2 > );
 cpPlugins_I_itk_Container( itk::Offset< 3 > );
 cpPlugins_I_itk_Container( itk::Offset< 4 > );
-cpPlugins_I_itk_array_Container( itk::Vector, float, 1 );
-cpPlugins_I_itk_array_Container( itk::Vector, double, 1 );
 cpPlugins_I_itk_array_Container( itk::Vector, float, 2 );
 cpPlugins_I_itk_array_Container( itk::Vector, double, 2 );
 cpPlugins_I_itk_array_Container( itk::Vector, float, 3 );
 cpPlugins_I_itk_array_Container( itk::Vector, double, 3 );
 cpPlugins_I_itk_array_Container( itk::Vector, float, 4 );
 cpPlugins_I_itk_array_Container( itk::Vector, double, 4 );
-cpPlugins_I_itk_array_Container( itk::Point, float, 1 );
-cpPlugins_I_itk_array_Container( itk::Point, double, 1 );
 cpPlugins_I_itk_array_Container( itk::Point, float, 2 );
 cpPlugins_I_itk_array_Container( itk::Point, double, 2 );
 cpPlugins_I_itk_array_Container( itk::Point, float, 3 );
 cpPlugins_I_itk_array_Container( itk::Point, double, 3 );
 cpPlugins_I_itk_array_Container( itk::Point, float, 4 );
 cpPlugins_I_itk_array_Container( itk::Point, double, 4 );
-cpPlugins_I_itk_array_Container( itk::CovariantVector, float, 1 );
-cpPlugins_I_itk_array_Container( itk::CovariantVector, double, 1 );
 cpPlugins_I_itk_array_Container( itk::CovariantVector, float, 2 );
 cpPlugins_I_itk_array_Container( itk::CovariantVector, double, 2 );
 cpPlugins_I_itk_array_Container( itk::CovariantVector, float, 3 );
 cpPlugins_I_itk_array_Container( itk::CovariantVector, double, 3 );
 cpPlugins_I_itk_array_Container( itk::CovariantVector, float, 4 );
 cpPlugins_I_itk_array_Container( itk::CovariantVector, double, 4 );
-cpPlugins_I_itk_array_Container( itk::SymmetricSecondRankTensor, float, 1 );
-cpPlugins_I_itk_array_Container( itk::SymmetricSecondRankTensor, double, 1 );
 cpPlugins_I_itk_array_Container( itk::SymmetricSecondRankTensor, float, 2 );
 cpPlugins_I_itk_array_Container( itk::SymmetricSecondRankTensor, double, 2 );
 cpPlugins_I_itk_array_Container( itk::SymmetricSecondRankTensor, float, 3 );
@@ -110,17 +108,6 @@ cpPlugins_I_itk_array_Container( itk::SymmetricSecondRankTensor, double, 4 );
 cpPlugins_I_itk_Container( itk::DiffusionTensor3D< float > );
 cpPlugins_I_itk_Container( itk::DiffusionTensor3D< double > );
 
-cpPlugins_I_itk( char, 1 );
-cpPlugins_I_itk( short, 1 );
-cpPlugins_I_itk( int, 1 );
-cpPlugins_I_itk( long, 1 );
-cpPlugins_I_itk( unsigned char, 1 );
-cpPlugins_I_itk( unsigned short, 1 );
-cpPlugins_I_itk( unsigned int, 1 );
-cpPlugins_I_itk( unsigned long, 1 );
-cpPlugins_I_itk( float, 1 );
-cpPlugins_I_itk( double, 1 );
-
 cpPlugins_I_itk( char, 2 );
 cpPlugins_I_itk( short, 2 );
 cpPlugins_I_itk( int, 2 );
@@ -154,15 +141,10 @@ cpPlugins_I_itk( unsigned long, 4 );
 cpPlugins_I_itk( float, 4 );
 cpPlugins_I_itk( double, 4 );
 
-cpPlugins_I_itk( std::complex< float >, 1 );
-cpPlugins_I_itk( std::complex< double >, 1 );
-
 cpPlugins_I_itk( std::complex< float >, 2 );
 cpPlugins_I_itk( std::complex< double >, 2 );
-
 cpPlugins_I_itk( std::complex< float >, 3 );
 cpPlugins_I_itk( std::complex< double >, 3 );
-
 cpPlugins_I_itk( std::complex< float >, 4 );
 cpPlugins_I_itk( std::complex< double >, 4 );
 
@@ -170,12 +152,10 @@ cpPlugins_I_itk( itk::RGBPixel< char >, 2 );
 cpPlugins_I_itk( itk::RGBPixel< short >, 2 );
 cpPlugins_I_itk( itk::RGBPixel< unsigned char >, 2 );
 cpPlugins_I_itk( itk::RGBPixel< unsigned short >, 2 );
-
 cpPlugins_I_itk( itk::RGBPixel< char >, 3 );
 cpPlugins_I_itk( itk::RGBPixel< short >, 3 );
 cpPlugins_I_itk( itk::RGBPixel< unsigned char >, 3 );
 cpPlugins_I_itk( itk::RGBPixel< unsigned short >, 3 );
-
 cpPlugins_I_itk( itk::RGBPixel< char >, 4 );
 cpPlugins_I_itk( itk::RGBPixel< short >, 4 );
 cpPlugins_I_itk( itk::RGBPixel< unsigned char >, 4 );
@@ -185,24 +165,19 @@ cpPlugins_I_itk( itk::RGBAPixel< char >, 2 );
 cpPlugins_I_itk( itk::RGBAPixel< short >, 2 );
 cpPlugins_I_itk( itk::RGBAPixel< unsigned char >, 2 );
 cpPlugins_I_itk( itk::RGBAPixel< unsigned short >, 2 );
-
 cpPlugins_I_itk( itk::RGBAPixel< char >, 3 );
 cpPlugins_I_itk( itk::RGBAPixel< short >, 3 );
 cpPlugins_I_itk( itk::RGBAPixel< unsigned char >, 3 );
 cpPlugins_I_itk( itk::RGBAPixel< unsigned short >, 3 );
-
 cpPlugins_I_itk( itk::RGBAPixel< char >, 4 );
 cpPlugins_I_itk( itk::RGBAPixel< short >, 4 );
 cpPlugins_I_itk( itk::RGBAPixel< unsigned char >, 4 );
 cpPlugins_I_itk( itk::RGBAPixel< unsigned short >, 4 );
 
-cpPlugins_I_itk( itk::Offset< 1 >, 1 );
 cpPlugins_I_itk( itk::Offset< 2 >, 2 );
 cpPlugins_I_itk( itk::Offset< 3 >, 3 );
 cpPlugins_I_itk( itk::Offset< 4 >, 4 );
 
-cpPlugins_I_itk_array( itk::Vector, float, 1, 1 );
-cpPlugins_I_itk_array( itk::Vector, double, 1, 1 );
 cpPlugins_I_itk_array( itk::Vector, float, 2, 2 );
 cpPlugins_I_itk_array( itk::Vector, double, 2, 2 );
 cpPlugins_I_itk_array( itk::Vector, float, 3, 3 );
@@ -210,8 +185,6 @@ cpPlugins_I_itk_array( itk::Vector, double, 3, 3 );
 cpPlugins_I_itk_array( itk::Vector, float, 4, 4 );
 cpPlugins_I_itk_array( itk::Vector, double, 4, 4 );
 
-cpPlugins_I_itk_array( itk::Point, float, 1, 1 );
-cpPlugins_I_itk_array( itk::Point, double, 1, 1 );
 cpPlugins_I_itk_array( itk::Point, float, 2, 2 );
 cpPlugins_I_itk_array( itk::Point, double, 2, 2 );
 cpPlugins_I_itk_array( itk::Point, float, 3, 3 );
@@ -219,8 +192,6 @@ cpPlugins_I_itk_array( itk::Point, double, 3, 3 );
 cpPlugins_I_itk_array( itk::Point, float, 4, 4 );
 cpPlugins_I_itk_array( itk::Point, double, 4, 4 );
 
-cpPlugins_I_itk_array( itk::CovariantVector, float, 1, 1 );
-cpPlugins_I_itk_array( itk::CovariantVector, double, 1, 1 );
 cpPlugins_I_itk_array( itk::CovariantVector, float, 2, 2 );
 cpPlugins_I_itk_array( itk::CovariantVector, double, 2, 2 );
 cpPlugins_I_itk_array( itk::CovariantVector, float, 3, 3 );
@@ -228,8 +199,6 @@ cpPlugins_I_itk_array( itk::CovariantVector, double, 3, 3 );
 cpPlugins_I_itk_array( itk::CovariantVector, float, 4, 4 );
 cpPlugins_I_itk_array( itk::CovariantVector, double, 4, 4 );
 
-cpPlugins_I_itk_array( itk::SymmetricSecondRankTensor, float, 1, 1 );
-cpPlugins_I_itk_array( itk::SymmetricSecondRankTensor, double, 1, 1 );
 cpPlugins_I_itk_array( itk::SymmetricSecondRankTensor, float, 2, 2 );
 cpPlugins_I_itk_array( itk::SymmetricSecondRankTensor, double, 2, 2 );
 cpPlugins_I_itk_array( itk::SymmetricSecondRankTensor, float, 3, 3 );
@@ -248,17 +217,6 @@ cpPlugins_I_itk( itk::DiffusionTensor3D< double >, 3 );
 // -------------------------------------------------------------------------
 // Possible itk types that could be connected to vtk
 
-cpPlugins_I_itk_vtk( char, 1 );
-cpPlugins_I_itk_vtk( short, 1 );
-cpPlugins_I_itk_vtk( int, 1 );
-cpPlugins_I_itk_vtk( long, 1 );
-cpPlugins_I_itk_vtk( unsigned char, 1 );
-cpPlugins_I_itk_vtk( unsigned short, 1 );
-cpPlugins_I_itk_vtk( unsigned int, 1 );
-cpPlugins_I_itk_vtk( unsigned long, 1 );
-cpPlugins_I_itk_vtk( float, 1 );
-cpPlugins_I_itk_vtk( double, 1 );
-
 cpPlugins_I_itk_vtk( char, 2 );
 cpPlugins_I_itk_vtk( short, 2 );
 cpPlugins_I_itk_vtk( int, 2 );
@@ -285,7 +243,6 @@ cpPlugins_I_itk_vtk( itk::RGBPixel< char >, 2 );
 cpPlugins_I_itk_vtk( itk::RGBPixel< short >, 2 );
 cpPlugins_I_itk_vtk( itk::RGBPixel< unsigned char >, 2 );
 cpPlugins_I_itk_vtk( itk::RGBPixel< unsigned short >, 2 );
-
 cpPlugins_I_itk_vtk( itk::RGBPixel< char >, 3 );
 cpPlugins_I_itk_vtk( itk::RGBPixel< short >, 3 );
 cpPlugins_I_itk_vtk( itk::RGBPixel< unsigned char >, 3 );
@@ -295,35 +252,26 @@ cpPlugins_I_itk_vtk( itk::RGBAPixel< char >, 2 );
 cpPlugins_I_itk_vtk( itk::RGBAPixel< short >, 2 );
 cpPlugins_I_itk_vtk( itk::RGBAPixel< unsigned char >, 2 );
 cpPlugins_I_itk_vtk( itk::RGBAPixel< unsigned short >, 2 );
-
 cpPlugins_I_itk_vtk( itk::RGBAPixel< char >, 3 );
 cpPlugins_I_itk_vtk( itk::RGBAPixel< short >, 3 );
 cpPlugins_I_itk_vtk( itk::RGBAPixel< unsigned char >, 3 );
 cpPlugins_I_itk_vtk( itk::RGBAPixel< unsigned short >, 3 );
 
-cpPlugins_I_itk_vtk_array( itk::Vector, float, 1, 1 );
-cpPlugins_I_itk_vtk_array( itk::Vector, double, 1, 1 );
 cpPlugins_I_itk_vtk_array( itk::Vector, float, 2, 2 );
 cpPlugins_I_itk_vtk_array( itk::Vector, double, 2, 2 );
 cpPlugins_I_itk_vtk_array( itk::Vector, float, 3, 3 );
 cpPlugins_I_itk_vtk_array( itk::Vector, double, 3, 3 );
 
-cpPlugins_I_itk_vtk_array( itk::Point, float, 1, 1 );
-cpPlugins_I_itk_vtk_array( itk::Point, double, 1, 1 );
 cpPlugins_I_itk_vtk_array( itk::Point, float, 2, 2 );
 cpPlugins_I_itk_vtk_array( itk::Point, double, 2, 2 );
 cpPlugins_I_itk_vtk_array( itk::Point, float, 3, 3 );
 cpPlugins_I_itk_vtk_array( itk::Point, double, 3, 3 );
 
-cpPlugins_I_itk_vtk_array( itk::CovariantVector, float, 1, 1 );
-cpPlugins_I_itk_vtk_array( itk::CovariantVector, double, 1, 1 );
 cpPlugins_I_itk_vtk_array( itk::CovariantVector, float, 2, 2 );
 cpPlugins_I_itk_vtk_array( itk::CovariantVector, double, 2, 2 );
 cpPlugins_I_itk_vtk_array( itk::CovariantVector, float, 3, 3 );
 cpPlugins_I_itk_vtk_array( itk::CovariantVector, double, 3, 3 );
 
-cpPlugins_I_itk_vtk_array( itk::SymmetricSecondRankTensor, float, 1, 1 );
-cpPlugins_I_itk_vtk_array( itk::SymmetricSecondRankTensor, double, 1, 1 );
 cpPlugins_I_itk_vtk_array( itk::SymmetricSecondRankTensor, float, 2, 2 );
 cpPlugins_I_itk_vtk_array( itk::SymmetricSecondRankTensor, double, 2, 2 );
 cpPlugins_I_itk_vtk_array( itk::SymmetricSecondRankTensor, float, 3, 3 );
index 575db644e7a7123f5239947d133cf6514334886e..7a462f3d0b743b33d867cf92b78597f9a11833b1 100644 (file)
@@ -1,14 +1,16 @@
+#include <cpPlugins/Plugins/cpPlugins_Export.h>
+
 #undef ITK_MANUAL_INSTANTIATION
 #include <itkMesh.h>
 #include <itkQuadEdgeMesh.h>
 
-template class itk::Mesh< float, 2 >;
-template class itk::Mesh< float, 3 >;
-template class itk::Mesh< double, 2 >;
-template class itk::Mesh< double, 3 >;
-template class itk::QuadEdgeMesh< float, 2 >;
-template class itk::QuadEdgeMesh< float, 3 >;
-template class itk::QuadEdgeMesh< double, 2 >;
-template class itk::QuadEdgeMesh< double, 3 >;
+template class cpPlugins_EXPORT itk::Mesh< float, 2 >;
+template class cpPlugins_EXPORT itk::Mesh< float, 3 >;
+template class cpPlugins_EXPORT itk::Mesh< double, 2 >;
+template class cpPlugins_EXPORT itk::Mesh< double, 3 >;
+template class cpPlugins_EXPORT itk::QuadEdgeMesh< float, 2 >;
+template class cpPlugins_EXPORT itk::QuadEdgeMesh< float, 3 >;
+template class cpPlugins_EXPORT itk::QuadEdgeMesh< double, 2 >;
+template class cpPlugins_EXPORT itk::QuadEdgeMesh< double, 3 >;
 
 // eof - $RCSfile$
index bc56f9cb4f9fd38e7df6d7d16a0e4a29225e200e..8187b42d0cdb51d743523ae28f9c7452a254f5b9 100644 (file)
@@ -36,34 +36,31 @@ std::string cpPlugins::Plugins::MarchingCubes::
 _GenerateData( )
 {
   // Get input
-  cpPlugins::Interface::Image* input =
-    dynamic_cast< cpPlugins::Interface::Image* >(
-      this->m_Inputs[ 0 ].GetPointer( )
-      );
-  if( input == NULL )
+  cpPlugins::Interface::Image* image =
+    this->_Input< cpPlugins::Interface::Image >( 0 );
+  if( image == NULL )
     return( "MarchingCubes: Input data is not a valid image." );
-  vtkImageData* vtk_input =
-    dynamic_cast< vtkImageData* >( input->GetVTKDataObject( ) );
-  if( vtk_input == NULL )
-    return( "MarchingCubes: Input does not have a valid conversion to VTK." );
+  vtkImageData* vtk_image = image->GetVTKImageData( );
+  if( vtk_image == NULL )
+    return( "MarchingCubes: Input does not have a valid VTK conversion." );
 
   if( this->m_Algorithm != NULL )
     this->m_Algorithm->Delete( );
 
   std::vector< double > values;
   this->m_Parameters.GetValueAsRealList( values, "Thresholds" );
-  if( vtk_input->GetDataDimension( ) == 2 )
+  if( vtk_image->GetDataDimension( ) == 2 )
   {
     vtkMarchingSquares* ms = vtkMarchingSquares::New( );
-    ms->SetInputData( vtk_input );
+    ms->SetInputData( vtk_image );
     for( unsigned int i = 0; i < values.size( ); ++i )
       ms->SetValue( i, values[ i ] );
     this->m_Algorithm = ms;
   }
-  else if( vtk_input->GetDataDimension( ) == 3 )
+  else if( vtk_image->GetDataDimension( ) == 3 )
   {
     vtkMarchingCubes* mc = vtkMarchingCubes::New( );
-    mc->SetInputData( vtk_input );
+    mc->SetInputData( vtk_image );
     for( unsigned int i = 0; i < values.size( ); ++i )
       mc->SetValue( i, values[ i ] );
     this->m_Algorithm = mc;
@@ -73,7 +70,9 @@ _GenerateData( )
 
   // Execute filter
   this->m_Algorithm->Update( );
-  this->m_Outputs[ 0 ]->SetVTKDataObject( this->m_Algorithm->GetOutput( ) );
+  cpPlugins::Interface::Mesh* out =
+    this->_Output< cpPlugins::Interface::Mesh >( 0 );
+  out->SetVTKMesh( this->m_Algorithm->GetOutput( ) );
   return( "" );
 }
 
index 1976e68b380402f6cc72d41a77c20543e5117f75..b675bba69ac30c217df5f5539cf8e44f8895884e 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef __CPPLUGINS__PLUGINS__MARCHINGCUBES__H__
 #define __CPPLUGINS__PLUGINS__MARCHINGCUBES__H__
 
-#include <cpPlugins/cpPlugins_Export.h>
-#include <cpPlugins/Interface/ImageToMeshFilter.h>
+#include <cpPlugins/Plugins/cpPlugins_Export.h>
+#include <cpPlugins/Interface/BaseProcessObjects.h>
 
 class vtkPolyDataAlgorithm;
 
index 5338c32b3424ebd1464be2406a7144e682fb4042..e658d8611b0fa69d998a85fd2c83fb79dca11210 100644 (file)
@@ -37,7 +37,9 @@ _GenerateData( )
   using namespace cpPlugins::Interface;
   Parameters::TUint dim = this->m_Parameters.GetValueAsUint( "Dimension" );
   std::string r = "MeshReader: Mesh dimension not supported.";
-  if( dim == 3 )
+  if( dim == 2 )
+    r = this->_GD0< 2 >( );
+  else if( dim == 3 )
     r = this->_GD0< 3 >( );
   return( r );
 }
@@ -72,7 +74,13 @@ _GD1( )
   this->m_Reader = pdr;
   pdr->SetFileName( fname.c_str( ) );
   pdr->Update( );
-  this->m_Outputs[ 0 ]->SetVTKDataObject( pdr->GetOutput( ) );
+
+  cpPlugins::Interface::Mesh* out =
+    this->_Output< cpPlugins::Interface::Mesh >( 0 );
+  if( out != NULL )
+    out->SetVTKMesh( pdr->GetOutput( ) );
+  else
+    return( "MeshReader: output not correctly created." );
   return( "" );
 }
 
index 33132c1ee50fc40292e22a4f456c573ecc3e4e55..394f6a80bfe652447a761d282aace6d75d974193 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef __CPPLUGINS__PLUGINS__MESHREADER__H__
 #define __CPPLUGINS__PLUGINS__MESHREADER__H__
 
-#include <cpPlugins/cpPlugins_Export.h>
-#include <cpPlugins/Interface/MeshSource.h>
+#include <cpPlugins/Plugins/cpPlugins_Export.h>
+#include <cpPlugins/Interface/BaseProcessObjects.h>
 
 class vtkDataReader;
 
index beaee046be3338f090c5d494286695bb04e2014b..5b06347249e98fb9ed81904fc660502cddc17232 100644 (file)
@@ -1,4 +1,5 @@
 #include <cpPlugins/Plugins/MeshWriter.h>
+#include <cpPlugins/Interface/Mesh.h>
 
 #include <vtkSmartPointer.h>
 #include <vtkPolyData.h>
@@ -31,10 +32,11 @@ cpPlugins::Plugins::MeshWriter::
 std::string cpPlugins::Plugins::MeshWriter::
 _GenerateData( )
 {
-  vtkPolyData* i =
-    dynamic_cast< vtkPolyData* >(
-      this->m_Inputs[ 0 ]->GetVTKDataObject( )
-      );
+  cpPlugins::Interface::Mesh* mesh =
+    this->_Input< cpPlugins::Interface::Mesh >( 0 );
+  if( mesh == NULL )
+    return( "MeshWriter: No input mesh." );
+  vtkPolyData* i = mesh->GetVTKMesh( );
   if( i == NULL )
     return( "MeshWriter: No suitable input." );
   std::string fname = this->m_Parameters.GetValueAsString( "FileName" );
index b62620917366a2a8b044927b20972561a0da510d..d1fc2cc5b8637a8060e5f12ae74f460606465be6 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef __CPPLUGINS__PLUGINS__MESHWRITER__H__
 #define __CPPLUGINS__PLUGINS__MESHWRITER__H__
 
-#include <cpPlugins/cpPlugins_Export.h>
-#include <cpPlugins/Interface/MeshSink.h>
+#include <cpPlugins/Plugins/cpPlugins_Export.h>
+#include <cpPlugins/Interface/BaseProcessObjects.h>
 
 class vtkDataWriter;
 
index 7988bca7bc67700168ec06765874f5ff72568153..a23bc12cce5bb739e655017d70972465a9c8bc9c 100644 (file)
@@ -48,25 +48,30 @@ cpPlugins::Plugins::OtsuThresholdImageFilter::
 std::string cpPlugins::Plugins::OtsuThresholdImageFilter::
 _GenerateData( )
 {
-  itk::DataObject* i = this->m_Inputs[ 0 ]->GetITKDataObject( );
-  return( this->_DemangleImageDimension( i ) );
-}
+  cpPlugins::Interface::Image* image =
+    this->_Input< cpPlugins::Interface::Image >( 0 );
+  if( image == NULL )
+    return( "OtsuThresholdImageFilter: No input image." );
 
-// -------------------------------------------------------------------------
-namespace cpPlugins
-{
-  namespace Plugins
-  {
-    cpPlugins_Image_Demangle_Methods_Code_Only_Scalars(
-      OtsuThresholdImageFilter, _DemangleInput
-      );
-  }
+  itk::DataObject* itk_image = NULL;
+  std::string r = "";
+  cpPlugins_Image_Input_Demangle_Dimension_AllScalarTypes(
+    2, image, itk_image, r, _DemangleOutput
+    );
+  else cpPlugins_Image_Input_Demangle_Dimension_AllScalarTypes(
+    3, image, itk_image, r, _DemangleOutput
+    );
+  else cpPlugins_Image_Input_Demangle_Dimension_AllScalarTypes(
+    4, image, itk_image, r, _DemangleOutput
+    );
+  else r = "OtsuThresholdImageFilter: Input image type not supported.";
+  return( r );
 }
 
 // -------------------------------------------------------------------------
 template< class I >
 std::string cpPlugins::Plugins::OtsuThresholdImageFilter::
-_DemangleInput( itk::DataObject* image )
+_DemangleOutput( itk::DataObject* image )
 {
   return(
     this->_RealGD< I, itk::Image< unsigned char, I::ImageDimension > >(
@@ -77,16 +82,19 @@ _DemangleInput( itk::DataObject* image )
 
 // -------------------------------------------------------------------------
 template< class I, class O >
-std::string cpPlugins::Plugins::OtsuThresholdImageFilter::
+inline std::string cpPlugins::Plugins::OtsuThresholdImageFilter::
 _RealGD( itk::DataObject* image )
 {
   typedef itk::OtsuThresholdImageFilter< I, O > _F;
   typedef typename O::PixelType _OP;
 
-  unsigned int bins = this->m_Parameters.GetValueAsUint( "NumberOfHistogramBins" );
-  _OP in = _OP( this->m_Parameters.GetValueAsReal( "InsideValue" ) );
-  _OP out = _OP( this->m_Parameters.GetValueAsReal( "OutsideValue" ) );
+  // Get parameters
+  unsigned int bins =
+    this->m_Parameters.GetValueAsUint( "NumberOfHistogramBins" );
+  _OP in_val = _OP( this->m_Parameters.GetValueAsReal( "InsideValue" ) );
+  _OP out_val = _OP( this->m_Parameters.GetValueAsReal( "OutsideValue" ) );
 
+  // Configure filter
   _F* filter = dynamic_cast< _F* >( this->m_RealProcessObject.GetPointer( ) );
   if( filter == NULL )
   {
@@ -96,12 +104,69 @@ _RealGD( itk::DataObject* image )
   } // fi
   filter->SetInput( dynamic_cast< I* >( image ) );
   filter->SetNumberOfHistogramBins( bins );
-  filter->SetInsideValue( in );
-  filter->SetOutsideValue( out );
+  filter->SetInsideValue( in_val );
+  filter->SetOutsideValue( out_val );
   filter->Update( );
-  this->m_Outputs[ 0 ]->SetITKDataObject( filter->GetOutput( ) );
-  
-  return( "" );
+
+  // Connect output
+  cpPlugins::Interface::Image* out =
+    this->_Output< cpPlugins::Interface::Image >( 0 );
+  if( out != NULL )
+  {
+    out->SetITKImage< O >( filter->GetOutput( ) );
+    return( "" );
+  }
+  else
+    return( "OtsuThresholdImageFilter: output not correctly created." );
 }
 
+// -------------------------------------------------------------------------
+/* TODO
+   namespace cpPlugins
+   {
+   namespace Plugins
+   {
+   cpPlugins_Image_Demangle_Methods_Code_Only_Scalars(
+   OtsuThresholdImageFilter, _DemangleInput
+   );
+   }
+   }
+
+   // -------------------------------------------------------------------------
+   template< class I >
+   std::string cpPlugins::Plugins::OtsuThresholdImageFilter::
+   _DemangleInput( itk::DataObject* image )
+   {
+   }
+
+   // -------------------------------------------------------------------------
+   template< class I, class O >
+   std::string cpPlugins::Plugins::OtsuThresholdImageFilter::
+   _RealGD( itk::DataObject* image )
+   {
+   typedef itk::OtsuThresholdImageFilter< I, O > _F;
+   typedef typename O::PixelType _OP;
+
+   unsigned int bins = this->m_Parameters.GetValueAsUint( "NumberOfHistogramBins" );
+   _OP in = _OP( this->m_Parameters.GetValueAsReal( "InsideValue" ) );
+   _OP out = _OP( this->m_Parameters.GetValueAsReal( "OutsideValue" ) );
+
+   _F* filter = dynamic_cast< _F* >( this->m_RealProcessObject.GetPointer( ) );
+   if( filter == NULL )
+   {
+   this->m_RealProcessObject = _F::New( );
+   filter = dynamic_cast< _F* >( this->m_RealProcessObject.GetPointer( ) );
+
+   } // fi
+   filter->SetInput( dynamic_cast< I* >( image ) );
+   filter->SetNumberOfHistogramBins( bins );
+   filter->SetInsideValue( in );
+   filter->SetOutsideValue( out );
+   filter->Update( );
+   this->m_Outputs[ 0 ]->SetITKDataObject( filter->GetOutput( ) );
+
+   return( "" );
+   }
+*/
+
 // eof - $RCSfile$
index da26fd03616aaef61e57d2ec4cc90f1914a5bbab..3d35287ec24b15e4a5de2cd888f44a878b98d6fe 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef __CPPLUGINS__PLUGINS__OTSUTHRESHOLDIMAGEFILTER__H__
 #define __CPPLUGINS__PLUGINS__OTSUTHRESHOLDIMAGEFILTER__H__
 
-#include <cpPlugins/cpPlugins_Export.h>
-#include <cpPlugins/Interface/ImageToImageFilter.h>
+#include <cpPlugins/Plugins/cpPlugins_Export.h>
+#include <cpPlugins/Interface/BaseProcessObjects.h>
 
 namespace cpPlugins
 {
@@ -29,13 +29,11 @@ namespace cpPlugins
 
       virtual std::string _GenerateData( );
 
-      cpPlugins_Image_Demangle_Methods( OtsuThresholdImageFilter );
-
       template< class I >
-        std::string _DemangleInput( itk::DataObject* image );
+        inline std::string _DemangleOutput( itk::DataObject* image );
 
       template< class I, class O >
-        std::string _RealGD( itk::DataObject* image );
+        inline std::string _RealGD( itk::DataObject* image );
 
     private:
       // Purposely not implemented