VTK  9.1.0
vtkFieldData.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkFieldData.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=========================================================================*/
52#ifndef vtkFieldData_h
53#define vtkFieldData_h
54
55#include "vtkCommonDataModelModule.h" // For export macro
56#include "vtkObject.h"
57#include <vector> // For list indices
58
59#include "vtkAbstractArray.h" // Needed for inline methods.
60
61class vtkIdList;
62
63class VTKCOMMONDATAMODEL_EXPORT vtkFieldData : public vtkObject
64{
65public:
66 static vtkFieldData* New();
68
69 vtkTypeMacro(vtkFieldData, vtkObject);
70 void PrintSelf(ostream& os, vtkIndent indent) override;
71
76 virtual void Initialize();
77
83
90
100 void AllocateArrays(int num);
101
108 int GetNumberOfArrays() { return this->NumberOfActiveArrays; }
109
116
121
123
126 virtual void RemoveArray(const char* name);
127 virtual void RemoveArray(int index);
129
139
150 vtkDataArray* GetArray(const char* arrayName, int& index);
151
153
162 vtkDataArray* GetArray(const char* arrayName)
163 {
164 int i;
165 return this->GetArray(arrayName, i);
166 }
168
175
182 vtkAbstractArray* GetAbstractArray(const char* arrayName, int& index);
183
185
190 vtkAbstractArray* GetAbstractArray(const char* arrayName)
191 {
192 int i;
193 return this->GetAbstractArray(arrayName, i);
194 }
196
198
201 int HasArray(const char* name)
202 {
203 int i;
204 vtkAbstractArray* array = this->GetAbstractArray(name, i);
205 // assert( i == -1);
206 return array ? 1 : 0;
207 }
209
211
216 const char* GetArrayName(int i)
217 {
218 vtkAbstractArray* da = this->GetAbstractArray(i);
219 return da ? da->GetName() : nullptr;
220 }
222
227 virtual void PassData(vtkFieldData* fd);
228
238 void CopyFieldOn(const char* name) { this->CopyFieldOnOff(name, 1); }
239 void CopyFieldOff(const char* name) { this->CopyFieldOnOff(name, 0); }
240
250 virtual void CopyAllOn(int unused = 0);
251
261 virtual void CopyAllOff(int unused = 0);
262
266 virtual void DeepCopy(vtkFieldData* da);
267
271 virtual void ShallowCopy(vtkFieldData* da);
272
276 void Squeeze();
277
282 void Reset();
283
290 virtual unsigned long GetActualMemorySize();
291
296
307
315 int GetArrayContainingComponent(int i, int& arrayComp);
316
327
339
348 void SetNumberOfTuples(const vtkIdType number);
349
356
362
369
370protected:
372 ~vtkFieldData() override;
373
377
381 void SetArray(int i, vtkAbstractArray* array);
382
386 virtual void InitializeFields();
387
389 {
392 };
393
394 CopyFieldFlag* CopyFieldFlags; // the names of fields not to be copied
395 int NumberOfFieldFlags; // the number of fields not to be copied
396 void CopyFieldOnOff(const char* name, int onOff);
398 int FindFlag(const char* field);
399 int GetFlag(const char* field);
403
404private:
405 vtkFieldData(const vtkFieldData&) = delete;
406 void operator=(const vtkFieldData&) = delete;
407
408public:
409 class VTKCOMMONDATAMODEL_EXPORT BasicIterator
410 {
411 public:
412 BasicIterator() = default;
414 BasicIterator(const int* list, unsigned int listSize);
416 virtual ~BasicIterator() = default;
417 void PrintSelf(ostream& os, vtkIndent indent);
418
419 int GetListSize() const { return static_cast<int>(this->List.size()); }
420 int GetCurrentIndex() { return this->List[this->Position]; }
422 {
423 this->Position = -1;
424 return this->NextIndex();
425 }
426 int End() const { return (this->Position >= static_cast<int>(this->List.size())); }
428 {
429 this->Position++;
430 return (this->End() ? -1 : this->List[this->Position]);
431 }
432
433 // Support C++ range-for loops; e.g, code like
434 // "for (const auto& i : basicIterator)".
435 std::vector<int>::const_iterator begin() { return this->List.begin(); }
436 std::vector<int>::const_iterator end() { return this->List.end(); }
437
438 protected:
439 std::vector<int> List;
441 };
442
443 class VTKCOMMONDATAMODEL_EXPORT Iterator : public BasicIterator
444 {
445 public:
448 ~Iterator() override;
449 Iterator(vtkFieldData* dsa, const int* list = nullptr, unsigned int listSize = 0);
450
452 {
453 this->Position = -1;
454 return this->Next();
455 }
456
458 {
459 this->Position++;
460 if (this->End())
461 {
462 return nullptr;
463 }
464
465 // vtkFieldData::GetArray() can return null, which implies that
466 // a the array at the given index in not a vtkDataArray subclass.
467 // This iterator skips such arrays.
468 vtkDataArray* cur = Fields->GetArray(this->List[this->Position]);
469 return (cur ? cur : this->Next());
470 }
471
473
474 protected:
477 };
478};
479
480#endif
Abstract superclass for all arrays.
virtual char * GetName()
Set/get array's name.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:59
BasicIterator(const BasicIterator &source)
BasicIterator & operator=(const BasicIterator &source)
BasicIterator(const int *list, unsigned int listSize)
virtual ~BasicIterator()=default
void PrintSelf(ostream &os, vtkIndent indent)
std::vector< int >::const_iterator end()
Definition: vtkFieldData.h:436
std::vector< int > List
Definition: vtkFieldData.h:439
std::vector< int >::const_iterator begin()
Definition: vtkFieldData.h:435
vtkDataArray * Begin()
Definition: vtkFieldData.h:451
Iterator(vtkFieldData *dsa, const int *list=nullptr, unsigned int listSize=0)
vtkFieldData * Fields
Definition: vtkFieldData.h:475
vtkDataArray * Next()
Definition: vtkFieldData.h:457
Iterator & operator=(const Iterator &source)
Iterator(const Iterator &source)
represent and manipulate fields of data
Definition: vtkFieldData.h:64
vtkTypeBool Allocate(vtkIdType sz, vtkIdType ext=1000)
Allocate data for each array.
int GetFlag(const char *field)
vtkAbstractArray ** Data
Definition: vtkFieldData.h:376
int GetNumberOfArrays()
Get the number of arrays of data available.
Definition: vtkFieldData.h:108
virtual void DeepCopy(vtkFieldData *da)
Copy a field by creating new data arrays (i.e., duplicate storage).
int AddArray(vtkAbstractArray *array)
Add an array to the array list.
void CopyFlags(const vtkFieldData *source)
~vtkFieldData() override
void Reset()
Resets each data array in the field (Reset() does not release memory but it makes the arrays look lik...
vtkAbstractArray * GetAbstractArray(const char *arrayName)
Return the array with the name given.
Definition: vtkFieldData.h:190
void SetTuple(const vtkIdType i, const vtkIdType j, vtkFieldData *source)
Set the jth tuple in source field data at the ith location.
void AllocateArrays(int num)
AllocateOfArrays actually sets the number of vtkAbstractArray pointers in the vtkFieldData object,...
virtual void RemoveArray(int index)
Remove an array (with the given name or index) from the list of arrays.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void InitializeFields()
Release all data but do not delete object.
int GetNumberOfComponents()
Get the number of components in the field.
vtkMTimeType GetMTime() override
Check object's components for modified times.
static vtkFieldData * ExtendedNew()
virtual void RemoveArray(const char *name)
Remove an array (with the given name or index) from the list of arrays.
virtual void CopyAllOn(int unused=0)
Turn on copying of all data.
void SetNumberOfTuples(const vtkIdType number)
Set the number of tuples for each data array in the field.
CopyFieldFlag * CopyFieldFlags
Definition: vtkFieldData.h:394
virtual unsigned long GetActualMemorySize()
Return the memory in kibibytes (1024 bytes) consumed by this field data.
int GetArrayContainingComponent(int i, int &arrayComp)
Return the array containing the ith component of the field.
void ClearFieldFlags()
int FindFlag(const char *field)
virtual void Initialize()
Release all data but do not delete object.
vtkDataArray * GetArray(int i)
Not recommended for use.
virtual void CopyAllOff(int unused=0)
Turn off copying of all data.
const char * GetArrayName(int i)
Get the name of ith array.
Definition: vtkFieldData.h:216
virtual void ShallowCopy(vtkFieldData *da)
Copy a field by reference counting the data arrays.
void CopyFieldOn(const char *name)
Turn on/off the copying of the field specified by name.
Definition: vtkFieldData.h:238
vtkIdType InsertNextTuple(const vtkIdType j, vtkFieldData *source)
Insert the jth tuple in source field data at the end of the tuple matrix.
void CopyFieldOff(const char *name)
Definition: vtkFieldData.h:239
vtkDataArray * GetArray(const char *arrayName, int &index)
Not recommended for use.
vtkIdType GetNumberOfTuples()
Get the number of tuples in the field.
static vtkFieldData * New()
void Squeeze()
Squeezes each data array in the field (Squeeze() reclaims unused memory.)
vtkAbstractArray * GetAbstractArray(int i)
Returns the ith array in the field.
void NullData(vtkIdType id)
Sets every vtkDataArray at index id to a null tuple.
void GetField(vtkIdList *ptId, vtkFieldData *f)
Get a field from a list of ids.
void CopyFieldOnOff(const char *name, int onOff)
int NumberOfActiveArrays
Definition: vtkFieldData.h:375
virtual void PassData(vtkFieldData *fd)
Pass entire arrays of input data through to output.
vtkDataArray * GetArray(const char *arrayName)
Not recommended for use.
Definition: vtkFieldData.h:162
void CopyStructure(vtkFieldData *)
Copy data array structure from a given field.
void InsertTuple(const vtkIdType i, const vtkIdType j, vtkFieldData *source)
Insert the jth tuple in source field data at the ith location.
void SetArray(int i, vtkAbstractArray *array)
Set an array to define the field.
vtkAbstractArray * GetAbstractArray(const char *arrayName, int &index)
Return the array with the name given.
int HasArray(const char *name)
Return 1 if an array with the given name could be found.
Definition: vtkFieldData.h:201
int NumberOfFieldFlags
Definition: vtkFieldData.h:395
list of point or cell ids
Definition: vtkIdList.h:40
a simple class to control print indentation
Definition: vtkIndent.h:43
abstract base class for most VTK objects
Definition: vtkObject.h:63
@ field
Definition: vtkX3D.h:183
@ name
Definition: vtkX3D.h:225
@ index
Definition: vtkX3D.h:252
int vtkTypeBool
Definition: vtkABI.h:69
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
int vtkIdType
Definition: vtkType.h:332
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287