X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Ffpa%2FVTK%2FImage3DObserver.h;h=6b6af4324c397aab87c5a8facb01c1c876f2fbe0;hb=e3fe1f9a8ffcaf9fd59453aadb61547e1c76c584;hp=860946d78794451d3bbae28d23d8b00128921794;hpb=9622bd5b833a8845881003228207e0caca59b081;p=FrontAlgorithms.git diff --git a/lib/fpa/VTK/Image3DObserver.h b/lib/fpa/VTK/Image3DObserver.h index 860946d..6b6af43 100644 --- a/lib/fpa/VTK/Image3DObserver.h +++ b/lib/fpa/VTK/Image3DObserver.h @@ -6,6 +6,7 @@ #include #include +#include #include #include #include @@ -31,29 +32,24 @@ namespace fpa typedef typename TFilter::TInputImage TImage; typedef typename TFilter::TVertex TVertex; - typedef std::pair< unsigned long, unsigned long > TVertexIds; - - struct TVertexCmp - { - bool operator()( const TVertex& a, const TVertex& b ) const - { - unsigned int d = 0; - while( d < TVertex::Dimension && a[ d ] == b[ d ] ) - d++; - if( d < TVertex::Dimension ) - return( a[ d ] < b[ d ] ); - else - return( false ); - } - }; - typedef std::map< TVertex, TVertexIds, TVertexCmp > TVertices; + typedef std::set< TVertex > TVertices; public: itkNewMacro( Self ); itkTypeMacro( Image3DObserver, itkCommand ); + itkGetConstMacro( RenderPercentage, double ); + itkSetMacro( RenderPercentage, double ); + public: - void SetImage( const TImage* img, R* rw ); + void SetRenderWindow( R* rw ); + void SetPixel( + typename TImage::IndexType idx, + unsigned char red, + unsigned char green, + unsigned char blue, + unsigned char alpha + ); void Render( ); void Execute( itk::Object* c, const itk::EventObject& e ) { this->Execute( ( const itk::Object* )( c ), e ); } @@ -61,26 +57,73 @@ namespace fpa protected: Image3DObserver( ); - virtual ~Image3DObserver( ) - { } + virtual ~Image3DObserver( ); private: Image3DObserver( const Self& ); // Not impl. void operator=( const Self& ); // Not impl. protected: - typename TImage::ConstPointer m_Image; + vtkSmartPointer< vtkImageData > m_Stencil; + vtkSmartPointer< vtkPolyData > m_PolyData; + vtkSmartPointer< vtkPolyDataMapper > m_PolyDataMapper; + vtkSmartPointer< vtkActor > m_PolyDataActor; R* m_RenderWindow; - unsigned long m_Number; - unsigned long m_Percentage; + unsigned long m_Count; + unsigned long m_RenderCount; + double m_RenderPercentage; + }; - vtkSmartPointer< vtkPolyData > m_PolyData; - vtkSmartPointer< vtkPolyDataMapper > m_PolyDataMapper; - vtkSmartPointer< vtkActor > m_PolyDataActor; + /** + */ + /* + 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; + + public: + itkNewMacro( Self ); + itkTypeMacro( Image3DObserver, itkCommand ); + + itkGetConstMacro( RenderPercentage, double ); + itkSetMacro( RenderPercentage, double ); + + public: + void SetRenderWindow( R* rw ); + void Execute( itk::Object* c, const itk::EventObject& e ) + { this->Execute( ( const itk::Object* )( c ), e ); } + void Execute( const itk::Object* c, const itk::EventObject& e ); + + protected: + Image3DObserver( ); + virtual ~Image3DObserver( ) + { } + + private: + Image3DObserver( const Self& ); // Not impl. + void operator=( const Self& ); // Not impl. + + protected: + R* m_RenderWindow; + unsigned long m_Count; + unsigned long m_RenderCount; + double m_RenderPercentage; - TVertices m_Vertices; + vtkSmartPointer< vtkPolyData > m_Data; + vtkSmartPointer< vtkPolyDataMapper > m_Mapper; + vtkSmartPointer< vtkActor > m_Actor; }; + */ } // ecapseman