vtkMRMLTransformNode.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 Doc/copyright/copyright.txt
00006   or http://www.slicer.org/copyright/copyright.txt for details.
00007 
00008   Program:   3D Slicer
00009   Module:    $RCSfile: vtkMRMLTransformNode.h,v $
00010   Date:      $Date: 2006/03/19 17:12:29 $
00011   Version:   $Revision: 1.13 $
00012 
00013 =========================================================================auto=*/
00018 
00019 #ifndef __vtkMRMLTransformNode_h
00020 #define __vtkMRMLTransformNode_h
00021 
00022 #include "vtkMRMLStorableNode.h"
00023 
00024 #include "vtkGeneralTransform.h"
00025 #include "vtkMatrix4x4.h"
00026 
00027 class vtkMRMLStorageNode;
00028 
00029 class VTK_MRML_EXPORT vtkMRMLTransformNode : public vtkMRMLStorableNode
00030 {
00031   public:
00032   static vtkMRMLTransformNode *New(){return NULL;};
00033   vtkTypeMacro(vtkMRMLTransformNode,vtkMRMLStorableNode);
00034   void PrintSelf(ostream& os, vtkIndent indent);
00035 
00036   virtual vtkMRMLNode* CreateNodeInstance() = 0;
00037 
00040   virtual void ReadXMLAttributes( const char** atts);
00041 
00044   virtual void WriteXML(ostream& of, int indent);
00045 
00048   virtual void Copy(vtkMRMLNode *node);
00049 
00052   virtual const char* GetNodeTagName() = 0;
00053 
00056   virtual void UpdateScene(vtkMRMLScene *scene){
00057      Superclass::UpdateScene(scene);
00058   };
00059 
00062   virtual int IsLinear() = 0;
00063 
00066   virtual vtkGeneralTransform* GetTransformToParent() {
00067      return this->TransformToParent; };
00068 
00071   int  IsTransformToWorldLinear() ;
00072 
00075   int  IsTransformToNodeLinear(vtkMRMLTransformNode* node);
00076 
00079   void GetTransformToWorld(vtkGeneralTransform* transformToWorld);
00080 
00083   void GetTransformToNode(vtkMRMLTransformNode* node, 
00084                           vtkGeneralTransform* transformToNode);
00085 
00088   virtual int GetMatrixTransformToWorld(vtkMatrix4x4* transformToWorld) = 0;
00089 
00092   virtual int GetMatrixTransformToNode(vtkMRMLTransformNode* node, 
00093                                        vtkMatrix4x4* transformToNode) = 0;
00096   int IsTransformNodeMyParent(vtkMRMLTransformNode* node);
00097 
00100   int IsTransformNodeMyChild(vtkMRMLTransformNode* node);
00101 
00102   virtual bool CanApplyNonLinearTransforms() { return true; }
00103   virtual void ApplyTransform(vtkAbstractTransform* transform);
00104   virtual void ApplyTransform(vtkMatrix4x4* transformMatrix)
00105     { Superclass::ApplyTransform(transformMatrix); }
00106 
00109   virtual vtkMRMLStorageNode* CreateDefaultStorageNode();
00110 
00111 protected:
00112   vtkMRMLTransformNode();
00113   ~vtkMRMLTransformNode();
00114   vtkMRMLTransformNode(const vtkMRMLTransformNode&);
00115   void operator=(const vtkMRMLTransformNode&);
00116 
00117   vtkGeneralTransform* TransformToParent;
00118 
00119 };
00120 
00121 #endif
00122 

Generated on 6 Apr 2011 for Slicer3 by  doxygen 1.6.1