VTK  9.5.2
vtkPolyData.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
55
56#ifndef vtkPolyData_h
57#define vtkPolyData_h
58
59#include "vtkCommonDataModelModule.h" // For export macro
60#include "vtkPointSet.h"
61#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
62
63#include "vtkCellArray.h" // Needed for inline methods
64#include "vtkCellLinks.h" // Needed for inline methods
65#include "vtkPolyDataInternals.h" // Needed for inline methods
66
67VTK_ABI_NAMESPACE_BEGIN
68struct vtkPolyDataDummyContainter;
70
71class VTKCOMMONDATAMODEL_EXPORT VTK_MARSHALAUTO vtkPolyData : public vtkPointSet
72{
73public:
74 static vtkPolyData* New();
76
77 vtkTypeMacro(vtkPolyData, vtkPointSet);
78 void PrintSelf(ostream& os, vtkIndent indent) override;
79
83 int GetDataObjectType() VTK_FUTURE_CONST override { return VTK_POLY_DATA; }
84
88 void CopyStructure(vtkDataSet* ds) override;
89
91
94 vtkIdType GetNumberOfCells() override;
96 vtkCell* GetCell(vtkIdType cellId) override;
97 void GetCell(vtkIdType cellId, vtkGenericCell* cell) override;
98 int GetCellType(vtkIdType cellId) override;
99 vtkIdType GetCellSize(vtkIdType cellId) override;
100 void GetCellBounds(vtkIdType cellId, double bounds[6]) override;
101 void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds) override;
103
111 void CopyCells(vtkPolyData* pd, vtkIdList* idList, vtkIncrementalPointLocator* locator = nullptr);
112
116 void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) override;
117
122 void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) override;
123
143
149 void GetCellsBounds(double bounds[6]);
150
157 void Squeeze() override;
158
162 int GetMaxCellSize() override;
163
165
172
179
184
190
195
201
206
212
217
224
226
229 vtkIdType GetNumberOfVerts() { return (this->Verts ? this->Verts->GetNumberOfCells() : 0); }
230 vtkIdType GetNumberOfLines() { return (this->Lines ? this->Lines->GetNumberOfCells() : 0); }
231 vtkIdType GetNumberOfPolys() { return (this->Polys ? this->Polys->GetNumberOfCells() : 0); }
232 vtkIdType GetNumberOfStrips() { return (this->Strips ? this->Strips->GetNumberOfCells() : 0); }
234
244 bool AllocateEstimate(vtkIdType numCells, vtkIdType maxCellSize);
245
255 bool AllocateEstimate(vtkIdType numVerts, vtkIdType maxVertSize, vtkIdType numLines,
256 vtkIdType maxLineSize, vtkIdType numPolys, vtkIdType maxPolySize, vtkIdType numStrips,
257 vtkIdType maxStripSize);
258
268 bool AllocateExact(vtkIdType numCells, vtkIdType connectivitySize);
269
280 bool AllocateExact(vtkIdType numVerts, vtkIdType vertConnSize, vtkIdType numLines,
281 vtkIdType lineConnSize, vtkIdType numPolys, vtkIdType polyConnSize, vtkIdType numStrips,
282 vtkIdType stripConnSize);
283
293
303 bool AllocateProportional(vtkPolyData* pd, double ratio);
304
311 void Allocate(vtkIdType numCells = 1000, int vtkNotUsed(extSize) = 1000)
312 {
313 this->AllocateExact(numCells, numCells);
314 }
315
326 void Allocate(vtkPolyData* inPolyData, vtkIdType numCells = 1000, int vtkNotUsed(extSize) = 1000)
327 {
329 inPolyData, static_cast<double>(numCells) / inPolyData->GetNumberOfCells());
330 }
331
339 vtkIdType InsertNextCell(int type, int npts, const vtkIdType pts[]) VTK_SIZEHINT(pts, npts);
340
349
354 void Reset();
355
364
368 bool NeedToBuildCells() { return this->Cells == nullptr; }
369
376 void BuildLinks(int initialSize = 0);
377
379
382 vtkSetSmartPointerMacro(Links, vtkAbstractCellLinks);
383 vtkGetSmartPointerMacro(Links, vtkAbstractCellLinks);
385
392
397
399
403 void GetPointCells(vtkIdType ptId, vtkIdType& ncells, vtkIdType*& cells)
404 VTK_SIZEHINT(cells, ncells);
406
413
425 unsigned char GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts)
426 VTK_SIZEHINT(pts, npts);
427
442 void GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts, vtkIdList* ptIds)
443 VTK_SIZEHINT(pts, npts) override;
444
449 int IsTriangle(int v1, int v2, int v3);
450
459
464 int IsPointUsedByCell(vtkIdType ptId, vtkIdType cellId);
465
474 void ReplaceCell(vtkIdType cellId, vtkIdList* ids);
475 void ReplaceCell(vtkIdType cellId, int npts, const vtkIdType pts[]) VTK_SIZEHINT(pts, npts);
477
479
488 void ReplaceCellPoint(vtkIdType cellId, vtkIdType oldPtId, vtkIdType newPtId);
489 void ReplaceCellPoint(
490 vtkIdType cellId, vtkIdType oldPtId, vtkIdType newPtId, vtkIdList* cellPointIds);
492
497 void ReverseCell(vtkIdType cellId);
498
500
504 void DeletePoint(vtkIdType ptId);
505 void DeleteCell(vtkIdType cellId);
507
517
519
528 vtkIdType InsertNextLinkedPoint(double x[3], int numLinks);
530
537 vtkIdType InsertNextLinkedCell(int type, int npts, const vtkIdType pts[]) VTK_SIZEHINT(pts, npts);
538
548 void ReplaceLinkedCell(vtkIdType cellId, int npts, const vtkIdType pts[]) VTK_SIZEHINT(pts, npts);
549
557 void RemoveCellReference(vtkIdType cellId);
558
566 void AddCellReference(vtkIdType cellId);
567
576
585
591 void ResizeCellList(vtkIdType ptId, int size);
592
596 void Initialize() override;
597
599
602 virtual int GetPiece();
603 virtual int GetNumberOfPieces();
605
609 virtual int GetGhostLevel();
610
619 unsigned long GetActualMemorySize() override;
620
622
625 void ShallowCopy(vtkDataObject* src) override;
626 void DeepCopy(vtkDataObject* src) override;
628
636
638
644
663 enum
664 {
672 };
673
675 int GetScalarFieldCriticalIndex(vtkIdType pointId, int fieldId);
676 int GetScalarFieldCriticalIndex(vtkIdType pointId, const char* fieldName);
677
686
691
701 unsigned char GetCell(vtkIdType cellId, const vtkIdType*& pts);
702
703protected:
705 ~vtkPolyData() override;
706
708
711
713
714 // points inherited
715 // point data (i.e., scalars, vectors, normals, tcoords) inherited
720
721 // supporting structures for more complex topological operations
722 // built only when necessary
725
727
728 // dummy static member below used as a trick to simplify traversal
729 static vtkPolyDataDummyContainter DummyContainer;
730
731 // Take into account only points that belong to at least one cell.
732 double CellsBounds[6];
733
735
736private:
737 void Cleanup();
738
739 vtkPolyData(const vtkPolyData&) = delete;
740 void operator=(const vtkPolyData&) = delete;
741};
742
743//------------------------------------------------------------------------------
745{
746 return (this->GetNumberOfVerts() + this->GetNumberOfLines() + this->GetNumberOfPolys() +
747 this->GetNumberOfStrips());
748}
749
750//------------------------------------------------------------------------------
752{
753 if (!this->Cells)
754 {
755 this->BuildCells();
756 }
757 return static_cast<int>(this->Cells->GetTag(cellId).GetCellType());
758}
759
760//------------------------------------------------------------------------------
762{
763 if (!this->Cells)
764 {
765 this->BuildCells();
766 }
767 switch (this->GetCellType(cellId))
768 {
769 case VTK_EMPTY_CELL:
770 return 0;
771 case VTK_VERTEX:
772 return 1;
773 case VTK_LINE:
774 return 2;
775 case VTK_TRIANGLE:
776 return 3;
777 case VTK_QUAD:
778 return 4;
779 case VTK_POLY_VERTEX:
780 return this->Verts ? this->Verts->GetCellSize(this->GetCellIdRelativeToCellArray(cellId)) : 0;
781 case VTK_POLY_LINE:
782 return this->Lines ? this->Lines->GetCellSize(this->GetCellIdRelativeToCellArray(cellId)) : 0;
783 case VTK_POLYGON:
784 return this->Polys ? this->Polys->GetCellSize(this->GetCellIdRelativeToCellArray(cellId)) : 0;
786 return this->Strips ? this->Strips->GetCellSize(this->GetCellIdRelativeToCellArray(cellId))
787 : 0;
788 }
789 vtkWarningMacro(<< "Cell type not supported.");
790 return 0;
791}
792
793//------------------------------------------------------------------------------
795{
796 vtkIdType npts;
797 const vtkIdType* pts;
798
799 this->GetCellPoints(cellId, npts, pts);
800 for (vtkIdType i = 0; i < npts; i++)
801 {
802 if (pts[i] == ptId)
803 {
804 return 1;
805 }
806 }
807
808 return 0;
809}
810
811//------------------------------------------------------------------------------
813{
814 static_cast<vtkCellLinks*>(this->Links.Get())->DeletePoint(ptId);
815}
816
817//------------------------------------------------------------------------------
819{
820 this->Cells->GetTag(cellId).MarkDeleted();
821}
822
823//------------------------------------------------------------------------------
825{
826 const vtkIdType* pts;
827 vtkIdType npts;
828
829 this->GetCellPoints(cellId, npts, pts);
830 auto links = static_cast<vtkCellLinks*>(this->Links.Get());
831 for (vtkIdType i = 0; i < npts; i++)
832 {
833 links->RemoveCellReference(cellId, pts[i]);
834 }
835}
836
837//------------------------------------------------------------------------------
839{
840 const vtkIdType* pts;
841 vtkIdType npts;
842
843 this->GetCellPoints(cellId, npts, pts);
844 auto links = static_cast<vtkCellLinks*>(this->Links.Get());
845 for (vtkIdType i = 0; i < npts; i++)
846 {
847 links->AddCellReference(cellId, pts[i]);
848 }
849}
850
851//------------------------------------------------------------------------------
852inline void vtkPolyData::ResizeCellList(vtkIdType ptId, int size)
853{
854 static_cast<vtkCellLinks*>(this->Links.Get())->ResizeCellList(ptId, size);
855}
856
857//------------------------------------------------------------------------------
859{
860 switch (tag.GetTarget())
861 {
863 return this->Verts;
865 return this->Lines;
867 return this->Polys;
869 return this->Strips;
870 }
871 return nullptr; // unreachable
872}
873
874//------------------------------------------------------------------------------
875inline void vtkPolyData::ReplaceCellPoint(vtkIdType cellId, vtkIdType oldPtId, vtkIdType newPtId)
876{
878 this->ReplaceCellPoint(cellId, oldPtId, newPtId, ids);
879}
880
881//------------------------------------------------------------------------------
883 vtkIdType cellId, vtkIdType oldPtId, vtkIdType newPtId, vtkIdList* cellPointIds)
884{
885 if (!this->Cells)
886 {
887 this->BuildCells();
888 }
889 vtkIdType npts;
890 const vtkIdType* pts;
891 this->GetCellPoints(cellId, npts, pts, cellPointIds);
892 for (vtkIdType i = 0; i < npts; i++)
893 {
894 if (pts[i] == oldPtId)
895 {
896 const TaggedCellId tag = this->Cells->GetTag(cellId);
897 vtkCellArray* cells = this->GetCellArrayInternal(tag);
898 cells->ReplaceCellPointAtId(tag.GetCellId(), i, newPtId);
899 break;
900 }
901 }
902}
903
904//------------------------------------------------------------------------------
905inline unsigned char vtkPolyData::GetCellPoints(
906 vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts)
907{
908 if (!this->Cells)
909 {
910 this->BuildCells();
911 }
912
913 const TaggedCellId tag = this->Cells->GetTag(cellId);
914 if (tag.IsDeleted())
915 {
916 npts = 0;
917 pts = nullptr;
918 return VTK_EMPTY_CELL;
919 }
920
921 vtkCellArray* cells = this->GetCellArrayInternal(tag);
922 cells->GetCellAtId(tag.GetCellId(), npts, pts);
923 return tag.GetCellType();
924}
925
926//------------------------------------------------------------------------------
928 vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts, vtkIdList* ptIds)
929{
930 if (!this->Cells)
931 {
932 this->BuildCells();
933 }
934
935 const TaggedCellId tag = this->Cells->GetTag(cellId);
936 if (tag.IsDeleted())
937 {
938 npts = 0;
939 pts = nullptr;
940 }
941 else
942 {
943 vtkCellArray* cells = this->GetCellArrayInternal(tag);
944 cells->GetCellAtId(tag.GetCellId(), npts, pts, ptIds);
945 }
946}
947
948VTK_ABI_NAMESPACE_END
949#endif
object to represent cell connectivity
void GetCellAtId(vtkIdType cellId, vtkIdType &cellSize, vtkIdType const *&cellPoints, vtkIdList *ptIds) override
Return the point ids for the cell at cellId.
void ReplaceCellPointAtId(vtkIdType cellId, vtkIdType cellPointIndex, vtkIdType newPointId)
Replaces the pointId at cellPointIndex of a cell with newPointId.
abstract class to specify cell behavior
Definition vtkCell.h:51
virtual vtkCell * GetCell(vtkIdType cellId)=0
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
Detect and break reference loops.
provides thread-safe access to cells
list of point or cell ids
Definition vtkIdList.h:24
Abstract class in support of both point location and point insertion.
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
void GetCellPoints(vtkIdType, vtkIdList *idList) override
This method resets parameter idList, as there is no cell in a vtkPointSet.
vtkIdType GetCellSize(vtkIdType) override
This method always returns 1, as all cells are point in a pure vtkPointSet.
vtkIdType GetNumberOfCells() override
This method always returns 0, as there are no cells in a vtkPointSet.
vtkCellArray * GetStrips()
Get the cell array defining triangle strips.
vtkIdType InsertNextCell(int type, int npts, const vtkIdType pts[])
Insert a cell of type VTK_VERTEX, VTK_POLY_VERTEX, VTK_LINE, VTK_POLY_LINE, VTK_TRIANGLE,...
static vtkPolyData * ExtendedNew()
void GetCell(vtkIdType cellId, vtkGenericCell *cell) override
Standard vtkDataSet interface.
void Squeeze() override
Recover extra allocated memory when creating data whose initial size is unknown.
bool NeedToBuildCells()
Check if BuildCells is needed.
bool AllocateEstimate(vtkIdType numCells, vtkIdType maxCellSize)
Preallocate memory for the internal cell arrays.
double CellsBounds[6]
int GetScalarFieldCriticalIndex(vtkIdType pointId, const char *fieldName)
vtkCell * GetCell(vtkIdType cellId) override
Standard vtkDataSet interface.
void SetPolys(vtkCellArray *p)
Set the cell array defining polygons.
vtkCellArray * GetCellArrayInternal(TaggedCellId tag)
vtkIdType GetCellIdRelativeToCellArray(vtkIdType cellId)
Maps the cell at position cellId inside the vtkPolyData to its location in the corresponding cell arr...
void GetCellsBounds(double bounds[6])
Get the cells bounds.
void RemoveCellReference(vtkIdType cellId)
Remove all references to cell in cell structure.
static vtkPolyData * GetData(vtkInformationVector *v, int i=0)
Retrieve an instance of this class from an information object.
void ComputeCellsBounds()
Compute the (X, Y, Z) bounds of the data.
vtkIdType GetNumberOfLines()
Return the number of primitives of a particular type held.
bool AllocateEstimate(vtkIdType numVerts, vtkIdType maxVertSize, vtkIdType numLines, vtkIdType maxLineSize, vtkIdType numPolys, vtkIdType maxPolySize, vtkIdType numStrips, vtkIdType maxStripSize)
Preallocate memory for the internal cell arrays.
void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds) override
Copy a cells point ids into list provided.
int IsTriangle(int v1, int v2, int v3)
Given three vertices, determine whether it's a triangle.
void SetLines(vtkCellArray *l)
Set the cell array defining lines.
void SetVerts(vtkCellArray *v)
Set the cell array defining vertices.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods for type information and printing.
bool AllocateExact(vtkIdType numVerts, vtkIdType vertConnSize, vtkIdType numLines, vtkIdType lineConnSize, vtkIdType numPolys, vtkIdType polyConnSize, vtkIdType numStrips, vtkIdType stripConnSize)
Preallocate memory for the internal cell arrays.
void Initialize() override
Restore object to initial state.
void AddReferenceToCell(vtkIdType ptId, vtkIdType cellId)
Add a reference to a cell in a particular point's link list.
void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, vtkIdList *cellIds) override
Standard vtkDataSet interface.
~vtkPolyData() override
int GetScalarFieldCriticalIndex(vtkIdType pointId, int fieldId)
void ReplaceLinkedCell(vtkIdType cellId, int npts, const vtkIdType pts[])
Replace one cell with another in cell structure.
void CopyStructure(vtkDataSet *ds) override
Copy the geometric and topological structure of an input poly data object.
vtkNew< vtkIdList > LegacyBuffer
int GetCellType(vtkIdType cellId) override
Standard vtkDataSet interface.
void GetCellBounds(vtkIdType cellId, double bounds[6]) override
Standard vtkDataSet interface.
void ReplaceCell(vtkIdType cellId, vtkIdList *ids)
Replace the points defining cell "cellId" with a new set of points.
virtual int GetGhostLevel()
Get the ghost level.
vtkMTimeType GetMTime() override
Get MTime which also considers its cell array MTime.
vtkSmartPointer< vtkCellArray > Verts
vtkIdType GetNumberOfStrips()
Return the number of primitives of a particular type held.
int GetScalarFieldCriticalIndex(vtkIdType pointId, vtkDataArray *scalarField)
bool AllocateCopy(vtkPolyData *pd)
Preallocate memory for the internal cell arrays such that they are the same size as those in pd.
vtkIdType InsertNextLinkedCell(int type, int npts, const vtkIdType pts[])
Add a new cell to the cell data structure (after cell pointers have been built).
vtkIdType InsertNextCell(int type, vtkIdList *pts)
Insert a cell of type VTK_VERTEX, VTK_POLY_VERTEX, VTK_LINE, VTK_POLY_LINE, VTK_TRIANGLE,...
vtkIdType GetNumberOfPolys()
Return the number of primitives of a particular type held.
void GetPointCells(vtkIdType ptId, vtkIdType &ncells, vtkIdType *&cells)
Special (efficient) operations on poly data.
int GetDataObjectType() VTK_FUTURE_CONST override
Return what type of dataset this is.
Definition vtkPolyData.h:83
vtkPolyData_detail::TaggedCellId TaggedCellId
vtkSmartPointer< vtkAbstractCellLinks > Links
void ShallowCopy(vtkDataObject *src) override
Shallow and Deep copy.
vtkSmartPointer< vtkCellArray > Strips
void DeleteCell(vtkIdType cellId)
Mark a point/cell as deleted from this vtkPolyData.
@ ERR_NON_MANIFOLD_STAR
vtkIdType InsertNextLinkedPoint(double x[3], int numLinks)
Add a point to the cell data structure (after cell pointers have been built).
int GetMaxCellSize() override
Return the maximum cell size in this poly data.
void RemoveGhostCells()
This method will remove any cell that is marked as ghost (has the vtkDataSetAttributes::DUPLICATECELL...
int GetMinSpatialDimension() override
Get the maximum/minimum spatial dimensionality of the data which is the maximum/minimum dimension of ...
void ResizeCellList(vtkIdType ptId, int size)
Resize the list of cells using a particular point.
virtual int GetPiece()
Get the piece and the number of pieces.
vtkTimeStamp CellsBoundsTime
int GetMaxSpatialDimension() override
Get the maximum/minimum spatial dimensionality of the data which is the maximum/minimum dimension of ...
vtkIdType GetNumberOfCells() override
Standard vtkDataSet interface.
bool AllocateExact(vtkIdType numCells, vtkIdType connectivitySize)
Preallocate memory for the internal cell arrays.
vtkIdType InsertNextLinkedPoint(int numLinks)
Add a point to the cell data structure (after cell pointers have been built).
unsigned char GetCell(vtkIdType cellId, const vtkIdType *&pts)
Get a pointer to the cell, ie [npts pid1 .
vtkCellArray * GetVerts()
Get the cell array defining vertices.
vtkSmartPointer< vtkCellArray > Polys
void Reset()
Begin inserting data all over again.
static vtkPolyData * New()
unsigned long GetActualMemorySize() override
Return the actual size of the data in kibibytes (1024 bytes).
void RemoveReferenceToCell(vtkIdType ptId, vtkIdType cellId)
Remove a reference to a cell in a particular point's link list.
int IsEdge(vtkIdType p1, vtkIdType p2)
Determine whether two points form an edge.
void ReplaceCell(vtkIdType cellId, int npts, const vtkIdType pts[])
Replace the points defining cell "cellId" with a new set of points.
static vtkPolyDataDummyContainter DummyContainer
vtkCellArray * GetPolys()
Get the cell array defining polygons.
void AddCellReference(vtkIdType cellId)
Add references to cell in cell structure.
void ReportReferences(vtkGarbageCollector *) override
vtkSmartPointer< vtkCellArray > Lines
void GetCellEdgeNeighbors(vtkIdType cellId, vtkIdType p1, vtkIdType p2, vtkIdList *cellIds)
Get the neighbors at an edge.
virtual int GetNumberOfPieces()
Get the piece and the number of pieces.
void DeepCopy(vtkDataObject *src) override
Shallow and Deep copy.
void RemoveDeletedCells()
The cells marked by calls to DeleteCell are stored in the Cell Array VTK_EMPTY_CELL,...
vtkIdType GetNumberOfVerts()
Return the number of primitives of a particular type held.
void DeleteCells()
Release data structure that allows random access of the cells.
static vtkPolyData * GetData(vtkInformation *info)
Retrieve an instance of this class from an information object.
int IsPointUsedByCell(vtkIdType ptId, vtkIdType cellId)
Determine whether a point is used by a particular cell.
void ReplaceCellPoint(vtkIdType cellId, vtkIdType oldPtId, vtkIdType newPtId)
Replace a point in the cell connectivity list with a different point.
vtkSmartPointer< CellMap > Cells
void GetPointCells(vtkIdType ptId, vtkIdList *cellIds) override
Efficient method to obtain cells using a particular point.
void BuildCells()
Create data structure that allows random access of cells.
vtkPolyData_detail::CellMap CellMap
void DeletePoint(vtkIdType ptId)
Mark a point/cell as deleted from this vtkPolyData.
void CopyCells(vtkPolyData *pd, vtkIdList *idList, vtkIncrementalPointLocator *locator=nullptr)
Copy cells listed in idList from pd, including points, point data, and cell data.
vtkCellArray * GetLines()
Get the cell array defining lines.
void Allocate(vtkIdType numCells=1000, int vtkNotUsed(extSize)=1000)
Method allocates initial storage for vertex, line, polygon, and triangle strip arrays.
void BuildLinks(int initialSize=0)
Create upward links from points to cells that use each point.
vtkIdType GetCellSize(vtkIdType cellId) override
Standard vtkDataSet interface.
void Allocate(vtkPolyData *inPolyData, vtkIdType numCells=1000, int vtkNotUsed(extSize)=1000)
Similar to the method above, this method allocates initial storage for vertex, line,...
void DeleteLinks()
Release the upward links from point to cells that use each point.
vtkMTimeType GetMeshMTime() override
Return the mesh (geometry/topology) modification time.
void ReverseCell(vtkIdType cellId)
Reverse the order of point ids defining the cell.
void SetStrips(vtkCellArray *s)
Set the cell array defining triangle strips.
bool AllocateProportional(vtkPolyData *pd, double ratio)
Preallocate memory for the internal cell arrays such that they are proportional to those in pd by a f...
Hold a reference to a vtkObjectBase instance.
record modification and/or execution time
unsigned char GetCellType() const noexcept
vtkIdType GetCellId() const noexcept
int GetCellType() override
Implement the vtkCell API.
@ VTK_TRIANGLE_STRIP
Definition vtkCellType.h:43
@ VTK_POLY_LINE
Definition vtkCellType.h:41
@ VTK_TRIANGLE
Definition vtkCellType.h:42
@ VTK_POLYGON
Definition vtkCellType.h:44
@ VTK_EMPTY_CELL
Definition vtkCellType.h:37
@ VTK_LINE
Definition vtkCellType.h:40
@ VTK_QUAD
Definition vtkCellType.h:46
@ VTK_VERTEX
Definition vtkCellType.h:38
@ VTK_POLY_VERTEX
Definition vtkCellType.h:39
#define vtkDataArray
int vtkIdType
Definition vtkType.h:332
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:287
@ VTK_POLY_DATA
Definition vtkType.h:76
#define VTK_SIZEHINT(...)
#define VTK_MARSHALAUTO