Slicer 4.2
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
vtkMRMLStorableNode.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: 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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines