Slicer 5.6
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>
23
24// VTK includes
25#include "vtkRenderWindow.h"
26class vtkActor;
27class vtkAlgorithm;
28class vtkCellPicker;
29class vtkLookupTable;
30class vtkMatrix4x4;
31class vtkPlane;
32class vtkPointPicker;
33class vtkProp3D;
34class vtkPropPicker;
35class vtkWorldPointPicker;
36
45class VTK_MRML_DISPLAYABLEMANAGER_EXPORT vtkMRMLModelDisplayableManager
47{
48public:
51 void PrintSelf(ostream& os, vtkIndent indent) override;
52
56
58 vtkProp3D *GetActorByID(const char *id);
59
61 const char *GetIDByActor(vtkProp3D *actor);
62
64 vtkWorldPointPicker* GetWorldPointPicker();
65
67 vtkPropPicker* GetPropPicker();
68
70 vtkCellPicker* GetCellPicker();
71
73 vtkPointPicker* GetPointPicker();
74
77 int Pick(int x, int y);
78
81 int Pick3D(double ras[3]) override;
82
86 void SetPickTolerance(double tolerance);
87
89 const char* GetPickedNodeID() override;
90
92 double* GetPickedRAS() VTK_SIZEHINT(3);
94 void SetPickedRAS(double* newPickedRAS);
95
97 vtkIdType GetPickedCellID();
99 void SetPickedCellID(vtkIdType newCellID);
100
102 vtkIdType GetPickedPointID();
104 void SetPickedPointID(vtkIdType newPointID);
105
106 void SetClipPlaneFromMatrix(vtkMatrix4x4 *sliceMatrix,
107 int planeDirection,
108 vtkPlane *plane);
109
111 bool IsModelDisplayable(vtkMRMLDisplayableNode* node)const;
113 bool IsModelDisplayable(vtkMRMLDisplayNode* node)const;
114
119 static bool IsCellScalarsActive(vtkMRMLDisplayNode* displayNode, vtkMRMLModelNode* model = nullptr);
120
121protected:
122 int ActiveInteractionModes() override;
123
124 void UnobserveMRMLScene() override;
125
126 void OnMRMLSceneStartClose() override;
127 void OnMRMLSceneEndClose() override;
128 void UpdateFromMRMLScene() override;
129 void OnMRMLSceneNodeAdded(vtkMRMLNode* node) override;
130 void OnMRMLSceneNodeRemoved(vtkMRMLNode* node) override;
131
132 void OnInteractorStyleEvent(int eventId) override;
133 void ProcessMRMLNodesEvents(vtkObject *caller, unsigned long event, void *callData) override;
134
137 bool OnMRMLDisplayableModelNodeModifiedEvent(vtkMRMLDisplayableNode* modelNode);
138
140 void UpdateFromMRML() override;
141
142 void RemoveMRMLObservers() override;
143
144 void RemoveModelProps();
145 void RemoveModelObservers(int clearCache);
146 void RemoveDisplayable(vtkMRMLDisplayableNode* model);
147 void RemoveDisplayableNodeObservers(vtkMRMLDisplayableNode* model);
148
149 void UpdateModelsFromMRML();
150 void UpdateModel(vtkMRMLDisplayableNode* model);
151 void UpdateModelMesh(vtkMRMLDisplayableNode* model);
152 void UpdateModifiedModel(vtkMRMLDisplayableNode* model);
153
154 void SetModelDisplayProperty(vtkMRMLDisplayableNode* model);
155 int GetDisplayedModelsVisibility(vtkMRMLDisplayNode* displayNode);
156
157 const char* GetActiveScalarName(vtkMRMLDisplayNode* displayNode,
158 vtkMRMLModelNode* model = nullptr);
159
161 int UpdateClipSlicesFromMRML();
162 vtkAlgorithm *CreateTransformedClipper(vtkMRMLTransformNode *tnode,
163 vtkMRMLModelNode::MeshTypeHint type);
164
165 void RemoveDisplayedID(std::string &id);
166
167protected:
170
171private:
173 void operator=(const vtkMRMLModelDisplayableManager&) = delete;
174
175 class vtkInternal;
176 vtkInternal* Internal;
177};
178
179#endif
MRML node to represent three clipping planes.
Abstract class that contains graphical display properties for displayable nodes.
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.
vtkMRMLClipModelsNode * GetClipModelsNode()
Get/Set the ClipModels Node.
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
void SetClipModelsNode(vtkMRMLClipModelsNode *snode)
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.