vtkMRMLDisplayableNode.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: vtkMRMLDisplayableNode.h,v $
00010   Date:      $Date: 2006/03/19 17:12:28 $
00011   Version:   $Revision: 1.6 $
00012 
00013 =========================================================================auto=*/
00019 
00020 #ifndef __vtkMRMLDisplayableNode_h
00021 #define __vtkMRMLDisplayableNode_h
00022 
00023 #include <string>
00024 
00025 #include "vtkPolyData.h" 
00026 #include "vtkMatrix4x4.h"
00027 
00028 #include "vtkMRML.h"
00029 #include "vtkMRMLScene.h"
00030 #include "vtkMRMLNode.h"
00031 #include "vtkMRMLStorableNode.h"
00032 #include "vtkMRMLDisplayNode.h"
00033 
00034 class vtkCallbackCommand;
00035 class vtkFloatArray;
00036 class VTK_MRML_EXPORT vtkMRMLDisplayableNode : public vtkMRMLStorableNode
00037 {
00038 public:
00039   static vtkMRMLDisplayableNode *New(){return NULL;};
00040   vtkTypeMacro(vtkMRMLDisplayableNode,vtkMRMLStorableNode);
00041   void PrintSelf(ostream& os, vtkIndent indent);
00042   
00043   //--------------------------------------------------------------------------
00045   //--------------------------------------------------------------------------
00046 
00047   virtual vtkMRMLNode* CreateNodeInstance() = 0;
00048 
00049   virtual const char* GetNodeTagName() = 0;
00050 
00053   virtual void ReadXMLAttributes( const char** atts);
00054   
00057   virtual void WriteXML(ostream& of, int indent);
00058 
00061   virtual void Copy(vtkMRMLNode *node);
00062 
00066   virtual void UpdateReferences();
00067 
00071   virtual void UpdateScene(vtkMRMLScene *scene);
00072 
00075   virtual void UpdateReferenceID(const char *oldID, const char *newID);
00076 
00079   void SetAndObserveDisplayNodeID(const char *DisplayNodeID);
00080   void AddAndObserveDisplayNodeID(const char *DisplayNodeID);
00081   void SetAndObserveNthDisplayNodeID(int n, const char *DisplayNodeID);
00082 
00083   int GetNumberOfDisplayNodes()
00084     {
00085       return (int)this->DisplayNodeIDs.size();
00086     };
00087 
00088   const char *GetNthDisplayNodeID(int n)
00089   {
00090       if (n < 0 || n >= (int)this->DisplayNodeIDs.size())
00091       {
00092           return NULL;
00093       }
00094       return this->DisplayNodeIDs[n].c_str();
00095   };
00096 
00097   const char *GetDisplayNodeID()
00098     {
00099     return this->GetNthDisplayNodeID(0);
00100     };
00101 
00104   vtkMRMLDisplayNode* GetNthDisplayNode(int n);
00105 
00106   vtkMRMLDisplayNode* GetDisplayNode()
00107     {
00108     return this->GetNthDisplayNode(0);
00109     };
00110     
00113   vtkGetObjectMacro(PolyData, vtkPolyData);
00114   virtual void SetAndObservePolyData(vtkPolyData *PolyData);
00115 
00116 
00119   virtual void ProcessMRMLEvents ( vtkObject * /*caller*/, 
00120                                    unsigned long /*event*/, 
00121                                    void * /*callData*/ );
00122   
00123 //BTX
00127   enum
00128     {
00129       DisplayModifiedEvent = 17000,
00130       PolyDataModifiedEvent = 17001
00131     };
00132 //ETX
00133 
00136   virtual vtkMRMLStorageNode* CreateDefaultStorageNode()
00137     {
00138     return Superclass::CreateDefaultStorageNode();
00139     };
00140 
00141  protected:
00142   vtkMRMLDisplayableNode();
00143   ~vtkMRMLDisplayableNode();
00144   vtkMRMLDisplayableNode(const vtkMRMLDisplayableNode&);
00145   void operator=(const vtkMRMLDisplayableNode&);
00146 
00147   void SetDisplayNodeID(const char* id) ;
00148   void SetNthDisplayNodeID(int n, const char* id);
00149   void AddDisplayNodeID(const char* id);
00150   void AddAndObserveDisplayNode(vtkMRMLDisplayNode *dnode);
00151 
00152   vtkSetObjectMacro(PolyData, vtkPolyData);
00153 
00154 
00156   vtkPolyData *PolyData;
00157 
00158 //BTX
00159   std::vector<std::string> DisplayNodeIDs;
00160  
00161   std::vector<vtkMRMLDisplayNode *> DisplayNodes;
00162 //ETX
00163 };
00164 
00165 #endif

Generated on 6 Apr 2011 for Slicer3 by  doxygen 1.6.1