#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.
1.7.2