#ifndef __CPPLUGINS__INTERFACE__BASEMPRWIDGET__H__ #define __CPPLUGINS__INTERFACE__BASEMPRWIDGET__H__ #include #include #ifdef cpPlugins_Interface_QT4 #include #include #include #include #include #include #include #include #include #include // ------------------------------------------------------------------------- class QTreeWidgetItem; class QVTKWidget; namespace Ui { class BaseMPRWidget; } // ------------------------------------------------------------------------- namespace cpPlugins { namespace Interface { // Some forward declarations class DataObject; /** */ class cpPlugins_Interface_EXPORT BaseMPRWidget : public QWidget { Q_OBJECT; public: typedef cpExtensions::Visualization::MPRObjects TMPRObjects; typedef TMPRObjects::TStyle TStyle; typedef TMPRObjects::TMouseCommand TMouseCommand; typedef TMPRObjects::TMouseWheelCommand TMouseWheelCommand; typedef TMPRObjects::TKeyCommand TKeyCommand; typedef TMPRObjects::TVoidCommand TVoidCommand; typedef TMPRObjects::TMouseMoveCommand TMouseMoveCommand; typedef TMPRObjects::TMouseClickCommand TMouseClickCommand; typedef TMPRObjects::TMouseDoubleClickCommand TMouseDoubleClickCommand; typedef TMPRObjects::TExposeCommand TExposeCommand; typedef TMPRObjects::TConfigureCommand TConfigureCommand; typedef TMPRObjects::TEnterCommand TEnterCommand; typedef TMPRObjects::TLeaveCommand TLeaveCommand; public: explicit BaseMPRWidget( QWidget* parent = 0 ); virtual ~BaseMPRWidget( ); // Data management bool AddData( DataObject* data, const std::string& name, const std::string& parent ); bool SetMainImage( const std::string& name ); void DeleteData( const std::string& name ); void DeleteAllData( ); // Some visualization accessors void SetDataColor( const std::string& name, const double& r, const double& g, const double& b ); void ShowData( const std::string& name ); void HideData( const std::string& name ); vtkRenderWindowInteractor* GetInteractor( unsigned int i ); // Visual objects accessors std::string GetSelectedData( ) const; protected: QTreeWidgetItem* _FindItemInTree( const std::string& name ) const; QTreeWidgetItem* _UpdateTreeItem( const std::string& name, const std::string& parent ); private slots: void _SyncBottom( int a, int b ); void _SyncTop( int a, int b ); protected: Ui::BaseMPRWidget* m_UI; vtkSmartPointer< TMPRObjects > m_MPRObjects; QVTKWidget* m_VTK[ 4 ]; struct PolyDataActor { vtkPolyData* Mesh; vtkPolyDataNormals* Normals; vtkStripper* Stripper; vtkPolyDataMapper* Mapper; vtkQuadricLODActor* Actor; PolyDataActor( ); virtual ~PolyDataActor( ); void Configure( vtkPolyData* pd ); }; struct Data { enum { IMAGE, MESH } Tag; DataObject* Source; union { vtkImageData* Image; PolyDataActor Mesh; }; Data( ); virtual ~Data( ); Data& operator=( const Data& data ); DataObject* GetSourceDataObject( ); const DataObject* GetSourceDataObject( ) const; void SetSourceDataObject( DataObject* dobj ); vtkImageData* GetImage( ); vtkPolyData* GetMesh( ); vtkProp* GetMeshActor( ); }; std::string m_MainImage; std::map< std::string, Data > m_Data; std::map< std::string, std::string > m_Tree; }; } // ecapseman } // ecapseman #endif // cpPlugins_Interface_QT4 #endif // __CPPLUGINS__INTERFACE__BASEMPRWIDGET__H__ // eof - $RCSfile$