#include <QWidget>
#include <vtkSmartPointer.h>
+#include <vtkImageData.h>
#include <vtkPolyDataMapper.h>
#include <vtkPolyDataNormals.h>
#include <vtkQuadricLODActor.h>
{
namespace Interface
{
+ // Some forward declarations
+ class DataObject;
+
/**
*/
class cpPlugins_Interface_EXPORT BaseMPRWidget
explicit BaseMPRWidget( QWidget* parent = 0 );
virtual ~BaseMPRWidget( );
- // Some visualization accessors
- bool ShowImage(
- vtkImageData* image,
- const std::string& name,
- const std::string& parent = ""
- );
- bool ShowImage(
- vtkImageData* image,
- const std::string& name,
- const std::string& parent,
- const double& r, const double& g, const double& b
- );
- bool ShowMesh(
- vtkPolyData* mesh,
- const std::string& name,
+ // Data management
+ bool AddData(
+ DataObject* data, const std::string& name,
const std::string& parent
);
- bool ShowMesh(
- vtkPolyData* mesh,
+ bool SetMainImage( const std::string& name );
+ void DeleteData( const std::string& name );
+ void DeleteAllData( );
+
+ // Some visualization accessors
+ void SetDataColor(
const std::string& name,
- const std::string& parent,
const double& r, const double& g, const double& b
);
- void ClearAll( );
+ 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* _FindItem( const std::string& name ) const;
- QTreeWidgetItem* _UpdateItem(
+ QTreeWidgetItem* _FindItemInTree( const std::string& name ) const;
+ QTreeWidgetItem* _UpdateTreeItem(
const std::string& name,
const std::string& parent
);
-
- void _Add3DActor( vtkProp3D* prop );
private slots:
void _SyncBottom( int a, int b );
protected:
Ui::BaseMPRWidget* m_UI;
vtkSmartPointer< TMPRObjects > m_MPRObjects;
+ QVTKWidget* m_VTK[ 4 ];
struct PolyDataActor
{
- vtkSmartPointer< vtkPolyDataNormals > Normals;
- vtkSmartPointer< vtkStripper > Stripper;
- vtkSmartPointer< vtkPolyDataMapper > Mapper;
- vtkSmartPointer< vtkQuadricLODActor > Actor;
-
- PolyDataActor( vtkPolyData* pd );
+ vtkPolyData* Mesh;
+ vtkPolyDataNormals* Normals;
+ vtkStripper* Stripper;
+ vtkPolyDataMapper* Mapper;
+ vtkQuadricLODActor* Actor;
+
+ PolyDataActor( );
+ virtual ~PolyDataActor( );
+ void Configure( vtkPolyData* pd );
};
- std::map< std::string, vtkImageData* > m_Images;
- std::map< std::string, PolyDataActor* > m_Meshes;
- std::map< std::string, std::string > m_Tree;
+ 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( );
+ };
- QVTKWidget* m_VTK[ 4 ];
+ std::string m_MainImage;
+ std::map< std::string, Data > m_Data;
+ std::map< std::string, std::string > m_Tree;
};
} // ecapseman