#ifndef __CPEXTENSIONS__QT__SIMPLEMPRWIDGET__H__ #define __CPEXTENSIONS__QT__SIMPLEMPRWIDGET__H__ #include #ifdef cpExtensions_QT4 #include #include #include #include #include #include #define cpExtensions_MAX_POLYS 65535 // ------------------------------------------------------------------------- class QVTKWidget; namespace Ui { class SimpleMPRWidget; } // ------------------------------------------------------------------------- namespace cpExtensions { namespace QT { /** */ class cpExtensions_EXPORT SimpleMPRWidget : public QWidget { Q_OBJECT; public: typedef SimpleMPRWidget Self; struct TActorCmp { bool operator()( const vtkSmartPointer< vtkProp >& a, const vtkSmartPointer< vtkProp >& b ) const { return( a.GetPointer( ) < b.GetPointer( ) ); } }; typedef std::set< vtkSmartPointer< vtkProp >, TActorCmp > TActors; typedef std::map< std::string, TActors > TNamedActors; typedef cpExtensions::Visualization::ImageSliceActors TSliceActors; public: explicit SimpleMPRWidget( QWidget* parent = 0 ); virtual ~SimpleMPRWidget( ); // Data management void Clear( ); void SetMainImage( vtkImageData* image, const std::string& name ); void SetMainActor( vtkImageActor* actor, const std::string& name ); void AddImage( vtkImageData* image, const std::string& name ); void AddImageActor( vtkImageActor* actor, const std::string& name ); void AddMesh( vtkPolyData* mesh, const std::string& name ); void AddMeshActor( vtkProp3D* actor, const std::string& name ); void AddActor( vtkProp* actor, const std::string& name ); const TActors& GetActors( const std::string& name ) const; // Visual objects vtkRenderWindowInteractor* GetInteractor( unsigned int i ); vtkRenderer* GetRenderer( unsigned int i ); vtkRenderWindow* GetRenderWindow( unsigned int i ); protected: void _AssociateSlices( ); private slots: void _SyncBottom( int a, int b ); void _SyncTop( int a, int b ); protected: Ui::SimpleMPRWidget* m_UI; QVTKWidget* m_VTK[ 4 ]; vtkSmartPointer< vtkRenderer > m_Renderers[ 4 ]; vtkSmartPointer< TSliceActors > m_2DSlices[ 3 ]; vtkSmartPointer< TSliceActors > m_3DSlices[ 3 ]; TNamedActors m_NamedActors; }; } // ecapseman } // ecapseman #endif // cpExtensions_QT4 #endif // __CPEXTENSIONS__QT__SIMPLEMPRWIDGET__H__ // eof - $RCSfile$