]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/VTK/Image2DObserver.h
68dcae0fe0efcc39a29c5f43b252b6fce5aafd7d
[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     public:
40       void SetImage( const TImage* img, R* rw );
41       void SetPixel(
42         typename TImage::IndexType idx,
43         unsigned char red,
44         unsigned char green,
45         unsigned char blue,
46         unsigned char alpha
47         );
48       void Render( );
49       void Execute( itk::Object* c, const itk::EventObject& e )
50         { this->Execute( ( const itk::Object* )( c ), e ); }
51       void Execute( const itk::Object* c, const itk::EventObject& e );
52
53     protected:
54       Image2DObserver( )
55         : Superclass( ),
56           m_RenderWindow( NULL ),
57           m_Number( 0 ),
58           m_Percentage( 0 )
59         {
60           this->m_Stencil = TImageData::New( );
61           this->m_StencilActor = TImageActor::New( );
62         }
63       virtual ~Image2DObserver( )
64         { }
65
66     private:
67       Image2DObserver( const Self& ); // Not impl.
68       void operator=( const Self& );  // Not impl.
69
70     protected:
71       typedef vtkSmartPointer< vtkImageActor > TImageActor;
72       typedef vtkSmartPointer< vtkImageData >  TImageData;
73
74       typename TImage::ConstPointer m_Image;
75
76       R*            m_RenderWindow;
77       TImageData    m_Stencil;
78       TImageActor   m_StencilActor;
79       unsigned long m_Number;
80       unsigned long m_Percentage;
81     };
82
83   } // ecapseman
84
85 } // ecapseman
86
87 #include <fpa/VTK/Image2DObserver.hxx>
88
89 #endif // __FPA__VTK__IMAGE2DOBSERVER__H__
90
91 // eof - $RCSfile$