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
1.6.1