Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkVtkWidgetRendering.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #include "mitkVtkWidgetRendering.h"
14 
15 #include "mitkVtkLayerController.h"
16 
17 #include <itkMacro.h>
18 #include <itkObject.h>
19 #include <itksys/SystemTools.hxx>
20 #include <mitkConfig.h>
21 
22 #include <vtkObjectFactory.h>
23 #include <vtkRenderWindow.h>
24 #include <vtkRenderer.h>
25 #include <vtkRendererCollection.h>
26 
27 #include <vtkInteractorObserver.h>
28 
29 #include <algorithm>
30 
31 mitk::VtkWidgetRendering::VtkWidgetRendering() : m_RenderWindow(nullptr), m_VtkWidget(nullptr), m_IsEnabled(false)
32 {
33  m_Renderer = vtkRenderer::New();
34 }
35 
37 {
38  if (m_RenderWindow != nullptr)
39  if (this->IsEnabled())
40  this->Disable();
41 
42  if (m_Renderer != nullptr)
43  m_Renderer->Delete();
44 }
45 
51 void mitk::VtkWidgetRendering::SetRenderWindow(vtkRenderWindow *renderWindow)
52 {
53  m_RenderWindow = renderWindow;
54 }
55 
61 {
62  return m_RenderWindow;
63 }
64 
71 {
72  return m_Renderer;
73 }
74 
80 {
81  if (m_IsEnabled)
82  return;
83 
84  if (m_RenderWindow != nullptr)
85  {
86  vtkRenderWindowInteractor *interactor = m_RenderWindow->GetInteractor();
87 
88  if (m_VtkWidget != nullptr)
89  {
90  m_VtkWidget->SetInteractor(interactor);
91 
93 
94  if (layerController)
95  {
96  layerController->InsertForegroundRenderer(m_Renderer, false);
97  }
98 
99  m_IsEnabled = true;
100  }
101  }
102 }
103 
109 {
110  if (this->IsEnabled())
111  {
113 
114  if (layerController)
115  {
116  layerController->RemoveRenderer(m_Renderer);
117  }
118 
119  m_IsEnabled = false;
120  }
121 }
122 
128 {
129  return m_IsEnabled;
130 }
131 
133 {
134  // nothing to do
135 }
136 
138 {
139  return false;
140 }
141 
143 {
144  return true;
145 }
146 
147 void mitk::VtkWidgetRendering::SetRequestedRegion(const itk::DataObject *)
148 {
149  // nothing to do
150 }
151 
152 void mitk::VtkWidgetRendering::SetVtkWidget(vtkInteractorObserver *widget)
153 {
154  m_VtkWidget = widget;
155 }
156 
157 vtkInteractorObserver *mitk::VtkWidgetRendering::GetVtkWidget() const
158 {
159  return m_VtkWidget;
160 }
void InsertForegroundRenderer(vtkSmartPointer< vtkRenderer > renderer, bool forceAbsoluteForeground)
vtkInteractorObserver * GetVtkWidget() const
static VtkLayerController * GetInstance(vtkSmartPointer< vtkRenderWindow > renWin)
virtual vtkRenderWindow * GetRenderWindow()
void SetRequestedRegion(const itk::DataObject *) override
void SetVtkWidget(vtkInteractorObserver *widget)
bool RequestedRegionIsOutsideOfTheBufferedRegion() override
vtkInteractorObserver * m_VtkWidget
virtual void SetRenderWindow(vtkRenderWindow *renderWindow)
void RemoveRenderer(vtkSmartPointer< vtkRenderer > renderer)
void SetRequestedRegionToLargestPossibleRegion() override
virtual vtkRenderer * GetVtkRenderer()