]> Creatis software - cpPlugins.git/blob - lib/cpExtensions/QT/SimpleMPRWidget.h
Visual properties dialog finished.
[cpPlugins.git] / lib / cpExtensions / QT / SimpleMPRWidget.h
1 #ifndef __CPEXTENSIONS__QT__SIMPLEMPRWIDGET__H__
2 #define __CPEXTENSIONS__QT__SIMPLEMPRWIDGET__H__
3
4 #include <cpExtensions/Config.h>
5
6 #ifdef cpExtensions_QT4
7
8 #include <map>
9 #include <set>
10 #include <QWidget>
11 #include <vtkProp.h>
12 #include <vtkSmartPointer.h>
13 #include <cpExtensions/Visualization/ImageSliceActors.h>
14
15 #define cpExtensions_MAX_POLYS 65535
16
17 // -------------------------------------------------------------------------
18 class QVTKWidget;
19
20 namespace Ui
21 {
22   class SimpleMPRWidget;
23 }
24
25 // -------------------------------------------------------------------------
26 namespace cpExtensions
27 {
28   namespace QT
29   {
30     /**
31      */
32     class cpExtensions_EXPORT SimpleMPRWidget
33       : public QWidget
34     {
35       Q_OBJECT;
36
37     public:
38       typedef SimpleMPRWidget Self;
39
40       struct TActorCmp
41       {
42         bool operator()(
43           const vtkSmartPointer< vtkProp >& a,
44           const vtkSmartPointer< vtkProp >& b
45           ) const
46           { return( a.GetPointer( ) < b.GetPointer( ) ); }
47       };
48       typedef std::set< vtkSmartPointer< vtkProp >, TActorCmp >  TActors;
49       typedef std::map< std::string, TActors >              TNamedActors;
50       typedef cpExtensions::Visualization::ImageSliceActors TSliceActors;
51
52     public:
53       explicit SimpleMPRWidget( QWidget* parent = 0 );
54       virtual ~SimpleMPRWidget( );
55
56       // Data management
57       void Clear( );
58       void SetMainImage( vtkImageData* image, const std::string& name );
59       void SetMainActor( vtkImageActor* actor, const std::string& name );
60       void AddImage( vtkImageData* image, const std::string& name );
61       void AddImageActor( vtkImageActor* actor, const std::string& name );
62       void AddMesh( vtkPolyData* mesh, const std::string& name );
63       void AddMeshActor( vtkProp3D* actor, const std::string& name );
64       void AddActor( vtkProp* actor, const std::string& name );
65       const TActors& GetActors( const std::string& name ) const;
66
67       // Visual objects
68       vtkRenderWindowInteractor* GetInteractor( unsigned int i );
69       vtkRenderer* GetRenderer( unsigned int i );
70       vtkRenderWindow* GetRenderWindow( unsigned int i );
71
72     protected:
73       void _AssociateSlices( );
74
75     private slots:
76       void _SyncBottom( int a, int b );
77       void _SyncTop( int a, int b );
78
79     protected:
80       Ui::SimpleMPRWidget* m_UI;
81       QVTKWidget*          m_VTK[ 4 ];
82
83       vtkSmartPointer< vtkRenderer >  m_Renderers[ 4 ];
84       vtkSmartPointer< TSliceActors > m_2DSlices[ 3 ];
85       vtkSmartPointer< TSliceActors > m_3DSlices[ 3 ];
86
87       TNamedActors m_NamedActors;
88     };
89
90   } // ecapseman
91
92 } // ecapseman
93
94 #endif // cpExtensions_QT4
95
96 #endif // __CPEXTENSIONS__QT__SIMPLEMPRWIDGET__H__
97
98 // eof - $RCSfile$