X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpExtensions%2FVisualization%2FMPRActors.cxx;h=e26651b4dd24098b7df304e741041789419694b0;hb=d87f7bee6741e5211324dfb72ccc0e2e59e91dd7;hp=6419daa47830969507a127700e00471876eae15d;hpb=022d9ce59bfd6ab97517cba9440429750df6c442;p=cpPlugins.git diff --git a/lib/cpExtensions/Visualization/MPRActors.cxx b/lib/cpExtensions/Visualization/MPRActors.cxx index 6419daa..e26651b 100644 --- a/lib/cpExtensions/Visualization/MPRActors.cxx +++ b/lib/cpExtensions/Visualization/MPRActors.cxx @@ -28,183 +28,134 @@ GetSliceActors( const int& i ) const } // ------------------------------------------------------------------------- -int cpExtensions::Visualization::MPRActors:: -AddInputConnection( vtkAlgorithmOutput* aout ) +void cpExtensions::Visualization::MPRActors:: +SetInputConnection( vtkAlgorithmOutput* aout ) { - int N = this->Slices[ 0 ][ 0 ]->GetNumberOfImageActors( ); - if( N == 0 ) + for( int i = 0; i < 2; ++i ) { - this->Slices[ 0 ][ 0 ]->AddInputConnection( aout, 0 ); - vtkImageMapToColors* imap = this->Slices[ 0 ][ 0 ]->GetImageMap( 0 ); - for( unsigned int i = 0; i < 2; ++i ) - for( unsigned int j = 0; j < 3; ++j ) - if( i != 0 || j != 0 ) - this->Slices[ i ][ j ]->AddInputConnection( - ( ( imap != NULL )? imap->GetOutputPort( ): aout ), j - ); - - // Create bounding box - vtkImageData* new_image = dynamic_cast< vtkImageData* >( - aout->GetProducer( )->GetOutputDataObject( aout->GetIndex( ) ) - ); - - // Create 3D outline - double bb[ 6 ]; - new_image->GetBounds( bb ); + for( int j = 0; j < 3; ++j ) + { + this->Slices[ i ][ j ]->SetInputConnection( aout ); + this->Slices[ i ][ j ]->SetAxis( j ); - vtkSmartPointer< vtkOutlineSource > img_ol = - vtkSmartPointer< vtkOutlineSource >::New( ); - img_ol->SetBounds( bb ); + } // rof - vtkSmartPointer< vtkPolyDataMapper > img_ol_mapper = - vtkSmartPointer< vtkPolyDataMapper >::New( ); - img_ol_mapper->SetInputConnection( img_ol->GetOutputPort( ) ); - this->ImageOutlineActor->SetMapper( img_ol_mapper ); - this->ImageOutlineActor->GetProperty( )->SetColor( 1, 1, 1 ); - this->ImageOutlineActor->GetProperty( )->SetLineWidth( 1 ); + } // rof + this->_CreateBoundingBox( ); +} - this->AddItem( this->ImageOutlineActor ); - } - else +// ------------------------------------------------------------------------- +void cpExtensions::Visualization::MPRActors:: +SetInputImage( vtkImageData* data ) +{ + for( int i = 0; i < 2; ++i ) { - // Check if the image share the same space - vtkImageData* new_image = dynamic_cast< vtkImageData* >( - aout->GetProducer( )->GetOutputDataObject( aout->GetIndex( ) ) - ); - if( new_image != NULL ) + for( int j = 0; j < 3; ++j ) { - vtkAlgorithmOutput* ref_aout = - this->Slices[ 0 ][ 0 ]->GetImageMap( 0 )->GetOutputPort( ); - vtkImageData* ref_image = dynamic_cast< vtkImageData* >( - ref_aout->GetProducer( )->GetOutputDataObject( ref_aout->GetIndex( ) ) - ); - if( ref_image != NULL ) - { - int ref_ext[ 6 ], new_ext[ 6 ]; - ref_image->GetExtent( ref_ext ); - new_image->GetExtent( new_ext ); - if( - ref_ext[ 0 ] == new_ext[ 0 ] && ref_ext[ 1 ] == new_ext[ 1 ] && - ref_ext[ 2 ] == new_ext[ 2 ] && ref_ext[ 3 ] == new_ext[ 3 ] && - ref_ext[ 4 ] == new_ext[ 4 ] && ref_ext[ 5 ] == new_ext[ 5 ] - ) - { - this->Slices[ 0 ][ 0 ]->AddInputConnection( aout, 0 ); - vtkImageMapToColors* imap = this->Slices[ 0 ][ 0 ]->GetImageMap( N ); - for( unsigned int i = 0; i < 2; ++i ) - for( unsigned int j = 0; j < 3; ++j ) - if( i != 0 || j != 0 ) - this->Slices[ i ][ j ]->AddInputConnection( - ( ( imap != NULL )? imap->GetOutputPort( ): aout ), j - ); - } - else - N = -1; - } - else - N = -1; - } - else - N = -1; + this->Slices[ i ][ j ]->SetInputImage( data ); + this->Slices[ i ][ j ]->SetAxis( j ); - } // fi - return( N ); + } // rof + + } // rof + this->_CreateBoundingBox( ); } // ------------------------------------------------------------------------- int cpExtensions::Visualization::MPRActors:: -AddInputData( vtkImageData* new_image ) +AddBinaryConnection( + vtkAlgorithmOutput* aout, + const double& r, const double& g, const double& b + ) { - int N = this->Slices[ 0 ][ 0 ]->GetNumberOfImageActors( ); - if( N == 0 ) - { - this->Slices[ 0 ][ 0 ]->AddInputData( new_image, 0 ); - vtkImageMapToColors* imap = this->Slices[ 0 ][ 0 ]->GetImageMap( 0 ); - for( unsigned int i = 0; i < 2; ++i ) - for( unsigned int j = 0; j < 3; ++j ) - if( i != 0 || j != 0 ) - { - if( imap != NULL ) - this->Slices[ i ][ j ]->AddInputConnection( - imap->GetOutputPort( ), j - ); - else - this->Slices[ i ][ j ]->AddInputData( new_image, j ); - - } // fi - - // Create 3D outline - double bb[ 6 ]; - new_image->GetBounds( bb ); - - vtkSmartPointer< vtkOutlineSource > img_ol = - vtkSmartPointer< vtkOutlineSource >::New( ); - img_ol->SetBounds( bb ); - - vtkSmartPointer< vtkPolyDataMapper > img_ol_mapper = - vtkSmartPointer< vtkPolyDataMapper >::New( ); - img_ol_mapper->SetInputConnection( img_ol->GetOutputPort( ) ); - this->ImageOutlineActor->SetMapper( img_ol_mapper ); - this->ImageOutlineActor->GetProperty( )->SetColor( 1, 1, 1 ); - this->ImageOutlineActor->GetProperty( )->SetLineWidth( 1 ); - - this->AddItem( this->ImageOutlineActor ); - } - else - { - // Check if the image share the same space - vtkAlgorithmOutput* ref_aout = - this->Slices[ 0 ][ 0 ]->GetImageMap( 0 )->GetOutputPort( ); - vtkImageData* ref_image = dynamic_cast< vtkImageData* >( - ref_aout->GetProducer( )->GetOutputDataObject( ref_aout->GetIndex( ) ) - ); - if( ref_image != NULL ) - { - int ref_ext[ 6 ], new_ext[ 6 ]; - ref_image->GetExtent( ref_ext ); - new_image->GetExtent( new_ext ); - if( - ref_ext[ 0 ] == new_ext[ 0 ] && ref_ext[ 1 ] == new_ext[ 1 ] && - ref_ext[ 2 ] == new_ext[ 2 ] && ref_ext[ 3 ] == new_ext[ 3 ] && - ref_ext[ 4 ] == new_ext[ 4 ] && ref_ext[ 5 ] == new_ext[ 5 ] - ) - { - this->Slices[ 0 ][ 0 ]->AddInputData( new_image, 0 ); - vtkImageMapToColors* imap = this->Slices[ 0 ][ 0 ]->GetImageMap( N ); - for( unsigned int i = 0; i < 2; ++i ) - for( unsigned int j = 0; j < 3; ++j ) - if( i != 0 || j != 0 ) - { - if( imap != NULL ) - this->Slices[ i ][ j ]->AddInputConnection( - imap->GetOutputPort( ), j - ); - else - this->Slices[ i ][ j ]->AddInputData( new_image, j ); - - } // fi - } - else - N = -1; - } - else - N = -1; + this->Slices[ 0 ][ 0 ]->AddBinaryConnection( aout, r, g, b ); + this->Slices[ 0 ][ 1 ]->AddBinaryConnection( aout, r, g, b ); + this->Slices[ 0 ][ 2 ]->AddBinaryConnection( aout, r, g, b ); + this->Slices[ 1 ][ 0 ]->AddBinaryConnection( aout, r, g, b ); + this->Slices[ 1 ][ 1 ]->AddBinaryConnection( aout, r, g, b ); + return( this->Slices[ 1 ][ 2 ]->AddBinaryConnection( aout, r, g, b ) ); +} - } // fi - return( N ); +// ------------------------------------------------------------------------- +int cpExtensions::Visualization::MPRActors:: +AddBinaryImage( + vtkImageData* data, + const double& r, const double& g, const double& b + ) +{ + this->Slices[ 0 ][ 0 ]->AddBinaryImage( data, r, g, b ); + this->Slices[ 0 ][ 1 ]->AddBinaryImage( data, r, g, b ); + this->Slices[ 0 ][ 2 ]->AddBinaryImage( data, r, g, b ); + this->Slices[ 1 ][ 0 ]->AddBinaryImage( data, r, g, b ); + this->Slices[ 1 ][ 1 ]->AddBinaryImage( data, r, g, b ); + return( this->Slices[ 1 ][ 2 ]->AddBinaryImage( data, r, g, b ) ); +} + +// ------------------------------------------------------------------------- +void cpExtensions::Visualization::MPRActors:: +Clear( ) +{ + this->Slices[ 0 ][ 0 ]->Clear( ); + this->Slices[ 0 ][ 1 ]->Clear( ); + this->Slices[ 0 ][ 2 ]->Clear( ); + this->Slices[ 1 ][ 0 ]->Clear( ); + this->Slices[ 1 ][ 1 ]->Clear( ); + this->Slices[ 1 ][ 2 ]->Clear( ); +} + +// ------------------------------------------------------------------------- +vtkImageData* cpExtensions::Visualization::MPRActors:: +GetInputImage( ) +{ + return( this->Slices[ 0 ][ 0 ]->GetInputImage( ) ); +} + +// ------------------------------------------------------------------------- +const vtkImageData* cpExtensions::Visualization::MPRActors:: +GetInputImage( ) const +{ + return( this->Slices[ 0 ][ 0 ]->GetInputImage( ) ); } // ------------------------------------------------------------------------- unsigned int cpExtensions::Visualization::MPRActors:: GetNumberOfImages( ) const { - return( this->Slices[ 0 ][ 0 ]->GetNumberOfImageActors( ) ); + return( this->Slices[ 0 ][ 0 ]->GetNumberOfImages( ) ); +} + +// ------------------------------------------------------------------------- +void cpExtensions::Visualization::MPRActors:: +SetInterpolate( bool v ) +{ + this->Slices[ 0 ][ 0 ]->SetInterpolate( v ); + this->Slices[ 0 ][ 1 ]->SetInterpolate( v ); + this->Slices[ 0 ][ 2 ]->SetInterpolate( v ); + this->Slices[ 1 ][ 0 ]->SetInterpolate( v ); + this->Slices[ 1 ][ 1 ]->SetInterpolate( v ); + this->Slices[ 1 ][ 2 ]->SetInterpolate( v ); +} + +// ------------------------------------------------------------------------- +void cpExtensions::Visualization::MPRActors:: +InterpolateOn( ) +{ + this->SetInterpolate( true ); +} + +// ------------------------------------------------------------------------- +void cpExtensions::Visualization::MPRActors:: +InterpolateOff( ) +{ + this->SetInterpolate( false ); } // ------------------------------------------------------------------------- void cpExtensions::Visualization::MPRActors:: PushActorsInto( - vtkRenderWindow* x, vtkRenderWindow* y, vtkRenderWindow* z, + vtkRenderWindow* x, + vtkRenderWindow* y, + vtkRenderWindow* z, vtkRenderWindow* w ) { @@ -215,28 +166,24 @@ PushActorsInto( this->Slices[ 1 ][ 1 ]->PushActorsInto( w, false ); this->Slices[ 1 ][ 2 ]->PushActorsInto( w, false ); - /* - - this->Slices[ 0 ][ 0 ]->PushActorsInto( y, false ); - this->Slices[ 0 ][ 0 ]->PushActorsInto( z, false ); - - this->Slices[ 0 ][ 1 ]->PushActorsInto( x, false ); - this->Slices[ 0 ][ 1 ]->PushActorsInto( z, false ); - - this->Slices[ 0 ][ 2 ]->PushActorsInto( x, false ); - this->Slices[ 0 ][ 2 ]->PushActorsInto( y, false ); - vtkRenderer* wren = ( w != NULL )? w->GetRenderers( )->GetFirstRenderer( ): NULL; if( wren != NULL ) - wren->AddActor( this->ImageOutlineActor ); - */ + { + wren->AddViewProp( this->ImageOutlineActor ); + wren->AddViewProp( this->Slices[ 1 ][ 0 ]->GetPlaneActor( ) ); + wren->AddViewProp( this->Slices[ 1 ][ 1 ]->GetPlaneActor( ) ); + wren->AddViewProp( this->Slices[ 1 ][ 2 ]->GetPlaneActor( ) ); + + } // fi } // ------------------------------------------------------------------------- void cpExtensions::Visualization::MPRActors:: PopActorsFrom( - vtkRenderWindow* x, vtkRenderWindow* y, vtkRenderWindow* z, + vtkRenderWindow* x, + vtkRenderWindow* y, + vtkRenderWindow* z, vtkRenderWindow* w ) { @@ -250,27 +197,41 @@ PopActorsFrom( vtkRenderer* wren = ( w != NULL )? w->GetRenderers( )->GetFirstRenderer( ): NULL; if( wren != NULL ) - wren->RemoveActor( this->ImageOutlineActor ); + { + wren->RemoveViewProp( this->ImageOutlineActor ); + wren->RemoveViewProp( this->Slices[ 1 ][ 0 ]->GetPlaneActor( ) ); + wren->RemoveViewProp( this->Slices[ 1 ][ 1 ]->GetPlaneActor( ) ); + wren->RemoveViewProp( this->Slices[ 1 ][ 2 ]->GetPlaneActor( ) ); - this->Slices[ 0 ][ 0 ]->Clear( ); - this->Slices[ 0 ][ 1 ]->Clear( ); - this->Slices[ 0 ][ 2 ]->Clear( ); - this->Slices[ 1 ][ 0 ]->Clear( ); - this->Slices[ 1 ][ 1 ]->Clear( ); - this->Slices[ 1 ][ 2 ]->Clear( ); + } // fi } // ------------------------------------------------------------------------- -void cpExtensions::Visualization::MPRActors:: -SetLookupTableAsColor( unsigned int i, double r, double g, double b ) +double cpExtensions::Visualization::MPRActors:: +GetMinWindow( ) const +{ + return( this->Slices[ 0 ][ 0 ]->GetMinWindow( ) ); +} + +// ------------------------------------------------------------------------- +double cpExtensions::Visualization::MPRActors:: +GetMaxWindow( ) const { - this->Slices[ 0 ][ 0 ]->SetLookupTableAsColor( 0, r, g, b ); - this->Slices[ 0 ][ 1 ]->Modified( ); - this->Slices[ 0 ][ 2 ]->Modified( ); - this->Slices[ 1 ][ 0 ]->Modified( ); - this->Slices[ 1 ][ 1 ]->Modified( ); - this->Slices[ 1 ][ 2 ]->Modified( ); - this->Modified( ); + return( this->Slices[ 0 ][ 0 ]->GetMaxWindow( ) ); +} + +// ------------------------------------------------------------------------- +double cpExtensions::Visualization::MPRActors:: +GetMinLevel( ) const +{ + return( this->Slices[ 0 ][ 0 ]->GetMinLevel( ) ); +} + +// ------------------------------------------------------------------------- +double cpExtensions::Visualization::MPRActors:: +GetMaxLevel( ) const +{ + return( this->Slices[ 0 ][ 0 ]->GetMaxLevel( ) ); } // ------------------------------------------------------------------------- @@ -287,78 +248,152 @@ GetLevel( ) return( this->Slices[ 0 ][ 0 ]->GetLevel( ) ); } +// ------------------------------------------------------------------------- +void cpExtensions::Visualization::MPRActors:: +SetWindow( double w ) +{ + this->Slices[ 0 ][ 0 ]->SetWindow( w ); + this->Slices[ 0 ][ 1 ]->SetWindow( w ); + this->Slices[ 0 ][ 2 ]->SetWindow( w ); + this->Slices[ 1 ][ 0 ]->SetWindow( w ); + this->Slices[ 1 ][ 1 ]->SetWindow( w ); + this->Slices[ 1 ][ 2 ]->SetWindow( w ); +} + +// ------------------------------------------------------------------------- +void cpExtensions::Visualization::MPRActors:: +SetLevel( double l ) +{ + this->Slices[ 0 ][ 0 ]->SetLevel( l ); + this->Slices[ 0 ][ 1 ]->SetLevel( l ); + this->Slices[ 0 ][ 2 ]->SetLevel( l ); + this->Slices[ 1 ][ 0 ]->SetLevel( l ); + this->Slices[ 1 ][ 1 ]->SetLevel( l ); + this->Slices[ 1 ][ 2 ]->SetLevel( l ); +} + +// ------------------------------------------------------------------------- +void cpExtensions::Visualization::MPRActors:: +SetWindowLevel( double w, double l ) +{ + this->Slices[ 0 ][ 0 ]->SetWindowLevel( w, l ); + this->Slices[ 0 ][ 1 ]->SetWindowLevel( w, l ); + this->Slices[ 0 ][ 2 ]->SetWindowLevel( w, l ); + this->Slices[ 1 ][ 0 ]->SetWindowLevel( w, l ); + this->Slices[ 1 ][ 1 ]->SetWindowLevel( w, l ); + this->Slices[ 1 ][ 2 ]->SetWindowLevel( w, l ); +} + +// ------------------------------------------------------------------------- +void cpExtensions::Visualization::MPRActors:: +ResetWindowLevel( ) +{ + this->Slices[ 0 ][ 0 ]->ResetWindowLevel( ); + this->Slices[ 0 ][ 1 ]->ResetWindowLevel( ); + this->Slices[ 0 ][ 2 ]->ResetWindowLevel( ); + this->Slices[ 1 ][ 0 ]->ResetWindowLevel( ); + this->Slices[ 1 ][ 1 ]->ResetWindowLevel( ); + this->Slices[ 1 ][ 2 ]->ResetWindowLevel( ); +} + // ------------------------------------------------------------------------- int cpExtensions::Visualization::MPRActors:: -GetSliceNumberMinValue( const int& axis ) const +GetSliceNumber( const int& axis ) const { - return( this->Slices[ 0 ][ axis ]->GetSliceNumberMinValue( ) ); + if( axis < 3 ) + return( this->Slices[ 0 ][ axis ]->GetSliceNumber( ) ); + else + return( -1 ); } // ------------------------------------------------------------------------- int cpExtensions::Visualization::MPRActors:: -GetSliceNumberMaxValue( const int& axis ) const +GetSliceNumberMinValue( const int& axis ) const { - return( this->Slices[ 0 ][ axis ]->GetSliceNumberMaxValue( ) ); + if( axis < 3 ) + return( this->Slices[ 0 ][ axis ]->GetSliceNumberMinValue( ) ); + else + return( -1 ); } // ------------------------------------------------------------------------- int cpExtensions::Visualization::MPRActors:: -GetSlice( const int& axis ) const +GetSliceNumberMaxValue( const int& axis ) const { - return( this->Slices[ 0 ][ axis ]->GetSliceNumber( ) ); + if( axis < 3 ) + return( this->Slices[ 0 ][ axis ]->GetSliceNumberMaxValue( ) ); + else + return( -1 ); } // ------------------------------------------------------------------------- void cpExtensions::Visualization::MPRActors:: -SetSlice( const int& axis, const int& slice ) +SetSliceNumber( const int& axis, const int& slice ) { - vtkImageData* image = this->Slices[ 0 ][ 0 ]->GetInputImage( 0 ); - if( image == NULL ) - return; + if( axis < 3 ) + { + this->Slices[ 0 ][ axis ]->SetSliceNumber( slice ); + this->Slices[ 1 ][ axis ]->SetSliceNumber( slice ); - // Get image data extent - int ext[ 6 ]; - image->GetExtent( ext ); + } // fi +} + +// ------------------------------------------------------------------------- +void cpExtensions::Visualization::MPRActors:: +SetSlice( const int& axis, double* pos ) +{ + if( axis < 3 ) + { + this->Slices[ 0 ][ axis ]->SetSlice( pos ); + this->Slices[ 1 ][ axis ]->SetSlice( pos ); - // Check if the slice is valid - int real = slice; - if( slice < ext[ axis << 1 ] ) - real = ext[ axis << 1 ]; - if( ext[ ( axis << 1 ) + 1 ] < slice ) - real = ext[ ( axis << 1 ) + 1 ]; + } // fi +} - // Change slice - this->Slices[ 0 ][ axis ]->SetSliceNumber( real ); - this->Slices[ 1 ][ axis ]->SetSliceNumber( real ); - this->Modified( ); +// ------------------------------------------------------------------------- +void cpExtensions::Visualization::MPRActors:: +SetAxesCursor( const int& axis, double* pos ) +{ + if( axis < 3 ) + this->Slices[ 0 ][ axis ]->SetAxesCursor( pos ); } // ------------------------------------------------------------------------- void cpExtensions::Visualization::MPRActors:: -SetSlice( const int& axis, const double& slice ) +Render( const int& axis ) { - vtkImageData* image = this->Slices[ 0 ][ 0 ]->GetInputImage( 0 ); - if( image == NULL ) - return; + if( axis < 3 ) + { + this->Slices[ 0 ][ axis ]->Render( ); + this->Slices[ 1 ][ axis ]->Render( ); - double x[ 3 ] = { double( 0 ) }; - double pcoords[ 3 ]; - int ijk[ 3 ]; + } // fi +} - x[ axis ] = slice; - image->ComputeStructuredCoordinates( x, ijk, pcoords ); - this->SetSlice( axis, ijk[ axis ] ); +// ------------------------------------------------------------------------- +void cpExtensions::Visualization::MPRActors:: +Render( ) +{ + this->Render( 0 ); + this->Render( 1 ); + this->Render( 2 ); } // ------------------------------------------------------------------------- void cpExtensions::Visualization::MPRActors:: -ResetSlices( ) +ResetCamera( const int& axis ) { - for( unsigned int i = 0; i < 2; ++i ) - for( unsigned int j = 0; j < 3; ++j ) - this->Slices[ i ][ j ]->SetSliceNumber( - this->Slices[ i ][ j ]->GetSliceNumberMinValue( ) - ); + if( axis < 3 ) + this->Slices[ 0 ][ axis ]->ResetCamera( ); +} + +// ------------------------------------------------------------------------- +void cpExtensions::Visualization::MPRActors:: +ResetCameras( ) +{ + this->ResetCamera( 0 ); + this->ResetCamera( 1 ); + this->ResetCamera( 2 ); } // ------------------------------------------------------------------------- @@ -383,7 +418,7 @@ MPRActors( ) this->Slices[ 0 ][ i ]->AddWindowLevelCommand( Self::_WindowLevelCommand, this ); - // this->Slices[ 0 ][ i ]->AddSlicesCommand( Self::_SlicesCommand, this ); + this->Slices[ 0 ][ i ]->AddSlicesCommand( Self::_SlicesCommand, this ); } // rof } @@ -394,19 +429,51 @@ cpExtensions::Visualization::MPRActors:: { } +// ------------------------------------------------------------------------- +void cpExtensions::Visualization::MPRActors:: +_CreateBoundingBox( ) +{ + vtkImageData* image = + dynamic_cast< vtkImageData* >( this->Slices[ 0 ][ 0 ]->GetInputImage( ) ); + if( image == NULL ) + return; + + // Create 3D outline + double bb[ 6 ]; + image->GetBounds( bb ); + + vtkSmartPointer< vtkOutlineSource > img_ol = + vtkSmartPointer< vtkOutlineSource >::New( ); + img_ol->SetBounds( bb ); + + vtkSmartPointer< vtkPolyDataMapper > img_ol_mapper = + vtkSmartPointer< vtkPolyDataMapper >::New( ); + img_ol_mapper->SetInputConnection( img_ol->GetOutputPort( ) ); + this->ImageOutlineActor->SetMapper( img_ol_mapper ); + this->ImageOutlineActor->GetProperty( )->SetColor( 1, 1, 1 ); + this->ImageOutlineActor->GetProperty( )->SetLineWidth( 1 ); + + this->AddItem( this->ImageOutlineActor ); +} + // ------------------------------------------------------------------------- void cpExtensions::Visualization::MPRActors:: _SlicesCommand( double* pos, int axis, void* data ) { - /* - MPRActors* actors = reinterpret_cast< MPRActors* >( data ); - if( actors == NULL ) + MPRActors* actors = reinterpret_cast< MPRActors* >( data ); + if( actors == NULL ) return; - for( unsigned int j = 0; j < 3; ++j ) + for( unsigned int j = 0; j < 3; ++j ) + { if( actors->Slices[ 0 ][ j ]->GetAxis( ) != axis ) - actors->Slices[ 0 ][ j ]->SetSlice( pos ); - actors->Modified( ); - */ + { + actors->SetSlice( j, pos ); + actors->SetAxesCursor( j, pos ); + actors->Render( j ); + + } // fi + + } // rof } // ------------------------------------------------------------------------- @@ -416,12 +483,8 @@ _WindowLevelCommand( double window, double level, void* data ) MPRActors* actors = reinterpret_cast< MPRActors* >( data ); if( actors == NULL ) return; - actors->Slices[ 0 ][ 0 ]->Render( ); - actors->Slices[ 0 ][ 1 ]->Render( ); - actors->Slices[ 0 ][ 2 ]->Render( ); - actors->Slices[ 1 ][ 0 ]->Render( ); - actors->Slices[ 1 ][ 1 ]->Render( ); - actors->Slices[ 1 ][ 2 ]->Render( ); + actors->SetWindowLevel( window, level ); + actors->Render( ); } // ------------------------------------------------------------------------- @@ -431,12 +494,7 @@ _RenderCommand( void* data ) MPRActors* actors = reinterpret_cast< MPRActors* >( data ); if( actors == NULL ) return; - actors->Slices[ 0 ][ 0 ]->Render( ); - actors->Slices[ 0 ][ 1 ]->Render( ); - actors->Slices[ 0 ][ 2 ]->Render( ); - actors->Slices[ 1 ][ 0 ]->Render( ); - actors->Slices[ 1 ][ 1 ]->Render( ); - actors->Slices[ 1 ][ 2 ]->Render( ); + actors->Render( ); } // eof - $RCSfile$