VTK  9.1.0
vtkCellTypes.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkCellTypes.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=========================================================================*/
45#ifndef vtkCellTypes_h
46#define vtkCellTypes_h
47
48#include "vtkCommonDataModelModule.h" // For export macro
49#include "vtkObject.h"
50
51#include "vtkCellType.h" // Needed for VTK_EMPTY_CELL
52#include "vtkIdTypeArray.h" // Needed for inline methods
53#include "vtkIntArray.h" // Needed for inline methods
54#include "vtkUnsignedCharArray.h" // Needed for inline methods
55
56class VTKCOMMONDATAMODEL_EXPORT vtkCellTypes : public vtkObject
57{
58public:
59 static vtkCellTypes* New();
60 vtkTypeMacro(vtkCellTypes, vtkObject);
61 void PrintSelf(ostream& os, vtkIndent indent) override;
62
66 int Allocate(vtkIdType sz = 512, vtkIdType ext = 1000);
67
71 void InsertCell(vtkIdType id, unsigned char type, vtkIdType loc);
72
77
82 vtkIdType ncells, vtkUnsignedCharArray* cellTypes, vtkIdTypeArray* cellLocations);
83
88 void SetCellTypes(vtkIdType ncells, vtkUnsignedCharArray* cellTypes, vtkIntArray* cellLocations);
89
93 vtkIdType GetCellLocation(vtkIdType cellId) { return this->LocationArray->GetValue(cellId); }
94
98 void DeleteCell(vtkIdType cellId) { this->TypeArray->SetValue(cellId, VTK_EMPTY_CELL); }
99
103 vtkIdType GetNumberOfTypes() { return (this->MaxId + 1); }
104
108 int IsType(unsigned char type);
109
113 vtkIdType InsertNextType(unsigned char type) { return this->InsertNextCell(type, -1); }
114
118 unsigned char GetCellType(vtkIdType cellId) { return this->TypeArray->GetValue(cellId); }
119
123 void Squeeze();
124
128 void Reset();
129
138 unsigned long GetActualMemorySize();
139
145
150 static const char* GetClassNameFromTypeId(int typeId);
151
156 static int GetTypeIdFromClassName(const char* classname);
157
164 static int IsLinear(unsigned char type);
165
167
170 vtkUnsignedCharArray* GetCellTypesArray() { return this->TypeArray; }
171 vtkIdTypeArray* GetCellLocationsArray() { return this->LocationArray; }
173
174protected:
176 ~vtkCellTypes() override;
177
178 vtkUnsignedCharArray* TypeArray; // pointer to types array
179 vtkIdTypeArray* LocationArray; // pointer to array of offsets
180 vtkIdType Size; // allocated size of data
181 vtkIdType MaxId; // maximum index inserted thus far
182 vtkIdType Extend; // grow array by this point
183
184private:
185 vtkCellTypes(const vtkCellTypes&) = delete;
186 void operator=(const vtkCellTypes&) = delete;
187};
188
189//----------------------------------------------------------------------------
190inline int vtkCellTypes::IsType(unsigned char type)
191{
192 vtkIdType numTypes = this->GetNumberOfTypes();
193
194 for (vtkIdType i = 0; i < numTypes; i++)
195 {
196 if (type == this->GetCellType(i))
197 {
198 return 1;
199 }
200 }
201 return 0;
202}
203
204//-----------------------------------------------------------------------------
205inline int vtkCellTypes::IsLinear(unsigned char type)
206{
207 return ((type <= 20) || (type == VTK_CONVEX_POINT_SET) || (type == VTK_POLYHEDRON));
208}
209
210#endif
object provides direct access to cells in vtkCellArray and type information
Definition: vtkCellTypes.h:57
vtkIdType InsertNextCell(unsigned char type, vtkIdType loc)
Add a cell to the object in the next available slot.
vtkIdTypeArray * LocationArray
Definition: vtkCellTypes.h:179
int Allocate(vtkIdType sz=512, vtkIdType ext=1000)
Allocate memory for this array.
void InsertCell(vtkIdType id, unsigned char type, vtkIdType loc)
Add a cell at specified id.
vtkIdType MaxId
Definition: vtkCellTypes.h:181
vtkIdType GetCellLocation(vtkIdType cellId)
Return the location of the cell in the associated vtkCellArray.
Definition: vtkCellTypes.h:93
void Squeeze()
Reclaim any extra memory.
void SetCellTypes(vtkIdType ncells, vtkUnsignedCharArray *cellTypes, vtkIdTypeArray *cellLocations)
Specify a group of cell types.
void Reset()
Initialize object without releasing memory.
vtkIdType InsertNextType(unsigned char type)
Add the type specified to the end of the list.
Definition: vtkCellTypes.h:113
~vtkCellTypes() override
static vtkCellTypes * New()
static int IsLinear(unsigned char type)
This convenience method is a fast check to determine if a cell type represents a linear or nonlinear ...
Definition: vtkCellTypes.h:205
void SetCellTypes(vtkIdType ncells, vtkUnsignedCharArray *cellTypes, vtkIntArray *cellLocations)
Specify a group of cell types.
unsigned long GetActualMemorySize()
Return the memory in kibibytes (1024 bytes) consumed by this cell type array.
vtkIdType GetNumberOfTypes()
Return the number of types in the list.
Definition: vtkCellTypes.h:103
void DeleteCell(vtkIdType cellId)
Delete cell by setting to nullptr cell type.
Definition: vtkCellTypes.h:98
static const char * GetClassNameFromTypeId(int typeId)
Given an int (as defined in vtkCellType.h) identifier for a class return it's classname.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkUnsignedCharArray * TypeArray
Definition: vtkCellTypes.h:178
vtkIdType Extend
Definition: vtkCellTypes.h:182
int IsType(unsigned char type)
Return 1 if type specified is contained in list; 0 otherwise.
Definition: vtkCellTypes.h:190
unsigned char GetCellType(vtkIdType cellId)
Return the type of cell.
Definition: vtkCellTypes.h:118
void DeepCopy(vtkCellTypes *src)
Standard DeepCopy method.
vtkIdType Size
Definition: vtkCellTypes.h:180
static int GetTypeIdFromClassName(const char *classname)
Given a data object classname, return it's int identified (as defined in vtkCellType....
vtkUnsignedCharArray * GetCellTypesArray()
Methods for obtaining the arrays representing types and locations.
Definition: vtkCellTypes.h:170
vtkIdTypeArray * GetCellLocationsArray()
Methods for obtaining the arrays representing types and locations.
Definition: vtkCellTypes.h:171
dynamic, self-adjusting array of vtkIdType
a simple class to control print indentation
Definition: vtkIndent.h:43
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:49
abstract base class for most VTK objects
Definition: vtkObject.h:63
dynamic, self-adjusting array of unsigned char
@ type
Definition: vtkX3D.h:522
@ VTK_EMPTY_CELL
Definition: vtkCellType.h:46
@ VTK_POLYHEDRON
Definition: vtkCellType.h:89
@ VTK_CONVEX_POINT_SET
Definition: vtkCellType.h:86
int vtkIdType
Definition: vtkType.h:332