]> Creatis software - cpPlugins.git/blob - lib/cpExtensions/QT/SimpleMPRWidget.h
MPR objects updated
[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 <QWidget>
9
10 #include <cpExtensions/Visualization/ImageSliceActors.h>
11 #include <vtkRenderer.h>
12 #include <vtkSmartPointer.h>
13
14 /*
15   #include <map>
16   #include <string>
17   #include <vtkSmartPointer.h>
18   #include <vtkImageData.h>
19   #include <vtkPolyDataMapper.h>
20   #include <vtkPolyDataNormals.h>
21   #include <vtkQuadricLODActor.h>
22   #include <vtkStripper.h>
23   #include <cpExtensions/Visualization/MPRObjects.h>
24 */
25
26 // -------------------------------------------------------------------------
27 // TODO: class QTreeWidgetItem;
28 class QVTKWidget;
29
30 namespace Ui
31 {
32   class SimpleMPRWidget;
33 }
34
35 // -------------------------------------------------------------------------
36 namespace cpExtensions
37 {
38   namespace QT
39   {
40     /**
41      */
42     class cpExtensions_EXPORT SimpleMPRWidget
43       : public QWidget
44     {
45       Q_OBJECT;
46
47     public:
48       typedef SimpleMPRWidget Self;
49
50       typedef cpExtensions::Visualization::ImageSliceActors TActors;
51       /* TODO
52          typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
53          typedef TMPRObjects::TStyle                     TStyle;
54          typedef TMPRObjects::TMouseCommand              TMouseCommand;
55          typedef TMPRObjects::TMouseWheelCommand         TMouseWheelCommand;
56          typedef TMPRObjects::TKeyCommand                TKeyCommand;
57          typedef TMPRObjects::TVoidCommand               TVoidCommand;
58          typedef TMPRObjects::TMouseMoveCommand          TMouseMoveCommand;
59          typedef TMPRObjects::TMouseClickCommand         TMouseClickCommand;
60          typedef TMPRObjects::TMouseDoubleClickCommand   TMouseDoubleClickCommand;
61          typedef TMPRObjects::TExposeCommand             TExposeCommand;
62          typedef TMPRObjects::TConfigureCommand          TConfigureCommand;
63          typedef TMPRObjects::TEnterCommand              TEnterCommand;
64          typedef TMPRObjects::TLeaveCommand              TLeaveCommand;
65       */
66
67     public:
68       explicit SimpleMPRWidget( QWidget* parent = 0 );
69       virtual ~SimpleMPRWidget( );
70
71       // Data management
72       void SetMainImage( vtkImageData* image );
73       
74       /* TODO
75          unsigned int GetNumberOfData( ) const;
76          bool AddData(
77          vtkImageData* data, const std::string& name,
78          const std::string& parent
79          );
80          bool AddData(
81          vtkPolyData* data, const std::string& name
82          );
83          const std::string& GetMainImage( ) const;
84          bool SetMainImage( const std::string& name );
85          void DeleteData( const std::string& name );
86          void DeleteAllData( );
87
88          // Some qt accessors
89          void SetDataColor(
90          const std::string& name,
91          const double& r, const double& g, const double& b
92          );
93          void ShowData( const std::string& name );
94          void HideData( const std::string& name );
95          void SetWindowLevel( const double& w, const double& l );
96          double GetWindow( ) const;
97          double GetLevel( ) const;
98
99          vtkRenderWindowInteractor* GetInteractor( unsigned int i );
100
101          // Visual objects accessors
102          std::string GetSelectedData( ) const;
103          vtkProp* GetProp( const std::string& name );
104       */
105
106     private slots:
107       void _SyncBottom( int a, int b );
108       void _SyncTop( int a, int b );
109
110     protected:
111       Ui::SimpleMPRWidget* m_UI;
112       QVTKWidget*          m_VTK[ 4 ];
113
114       vtkSmartPointer< vtkRenderer > m_Renderers[ 4 ];
115       vtkSmartPointer< TActors >     m_2DSlices[ 3 ];
116       vtkSmartPointer< TActors >     m_3DSlices[ 3 ];
117
118       /* TODO
119          static double cm_Colors[ 8 ][ 3 ];
120          vtkSmartPointer< TMPRObjects > m_MPRObjects;
121          struct PolyDataActor
122          {
123          vtkPolyData*        Mesh;
124          vtkPolyDataNormals* Normals;
125          vtkStripper*        Stripper;
126          vtkPolyDataMapper*  Mapper;
127          vtkQuadricLODActor* Actor;
128
129          PolyDataActor( );
130          virtual ~PolyDataActor( );
131          void Configure( vtkPolyData* pd );
132          };
133
134          struct Data
135          {
136          enum { IMAGE, MESH } Tag;
137          vtkImageData*        Image;
138          PolyDataActor        Mesh;
139          Data( );
140          virtual ~Data( );
141          Data& operator=( const Data& data );
142          void SetImageData( vtkImageData* data );
143          void SetPolyData( vtkPolyData* data );
144          vtkImageData* GetImage( );
145          vtkPolyData* GetMesh( );
146          vtkProp* GetMeshActor( );
147          };
148          std::string m_MainImage;
149          std::map< std::string, Data >        m_Data;
150          std::map< std::string, std::string > m_Tree;
151       */
152     };
153
154   } // ecapseman
155
156 } // ecapseman
157
158 #endif // cpExtensions_QT4
159
160 #endif // __CPEXTENSIONS__QT__SIMPLEMPRWIDGET__H__
161
162 // eof - $RCSfile$