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=========================================================================*/
42#ifndef vtkCellTypes_h
43#define vtkCellTypes_h
44
45#include "vtkCommonDataModelModule.h" // For export macro
46#include "vtkObject.h"
47
48#include "vtkIntArray.h" // Needed for inline methods
49#include "vtkUnsignedCharArray.h" // Needed for inline methods
50#include "vtkCellType.h" // Needed for VTK_EMPTY_CELL
51
52class VTKCOMMONDATAMODEL_EXPORT vtkCellTypes : public vtkObject
53{
54public:
55 static vtkCellTypes *New();
56 vtkTypeMacro(vtkCellTypes,vtkObject);
57 void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
58
62 int Allocate(int sz=512, int ext=1000);
63
67 void InsertCell(int id, unsigned char type, int loc);
68
72 vtkIdType InsertNextCell(unsigned char type, int loc);
73
77 void SetCellTypes(int ncells, vtkUnsignedCharArray *cellTypes, vtkIntArray *cellLocations);
78
82 vtkIdType GetCellLocation(int cellId) { return this->LocationArray->GetValue(cellId);};
83
87 void DeleteCell(vtkIdType cellId) { this->TypeArray->SetValue(cellId, VTK_EMPTY_CELL);};
88
92 vtkIdType GetNumberOfTypes() { return (this->MaxId + 1);};
93
97 int IsType(unsigned char type);
98
102 vtkIdType InsertNextType(unsigned char type){return this->InsertNextCell(type,-1);};
103
107 unsigned char GetCellType(int cellId) { return this->TypeArray->GetValue(cellId);};
108
112 void Squeeze();
113
117 void Reset();
118
127 unsigned long GetActualMemorySize();
128
134
139 static const char* GetClassNameFromTypeId(int typeId);
140
145 static int GetTypeIdFromClassName(const char* classname);
146
153 static int IsLinear(unsigned char type);
154
155protected:
157 ~vtkCellTypes() VTK_OVERRIDE;
158
159 vtkUnsignedCharArray *TypeArray; // pointer to types array
160 vtkIntArray *LocationArray; // pointer to array of offsets
161 vtkIdType Size; // allocated size of data
162 vtkIdType MaxId; // maximum index inserted thus far
163 vtkIdType Extend; // grow array by this point
164
165private:
166 vtkCellTypes(const vtkCellTypes&) VTK_DELETE_FUNCTION;
167 void operator=(const vtkCellTypes&) VTK_DELETE_FUNCTION;
168};
169
170
171//----------------------------------------------------------------------------
172inline int vtkCellTypes::IsType(unsigned char type)
173{
174 vtkIdType numTypes=this->GetNumberOfTypes();
175
176 for (vtkIdType i=0; i<numTypes; i++)
177 {
178 if ( type == this->GetCellType(i))
179 {
180 return 1;
181 }
182 }
183 return 0;
184}
185
186//-----------------------------------------------------------------------------
187inline int vtkCellTypes::IsLinear(unsigned char type)
188{
189 return ( (type <= 20)
191 || (type == VTK_POLYHEDRON) );
192}
193
194
195#endif
object provides direct access to cells in vtkCellArray and type information
Definition: vtkCellTypes.h:53
void SetCellTypes(int ncells, vtkUnsignedCharArray *cellTypes, vtkIntArray *cellLocations)
Specify a group of cell types.
void Squeeze()
Reclaim any extra memory.
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:102
~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:187
vtkIdType GetCellLocation(int cellId)
Return the location of the cell in the associated vtkCellArray.
Definition: vtkCellTypes.h:82
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:92
void DeleteCell(vtkIdType cellId)
Delete cell by setting to NULL cell type.
Definition: vtkCellTypes.h:87
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.
int Allocate(int sz=512, int ext=1000)
Allocate memory for this array.
void InsertCell(int id, unsigned char type, int loc)
Add a cell at specified id.
vtkIdType InsertNextCell(unsigned char type, int loc)
Add a cell to the object in the next available slot.
unsigned char GetCellType(int cellId)
Return the type of cell.
Definition: vtkCellTypes.h:107
void DeepCopy(vtkCellTypes *src)
Standard DeepCopy method.
static int GetTypeIdFromClassName(const char *classname)
Given a data object classname, return it's int identified (as defined in vtkCellType....
a simple class to control print indentation
Definition: vtkIndent.h:40
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:46
abstract base class for most VTK objects
Definition: vtkObject.h:60
dynamic, self-adjusting array of unsigned char
@ type
Definition: vtkX3D.h:516
@ VTK_EMPTY_CELL
Definition: vtkCellType.h:45
@ VTK_POLYHEDRON
Definition: vtkCellType.h:87
@ VTK_CONVEX_POINT_SET
Definition: vtkCellType.h:84
int vtkIdType
Definition: vtkType.h:287