Slicer  4.8
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
vtkMRMLVolumeNode.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: vtkMRMLVolumeNode.h,v $
10  Date: $Date: 2006/03/19 17:12:29 $
11  Version: $Revision: 1.13 $
12 
13 =========================================================================auto=*/
14 
15 #ifndef __vtkMRMLVolumeNode_h
16 #define __vtkMRMLVolumeNode_h
17 
18 // MRML includes
19 #include "vtkMRMLDisplayableNode.h"
21 
22 // VTK includes
23 class vtkAlgorithmOutput;
24 class vtkEventForwarderCommand;
25 class vtkImageData;
26 class vtkMatrix4x4;
27 
28 // ITK includes
29 #include "itkMetaDataDictionary.h"
30 
40 class VTK_MRML_EXPORT vtkMRMLVolumeNode : public vtkMRMLDisplayableNode
41 {
42 public:
44  void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
45 
46  virtual vtkMRMLNode* CreateNodeInstance() VTK_OVERRIDE = 0;
47 
50  virtual void ReadXMLAttributes( const char** atts) VTK_OVERRIDE;
51 
54  virtual void WriteXML(ostream& of, int indent) VTK_OVERRIDE;
55 
58  virtual void Copy(vtkMRMLNode *node) VTK_OVERRIDE;
59 
62  void CopyOrientation(vtkMRMLVolumeNode *node);
63 
64 
67  virtual const char* GetNodeTagName() VTK_OVERRIDE = 0;
68 
71  virtual void UpdateScene(vtkMRMLScene *scene) VTK_OVERRIDE;
72 
73  //--------------------------------------------------------------------------
75  //--------------------------------------------------------------------------
76 
83  static bool ComputeIJKToRASFromScanOrder(const char *order,
84  const double* spacing,
85  const int *dims,
86  bool centerImage,
87  vtkMatrix4x4 *IJKToRAS);
88 
89  static const char* ComputeScanOrderFromIJKToRAS(vtkMatrix4x4 *IJKToRAS);
90 
91  void SetIJKToRASDirections(double dirs[3][3]);
92  void SetIJKToRASDirections(double ir, double ia, double is,
93  double jr, double ja, double js,
94  double kr, double ka, double ks);
95  void SetIToRASDirection(double ir, double ia, double is);
96  void SetJToRASDirection(double jr, double ja, double js);
97  void SetKToRASDirection(double kr, double ka, double ks);
98 
99  void GetIJKToRASDirections(double dirs[3][3]);
100  void GetIToRASDirection(double dirs[3]);
101  void GetJToRASDirection(double dirs[3]);
102  void GetKToRASDirection(double dirs[3]);
103 
109  vtkGetVector3Macro (Spacing, double);
110  virtual void SetSpacing(double arg1, double arg2, double arg3);
111  virtual void SetSpacing(double arg[3]);
112  vtkGetVector3Macro (Origin, double);
113  virtual void SetOrigin(double arg1, double arg2, double arg3);
114  virtual void SetOrigin(double arg[3]);
115 
118  double GetMinSpacing();
119 
122  double GetMaxSpacing();
123 
128  void GetIJKToRASMatrix(vtkMatrix4x4* mat);
129  void GetRASToIJKMatrix(vtkMatrix4x4* mat);
130 
131  void GetIJKToRASDirectionMatrix(vtkMatrix4x4* mat);
132  void SetIJKToRASDirectionMatrix(vtkMatrix4x4* mat);
133 
137  void SetIJKToRASMatrix(vtkMatrix4x4* mat);
138  void SetRASToIJKMatrix(vtkMatrix4x4* mat);
139 
146  virtual void GetRASBounds(double bounds[6]) VTK_OVERRIDE;
147 
151  virtual void GetBounds(double bounds[6]) VTK_OVERRIDE;
152 
157  void GetSliceBounds(double bounds[6], vtkMatrix4x4* rasToSlice);
158 
161  virtual vtkMRMLVolumeDisplayNode* GetVolumeDisplayNode();
162 
173  void SetAndObserveImageData(vtkImageData *ImageData);
174  virtual vtkImageData* GetImageData();
178  virtual void SetImageDataConnection(vtkAlgorithmOutput *inputPort);
180  vtkGetObjectMacro(ImageDataConnection, vtkAlgorithmOutput);
181 
186  void ShiftImageDataExtentToZeroStart();
187 
190  virtual void ProcessMRMLEvents ( vtkObject * /*caller*/,
191  unsigned long /*event*/,
192  void * /*callData*/ ) VTK_OVERRIDE;
193 
195  enum
196  {
197  ImageDataModifiedEvent = 18001
198  };
199 
202  void SetMetaDataDictionary( const itk::MetaDataDictionary& );
203  const itk::MetaDataDictionary& GetMetaDataDictionary() const;
204 
205  virtual bool CanApplyNonLinearTransforms()const VTK_OVERRIDE;
206 
207  virtual void ApplyTransform(vtkAbstractTransform* transform) VTK_OVERRIDE;
208 
209  virtual void ApplyTransformMatrix(vtkMatrix4x4* transformMatrix) VTK_OVERRIDE;
210 
211  virtual void ApplyNonLinearTransform(vtkAbstractTransform* transform);
212 
213  virtual bool GetModifiedSinceRead() VTK_OVERRIDE;
214 protected:
216  ~vtkMRMLVolumeNode();
217  vtkMRMLVolumeNode(const vtkMRMLVolumeNode&);
218  void operator=(const vtkMRMLVolumeNode&);
219 
221  void SetImageDataToDisplayNodes();
222  void SetImageDataToDisplayNode(vtkMRMLVolumeDisplayNode* displayNode);
223 
226  virtual void UpdateDisplayNodeImageData(vtkMRMLDisplayNode *dnode);
227 
230  virtual void OnNodeReferenceAdded(vtkMRMLNodeReference *reference) VTK_OVERRIDE;
231 
234  virtual void OnNodeReferenceModified(vtkMRMLNodeReference *reference) VTK_OVERRIDE;
235 
239  virtual void GetBoundsInternal(double bounds[6], vtkMatrix4x4* rasToSlice, bool useTransform);
240 
242  double IJKToRASDirections[3][3];
243 
245  double Spacing[3];
246  double Origin[3];
247 
248  vtkAlgorithmOutput* ImageDataConnection;
249  vtkEventForwarderCommand* DataEventForwarder;
250 
251  itk::MetaDataDictionary Dictionary;
252 };
253 
254 #endif
MRML node for representing a volume display attributes.
Simplified inverse ITK transforms.
void PrintSelf(ostream &os, vtkIndent indent) VTK_OVERRIDE
A set of MRML Nodes that supports serialization and undo/redo.
Definition: vtkMRMLScene.h:54
MRML node for representing a volume (image stack).
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:135
Class to hold information about a node reference.
Definition: vtkMRMLNode.h:723
virtual vtkMRMLNode * CreateNodeInstance() VTK_OVERRIDE=0
MRMLNode methods.