X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=appli%2FInteractiveDeformableMeshSegmentation%2FVolumeActors.cxx;fp=appli%2FInteractiveDeformableMeshSegmentation%2FVolumeActors.cxx;h=0000000000000000000000000000000000000000;hb=93ddd2fe04d05b28dff31448032fd3af93ffe750;hp=b48cd9b9aab42aeea1c88bf5ef329a02669fdd74;hpb=6d6bf5d5e3b9318a507216f2f231c32299d1a941;p=cpMesh.git diff --git a/appli/InteractiveDeformableMeshSegmentation/VolumeActors.cxx b/appli/InteractiveDeformableMeshSegmentation/VolumeActors.cxx deleted file mode 100644 index b48cd9b..0000000 --- a/appli/InteractiveDeformableMeshSegmentation/VolumeActors.cxx +++ /dev/null @@ -1,757 +0,0 @@ -#include "VolumeActors.h" - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - - -// ------------------------------------------------------------------------- -idms::VolumeActors::SliceActor:: -SliceActor( ) -{ - this->SliceMapper = vtkSmartPointer< vtkImageSliceMapper >::New( ); - this->PlaneSource = vtkSmartPointer< vtkPlaneSource >::New( ); - this->PlaneMapper = vtkSmartPointer< vtkPolyDataMapper >::New( ); - this->PlaneActor = vtkSmartPointer< vtkActor >::New( ); - this->ImageActor = vtkSmartPointer< vtkImageActor >::New( ); - this->TextActor = vtkSmartPointer< vtkTextActor >::New( ); - this->RegionCutterPlane = vtkSmartPointer< vtkPlane >::New( ); - - this->PlaneSource->SetXResolution( 1 ); - this->PlaneSource->SetYResolution( 1 ); - this->PlaneMapper-> - SetInputConnection( this->PlaneSource->GetOutputPort( ) ); - this->PlaneActor->SetMapper( this->PlaneMapper ); - - this->TextActor->SetTextScaleModeToNone( ); - vtkTextProperty* textprop = this->TextActor->GetTextProperty( ); - textprop->SetColor( 1, 1, 1 ); - textprop->SetFontFamilyToCourier( ); - textprop->SetFontSize( 18 ); - textprop->BoldOff( ); - textprop->ItalicOff( ); - textprop->ShadowOff( ); - textprop->SetJustificationToLeft( ); - textprop->SetVerticalJustificationToBottom( ); - vtkCoordinate* coord = this->TextActor->GetPositionCoordinate( ); - coord->SetCoordinateSystemToNormalizedViewport( ); - coord->SetValue( 0.01, 0.01 ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors::SliceActor:: -Configure( vtkAlgorithmOutput* aout, int axis ) -{ - this->SliceMapper->SetInputConnection( aout ); - this->SliceMapper->SetOrientation( axis ); - this->ImageActor->SetMapper( this->SliceMapper ); - this->ImageActor->Modified( ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors::SliceActor:: -ConfigureRegion( vtkAlgorithmOutput* aout ) -{ - this->RegionCutter = vtkSmartPointer< vtkCutter >::New( ); - this->RegionCutterMapper = vtkSmartPointer< vtkPolyDataMapper >::New( ); - this->RegionCutterActor = vtkSmartPointer< vtkActor >::New( ); - - this->RegionCutter->SetInputConnection( aout ); - this->RegionCutter->SetCutFunction( this->RegionCutterPlane ); - this->RegionCutterMapper-> - SetInputConnection( this->RegionCutter->GetOutputPort( ) ); - this->RegionCutterActor->SetMapper( this->RegionCutterMapper ); - this->RegionCutterActor->GetProperty( )->SetColor( 0, 0, 1 ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors::SliceActor:: -SetSegmentation( vtkAlgorithmOutput* aout ) -{ - this->SegmentationSliceMapper = - vtkSmartPointer< vtkImageSliceMapper >::New( ); - this->SegmentationSliceMapper->SetInputConnection( aout ); - this->SegmentationSliceMapper-> - SetOrientation( this->SliceMapper->GetOrientation( ) ); - this->SegmentationSliceMapper-> - SetSliceNumber( this->SliceMapper->GetSliceNumber( ) ); - - this->SegmentationActor = vtkSmartPointer< vtkImageActor >::New( ); - this->SegmentationActor->SetMapper( this->SegmentationSliceMapper ); - this->SegmentationActor->Modified( ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors::SliceActor:: -SetSliceNumber( const int& slice ) -{ - this->SliceMapper->SetSliceNumber( slice ); - this->SliceMapper->Update( ); - if( this->SegmentationSliceMapper.GetPointer( ) != NULL ) - { - this->SegmentationSliceMapper->SetSliceNumber( slice ); - this->SegmentationSliceMapper->Update( ); - - } // fi - - // Compute plane - vtkAlgorithm* algo = this->SliceMapper->GetInputAlgorithm( ); - vtkInformation* info = algo->GetOutputInformation( 0 ); - int ext[ 6 ]; - double ori[ 3 ], spac[ 3 ], pos[ 3 ]; - info->Get( vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT( ), ext ); - info->Get( vtkDataObject::ORIGIN( ), ori ); - info->Get( vtkDataObject::SPACING( ), spac ); - this->SliceMapper->GetSlicePlane( )->GetOrigin( pos ); - - // Prevent obscuring voxels by offsetting the plane geometry - double xbnds[ ] = - { - ori[ 0 ] + ( spac[ 0 ] * double( ext[ 0 ] ) ), - ori[ 0 ] + ( spac[ 0 ] * double( ext[ 1 ] ) ) - }; - double ybnds[ ] = - { - ori[ 1 ] + ( spac[ 1 ] * double( ext[ 2 ] ) ), - ori[ 1 ] + ( spac[ 1 ] * double( ext[ 3 ] ) ) - }; - double zbnds[ ] = - { - ori[ 2 ] + ( spac[ 2 ] * double( ext[ 4 ] ) ), - ori[ 2 ] + ( spac[ 2 ] * double( ext[ 5 ] ) ) - }; - - if( spac[ 0 ] < double( 0 ) ) - { - double t = xbnds[ 0 ]; - xbnds[ 0 ] = xbnds[ 1 ]; - xbnds[ 1 ] = t; - - } // fi - if( spac[ 1 ] < double( 0 ) ) - { - double t = ybnds[ 0 ]; - ybnds[ 0 ] = ybnds[ 1 ]; - ybnds[ 1 ] = t; - - } // fi - if( spac[ 2 ] < double( 0 ) ) - { - double t = zbnds[ 0 ]; - zbnds[ 0 ] = zbnds[ 1 ]; - zbnds[ 1 ] = t; - - } // fi - - int axis = this->SliceMapper->GetOrientation( ); - this->PlaneActor->GetProperty( )->SetRepresentationToWireframe( ); - this->PlaneActor->GetProperty( )->SetLineWidth( 2 ); - if( axis == 0 ) // YZ, x-normal - { - this->PlaneSource->SetOrigin( pos[ 0 ], ybnds[ 0 ], zbnds[ 0 ]); - this->PlaneSource->SetPoint1( pos[ 0 ], ybnds[ 1 ], zbnds[ 0 ] ); - this->PlaneSource->SetPoint2( pos[ 0 ], ybnds[ 0 ], zbnds[ 1 ] ); - this->PlaneActor->GetProperty( )->SetColor( 1, 0, 0 ); - - this->RegionCutterPlane->SetOrigin( pos[ 0 ], ybnds[ 0 ], zbnds[ 0 ]); - this->RegionCutterPlane->SetNormal( 1, 0, 0 ); - } - else if( axis == 1 ) // ZX, y-normal - { - this->PlaneSource->SetOrigin( xbnds[ 0 ], pos[ 1 ], zbnds[ 0 ] ); - this->PlaneSource->SetPoint1( xbnds[ 0 ], pos[ 1 ], zbnds[ 1 ] ); - this->PlaneSource->SetPoint2( xbnds[ 1 ], pos[ 1 ], zbnds[ 0 ] ); - this->PlaneActor->GetProperty( )->SetColor( 0, 1, 0 ); - - this->RegionCutterPlane->SetOrigin( xbnds[ 0 ], pos[ 1 ], zbnds[ 0 ] ); - this->RegionCutterPlane->SetNormal( 0, 1, 0 ); - } - else // XY, z-normal - { - this->PlaneSource->SetOrigin( xbnds[ 0 ], ybnds[ 0 ], pos[ 2 ] ); - this->PlaneSource->SetPoint1( xbnds[ 1 ], ybnds[ 0 ], pos[ 2 ] ); - this->PlaneSource->SetPoint2( xbnds[ 0 ], ybnds[ 1 ], pos[ 2 ] ); - this->PlaneActor->GetProperty( )->SetColor( 0, 0, 1 ); - - this->RegionCutterPlane->SetOrigin( xbnds[ 0 ], ybnds[ 0 ], pos[ 2 ] ); - this->RegionCutterPlane->SetNormal( 0, 0, 1 ); - - } // fi - - this->RegionCutter->Modified( ); - this->RegionCutterMapper->Modified( ); - this->RegionCutterActor->Modified( ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors::SliceActor:: -UpdateText( const double& w, const double& l ) -{ - char axis; - if ( this->SliceMapper->GetOrientation( ) == 0 ) axis = 'X'; - else if( this->SliceMapper->GetOrientation( ) == 1 ) axis = 'Y'; - else if( this->SliceMapper->GetOrientation( ) == 2 ) axis = 'Z'; - - std::sprintf( - this->TextBuffer, "Axis: %c (%d)\nWin/Lev: %.2f/%.2f", - axis, this->SliceMapper->GetSliceNumber( ), w, l - ); - this->TextActor->SetInput( this->TextBuffer ); - this->TextActor->Modified( ); -} - -// ------------------------------------------------------------------------- -idms::VolumeActors* idms::VolumeActors:: -New( ) -{ - return( new Self( ) ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -Configure( - vtkImageData* image, - vtkRenderWindowInteractor* xi, - vtkRenderWindowInteractor* yi, - vtkRenderWindowInteractor* zi - ) -{ - if( image == NULL || xi == NULL || yi == NULL || zi == NULL ) - vtkErrorMacro( "At least one object is \"NULL\"" ); - - this->Image = image; - this->Interactors[ 0 ] = xi; - this->Interactors[ 1 ] = yi; - this->Interactors[ 2 ] = zi; - - this->ImageToWindowLevel->SetInputData( this->Image ); - this->ResetWindowLevel( ); - this->ImageToWindowLevel->Update( ); - - // Create 3D outline - this->ImageOutlineSource = - vtkSmartPointer< vtkOutlineSource >::New( ); - vtkSmartPointer< vtkPolyDataMapper > img_ol_mapper = - vtkSmartPointer< vtkPolyDataMapper >::New( ); - this->ImageOutlineSource->SetBounds( this->Image->GetBounds( ) ); - img_ol_mapper->SetInputConnection( - this->ImageOutlineSource->GetOutputPort( ) - ); - this->ImageOutlineIndex = this->GetNumberOfItems( ); - vtkSmartPointer< vtkActor > img_ol_actor = - vtkSmartPointer< vtkActor >::New( ); - img_ol_actor->SetMapper( img_ol_mapper ); - img_ol_actor->GetProperty( )->SetColor( 1, 1, 1 ); - img_ol_actor->GetProperty( )->SetLineWidth( 1 ); - this->AddItem( img_ol_actor ); - - // Cursor radius - double spac[ 3 ]; - image->GetSpacing( spac ); - double radius = spac[ 0 ]; - radius = ( spac[ 1 ] < radius )? spac[ 1 ]: radius; - radius = ( spac[ 2 ] < radius )? spac[ 2 ]: radius; - radius *= double( 6 ); - this->Cursor->SetRadius( radius ); - this->CursorMapper->Modified( ); - this->CursorActor->Modified( ); - - // Plane actors - for( int a = 0; a < 3; ++a ) - { - // Configure actors - this->Planes[ a ].Configure( this->ImageToWindowLevel->GetOutputPort( ), a ); - this->Planes[ a ].ConfigureRegion( this->Region->GetOutputPort( ) ); - this->Planes[ a ].UpdateText( this->GetWindow( ), this->GetLevel( ) ); - - // Add them to renderer - vtkRenderer* ren = this->Interactors[ a ]->GetRenderWindow( )-> - GetRenderers( )->GetFirstRenderer( ); - if( ren == NULL ) - vtkErrorMacro( "At least one interactor doesn't have a valid renderer" ); - ren->AddActor( this->Planes[ a ].ImageActor ); - ren->AddActor( this->Planes[ a ].TextActor ); - - for( int i = 0; i < 3; ++i ) - this->Interactors[ a ]->GetRenderWindow( )-> - GetRenderers( )->GetFirstRenderer( )-> - AddActor( this->Planes[ i ].PlaneActor ); - - } // rof - - // Keep track into collection -/* - this->XPlaneIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 0 ].ImageActor.GetPointer( ) ); - this->XTextIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 0 ].TextActor.GetPointer( ) ); - this->XBoundsIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 0 ].PlaneActor.GetPointer( ) ); - - this->YPlaneIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 1 ].ImageActor.GetPointer( ) ); - this->YTextIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 1 ].TextActor.GetPointer( ) ); - this->YBoundsIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 1 ].PlaneActor.GetPointer( ) ); - - this->ZPlaneIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 2 ].ImageActor.GetPointer( ) ); - this->ZTextIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 2 ].TextActor.GetPointer( ) ); - this->ZBoundsIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 2 ].PlaneActor.GetPointer( ) ); -*/ - // Initialize slice visualization - this->ResetSlices( ); - - /* - #error CONTOUR_WIDGET <- ACA VOY - static vtkSmartPointer contourRep = - vtkSmartPointer::New(); - static vtkSmartPointer contourWidget = - vtkSmartPointer::New(); - contourWidget->SetInteractor( zi ); - contourWidget->SetRepresentation( contourRep ); - contourWidget->On( ); - */ - - - - - - - - - -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -SetSegmentation( vtkImageData* segmentation ) -{ - double range[ 2 ]; - this->Segmentation = segmentation; - this->Segmentation->GetScalarRange( range ); - - vtkSmartPointer< vtkLookupTable > lut = - vtkSmartPointer< vtkLookupTable >::New( ); - lut->SetNumberOfTableValues( 2 ); - lut->SetTableRange( range ); - lut->SetTableValue( 0, 0, 0, 0, 0 ); - lut->SetTableValue( 1, 1, 0, 0, 0.4 ); - - this->SegmentationToColors->SetInputData( this->Segmentation ); - this->SegmentationToColors->SetLookupTable( lut ); - this->SegmentationToColors->Update( ); - - for( unsigned int a = 0; a < 3; ++a ) - { - this->Planes[ a ].SetSegmentation( - this->SegmentationToColors->GetOutputPort( ) - ); - vtkRenderer* ren = this->Interactors[ a ]->GetRenderWindow( )-> - GetRenderers( )->GetFirstRenderer( ); - ren->AddActor( this->Planes[ a ].SegmentationActor ); - - } // rof - this->Render( ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -AddAuxiliaryInteractor( vtkRenderWindowInteractor* i ) -{ - if( i != NULL ) - { - this->AuxiliaryInteractors.insert( i ); - this->Modified( ); - - } // fi -} - -// ------------------------------------------------------------------------- -double idms::VolumeActors:: -GetMinWindow( ) const -{ - return( double( 0.01 ) ); -} - -// ------------------------------------------------------------------------- -double idms::VolumeActors:: -GetMaxWindow( ) const -{ - if( this->Image == NULL ) - return( double( 0 ) ); - - double range[ 2 ]; - this->Image->GetScalarRange( range ); - return( range[ 1 ] - range[ 0 ] ); -} - -// ------------------------------------------------------------------------- -double idms::VolumeActors:: -GetMinLevel( ) const -{ - if( this->Image == NULL ) - return( double( 0 ) ); - - double range[ 2 ]; - this->Image->GetScalarRange( range ); - return( range[ 0 ] ); -} - -// ------------------------------------------------------------------------- -double idms::VolumeActors:: -GetMaxLevel( ) const -{ - if( this->Image == NULL ) - return( double( 0 ) ); - - double range[ 2 ]; - this->Image->GetScalarRange( range ); - return( range[ 1 ] ); -} - -// ------------------------------------------------------------------------- -double idms::VolumeActors:: -GetWindow( ) const -{ - return( this->ImageToWindowLevel->GetWindow( ) ); -} - -// ------------------------------------------------------------------------- -double idms::VolumeActors:: -GetLevel( ) const -{ - return( this->ImageToWindowLevel->GetLevel( ) ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -SetWindow( const double& w ) -{ - this->ImageToWindowLevel->SetWindow( w ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -SetLevel( const double& l ) -{ - this->ImageToWindowLevel->SetLevel( l ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -SetWindowLevel( const double& w, const double& l ) -{ - this->ImageToWindowLevel->SetWindow( w ); - this->ImageToWindowLevel->SetLevel( l ); - for( int a = 0; a < 3; ++a ) - this->Planes[ a ].UpdateText( w, l ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -ResetWindowLevel( ) -{ - double range[ 2 ]; - this->Image->GetScalarRange( range ); - this->SetWindowLevel( - range[ 1 ] - range[ 0 ], - ( ( range[ 1 ] + range[ 0 ] ) / double( 2 ) ) + range[ 0 ] - ); -} - -// ------------------------------------------------------------------------- -vtkPlane* idms::VolumeActors:: -GetSlicePlane( const int& axis ) const -{ - return( this->Planes[ axis ].SliceMapper->GetSlicePlane( ) ); -} - -// ------------------------------------------------------------------------- -int idms::VolumeActors:: -GetSliceNumberMinValue( const int& axis ) const -{ - return( this->Planes[ axis ].SliceMapper->GetSliceNumberMinValue( ) ); -} - -// ------------------------------------------------------------------------- -int idms::VolumeActors:: -GetSliceNumberMaxValue( const int& axis ) const -{ - return( this->Planes[ axis ].SliceMapper->GetSliceNumberMaxValue( ) ); -} - -// ------------------------------------------------------------------------- -int idms::VolumeActors:: -GetSlice( const int& axis ) const -{ - return( this->Planes[ axis ].SliceMapper->GetSliceNumber( ) ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -SetSlice( const int& axis, const int& slice ) -{ - this->Planes[ axis ].SetSliceNumber( slice ); - this->Planes[ axis ].UpdateText( this->GetWindow( ), this->GetLevel( ) ); - this->RenderAuxiliaryInteractors( ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -SetSlice( const int& axis, const double& slice ) -{ - vtkAlgorithm* algo = - this->Planes[ axis ].SliceMapper->GetInputAlgorithm( ); - vtkInformation* info = algo->GetOutputInformation( 0 ); - int ext[ 6 ]; - double ori[ 3 ], spac[ 3 ]; - info->Get( vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT( ), ext ); - info->Get( vtkDataObject::ORIGIN( ), ori ); - info->Get( vtkDataObject::SPACING( ), spac ); - this->SetSlice( - axis, - int( ( slice - ori[ axis ] ) / spac[ axis ] ) + ext[ axis << 1 ] - ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -ResetSlices( ) -{ - for( int a = 0; a < 3; ++a ) - this->SetSlice( a, this->GetSliceNumberMinValue( a ) ); - this->Render( ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -AddSeed( int idx[ 3 ] ) -{ - this->Seeds.push_back( std::vector< int >( idx, idx + 3 ) ); - this->Modified( ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -AddSeed( double pos[ 3 ] ) -{ - /* TODO - this->Seeds.push_back( std::vector< double >( pos, pos + 3 ) ); - this->Modified( ); - */ -} - -// ------------------------------------------------------------------------- -unsigned int idms::VolumeActors:: -GetNumberOfSeeds( ) const -{ - return( this->Seeds.size( ) ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -GetSeed( unsigned int i, int idx[ 3 ] ) const -{ - if( i < this->Seeds.size( ) ) - { - idx[ 0 ] = this->Seeds[ i ][ 0 ]; - idx[ 1 ] = this->Seeds[ i ][ 1 ]; - idx[ 2 ] = this->Seeds[ i ][ 2 ]; - - } // fi -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -SetCursorPosition( double pos[ 3 ] ) -{ - this->Cursor->SetCenter( pos ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -ShowRegion( int a ) -{ - vtkRenderer* ren = this->Interactors[ a ]->GetRenderWindow( )-> - GetRenderers( )->GetFirstRenderer( ); - ren->AddActor( this->Planes[ a ].RegionCutterActor ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -HideRegion( int a ) -{ - vtkRenderer* ren = this->Interactors[ a ]->GetRenderWindow( )-> - GetRenderers( )->GetFirstRenderer( ); - ren->RemoveActor( this->Planes[ a ].RegionCutterActor ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -SetRegionPosition( double pos[ 3 ] ) -{ - this->Region->SetCenter( pos ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -SetRegionRadius( double pos[ 3 ] ) -{ - double rpos[ 3 ]; - - this->Region->GetCenter( rpos ); - double x = pos[ 0 ] - rpos[ 0 ]; - double y = pos[ 1 ] - rpos[ 1 ]; - double z = pos[ 2 ] - rpos[ 2 ]; - double d = ( x * x ) + ( y * y ) + ( z * z ); - if( double( 0 ) < d ) - d = std::sqrt( d ); - else - d = double( 0 ); - this->Region->SetRadius( d ); - this->Planes[ 0 ].RegionCutter->Modified( ); - this->Planes[ 1 ].RegionCutter->Modified( ); - this->Planes[ 2 ].RegionCutter->Modified( ); - this->Planes[ 0 ].RegionCutterMapper->Modified( ); - this->Planes[ 1 ].RegionCutterMapper->Modified( ); - this->Planes[ 2 ].RegionCutterMapper->Modified( ); - this->Planes[ 0 ].RegionCutterActor->Modified( ); - this->Planes[ 1 ].RegionCutterActor->Modified( ); - this->Planes[ 2 ].RegionCutterActor->Modified( ); - this->Render( ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -GetImageBounds( double bounds[ 6 ] ) const -{ - if( this->Image != NULL ) - this->Image->GetBounds( bounds ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -Render( ) -{ - for( int a = 0; a < 3; ++a ) - if( this->Interactors[ a ] != NULL ) - this->Interactors[ a ]->Render( ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -RenderAuxiliaryInteractors( ) -{ - for( - TInteractors::iterator iIt = this->AuxiliaryInteractors.begin( ); - iIt != this->AuxiliaryInteractors.end( ); - ++iIt - ) - ( *iIt )->Render( ); -} - -// ------------------------------------------------------------------------- -void idms::VolumeActors:: -ResetCameras( ) -{ - double b[ 6 ]; - this->GetImageBounds( b ); - for( int a = 0; a < 3; ++a ) - { - if( this->Interactors[ a ] == NULL ) - continue; - vtkRenderer* ren = this->Interactors[ a ]->GetRenderWindow( )-> - GetRenderers( )->GetFirstRenderer( ); - if( ren != NULL ) ren->ResetCamera( b ); - - } // rof -} - -// ------------------------------------------------------------------------- -idms::VolumeActors:: -VolumeActors( ) - : Superclass( ), - Image( NULL ), - Segmentation( NULL ) -{ - for( int a = 0; a < 3; ++a ) - this->Interactors[ a ] = NULL; - - this->ImageToWindowLevel = - vtkSmartPointer< vtkImageMapToWindowLevelColors >::New( ); - this->ImageToWindowLevel->SetOutputFormatToLuminance( ); - this->SegmentationToColors = - vtkSmartPointer< vtkImageMapToColors >::New( ); - - this->Cursor = vtkSmartPointer< vtkSphereSource >::New( ); - this->CursorMapper = vtkSmartPointer< vtkPolyDataMapper >::New( ); - this->CursorActor = vtkSmartPointer< vtkActor >::New( ); - - this->Cursor->SetPhiResolution( 36 ); - this->Cursor->SetThetaResolution( 36 ); - this->CursorMapper->SetInputConnection( this->Cursor->GetOutputPort( ) ); - this->CursorActor->SetMapper( this->CursorMapper ); - this->CursorActor->GetProperty( )->SetColor( 1, 1, 0 ); - this->CursorIndex = this->GetNumberOfItems( ); - this->AddItem( this->CursorActor ); - - this->Region = vtkSmartPointer< vtkSphereSource >::New( ); - this->RegionMapper = vtkSmartPointer< vtkPolyDataMapper >::New( ); - this->RegionActor = vtkSmartPointer< vtkActor >::New( ); - - this->Region->SetPhiResolution( 36 ); - this->Region->SetThetaResolution( 36 ); - this->RegionMapper->SetInputConnection( this->Region->GetOutputPort( ) ); - this->RegionActor->SetMapper( this->RegionMapper ); - this->RegionActor->GetProperty( )->SetColor( 0, 0, 1 ); - this->RegionActor->GetProperty( )->SetOpacity( 0 ); - this->RegionIndex = this->GetNumberOfItems( ); - this->AddItem( this->RegionActor ); - - this->XPlaneIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 0 ].ImageActor.GetPointer( ) ); - this->XTextIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 0 ].TextActor.GetPointer( ) ); - this->XBoundsIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 0 ].PlaneActor.GetPointer( ) ); - - this->YPlaneIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 1 ].ImageActor.GetPointer( ) ); - this->YTextIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 1 ].TextActor.GetPointer( ) ); - this->YBoundsIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 1 ].PlaneActor.GetPointer( ) ); - - this->ZPlaneIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 2 ].ImageActor.GetPointer( ) ); - this->ZTextIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 2 ].TextActor.GetPointer( ) ); - this->ZBoundsIndex = this->GetNumberOfItems( ); - this->AddItem( this->Planes[ 2 ].PlaneActor.GetPointer( ) ); -} - -// ------------------------------------------------------------------------- -idms::VolumeActors:: -~VolumeActors( ) -{ -} - -// eof - $RCSfile$