]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/DataStructures/Image/PolyLineParametricPath.h
...
[FrontAlgorithms.git] / lib / fpa / DataStructures / Image / PolyLineParametricPath.h
diff --git a/lib/fpa/DataStructures/Image/PolyLineParametricPath.h b/lib/fpa/DataStructures/Image/PolyLineParametricPath.h
new file mode 100644 (file)
index 0000000..c069e7a
--- /dev/null
@@ -0,0 +1,104 @@
+// =========================================================================
+// @author Leonardo Florez Valencia
+// @email florez-l@javeriana.edu.co
+// =========================================================================
+#ifndef __fpa__DataStructures__Image__PolyLineParametricPath__h__
+#define __fpa__DataStructures__Image__PolyLineParametricPath__h__
+
+#include <itkPolyLineParametricPath.h>
+#include <itkImageBase.h>
+
+namespace fpa
+{
+  namespace DataStructures
+  {
+    namespace Image
+    {
+      /**
+       */
+      template< unsigned int _VDim >
+      class PolyLineParametricPath
+        : public itk::PolyLineParametricPath< _VDim >
+      {
+      public:
+        typedef PolyLineParametricPath               Self;
+        typedef itk::PolyLineParametricPath< _VDim > Superclass;
+        typedef itk::SmartPointer< Self >            Pointer;
+        typedef itk::SmartPointer< const Self >      ConstPointer;
+
+        itkStaticConstMacro( Dimension, unsigned int, _VDim );
+
+        typedef itk::ImageBase< _VDim >                  TImageBase;
+        typedef typename TImageBase::SpacingType         TSpacing;
+        typedef typename TImageBase::PointType           TPoint;
+        typedef typename TImageBase::DirectionType       TDirection;
+        typedef typename Superclass::ContinuousIndexType TContinuousIndex;
+        typedef typename TContinuousIndex::IndexType     TIndex;
+
+      public:
+        itkNewMacro( Self );
+        itkTypeMacro( PolyLineParametricPath, itk::PolyLineParametricPath );
+
+        itkGetConstReferenceMacro( Spacing, TSpacing );
+        itkGetConstReferenceMacro( Origin, TPoint );
+        itkGetConstReferenceMacro( Direction, TDirection );
+        itkGetConstReferenceMacro( InverseDirection, TDirection );
+
+        itkSetMacro( Origin, TPoint );
+
+      public:
+        unsigned long GetSize( ) const;
+        TContinuousIndex GetContinuousVertex( unsigned long i ) const;
+        TIndex GetVertex( unsigned long i ) const;
+        TPoint GetPoint( unsigned long i ) const;
+
+        virtual void SetSpacing( const TSpacing& spac );
+        virtual void SetSpacing( const double spac[ _VDim ] );
+        virtual void SetSpacing( const float spac[ _VDim ] );
+        virtual void SetOrigin( const double ori[ _VDim ] );
+        virtual void SetOrigin( const float ori[ _VDim ] );
+        virtual void SetDirection( const TDirection& dir );
+
+        template< class _TRefImage >
+        inline void SetReferenceImage( const _TRefImage* image )
+          {
+            this->SetSpacing( image->GetSpacing( ) );
+            this->SetOrigin( image->GetOrigin( ) );
+            this->SetDirection( image->GetDirection( ) );
+          }
+
+        virtual void Graft( itk::DataObject* o );
+
+      protected:
+        PolyLineParametricPath( );
+        virtual ~PolyLineParametricPath( );
+
+        virtual void _ComputeIndexToPhysicalPointMatrices( );
+
+      private:
+        // Purposely not implemented
+        PolyLineParametricPath( const Self& other );
+        Self& operator=( const Self& other );
+
+      protected:
+        TSpacing   m_Spacing;
+        TPoint     m_Origin;
+        TDirection m_Direction;
+        TDirection m_InverseDirection;
+        TDirection m_IndexToPhysicalPoint;
+        TDirection m_PhysicalPointToIndex;
+      };
+
+    } // ecapseman
+
+  } // ecapseman
+
+} // ecapseman
+
+#ifndef ITK_MANUAL_INSTANTIATION
+#  include <fpa/DataStructures/Image/PolyLineParametricPath.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
+
+#endif // __fpa__DataStructures__Image__PolyLineParametricPath__h__
+
+// eof - $RCSfile$