VTK
9.0.1
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,
int
ref,
vtkIdType
& ptId);
59
63
void
InsertEdge(
vtkIdType
e1,
vtkIdType
e2,
vtkIdType
cellId,
int
ref = 1);
64
69
int
RemoveEdge(
vtkIdType
e1,
vtkIdType
e2);
70
76
int
CheckEdge(
vtkIdType
e1,
vtkIdType
e2,
vtkIdType
& ptId);
77
81
int
IncrementEdgeReferenceCount(
vtkIdType
e1,
vtkIdType
e2,
vtkIdType
cellId);
82
86
int
CheckEdgeReferenceCount(
vtkIdType
e1,
vtkIdType
e2);
87
92
void
Initialize(
vtkIdType
start);
93
98
int
GetNumberOfComponents();
99
104
void
SetNumberOfComponents(
int
count);
105
109
int
CheckPoint(
vtkIdType
ptId);
110
115
int
CheckPoint(
vtkIdType
ptId,
double
point
[3],
double
* scalar);
116
118
121
void
InsertPoint(
vtkIdType
ptId,
double
point
[3]);
122
// \pre: sizeof(s)==GetNumberOfComponents()
123
void
InsertPointAndScalar(
vtkIdType
ptId,
double
pt[3],
double
* s);
125
129
void
RemovePoint(
vtkIdType
ptId);
130
134
void
IncrementPointReferenceCount(
vtkIdType
ptId);
135
137
142
void
DumpTable();
143
void
LoadFactor();
145
146
class
PointEntry
147
{
148
public
:
149
vtkIdType
PointId
;
150
double
Coord[3];
151
double
*
Scalar
;
// point data: all point-centered attributes at this point
152
int
numberOfComponents
;
153
154
int
Reference
;
// signed char
155
160
PointEntry
(
int
size
);
161
162
~PointEntry
() {
delete
[] this->Scalar; }
163
164
PointEntry
(
const
PointEntry
& other)
165
{
166
this->PointId = other.
PointId
;
167
168
memcpy(this->Coord, other.
Coord
,
sizeof
(
double
) * 3);
169
170
int
c = other.
numberOfComponents
;
171
this->numberOfComponents = c;
172
this->Scalar =
new
double
[c];
173
memcpy(this->Scalar, other.
Scalar
,
sizeof
(
double
) * c);
174
this->Reference = other.
Reference
;
175
}
176
177
PointEntry
&
operator=
(
const
PointEntry
& other)
178
{
179
if
(
this
!= &other)
180
{
181
this->PointId = other.
PointId
;
182
183
memcpy(this->Coord, other.
Coord
,
sizeof
(
double
) * 3);
184
185
int
c = other.
numberOfComponents
;
186
187
if
(this->numberOfComponents != c)
188
{
189
delete
[] this->Scalar;
190
this->Scalar =
new
double
[c];
191
this->numberOfComponents = c;
192
}
193
memcpy(this->Scalar, other.
Scalar
,
sizeof
(
double
) * c);
194
this->Reference = other.
Reference
;
195
}
196
return
*
this
;
197
}
198
};
199
200
class
EdgeEntry
201
{
202
public
:
203
vtkIdType
E1
;
204
vtkIdType
E2
;
205
206
int
Reference
;
// signed char
207
int
ToSplit
;
// signed char
208
vtkIdType
PtId
;
209
vtkIdType
CellId
;
// CellId the edge refer to at a step in tessellation
210
211
EdgeEntry
()
212
{
213
this->Reference = 0;
214
this->CellId = -1;
215
}
216
~EdgeEntry
() {}
217
218
EdgeEntry
(
const
EdgeEntry
& copy)
219
{
220
this->E1 = copy.
E1
;
221
this->E2 = copy.
E2
;
222
223
this->Reference = copy.
Reference
;
224
this->ToSplit = copy.
ToSplit
;
225
this->PtId = copy.
PtId
;
226
this->CellId = copy.
CellId
;
227
}
228
229
EdgeEntry
&
operator=
(
const
EdgeEntry
& entry)
230
{
231
if
(
this
== &entry)
232
{
233
return
*
this
;
234
}
235
this->E1 = entry.
E1
;
236
this->E2 = entry.
E2
;
237
this->Reference = entry.
Reference
;
238
this->ToSplit = entry.
ToSplit
;
239
this->PtId = entry.
PtId
;
240
this->CellId = entry.
CellId
;
241
return
*
this
;
242
}
243
};
244
245
protected
:
246
vtkGenericEdgeTable
();
247
~
vtkGenericEdgeTable
()
override
;
248
252
void
InsertEdge(
253
vtkIdType
e1,
vtkIdType
e2,
vtkIdType
cellId,
int
ref,
int
toSplit,
vtkIdType
& ptId);
254
255
// Hash table that contiain entry based on edges:
256
vtkEdgeTableEdge*
EdgeTable
;
257
258
// At end of process we should be able to retrieve points coord based on pointid
259
vtkEdgeTablePoints*
HashPoints
;
260
261
// Main hash functions
262
// For edge table:
263
vtkIdType
HashFunction(
vtkIdType
e1,
vtkIdType
e2);
264
265
// For point table:
266
vtkIdType
HashFunction(
vtkIdType
ptId);
267
268
// Keep track of the last point id we inserted, increment it each time:
269
vtkIdType
LastPointId
;
270
271
vtkIdType
NumberOfComponents
;
272
273
private
:
274
vtkGenericEdgeTable
(
const
vtkGenericEdgeTable
&) =
delete
;
275
void
operator=(
const
vtkGenericEdgeTable
&) =
delete
;
276
};
277
278
#endif
vtkGenericEdgeTable::EdgeEntry::CellId
vtkIdType CellId
Definition:
vtkGenericEdgeTable.h:209
vtkGenericEdgeTable::PointEntry::operator=
PointEntry & operator=(const PointEntry &other)
Definition:
vtkGenericEdgeTable.h:177
vtkGenericEdgeTable::PointEntry::Coord
double Coord[3]
Definition:
vtkGenericEdgeTable.h:150
vtkIdType
int vtkIdType
Definition:
vtkType.h:338
vtkGenericEdgeTable::EdgeEntry::E2
vtkIdType E2
Definition:
vtkGenericEdgeTable.h:204
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:62
vtkGenericEdgeTable::EdgeEntry::ToSplit
int ToSplit
Definition:
vtkGenericEdgeTable.h:207
vtkGenericEdgeTable::PointEntry::~PointEntry
~PointEntry()
Definition:
vtkGenericEdgeTable.h:162
vtkGenericEdgeTable::EdgeEntry::Reference
int Reference
Definition:
vtkGenericEdgeTable.h:206
vtkGenericEdgeTable::PointEntry::numberOfComponents
int numberOfComponents
Definition:
vtkGenericEdgeTable.h:152
vtkGenericEdgeTable::PointEntry::PointId
vtkIdType PointId
Definition:
vtkGenericEdgeTable.h:149
vtkGenericEdgeTable::EdgeEntry
Definition:
vtkGenericEdgeTable.h:200
vtkX3D::point
@ point
Definition:
vtkX3D.h:242
vtkGenericEdgeTable::PointEntry::Scalar
double * Scalar
Definition:
vtkGenericEdgeTable.h:151
vtkIndent
a simple class to control print indentation
Definition:
vtkIndent.h:33
vtkGenericEdgeTable::EdgeEntry::operator=
EdgeEntry & operator=(const EdgeEntry &entry)
Definition:
vtkGenericEdgeTable.h:229
vtkX3D::size
@ size
Definition:
vtkX3D.h:259
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:269
vtkObject.h
vtkGenericEdgeTable::HashPoints
vtkEdgeTablePoints * HashPoints
Definition:
vtkGenericEdgeTable.h:259
vtkGenericEdgeTable
keep track of edges (defined by pair of integer id's)
Definition:
vtkGenericEdgeTable.h:39
vtkGenericEdgeTable::EdgeTable
vtkEdgeTableEdge * EdgeTable
Definition:
vtkGenericEdgeTable.h:256
vtkGenericEdgeTable::EdgeEntry::~EdgeEntry
~EdgeEntry()
Definition:
vtkGenericEdgeTable.h:216
vtkGenericEdgeTable::PointEntry
Definition:
vtkGenericEdgeTable.h:146
vtkGenericEdgeTable::EdgeEntry::EdgeEntry
EdgeEntry(const EdgeEntry ©)
Definition:
vtkGenericEdgeTable.h:218
vtkGenericEdgeTable::EdgeEntry::E1
vtkIdType E1
Definition:
vtkGenericEdgeTable.h:203
vtkGenericEdgeTable::PointEntry::Reference
int Reference
Definition:
vtkGenericEdgeTable.h:154
vtkGenericEdgeTable::EdgeEntry::PtId
vtkIdType PtId
Definition:
vtkGenericEdgeTable.h:208
vtkGenericEdgeTable::NumberOfComponents
vtkIdType NumberOfComponents
Definition:
vtkGenericEdgeTable.h:271
vtkGenericEdgeTable::PointEntry::PointEntry
PointEntry(const PointEntry &other)
Definition:
vtkGenericEdgeTable.h:164
vtkGenericEdgeTable::EdgeEntry::EdgeEntry
EdgeEntry()
Definition:
vtkGenericEdgeTable.h:211
Generated on Thu Jun 24 2021 15:17:26 for VTK by
1.8.17