Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkPlaneGeometryDataVtkMapper3D.h
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 #ifndef MITKGEOMETRY2DDATAVTKMAPPER3D_H_HEADER_INCLUDED_C196C71F
14 #define MITKGEOMETRY2DDATAVTKMAPPER3D_H_HEADER_INCLUDED_C196C71F
15 
16 #include "mitkDataStorage.h"
18 #include "mitkVtkMapper.h"
19 #include "mitkWeakPointer.h"
20 #include <MitkCoreExports.h>
21 
22 #include <vtkCleanPolyData.h>
23 #include <vtkSystemIncludes.h>
24 
25 class vtkActor;
26 class vtkPolyDataMapper;
27 class vtkAssembly;
28 class vtkFeatureEdges;
29 class vtkTubeFilter;
30 class vtkTransformPolyDataFilter;
31 class vtkHedgeHog;
32 
33 namespace mitk
34 {
35  class PlaneGeometryData;
36  class BaseRenderer;
37  class ImageVtkMapper2D;
38  class DataStorage;
39 
43 
95  {
96  public:
98 
99  itkFactorylessNewMacro(Self);
100 
101  itkCloneMacro(Self);
102 
108  vtkProp *GetVtkProp(mitk::BaseRenderer *renderer) override;
109  void UpdateVtkTransform(mitk::BaseRenderer *renderer) override;
110 
114  virtual const PlaneGeometryData *GetInput();
115 
123  virtual void SetDataStorageForTexture(mitk::DataStorage *storage);
124 
125  protected:
126  typedef std::multimap<int, vtkActor *> LayerSortedActorList;
127 
129 
130  ~PlaneGeometryDataVtkMapper3D() override;
131 
132  void GenerateDataForRenderer(BaseRenderer *renderer) override;
133 
134  void ProcessNode(DataNode *node, BaseRenderer *renderer, Surface *surface, LayerSortedActorList &layerSortedActors);
135 
136  void ImageMapperDeletedCallback(itk::Object *caller, const itk::EventObject &event);
137 
139  vtkAssembly *m_Prop3DAssembly;
140 
142  vtkAssembly *m_ImageAssembly;
143 
145 
146  BoundingBox::Pointer m_SurfaceCreatorBoundingBox;
147 
148  BoundingBox::PointsContainer::Pointer m_SurfaceCreatorPointsContainer;
149 
151  vtkFeatureEdges *m_Edges;
152 
154  vtkTransformPolyDataFilter *m_EdgeTransformer;
155 
157  vtkTubeFilter *m_EdgeTuber;
158 
160  vtkPolyDataMapper *m_EdgeMapper;
161 
163  vtkActor *m_EdgeActor;
164 
166  vtkPolyDataMapper *m_BackgroundMapper;
167 
169  vtkActor *m_BackgroundActor;
170 
172  vtkTransformPolyDataFilter *m_NormalsTransformer;
173 
175  vtkPolyDataMapper *m_FrontNormalsMapper;
176  vtkPolyDataMapper *m_BackNormalsMapper;
177 
179  vtkHedgeHog *m_FrontHedgeHog;
180  vtkHedgeHog *m_BackHedgeHog;
181 
185 
187  vtkCleanPolyData *m_Cleaner;
188 
191 
194 
196  {
197  public:
198  vtkActor *m_Actor;
199  // we do not need a smart-pointer, because we delete our
200  // connection, when the referenced mapper is destroyed
201  itk::Object *m_Sender;
202  unsigned long m_ObserverID;
203 
204  void Initialize(vtkActor *actor, itk::Object *sender, itk::Command *command);
205 
206  ActorInfo();
207  ~ActorInfo();
208  };
209 
213  typedef std::map<ImageVtkMapper2D *, ActorInfo> ActorList;
214  ActorList m_ImageActors;
215 
216  // responsiblity to remove the observer upon its destruction
217  typedef itk::MemberCommand<PlaneGeometryDataVtkMapper3D> MemberCommandType;
218  MemberCommandType::Pointer m_ImageMapperDeletedCommand;
219  };
220 } // namespace mitk
221 #endif /* MITKGEOMETRY2DDATAVTKMAPPER3D_H_HEADER_INCLUDED_C196C71F */
itk::MemberCommand< PlaneGeometryDataVtkMapper3D > MemberCommandType
vtkActor * m_FrontNormalsActor
Actor to hold the normals arrows.
Class for storing surfaces (vtkPolyData).
Definition: mitkSurface.h:28
Data management class that handles &#39;was created by&#39; relations.
std::map< ImageVtkMapper2D *, ActorInfo > ActorList
List holding the vtkActor to map the image into 3D for each ImageMapper.
#define MITKCORE_EXPORT
PlaneGeometryDataToSurfaceFilter::Pointer m_SurfaceCreator
mitk::WeakPointer< mitk::DataStorage > m_DataStorage
The DataStorage defines which part of the data tree is traversed for renderering. ...
vtkTransformPolyDataFilter * m_NormalsTransformer
Transforms the suface before applying the glyph filter.
Organizes the rendering process.
DataCollection - Class to facilitate loading/accessing structured data.
Base class of all Vtk Mappers in order to display primitives by exploiting Vtk functionality.
Definition: mitkVtkMapper.h:48
vtkPolyDataMapper * m_BackgroundMapper
Mapper for black plane background.
std::multimap< int, vtkActor * > LayerSortedActorList
Base class of all mappers, Vtk as well as OpenGL mappers.
Definition: mitkMapper.h:49
#define DEPRECATED(func)
Definition: mitkCommon.h:179
vtkAssembly * m_Prop3DAssembly
general PropAssembly to hold the entire scene
#define mitkClassMacro(className, SuperClassName)
Definition: mitkCommon.h:40
vtkPolyDataMapper * m_EdgeMapper
Mapper for the tube-shaped frame.
Data class containing PlaneGeometry objects.
vtkHedgeHog * m_FrontHedgeHog
Generates lines for surface normals.
Vtk-based mapper to display a PlaneGeometry in a 3D windowUses a PlaneGeometryDataToSurfaceFilter obj...
vtkAssembly * m_ImageAssembly
PropAssembly to hold the planes.
vtkFeatureEdges * m_Edges
Edge extractor for tube-shaped frame.
BoundingBox::PointsContainer::Pointer m_SurfaceCreatorPointsContainer
vtkTubeFilter * m_EdgeTuber
Source to create the tube-shaped frame.
vtkTransformPolyDataFilter * m_EdgeTransformer
Filter to apply object transform to the extracted edges.
vtkActor * m_BackgroundActor
Actor for black plane background.
vtkPolyDataMapper * m_FrontNormalsMapper
Mapper for normals representation (thin lines)
Class for nodes of the DataTree.
Definition: mitkDataNode.h:57
vtkActor * m_EdgeActor
Actor for the tube-shaped frame.