Slicer 5.9
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 : public vtkMRMLAbstractThreeDViewDisplayableManager
48{
49public:
52 void PrintSelf(ostream& os, vtkIndent indent) override;
53
55 vtkProp3D* GetActorByID(const char* id);
56
58 const char* GetIDByActor(vtkProp3D* actor);
59
61 vtkWorldPointPicker* GetWorldPointPicker();
62
64 vtkPropPicker* GetPropPicker();
65
67 vtkCellPicker* GetCellPicker();
68
70 vtkPointPicker* GetPointPicker();
71
74 int Pick(int x, int y);
75
78 int Pick3D(double ras[3]) override;
79
83 void SetPickTolerance(double tolerance);
84
86 const char* GetPickedNodeID() override;
87
89 double* GetPickedRAS() VTK_SIZEHINT(3);
91 void SetPickedRAS(double* newPickedRAS);
92
94 vtkIdType GetPickedCellID();
96 void SetPickedCellID(vtkIdType newCellID);
97
99 vtkIdType GetPickedPointID();
101 void SetPickedPointID(vtkIdType newPointID);
102
107
112 static bool IsCellScalarsActive(vtkMRMLDisplayNode* displayNode, vtkMRMLModelNode* model = nullptr);
113
114protected:
116
117 void UnobserveMRMLScene() override;
118
119 void OnMRMLSceneStartClose() override;
120 void OnMRMLSceneEndClose() override;
121 void UpdateFromMRMLScene() override;
122 void OnMRMLSceneNodeAdded(vtkMRMLNode* node) override;
124
125 void OnInteractorStyleEvent(int eventId) override;
126 void ProcessMRMLNodesEvents(vtkObject* caller, unsigned long event, void* callData) override;
127
131
133 void UpdateFromMRML() override;
134
135 void RemoveMRMLObservers() override;
136
138 void RemoveModelObservers(int clearCache);
141
146
149
150 const char* GetActiveScalarName(vtkMRMLDisplayNode* displayNode, vtkMRMLModelNode* model = nullptr);
151
153 vtkAlgorithm* GetClipper(vtkMRMLDisplayNode* dnode, vtkMRMLModelNode::MeshTypeHint type, vtkImplicitFunction* clipFunction, int clipMethod);
154
155 void RemoveDisplayedID(const std::string& id);
157
158 void UpdateMapperProperties(vtkMRMLModelNode* modelNode, vtkMRMLDisplayNode* displayNode, vtkMapper* actor);
159 void UpdateActorProperties(vtkMRMLModelNode* modelNode, vtkMRMLModelDisplayNode* modelDisplayNode, vtkMRMLDisplayNode* displayNode, vtkActor* actor, double opacity);
160 void UpdateCapActorProperties(vtkMRMLModelNode* modelNode, vtkMRMLModelDisplayNode* modelDisplayNode, vtkMRMLDisplayNode* displayNode, vtkActor* capActor, double opacity);
161
162protected:
165
166private:
168 void operator=(const vtkMRMLModelDisplayableManager&) = delete;
169
170 class vtkInternal;
171 vtkInternal* Internal;
172};
173
174#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.
void OnMRMLSceneNodeAdded(vtkMRMLNode *node) override
vtkIdType GetPickedPointID()
Get the picked point id, returns -1 if no pick.
void UpdateModelMesh(vtkMRMLDisplayableNode *model)
void OnMRMLSceneNodeRemoved(vtkMRMLNode *node) override
void UpdateModifiedModel(vtkMRMLDisplayableNode *model)
void SetPickedRAS(double *newPickedRAS)
Set the picked RAS point, returns 0,0,0 if no pick.
int Pick3D(double ras[3]) override
vtkWorldPointPicker * GetWorldPointPicker()
Get world point picker.
vtkPointPicker * GetPointPicker()
Get point picker.
void UpdateFromMRML() override
Updates Actors based on models in the scene.
const char * GetPickedNodeID() override
Get the MRML ID of the picked node, returns empty string if no pick.
static bool IsCellScalarsActive(vtkMRMLDisplayNode *displayNode, vtkMRMLModelNode *model=nullptr)
const char * GetIDByActor(vtkProp3D *actor)
Return the current node ID corresponding to a given vtkProp3D.
void UpdateMapperProperties(vtkMRMLModelNode *modelNode, vtkMRMLDisplayNode *displayNode, vtkMapper *actor)
const char * GetActiveScalarName(vtkMRMLDisplayNode *displayNode, vtkMRMLModelNode *model=nullptr)
vtkCellPicker * GetCellPicker()
Get cell picker.
void SetPickedCellID(vtkIdType newCellID)
Set the picked cell id, returns -1 if no pick.
void UnobserveMRMLScene() override
void ProcessMRMLNodesEvents(vtkObject *caller, unsigned long event, void *callData) override
void RemoveDisplayable(vtkMRMLDisplayableNode *model)
int GetDisplayedModelsVisibility(vtkMRMLDisplayNode *displayNode)
bool OnMRMLDisplayableModelNodeModifiedEvent(vtkMRMLDisplayableNode *modelNode)
double * GetPickedRAS() VTK_SIZEHINT(3)
Get the picked RAS point, returns 0,0,0 if no pick.
void SetPickedPointID(vtkIdType newPointID)
Set the picked point id, returns -1 if no pick.
vtkProp3D * GetActorByID(const char *id)
Return the current model actor corresponding to a give MRML ID.
vtkAlgorithm * GetClipper(vtkMRMLDisplayNode *dnode, vtkMRMLModelNode::MeshTypeHint type, vtkImplicitFunction *clipFunction, int clipMethod)
Returns not null if modified.
vtkPropPicker * GetPropPicker()
Get property picker.
void SetModelDisplayProperty(vtkMRMLDisplayableNode *model)
double GetPickTolerance()
Get tolerance for Pick() method. It will call vtkCellPicker.GetTolerance()
void OnMRMLSceneStartClose() override
void SetPickTolerance(double tolerance)
Set tolerance for Pick() method. It will call vtkCellPicker.SetTolerance()
void RemoveDisplayedID(const std::string &id)
void PrintSelf(ostream &os, vtkIndent indent) override
int ActiveInteractionModes() override
void RemoveDisplayableNodeObservers(vtkMRMLDisplayableNode *model)
void OnMRMLSceneEndClose() override
bool IsModelDisplayable(vtkMRMLDisplayableNode *node) const
Return true if the node can be represented as a model.
void UpdateActorProperties(vtkMRMLModelNode *modelNode, vtkMRMLModelDisplayNode *modelDisplayNode, vtkMRMLDisplayNode *displayNode, vtkActor *actor, double opacity)
void UpdateCapActorProperties(vtkMRMLModelNode *modelNode, vtkMRMLModelDisplayNode *modelDisplayNode, vtkMRMLDisplayNode *displayNode, vtkActor *capActor, double opacity)
void UpdateModel(vtkMRMLDisplayableNode *model)
void RemoveModelObservers(int clearCache)
static vtkMRMLModelDisplayableManager * New()
void RemoveMRMLObservers() override
Remove MRML observers.
void OnInteractorStyleEvent(int eventId) override
vtkIdType GetPickedCellID()
Get the picked cell id, returns -1 if no pick.
void UpdateFromMRMLScene() override
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.