VTK  9.1.0
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=========================================================================*/
149#ifndef vtkDataSet_h
150#define vtkDataSet_h
151
152#include "vtkCommonDataModelModule.h" // For export macro
153#include "vtkDataObject.h"
154
155class vtkCell;
156class vtkCellData;
157class vtkCellIterator;
158class vtkCellTypes;
159class vtkGenericCell;
160class vtkIdList;
161class vtkPointData;
164
165class VTKCOMMONDATAMODEL_EXPORT vtkDataSet : public vtkDataObject
166{
167public:
168 vtkTypeMacro(vtkDataSet, vtkDataObject);
169 void PrintSelf(ostream& os, vtkIndent indent) override;
170
177 virtual void CopyStructure(vtkDataSet* ds) = 0;
178
184 virtual void CopyAttributes(vtkDataSet* ds);
185
191
197
202 virtual double* GetPoint(vtkIdType ptId) VTK_SIZEHINT(3) = 0;
203
210 virtual void GetPoint(vtkIdType id, double x[3]);
211
217
230 virtual vtkCell* GetCell(vtkIdType cellId) = 0;
231 virtual vtkCell* GetCell(int vtkNotUsed(i), int vtkNotUsed(j), int vtkNotUsed(k))
232 {
233 vtkErrorMacro("ijk indices are only valid with structured data!");
234 return nullptr;
235 }
236
238
246 virtual void GetCell(vtkIdType cellId, vtkGenericCell* cell) = 0;
247
259 virtual void GetCellBounds(vtkIdType cellId, double bounds[6]);
260
266 virtual int GetCellType(vtkIdType cellId) = 0;
267
277 virtual void GetCellTypes(vtkCellTypes* types);
278
284 virtual void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) = 0;
285
291 virtual void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) = 0;
292
300 virtual void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds);
301
303
310 vtkIdType FindPoint(double x, double y, double z)
311 {
312 double xyz[3];
313 xyz[0] = x;
314 xyz[1] = y;
315 xyz[2] = z;
316 return this->FindPoint(xyz);
317 }
318 virtual vtkIdType FindPoint(double x[3]) = 0;
320
332 virtual vtkIdType FindCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2, int& subId,
333 double pcoords[3], double* weights) = 0;
334
342 virtual vtkIdType FindCell(double x[3], vtkCell* cell, vtkGenericCell* gencell, vtkIdType cellId,
343 double tol2, int& subId, double pcoords[3], double* weights) = 0;
344
353 virtual vtkCell* FindAndGetCell(double x[3], vtkCell* cell, vtkIdType cellId, double tol2,
354 int& subId, double pcoords[3], double* weights);
355
361
366 vtkCellData* GetCellData() { return this->CellData; }
367
372 vtkPointData* GetPointData() { return this->PointData; }
373
378 virtual void Squeeze();
379
384 virtual void ComputeBounds();
385
392
399 void GetBounds(double bounds[6]);
400
405 double* GetCenter() VTK_SIZEHINT(3);
406
412 void GetCenter(double center[3]);
413
419 double GetLength();
420
425 void Initialize() override;
426
437 virtual void GetScalarRange(double range[2]);
438
448 double* GetScalarRange() VTK_SIZEHINT(2);
449
455 virtual int GetMaxCellSize() = 0;
456
465 unsigned long GetActualMemorySize() override;
466
470 int GetDataObjectType() override { return VTK_DATA_SET; }
471
473
476 void ShallowCopy(vtkDataObject* src) override;
477 void DeepCopy(vtkDataObject* src) override;
479
481 {
482 DATA_OBJECT_FIELD = 0,
483 POINT_DATA_FIELD = 1,
484 CELL_DATA_FIELD = 2
485 };
486
496
498
503 virtual void GenerateGhostArray(int zeroExt[6]) { this->GenerateGhostArray(zeroExt, false); }
504 virtual void GenerateGhostArray(int zeroExt[6], bool cellOnly);
506
508
514
522
527
543 virtual bool HasAnyBlankCells() { return false; }
549 virtual bool HasAnyBlankPoints() { return false; }
550
560
565
575
580
581protected:
582 // Constructor with default bounds (0,1, 0,1, 0,1).
584 ~vtkDataSet() override;
585
590 virtual void ComputeScalarRange();
591
596 bool IsAnyBitSet(vtkUnsignedCharArray* a, int bitFlag);
597
598 vtkCellData* CellData; // Scalars, vectors, etc. associated w/ each cell
599 vtkPointData* PointData; // Scalars, vectors, etc. associated w/ each point
600 vtkCallbackCommand* DataObserver; // Observes changes to cell/point data
601 vtkTimeStamp ComputeTime; // Time at which bounds, center, etc. computed
602 double Bounds[6]; // (xmin,xmax, ymin,ymax, zmin,zmax) geometric bounds
603 double Center[3];
604
605 // Cached scalar range
606 double ScalarRange[2];
607
608 // Time at which scalar range is computed
610
612
621
622private:
623 void InternalDataSetCopy(vtkDataSet* src);
628 static void OnDataModified(
629 vtkObject* source, unsigned long eid, void* clientdata, void* calldata);
630
631 friend class vtkImageAlgorithmToDataSetFriendship;
632
633private:
634 vtkDataSet(const vtkDataSet&) = delete;
635 void operator=(const vtkDataSet&) = delete;
636};
637
638inline void vtkDataSet::GetPoint(vtkIdType id, double x[3])
639{
640 double* pt = this->GetPoint(id);
641 x[0] = pt[0];
642 x[1] = pt[1];
643 x[2] = pt[2];
644}
645
646#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:142
Efficient cell iterator for vtkDataSet topologies.
object provides direct access to cells in vtkCellArray and type information
Definition: vtkCellTypes.h:137
abstract class to specify cell behavior
Definition: vtkCell.h:147
general representation of visualization data
abstract class to specify dataset behavior
Definition: vtkDataSet.h:166
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:549
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.).
vtkPointData * GetPointData()
Return a pointer to this dataset's point data.
Definition: vtkDataSet.h:372
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.
vtkTimeStamp ComputeTime
Definition: vtkDataSet.h:601
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:616
vtkTimeStamp ScalarRangeComputeTime
Definition: vtkDataSet.h:609
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.
bool CellGhostArrayCached
These arrays pointers are caches used to avoid a string comparison (when getting ghost arrays using G...
Definition: vtkDataSet.h:619
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:543
bool IsAnyBitSet(vtkUnsignedCharArray *a, int bitFlag)
Helper function that tests if any of the values in 'a' have bitFlag set.
bool PointGhostArrayCached
These arrays pointers are caches used to avoid a string comparison (when getting ghost arrays using G...
Definition: vtkDataSet.h:618
virtual void GenerateGhostArray(int zeroExt[6])
Normally called by pipeline executives or algorithms only.
Definition: vtkDataSet.h:503
vtkPointData * PointData
Definition: vtkDataSet.h:599
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.
vtkUnsignedCharArray * CellGhostArray
These arrays pointers are caches used to avoid a string comparison (when getting ghost arrays using G...
Definition: vtkDataSet.h:617
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:231
vtkCellData * CellData
Definition: vtkDataSet.h:598
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:600
void DeepCopy(vtkDataObject *src) override
Shallow and Deep copy.
vtkUnsignedCharArray * GetCellGhostArray()
Get the array that defines the ghost type of each cell.
void UpdateCellGhostArrayCache()
Updates the pointer to the cell ghost array.
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:310
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.
void UpdatePointGhostArrayCache()
Updates the pointer to the point ghost array.
~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:366
virtual vtkIdType FindPoint(double x[3])=0
Locate the closest point to the global coordinate x.
represent and manipulate fields of data
Definition: vtkFieldData.h:164
provides thread-safe access to cells
list of point or cell ids
Definition: vtkIdList.h:140
a simple class to control print indentation
Definition: vtkIndent.h:113
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
abstract base class for most VTK objects
Definition: vtkObject.h:73
represent and manipulate point attribute data
Definition: vtkPointData.h:142
record modification and/or execution time
Definition: vtkTimeStamp.h:52
dynamic, self-adjusting array of unsigned char
void GetBounds(T a, double bds[6])
@ info
Definition: vtkX3D.h:382
@ range
Definition: vtkX3D.h:244
@ center
Definition: vtkX3D.h:236
@ type
Definition: vtkX3D.h:522
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
int vtkIdType
Definition: vtkType.h:332
#define VTK_DATA_SET
Definition: vtkType.h:85
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287
#define VTK_SIZEHINT(...)
#define VTK_NEWINSTANCE