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 
41 VTK_ABI_NAMESPACE_BEGIN
42 class vtkCell;
43 class vtkCellData;
44 class vtkCellIterator;
45 class vtkCellTypes;
46 class vtkGenericCell;
47 class vtkIdList;
48 class vtkPointData;
50 class vtkCallbackCommand;
51 
52 class VTKCOMMONDATAMODEL_EXPORT vtkDataSet : public vtkDataObject
53 {
54 public:
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 
83  virtual vtkIdType GetNumberOfCells() = 0;
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 
163  virtual vtkIdType GetCellSize(vtkIdType cellId);
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 
283  vtkMTimeType GetMTime() override;
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 
314  double* GetBounds() VTK_SIZEHINT(6);
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 
442  static vtkDataSet* GetData(vtkInformationVector* v, int i = 0);
444 
452 
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 
521 protected:
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 
560 private:
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 
573 inline 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 
581 VTK_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
Definition: vtkCellTypes.h:46
abstract class to specify cell behavior
Definition: vtkCell.h:50
general representation of visualization data
Definition: vtkDataObject.h:55
abstract class to specify dataset behavior
Definition: vtkDataSet.h:53
vtkFieldData * GetAttributesAsFieldData(int type) override
Returns the attributes of the data object as a vtkFieldData.
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
vtkUnsignedCharArray * GetPointGhostArray()
Gets the array that defines the ghost type of each point.
vtkMTimeType GetMTime() override
Datasets are composite objects and need to check each part for MTime THIS METHOD IS THREAD SAFE.
vtkUnsignedCharArray * GetCellGhostArray()
Get the array that defines the ghost type of each cell.
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.
bool HasAnyGhostCells()
Returns 1 if there are any ghost cells 0 otherwise.
static vtkDataSet * GetData(vtkInformation *info)
Retrieve an instance of this class from an information object.
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.
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.
bool HasAnyGhostPoints()
Returns 1 if there are any ghost points 0 otherwise.
virtual void ComputeBounds()
Compute the data bounding box from data points.
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
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.
double * GetBounds()
Return a pointer to the geometry bounding box in the form (xmin,xmax, ymin,ymax, zmin,...
vtkUnsignedCharArray * GetGhostArray(int type) override
Returns the ghost array for the given type (point or cell).
virtual void GetCell(vtkIdType cellId, vtkGenericCell *cell)=0
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
virtual vtkCell * GetCell(vtkIdType cellId)=0
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
virtual vtkIdType GetNumberOfCells()=0
Determine the number of cells composing the dataset.
static vtkDataSet * GetData(vtkInformationVector *v, int i=0)
Retrieve an instance of this class from an information object.
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 void GetCellTypes(vtkCellTypes *types)
Get a list of types of cells in a dataset.
virtual vtkCell * GetCell(int vtkNotUsed(i), int vtkNotUsed(j), int vtkNotUsed(k))
Definition: vtkDataSet.h:118
virtual void CopyStructure(vtkDataSet *ds)=0
Copy the geometric and topological structure of an object.
vtkPointData * GetPointData()
Return a pointer to this dataset's point data.
Definition: vtkDataSet.h:295
vtkCellData * CellData
Definition: vtkDataSet.h:532
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
vtkCellData * GetCellData()
Return a pointer to this dataset's cell data.
Definition: vtkDataSet.h:289
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.
virtual vtkCellIterator * NewCellIterator()
Return an iterator that traverses the cells in this data set.
int GetCellNumberOfFaces(vtkIdType cellId, unsigned char &cellType, vtkGenericCell *cell)
Get the number of faces of a cell.
vtkUnsignedCharArray * AllocateCellGhostArray()
Allocate ghost array for cells.
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 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.
virtual void GenerateGhostArray(int zeroExt[6], bool cellOnly)
Normally called by pipeline executives or algorithms only.
virtual double * GetPoint(vtkIdType ptId)=0
Get point coordinates with ptId such that: 0 <= ptId < NumberOfPoints.
int CheckAttributes()
This method checks to see if the cell and point attributes match the geometry.
virtual vtkIdType FindPoint(double x[3])=0
Locate the closest point to the global coordinate x.
vtkUnsignedCharArray * AllocatePointGhostArray()
Allocate ghost array for points.
represent and manipulate fields of data
Definition: vtkFieldData.h:52
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:52
represent and manipulate point attribute data
Definition: vtkPointData.h:30
record modification and/or execution time
Definition: vtkTimeStamp.h:25
dynamic, self-adjusting array of unsigned char
void GetBounds(T a, double bds[6])
@ info
Definition: vtkX3D.h:376
@ range
Definition: vtkX3D.h:238
@ center
Definition: vtkX3D.h:230
@ type
Definition: vtkX3D.h:516
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