#include // ------------------------------------------------------------------------- cpExtensions::Visualization::MPRObjects* cpExtensions::Visualization::MPRObjects:: New( ) { return( new Self( ) ); } // ------------------------------------------------------------------------- void cpExtensions::Visualization::MPRObjects:: SetRenderWindows( vtkRenderWindow* wx, vtkRenderWindow* wy, vtkRenderWindow* wz, vtkRenderWindow* w3D ) { this->m_Windows[ 0 ] = wx; this->m_Windows[ 1 ] = wy; this->m_Windows[ 2 ] = wz; this->m_Windows[ 3 ] = w3D; // Prepare renderers for( int i = 0; i < 4; ++i ) { if( this->m_Windows[ i ] == NULL ) { this->m_Renderers[ i ] = NULL; continue; } // fi // Renderers this->m_Renderers[ i ] = vtkSmartPointer< vtkRenderer >::New( ); this->m_Renderers[ i ]->SetBackground( 0.1, 0.3, 0.8 ); this->m_Windows[ i ]->AddRenderer( this->m_Renderers[ i ] ); // Image styles (just for 2D windows) if( i < 3 ) { this->m_Styles[ i ] = vtkSmartPointer< TStyle >::New( ); this->m_Styles[ i ]->Configure( this->m_MPRActors->GetSliceActors( i ), this->m_MPRActors ); this->m_Styles[ i ]-> SetInteractor( this->m_Windows[ i ]->GetInteractor( ), i ); this->m_Styles[ i ]->SetModeToNavigation( ); } // fi } // rof if( this->m_Windows[ 3 ] != NULL ) this->m_Renderers[ 3 ]->SetBackground( 0.2, 0.2, 0.2 ); for( int i = 0; i < 3; ++i ) { for( int j = 0; j < 3; ++j ) { if( this->m_Windows[ i ] != NULL && this->m_Windows[ j ] != NULL && i != j ) this->m_Styles[ i ]-> AssociateInteractor( this->m_Windows[ j ]->GetInteractor( ) ); } // rof if( this->m_Windows[ 3 ] != NULL ) this->m_Styles[ i ]-> AssociateInteractor( this->m_Windows[ 3 ]->GetInteractor( ) ); } // rof } // ------------------------------------------------------------------------- void cpExtensions::Visualization::MPRObjects:: SetImage( vtkImageData* image ) { this->m_MPRActors->SetInputData( image ); this->m_MPRActors->PushDataInto( this->m_Renderers[ 0 ], this->m_Renderers[ 1 ], this->m_Renderers[ 2 ], this->m_Renderers[ 3 ] ); // Correct cameras positions /* TODO vtkCamera* zCam = this->m_Renderers[ 2 ]->GetActiveCamera( ); zCam->SetViewUp( 0, -1, 0 ); zCam->SetPosition( 0, 0, -1 ); zCam->SetFocalPoint( 0, 0, 0 ); */ // First rendering this->ResetCameras( ); this->RenderAll( ); } // ------------------------------------------------------------------------- void cpExtensions::Visualization::MPRObjects:: ResetCamera( const int& id ) { if( id < 4 ) if( this->m_Windows[ id ] != NULL ) this->m_Renderers[ id ]->ResetCamera( ); } // ------------------------------------------------------------------------- void cpExtensions::Visualization::MPRObjects:: ResetCameras( ) { for( int i = 0; i < 4; ++i ) if( this->m_Windows[ i ] != NULL ) this->m_Renderers[ i ]->ResetCamera( ); } // ------------------------------------------------------------------------- void cpExtensions::Visualization::MPRObjects:: Render( const int& id ) { if( id < 4 ) if( this->m_Windows[ id ] != NULL ) this->m_Windows[ id ]->Render( ); } // ------------------------------------------------------------------------- void cpExtensions::Visualization::MPRObjects:: RenderAll( ) { for( int i = 0; i < 4; ++i ) if( this->m_Windows[ i ] != NULL ) this->m_Windows[ i ]->Render( ); } // ------------------------------------------------------------------------- vtkRenderer* cpExtensions::Visualization::MPRObjects:: GetXRenderer( ) { return( this->m_Renderers[ 0 ] ); } // ------------------------------------------------------------------------- vtkRenderer* cpExtensions::Visualization::MPRObjects:: GetYRenderer( ) { return( this->m_Renderers[ 1 ] ); } // ------------------------------------------------------------------------- vtkRenderer* cpExtensions::Visualization::MPRObjects:: GetZRenderer( ) { return( this->m_Renderers[ 2 ] ); } // ------------------------------------------------------------------------- vtkRenderer* cpExtensions::Visualization::MPRObjects:: Get3DRenderer( ) { return( this->m_Renderers[ 3 ] ); } // ------------------------------------------------------------------------- const vtkRenderer* cpExtensions::Visualization::MPRObjects:: GetXRenderer( ) const { return( this->m_Renderers[ 0 ] ); } // ------------------------------------------------------------------------- const vtkRenderer* cpExtensions::Visualization::MPRObjects:: GetYRenderer( ) const { return( this->m_Renderers[ 1 ] ); } // ------------------------------------------------------------------------- const vtkRenderer* cpExtensions::Visualization::MPRObjects:: GetZRenderer( ) const { return( this->m_Renderers[ 2 ] ); } // ------------------------------------------------------------------------- const vtkRenderer* cpExtensions::Visualization::MPRObjects:: Get3DRenderer( ) const { return( this->m_Renderers[ 3 ] ); } // ------------------------------------------------------------------------- cpExtensions::Visualization::MPRObjects:: MPRObjects( ) : vtkObject( ) { // Prepare actors this->m_MPRActors = vtkSmartPointer< TMPRActors >::New( ); } // ------------------------------------------------------------------------- cpExtensions::Visualization::MPRObjects:: ~MPRObjects( ) { } // eof - $RCSfile$