|
Slicer 4.2
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
|
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: vtkMRMLStorableNode.h,v $ 00010 Date: $Date: 2006/03/19 17:12:28 $ 00011 Version: $Revision: 1.6 $ 00012 00013 =========================================================================auto=*/ 00014 00015 #ifndef __vtkMRMLStorableNode_h 00016 #define __vtkMRMLStorableNode_h 00017 00018 // MRML includes 00019 #include "vtkMRMLTransformableNode.h" 00020 class vtkMRMLStorageNode; 00021 00022 // VTK includes 00023 class vtkTagTable; 00024 00025 // STD includes 00026 #include <vector> 00027 00033 class VTK_MRML_EXPORT vtkMRMLStorableNode : public vtkMRMLTransformableNode 00034 { 00035 public: 00036 vtkTypeMacro(vtkMRMLStorableNode,vtkMRMLTransformableNode); 00037 void PrintSelf(ostream& os, vtkIndent indent); 00038 00039 //-------------------------------------------------------------------------- 00041 //-------------------------------------------------------------------------- 00042 vtkGetObjectMacro ( UserTagTable, vtkTagTable ); 00043 00044 //-------------------------------------------------------------------------- 00046 //-------------------------------------------------------------------------- 00047 00048 virtual vtkMRMLNode* CreateNodeInstance() = 0; 00049 00050 virtual const char* GetNodeTagName() = 0; 00051 00054 virtual void ReadXMLAttributes( const char** atts); 00055 00058 virtual void WriteXML(ostream& of, int indent); 00059 00062 virtual void Copy(vtkMRMLNode *node); 00063 00066 virtual void UpdateScene(vtkMRMLScene *scene); 00067 00070 virtual void ProcessMRMLEvents ( vtkObject * /*caller*/, 00071 unsigned long /*event*/, 00072 void * /*callData*/ ); 00073 00076 void SetAndObserveStorageNodeID(const char *storageNodeID) 00077 { 00078 this->SetAndObserveNodeReferenceID(this->GetStorageNodeReferenceRole(), storageNodeID); 00079 } 00080 00081 void AddAndObserveStorageNodeID(const char *storageNodeID) 00082 { 00083 this->AddAndObserveNodeReferenceID(this->GetStorageNodeReferenceRole(), storageNodeID); 00084 } 00085 00086 void SetAndObserveNthStorageNodeID(int n, const char *storageNodeID) 00087 { 00088 this->SetAndObserveNthNodeReferenceID(this->GetStorageNodeReferenceRole(), n, storageNodeID); 00089 } 00090 00099 void SetSlicerDataType ( const char *type ); 00100 const char *GetSlicerDataType (); 00101 00102 int GetNumberOfStorageNodes() 00103 { 00104 return this->GetNumberOfNodeReferences(this->GetStorageNodeReferenceRole()); 00105 } 00106 00107 const char *GetNthStorageNodeID(int n) 00108 { 00109 return this->GetNthNodeReferenceID(this->GetStorageNodeReferenceRole(), n); 00110 } 00111 00112 const char *GetStorageNodeID() 00113 { 00114 return this->GetNthStorageNodeID(0); 00115 } 00116 00119 vtkMRMLStorageNode* GetNthStorageNode(int n); 00120 00121 vtkMRMLStorageNode* GetStorageNode(); 00122 00123 //std::vector<vtkMRMLStorageNode*> GetStorageNodes()const; 00124 00128 virtual vtkMRMLStorageNode* CreateDefaultStorageNode(); 00129 00143 virtual bool GetModifiedSinceRead(); 00144 00145 protected: 00146 vtkMRMLStorableNode(); 00147 ~vtkMRMLStorableNode(); 00148 vtkMRMLStorableNode(const vtkMRMLStorableNode&); 00149 void operator=(const vtkMRMLStorableNode&); 00150 00151 char* StorageNodeReferenceRole; 00152 char* StorageNodeReferenceRererenceMRMLAttributeName; 00153 00154 vtkSetStringMacro(StorageNodeReferenceRole); 00155 vtkGetStringMacro(StorageNodeReferenceRole); 00156 00157 vtkSetStringMacro(StorageNodeReferenceRererenceMRMLAttributeName); 00158 vtkGetStringMacro(StorageNodeReferenceRererenceMRMLAttributeName); 00159 00160 00161 vtkTagTable *UserTagTable; 00162 00166 std::string SlicerDataType; 00167 00175 virtual vtkTimeStamp GetStoredTime(); 00176 00185 vtkTimeStamp StorableModifiedTime; 00186 }; 00187 00188 #endif
1.7.4