]> Creatis software - cpPlugins.git/blobdiff - lib/cpExtensions/Algorithms/PolyLineParametricPathWriter.hxx
...
[cpPlugins.git] / lib / cpExtensions / Algorithms / PolyLineParametricPathWriter.hxx
index 8e9db8eeab926a28e6c1d04bb6226cad0c825045..d71c6e3aa640eb7d2d118b967883edac9ff6c4ac 100644 (file)
@@ -8,8 +8,8 @@
 #include <sstream>
 
 // -------------------------------------------------------------------------
-template< class _TPolyLine >
-void cpExtensions::Algorithms::PolyLineParametricPathWriter< _TPolyLine >::
+template< class _TPolyLine, class _TImage >
+void cpExtensions::Algorithms::PolyLineParametricPathWriter< _TPolyLine, _TImage >::
 SetInput( const _TPolyLine* input )
 {
   this->itk::ProcessObject::SetNthInput(
@@ -18,9 +18,9 @@ SetInput( const _TPolyLine* input )
 }
 
 // -------------------------------------------------------------------------
-template< class _TPolyLine >
+template< class _TPolyLine, class _TImage >
 const _TPolyLine*
-cpExtensions::Algorithms::PolyLineParametricPathWriter< _TPolyLine >::
+cpExtensions::Algorithms::PolyLineParametricPathWriter< _TPolyLine, _TImage >::
 GetInput( )
 {
   return(
@@ -31,8 +31,30 @@ GetInput( )
 }
 
 // -------------------------------------------------------------------------
-template< class _TPolyLine >
-void cpExtensions::Algorithms::PolyLineParametricPathWriter< _TPolyLine >::
+template< class _TPolyLine, class _TImage >
+void cpExtensions::Algorithms::PolyLineParametricPathWriter< _TPolyLine, _TImage >::
+SetImage( const _TImage* image )
+{
+  this->itk::ProcessObject::SetNthInput(
+    1, const_cast< _TImage* >( image )
+    );
+}
+
+// -------------------------------------------------------------------------
+template< class _TPolyLine, class _TImage >
+const _TImage* cpExtensions::Algorithms::PolyLineParametricPathWriter< _TPolyLine, _TImage >::
+GetImage( )
+{
+  return(
+    dynamic_cast< const _TImage* >(
+      this->itk::ProcessObject::GetInput( 1 )
+      )
+    );
+}
+
+// -------------------------------------------------------------------------
+template< class _TPolyLine, class _TImage >
+void cpExtensions::Algorithms::PolyLineParametricPathWriter< _TPolyLine, _TImage >::
 Update( )
 {
   _TPolyLine* input = const_cast< _TPolyLine* >( this->GetInput( ) );
@@ -47,8 +69,8 @@ Update( )
 }
 
 // -------------------------------------------------------------------------
-template< class _TPolyLine >
-cpExtensions::Algorithms::PolyLineParametricPathWriter< _TPolyLine >::
+template< class _TPolyLine, class _TImage >
+cpExtensions::Algorithms::PolyLineParametricPathWriter< _TPolyLine, _TImage >::
 PolyLineParametricPathWriter( )
   : Superclass( ),
     m_FileName( "" ),
@@ -58,21 +80,22 @@ PolyLineParametricPathWriter( )
 }
 
 // -------------------------------------------------------------------------
-template< class _TPolyLine >
-cpExtensions::Algorithms::PolyLineParametricPathWriter< _TPolyLine >::
+template< class _TPolyLine, class _TImage >
+cpExtensions::Algorithms::PolyLineParametricPathWriter< _TPolyLine, _TImage >::
 ~PolyLineParametricPathWriter( )
 {
 }
 
 // -------------------------------------------------------------------------
-template< class _TPolyLine >
-void cpExtensions::Algorithms::PolyLineParametricPathWriter< _TPolyLine >::
+template< class _TPolyLine, class _TImage >
+void cpExtensions::Algorithms::PolyLineParametricPathWriter< _TPolyLine, _TImage >::
 GenerateData( )
 {
   typedef typename _TPolyLine::TContinuousIndex _TContinuousIndex;
 
   // "Serialize" data
   const _TPolyLine* input = this->GetInput( );
+  const _TImage* image = this->GetImage( );
   unsigned int dim = _TPolyLine::PathDimension;
   std::stringstream buffer;
   long step = input->GetSize( ) / this->m_NumberOfPoints;
@@ -102,6 +125,15 @@ GenerateData( )
     buffer << idx[ 0 ];
     for( unsigned int d = 1; d < dim; ++d )
       buffer << " " << idx[ d ];
+    if( image != NULL )
+    {
+      typename _TImage::PointType pidx;
+      typename _TImage::IndexType iidx;
+      image->TransformContinuousIndexToPhysicalPoint( idx, pidx );
+      image->TransformPhysicalPointToIndex( pidx, iidx );
+      buffer << " " << image->GetPixel( iidx );
+
+    } // fi
     buffer << std::endl;
 
   } // rof