1 #ifndef __CPEXTENSIONS__QT__SIMPLEMPRWIDGET__H__
2 #define __CPEXTENSIONS__QT__SIMPLEMPRWIDGET__H__
4 #include <cpExtensions/Config.h>
6 #ifdef cpExtensions_QT4
10 #include <cpExtensions/Visualization/ImageSliceActors.h>
11 #include <vtkRenderer.h>
12 #include <vtkSmartPointer.h>
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>
26 // -------------------------------------------------------------------------
27 // TODO: class QTreeWidgetItem;
32 class SimpleMPRWidget;
35 // -------------------------------------------------------------------------
36 namespace cpExtensions
42 class cpExtensions_EXPORT SimpleMPRWidget
48 typedef SimpleMPRWidget Self;
50 typedef cpExtensions::Visualization::ImageSliceActors TActors;
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;
68 explicit SimpleMPRWidget( QWidget* parent = 0 );
69 virtual ~SimpleMPRWidget( );
72 void SetMainImage( vtkImageData* image );
75 unsigned int GetNumberOfData( ) const;
77 vtkImageData* data, const std::string& name,
78 const std::string& parent
81 vtkPolyData* data, const std::string& name
83 const std::string& GetMainImage( ) const;
84 bool SetMainImage( const std::string& name );
85 void DeleteData( const std::string& name );
86 void DeleteAllData( );
90 const std::string& name,
91 const double& r, const double& g, const double& b
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;
99 vtkRenderWindowInteractor* GetInteractor( unsigned int i );
101 // Visual objects accessors
102 std::string GetSelectedData( ) const;
103 vtkProp* GetProp( const std::string& name );
107 void _SyncBottom( int a, int b );
108 void _SyncTop( int a, int b );
111 Ui::SimpleMPRWidget* m_UI;
112 QVTKWidget* m_VTK[ 4 ];
114 vtkSmartPointer< vtkRenderer > m_Renderers[ 4 ];
115 vtkSmartPointer< TActors > m_2DSlices[ 3 ];
116 vtkSmartPointer< TActors > m_3DSlices[ 3 ];
119 static double cm_Colors[ 8 ][ 3 ];
120 vtkSmartPointer< TMPRObjects > m_MPRObjects;
124 vtkPolyDataNormals* Normals;
125 vtkStripper* Stripper;
126 vtkPolyDataMapper* Mapper;
127 vtkQuadricLODActor* Actor;
130 virtual ~PolyDataActor( );
131 void Configure( vtkPolyData* pd );
136 enum { IMAGE, MESH } Tag;
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( );
148 std::string m_MainImage;
149 std::map< std::string, Data > m_Data;
150 std::map< std::string, std::string > m_Tree;
158 #endif // cpExtensions_QT4
160 #endif // __CPEXTENSIONS__QT__SIMPLEMPRWIDGET__H__