VTK  9.7.1
vtkPointSet.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
43 #ifndef vtkPointSet_h
44 #define vtkPointSet_h
45 
46 #include "vtkCommonDataModelModule.h" // For export macro
47 #include "vtkDataSet.h"
48 #include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
49 
50 #include "vtkCellTypes.h" // For GetCellType
51 #include "vtkGenericCell.h" // For GetCell
52 #include "vtkPoints.h" // Needed for inline methods
53 
54 VTK_ABI_NAMESPACE_BEGIN
57 
58 class VTKCOMMONDATAMODEL_EXPORT VTK_MARSHALAUTO vtkPointSet : public vtkDataSet
59 {
60 public:
64  static vtkPointSet* New();
65  static vtkPointSet* ExtendedNew();
66 
68 
71  vtkTypeMacro(vtkPointSet, vtkDataSet);
72  void PrintSelf(ostream& os, vtkIndent indent) override;
74 
78  int GetDataObjectType() VTK_FUTURE_CONST override { return VTK_POINT_SET; }
79 
81 
90  vtkSetMacro(Editable, bool);
91  vtkGetMacro(Editable, bool);
92  vtkBooleanMacro(Editable, bool);
94 
98  void Initialize() override;
99 
103  void CopyStructure(vtkDataSet* pd) override;
104 
106 
109  vtkIdType GetNumberOfPoints() override;
110  void GetPoint(vtkIdType ptId, double x[3]) override { this->Points->GetPoint(ptId, x); }
111  vtkIdType FindPoint(double x[3]) override;
112  using Superclass::FindCell;
113  vtkIdType FindCell(double x[3], vtkCell* cell, vtkGenericCell* gencell, vtkIdType cellId,
114  double tol2, int& subId, double pcoords[3], double* weights) override;
116 
118 
121  vtkIdType GetNumberOfCells() override { return 0; }
122  int GetMaxCellSize() override { return 0; }
124 
125  using Superclass::GetCell;
130  vtkCell* GetCell(vtkIdType) override;
131 
133 
137  void GetCellPoints(vtkIdType, vtkIdList* idList) override { idList->Reset(); }
138  void GetPointCells(vtkIdType, vtkIdList* idList) override { idList->Reset(); }
140 
144  void GetCell(vtkIdType, vtkGenericCell* cell) override { cell->SetCellTypeToEmptyCell(); }
145 
150  int GetCellType(vtkIdType) override { return VTK_EMPTY_CELL; }
151 
156  vtkIdType GetCellSize(vtkIdType) override { return 1; }
157 
164  double* GetPoint(vtkIdType ptId) VTK_SIZEHINT(3) override { return this->Points->GetPoint(ptId); }
165 
169  vtkCellIterator* NewCellIterator() override;
170 
172 
176  void BuildPointLocator();
177  VTK_DEPRECATED_IN_9_7_0("Use BuildPointLocator() instead.")
178  void BuildLocator() { this->BuildPointLocator(); }
180 
185  void BuildCellLocator();
186 
188 
195  virtual void SetPointLocator(vtkAbstractPointLocator*);
197  vtkGetObjectMacro(PointLocator, vtkAbstractPointLocator);
199 
201 
206  virtual void SetCellLocator(vtkAbstractCellLocator*);
208  vtkGetObjectMacro(CellLocator, vtkAbstractCellLocator);
210 
214  vtkMTimeType GetMTime() override;
215 
219  void ComputeBounds() override;
220 
224  void Squeeze() override;
225 
227 
230  virtual void SetPoints(vtkPoints*);
231  vtkPoints* GetPoints() override { return this->Points; }
233 
242  unsigned long GetActualMemorySize() override;
243 
245 
248  void ShallowCopy(vtkDataObject* src) override;
249  void DeepCopy(vtkDataObject* src) override;
251 
253 
256  bool UsesGarbageCollector() const override { return true; }
258 
260 
264  static vtkPointSet* GetData(vtkInformationVector* v, int i = 0);
266 
267 protected:
268  vtkPointSet();
269  ~vtkPointSet() override;
270 
271  bool Editable;
275 
276  void ReportReferences(vtkGarbageCollector*) override;
277 
278 private:
279  void Cleanup();
280 
281  vtkPointSet(const vtkPointSet&) = delete;
282  void operator=(const vtkPointSet&) = delete;
283 };
284 
286 {
287  if (this->Points)
288  {
289  return this->Points->GetNumberOfPoints();
290  }
291  else
292  {
293  return 0;
294  }
295 }
296 
297 VTK_ABI_NAMESPACE_END
298 #endif
int GetDataObjectType() VTK_FUTURE_CONST override
Standard vtkDataSet API methods.
Definition: vtkPointSet.h:78
vtkIdType GetCellSize(vtkIdType) override
This method always returns 1, as all cells are point in a pure vtkPointSet.
Definition: vtkPointSet.h:156
vtkIdType GetNumberOfPoints() override
See vtkDataSet for additional information.
Definition: vtkPointSet.h:285
static vtkDataObject * New()
Store vtkAlgorithm input/output information.
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:318
virtual vtkIdType GetNumberOfPoints()=0
Determine the number of points composing the dataset.
abstract class to specify dataset behavior
Definition: vtkDataSet.h:56
void Reset()
Reset to an empty state but retain previously allocated memory.
Definition: vtkIdList.h:186
an abstract base class for locators which find cells
void GetCellPoints(vtkIdType, vtkIdList *idList) override
Topological inquiry to get points defining cell.
Definition: vtkPointSet.h:137
concrete class for storing a set of points
Definition: vtkPointSet.h:58
vtkIdType GetNumberOfCells() override
This method always returns 0, as there are no cells in a vtkPointSet.
Definition: vtkPointSet.h:121
int vtkIdType
Definition: vtkType.h:363
vtkAbstractPointLocator * PointLocator
Definition: vtkPointSet.h:273
int GetCellType(vtkIdType) override
This method always returns VTK_EMPTY_CELL, as there is no cell in a vtkPointSet.
Definition: vtkPointSet.h:150
static vtkDataSet * GetData(vtkInformation *info)
Retrieve an instance of this class from an information object.
double * GetPoint(vtkIdType ptId) override
See vtkDataSet for additional information.
Definition: vtkPointSet.h:164
Detect and break reference loops.
provides thread-safe access to cells
void GetCell(vtkIdType, vtkGenericCell *cell) override
This method sets cell to be an empty cell.
Definition: vtkPointSet.h:144
bool UsesGarbageCollector() const override
Overwritten to handle the data/locator loop.
Definition: vtkPointSet.h:256
abstract class to specify cell behavior
Definition: vtkCell.h:50
unsigned long GetActualMemorySize() override
Return the actual size of the data in kibibytes (1024 bytes).
a simple class to control print indentation
Definition: vtkIndent.h:28
virtual void ReportReferences(vtkGarbageCollector *)
abstract class to quickly locate points in 3-space
list of point or cell ids
Definition: vtkIdList.h:25
virtual void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds)=0
Topological inquiry to get points defining cell.
virtual vtkCellIterator * NewCellIterator()
Return an iterator that traverses the cells in this data set.
vtkPoints * Points
Definition: vtkPointSet.h:272
void DeepCopy(vtkDataObject *src) override
Shallow and Deep copy.
virtual vtkIdType FindCell(double x[3], vtkCell *cell, vtkIdType cellId, double tol2, int &subId, double pcoords[3], double *weights)
Locate cell based on global coordinate x and tolerance squared.
#define VTK_SIZEHINT(...)
#define VTK_MARSHALEXCLUDE(reason)
vtkIdType GetNumberOfPoints() const
Return number of points in array.
Definition: vtkPoints.h:129
void GetPoint(vtkIdType ptId, double x[3]) override
See vtkDataSet for additional information.
Definition: vtkPointSet.h:110
int GetMaxCellSize() override
This method always returns 0, as there are no cells in a vtkPointSet.
Definition: vtkPointSet.h:122
void Initialize() override
Restore data object to initial state.
void GetPointCells(vtkIdType, vtkIdList *idList) override
Topological inquiry to get cells using point.
Definition: vtkPointSet.h:138
virtual void CopyStructure(vtkDataSet *ds)=0
Copy the geometric and topological structure of an object.
void ShallowCopy(vtkDataObject *src) override
Shallow and Deep copy.
Store zero or more vtkInformation instances.
Efficient cell iterator for vtkDataSet topologies.
#define VTK_MARSHALAUTO
#define VTK_MARSHAL_EXCLUDE_REASON_NOT_SUPPORTED
general representation of visualization data
Definition: vtkDataObject.h:55
vtkIdType FindPoint(double x, double y, double z)
Locate the closest point to the global coordinate x.
Definition: vtkDataSet.h:248
#define VTK_DEPRECATED_IN_9_7_0(reason)
virtual vtkCell * GetCell(vtkIdType cellId)=0
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
represent and manipulate 3D points
Definition: vtkPoints.h:30
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetCellTypeToEmptyCell()
vtkAbstractCellLocator * CellLocator
Definition: vtkPointSet.h:274