X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpExtensions%2FQT%2FSimpleMPRWidget.h;h=04ed994898f710f698a629205ffbead51c8b759e;hb=f47059eb39b5c9eef5cd2ee1b6c013cd75eff97f;hp=fefe1446e70fb86ac51fd417607e54dbaa0ed456;hpb=e857c52ab67b603ed2230e6e64d1225150fb8d6d;p=cpPlugins.git diff --git a/lib/cpExtensions/QT/SimpleMPRWidget.h b/lib/cpExtensions/QT/SimpleMPRWidget.h index fefe144..04ed994 100644 --- a/lib/cpExtensions/QT/SimpleMPRWidget.h +++ b/lib/cpExtensions/QT/SimpleMPRWidget.h @@ -6,11 +6,11 @@ #ifdef cpExtensions_QT4 #include +#include #include -#include -#include -#include -#include +#include +#include +#include #include #include @@ -39,54 +39,37 @@ namespace cpExtensions 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; + protected: /** */ - struct PolyDataActor + class _3DInteractorStyle + : public vtkInteractorStyleTrackballCamera { - vtkSmartPointer< vtkPolyData > Data; - vtkSmartPointer< vtkPolyDataNormals > Normals; - vtkSmartPointer< vtkStripper > Stripper; - vtkSmartPointer< vtkPolyDataMapper > Mapper; - vtkSmartPointer< vtkActor > Actor; - - void Configure( vtkPolyData* data ) - { - this->Data = data; - double r[ 2 ]; - this->Data->GetScalarRange( r ); - - this->Normals = vtkSmartPointer< vtkPolyDataNormals >::New( ); - this->Stripper = vtkSmartPointer< vtkStripper >::New( ); - this->Mapper = vtkSmartPointer< vtkPolyDataMapper >::New( ); - this->Normals->SetInputData( this->Data ); - this->Normals->SetFeatureAngle( 60.0 ); - this->Stripper->SetInputConnection( - this->Normals->GetOutputPort( ) - ); - this->Mapper->SetInputConnection( - this->Stripper->GetOutputPort( ) - ); - this->Mapper->UseLookupTableScalarRangeOff( ); - this->Mapper->SetScalarRange( r[ 0 ], r[ 1 ] ); - - unsigned long nPolys = this->Data->GetNumberOfPolys( ); - if( nPolys < cpExtensions_MAX_POLYS ) - { - this->Actor = vtkSmartPointer< vtkActor >::New( ); - this->Actor->SetMapper( this->Mapper ); - } - else - { - vtkSmartPointer< vtkQuadricLODActor > actor = - vtkSmartPointer< vtkQuadricLODActor >::New( ); - actor->SetMapper( this->Mapper ); - actor->DeferLODConstructionOff( ); - this->Actor = actor.GetPointer( ); - - } // fi - } + public: + vtkTypeMacro( + _3DInteractorStyle, vtkInteractorStyleTrackballCamera + ); + + public: + static _3DInteractorStyle* New( ); + + virtual void OnChar( ) { } + virtual void OnKeyDown( ) { } + virtual void OnKeyUp( ) { } + virtual void OnKeyRelease( ) { } + virtual void OnKeyPress( ); }; public: @@ -95,23 +78,19 @@ namespace cpExtensions // Data management void Clear( ); - void SetMainImage( vtkImageData* image ); - void SetMainActor( vtkImageActor* actor ); - void AddImage( vtkImageData* image ); - void AddImageActor( vtkImageActor* actor ); - void AddMesh( vtkPolyData* mesh ); - void AddMeshActor( vtkProp3D* actor ); - void AddActor( vtkProp* actor ); + 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 ); - /* TODO - std::vector< std::pair< vtkImageActor*, vtkRenderer* > > - GetMainImageActors( ); - vtkActor* GetActor( vtkPolyData* mesh ); - */ protected: void _AssociateSlices( ); @@ -128,7 +107,7 @@ namespace cpExtensions vtkSmartPointer< TSliceActors > m_2DSlices[ 3 ]; vtkSmartPointer< TSliceActors > m_3DSlices[ 3 ]; - std::map< vtkPolyData*, PolyDataActor > m_PolyDatas; + TNamedActors m_NamedActors; }; } // ecapseman