+++ /dev/null
-#include <cpExtensions/QT/SimpleMPRWidget.h>
-#include <cpExtensions/QT/ui_SimpleMPRWidget.h>
-#include <cpExtensions/QT/ImageWidget.h>
-#include <cpExtensions/QT/MPR3DWidget.h>
-#include <cpExtensions/QT/MPRInteractionCommand.h>
-#include <cpExtensions/QT/ConfigurationChooser.h>
-
-#include <vtkImageData.h>
-#include <vtkPolyData.h>
-#include <vtkProp.h>
-#include <vtkPropCollection.h>
-
-// -------------------------------------------------------------------------
-cpExtensions::QT::SimpleMPRWidget::
-SimpleMPRWidget( QWidget* parent, Qt::WindowFlags f )
- : Superclass( parent, f ),
- Superclass2( ),
- m_UI( new Ui::SimpleMPRWidget ),
- m_MainImageName( "" )
-{
- this->m_UI->setupUi( this );
-
- // Prepare default configuration
- this->m_UI->Q1->hide( );
- this->m_UI->Q2->hide( );
- this->m_UI->Q3->hide( );
- this->m_UI->Q4->hide( );
- this->m_UI->Q1->close( );
- this->m_UI->Q2->close( );
- this->m_UI->Q3->close( );
- this->m_UI->Q4->close( );
- delete this->m_UI->Q1;
- delete this->m_UI->Q2;
- delete this->m_UI->Q3;
- delete this->m_UI->Q4;
- this->m_XImage = new ImageWidget( this );
- this->m_YImage = new ImageWidget( this );
- this->m_ZImage = new ImageWidget( this );
- this->m_3DView = new MPR3DWidget( this );
- this->m_UI->Q1 = this->m_XImage;
- this->m_UI->Q2 = this->m_YImage;
- this->m_UI->Q3 = this->m_ZImage;
- this->m_UI->Q4 = this->m_3DView;
- this->Configure( 'y', 'x', 'w', 'z' );
-
- // Interaction synchronizer
- unsigned long ev1 = vtkCommand::UserEvent + 1;
- unsigned long ev2 = vtkCommand::UserEvent + 2;
- vtkSmartPointer< cpExtensions::QT::MPRInteractionCommand > cmd =
- vtkSmartPointer< cpExtensions::QT::MPRInteractionCommand >::New( );
- cmd->AddWidget( this->m_XImage );
- cmd->AddWidget( this->m_YImage );
- cmd->AddWidget( this->m_ZImage );
- cmd->AddWidget( this->m_3DView );
- this->m_XImage->GetStyle( )->AddObserver( ev1, cmd );
- this->m_YImage->GetStyle( )->AddObserver( ev1, cmd );
- this->m_ZImage->GetStyle( )->AddObserver( ev1, cmd );
- this->m_XImage->GetStyle( )->AddObserver( ev2, cmd );
- this->m_YImage->GetStyle( )->AddObserver( ev2, cmd );
- this->m_ZImage->GetStyle( )->AddObserver( ev2, cmd );
-
- // Connect slots
- this->connect(
- this->m_UI->Top, SIGNAL( splitterMoved( int, int ) ),
- this, SLOT( _SyncBottom( int, int ) )
- );
- this->connect(
- this->m_UI->Bottom, SIGNAL( splitterMoved( int, int ) ),
- this, SLOT( _SyncTop( int, int ) )
- );
-}
-
-// -------------------------------------------------------------------------
-cpExtensions::QT::SimpleMPRWidget::
-~SimpleMPRWidget( )
-{
- delete this->m_UI;
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-Configure( char q1, char q2, char q3, char q4 )
-{
- // Hide all widgets
- this->m_UI->Q1->hide( );
- this->m_UI->Q2->hide( );
- this->m_UI->Q3->hide( );
- this->m_UI->Q4->hide( );
- this->m_UI->Q1->close( );
- this->m_UI->Q2->close( );
- this->m_UI->Q3->close( );
- this->m_UI->Q4->close( );
-
- // Reorder them
- if ( q1 == 'x' ) this->m_UI->Top->addWidget( this->m_XImage );
- else if( q1 == 'y' ) this->m_UI->Top->addWidget( this->m_YImage );
- else if( q1 == 'z' ) this->m_UI->Top->addWidget( this->m_ZImage );
- else if( q1 == 'w' ) this->m_UI->Top->addWidget( this->m_3DView );
- if ( q2 == 'x' ) this->m_UI->Top->addWidget( this->m_XImage );
- else if( q2 == 'y' ) this->m_UI->Top->addWidget( this->m_YImage );
- else if( q2 == 'z' ) this->m_UI->Top->addWidget( this->m_ZImage );
- else if( q2 == 'w' ) this->m_UI->Top->addWidget( this->m_3DView );
- this->m_UI->Top->update( );
- if ( q4 == 'x' ) this->m_UI->Bottom->addWidget( this->m_XImage );
- else if( q4 == 'y' ) this->m_UI->Bottom->addWidget( this->m_YImage );
- else if( q4 == 'z' ) this->m_UI->Bottom->addWidget( this->m_ZImage );
- else if( q4 == 'w' ) this->m_UI->Bottom->addWidget( this->m_3DView );
- if ( q3 == 'x' ) this->m_UI->Bottom->addWidget( this->m_XImage );
- else if( q3 == 'y' ) this->m_UI->Bottom->addWidget( this->m_YImage );
- else if( q3 == 'z' ) this->m_UI->Bottom->addWidget( this->m_ZImage );
- else if( q3 == 'w' ) this->m_UI->Bottom->addWidget( this->m_3DView );
- this->m_UI->Bottom->update( );
-
- // Keep track
- if ( q1 == 'x' ) this->m_UI->Q1 = this->m_XImage;
- else if( q1 == 'y' ) this->m_UI->Q1 = this->m_YImage;
- else if( q1 == 'z' ) this->m_UI->Q1 = this->m_ZImage;
- else if( q1 == 'w' ) this->m_UI->Q1 = this->m_3DView;
- if ( q2 == 'x' ) this->m_UI->Q2 = this->m_XImage;
- else if( q2 == 'y' ) this->m_UI->Q2 = this->m_YImage;
- else if( q2 == 'z' ) this->m_UI->Q2 = this->m_ZImage;
- else if( q2 == 'w' ) this->m_UI->Q2 = this->m_3DView;
- if ( q3 == 'x' ) this->m_UI->Q3 = this->m_XImage;
- else if( q3 == 'y' ) this->m_UI->Q3 = this->m_YImage;
- else if( q3 == 'z' ) this->m_UI->Q3 = this->m_ZImage;
- else if( q3 == 'w' ) this->m_UI->Q3 = this->m_3DView;
- if ( q4 == 'x' ) this->m_UI->Q4 = this->m_XImage;
- else if( q4 == 'y' ) this->m_UI->Q4 = this->m_YImage;
- else if( q4 == 'z' ) this->m_UI->Q4 = this->m_ZImage;
- else if( q4 == 'w' ) this->m_UI->Q4 = this->m_3DView;
-
- // Draw all
- this->m_UI->Q1->show( );
- this->m_UI->Q2->show( );
- this->m_UI->Q3->show( );
- this->m_UI->Q4->show( );
- dynamic_cast< RendererWidget* >( this->m_UI->Q1 )->SetQuadrant( 1 );
- dynamic_cast< RendererWidget* >( this->m_UI->Q2 )->SetQuadrant( 2 );
- dynamic_cast< RendererWidget* >( this->m_UI->Q3 )->SetQuadrant( 3 );
- dynamic_cast< RendererWidget* >( this->m_UI->Q4 )->SetQuadrant( 4 );
-}
-
-// -------------------------------------------------------------------------
-bool cpExtensions::QT::SimpleMPRWidget::
-HasImage( ) const
-{
- return( this->m_MainImage.GetPointer( ) != NULL );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-SetImage( vtkImageData* image, const std::string& name )
-{
- if( this->m_MainImageName != "" || image == NULL )
- {
- // TODO: Clear visualization
-
- } // fi
- this->m_MainImageName = name;
- this->m_MainImage = image;
-
- if( this->m_MainImage != NULL && this->m_MainImageName != "" )
- {
- this->m_XImage->SetImage( this->m_MainImage, name, 0 );
- this->m_YImage->SetImage( this->m_MainImage, name, 1 );
- this->m_ZImage->SetImage( this->m_MainImage, name, 2 );
- this->m_3DView->SetImage( this->m_MainImage, name );
-
- } // fi
-}
-
-// -------------------------------------------------------------------------
-bool cpExtensions::QT::SimpleMPRWidget::
-Add( vtkDataSet* data, const std::string& name )
-{
- bool success = true;
- auto image = dynamic_cast< vtkImageData* >( data );
- auto pdata = dynamic_cast< vtkPolyData* >( data );
-
- if( image != NULL )
- {
- if( this->m_MainImageName != "" )
- {
- this->m_XImage->Add( image, name );
- this->m_YImage->Add( image, name );
- this->m_ZImage->Add( image, name );
- // TODO: this->m_3DView->Add( image, name );
- }
- else
- this->SetImage( image, name );
- }
- else if( pdata != NULL )
- this->m_3DView->Add( pdata, name );
- else
- success = false;
- return( success );
-}
-
-// -------------------------------------------------------------------------
-cpExtensions::QT::SimpleMPRWidget::
-TProps cpExtensions::QT::SimpleMPRWidget::
-GetViewProps( const std::string& name ) const
-{
-/*
- auto x = this->m_XImage->GetViewProps( name );
- auto y = this->m_YImage->GetViewProps( name );
- auto z = this->m_ZImage->GetViewProps( name );
- auto w = this->m_3DView->GetViewProps( name );
-
- TProps props;
- if( x != NULL ) props.insert( x );
- if( y != NULL ) props.insert( y );
- if( z != NULL ) props.insert( z );
- if( w != NULL ) props.insert( w );
- return( props );
-*/
- TProps props;
- return( props );
-}
-
-// -------------------------------------------------------------------------
-cpExtensions::QT::SimpleMPRWidget::
-TProps cpExtensions::QT::SimpleMPRWidget::
-GetImageProps( ) const
-{
- return( this->GetViewProps( this->m_MainImageName ) );
-}
-
-// -------------------------------------------------------------------------
-vtkRenderWindowInteractor* cpExtensions::QT::SimpleMPRWidget::
-GetXInteractor( )
-{
- return( this->m_XImage->GetInteractor( ) );
-}
-
-// -------------------------------------------------------------------------
-const vtkRenderWindowInteractor* cpExtensions::QT::SimpleMPRWidget::
-GetXInteractor( ) const
-{
- return( this->m_XImage->GetInteractor( ) );
-}
-
-// -------------------------------------------------------------------------
-vtkRenderWindowInteractor* cpExtensions::QT::SimpleMPRWidget::
-GetYInteractor( )
-{
- return( this->m_YImage->GetInteractor( ) );
-}
-
-// -------------------------------------------------------------------------
-const vtkRenderWindowInteractor* cpExtensions::QT::SimpleMPRWidget::
-GetYInteractor( ) const
-{
- return( this->m_YImage->GetInteractor( ) );
-}
-
-// -------------------------------------------------------------------------
-vtkRenderWindowInteractor* cpExtensions::QT::SimpleMPRWidget::
-GetZInteractor( )
-{
- return( this->m_ZImage->GetInteractor( ) );
-}
-
-// -------------------------------------------------------------------------
-const vtkRenderWindowInteractor* cpExtensions::QT::SimpleMPRWidget::
-GetZInteractor( ) const
-{
- return( this->m_ZImage->GetInteractor( ) );
-}
-
-// -------------------------------------------------------------------------
-vtkRenderWindowInteractor* cpExtensions::QT::SimpleMPRWidget::
-GetWInteractor( )
-{
- return( this->m_3DView->GetInteractor( ) );
-}
-
-// -------------------------------------------------------------------------
-const vtkRenderWindowInteractor* cpExtensions::QT::SimpleMPRWidget::
-GetWInteractor( ) const
-{
- return( this->m_3DView->GetInteractor( ) );
-}
-
-// -------------------------------------------------------------------------
-vtkRenderWindow* cpExtensions::QT::SimpleMPRWidget::
-GetXRenderWindow( )
-{
- return( this->m_XImage->GetRenderWindow( ) );
-}
-
-// -------------------------------------------------------------------------
-const vtkRenderWindow* cpExtensions::QT::SimpleMPRWidget::
-GetXRenderWindow( ) const
-{
- return( this->m_XImage->GetRenderWindow( ) );
-}
-
-// -------------------------------------------------------------------------
-vtkRenderWindow* cpExtensions::QT::SimpleMPRWidget::
-GetYRenderWindow( )
-{
- return( this->m_YImage->GetRenderWindow( ) );
-}
-
-// -------------------------------------------------------------------------
-const vtkRenderWindow* cpExtensions::QT::SimpleMPRWidget::
-GetYRenderWindow( ) const
-{
- return( this->m_YImage->GetRenderWindow( ) );
-}
-
-// -------------------------------------------------------------------------
-vtkRenderWindow* cpExtensions::QT::SimpleMPRWidget::
-GetZRenderWindow( )
-{
- return( this->m_ZImage->GetRenderWindow( ) );
-}
-
-// -------------------------------------------------------------------------
-const vtkRenderWindow* cpExtensions::QT::SimpleMPRWidget::
-GetZRenderWindow( ) const
-{
- return( this->m_ZImage->GetRenderWindow( ) );
-}
-
-// -------------------------------------------------------------------------
-vtkRenderWindow* cpExtensions::QT::SimpleMPRWidget::
-GetWRenderWindow( )
-{
- return( this->m_3DView->GetRenderWindow( ) );
-}
-
-
-// -------------------------------------------------------------------------
-const vtkRenderWindow* cpExtensions::QT::SimpleMPRWidget::
-GetWRenderWindow( ) const
-{
- return( this->m_3DView->GetRenderWindow( ) );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-ResetCameras( )
-{
- this->m_XImage->ResetCamera( );
- this->m_YImage->ResetCamera( );
- this->m_ZImage->ResetCamera( );
- this->m_3DView->ResetCamera( );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-Render( )
-{
- this->m_XImage->Render( );
- this->m_YImage->Render( );
- this->m_ZImage->Render( );
- this->m_3DView->Render( );
-}
-
-// -------------------------------------------------------------------------
-std::set< vtkRenderWindowInteractor* > cpExtensions::QT::SimpleMPRWidget::
-GetInteractors( ) const
-{
- std::set< vtkRenderWindowInteractor* > ret;
- ret.insert( this->m_XImage->GetInteractor( ) );
- ret.insert( this->m_YImage->GetInteractor( ) );
- ret.insert( this->m_ZImage->GetInteractor( ) );
- ret.insert( this->m_3DView->GetInteractor( ) );
- return( ret );
-}
-
-// -------------------------------------------------------------------------
-std::set< std::string > cpExtensions::QT::SimpleMPRWidget::
-GetActorsNames( ) const
-{
- std::set< std::string > names = this->m_XImage->GetActorsNames( );
- std::set< std::string > y = this->m_YImage->GetActorsNames( );
- std::set< std::string > z = this->m_ZImage->GetActorsNames( );
- std::set< std::string > w = this->m_3DView->GetActorsNames( );
- names.insert( y.begin( ), y.end( ) );
- names.insert( z.begin( ), z.end( ) );
- names.insert( w.begin( ), w.end( ) );
- return( names );
-}
-
-// -------------------------------------------------------------------------
-bool cpExtensions::QT::SimpleMPRWidget::
-IsWindowLevelImageActor( const std::string& name ) const
-{
- return( this->m_XImage->IsWindowLevelImageActor( name ) );
-}
-
-// -------------------------------------------------------------------------
-bool cpExtensions::QT::SimpleMPRWidget::
-IsLUTImageActor( const std::string& name ) const
-{
- return( this->m_XImage->IsLUTImageActor( name ) );
-}
-
-// -------------------------------------------------------------------------
-bool cpExtensions::QT::SimpleMPRWidget::
-Is3DActor( const std::string& name ) const
-{
- return(
- this->m_XImage->Is3DActor( name ) || this->m_3DView->Is3DActor( name )
- );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-GetScalarRange( const std::string& name, double r[ 2 ] ) const
-{
- this->m_XImage->GetScalarRange( name, r );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-GetWindowLevel( const std::string& name, double wl[ 2 ] ) const
-{
- this->m_XImage->GetWindowLevel( name, wl );
-}
-
-// -------------------------------------------------------------------------
-double cpExtensions::QT::SimpleMPRWidget::
-GetWindow( const std::string& name ) const
-{
- return( this->m_XImage->GetWindow( name ) );
-}
-
-// -------------------------------------------------------------------------
-double cpExtensions::QT::SimpleMPRWidget::
-GetLevel( const std::string& name ) const
-{
- return( this->m_XImage->GetLevel( name ) );
-}
-
-// -------------------------------------------------------------------------
-char cpExtensions::QT::SimpleMPRWidget::
-GetImageInterpolation( const std::string& name ) const
-{
- return( this->m_XImage->GetImageInterpolation( name ) );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-GetColor( const std::string& name, double& r, double& g, double& b ) const
-{
- this->m_XImage->GetColor( name, r, g, b );
-}
-
-// -------------------------------------------------------------------------
-double cpExtensions::QT::SimpleMPRWidget::
-GetOpacity( const std::string& name ) const
-{
- return( this->m_XImage->GetOpacity( name ) );
-}
-
-// -------------------------------------------------------------------------
-double cpExtensions::QT::SimpleMPRWidget::
-GetPointSize( const std::string& name ) const
-{
- return( this->m_XImage->GetPointSize( name ) );
-}
-
-// -------------------------------------------------------------------------
-double cpExtensions::QT::SimpleMPRWidget::
-GetLineWidth( const std::string& name ) const
-{
- return( this->m_XImage->GetLineWidth( name ) );
-}
-
-// -------------------------------------------------------------------------
-int cpExtensions::QT::SimpleMPRWidget::
-GetRepresentation( const std::string& name ) const
-{
- return( this->m_XImage->GetRepresentation( name ) );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-SetScalarRange( const std::string& name, double r[ 2 ] )
-{
- this->m_XImage->SetScalarRange( name, r );
- this->m_YImage->SetScalarRange( name, r );
- this->m_ZImage->SetScalarRange( name, r );
- this->m_3DView->SetScalarRange( name, r );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-SetScalarRange( const std::string& name, double min, double max )
-{
- this->m_XImage->SetScalarRange( name, min, max );
- this->m_YImage->SetScalarRange( name, min, max );
- this->m_ZImage->SetScalarRange( name, min, max );
- this->m_3DView->SetScalarRange( name, min, max );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-SetWindowLevel( const std::string& name, double wl[ 2 ] )
-{
- this->m_XImage->SetWindowLevel( name, wl );
- this->m_YImage->SetWindowLevel( name, wl );
- this->m_ZImage->SetWindowLevel( name, wl );
- this->m_3DView->SetWindowLevel( name, wl );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-SetWindowLevel( const std::string& name, double w, double l )
-{
- this->m_XImage->SetWindowLevel( name, w, l );
- this->m_YImage->SetWindowLevel( name, w, l );
- this->m_ZImage->SetWindowLevel( name, w, l );
- this->m_3DView->SetWindowLevel( name, w, l );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-SetWindow( const std::string& name, double w )
-{
- this->m_XImage->SetWindow( name, w );
- this->m_YImage->SetWindow( name, w );
- this->m_ZImage->SetWindow( name, w );
- this->m_3DView->SetWindow( name, w );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-SetLevel( const std::string& name, double l )
-{
- this->m_XImage->SetLevel( name, l );
- this->m_YImage->SetLevel( name, l );
- this->m_ZImage->SetLevel( name, l );
- this->m_3DView->SetLevel( name, l );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-SetImageInterpolation( const std::string& name, char i )
-{
- this->m_XImage->SetImageInterpolation( name, i );
- this->m_YImage->SetImageInterpolation( name, i );
- this->m_ZImage->SetImageInterpolation( name, i );
- this->m_3DView->SetImageInterpolation( name, i );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-SetColor( const std::string& name, double r, double g, double b )
-{
- this->m_XImage->SetColor( name, r, g, b );
- this->m_YImage->SetColor( name, r, g, b );
- this->m_ZImage->SetColor( name, r, g, b );
- this->m_3DView->SetColor( name, r, g, b );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-SetOpacity( const std::string& name, double o )
-{
- this->m_XImage->SetOpacity( name, o );
- this->m_YImage->SetOpacity( name, o );
- this->m_ZImage->SetOpacity( name, o );
- this->m_3DView->SetOpacity( name, o );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-SetPointSize( const std::string& name, double s )
-{
- this->m_XImage->SetPointSize( name, s );
- this->m_YImage->SetPointSize( name, s );
- this->m_ZImage->SetPointSize( name, s );
- this->m_3DView->SetPointSize( name, s );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-SetLineWidth( const std::string& name, double w )
-{
- this->m_XImage->SetLineWidth( name, w );
- this->m_YImage->SetLineWidth( name, w );
- this->m_ZImage->SetLineWidth( name, w );
- this->m_3DView->SetLineWidth( name, w );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-SetRepresentationToPoints( const std::string& name )
-{
- this->m_XImage->SetRepresentationToPoints( name );
- this->m_YImage->SetRepresentationToPoints( name );
- this->m_ZImage->SetRepresentationToPoints( name );
- this->m_3DView->SetRepresentationToPoints( name );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-SetRepresentationToSurface( const std::string& name )
-{
- this->m_XImage->SetRepresentationToSurface( name );
- this->m_YImage->SetRepresentationToSurface( name );
- this->m_ZImage->SetRepresentationToSurface( name );
- this->m_3DView->SetRepresentationToSurface( name );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-SetRepresentationToWireframe( const std::string& name )
-{
- this->m_XImage->SetRepresentationToWireframe( name );
- this->m_YImage->SetRepresentationToWireframe( name );
- this->m_ZImage->SetRepresentationToWireframe( name );
- this->m_3DView->SetRepresentationToWireframe( name );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-_SyncBottom( int a, int b )
-{
- this->m_UI->Bottom->setSizes( this->m_UI->Top->sizes( ) );
-}
-
-// -------------------------------------------------------------------------
-void cpExtensions::QT::SimpleMPRWidget::
-_SyncTop( int a, int b )
-{
- this->m_UI->Top->setSizes( this->m_UI->Bottom->sizes( ) );
-}
-
-// eof - $RCSfile$