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
vtkMRMLTransformableNode.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: vtkMRMLTransformableNode.h,v $
10  Date: $Date: 2006/03/19 17:12:29 $
11  Version: $Revision: 1.13 $
12 
13 =========================================================================auto=*/
14 
15 #ifndef __vtkMRMLTransformableNode_h
16 #define __vtkMRMLTransformableNode_h
17 
18 // MRML includes
19 #include "vtkMRMLStorableNode.h"
20 #include "vtkVector.h"
22 
23 // VTK includes
24 class vtkAbstractTransform;
25 class vtkMatrix4x4;
26 
31 class VTK_MRML_EXPORT vtkMRMLTransformableNode : public vtkMRMLStorableNode
32 {
33 public:
35  void PrintSelf(ostream& os, vtkIndent indent) override;
36 
37  vtkMRMLNode* CreateNodeInstance() override = 0;
38 
41  void ReadXMLAttributes( const char** atts) override;
42 
45  void WriteXML(ostream& of, int indent) override;
46 
49  const char* GetNodeTagName() override = 0;
50 
59  bool SetAndObserveTransformNodeID(const char *transformNodeID);
60 
63  vtkMRMLTransformNode* GetParentTransformNode();
64 
67  void ProcessMRMLEvents ( vtkObject * /*caller*/,
68  unsigned long /*event*/,
69  void * /*callData*/ ) override;
70 
72  enum
73  {
74  TransformModifiedEvent = 15000
75  };
76 
80  virtual bool CanApplyNonLinearTransforms()const;
81 
85  virtual void ApplyTransformMatrix(vtkMatrix4x4* transformMatrix);
86 
89  virtual void ApplyTransform(vtkAbstractTransform* transform);
90 
96  virtual void TransformPointToWorld(const double inLocal[3], double outWorld[3]);
97 
100  virtual void TransformPointToWorld(const vtkVector3d &inLocal, vtkVector3d &outWorld);
101 
104  virtual void TransformPointFromWorld(const double inWorld[3], double outLocal[3]);
105 
108  virtual void TransformPointFromWorld(const vtkVector3d &inWorld, vtkVector3d &outLocal);
109 
111  const char *GetTransformNodeID();
112 
115  bool HardenTransform();
116 
117 protected:
119  ~vtkMRMLTransformableNode() override;
121  void operator=(const vtkMRMLTransformableNode&);
122 
123  static const char* TransformNodeReferenceRole;
125 
126  virtual const char* GetTransformNodeReferenceRole();
127  virtual const char* GetTransformNodeReferenceMRMLAttributeName();
128 
131  void OnNodeReferenceAdded(vtkMRMLNodeReference *reference) override;
132 
135  void OnNodeReferenceModified(vtkMRMLNodeReference *reference) override;
136 
139  void OnNodeReferenceRemoved(vtkMRMLNodeReference *reference) override;
140 
142  virtual void OnTransformNodeReferenceChanged(vtkMRMLTransformNode* transformNode);
143 
144 private:
145  char* TransformNodeIDInternal;
146  vtkSetStringMacro(TransformNodeIDInternal);
147  vtkGetStringMacro(TransformNodeIDInternal);
148 
149 };
150 
151 #endif
MRML node for representing a transformation between this node space and a parent node space...
static const char * TransformNodeReferenceMRMLAttributeName
void ReadXMLAttributes(const char **atts) override
Read node attributes from XML file
virtual void OnNodeReferenceModified(vtkMRMLNodeReference *reference)
Called when a referenced node pointer is modified.
Definition: vtkMRMLNode.h:936
vtkMRMLNode * CreateNodeInstance() override=0
MRMLNode methods.
MRML node to represent a 3D surface model.
virtual void OnNodeReferenceRemoved(vtkMRMLNodeReference *reference)
Called when a referenced node pointer is removed (set to nullptr).
Definition: vtkMRMLNode.h:942
static const char * TransformNodeReferenceRole
void ProcessMRMLEvents(vtkObject *, unsigned long, void *) override
alternative method to propagate events generated in Storage nodes
virtual void OnNodeReferenceAdded(vtkMRMLNodeReference *reference)
Definition: vtkMRMLNode.h:930
Abstract Superclass for all specific types of MRML nodes.
Definition: vtkMRMLNode.h:167
Class to hold information about a node reference.
Definition: vtkMRMLNode.h:801
void operator=(const vtkMRMLStorableNode &)
const char * GetNodeTagName() override=0
MRML node for representing a node with a transform.
void WriteXML(ostream &of, int indent) override
Write this node's information to a MRML file in XML format.
void PrintSelf(ostream &os, vtkIndent indent) override