VTK
dox
Common
DataModel
vtkGenericEdgeTable.h
Go to the documentation of this file.
1
/*=========================================================================
2
3
Program: Visualization Toolkit
4
Module: vtkGenericEdgeTable.h
5
6
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7
All rights reserved.
8
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10
This software is distributed WITHOUT ANY WARRANTY; without even
11
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12
PURPOSE. See the above copyright notice for more information.
13
14
=========================================================================*/
30
#ifndef vtkGenericEdgeTable_h
31
#define vtkGenericEdgeTable_h
32
33
#include "vtkCommonDataModelModule.h"
// For export macro
34
#include "
vtkObject.h
"
35
36
class
vtkEdgeTableEdge;
37
class
vtkEdgeTablePoints;
38
39
class
VTKCOMMONDATAMODEL_EXPORT
vtkGenericEdgeTable
:
public
vtkObject
40
{
41
public
:
45
static
vtkGenericEdgeTable
*
New
();
46
48
51
vtkTypeMacro(
vtkGenericEdgeTable
,
vtkObject
);
52
void
PrintSelf
(ostream& os,
vtkIndent
indent)
override
;
54
58
void
InsertEdge(
vtkIdType
e1,
vtkIdType
e2,
vtkIdType
cellId,
59
int
ref,
vtkIdType
&ptId );
60
64
void
InsertEdge(
vtkIdType
e1,
vtkIdType
e2,
vtkIdType
cellId,
int
ref = 1 );
65
70
int
RemoveEdge(
vtkIdType
e1,
vtkIdType
e2);
71
77
int
CheckEdge(
vtkIdType
e1,
vtkIdType
e2,
vtkIdType
&ptId);
78
82
int
IncrementEdgeReferenceCount(
vtkIdType
e1,
vtkIdType
e2,
83
vtkIdType
cellId);
84
88
int
CheckEdgeReferenceCount(
vtkIdType
e1,
vtkIdType
e2);
89
94
void
Initialize(
vtkIdType
start);
95
100
int
GetNumberOfComponents();
101
106
void
SetNumberOfComponents(
int
count);
107
111
int
CheckPoint(
vtkIdType
ptId);
112
117
int
CheckPoint(
vtkIdType
ptId,
double
point
[3],
double
*scalar);
118
120
123
void
InsertPoint(
vtkIdType
ptId,
double
point
[3]);
124
// \pre: sizeof(s)==GetNumberOfComponents()
125
void
InsertPointAndScalar(
vtkIdType
ptId,
double
pt[3],
double
*s);
127
131
void
RemovePoint(
vtkIdType
ptId);
132
136
void
IncrementPointReferenceCount(
vtkIdType
ptId );
137
139
144
void
DumpTable();
145
void
LoadFactor();
147
148
class
PointEntry
149
{
150
public
:
151
vtkIdType
PointId
;
152
double
Coord[3];
153
double
*
Scalar
;
// point data: all point-centered attributes at this point
154
int
numberOfComponents
;
155
156
int
Reference
;
//signed char
157
162
PointEntry
(
int
size
);
163
164
~PointEntry
()
165
{
166
delete
[] this->Scalar;
167
}
168
169
PointEntry
(
const
PointEntry
&other)
170
{
171
this->PointId = other.
PointId
;
172
173
memcpy(this->Coord,other.
Coord
,
sizeof
(
double
)*3);
174
175
int
c = other.
numberOfComponents
;
176
this->numberOfComponents = c;
177
this->Scalar =
new
double
[c];
178
memcpy(this->Scalar, other.
Scalar
,
sizeof
(
double
)*c);
179
this->Reference = other.
Reference
;
180
}
181
182
PointEntry
&
operator=
(
const
PointEntry
&other)
183
{
184
if
(
this
!= &other)
185
{
186
this->PointId = other.
PointId
;
187
188
memcpy(this->Coord, other.
Coord
,
sizeof
(
double
)*3);
189
190
int
c = other.
numberOfComponents
;
191
192
if
(this->numberOfComponents!=c)
193
{
194
delete
[] this->Scalar;
195
this->Scalar =
new
double
[c];
196
this->numberOfComponents = c;
197
}
198
memcpy(this->Scalar, other.
Scalar
,
sizeof
(
double
)*c);
199
this->Reference = other.
Reference
;
200
}
201
return
*
this
;
202
}
203
};
204
205
class
EdgeEntry
206
{
207
public
:
208
vtkIdType
E1
;
209
vtkIdType
E2
;
210
211
int
Reference
;
//signed char
212
int
ToSplit
;
//signed char
213
vtkIdType
PtId
;
214
vtkIdType
CellId
;
//CellId the edge refer to at a step in tessellation
215
216
EdgeEntry
()
217
{
218
this->Reference = 0;
219
this->CellId = -1;
220
}
221
~EdgeEntry
() {}
222
223
EdgeEntry
(
const
EdgeEntry
& copy)
224
{
225
this->E1 = copy.
E1
;
226
this->E2 = copy.
E2
;
227
228
this->Reference = copy.
Reference
;
229
this->ToSplit = copy.
ToSplit
;
230
this->PtId = copy.
PtId
;
231
this->CellId = copy.
CellId
;
232
}
233
234
EdgeEntry
&
operator=
(
const
EdgeEntry
& entry)
235
{
236
if
(
this
== &entry)
237
{
238
return
*
this
;
239
}
240
this->E1 = entry.
E1
;
241
this->E2 = entry.
E2
;
242
this->Reference = entry.
Reference
;
243
this->ToSplit = entry.
ToSplit
;
244
this->PtId = entry.
PtId
;
245
this->CellId = entry.
CellId
;
246
return
*
this
;
247
}
248
};
249
250
protected
:
251
vtkGenericEdgeTable
();
252
~
vtkGenericEdgeTable
()
override
;
253
257
void
InsertEdge(
vtkIdType
e1,
vtkIdType
e2,
vtkIdType
cellId,
258
int
ref,
int
toSplit,
vtkIdType
&ptId );
259
260
//Hash table that contiain entry based on edges:
261
vtkEdgeTableEdge *
EdgeTable
;
262
263
//At end of process we should be able to retrieve points coord based on pointid
264
vtkEdgeTablePoints *
HashPoints
;
265
266
// Main hash functions
267
//For edge table:
268
vtkIdType
HashFunction(
vtkIdType
e1,
vtkIdType
e2);
269
270
//For point table:
271
vtkIdType
HashFunction(
vtkIdType
ptId);
272
273
// Keep track of the last point id we inserted, increment it each time:
274
vtkIdType
LastPointId
;
275
276
vtkIdType
NumberOfComponents
;
277
278
private
:
279
vtkGenericEdgeTable
(
const
vtkGenericEdgeTable
&) =
delete
;
280
void
operator=(
const
vtkGenericEdgeTable
&) =
delete
;
281
282
};
283
284
#endif
285
vtkGenericEdgeTable::EdgeEntry::CellId
vtkIdType CellId
Definition:
vtkGenericEdgeTable.h:214
vtkGenericEdgeTable::PointEntry::operator=
PointEntry & operator=(const PointEntry &other)
Definition:
vtkGenericEdgeTable.h:182
vtkGenericEdgeTable::PointEntry::Coord
double Coord[3]
Definition:
vtkGenericEdgeTable.h:152
vtkIdType
int vtkIdType
Definition:
vtkType.h:347
vtkGenericEdgeTable::EdgeEntry::E2
vtkIdType E2
Definition:
vtkGenericEdgeTable.h:209
vtkObject::New
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
vtkObject
abstract base class for most VTK objects
Definition:
vtkObject.h:59
vtkGenericEdgeTable::EdgeEntry::ToSplit
int ToSplit
Definition:
vtkGenericEdgeTable.h:212
vtkGenericEdgeTable::PointEntry::~PointEntry
~PointEntry()
Definition:
vtkGenericEdgeTable.h:164
vtkGenericEdgeTable::EdgeEntry::Reference
int Reference
Definition:
vtkGenericEdgeTable.h:211
vtkGenericEdgeTable::PointEntry::numberOfComponents
int numberOfComponents
Definition:
vtkGenericEdgeTable.h:154
vtkGenericEdgeTable::PointEntry::PointId
vtkIdType PointId
Definition:
vtkGenericEdgeTable.h:151
vtkGenericEdgeTable::EdgeEntry
Definition:
vtkGenericEdgeTable.h:205
vtkX3D::point
Definition:
vtkX3D.h:236
vtkGenericEdgeTable::PointEntry::Scalar
double * Scalar
Definition:
vtkGenericEdgeTable.h:153
vtkIndent
a simple class to control print indentation
Definition:
vtkIndent.h:39
vtkGenericEdgeTable::EdgeEntry::operator=
EdgeEntry & operator=(const EdgeEntry &entry)
Definition:
vtkGenericEdgeTable.h:234
vtkX3D::size
Definition:
vtkX3D.h:253
vtkObject::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkGenericEdgeTable::LastPointId
vtkIdType LastPointId
Definition:
vtkGenericEdgeTable.h:274
vtkObject.h
vtkGenericEdgeTable::HashPoints
vtkEdgeTablePoints * HashPoints
Definition:
vtkGenericEdgeTable.h:264
vtkGenericEdgeTable
keep track of edges (defined by pair of integer id's)
Definition:
vtkGenericEdgeTable.h:39
vtkGenericEdgeTable::EdgeTable
vtkEdgeTableEdge * EdgeTable
Definition:
vtkGenericEdgeTable.h:261
vtkGenericEdgeTable::EdgeEntry::~EdgeEntry
~EdgeEntry()
Definition:
vtkGenericEdgeTable.h:221
vtkGenericEdgeTable::PointEntry
Definition:
vtkGenericEdgeTable.h:148
vtkGenericEdgeTable::EdgeEntry::EdgeEntry
EdgeEntry(const EdgeEntry ©)
Definition:
vtkGenericEdgeTable.h:223
vtkGenericEdgeTable::EdgeEntry::E1
vtkIdType E1
Definition:
vtkGenericEdgeTable.h:208
vtkGenericEdgeTable::PointEntry::Reference
int Reference
Definition:
vtkGenericEdgeTable.h:156
vtkGenericEdgeTable::EdgeEntry::PtId
vtkIdType PtId
Definition:
vtkGenericEdgeTable.h:213
vtkGenericEdgeTable::NumberOfComponents
vtkIdType NumberOfComponents
Definition:
vtkGenericEdgeTable.h:276
vtkGenericEdgeTable::PointEntry::PointEntry
PointEntry(const PointEntry &other)
Definition:
vtkGenericEdgeTable.h:169
vtkGenericEdgeTable::EdgeEntry::EdgeEntry
EdgeEntry()
Definition:
vtkGenericEdgeTable.h:216
Generated by
1.8.16