Slicer 5.8
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
vtkMRMLModelDisplayableManager.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Copyright 2005 Brigham and Women's Hospital (BWH) All Rights Reserved.
4
5 See COPYRIGHT.txt
6 or http://www.slicer.org/copyright/copyright.txt for details.
7
8==========================================================================*/
9
10#ifndef __vtkMRMLModelDisplayableManager_h
11#define __vtkMRMLModelDisplayableManager_h
12
13// MRMLDisplayableManager includes
15#include "vtkMRMLDisplayableManagerExport.h"
16
17// MRML includes
18#include <vtkMRMLModelNode.h>
19class vtkMRMLClipNode;
23
24// VTK includes
25#include "vtkRenderWindow.h"
26class vtkActor;
27class vtkAlgorithm;
28class vtkCellPicker;
29class vtkLookupTable;
30class vtkMatrix4x4;
31class vtkMapper;
32class vtkPlane;
33class vtkPointPicker;
34class vtkProp3D;
35class vtkPropPicker;
36class vtkTransform;
37class vtkWorldPointPicker;
38
47class VTK_MRML_DISPLAYABLEMANAGER_EXPORT vtkMRMLModelDisplayableManager
49{
50public:
53 void PrintSelf(ostream& os, vtkIndent indent) override;
54
56 vtkProp3D* GetActorByID(const char* id);
57
59 const char* GetIDByActor(vtkProp3D* actor);
60
62 vtkWorldPointPicker* GetWorldPointPicker();
63
65 vtkPropPicker* GetPropPicker();
66
68 vtkCellPicker* GetCellPicker();
69
71 vtkPointPicker* GetPointPicker();
72
75 int Pick(int x, int y);
76
79 int Pick3D(double ras[3]) override;
80
84 void SetPickTolerance(double tolerance);
85
87 const char* GetPickedNodeID() override;
88
90 double* GetPickedRAS() VTK_SIZEHINT(3);
92 void SetPickedRAS(double* newPickedRAS);
93
95 vtkIdType GetPickedCellID();
97 void SetPickedCellID(vtkIdType newCellID);
98
100 vtkIdType GetPickedPointID();
102 void SetPickedPointID(vtkIdType newPointID);
103
105 bool IsModelDisplayable(vtkMRMLDisplayableNode* node)const;
107 bool IsModelDisplayable(vtkMRMLDisplayNode* node)const;
108
113 static bool IsCellScalarsActive(vtkMRMLDisplayNode* displayNode, vtkMRMLModelNode* model = nullptr);
114
115protected:
116 int ActiveInteractionModes() override;
117
118 void UnobserveMRMLScene() override;
119
120 void OnMRMLSceneStartClose() override;
121 void OnMRMLSceneEndClose() override;
122 void UpdateFromMRMLScene() override;
123 void OnMRMLSceneNodeAdded(vtkMRMLNode* node) override;
124 void OnMRMLSceneNodeRemoved(vtkMRMLNode* node) override;
125
126 void OnInteractorStyleEvent(int eventId) override;
127 void ProcessMRMLNodesEvents(vtkObject* caller, unsigned long event, void* callData) override;
128
131 bool OnMRMLDisplayableModelNodeModifiedEvent(vtkMRMLDisplayableNode* modelNode);
132
134 void UpdateFromMRML() override;
135
136 void RemoveMRMLObservers() override;
137
138 void RemoveModelProps();
139 void RemoveModelObservers(int clearCache);
140 void RemoveDisplayable(vtkMRMLDisplayableNode* model);
141 void RemoveDisplayableNodeObservers(vtkMRMLDisplayableNode* model);
142
143 void UpdateModelsFromMRML();
144 void UpdateModel(vtkMRMLDisplayableNode* model);
145 void UpdateModelMesh(vtkMRMLDisplayableNode* model);
146 void UpdateModifiedModel(vtkMRMLDisplayableNode* model);
147
148 void SetModelDisplayProperty(vtkMRMLDisplayableNode* model);
149 int GetDisplayedModelsVisibility(vtkMRMLDisplayNode* displayNode);
150
151 const char* GetActiveScalarName(vtkMRMLDisplayNode* displayNode,
152 vtkMRMLModelNode* model = nullptr);
153
155 vtkAlgorithm* GetClipper(vtkMRMLDisplayNode* dnode,
156 vtkMRMLModelNode::MeshTypeHint type,
157 vtkImplicitFunction* clipFunction,
158 int clipMethod);
159
160 void RemoveDisplayedID(const std::string& id);
161 void ClearDisplayMaps();
162
163 void UpdateMapperProperties(vtkMRMLModelNode* modelNode, vtkMRMLDisplayNode* displayNode,
164 vtkMapper* actor);
165 void UpdateActorProperties(vtkMRMLModelNode* modelNode, vtkMRMLModelDisplayNode* modelDisplayNode, vtkMRMLDisplayNode* displayNode,
166 vtkActor* actor, double opacity);
167 void UpdateCapActorProperties(vtkMRMLModelNode* modelNode, vtkMRMLModelDisplayNode* modelDisplayNode, vtkMRMLDisplayNode* displayNode,
168 vtkActor* capActor, double opacity);
169
170protected:
173
174private:
176 void operator=(const vtkMRMLModelDisplayableManager&) = delete;
177
178 class vtkInternal;
179 vtkInternal* Internal;
180};
181
182#endif
MRML node to represent three clipping planes.
Abstract class that contains graphical display properties for displayable nodes.
MRML node to represent a display property of 3D surface model.
Manage display nodes with polydata in 3D views.
int Pick3D(double ras[3]) override
vtkWorldPointPicker * GetWorldPointPicker()
Get world point picker.
vtkPointPicker * GetPointPicker()
Get point picker.
const char * GetPickedNodeID() override
Get the MRML ID of the picked node, returns empty string if no pick.
const char * GetIDByActor(vtkProp3D *actor)
Return the current node ID corresponding to a given vtkProp3D.
vtkCellPicker * GetCellPicker()
Get cell picker.
double * GetPickedRAS() VTK_SIZEHINT(3)
Get the picked RAS point, returns 0,0,0 if no pick.
vtkProp3D * GetActorByID(const char *id)
Return the current model actor corresponding to a give MRML ID.
vtkPropPicker * GetPropPicker()
Get property picker.
double GetPickTolerance()
Get tolerance for Pick() method. It will call vtkCellPicker.GetTolerance()
void SetPickTolerance(double tolerance)
Set tolerance for Pick() method. It will call vtkCellPicker.SetTolerance()
void PrintSelf(ostream &os, vtkIndent indent) override
static vtkMRMLModelDisplayableManager * New()
MRML node to represent a 3D surface model.
Abstract Superclass for all specific types of MRML nodes.
MRML node for representing a transformation between this node space and a parent node space.