VTK
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 =========================================================================*/
36 #ifndef vtkCellTypes_h
37 #define vtkCellTypes_h
38 
39 #include "vtkCommonDataModelModule.h" // For export macro
40 #include "vtkObject.h"
41 
42 #include "vtkCellType.h" // Needed for VTK_EMPTY_CELL
43 #include "vtkIdTypeArray.h" // Needed for inline methods
44 #include "vtkIntArray.h" // Needed for inline methods
45 #include "vtkUnsignedCharArray.h" // Needed for inline methods
46 
47 class VTKCOMMONDATAMODEL_EXPORT vtkCellTypes : public vtkObject
48 {
49 public:
50  static vtkCellTypes* New();
51  vtkTypeMacro(vtkCellTypes, vtkObject);
52  void PrintSelf(ostream& os, vtkIndent indent) override;
53 
57  int Allocate(vtkIdType sz = 512, vtkIdType ext = 1000);
58 
62  void InsertCell(vtkIdType id, unsigned char type, vtkIdType loc);
63 
67  vtkIdType InsertNextCell(unsigned char type, vtkIdType loc);
68 
72  void SetCellTypes(
73  vtkIdType ncells, vtkUnsignedCharArray* cellTypes, vtkIdTypeArray* cellLocations);
74 
79  void SetCellTypes(vtkIdType ncells, vtkUnsignedCharArray* cellTypes, vtkIntArray* cellLocations);
80 
84  vtkIdType GetCellLocation(vtkIdType cellId) { return this->LocationArray->GetValue(cellId); }
85 
89  void DeleteCell(vtkIdType cellId) { this->TypeArray->SetValue(cellId, VTK_EMPTY_CELL); }
90 
94  vtkIdType GetNumberOfTypes() { return (this->MaxId + 1); }
95 
99  int IsType(unsigned char type);
100 
104  vtkIdType InsertNextType(unsigned char type) { return this->InsertNextCell(type, -1); }
105 
109  unsigned char GetCellType(vtkIdType cellId) { return this->TypeArray->GetValue(cellId); }
110 
114  void Squeeze();
115 
119  void Reset();
120 
129  unsigned long GetActualMemorySize();
130 
135  void DeepCopy(vtkCellTypes* src);
136 
141  static const char* GetClassNameFromTypeId(int typeId);
142 
147  static int GetTypeIdFromClassName(const char* classname);
148 
155  static int IsLinear(unsigned char type);
156 
157 protected:
158  vtkCellTypes();
159  ~vtkCellTypes() override;
160 
161  vtkUnsignedCharArray* TypeArray; // pointer to types array
162  vtkIdTypeArray* LocationArray; // pointer to array of offsets
163  vtkIdType Size; // allocated size of data
164  vtkIdType MaxId; // maximum index inserted thus far
165  vtkIdType Extend; // grow array by this point
166 
167 private:
168  vtkCellTypes(const vtkCellTypes&) = delete;
169  void operator=(const vtkCellTypes&) = delete;
170 };
171 
172 //----------------------------------------------------------------------------
173 inline int vtkCellTypes::IsType(unsigned char type)
174 {
175  vtkIdType numTypes = this->GetNumberOfTypes();
176 
177  for (vtkIdType i = 0; i < numTypes; i++)
178  {
179  if (type == this->GetCellType(i))
180  {
181  return 1;
182  }
183  }
184  return 0;
185 }
186 
187 //-----------------------------------------------------------------------------
188 inline int vtkCellTypes::IsLinear(unsigned char type)
189 {
190  return ((type <= 20) || (type == VTK_CONVEX_POINT_SET) || (type == VTK_POLYHEDRON));
191 }
192 
193 #endif
vtkCellTypes::InsertNextType
vtkIdType InsertNextType(unsigned char type)
Add the type specified to the end of the list.
Definition: vtkCellTypes.h:104
VTK_POLYHEDRON
Definition: vtkCellType.h:88
vtkCellTypes
object provides direct access to cells in vtkCellArray and type information
Definition: vtkCellTypes.h:47
vtkX3D::type
Definition: vtkX3D.h:522
vtkIdType
int vtkIdType
Definition: vtkType.h:343
vtkCellTypes::LocationArray
vtkIdTypeArray * LocationArray
Definition: vtkCellTypes.h:162
vtkObject::New
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
vtkUnsignedCharArray
dynamic, self-adjusting array of unsigned char
Definition: vtkUnsignedCharArray.h:35
vtkCellTypes::Extend
vtkIdType Extend
Definition: vtkCellTypes.h:165
vtkCellTypes::IsType
int IsType(unsigned char type)
Return 1 if type specified is contained in list; 0 otherwise.
Definition: vtkCellTypes.h:173
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:53
vtkCellTypes::TypeArray
vtkUnsignedCharArray * TypeArray
Definition: vtkCellTypes.h:161
vtkCellTypes::GetNumberOfTypes
vtkIdType GetNumberOfTypes()
Return the number of types in the list.
Definition: vtkCellTypes.h:94
VTK_CONVEX_POINT_SET
Definition: vtkCellType.h:85
vtkCellTypes::Size
vtkIdType Size
Definition: vtkCellTypes.h:163
VTK_EMPTY_CELL
Definition: vtkCellType.h:46
vtkCellTypes::GetCellType
unsigned char GetCellType(vtkIdType cellId)
Return the type of cell.
Definition: vtkCellTypes.h:109
vtkCellTypes::IsLinear
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:188
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkCellTypes::GetCellLocation
vtkIdType GetCellLocation(vtkIdType cellId)
Return the location of the cell in the associated vtkCellArray.
Definition: vtkCellTypes.h:84
vtkIntArray
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:39
vtkCellType.h
vtkUnsignedCharArray.h
vtkObject::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkIdTypeArray.h
vtkObject.h
vtkCellTypes::DeleteCell
void DeleteCell(vtkIdType cellId)
Delete cell by setting to nullptr cell type.
Definition: vtkCellTypes.h:89
vtkIntArray.h
vtkIdTypeArray
dynamic, self-adjusting array of vtkIdType
Definition: vtkIdTypeArray.h:35
vtkCellTypes::MaxId
vtkIdType MaxId
Definition: vtkCellTypes.h:164