]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/VTK/Image2DObserver.h
bd5eea99e77454e068a3500dfcd88c480efda842
[FrontAlgorithms.git] / lib / fpa / VTK / Image2DObserver.h
1 #ifndef __FPA__VTK__IMAGE2DOBSERVER__H__
2 #define __FPA__VTK__IMAGE2DOBSERVER__H__
3
4 #include <set>
5 #include <itkCommand.h>
6 #include <vtkActor.h>
7 #include <vtkImageActor.h>
8 #include <vtkImageData.h>
9 #include <vtkPolyData.h>
10 #include <vtkSmartPointer.h>
11
12 namespace fpa
13 {
14   namespace VTK
15   {
16     /**
17      */
18     template< class F, class R >
19     class Image2DObserver
20       : public itk::Command
21     {
22     public:
23       typedef Image2DObserver                 Self;
24       typedef itk::Command                    Superclass;
25       typedef itk::SmartPointer< Self >       Pointer;
26       typedef itk::SmartPointer< const Self > ConstPointer;
27
28       typedef F                             TFilter;
29       typedef R                             TRenderWindow;
30       typedef typename TFilter::TInputImage TImage;
31       typedef typename TFilter::TVertex     TVertex;
32
33       typedef std::set< TVertex > TVertices;
34
35     public:
36       itkNewMacro( Self );
37       itkTypeMacro( Image2DObserver, itkCommand );
38
39       itkGetConstMacro( RenderPercentage, double );
40       itkSetMacro( RenderPercentage, double );
41
42     public:
43       void SetRenderWindow( R* rw );
44       void SetPixel(
45         typename TImage::IndexType idx,
46         unsigned char red,
47         unsigned char green,
48         unsigned char blue,
49         unsigned char alpha
50         );
51       void Render( );
52       void Execute( itk::Object* c, const itk::EventObject& e )
53         { this->Execute( ( const itk::Object* )( c ), e ); }
54       void Execute( const itk::Object* c, const itk::EventObject& e );
55
56     protected:
57       Image2DObserver( );
58       virtual ~Image2DObserver( );
59
60     private:
61       Image2DObserver( const Self& ); // Not impl.
62       void operator=( const Self& );  // Not impl.
63
64     protected:
65       vtkSmartPointer< vtkImageData >  m_Stencil;
66       vtkSmartPointer< vtkImageActor > m_StencilActor;
67
68       R*            m_RenderWindow;
69       unsigned long m_Count;
70       unsigned long m_RenderCount;
71       double        m_RenderPercentage;
72     };
73
74   } // ecapseman
75
76 } // ecapseman
77
78 #include <fpa/VTK/Image2DObserver.hxx>
79
80 #endif // __FPA__VTK__IMAGE2DOBSERVER__H__
81
82 // eof - $RCSfile$