]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/Filters/RegionGrow.hxx
...
[FrontAlgorithms.git] / lib / fpa / Filters / RegionGrow.hxx
diff --git a/lib/fpa/Filters/RegionGrow.hxx b/lib/fpa/Filters/RegionGrow.hxx
new file mode 100644 (file)
index 0000000..b7167e6
--- /dev/null
@@ -0,0 +1,136 @@
+// =========================================================================
+// @author Leonardo Florez Valencia
+// @email florez-l@javeriana.edu.co
+// =========================================================================
+#ifndef __fpa__Filters__RegionGrow__hxx__
+#define __fpa__Filters__RegionGrow__hxx__
+
+// -------------------------------------------------------------------------
+template< class _TTraits >
+void fpa::Filters::RegionGrow< _TTraits >::
+SetPredicate( TScalarPredicate* p )
+{
+  if( this->m_ScalarPredicate.GetPointer( ) != p )
+  {
+    this->_Deassociate( this->m_ScalarPredicate );
+    this->m_ScalarPredicate = p;
+    this->_Associate( this->m_ScalarPredicate );
+    this->Modified( );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+template< class _TTraits >
+void fpa::Filters::RegionGrow< _TTraits >::
+SetPredicate( TVertexPredicate* p )
+{
+  if( this->m_VertexPredicate.GetPointer( ) != p )
+  {
+    this->_Deassociate( this->m_VertexPredicate );
+    this->m_VertexPredicate = p;
+    this->_Associate( this->m_VertexPredicate );
+    this->Modified( );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+template< class _TTraits >
+typename fpa::Filters::RegionGrow< _TTraits >::
+TOutputValue fpa::Filters::RegionGrow< _TTraits >::
+GetOutsideValue( ) const
+{
+  return( this->GetInitValue( ) );
+}
+
+// -------------------------------------------------------------------------
+template< class _TTraits >
+void fpa::Filters::RegionGrow< _TTraits >::
+SetOutsideValue( const TOutputValue& v )
+{
+  this->SetInitValue( v );
+}
+
+// -------------------------------------------------------------------------
+template< class _TTraits >
+fpa::Filters::RegionGrow< _TTraits >::
+RegionGrow( )
+  : Superclass( ),
+    m_InsideValue( TOutputValue( 1 ) )
+{
+  this->SetOutsideValue( 0 );
+}
+
+// -------------------------------------------------------------------------
+template< class _TTraits >
+fpa::Filters::RegionGrow< _TTraits >::
+~RegionGrow( )
+{
+}
+
+// -------------------------------------------------------------------------
+template< class _TTraits >
+void fpa::Filters::RegionGrow< _TTraits >::
+_UpdateOutputValue( TNode& n )
+{
+  TInputValue value = this->_GetInputValue( n );
+  bool inside = false;
+  if( this->m_ScalarPredicate.IsNotNull( ) )
+    inside = this->m_ScalarPredicate->Evaluate( value );
+  if( this->m_VertexPredicate.IsNotNull( ) )
+    inside &= this->m_VertexPredicate->Evaluate( n.Vertex, n.Parent );
+  if( !inside )
+  {
+    n.Value = this->GetOutsideValue( );
+    n.FrontId = 0;
+  }
+  else
+    n.Value = this->GetInsideValue( );
+}
+
+// -------------------------------------------------------------------------
+template< class _TTraits >
+void fpa::Filters::RegionGrow< _TTraits >::
+_QueueClear( )
+{
+  this->m_Queue.clear( );
+}
+
+// -------------------------------------------------------------------------
+template< class _TTraits >
+typename fpa::Filters::RegionGrow< _TTraits >::
+TNode fpa::Filters::RegionGrow< _TTraits >::
+_QueuePop( )
+{
+  TNode n = this->m_Queue.front( );
+  this->m_Queue.pop_front( );
+  return( n );
+}
+
+// -------------------------------------------------------------------------
+template< class _TTraits >
+void fpa::Filters::RegionGrow< _TTraits >::
+_QueuePush( const TNode& n )
+{
+  this->m_Queue.push_back( n );
+}
+
+// -------------------------------------------------------------------------
+template< class _TTraits >
+unsigned long fpa::Filters::RegionGrow< _TTraits >::
+_QueueSize( ) const
+{
+  return( this->m_Queue.size( ) );
+}
+
+// -------------------------------------------------------------------------
+template< class _TTraits >
+void fpa::Filters::RegionGrow< _TTraits >::
+_ComputeOutputValue( TNode& n )
+{
+  // Do nothing
+}
+
+#endif // __fpa__Filters__RegionGrow__hxx__
+// eof - $RCSfile$