00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00029 #ifndef __vtkEdgeTable_h
00030 #define __vtkEdgeTable_h
00031
00032 #include "vtkObject.h"
00033
00034 class vtkIdList;
00035 class vtkPoints;
00036 class vtkVoidArray;
00037
00038 class VTK_COMMON_EXPORT vtkEdgeTable : public vtkObject
00039 {
00040 public:
00042 static vtkEdgeTable *New();
00043
00044 vtkTypeMacro(vtkEdgeTable,vtkObject);
00045 void PrintSelf(ostream& os, vtkIndent indent);
00046
00048 void Initialize();
00049
00062 int InitEdgeInsertion(vtkIdType numPoints, int storeAttributes=0);
00063
00071 vtkIdType InsertEdge(vtkIdType p1, vtkIdType p2);
00072
00079 void InsertEdge(vtkIdType p1, vtkIdType p2, vtkIdType attributeId);
00080
00087 void InsertEdge(vtkIdType p1, vtkIdType p2, void* ptr);
00088
00094 vtkIdType IsEdge(vtkIdType p1, vtkIdType p2);
00095
00099 void IsEdge(vtkIdType p1, vtkIdType p2, void* &ptr);
00100
00104 int InitPointInsertion(vtkPoints *newPts, vtkIdType estSize);
00105
00107
00110 int InsertUniquePoint(vtkIdType p1, vtkIdType p2, double x[3],
00111 vtkIdType &ptId);
00113
00115
00116 vtkGetMacro(NumberOfEdges, vtkIdType);
00118
00120 void InitTraversal();
00121
00126 vtkIdType GetNextEdge(vtkIdType &p1, vtkIdType &p2);
00127
00131 int GetNextEdge(vtkIdType &p1, vtkIdType &p2, void* &ptr);
00132
00135 void Reset();
00136
00137 protected:
00138 vtkEdgeTable();
00139 ~vtkEdgeTable();
00140
00141 vtkIdList **Table;
00142 vtkIdType TableMaxId;
00143 vtkIdType TableSize;
00144 int Position[2];
00145 int Extend;
00146 vtkIdType NumberOfEdges;
00147 vtkPoints *Points;
00148
00149 int StoreAttributes;
00150 vtkIdList **Attributes;
00151 vtkVoidArray **PointerAttributes;
00152
00153 vtkIdList **Resize(vtkIdType size);
00154
00155 private:
00156 vtkEdgeTable(const vtkEdgeTable&);
00157 void operator=(const vtkEdgeTable&);
00158 };
00159
00160 #endif
00161