#include #include #include #include // ------------------------------------------------------------------------- cpExtensions::Visualization::CursorActors:: Self* cpExtensions::Visualization::CursorActors:: New( ) { return( new Self( ) ); } // ------------------------------------------------------------------------- void cpExtensions::Visualization::CursorActors:: Modified( ) { for( unsigned int i = 0; i < 2; ++i ) { if( this->m_Lines[ i ].GetPointer( ) != NULL ) { this->m_Lines[ i ]->Modified( ); this->m_Mappers[ i ]->Modified( ); this->m_Actors[ i ]->Modified( ); } // fi } // rof this->Superclass::Modified( ); } // ------------------------------------------------------------------------- void cpExtensions::Visualization::CursorActors:: SetImageBounds( double* bounds ) { this->m_Bounds[ 0 ] = bounds[ 0 ]; this->m_Bounds[ 1 ] = bounds[ 1 ]; this->m_Bounds[ 2 ] = bounds[ 2 ]; this->m_Bounds[ 3 ] = bounds[ 3 ]; this->m_Bounds[ 4 ] = bounds[ 4 ]; this->m_Bounds[ 5 ] = bounds[ 5 ]; } // ------------------------------------------------------------------------- void cpExtensions::Visualization::CursorActors:: SetImageOrientation( int orientation ) { this->m_Orientation = orientation % 3; } // ------------------------------------------------------------------------- void cpExtensions::Visualization::CursorActors:: SetCursor( double* pos, bool neg ) { static const double _eps = 1e-3; double pnts[ 4 ][ 3 ]; if( this->m_Orientation == 0 ) { pnts[ 0 ][ 1 ] = this->m_Bounds[ 2 ]; pnts[ 1 ][ 1 ] = this->m_Bounds[ 3 ]; pnts[ 0 ][ 2 ] = pnts[ 1 ][ 2 ] = pos[ 2 ]; pnts[ 2 ][ 1 ] = pnts[ 3 ][ 1 ] = pos[ 1 ]; pnts[ 2 ][ 2 ] = this->m_Bounds[ 4 ]; pnts[ 3 ][ 2 ] = this->m_Bounds[ 5 ]; pnts[ 0 ][ 0 ] = pnts[ 1 ][ 0 ] = pnts[ 2 ][ 0 ] = pnts[ 3 ][ 0 ] = pos[ 0 ] + ( double( neg? -1: 1 ) * _eps ); } else if( this->m_Orientation == 1 ) { pnts[ 0 ][ 0 ] = pnts[ 1 ][ 0 ] = pos[ 0 ]; pnts[ 0 ][ 2 ] = this->m_Bounds[ 4 ]; pnts[ 1 ][ 2 ] = this->m_Bounds[ 5 ]; pnts[ 2 ][ 0 ] = this->m_Bounds[ 0 ]; pnts[ 3 ][ 0 ] = this->m_Bounds[ 1 ]; pnts[ 2 ][ 2 ] = pnts[ 3 ][ 2 ] = pos[ 2 ]; pnts[ 0 ][ 1 ] = pnts[ 1 ][ 1 ] = pnts[ 2 ][ 1 ] = pnts[ 3 ][ 1 ] = pos[ 1 ] + ( double( neg? -1: 1 ) * _eps ); } else if( this->m_Orientation == 2 ) { pnts[ 0 ][ 0 ] = this->m_Bounds[ 0 ]; pnts[ 1 ][ 0 ] = this->m_Bounds[ 1 ]; pnts[ 0 ][ 1 ] = pnts[ 1 ][ 1 ] = pos[ 1 ]; pnts[ 2 ][ 0 ] = pnts[ 3 ][ 0 ] = pos[ 0 ]; pnts[ 2 ][ 1 ] = this->m_Bounds[ 2 ]; pnts[ 3 ][ 1 ] = this->m_Bounds[ 3 ]; pnts[ 0 ][ 2 ] = pnts[ 1 ][ 2 ] = pnts[ 2 ][ 2 ] = pnts[ 3 ][ 2 ] = pos[ 2 ] + ( double( neg? -1: 1 ) * _eps ); } // fi this->m_Lines[ 0 ]->SetPoint1( pnts[ 0 ] ); this->m_Lines[ 0 ]->SetPoint2( pnts[ 1 ] ); this->m_Lines[ 1 ]->SetPoint1( pnts[ 2 ] ); this->m_Lines[ 1 ]->SetPoint2( pnts[ 3 ] ); this->Modified( ); } // ------------------------------------------------------------------------- vtkProperty* cpExtensions::Visualization::CursorActors:: GetProperty( unsigned int i ) { return( this->m_Actors[ i % 2 ]->GetProperty( ) ); } // ------------------------------------------------------------------------- const vtkProperty* cpExtensions::Visualization::CursorActors:: GetProperty( unsigned int i ) const { return( this->m_Actors[ i % 2 ]->GetProperty( ) ); } // ------------------------------------------------------------------------- void cpExtensions::Visualization::CursorActors:: SetVisibility( int v ) { this->m_Actors[ 0 ]->SetVisibility( v ); this->m_Actors[ 1 ]->SetVisibility( v ); } // ------------------------------------------------------------------------- void cpExtensions::Visualization::CursorActors:: VisibilityOn( ) { this->m_Actors[ 0 ]->VisibilityOn( ); this->m_Actors[ 1 ]->VisibilityOn( ); } // ------------------------------------------------------------------------- void cpExtensions::Visualization::CursorActors:: VisibilityOff( ) { this->m_Actors[ 0 ]->VisibilityOff( ); this->m_Actors[ 1 ]->VisibilityOff( ); } // ------------------------------------------------------------------------- cpExtensions::Visualization::CursorActors:: CursorActors( ) : Superclass( ) { this->m_Bounds[ 0 ] = this->m_Bounds[ 1 ] = this->m_Bounds[ 2 ] = this->m_Bounds[ 3 ] = this->m_Bounds[ 4 ] = this->m_Bounds[ 5 ] = double( 0 ); for( unsigned int i = 0; i < 2; ++i ) { this->m_Lines[ i ] = vtkSmartPointer< LineSource >::New( ); this->m_Mappers[ i ] = vtkSmartPointer< vtkPolyDataMapper >::New( ); this->m_Actors[ i ] = vtkSmartPointer< vtkActor >::New( ); this->m_Mappers[ i ]->SetInputConnection( this->m_Lines[ i ]->GetOutputPort( ) ); this->m_Actors[ i ]->SetMapper( this->m_Mappers[ i ] ); this->AddItem( this->m_Actors[ i ] ); } // rof } // ------------------------------------------------------------------------- cpExtensions::Visualization::CursorActors:: ~CursorActors( ) { } // eof - $RCSfile$