VTK  9.3.0
vtkDataSet.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
34#ifndef vtkDataSet_h
35#define vtkDataSet_h
36
37#include "vtkCommonDataModelModule.h" // For export macro
38#include "vtkDataObject.h"
39#include "vtkDeprecation.h" // for VTK_DEPRECATED_IN_9_3_0
40
41VTK_ABI_NAMESPACE_BEGIN
42class vtkCell;
43class vtkCellData;
44class vtkCellIterator;
45class vtkCellTypes;
46class vtkGenericCell;
47class vtkIdList;
48class vtkPointData;
51
52class VTKCOMMONDATAMODEL_EXPORT vtkDataSet : public vtkDataObject
53{
54public:
55 vtkTypeMacro(vtkDataSet, vtkDataObject);
56 void PrintSelf(ostream& os, vtkIndent indent) override;
57
64 virtual void CopyStructure(vtkDataSet* ds) = 0;
65
71 virtual void CopyAttributes(vtkDataSet* ds);
72
78
84
89 virtual double* GetPoint(vtkIdType ptId) VTK_SIZEHINT(3) = 0;
90
97 virtual void GetPoint(vtkIdType id, double x[3]);
98
104
117 virtual vtkCell* GetCell(vtkIdType cellId) = 0;
118 virtual vtkCell* GetCell(int vtkNotUsed(i), int vtkNotUsed(j), int vtkNotUsed(k))
119 {
120 vtkErrorMacro("ijk indices are only valid with structured data!");
121 return nullptr;
122 }
123
125
133 virtual void GetCell(vtkIdType cellId, vtkGenericCell* cell) = 0;
134
146 virtual void GetCellBounds(vtkIdType cellId, double bounds[6]);
147
153 virtual int GetCellType(vtkIdType cellId) = 0;
154
164
174 virtual void GetCellTypes(vtkCellTypes* types);
175
181 virtual void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) = 0;
182
195 virtual void GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts,
196 vtkIdList* ptIds) VTK_SIZEHINT(pts, npts);
197
203 virtual void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) = 0;
204
212 virtual void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds);
213
223 int GetCellNumberOfFaces(vtkIdType cellId, unsigned char& cellType, vtkGenericCell* cell);
224
226
233 vtkIdType FindPoint(double x, double y, double z)
234 {
235 double xyz[3];
236 xyz[0] = x;
237 xyz[1] = y;
238 xyz[2] = z;
239 return this->FindPoint(xyz);
240 }
241 virtual vtkIdType FindPoint(double x[3]) = 0;
243
255 virtual vtkIdType FindCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2, int& subId,
256 double pcoords[3], double* weights) = 0;
257
265 virtual vtkIdType FindCell(double x[3], vtkCell* cell, vtkGenericCell* gencell, vtkIdType cellId,
266 double tol2, int& subId, double pcoords[3], double* weights) = 0;
267
276 virtual vtkCell* FindAndGetCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2,
277 int& subId, double pcoords[3], double* weights);
278
284
289 vtkCellData* GetCellData() { return this->CellData; }
290
295 vtkPointData* GetPointData() { return this->PointData; }
296
301 virtual void Squeeze();
302
307 virtual void ComputeBounds();
308
315
322 void GetBounds(double bounds[6]);
323
328 double* GetCenter() VTK_SIZEHINT(3);
329
335 void GetCenter(double center[3]);
336
342 double GetLength();
343
349 double GetLength2();
350
355 void Initialize() override;
356
367 virtual void GetScalarRange(double range[2]);
368
378 double* GetScalarRange() VTK_SIZEHINT(2);
379
385 virtual int GetMaxCellSize() = 0;
386
395 unsigned long GetActualMemorySize() override;
396
400 int GetDataObjectType() override { return VTK_DATA_SET; }
401
403
406 void ShallowCopy(vtkDataObject* src) override;
407 void DeepCopy(vtkDataObject* src) override;
409
411 {
412 DATA_OBJECT_FIELD = 0,
413 POINT_DATA_FIELD = 1,
414 CELL_DATA_FIELD = 2
415 };
416
426
428
433 virtual void GenerateGhostArray(int zeroExt[6]) { this->GenerateGhostArray(zeroExt, false); }
434 virtual void GenerateGhostArray(int zeroExt[6], bool cellOnly);
436
438
444
452
456 vtkIdType GetNumberOfElements(int type) override;
457
473 virtual bool HasAnyBlankCells() { return false; }
479 virtual bool HasAnyBlankPoints() { return false; }
480
486
490 VTK_DEPRECATED_IN_9_3_0("This function is deprecated. It has no effect.")
491 void UpdatePointGhostArrayCache() {}
492
497
503
507 VTK_DEPRECATED_IN_9_3_0("This function is deprecated. It has no effect.")
508 void UpdateCellGhostArrayCache() {}
509
520
521protected:
522 // Constructor with default bounds (0,1, 0,1, 0,1).
524 ~vtkDataSet() override;
525
530 virtual void ComputeScalarRange();
531
532 vtkCellData* CellData; // Scalars, vectors, etc. associated w/ each cell
533 vtkPointData* PointData; // Scalars, vectors, etc. associated w/ each point
534 vtkCallbackCommand* DataObserver; // Observes changes to cell/point data
535 vtkTimeStamp ComputeTime; // Time at which bounds, center, etc. computed
536 double Bounds[6]; // (xmin,xmax, ymin,ymax, zmin,zmax) geometric bounds
537 double Center[3];
538
539 // Cached scalar range
540 double ScalarRange[2];
541
542 // Time at which scalar range is computed
544
546
550 VTK_DEPRECATED_IN_9_3_0("This member is deprecated. It's no longer used.")
551 vtkUnsignedCharArray* PointGhostArray;
552 VTK_DEPRECATED_IN_9_3_0("This member is deprecated. It's no longer used.")
553 vtkUnsignedCharArray* CellGhostArray;
554 VTK_DEPRECATED_IN_9_3_0("This member is deprecated. It's no longer used.")
555 bool PointGhostArrayCached;
556 VTK_DEPRECATED_IN_9_3_0("This member is deprecated. It's no longer used.")
557 bool CellGhostArrayCached;
559
560private:
561 void InternalDataSetCopy(vtkDataSet* src);
566 static void OnDataModified(
567 vtkObject* source, unsigned long eid, void* clientdata, void* calldata);
568
569 vtkDataSet(const vtkDataSet&) = delete;
570 void operator=(const vtkDataSet&) = delete;
571};
572
573inline void vtkDataSet::GetPoint(vtkIdType id, double x[3])
574{
575 double* pt = this->GetPoint(id);
576 x[0] = pt[0];
577 x[1] = pt[1];
578 x[2] = pt[2];
579}
580
581VTK_ABI_NAMESPACE_END
582#endif
void GetPoint(int i, int j, int k, double pnt[3])
supports function callbacks
represent and manipulate cell attribute data
Definition vtkCellData.h:31
Efficient cell iterator for vtkDataSet topologies.
object provides direct access to cells in vtkCellArray and type information
abstract class to specify cell behavior
Definition vtkCell.h:50
general representation of visualization data
abstract class to specify dataset behavior
Definition vtkDataSet.h:53
void ShallowCopy(vtkDataObject *src) override
Shallow and Deep copy.
virtual bool HasAnyBlankPoints()
Returns 1 if there are any blanking points 0 otherwise.
Definition vtkDataSet.h:479
static vtkDataSet * GetData(vtkInformation *info)
Retrieve an instance of this class from an information object.
double * GetBounds()
Return a pointer to the geometry bounding box in the form (xmin,xmax, ymin,ymax, zmin,...
vtkMTimeType GetMTime() override
Datasets are composite objects and need to check each part for MTime THIS METHOD IS THREAD SAFE.
vtkIdType GetNumberOfElements(int type) override
Get the number of elements for a specific attribute type (POINT, CELL, etc.).
virtual vtkIdType GetCellSize(vtkIdType cellId)
Get the size of cell with cellId such that: 0 <= cellId < NumberOfCells.
vtkPointData * GetPointData()
Return a pointer to this dataset's point data.
Definition vtkDataSet.h:295
bool HasAnyGhostCells()
Returns 1 if there are any ghost cells 0 otherwise.
virtual vtkIdType FindCell(double x[3], vtkCell *cell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights)=0
Locate cell based on global coordinate x and tolerance squared.
vtkUnsignedCharArray * AllocateCellGhostArray()
Allocate ghost array for cells.
bool HasAnyGhostPoints()
Returns 1 if there are any ghost points 0 otherwise.
virtual void ComputeBounds()
Compute the data bounding box from data points.
vtkUnsignedCharArray * GetGhostArray(int type) override
Returns the ghost array for the given type (point or cell).
vtkTimeStamp ComputeTime
Definition vtkDataSet.h:535
virtual void CopyAttributes(vtkDataSet *ds)
Copy the attributes associated with the specified dataset to this instance of vtkDataSet.
virtual void GetPointCells(vtkIdType ptId, vtkIdList *cellIds)=0
Topological inquiry to get cells using point.
vtkTimeStamp ScalarRangeComputeTime
Definition vtkDataSet.h:543
static vtkDataSet * GetData(vtkInformationVector *v, int i=0)
Retrieve an instance of this class from an information object.
virtual void GetCellBounds(vtkIdType cellId, double bounds[6])
Get the bounds of the cell with cellId such that: 0 <= cellId < NumberOfCells.
virtual vtkIdType FindCell(double x[3], vtkCell *cell, vtkGenericCell *gencell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights)=0
This is a version of the above method that can be used with multithreaded applications.
virtual vtkIdType GetNumberOfPoints()=0
Determine the number of points composing the dataset.
virtual void GetCell(vtkIdType cellId, vtkGenericCell *cell)=0
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
virtual vtkIdType GetNumberOfCells()=0
Determine the number of cells composing the dataset.
vtkFieldData * GetAttributesAsFieldData(int type) override
Returns the attributes of the data object as a vtkFieldData.
virtual bool HasAnyBlankCells()
Returns 1 if there are any blanking cells 0 otherwise.
Definition vtkDataSet.h:473
virtual void GenerateGhostArray(int zeroExt[6])
Normally called by pipeline executives or algorithms only.
Definition vtkDataSet.h:433
vtkPointData * PointData
Definition vtkDataSet.h:533
virtual void ComputeScalarRange()
Compute the range of the scalars and cache it into ScalarRange only if the cache became invalid (Scal...
virtual double * GetPoint(vtkIdType ptId)=0
Get point coordinates with ptId such that: 0 <= ptId < NumberOfPoints.
virtual void GetCellTypes(vtkCellTypes *types)
Get a list of types of cells in a dataset.
virtual void CopyStructure(vtkDataSet *ds)=0
Copy the geometric and topological structure of an object.
virtual vtkCell * GetCell(int vtkNotUsed(i), int vtkNotUsed(j), int vtkNotUsed(k))
Definition vtkDataSet.h:118
vtkCellData * CellData
Definition vtkDataSet.h:532
virtual vtkCell * GetCell(vtkIdType cellId)=0
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
virtual int GetCellType(vtkIdType cellId)=0
Get type of cell with cellId such that: 0 <= cellId < NumberOfCells.
virtual void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds)=0
Topological inquiry to get points defining cell.
vtkCallbackCommand * DataObserver
Definition vtkDataSet.h:534
virtual void GetCellPoints(vtkIdType cellId, vtkIdType &npts, vtkIdType const *&pts, vtkIdList *ptIds)
Topological inquiry to get points defining cell.
void DeepCopy(vtkDataObject *src) override
Shallow and Deep copy.
vtkUnsignedCharArray * GetCellGhostArray()
Get the array that defines the ghost type of each cell.
int GetCellNumberOfFaces(vtkIdType cellId, unsigned char &cellType, vtkGenericCell *cell)
Get the number of faces of a cell.
vtkUnsignedCharArray * AllocatePointGhostArray()
Allocate ghost array for points.
void SetCellOrderAndRationalWeights(vtkIdType cellId, vtkGenericCell *cell)
vtkIdType FindPoint(double x, double y, double z)
Locate the closest point to the global coordinate x.
Definition vtkDataSet.h:233
virtual vtkCell * FindAndGetCell(double x[3], vtkCell *cell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights)
Locate the cell that contains a point and return the cell.
virtual void Squeeze()
Reclaim any extra memory used to store data.
~vtkDataSet() override
virtual void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, vtkIdList *cellIds)
Topological inquiry to get all cells using list of points exclusive of cell specified (e....
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkUnsignedCharArray * GetPointGhostArray()
Gets the array that defines the ghost type of each point.
virtual void GenerateGhostArray(int zeroExt[6], bool cellOnly)
Normally called by pipeline executives or algorithms only.
virtual vtkCellIterator * NewCellIterator()
Return an iterator that traverses the cells in this data set.
int CheckAttributes()
This method checks to see if the cell and point attributes match the geometry.
vtkCellData * GetCellData()
Return a pointer to this dataset's cell data.
Definition vtkDataSet.h:289
virtual vtkIdType FindPoint(double x[3])=0
Locate the closest point to the global coordinate x.
represent and manipulate fields of data
provides thread-safe access to cells
list of point or cell ids
Definition vtkIdList.h:23
a simple class to control print indentation
Definition vtkIndent.h:29
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
abstract base class for most VTK objects
Definition vtkObject.h:49
represent and manipulate point attribute data
record modification and/or execution time
dynamic, self-adjusting array of unsigned char
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
#define VTK_DEPRECATED_IN_9_3_0(reason)
int vtkIdType
Definition vtkType.h:315
#define VTK_DATA_SET
Definition vtkType.h:73
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:270
#define VTK_SIZEHINT(...)
#define VTK_NEWINSTANCE