Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkVtkAnnotation.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 "mitkVtkAnnotation.h"
14 #include <vtkProp.h>
15 #include <vtkProperty.h>
16 
18 {
19 }
20 
22 {
23 }
24 
26 {
27  vtkSmartPointer<vtkProp> prop = GetVtkProp(renderer);
28  if (!IsVisible())
29  {
30  prop->SetVisibility(false);
31  return;
32  }
33  else
34  {
35  prop->SetVisibility(true);
36  UpdateVtkAnnotation(renderer);
37  }
38 }
39 
41 {
42  if (!renderer)
43  return;
44  AddToRenderer(renderer, renderer->GetVtkRenderer());
45 }
46 
47 void mitk::VtkAnnotation::AddToRenderer(mitk::BaseRenderer *renderer, vtkRenderer *vtkrenderer)
48 {
49  if (!renderer || !vtkrenderer)
50  return;
51  Update(renderer);
52  vtkSmartPointer<vtkProp> vtkProp = GetVtkProp(renderer);
53  if (renderer && vtkrenderer && !vtkrenderer->HasViewProp(vtkProp))
54  {
55  vtkrenderer->AddViewProp(vtkProp);
56  mitk::RenderingManager::GetInstance()->RequestUpdate(vtkrenderer->GetRenderWindow());
57  }
58 }
59 
61 {
62  if (!renderer)
63  return;
64  RemoveFromRenderer(renderer, renderer->GetVtkRenderer());
65 }
66 
67 void mitk::VtkAnnotation::RemoveFromRenderer(mitk::BaseRenderer *renderer, vtkRenderer *vtkrenderer)
68 {
69  if (!renderer || !vtkrenderer)
70  return;
71  vtkSmartPointer<vtkProp> vtkProp = GetVtkProp(renderer);
72  if (vtkrenderer->HasViewProp(vtkProp))
73  {
74  vtkrenderer->RemoveViewProp(vtkProp);
75  mitk::RenderingManager::GetInstance()->RequestUpdate(vtkrenderer->GetRenderWindow());
76  }
77 }
78 
80 {
81  GetVtkProp(renderer)->RenderOpaqueGeometry(renderer->GetVtkRenderer());
82  GetVtkProp(renderer)->RenderOverlay(renderer->GetVtkRenderer());
83 }
vtkRenderer * GetVtkRenderer() const
~VtkAnnotation() override
virtual destructor in order to derive from this class
VtkAnnotation()
explicit constructor which disallows implicit conversions
virtual vtkProp * GetVtkProp(BaseRenderer *renderer) const =0
This method is implemented by the specific VTKAnnotation in order to create the element as a vtkProp...
bool IsVisible(const std::string &propertyKey="visible", bool defaultIsOn=true) const
Convenience access method for visibility properties (instances of BoolProperty). Return value is the ...
Organizes the rendering process.
static RenderingManager * GetInstance()
void AddToRenderer(BaseRenderer *renderer, vtkRenderer *vtkrenderer) override
Adds the Annotation to the specified renderer. Update Annotation should be called soon in order to ap...
void AddToBaseRenderer(BaseRenderer *renderer) override
Adds the Annotation to the specified renderer. Update Annotation should be called soon in order to ap...
void RemoveFromBaseRenderer(BaseRenderer *renderer) override
Removes the Annotation from the specified renderer. It is not visible anymore then.
virtual void UpdateVtkAnnotation(BaseRenderer *renderer)=0
void RemoveFromRenderer(BaseRenderer *renderer, vtkRenderer *vtkrenderer) override
Removes the Annotation from the specified renderer. It is not visible anymore then.
void RequestUpdate(vtkRenderWindow *renderWindow)
void Paint(BaseRenderer *renderer)
Paints the Annotation.
void Update(BaseRenderer *renderer) override
Applies all properties and should be called before the rendering procedure.