1 #ifndef __FPA__VTK__IMAGE3DOBSERVER__H__
2 #define __FPA__VTK__IMAGE3DOBSERVER__H__
6 #include <itkCommand.h>
9 #include <vtkPolyData.h>
10 #include <vtkPolyDataMapper.h>
11 #include <vtkSmartPointer.h>
19 template< class F, class R >
24 typedef Image3DObserver Self;
25 typedef itk::Command Superclass;
26 typedef itk::SmartPointer< Self > Pointer;
27 typedef itk::SmartPointer< const Self > ConstPointer;
30 typedef R TRenderWindow;
31 typedef typename TFilter::TInputImage TImage;
32 typedef typename TFilter::TVertex TVertex;
34 typedef std::pair< unsigned long, unsigned long > TVertexIds;
38 bool operator()( const TVertex& a, const TVertex& b ) const
41 while( d < TVertex::Dimension && a[ d ] == b[ d ] )
43 if( d < TVertex::Dimension )
44 return( a[ d ] < b[ d ] );
49 typedef std::map< TVertex, TVertexIds, TVertexCmp > TVertices;
53 itkTypeMacro( Image3DObserver, itkCommand );
56 void SetImage( const TImage* img, R* rw );
58 void Execute( itk::Object* c, const itk::EventObject& e )
59 { this->Execute( ( const itk::Object* )( c ), e ); }
60 void Execute( const itk::Object* c, const itk::EventObject& e );
64 virtual ~Image3DObserver( )
68 Image3DObserver( const Self& ); // Not impl.
69 void operator=( const Self& ); // Not impl.
72 typename TImage::ConstPointer m_Image;
75 unsigned long m_Number;
76 unsigned long m_Percentage;
78 vtkSmartPointer< vtkPolyData > m_PolyData;
79 vtkSmartPointer< vtkPolyDataMapper > m_PolyDataMapper;
80 vtkSmartPointer< vtkActor > m_PolyDataActor;
89 #include <fpa/VTK/Image3DObserver.hxx>
91 #endif // __FPA__VTK__IMAGE3DOBSERVER__H__