#include #ifdef cpExtensions_QT4 #include #include #include #include #include #include // ------------------------------------------------------------------------- cpExtensions::QT::RendererWidget:: RendererWidget( QWidget* parent, Qt::WindowFlags f ) : Superclass( parent, f ) { this->m_Renderer = vtkSmartPointer< vtkRenderer >::New( ); this->GetRenderWindow( )->AddRenderer( this->m_Renderer ); vtkAxesActor* axes = vtkAxesActor::New( ); axes->AxisLabelsOff( ); this->m_Marker = vtkSmartPointer< vtkOrientationMarkerWidget >::New( ); this->m_Marker->SetOutlineColor( 1, 1, 1 ); this->m_Marker->SetOrientationMarker( axes ); this->m_Marker->SetInteractor( this->GetRenderWindow( )->GetInteractor( ) ); this->m_Marker->EnabledOn( ); this->m_Marker->InteractiveOff( ); axes->Delete( ); this->SetQuadrant( 0 ); } // ------------------------------------------------------------------------- cpExtensions::QT::RendererWidget:: ~RendererWidget( ) { } // ------------------------------------------------------------------------- int cpExtensions::QT::RendererWidget:: GetQuadrant( ) const { return( this->m_Quadrant ); } // ------------------------------------------------------------------------- void cpExtensions::QT::RendererWidget:: SetQuadrant( int q ) { this->m_Quadrant = ( q - 1 ) % 4; if( this->m_Quadrant == 0 ) this->m_Marker->SetViewport( 0.85, 0.00, 1.00, 0.15 ); else if( this->m_Quadrant == 1 ) this->m_Marker->SetViewport( 0.00, 0.00, 0.15, 0.15 ); else if( this->m_Quadrant == 2 ) this->m_Marker->SetViewport( 0.00, 0.85, 0.15, 1.00 ); else if( this->m_Quadrant == 3 ) this->m_Marker->SetViewport( 0.85, 0.85, 1.00, 1.00 ); } // ------------------------------------------------------------------------- vtkRenderer* cpExtensions::QT::RendererWidget:: GetRenderer( ) { return( this->m_Renderer ); } // ------------------------------------------------------------------------- const vtkRenderer* cpExtensions::QT::RendererWidget:: GetRenderer( ) const { return( this->m_Renderer ); } // ------------------------------------------------------------------------- vtkInteractorStyle* cpExtensions::QT::RendererWidget:: GetStyle( ) { auto iren = this->GetInteractor( ); if( iren != NULL ) return( dynamic_cast< vtkInteractorStyle* >( iren->GetInteractorStyle( ) ) ); else return( NULL ); } // ------------------------------------------------------------------------- const vtkInteractorStyle* cpExtensions::QT::RendererWidget:: GetStyle( ) const { // Ugly, but necessary :-( Self* self = const_cast< Self* >( this ); if( self != NULL ) { auto iren = self->GetInteractor( ); if( iren != NULL ) return( dynamic_cast< const vtkInteractorStyle* >( iren->GetInteractorStyle( ) ) ); else return( NULL ); } else return( NULL ); } // ------------------------------------------------------------------------- void cpExtensions::QT::RendererWidget:: SetStyle( vtkInteractorStyle* style ) { this->GetInteractor( )->SetInteractorStyle( style ); } // ------------------------------------------------------------------------- vtkCamera* cpExtensions::QT::RendererWidget:: GetActiveCamera( ) { return( this->m_Renderer->GetActiveCamera( ) ); } // ------------------------------------------------------------------------- const vtkCamera* cpExtensions::QT::RendererWidget:: GetActiveCamera( ) const { return( this->m_Renderer->GetActiveCamera( ) ); } // ------------------------------------------------------------------------- void cpExtensions::QT::RendererWidget:: AddViewProp( vtkProp* prop, const std::string& name ) { if( prop != NULL ) { auto i = this->m_ViewProps.find( name ); if( i == this->m_ViewProps.end( ) ) i = this->m_ViewProps.insert( TPropCollection::value_type( name, TProps( ) ) ).first; i->second.insert( prop ); this->m_Renderer->AddViewProp( prop ); } // fi } // ------------------------------------------------------------------------- void cpExtensions::QT::RendererWidget:: AddViewProps( vtkPropCollection* props, const std::string& name ) { if( props != NULL ) { auto i = this->m_ViewProps.find( name ); if( i == this->m_ViewProps.end( ) ) i = this->m_ViewProps.insert( TPropCollection::value_type( name, TProps( ) ) ).first; props->InitTraversal( ); while( vtkProp* prop = props->GetNextProp( ) ) { i->second.insert( prop ); this->m_Renderer->AddViewProp( prop ); } // elihw } // fi } // ------------------------------------------------------------------------- void cpExtensions::QT::RendererWidget:: AddAuxViewProp( vtkProp* prop, const std::string& name ) { if( prop != NULL ) { auto i = this->m_AuxViewProps.find( name ); if( i == this->m_AuxViewProps.end( ) ) i = this->m_AuxViewProps.insert( TPropCollection::value_type( name, TProps( ) ) ).first; i->second.insert( prop ); this->m_Renderer->AddViewProp( prop ); } // fi } // ------------------------------------------------------------------------- void cpExtensions::QT::RendererWidget:: AddAuxViewProps( vtkPropCollection* props, const std::string& name ) { if( props != NULL ) { auto i = this->m_AuxViewProps.find( name ); if( i == this->m_AuxViewProps.end( ) ) i = this->m_AuxViewProps.insert( TPropCollection::value_type( name, TProps( ) ) ).first; props->InitTraversal( ); while( vtkProp* prop = props->GetNextProp( ) ) { i->second.insert( prop ); this->m_Renderer->AddViewProp( prop ); } // elhiw } // fi } // ------------------------------------------------------------------------- cpExtensions::QT::RendererWidget:: TProps& cpExtensions::QT::RendererWidget:: GetViewProps( const std::string& name ) { static TProps zero; auto i = this->m_ViewProps.find( name ); if( i == this->m_ViewProps.end( ) ) { zero.clear( ); return( zero ); } else return( i->second ); } // ------------------------------------------------------------------------- const cpExtensions::QT::RendererWidget:: TProps& cpExtensions::QT::RendererWidget:: GetViewProps( const std::string& name ) const { static const TProps zero; auto i = this->m_ViewProps.find( name ); if( i == this->m_ViewProps.end( ) ) return( zero ); else return( i->second ); } // ------------------------------------------------------------------------- cpExtensions::QT::RendererWidget:: TProps& cpExtensions::QT::RendererWidget:: GetAuxViewProps( const std::string& name ) { static TProps zero; auto i = this->m_AuxViewProps.find( name ); if( i == this->m_AuxViewProps.end( ) ) { zero.clear( ); return( zero ); } else return( i->second ); } // ------------------------------------------------------------------------- const cpExtensions::QT::RendererWidget:: TProps& cpExtensions::QT::RendererWidget:: GetAuxViewProps( const std::string& name ) const { static const TProps zero; auto i = this->m_AuxViewProps.find( name ); if( i == this->m_AuxViewProps.end( ) ) return( zero ); else return( i->second ); } // ------------------------------------------------------------------------- void cpExtensions::QT::RendererWidget:: RemoveViewProps( const std::string& name ) { auto i = this->m_ViewProps.find( name ); if( i != this->m_ViewProps.end( ) ) { for( auto p = i->second.begin( ); p != i->second.end( ); ++p ) this->m_Renderer->RemoveViewProp( *p ); this->m_ViewProps.erase( i ); } // fi i = this->m_AuxViewProps.find( name ); if( i != this->m_AuxViewProps.end( ) ) { for( auto p = i->second.begin( ); p != i->second.end( ); ++p ) this->m_Renderer->RemoveViewProp( *p ); this->m_AuxViewProps.erase( i ); } // fi } // ------------------------------------------------------------------------- void cpExtensions::QT::RendererWidget:: RemoveViewProps( ) { this->m_Renderer->RemoveAllViewProps( ); this->m_ViewProps.clear( ); this->m_AuxViewProps.clear( ); } // ------------------------------------------------------------------------- void cpExtensions::QT::RendererWidget:: HideViewProps( const std::string& name ) { auto i = this->m_ViewProps.find( name ); if( i != this->m_ViewProps.end( ) ) for( auto p = i->second.begin( ); p != i->second.end( ); ++p ) ( *p )->VisibilityOff( ); i = this->m_AuxViewProps.find( name ); if( i != this->m_AuxViewProps.end( ) ) for( auto p = i->second.begin( ); p != i->second.end( ); ++p ) ( *p )->VisibilityOff( ); } // ------------------------------------------------------------------------- void cpExtensions::QT::RendererWidget:: ShowViewProps( const std::string& name ) { auto i = this->m_ViewProps.find( name ); if( i != this->m_ViewProps.end( ) ) for( auto p = i->second.begin( ); p != i->second.end( ); ++p ) ( *p )->VisibilityOn( ); i = this->m_AuxViewProps.find( name ); if( i != this->m_AuxViewProps.end( ) ) for( auto p = i->second.begin( ); p != i->second.end( ); ++p ) ( *p )->VisibilityOn( ); } // ------------------------------------------------------------------------- void cpExtensions::QT::RendererWidget:: ResetCamera( ) { this->m_Renderer->ResetCamera( ); } // ------------------------------------------------------------------------- void cpExtensions::QT::RendererWidget:: Render( ) { this->GetRenderWindow( )->Render( ); } #endif // cpExtensions_QT4 // eof - $RCSfile$