Slicer 4.2
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
vtkMRMLDiffusionWeightedVolumeNode.h
Go to the documentation of this file.
00001 /*=auto=========================================================================
00002 
00003   Portions (c) Copyright 2005 Brigham and Women's Hospital (BWH) All Rights Reserved.
00004 
00005   See COPYRIGHT.txt
00006   or http://www.slicer.org/copyright/copyright.txt for details.
00007 
00008   Program:   3D Slicer
00009   Module:    $RCSfile: vtkMRMLVolumeNode.h,v $
00010   Date:      $Date: 2006/03/19 17:12:29 $
00011   Version:   $Revision: 1.13 $
00012 
00013 =========================================================================auto=*/
00014 
00015 #ifndef __vtkMRMLDiffusionWeightedVolumeNode_h
00016 #define __vtkMRMLDiffusionWeightedVolumeNode_h
00017 
00018 #include "vtkMRMLScalarVolumeNode.h"
00019 class vtkMRMLDiffusionWeightedVolumeDisplayNode;
00020 
00021 class vtkImageData;
00022 class vtkDoubleArray;
00023 class vtkImageExtractComponents;
00024 
00034 class VTK_MRML_EXPORT vtkMRMLDiffusionWeightedVolumeNode : public vtkMRMLScalarVolumeNode
00035 {
00036   public:
00037   static vtkMRMLDiffusionWeightedVolumeNode *New();
00038   vtkTypeMacro(vtkMRMLDiffusionWeightedVolumeNode,vtkMRMLScalarVolumeNode);
00039   void PrintSelf(ostream& os, vtkIndent indent);
00040 
00041   virtual vtkMRMLNode* CreateNodeInstance();
00042 
00045   virtual void ReadXMLAttributes( const char** atts);
00046 
00049   virtual void WriteXML(ostream& of, int indent);
00050 
00053   virtual void Copy(vtkMRMLNode *node);
00054 
00057   virtual const char* GetNodeTagName() {return "DiffusionWeightedVolume";};
00058 
00060   void SetNumberOfGradients(int val);
00061   vtkGetMacro(NumberOfGradients,int);
00062 
00064   void SetDiffusionGradient(int val, const double g[3]);
00065   void SetDiffusionGradients(vtkDoubleArray *grad);
00066   double *GetDiffusionGradient(int val);
00067   void GetDiffusionGradient(int val, double g[3]);  
00068   vtkGetObjectMacro(DiffusionGradients,vtkDoubleArray);
00069 
00071   void SetBValue (int val, const double b);
00072   void SetBValues (vtkDoubleArray *bValue);
00074 #ifdef GetBValue
00075 #undef GetBValue
00076 #endif
00077   double GetBValue(int val);
00078   vtkGetObjectMacro(BValues,vtkDoubleArray);
00079 
00082   void SetMeasurementFrameMatrix(const double mf[3][3]);
00083   void GetMeasurementFrameMatrix(double mf[3][3]);
00084   void SetMeasurementFrameMatrix(const double xr, const double xa, const double xs,
00085                            const double yr, const double ya, const double ys,
00086                            const double zr, const double za, const double zs);
00087 
00088   void SetMeasurementFrameMatrix(vtkMatrix4x4 *mat);
00089   void GetMeasurementFrameMatrix(vtkMatrix4x4 *mat);
00090  
00093   virtual vtkMRMLDiffusionWeightedVolumeDisplayNode* GetDiffusionWeightedVolumeDisplayNode();
00094 
00097   virtual vtkMRMLStorageNode* CreateDefaultStorageNode();
00098 
00099 protected:
00100   vtkMRMLDiffusionWeightedVolumeNode();
00101   ~vtkMRMLDiffusionWeightedVolumeNode();
00102   vtkMRMLDiffusionWeightedVolumeNode(const vtkMRMLDiffusionWeightedVolumeNode&);
00103   void operator=(const vtkMRMLDiffusionWeightedVolumeNode&);
00104   
00105   double MeasurementFrameMatrix[3][3];
00106   
00107   vtkDoubleArray *DiffusionGradients;
00108   vtkDoubleArray *BValues;
00109   
00110   int NumberOfGradients;
00111 
00112   vtkImageExtractComponents *ExtractComponents;
00113 
00114 };
00115 
00116 #endif
00117 
00118 
00119  
00120 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines