}
// -------------------------------------------------------------------------
-int cpExtensions::Visualization::MPRActors::
-AddInputConnection( vtkAlgorithmOutput* aout )
+void cpExtensions::Visualization::MPRActors::
+SetInputConnection( vtkAlgorithmOutput* aout )
{
- for( unsigned int i = 0; i < 2; ++i )
+ for( int i = 0; i < 2; ++i )
{
- for( unsigned int j = 0; j < 3; ++j )
+ for( int j = 0; j < 3; ++j )
{
- this->Slices[ i ][ j ]->AddInputConnection( aout );
+ this->Slices[ i ][ j ]->SetInputConnection( aout );
this->Slices[ i ][ j ]->SetAxis( j );
} // rof
} // rof
this->_CreateBoundingBox( );
- return( 0 );
}
// -------------------------------------------------------------------------
-int cpExtensions::Visualization::MPRActors::
-AddInputData( vtkImageData* new_image )
+void cpExtensions::Visualization::MPRActors::
+SetInputImage( vtkImageData* data )
{
- for( unsigned int i = 0; i < 2; ++i )
+ for( int i = 0; i < 2; ++i )
{
- for( unsigned int j = 0; j < 3; ++j )
+ for( int j = 0; j < 3; ++j )
{
- this->Slices[ i ][ j ]->AddInputData( new_image );
+ this->Slices[ i ][ j ]->SetInputImage( data );
this->Slices[ i ][ j ]->SetAxis( j );
} // rof
} // rof
this->_CreateBoundingBox( );
- return( 0 );
+}
+
+// -------------------------------------------------------------------------
+int cpExtensions::Visualization::MPRActors::
+AddBinaryConnection(
+ vtkAlgorithmOutput* aout,
+ const double& r, const double& g, const double& b
+ )
+{
+ 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 ) );
+}
+
+// -------------------------------------------------------------------------
+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
{
- /* TODO
- ImageBlender* blender = this->Slices[ 0 ][ 0 ]->GetBlender( );
- if( blender != NULL )
- return( blender->GetNumberOfImages( ) );
- else
- */
- return( 0 );
+ 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
)
{
this->Slices[ 1 ][ 1 ]->PushActorsInto( w, false );
this->Slices[ 1 ][ 2 ]->PushActorsInto( w, false );
- vtkRenderer* xren =
- ( x != NULL )? x->GetRenderers( )->GetFirstRenderer( ): NULL;
- vtkRenderer* yren =
- ( y != NULL )? y->GetRenderers( )->GetFirstRenderer( ): NULL;
- vtkRenderer* zren =
- ( z != NULL )? z->GetRenderers( )->GetFirstRenderer( ): NULL;
vtkRenderer* wren =
( w != NULL )? w->GetRenderers( )->GetFirstRenderer( ): NULL;
-
- /* TODO
- if( xren != NULL )
- {
- xren->AddActor( this->Slices[ 0 ][ 1 ]->GetPlaneActor( ) );
- xren->AddActor( this->Slices[ 0 ][ 2 ]->GetPlaneActor( ) );
-
- } // fi
- if( yren != NULL )
- {
- yren->AddActor( this->Slices[ 0 ][ 0 ]->GetPlaneActor( ) );
- yren->AddActor( this->Slices[ 0 ][ 2 ]->GetPlaneActor( ) );
-
- } // fi
- if( zren != NULL )
- {
- zren->AddActor( this->Slices[ 0 ][ 0 ]->GetPlaneActor( ) );
- zren->AddActor( this->Slices[ 0 ][ 1 ]->GetPlaneActor( ) );
-
- } // fi
- */
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
)
{
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
+}
+
+// -------------------------------------------------------------------------
+double cpExtensions::Visualization::MPRActors::
+GetMinWindow( ) const
+{
+ return( this->Slices[ 0 ][ 0 ]->GetMinWindow( ) );
+}
+
+// -------------------------------------------------------------------------
+double cpExtensions::Visualization::MPRActors::
+GetMaxWindow( ) const
+{
+ 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( ) );
}
// -------------------------------------------------------------------------
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 =
- dynamic_cast< vtkImageData* >( this->Slices[ 0 ][ 0 ]->GetInputImage( ) );
- 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
+}
- // 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 ];
+// -------------------------------------------------------------------------
+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 );
- // Change slice
- this->Slices[ 0 ][ axis ]->SetSliceNumber( real );
- this->Slices[ 1 ][ axis ]->SetSliceNumber( real );
- this->Modified( );
+ } // fi
}
// -------------------------------------------------------------------------
void cpExtensions::Visualization::MPRActors::
-SetSlice( const int& axis, const double& slice )
+SetAxesCursor( const int& axis, double* pos )
{
- vtkImageData* image =
- dynamic_cast< vtkImageData* >( this->Slices[ 0 ][ 0 ]->GetInputImage( ) );
- if( image == NULL )
- return;
+ if( axis < 3 )
+ this->Slices[ 0 ][ axis ]->SetAxesCursor( pos );
+}
- double x[ 3 ] = { double( 0 ) };
- double pcoords[ 3 ];
- int ijk[ 3 ];
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::MPRActors::
+Render( const int& axis )
+{
+ if( axis < 3 )
+ {
+ this->Slices[ 0 ][ axis ]->Render( );
+ this->Slices[ 1 ][ axis ]->Render( );
- x[ axis ] = slice;
- image->ComputeStructuredCoordinates( x, ijk, pcoords );
- this->SetSlice( axis, ijk[ axis ] );
+ } // fi
}
// -------------------------------------------------------------------------
void cpExtensions::Visualization::MPRActors::
-ResetSlices( )
+Render( )
{
- 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( )
- );
+ this->Render( 0 );
+ this->Render( 1 );
+ this->Render( 2 );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::MPRActors::
+ResetCamera( const int& axis )
+{
+ if( axis < 3 )
+ this->Slices[ 0 ][ axis ]->ResetCamera( );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::MPRActors::
+ResetCameras( )
+{
+ this->ResetCamera( 0 );
+ this->ResetCamera( 1 );
+ this->ResetCamera( 2 );
}
// -------------------------------------------------------------------------
{
if( actors->Slices[ 0 ][ j ]->GetAxis( ) != axis )
{
- actors->Slices[ 0 ][ j ]->SetSlice( pos );
- actors->Slices[ 1 ][ j ]->SetSlice( pos );
- actors->Slices[ 0 ][ j ]->Render( 1e-3 );
- actors->Slices[ 1 ][ j ]->Render( 1e-3 );
+ actors->SetSlice( j, pos );
+ actors->SetAxesCursor( j, pos );
+ actors->Render( j );
} // fi
MPRActors* actors = reinterpret_cast< MPRActors* >( data );
if( actors == NULL )
return;
-
- actors->Slices[ 0 ][ 0 ]->SetWindowLevel( window, level );
- actors->Slices[ 0 ][ 1 ]->SetWindowLevel( window, level );
- actors->Slices[ 0 ][ 2 ]->SetWindowLevel( window, level );
- actors->Slices[ 1 ][ 0 ]->SetWindowLevel( window, level );
- actors->Slices[ 1 ][ 1 ]->SetWindowLevel( window, level );
- actors->Slices[ 1 ][ 2 ]->SetWindowLevel( window, level );
-
- actors->Slices[ 0 ][ 0 ]->Render( 1e-3 );
- actors->Slices[ 0 ][ 1 ]->Render( 1e-3 );
- actors->Slices[ 0 ][ 2 ]->Render( 1e-3 );
- actors->Slices[ 1 ][ 0 ]->Render( 1e-3 );
- actors->Slices[ 1 ][ 1 ]->Render( 1e-3 );
- actors->Slices[ 1 ][ 2 ]->Render( 1e-3 );
+ actors->SetWindowLevel( window, level );
+ actors->Render( );
}
// -------------------------------------------------------------------------
MPRActors* actors = reinterpret_cast< MPRActors* >( data );
if( actors == NULL )
return;
- actors->Slices[ 0 ][ 0 ]->Render( 1e-3 );
- actors->Slices[ 0 ][ 1 ]->Render( 1e-3 );
- actors->Slices[ 0 ][ 2 ]->Render( 1e-3 );
- actors->Slices[ 1 ][ 0 ]->Render( 1e-3 );
- actors->Slices[ 1 ][ 1 ]->Render( 1e-3 );
- actors->Slices[ 1 ][ 2 ]->Render( 1e-3 );
+ actors->Render( );
}
// eof - $RCSfile$