]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Image/VisualDebugger.h
...
[FrontAlgorithms.git] / lib / fpa / Image / VisualDebugger.h
1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
5
6 #ifndef __fpa__Image__VisualDebugger__h__
7 #define __fpa__Image__VisualDebugger__h__
8
9 #include <fpa/Config.h>
10
11 #include <vector>
12
13 #include <itkCommand.h>
14 #include <itkImage.h>
15 #include <itkRGBAPixel.h>
16
17 #ifdef USE_ivq
18 #include <itkImageToVTKImageFilter.h>
19 #endif // USE_ivq
20
21 class vtkRenderer;
22 class vtkRenderWindowInteractor;
23
24 namespace fpa
25 {
26   namespace Image
27   {
28     /**
29      */
30     template< class _TFilter >
31     class VisualDebugger
32       : public itk::Command
33     {
34     public:
35       typedef VisualDebugger                  Self;
36       typedef itk::Command                    Superclass;
37       typedef itk::SmartPointer< Self >       Pointer;
38       typedef itk::SmartPointer< const Self > ConstPointer;
39
40       typedef _TFilter                      TFilter;
41       typedef typename TFilter::TInputImage TImage;
42
43       typedef itk::RGBAPixel< unsigned char > TLabel;
44       typedef itk::Image< TLabel, TImage::ImageDimension > TLabels;
45 #ifdef USE_ivq
46       typedef itk::ImageToVTKImageFilter< TLabels > TVTKLabels;
47 #endif // USE_ivq
48
49     public:
50       itkTypeMacro( fpa::Image::VisualDebugger, itk::Command );
51
52       itkGetConstObjectMacro( Labels, TLabels );
53
54     public:
55       void SetVisualization(
56         vtkRenderer* renderer, vtkRenderWindowInteractor* iren
57         );
58       virtual void Execute(
59         itk::Object* caller, const itk::EventObject& event
60         ) override;
61       virtual void Execute(
62         const itk::Object* caller, const itk::EventObject& event
63         ) override;
64
65       virtual void Render( ) = 0;
66       virtual void StartVisualization( ) = 0;
67       virtual void EndVisualization( ) = 0;
68
69     protected:
70       VisualDebugger( );
71       virtual ~VisualDebugger( );
72
73     private:
74       // Purposely not implemented.
75       VisualDebugger( const Self& other );
76       Self& operator=( const Self& other );
77
78     protected:
79       std::vector< TLabel >     m_Colors;
80       typename TLabels::Pointer m_Labels;
81 #ifdef USE_ivq
82       vtkRenderer*                 m_Renderer;
83       vtkRenderWindowInteractor*   m_Interactor;
84       typename TVTKLabels::Pointer m_VTKLabels;
85 #endif // USE_ivq
86     };
87
88   } // ecapseman
89
90 } // ecapseman
91
92 #ifndef ITK_MANUAL_INSTANTIATION
93 #  include <fpa/Image/VisualDebugger.hxx>
94 #endif // ITK_MANUAL_INSTANTIATION
95
96 #endif // __fpa__Image__VisualDebugger__h__
97
98 // eof - $RCSfile$