vtkMRMLDisplayableNode.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
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 * ,
00120 unsigned long ,
00121 void * );
00122
00123
00127 enum
00128 {
00129 DisplayModifiedEvent = 17000,
00130 PolyDataModifiedEvent = 17001
00131 };
00132
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
00159 std::vector<std::string> DisplayNodeIDs;
00160
00161 std::vector<vtkMRMLDisplayNode *> DisplayNodes;
00162
00163 };
00164
00165 #endif