#include <mitkVtkLayerController.h>
Public Member Functions | |
VtkLayerController (vtkRenderWindow *renderWindow) | |
virtual | ~VtkLayerController () |
vtkRenderer * | GetSceneRenderer () |
void | InsertBackgroundRenderer (vtkRenderer *renderer, bool forceAbsoluteBackground) |
void | InsertForegroundRenderer (vtkRenderer *renderer, bool forceAbsoluteForeground) |
void | InsertSceneRenderer (vtkRenderer *renderer) |
void | SetRenderWindow (vtkRenderWindow *renwin) |
void | RemoveRenderer (vtkRenderer *renderer) |
bool | IsRendererInserted (vtkRenderer *renderer) |
unsigned int | GetNumberOfRenderers () |
void | SetEraseForAllRenderers (int i) |
Static Public Member Functions | |
static VtkLayerController * | GetInstance (vtkRenderWindow *renWin) |
static void | AddInstance (vtkRenderWindow *renWin, vtkRenderer *mitkSceneRenderer) |
static void | RemoveInstance (vtkRenderWindow *renWin) |
Protected Attributes | |
vtkRenderWindow * | m_RenderWindow |
Manages the VTK layer hierarchy of a vtkRenderWindow. For simple access the layers are divided into three main groups: background, scene and foreground layers. Renderers can be registered via the insert... functions and removed via the RemoveRenderer function.
Definition at line 40 of file mitkVtkLayerController.h.
mitk::VtkLayerController::VtkLayerController | ( | vtkRenderWindow * | renderWindow ) |
Definition at line 62 of file mitkVtkLayerController.cpp.
{ m_RenderWindow = renderWindow; m_RenderWindow->Register( NULL ); m_BackgroundRenderers.clear(); m_ForegroundRenderers.clear(); m_SceneRenderers.clear(); }
mitk::VtkLayerController::~VtkLayerController | ( | ) | [virtual] |
Definition at line 72 of file mitkVtkLayerController.cpp.
{ if ( m_RenderWindow != NULL ) { m_RenderWindow->UnRegister( NULL ); } }
void mitk::VtkLayerController::AddInstance | ( | vtkRenderWindow * | renWin, |
vtkRenderer * | mitkSceneRenderer | ||
) | [static] |
Definition at line 40 of file mitkVtkLayerController.cpp.
References InsertSceneRenderer(), and RemoveInstance().
{ // ensure that no vtkRenderWindow is managed twice mitk::VtkLayerController::RemoveInstance(renWin); // instanciate controller, add it to the map mitk::VtkLayerController* ControllerInstance = new mitk::VtkLayerController(renWin); ControllerInstance->InsertSceneRenderer(mitkSceneRenderer); s_LayerControllerMap.insert(vtkLayerControllerMapType::value_type(renWin,ControllerInstance)); }
mitk::VtkLayerController * mitk::VtkLayerController::GetInstance | ( | vtkRenderWindow * | renWin ) | [static] |
Definition at line 28 of file mitkVtkLayerController.cpp.
Referenced by mitk::BaseRenderer::BaseRenderer(), mitk::VtkWidgetRendering::Disable(), mitk::RenderWindowFrame::Disable(), mitk::ManufacturerLogo::Disable(), mitk::ImageBackground2D::Disable(), mitk::GradientBackground::Disable(), mitk::VtkWidgetRendering::Enable(), mitk::RenderWindowFrame::Enable(), mitk::ManufacturerLogo::Enable(), mitk::ImageBackground2D::Enable(), mitk::GradientBackground::Enable(), QmitkStdMultiWidget::InitializeWidget(), mitk::ImageBackground2D::IsEnabled(), mitk::GradientBackground::IsEnabled(), mitkVtkPropRendererTest(), QmitkVideoBackground::Modified(), QmitkVideoBackground::RemoveRenderWindow(), QmitkMeasurement::SetMeasurementInfoToRenderWindow(), and QmitkStdMultiWidget::~QmitkStdMultiWidget().
{ for(vtkLayerControllerMapType::iterator mapit = s_LayerControllerMap.begin(); mapit != s_LayerControllerMap.end(); mapit++) { if( (*mapit).first == renWin) return (*mapit).second; } return NULL; }
unsigned int mitk::VtkLayerController::GetNumberOfRenderers | ( | ) |
Returns the number of renderers in the renderwindow.
Definition at line 328 of file mitkVtkLayerController.cpp.
{ return static_cast<unsigned int>(m_BackgroundRenderers.size() + m_SceneRenderers.size() + m_ForegroundRenderers.size()); }
vtkRenderer * mitk::VtkLayerController::GetSceneRenderer | ( | ) |
Returns the current vtkRenderer of the Scene
Returns the Scene Renderer
Definition at line 130 of file mitkVtkLayerController.cpp.
{ if(m_SceneRenderers.size() > 0) { RendererVectorType::iterator it = m_SceneRenderers.begin(); return (*it); } else return NULL; }
void mitk::VtkLayerController::InsertBackgroundRenderer | ( | vtkRenderer * | renderer, |
bool | forceAbsoluteBackground | ||
) |
Connects a VTK renderer with a vtk renderwindow. The renderer will be rendered in the background. With forceAbsoluteBackground set true a renderer can be placed at the absolute background of the scene. Multiple calls with forceAbsoluteBackground set true will set the latest registered renderer as background.
Definition at line 85 of file mitkVtkLayerController.cpp.
Referenced by mitk::ImageBackground2D::Enable(), and mitk::GradientBackground::Enable().
{ if(renderer == NULL) return; // Remove renderer if it already exists RemoveRenderer(renderer); if(forceAbsoluteBackground) { RendererVectorType::iterator it = m_BackgroundRenderers.begin(); m_BackgroundRenderers.insert(it,renderer); } else m_BackgroundRenderers.push_back(renderer); UpdateLayers(); }
void mitk::VtkLayerController::InsertForegroundRenderer | ( | vtkRenderer * | renderer, |
bool | forceAbsoluteForeground | ||
) |
Connects a VTK renderer with a vtk renderwindow. The renderer will be rendered in the foreground. With forceAbsoluteBackground set true a renderer can be placed at the absolute foreground of the scene. Multiple calls with forceAbsoluteForeground set true will set the latest registered renderer as foreground.
Definition at line 108 of file mitkVtkLayerController.cpp.
Referenced by mitk::VtkWidgetRendering::Enable(), mitk::RenderWindowFrame::Enable(), and mitk::ManufacturerLogo::Enable().
{ if(renderer == NULL) return; // Remove renderer if it already exists RemoveRenderer(renderer); if(forceAbsoluteForeground) { RendererVectorType::iterator it = m_ForegroundRenderers.begin(); m_ForegroundRenderers.insert(it,renderer); } else m_ForegroundRenderers.push_back(renderer); UpdateLayers(); }
void mitk::VtkLayerController::InsertSceneRenderer | ( | vtkRenderer * | renderer ) |
Connects a VTK renderer with a vtk renderwindow. The renderer will be rendered between background renderers and foreground renderers.
Definition at line 144 of file mitkVtkLayerController.cpp.
Referenced by AddInstance().
{ if(renderer == NULL) return; // Remove renderer if it already exists RemoveRenderer(renderer); m_SceneRenderers.push_back(renderer); UpdateLayers(); }
bool mitk::VtkLayerController::IsRendererInserted | ( | vtkRenderer * | renderer ) |
Returns true if a renderer has been inserted
Definition at line 228 of file mitkVtkLayerController.cpp.
{ RendererVectorType::iterator it; // background layers if(m_BackgroundRenderers.size() > 0) { it = std::find(m_BackgroundRenderers.begin(),m_BackgroundRenderers.end(),renderer); if ( it != m_BackgroundRenderers.end() ) { return true; } } // scene layers if(m_SceneRenderers.size() > 0) { it = std::find(m_SceneRenderers.begin(),m_SceneRenderers.end(),renderer); if ( it != m_SceneRenderers.end() ) { return true; } } // foreground layers if(m_ForegroundRenderers.size() > 0 ) { it = std::find(m_ForegroundRenderers.begin(),m_ForegroundRenderers.end(),renderer); if ( it != m_ForegroundRenderers.end() ) { return true; } } return false; }
void mitk::VtkLayerController::RemoveInstance | ( | vtkRenderWindow * | renWin ) | [static] |
Definition at line 52 of file mitkVtkLayerController.cpp.
Referenced by AddInstance(), and mitk::BaseRenderer::~BaseRenderer().
{ vtkLayerControllerMapType::iterator mapit = s_LayerControllerMap.find(renWin); if(mapit != s_LayerControllerMap.end()) { delete mapit->second; s_LayerControllerMap.erase( mapit ); } }
void mitk::VtkLayerController::RemoveRenderer | ( | vtkRenderer * | renderer ) |
A renderer which has been inserted via a insert... function can be removed from the vtkRenderWindow with RemoveRenderer.
Definition at line 160 of file mitkVtkLayerController.cpp.
Referenced by mitk::VtkWidgetRendering::Disable(), mitk::RenderWindowFrame::Disable(), mitk::ManufacturerLogo::Disable(), mitk::ImageBackground2D::Disable(), and mitk::GradientBackground::Disable().
{ RendererVectorType::iterator it; // background layers if(m_BackgroundRenderers.size() > 0) { it = std::find(m_BackgroundRenderers.begin(),m_BackgroundRenderers.end(),renderer); if(it != m_BackgroundRenderers.end()) { m_BackgroundRenderers.erase(it); UpdateLayers(); return; } } // scene layers if(m_SceneRenderers.size() > 0) { it = std::find(m_SceneRenderers.begin(),m_SceneRenderers.end(),renderer); if(it != m_SceneRenderers.end()) { m_SceneRenderers.erase(it); UpdateLayers(); return; } } // foreground layers if(m_ForegroundRenderers.size() > 0 ) { it = std::find(m_ForegroundRenderers.begin(),m_ForegroundRenderers.end(),renderer); if(it != m_ForegroundRenderers.end()) { m_ForegroundRenderers.erase(it); UpdateLayers(); return; } } }
void mitk::VtkLayerController::SetEraseForAllRenderers | ( | int | i ) |
Definition at line 333 of file mitkVtkLayerController.cpp.
{ #if ( VTK_MAJOR_VERSION >= 5 ) this->m_RenderWindow->SetErase(i); RendererVectorType::iterator it; for(it = m_BackgroundRenderers.begin(); it != m_BackgroundRenderers.end(); it++) (*it)->SetErase(i); for(it = m_SceneRenderers.begin(); it != m_SceneRenderers.end(); it++) (*it)->SetErase(i); for(it = m_ForegroundRenderers.begin(); it != m_ForegroundRenderers.end(); it++) (*it)->SetErase(i); #endif }
void mitk::VtkLayerController::SetRenderWindow | ( | vtkRenderWindow * | renwin ) |
Connects a VtkRenderWindow with the layer controller.
Definition at line 200 of file mitkVtkLayerController.cpp.
{ if(renwin != NULL) { RendererVectorType::iterator it; // Tell all renderers that there is a new renderwindow for(it = m_BackgroundRenderers.begin(); it != m_BackgroundRenderers.end(); it++) { (*it)->SetRenderWindow(renwin); } for(it = m_SceneRenderers.begin(); it != m_SceneRenderers.end(); it++) { (*it)->SetRenderWindow(renwin); } for(it = m_ForegroundRenderers.begin(); it != m_ForegroundRenderers.end(); it++) { (*it)->SetRenderWindow(renwin); } // Set the new RenderWindow m_RenderWindow = renwin; } // Now sort renderers and add them to the renderwindow UpdateLayers(); }
vtkRenderWindow* mitk::VtkLayerController::m_RenderWindow [protected] |
Definition at line 98 of file mitkVtkLayerController.h.