this->AddItem( this->m_PlaneActor );
}
+// -------------------------------------------------------------------------
+void cpExtensions::Visualization::ImageSliceActors::
+AssociateSlice( Self* slice )
+{
+ this->m_AssociatedSlices.push_back( slice );
+ this->Modified( );
+}
+
// -------------------------------------------------------------------------
vtkInteractorStyle* cpExtensions::Visualization::ImageSliceActors::
GetStyle( )
return( this->m_Style.GetPointer( ) );
}
+// -------------------------------------------------------------------------
+vtkImageData* cpExtensions::Visualization::ImageSliceActors::
+GetInputImage( unsigned int id )
+{
+ vtkAlgorithmOutput* aout = this->m_ImageMaps[ id ]->GetOutputPort( );
+ vtkImageData* image = dynamic_cast< vtkImageData* >(
+ aout->GetProducer( )->GetOutputDataObject( aout->GetIndex( ) )
+ );
+ return( image );
+}
+
+// -------------------------------------------------------------------------
+const vtkImageData* cpExtensions::Visualization::ImageSliceActors::
+GetInputImage( unsigned int id ) const
+{
+ vtkAlgorithmOutput* aout = this->m_ImageMaps[ id ]->GetOutputPort( );
+ const vtkImageData* image = dynamic_cast< const vtkImageData* >(
+ aout->GetProducer( )->GetOutputDataObject( aout->GetIndex( ) )
+ );
+ return( image );
+}
+
// -------------------------------------------------------------------------
void cpExtensions::Visualization::ImageSliceActors::
PushActorsInto( vtkRenderWindow* window, bool force_style )
{
+ this->m_Window = window;
if( window == NULL )
return;
vtkRenderWindowInteractor* rwi = window->GetInteractor( );
vtkRenderer* renderer = window->GetRenderers( )->GetFirstRenderer( );
if( rwi == NULL || renderer == NULL )
return;
-
+
// Update style
if( this->m_Style.GetPointer( ) != NULL && force_style )
rwi->SetInteractorStyle( this->m_Style );
while( prop = this->GetNextProp( ) )
renderer->AddViewProp( prop );
renderer->Modified( );
+ if( !force_style )
+ {
+ renderer->RemoveViewProp( this->m_CursorActor );
+ renderer->RemoveViewProp( this->m_TextActor );
+
+ } // fi
// Configure camera
vtkCamera* camera = renderer->GetActiveCamera( );
d_ext[ axis << 1 ] = slice;
d_ext[ ( axis << 1 ) + 1 ] = slice;
+ std::cout
+ << d_ext[ 0 ] << " "
+ << d_ext[ 1 ] << " "
+ << d_ext[ 2 ] << " "
+ << d_ext[ 3 ] << " "
+ << d_ext[ 4 ] << " "
+ << d_ext[ 5 ] << " : "
+ << axis << std::endl;
+
// Change visualization extent
for( unsigned int i = 0; i < nImages; ++i )
{
// Prevent obscuring voxels by offsetting the plane geometry
double xbnds[ ] =
{
- ori[ 0 ] + ( spac[ 0 ] * double( ext[ 0 ] ) ),
- ori[ 0 ] + ( spac[ 0 ] * double( ext[ 1 ] ) )
+ ori[ 0 ] + ( spac[ 0 ] * double( d_ext[ 0 ] ) ),
+ ori[ 0 ] + ( spac[ 0 ] * double( d_ext[ 1 ] ) )
};
double ybnds[ ] =
{
- ori[ 1 ] + ( spac[ 1 ] * double( ext[ 2 ] ) ),
- ori[ 1 ] + ( spac[ 1 ] * double( ext[ 3 ] ) )
+ ori[ 1 ] + ( spac[ 1 ] * double( d_ext[ 2 ] ) ),
+ ori[ 1 ] + ( spac[ 1 ] * double( d_ext[ 3 ] ) )
};
double zbnds[ ] =
{
- ori[ 2 ] + ( spac[ 2 ] * double( ext[ 4 ] ) ),
- ori[ 2 ] + ( spac[ 2 ] * double( ext[ 5 ] ) )
+ ori[ 2 ] + ( spac[ 2 ] * double( d_ext[ 4 ] ) ),
+ ori[ 2 ] + ( spac[ 2 ] * double( d_ext[ 5 ] ) )
};
if( spac[ 0 ] < double( 0 ) )
void cpExtensions::Visualization::ImageSliceActors::
Render( )
{
- vtkInteractorStyle* style = this->GetStyle( );
- if( style == NULL )
- return;
- vtkRenderWindowInteractor* rwi = style->GetInteractor( );
- if( rwi != NULL )
- rwi->Render( );
+ if( this->m_Window != NULL )
+ this->m_Window->Render( );
}
// -------------------------------------------------------------------------
void cpExtensions::Visualization::ImageSliceActors::
ResetCamera( )
{
- vtkInteractorStyle* style = this->GetStyle( );
- if( style == NULL )
- return;
- vtkRenderWindowInteractor* rwi = style->GetInteractor( );
- if( rwi == NULL )
- return;
- vtkRenderWindow* rw = rwi->GetRenderWindow( );
- if( rw == NULL )
+ if( this->m_Window == NULL )
return;
- vtkRenderer* renderer = rw->GetRenderers( )->GetFirstRenderer( );
+ vtkRenderer* renderer =
+ this->m_Window->GetRenderers( )->GetFirstRenderer( );
if( renderer != NULL )
renderer->ResetCamera( );
}
cpExtensions::Visualization::ImageSliceActors::
ImageSliceActors( )
: Superclass( ),
+ m_Window( NULL ),
m_Interpolate( false )
{
this->Clear( );
if( slice > actors->GetSliceNumberMaxValue( ) )
slice = actors->GetSliceNumberMaxValue( );
actors->SetSliceNumber( slice );
- actors->Render( );
+ auto a = actors->m_AssociatedSlices.begin( );
+ for( ; a != actors->m_AssociatedSlices.end( ); ++a )
+ {
+ ( *a )->SetSliceNumber( slice );
+ ( *a )->Render( );
+
+ } // rof
+ actors->Render( );
+
// Associate objects
auto i = actors->m_RenderCommands.begin( );
for( ; i != actors->m_RenderCommands.end( ); ++i )