]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/Functors/Dijkstra/Image/Identity.h
...
[FrontAlgorithms.git] / lib / fpa / Functors / Dijkstra / Image / Identity.h
diff --git a/lib/fpa/Functors/Dijkstra/Image/Identity.h b/lib/fpa/Functors/Dijkstra/Image/Identity.h
new file mode 100644 (file)
index 0000000..543a5ef
--- /dev/null
@@ -0,0 +1,77 @@
+// =========================================================================
+// @author Leonardo Florez Valencia
+// @email florez-l@javeriana.edu.co
+// =========================================================================
+#ifndef __fpa__Functors__Dijkstra__Image__Identity__h__
+#define __fpa__Functors__Dijkstra__Image__Identity__h__
+
+#include <fpa/Functors/VertexFunction.h>
+
+namespace fpa
+{
+  namespace Functors
+  {
+    namespace Dijkstra
+    {
+      namespace Image
+      {
+        /**
+         */
+        template< class _TImage, class _TValue >
+        class Identity
+          : public fpa::Functors::VertexFunction< typename _TImage::IndexType, _TValue >
+        {
+        public:
+          typedef _TImage TImage;
+          typedef _TValue TValue;
+          typedef typename TImage::IndexType TVertex;
+          typedef fpa::Functors::VertexFunction< TVertex, TValue >  Superclass;
+          typedef Identity                        Self;
+          typedef itk::SmartPointer< Self >       Pointer;
+          typedef itk::SmartPointer< const Self > ConstPointer;
+
+        public:
+          itkNewMacro( Self );
+          itkTypeMacro(
+            fpa::Functors::Dijkstra::Image::Identity,
+            fpa::Functors::VertexFunction
+            );
+
+        public:
+          virtual TValue Evaluate( const TVertex& v, const TVertex& p ) const override
+            {
+              const TImage* image =
+                dynamic_cast< const TImage* >(
+                  this->m_DataObject.GetPointer( )
+                  );
+              if( image != NULL )
+                return( TValue( image->GetPixel( v ) ) );
+              else
+                return( TValue( -1 ) );
+            }
+
+        protected:
+          Identity( )
+            : Superclass( )
+            {
+            }
+          virtual ~Identity( )
+            {
+            }
+
+        private:
+          // Purposely not implemented.
+          Identity( const Self& other );
+          Self& operator=( const Self& other );
+        };
+
+      } // ecapseman
+
+    } // ecapseman
+
+  } // ecapseman
+
+} // ecapseman
+
+#endif // __fpa__Functors__Dijkstra__Identity__h__
+// eof - $RCSfile$