1 #include <cpExtensions/QT/MPR3DWidget.h>
3 #ifdef cpExtensions_QT4
5 #include <cpExtensions/Visualization/ImageOutlineActor.h>
6 #include <cpExtensions/Visualization/MeshActor.h>
7 #include <cpExtensions/Visualization/WindowLevelImageActor.h>
9 #include <vtkImageData.h>
11 #include <vtkPolyData.h>
13 // -------------------------------------------------------------------------
14 cpExtensions::QT::MPR3DWidget::
15 MPR3DWidget( QWidget* parent, Qt::WindowFlags f )
16 : Superclass( parent, f ),
21 // -------------------------------------------------------------------------
22 cpExtensions::QT::MPR3DWidget::
25 for( auto a = this->m_Actors.begin( ); a != this->m_Actors.end( ); ++a )
27 this->m_Actors.clear( );
30 // -------------------------------------------------------------------------
31 void cpExtensions::QT::MPR3DWidget::
34 this->RemoveViewProps( );
35 this->m_ImageName = "";
38 // -------------------------------------------------------------------------
39 void cpExtensions::QT::MPR3DWidget::
40 SetImage( vtkImageData* image, const std::string& name )
44 if( this->m_ImageName != "" )
46 this->m_ImageName = name;
48 for( unsigned int o = 0; o < 3; ++o )
50 this->m_WLActors[ o ] = vtkSmartPointer< TWLActor >::New( );
51 this->m_WLActors[ o ]->SetImage( image );
52 this->m_WLActors[ o ]->SetOrientation( o );
54 this->m_OLActors[ o ] = vtkSmartPointer< TOLActor >::New( );
55 this->m_OLActors[ o ]->SetBounds(
56 o, image->GetBounds( )[ o << 1 ], image->GetBounds( )
59 this->AddViewProp( this->m_WLActors[ o ], this->m_ImageName );
60 this->AddAuxViewProp( this->m_OLActors[ o ], this->m_ImageName );
66 // -------------------------------------------------------------------------
67 void cpExtensions::QT::MPR3DWidget::
68 Add( vtkDataSet* data, const std::string& name )
70 auto image = dynamic_cast< vtkImageData* >( data );
71 auto pdata = dynamic_cast< vtkPolyData* >( data );
75 if( this->m_ImageName != "" )
79 this->SetImage( image, name );
82 else if( pdata != NULL )
84 TActor* actor = new TActor( );
85 actor->SetMesh( pdata );
86 this->m_Actors.push_back( actor );
87 this->AddViewProp( actor->GetActor( ), name );
89 if( this->m_ImageName == "" )
95 // -------------------------------------------------------------------------
96 cpExtensions::QT::MPR3DWidget::
97 TWLActor* cpExtensions::QT::MPR3DWidget::
98 GetImageActor( int o )
100 return( this->m_WLActors[ o % 3 ] );
103 // -------------------------------------------------------------------------
104 const cpExtensions::QT::MPR3DWidget::
105 TWLActor* cpExtensions::QT::MPR3DWidget::
106 GetImageActor( int o ) const
108 return( this->m_WLActors[ o % 3 ] );
111 // -------------------------------------------------------------------------
112 void cpExtensions::QT::MPR3DWidget::
113 SetSliceNumber( int orientation, int slice )
115 int o = orientation % 3;
116 this->m_WLActors[ o ]->SetSliceNumber( slice );
117 this->m_OLActors[ o ]->SetBounds(
119 this->m_WLActors[ o ]->GetSlicePlane( )->GetOrigin( )[ o ],
120 this->m_WLActors[ o ]->GetImage( )->GetBounds( )
125 // -------------------------------------------------------------------------
126 void cpExtensions::QT::MPR3DWidget::
127 SetSlicesNumbers( int x, int y, int z )
129 int s[] = { x, y, z };
130 for( int o = 0; o < 3; ++o )
132 this->m_WLActors[ o ]->SetSliceNumber( s[ o ] );
133 this->m_OLActors[ o ]->SetBounds(
135 this->m_WLActors[ o ]->GetSlicePlane( )->GetOrigin( )[ o ],
136 this->m_WLActors[ o ]->GetImage( )->GetBounds( )
143 #endif // cpExtensions_QT4