VTK  9.2.20230205
vtkDataSet.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkDataSet.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 =========================================================================*/
155 #ifndef vtkDataSet_h
156 #define vtkDataSet_h
157 
158 #include "vtkCommonDataModelModule.h" // For export macro
159 #include "vtkDataObject.h"
160 #include "vtkDeprecation.h" // for VTK_DEPRECATED_IN_9_3_0
161 
162 VTK_ABI_NAMESPACE_BEGIN
163 class vtkCell;
164 class vtkCellData;
165 class vtkCellIterator;
166 class vtkCellTypes;
167 class vtkGenericCell;
168 class vtkIdList;
169 class vtkPointData;
171 class vtkCallbackCommand;
172 
173 class VTKCOMMONDATAMODEL_EXPORT vtkDataSet : public vtkDataObject
174 {
175 public:
176  vtkTypeMacro(vtkDataSet, vtkDataObject);
177  void PrintSelf(ostream& os, vtkIndent indent) override;
178 
185  virtual void CopyStructure(vtkDataSet* ds) = 0;
186 
192  virtual void CopyAttributes(vtkDataSet* ds);
193 
199 
205 
210  virtual double* GetPoint(vtkIdType ptId) VTK_SIZEHINT(3) = 0;
211 
218  virtual void GetPoint(vtkIdType id, double x[3]);
219 
225 
238  virtual vtkCell* GetCell(vtkIdType cellId) = 0;
239  virtual vtkCell* GetCell(int vtkNotUsed(i), int vtkNotUsed(j), int vtkNotUsed(k))
240  {
241  vtkErrorMacro("ijk indices are only valid with structured data!");
242  return nullptr;
243  }
244 
246 
254  virtual void GetCell(vtkIdType cellId, vtkGenericCell* cell) = 0;
255 
267  virtual void GetCellBounds(vtkIdType cellId, double bounds[6]);
268 
274  virtual int GetCellType(vtkIdType cellId) = 0;
275 
284  virtual vtkIdType GetCellSize(vtkIdType cellId);
285 
295  virtual void GetCellTypes(vtkCellTypes* types);
296 
302  virtual void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) = 0;
303 
316  virtual void GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts,
317  vtkIdList* ptIds) VTK_SIZEHINT(pts, npts);
318 
324  virtual void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) = 0;
325 
333  virtual void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds);
334 
336 
343  vtkIdType FindPoint(double x, double y, double z)
344  {
345  double xyz[3];
346  xyz[0] = x;
347  xyz[1] = y;
348  xyz[2] = z;
349  return this->FindPoint(xyz);
350  }
351  virtual vtkIdType FindPoint(double x[3]) = 0;
353 
365  virtual vtkIdType FindCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2, int& subId,
366  double pcoords[3], double* weights) = 0;
367 
375  virtual vtkIdType FindCell(double x[3], vtkCell* cell, vtkGenericCell* gencell, vtkIdType cellId,
376  double tol2, int& subId, double pcoords[3], double* weights) = 0;
377 
386  virtual vtkCell* FindAndGetCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2,
387  int& subId, double pcoords[3], double* weights);
388 
393  vtkMTimeType GetMTime() override;
394 
399  vtkCellData* GetCellData() { return this->CellData; }
400 
405  vtkPointData* GetPointData() { return this->PointData; }
406 
411  virtual void Squeeze();
412 
417  virtual void ComputeBounds();
418 
424  double* GetBounds() VTK_SIZEHINT(6);
425 
432  void GetBounds(double bounds[6]);
433 
438  double* GetCenter() VTK_SIZEHINT(3);
439 
445  void GetCenter(double center[3]);
446 
452  double GetLength();
453 
459  double GetLength2();
460 
465  void Initialize() override;
466 
477  virtual void GetScalarRange(double range[2]);
478 
488  double* GetScalarRange() VTK_SIZEHINT(2);
489 
495  virtual int GetMaxCellSize() = 0;
496 
505  unsigned long GetActualMemorySize() override;
506 
510  int GetDataObjectType() override { return VTK_DATA_SET; }
511 
513 
516  void ShallowCopy(vtkDataObject* src) override;
517  void DeepCopy(vtkDataObject* src) override;
519 
521  {
522  DATA_OBJECT_FIELD = 0,
523  POINT_DATA_FIELD = 1,
524  CELL_DATA_FIELD = 2
525  };
526 
536 
538 
543  virtual void GenerateGhostArray(int zeroExt[6]) { this->GenerateGhostArray(zeroExt, false); }
544  virtual void GenerateGhostArray(int zeroExt[6], bool cellOnly);
546 
548 
552  static vtkDataSet* GetData(vtkInformationVector* v, int i = 0);
554 
562 
567 
583  virtual bool HasAnyBlankCells() { return false; }
589  virtual bool HasAnyBlankPoints() { return false; }
590 
596 
600  VTK_DEPRECATED_IN_9_3_0("This function is deprecated. It has no effect.")
601  void UpdatePointGhostArrayCache() {}
602 
607 
613 
617  VTK_DEPRECATED_IN_9_3_0("This function is deprecated. It has no effect.")
618  void UpdateCellGhostArrayCache() {}
619 
630 
631 protected:
632  // Constructor with default bounds (0,1, 0,1, 0,1).
634  ~vtkDataSet() override;
635 
640  virtual void ComputeScalarRange();
641 
642  vtkCellData* CellData; // Scalars, vectors, etc. associated w/ each cell
643  vtkPointData* PointData; // Scalars, vectors, etc. associated w/ each point
644  vtkCallbackCommand* DataObserver; // Observes changes to cell/point data
645  vtkTimeStamp ComputeTime; // Time at which bounds, center, etc. computed
646  double Bounds[6]; // (xmin,xmax, ymin,ymax, zmin,zmax) geometric bounds
647  double Center[3];
648 
649  // Cached scalar range
650  double ScalarRange[2];
651 
652  // Time at which scalar range is computed
654 
656 
660  VTK_DEPRECATED_IN_9_3_0("This member is deprecated. It's no longer used.")
661  vtkUnsignedCharArray* PointGhostArray;
662  VTK_DEPRECATED_IN_9_3_0("This member is deprecated. It's no longer used.")
663  vtkUnsignedCharArray* CellGhostArray;
664  VTK_DEPRECATED_IN_9_3_0("This member is deprecated. It's no longer used.")
665  bool PointGhostArrayCached;
666  VTK_DEPRECATED_IN_9_3_0("This member is deprecated. It's no longer used.")
667  bool CellGhostArrayCached;
669 
670 private:
671  void InternalDataSetCopy(vtkDataSet* src);
676  static void OnDataModified(
677  vtkObject* source, unsigned long eid, void* clientdata, void* calldata);
678 
679 private:
680  vtkDataSet(const vtkDataSet&) = delete;
681  void operator=(const vtkDataSet&) = delete;
682 };
683 
684 inline void vtkDataSet::GetPoint(vtkIdType id, double x[3])
685 {
686  double* pt = this->GetPoint(id);
687  x[0] = pt[0];
688  x[1] = pt[1];
689  x[2] = pt[2];
690 }
691 
692 VTK_ABI_NAMESPACE_END
693 #endif
void GetPoint(const int i, const int j, const int k, double pnt[3])
supports function callbacks
represent and manipulate cell attribute data
Definition: vtkCellData.h:152
Efficient cell iterator for vtkDataSet topologies.
object provides direct access to cells in vtkCellArray and type information
Definition: vtkCellTypes.h:147
abstract class to specify cell behavior
Definition: vtkCell.h:151
general representation of visualization data
abstract class to specify dataset behavior
Definition: vtkDataSet.h:174
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:589
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:645
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:653
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:583
virtual void GenerateGhostArray(int zeroExt[6])
Normally called by pipeline executives or algorithms only.
Definition: vtkDataSet.h:543
vtkPointData * PointData
Definition: vtkDataSet.h:643
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:239
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:405
vtkCellData * CellData
Definition: vtkDataSet.h:642
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:644
vtkCellData * GetCellData()
Return a pointer to this dataset's cell data.
Definition: vtkDataSet.h:399
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.
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:343
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:173
provides thread-safe access to cells
list of point or cell ids
Definition: vtkIdList.h:144
a simple class to control print indentation
Definition: vtkIndent.h:120
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
abstract base class for most VTK objects
Definition: vtkObject.h:83
represent and manipulate point attribute data
Definition: vtkPointData.h:151
record modification and/or execution time
Definition: vtkTimeStamp.h:56
dynamic, self-adjusting array of unsigned char
void GetBounds(T a, double bds[6])
@ info
Definition: vtkX3D.h:388
@ range
Definition: vtkX3D.h:250
@ center
Definition: vtkX3D.h:242
@ type
Definition: vtkX3D.h:528
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:327
#define VTK_DATA_SET
Definition: vtkType.h:85
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:282
#define VTK_SIZEHINT(...)
#define VTK_NEWINSTANCE