Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkContourModelGLMapper2D.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 
14 #include "mitkBaseRenderer.h"
15 #include "mitkColorProperty.h"
16 #include "mitkContourModel.h"
18 #include "mitkPlaneGeometry.h"
19 #include "mitkProperties.h"
20 #include <vtkLinearTransform.h>
21 
22 #include "mitkGL.h"
23 
25  : m_SubdivisionContour(mitk::ContourModel::New()), m_InitSubdivisionCurve(true)
26 {
27 }
28 
30 {
31 }
32 
34 {
36 
37  mitk::DataNode *dataNode = this->GetDataNode();
38 
39  bool visible = true;
40  dataNode->GetVisibility(visible, renderer, "visible");
41 
42  if (!visible)
43  return;
44 
45  mitk::ContourModel *input = this->GetInput();
46 
47  mitk::ContourModel::Pointer renderingContour = input;
48 
49  bool subdivision = false;
50 
51  dataNode->GetBoolProperty("subdivision curve", subdivision, renderer);
52  if (subdivision)
53  {
54  if (this->m_SubdivisionContour->GetMTime() < renderingContour->GetMTime() || m_InitSubdivisionCurve)
55  {
56  // mitk::ContourModel::Pointer subdivContour = mitk::ContourModel::New();
57 
59 
60  subdivFilter->SetInput(input);
61  subdivFilter->Update();
62 
63  this->m_SubdivisionContour = subdivFilter->GetOutput();
64 
65  m_InitSubdivisionCurve = false;
66  }
67  renderingContour = this->m_SubdivisionContour;
68  }
69 
70  this->DrawContour(renderingContour, renderer);
71 
73 }
74 
75 mitk::ContourModel *mitk::ContourModelGLMapper2D::GetInput(void)
76 {
77  return static_cast<mitk::ContourModel *>(GetDataNode()->GetData());
78 }
79 
81  mitk::BaseRenderer *renderer,
82  bool overwrite)
83 {
84  node->AddProperty("contour.color", ColorProperty::New(0.9, 1.0, 0.1), renderer, overwrite);
85  node->AddProperty("contour.points.color", ColorProperty::New(1.0, 0.0, 0.1), renderer, overwrite);
86  node->AddProperty("contour.points.show", mitk::BoolProperty::New(false), renderer, overwrite);
87  node->AddProperty("contour.segments.show", mitk::BoolProperty::New(true), renderer, overwrite);
88  node->AddProperty("contour.controlpoints.show", mitk::BoolProperty::New(false), renderer, overwrite);
89  node->AddProperty("contour.width", mitk::FloatProperty::New(1.0), renderer, overwrite);
90  node->AddProperty("contour.hovering.width", mitk::FloatProperty::New(3.0), renderer, overwrite);
91  node->AddProperty("contour.hovering", mitk::BoolProperty::New(false), renderer, overwrite);
92  node->AddProperty("contour.points.text", mitk::BoolProperty::New(false), renderer, overwrite);
93  node->AddProperty("contour.controlpoints.text", mitk::BoolProperty::New(false), renderer, overwrite);
94 
95  node->AddProperty("subdivision curve", mitk::BoolProperty::New(false), renderer, overwrite);
96  node->AddProperty("contour.project-onto-plane", mitk::BoolProperty::New(false), renderer, overwrite);
97 
98  node->AddProperty("opacity", mitk::FloatProperty::New(1.0f), renderer, overwrite);
99 
100  Superclass::SetDefaultProperties(node, renderer, overwrite);
101 }
#define ls
Definition: MitkMCxyz.cpp:57
L * GetLocalStorage(mitk::BaseRenderer *forRenderer)
Retrieves a LocalStorage for a specific BaseRenderer.
ContourModel is a structure of linked vertices defining a contour in 3D space. The vertices are store...
void MitkRender(BaseRenderer *renderer, mitk::VtkPropRenderer::RenderType type) override
Base class for mapper specific rendering ressources.
Definition: mitkMapper.h:193
static void SetDefaultProperties(mitk::DataNode *node, mitk::BaseRenderer *renderer=nullptr, bool overwrite=false)
virtual DataNode * GetDataNode() const
Get the DataNode containing the data to map. Method only returns valid DataNode Pointer if the mapper...
Definition: mitkMapper.cpp:31
mitk::ContourModel::Pointer m_SubdivisionContour
static Pointer New()
Organizes the rendering process.
DataCollection - Class to facilitate loading/accessing structured data.
bool GetBoolProperty(const char *propertyKey, bool &boolValue, const mitk::BaseRenderer *renderer=nullptr) const
Convenience access method for bool properties (instances of BoolProperty)
static Pointer New()
LocalStorageHandler< BaseLocalStorage > m_LSH
BaseData * GetData() const
Get the data object (instance of BaseData, e.g., an Image) managed by this DataNode.
void AddProperty(const char *propertyKey, BaseProperty *property, const mitk::BaseRenderer *renderer=nullptr, bool overwrite=false)
Add the property (instance of BaseProperty) if it does not exist (or always ifoverwrite istrue) with ...
void DrawContour(mitk::ContourModel *contour, mitk::BaseRenderer *renderer)
bool GetVisibility(bool &visible, const mitk::BaseRenderer *renderer, const char *propertyKey="visible") const
Convenience access method for visibility properties (instances of BoolProperty with property-key "vis...
Definition: mitkDataNode.h:422
static Pointer New()
Class for nodes of the DataTree.
Definition: mitkDataNode.h:57