Slicer  5.0
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
vtkMRMLModelNode.h
Go to the documentation of this file.
1 /*=auto=========================================================================
2 
3  Portions (c) 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  Program: 3D Slicer
9  Module: $RCSfile: vtkMRMLModelNode.h,v $
10  Date: $Date: 2006/03/19 17:12:28 $
11  Version: $Revision: 1.6 $
12 
13 =========================================================================auto=*/
14 
15 #ifndef __vtkMRMLModelNode_h
16 #define __vtkMRMLModelNode_h
17 
18 // MRML includes
19 #include "vtkMRMLDisplayableNode.h"
21 class vtkMRMLStorageNode;
22 
23 // VTK includes
24 class vtkAlgorithmOutput;
25 class vtkAssignAttributes;
26 class vtkEventForwarderCommand;
27 class vtkDataArray;
28 class vtkPointSet;
29 class vtkPolyData;
30 class vtkTransformFilter;
31 class vtkUnstructuredGrid;
32 class vtkMRMLDisplayNode;
33 
42 class VTK_MRML_EXPORT vtkMRMLModelNode : public vtkMRMLDisplayableNode
43 {
44 public:
45  static vtkMRMLModelNode *New();
47  void PrintSelf(ostream& os, vtkIndent indent) override;
48 
49  //--------------------------------------------------------------------------
51  //--------------------------------------------------------------------------
52 
53  vtkMRMLNode* CreateNodeInstance() override;
54 
56  const char* GetNodeTagName() override {return "Model";};
57 
61 
63  void ProcessMRMLEvents ( vtkObject * /*caller*/,
64  unsigned long /*event*/,
65  void * /*callData*/ ) override;
66 
68  vtkMRMLModelDisplayNode* GetModelDisplayNode();
69 
72  virtual void SetAndObserveMesh(vtkPointSet *Mesh);
73 
76  virtual void SetAndObservePolyData(vtkPolyData *polyData);
77 
80  virtual vtkPointSet* GetMesh();
81 
84  virtual vtkPolyData* GetPolyData();
85 
89  virtual vtkUnstructuredGrid* GetUnstructuredGrid();
90 
94  virtual void SetPolyDataConnection(vtkAlgorithmOutput *inputPort);
95 
99  virtual void SetUnstructuredGridConnection(vtkAlgorithmOutput *inputPort);
100 
103  vtkGetObjectMacro(MeshConnection,vtkAlgorithmOutput)
104 
105 
106  virtual vtkAlgorithmOutput* GetPolyDataConnection();
109 
113  virtual vtkAlgorithmOutput* GetUnstructuredGridConnection();
114 
117  typedef enum {
118  PolyDataMeshType = 0,
119  UnstructuredGridMeshType
120  } MeshTypeHint;
121 
127  vtkGetMacro(MeshType, MeshTypeHint);
128 
135  enum
136  {
137  MeshModifiedEvent = 17001,
138  PolyDataModifiedEvent = 17001
139  };
140 
143  void AddPointScalars(vtkDataArray *array);
144 
147  void AddCellScalars(vtkDataArray *array);
148 
152  void AddScalars(vtkDataArray *array, int location);
153 
155  void RemoveScalars(const char *scalarName);
156 
160  bool HasPointScalarName(const char* scalarName);
161 
165  bool HasCellScalarName(const char* scalarName);
166 
174  int SetActivePointScalars(const char *scalarName, int attributeType);
175 
181  const char *GetActivePointScalarName(int type);
182 
190  int SetActiveCellScalars(const char *scalarName, int attributeType);
191 
196  const char *GetActiveCellScalarName(int type);
197 
201  static int GetAttributeTypeFromString(const char* typeName);
202 
213  int CompositeScalars(const char* backgroundName, const char* overlayName,
214  float overlayMin, float overlayMax,
215  int showOverlayPositive, int showOverlayNegative,
216  int reverseOverlay);
217 
222  void GetRASBounds(double bounds[6]) override;
223 
227  void GetBounds(double bounds[6]) override;
228 
233  virtual void TransformBoundsToRAS(double inputBounds_Local[6], double outputBounds_RAS[6]);
234 
235  bool CanApplyNonLinearTransforms()const override;
236  void ApplyTransform(vtkAbstractTransform* transform) override;
237 
239 
240  std::string GetDefaultStorageNodeClassName(const char* filename /* =nullptr */) override;
241 
243  void CreateDefaultDisplayNodes() override;
244 
252  bool GetModifiedSinceRead() override;
253 
259  bool ShowDefaultScalarData();
260 
261 protected:
263  ~vtkMRMLModelNode() override;
265  void operator=(const vtkMRMLModelNode&);
266 
268  virtual void SetMeshConnection(vtkAlgorithmOutput *inputPort);
269 
272  virtual void UpdateDisplayNodeMesh(vtkMRMLDisplayNode *dnode);
273 
276  void OnNodeReferenceAdded(vtkMRMLNodeReference *reference) override;
277 
280  void OnNodeReferenceModified(vtkMRMLNodeReference *reference) override;
281 
282 
285  void SetMeshToDisplayNodes();
286 
289  virtual void SetMeshToDisplayNode(vtkMRMLModelDisplayNode* modelDisplayNode);
290 
292  vtkAlgorithmOutput* MeshConnection;
293  vtkEventForwarderCommand* DataEventForwarder;
295 };
296 
297 #endif
void ProcessMRMLEvents(vtkObject *, unsigned long, void *) override
alternative method to propagate events generated in Display nodes
vtkEventForwarderCommand * DataEventForwarder
MRML node to represent a display property of 3D surface model.
virtual vtkMRMLStorageNode * CreateDefaultStorageNode()
virtual void GetBounds(double bounds[6])
MRML node to represent a 3D surface model.
virtual bool GetModifiedSinceRead()
void OnNodeReferenceAdded(vtkMRMLNodeReference *reference) override
Called when a node reference ID is added (list size increased).
virtual void ApplyTransform(vtkAbstractTransform *transform)
void operator=(const vtkMRMLDisplayableNode &)
const char * GetNodeTagName() override
Get node XML tag name (like Volume, Model)
virtual std::string GetDefaultStorageNodeClassName(const char *filename=nullptr)
void PrintSelf(ostream &os, vtkIndent indent) override
virtual void CreateDefaultDisplayNodes()
A superclass for other storage nodes.
vtkMRMLNode * CreateNodeInstance() override=0
MRMLNode methods.
vtkMRMLCopyContentMacro(vtkMRMLStorableNode)
vtkAlgorithmOutput * MeshConnection
Data.
virtual bool CanApplyNonLinearTransforms() const
Abstract class that contains graphical display properties for displayable nodes.
Abstract Superclass for all specific types of MRML nodes.
Definition: vtkMRMLNode.h:167
void OnNodeReferenceModified(vtkMRMLNodeReference *reference) override
Called when a node reference ID is modified.
virtual void GetRASBounds(double bounds[6])
MeshTypeHint MeshType