#ifndef __FPA__VTK__IMAGE3DOBSERVER__H__ #define __FPA__VTK__IMAGE3DOBSERVER__H__ #include #include #include #include #include #include namespace fpa { namespace VTK { /** */ template< class F, class R > class Image3DObserver : public itk::Command { public: typedef Image3DObserver Self; typedef itk::Command Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef F TFilter; typedef R TRenderWindow; typedef typename TFilter::TInputImage TImage; typedef typename TFilter::TVertex TVertex; typedef typename TFilter::TVertexCompare TVertexCompare; typedef std::set< TVertex > TVertices; public: itkNewMacro( Self ); itkTypeMacro( Image3DObserver, itkCommand ); itkGetConstMacro( RenderPercentage, double ); itkSetMacro( RenderPercentage, double ); public: void SetRenderWindow( R* rw ); void Render( ); void Execute( itk::Object* c, const itk::EventObject& e ) ITK_OVERRIDE { this->Execute( ( const itk::Object* )( c ), e ); } void Execute( const itk::Object* c, const itk::EventObject& e ) ITK_OVERRIDE; protected: Image3DObserver( ); virtual ~Image3DObserver( ); private: Image3DObserver( const Self& ); // Not impl. void operator=( const Self& ); // Not impl. protected: vtkSmartPointer< vtkPolyData > m_PolyData; vtkSmartPointer< vtkPolyDataMapper > m_PolyDataMapper; vtkSmartPointer< vtkActor > m_PolyDataActor; std::map< TVertex, unsigned long, TVertexCompare > m_PointsToReplace; std::map< TVertex, unsigned long, TVertexCompare > m_PointsInFront; R* m_RenderWindow; unsigned long m_Count; unsigned long m_RenderCount; double m_RenderPercentage; }; } // ecapseman } // ecapseman #ifndef ITK_MANUAL_INSTANTIATION #include #endif // ITK_MANUAL_INSTANTIATION #endif // __FPA__VTK__IMAGE3DOBSERVER__H__ // eof - $RCSfile$