VTK  9.4.20251007
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
33
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#include "vtkNew.h" // For vtkNew
41#include "vtkSmartPointer.h" // For vtkSmartPointer
42#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
43
44VTK_ABI_NAMESPACE_BEGIN
45class vtkCell;
46class vtkCellData;
47class vtkCellIterator;
48class vtkCellTypes;
49class vtkGenericCell;
50class vtkIdList;
51class vtkPointData;
52class vtkPoints;
55
56class VTKCOMMONDATAMODEL_EXPORT VTK_MARSHALAUTO vtkDataSet : public vtkDataObject
57{
58public:
59 vtkTypeMacro(vtkDataSet, vtkDataObject);
60 void PrintSelf(ostream& os, vtkIndent indent) override;
61
68 virtual void CopyStructure(vtkDataSet* ds) = 0;
69
75 virtual void CopyAttributes(vtkDataSet* ds);
76
82
88
95 virtual vtkPoints* GetPoints();
96
101 virtual double* GetPoint(vtkIdType ptId) VTK_SIZEHINT(3) = 0;
102
109 virtual void GetPoint(vtkIdType id, double x[3]);
110
116
129 virtual vtkCell* GetCell(vtkIdType cellId) = 0;
130 virtual vtkCell* GetCell(int vtkNotUsed(i), int vtkNotUsed(j), int vtkNotUsed(k))
131 {
132 vtkErrorMacro("ijk indices are only valid with structured data!");
133 return nullptr;
134 }
135
137
145 virtual void GetCell(vtkIdType cellId, vtkGenericCell* cell) = 0;
146
158 virtual void GetCellBounds(vtkIdType cellId, double bounds[6]);
159
165 virtual int GetCellType(vtkIdType cellId) = 0;
166
176
186 virtual void GetCellTypes(vtkCellTypes* types);
187
193 virtual void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) = 0;
194
207 virtual void GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts,
208 vtkIdList* ptIds) VTK_SIZEHINT(pts, npts);
209
215 virtual void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) = 0;
216
224 virtual void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds);
225
235 int GetCellNumberOfFaces(vtkIdType cellId, unsigned char& cellType, vtkGenericCell* cell);
236
238
245 vtkIdType FindPoint(double x, double y, double z)
246 {
247 double xyz[3];
248 xyz[0] = x;
249 xyz[1] = y;
250 xyz[2] = z;
251 return this->FindPoint(xyz);
252 }
253 virtual vtkIdType FindPoint(double x[3]) = 0;
255
267 virtual vtkIdType FindCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2, int& subId,
268 double pcoords[3], double* weights) = 0;
269
277 virtual vtkIdType FindCell(double x[3], vtkCell* cell, vtkGenericCell* gencell, vtkIdType cellId,
278 double tol2, int& subId, double pcoords[3], double* weights) = 0;
279
288 virtual vtkCell* FindAndGetCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2,
289 int& subId, double pcoords[3], double* weights);
290
296
301 vtkCellData* GetCellData() { return this->CellData; }
302
308
313 virtual void Squeeze();
314
319 virtual void ComputeBounds();
320
327
334 void GetBounds(double bounds[6]);
335
341
347 void GetCenter(double center[3]);
348
354 double GetLength();
355
361 double GetLength2();
362
367 void Initialize() override;
368
379 virtual void GetScalarRange(double range[2]);
380
391
397 virtual int GetMaxCellSize() = 0;
398
407
416 unsigned long GetActualMemorySize() override;
417
421 int GetDataObjectType() override { return VTK_DATA_SET; }
422
424
427 void ShallowCopy(vtkDataObject* src) override;
428 void DeepCopy(vtkDataObject* src) override;
430
437
447
449
454 virtual void GenerateGhostArray(int zeroExt[6]) { this->GenerateGhostArray(zeroExt, false); }
455 virtual void GenerateGhostArray(int zeroExt[6], bool cellOnly);
457
459
465
473
477 vtkIdType GetNumberOfElements(int type) override;
478
489
505 virtual bool HasAnyBlankCells() { return false; }
511 virtual bool HasAnyBlankPoints() { return false; }
512
518
522 VTK_DEPRECATED_IN_9_3_0("This function is deprecated. It has no effect.")
524
529
535
539 VTK_DEPRECATED_IN_9_3_0("This function is deprecated. It has no effect.")
541
552
556 bool SupportsGhostArray(int type) override;
557
558protected:
559 // Constructor with default bounds (0,1, 0,1, 0,1).
561 ~vtkDataSet() override;
562
564
570
575 virtual void ComputeScalarRange();
576
577 vtkCellData* CellData; // Scalars, vectors, etc. associated w/ each cell
578 vtkPointData* PointData; // Scalars, vectors, etc. associated w/ each point
579 vtkCallbackCommand* DataObserver; // Observes changes to cell/point data
580 vtkTimeStamp ComputeTime; // Time at which bounds, center, etc. computed
581 double Bounds[6]; // (xmin,xmax, ymin,ymax, zmin,zmax) geometric bounds
582 double Center[3];
583
584 // Cached scalar range
585 double ScalarRange[2];
586
587 // Time at which scalar range is computed
589
591
595 VTK_DEPRECATED_IN_9_3_0("This member is deprecated. It's no longer used.")
597 VTK_DEPRECATED_IN_9_3_0("This member is deprecated. It's no longer used.")
599 VTK_DEPRECATED_IN_9_3_0("This member is deprecated. It's no longer used.")
601 VTK_DEPRECATED_IN_9_3_0("This member is deprecated. It's no longer used.")
604
605private:
606 void InternalDataSetCopy(vtkDataSet* src);
611 static void OnDataModified(
612 vtkObject* source, unsigned long eid, void* clientdata, void* calldata);
613
614 // This should only be used if a vtkDataSet subclass don't define GetPoints()
615 vtkSmartPointer<vtkPoints> TempPoints;
616
617 vtkDataSet(const vtkDataSet&) = delete;
618 void operator=(const vtkDataSet&) = delete;
619};
620
621inline void vtkDataSet::GetPoint(vtkIdType id, double x[3])
622{
623 double* pt = this->GetPoint(id);
624 x[0] = pt[0];
625 x[1] = pt[1];
626 x[2] = pt[2];
627}
628
629VTK_ABI_NAMESPACE_END
630#endif
void GetPoint(int i, int j, int k, double pnt[3])
supports function callbacks
represent and manipulate cell attribute data
Definition vtkCellData.h:32
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:51
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:511
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:307
bool HasAnyGhostCells()
Returns 1 if there are any ghost cells 0 otherwise.
double Center[3]
Definition vtkDataSet.h:582
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:580
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.
vtkUnsignedCharArray * PointGhostArray
These arrays pointers are caches used to avoid a string comparison (when getting ghost arrays using G...
Definition vtkDataSet.h:596
vtkTimeStamp ScalarRangeComputeTime
Definition vtkDataSet.h:588
static vtkDataSet * GetData(vtkInformationVector *v, int i=0)
Retrieve an instance of this class from an information object.
unsigned long GetActualMemorySize() override
Return the actual size of the data in kibibytes (1024 bytes).
virtual vtkMTimeType GetMeshMTime()
Abstract method which return the mesh (geometry/topology) modification time.
virtual void GetCellBounds(vtkIdType cellId, double bounds[6])
Get the bounds of the cell with cellId such that: 0 <= cellId < NumberOfCells.
virtual vtkPoints * GetPoints()
If the subclass has (implicit/explicit) points, then return them.
double GetLength()
Return the length of the diagonal of the bounding box.
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.
double GetLength2()
Return the squared length of the diagonal of the bounding box.
virtual vtkIdType GetNumberOfPoints()=0
Determine the number of points composing the dataset.
bool CellGhostArrayCached
These arrays pointers are caches used to avoid a string comparison (when getting ghost arrays using G...
Definition vtkDataSet.h:602
@ DATA_OBJECT_FIELD
Definition vtkDataSet.h:433
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:505
bool PointGhostArrayCached
These arrays pointers are caches used to avoid a string comparison (when getting ghost arrays using G...
Definition vtkDataSet.h:600
virtual void GenerateGhostArray(int zeroExt[6])
Normally called by pipeline executives or algorithms only.
Definition vtkDataSet.h:454
virtual int GetMaxSpatialDimension()
Get the maximum spatial dimensionality of the data which is the maximum dimension of all cells.
vtkPointData * PointData
Definition vtkDataSet.h:578
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.
vtkMTimeType GetGhostCellsTime()
Return the MTime of the ghost cells array.
virtual void GetCellTypes(vtkCellTypes *types)
Get a list of types of cells in a dataset.
virtual void GetScalarRange(double range[2])
Convenience method to get the range of the first component (and only the first component) of any scal...
double * GetCenter()
Get the center of the bounding box.
vtkUnsignedCharArray * CellGhostArray
These arrays pointers are caches used to avoid a string comparison (when getting ghost arrays using G...
Definition vtkDataSet.h:598
vtkNew< vtkGenericCell > GenericCell
Definition vtkDataSet.h:563
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:130
void Initialize() override
Restore data object to initial state.
double Bounds[6]
Definition vtkDataSet.h:581
vtkCellData * CellData
Definition vtkDataSet.h:577
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:579
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.
void UpdateCellGhostArrayCache()
Updates the pointer to the cell ghost array.
Definition vtkDataSet.h:540
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:245
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.
double ScalarRange[2]
Definition vtkDataSet.h:585
void UpdatePointGhostArrayCache()
Updates the pointer to the point ghost array.
Definition vtkDataSet.h:523
~vtkDataSet() override
virtual int GetMaxCellSize()=0
Convenience method returns largest cell size in dataset.
virtual void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, vtkIdList *cellIds)
Topological inquiry to get all cells using list of points exclusive of cell specified (e....
int GetDataObjectType() override
Return the type of data object.
Definition vtkDataSet.h:421
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.
bool SupportsGhostArray(int type) override
Returns true for POINT or CELL, false otherwise.
vtkCellData * GetCellData()
Return a pointer to this dataset's cell data.
Definition vtkDataSet.h:301
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:24
a simple class to control print indentation
Definition vtkIndent.h:29
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Allocate and hold a VTK object.
Definition vtkNew.h:58
represent and manipulate point attribute data
represent and manipulate 3D points
Definition vtkPoints.h:30
Hold a reference to a vtkObjectBase instance.
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_MARSHALAUTO
#define VTK_NEWINSTANCE