VTK  9.3.0
vtkDataSetAttributes.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
54#ifndef vtkDataSetAttributes_h
55#define vtkDataSetAttributes_h
56
57#include "vtkCommonDataModelModule.h" // For export macro
58#include "vtkDataSetAttributesFieldList.h" // for vtkDataSetAttributesFieldList
59#include "vtkFieldData.h"
60
61VTK_ABI_NAMESPACE_BEGIN
62class vtkLookupTable;
63
64class VTKCOMMONDATAMODEL_EXPORT vtkDataSetAttributes : public vtkFieldData
65{
66public:
72
74 void PrintSelf(ostream& os, vtkIndent indent) override;
75
80 void Initialize() override;
81
86 virtual void Update() {}
87
88 // -- shallow and deep copy -----------------------------------------------
89
95 void DeepCopy(vtkFieldData* pd) override;
96
101 void ShallowCopy(vtkFieldData* pd) override;
102
103 // -- attribute types -----------------------------------------------------
104
105 // Always keep NUM_ATTRIBUTES as the last entry
107 {
108 SCALARS = 0,
109 VECTORS = 1,
110 NORMALS = 2,
111 TCOORDS = 3,
112 TENSORS = 4,
113 GLOBALIDS = 5,
114 PEDIGREEIDS = 6,
115 EDGEFLAG = 7,
116 TANGENTS = 8,
117 RATIONALWEIGHTS = 9,
118 HIGHERORDERDEGREES = 10,
119 PROCESSIDS = 11,
120 NUM_ATTRIBUTES
121 };
122
124 {
127 NOLIMIT
128 };
129
130 // ----------- ghost points and ghost cells -------------------------------------------
131 // The following bit fields are consistent with VisIt ghost zones specification
132 // For details, see http://www.visitusers.org/index.php?title=Representing_ghost_data
133
135 {
136 DUPLICATECELL = 1, // the cell is present on multiple processors
137 HIGHCONNECTIVITYCELL = 2, // the cell has more neighbors than in a regular mesh
138 LOWCONNECTIVITYCELL = 4, // the cell has less neighbors than in a regular mesh
139 REFINEDCELL = 8, // other cells are present that refines it.
140 EXTERIORCELL = 16, // the cell is on the exterior of the data set
141 HIDDENCELL =
142 32 // the cell is needed to maintain connectivity, but the data values should be ignored.
143 };
144
146 {
147 DUPLICATEPOINT = 1, // the cell is present on multiple processors
148 HIDDENPOINT =
149 2 // the point is needed to maintain connectivity, but the data values should be ignored.
150 };
151
152 // A vtkDataArray with this name must be of type vtkUnsignedCharArray.
153 // Each value must be assigned according to the bit fields described in
154 // PointGhostTypes or CellGhostType
155 static const char* GhostArrayName() { return "vtkGhostType"; }
156
157 //-----------------------------------------------------------------------------------
158
160
164 int SetActiveScalars(const char* name);
167
169
173 int SetActiveVectors(const char* name);
176
178
182 int SetActiveNormals(const char* name);
185
187
191 int SetActiveTangents(const char* name);
194
196
200 int SetActiveTCoords(const char* name);
203
205
209 int SetActiveTensors(const char* name);
212
214
218 int SetActiveGlobalIds(const char* name);
221
223
227 int SetActivePedigreeIds(const char* name);
230
232
236 int SetActiveRationalWeights(const char* name);
239
241
245 int SetActiveHigherOrderDegrees(const char* name);
248
250
254 int SetActiveProcessIds(const char* name);
257
259
265 vtkDataArray* GetScalars(const char* name);
266 vtkDataArray* GetVectors(const char* name);
267 vtkDataArray* GetNormals(const char* name);
268 vtkDataArray* GetTangents(const char* name);
269 vtkDataArray* GetTCoords(const char* name);
270 vtkDataArray* GetTensors(const char* name);
271 vtkDataArray* GetGlobalIds(const char* name);
275 vtkDataArray* GetProcessIds(const char* name);
277
296 int SetActiveAttribute(const char* name, int attributeType);
297
303 int SetActiveAttribute(int index, int attributeType);
304
310 void GetAttributeIndices(int* indexArray);
311
318 int IsArrayAnAttribute(int idx);
319
342 int SetAttribute(vtkAbstractArray* aa, int attributeType);
343
350 vtkDataArray* GetAttribute(int attributeType);
351
360
362
367 void RemoveArray(int index) override;
369
371
375 static const char* GetAttributeTypeAsString(int attributeType);
376 static const char* GetLongAttributeTypeAsString(int attributeType);
378
379 // -- attribute copy properties ------------------------------------------
380
382 {
383 COPYTUPLE = 0,
384 INTERPOLATE = 1,
385 PASSDATA = 2,
386 ALLCOPY // all of the above
387 };
388
410 void SetCopyAttribute(int index, int value, int ctype = ALLCOPY);
411
416 int GetCopyAttribute(int index, int ctype);
417
419 void SetCopyScalars(vtkTypeBool i, int ctype = ALLCOPY);
420 vtkTypeBool GetCopyScalars(int ctype = ALLCOPY);
421 vtkBooleanMacro(CopyScalars, vtkTypeBool);
422
424 void SetCopyVectors(vtkTypeBool i, int ctype = ALLCOPY);
425 vtkTypeBool GetCopyVectors(int ctype = ALLCOPY);
426 vtkBooleanMacro(CopyVectors, vtkTypeBool);
427
429 void SetCopyNormals(vtkTypeBool i, int ctype = ALLCOPY);
430 vtkTypeBool GetCopyNormals(int ctype = ALLCOPY);
431 vtkBooleanMacro(CopyNormals, vtkTypeBool);
432
434 void SetCopyTangents(vtkTypeBool i, int ctype = ALLCOPY);
435 vtkTypeBool GetCopyTangents(int ctype = ALLCOPY);
436 vtkBooleanMacro(CopyTangents, vtkTypeBool);
437
439 void SetCopyTCoords(vtkTypeBool i, int ctype = ALLCOPY);
440 vtkTypeBool GetCopyTCoords(int ctype = ALLCOPY);
441 vtkBooleanMacro(CopyTCoords, vtkTypeBool);
442
444 void SetCopyTensors(vtkTypeBool i, int ctype = ALLCOPY);
445 vtkTypeBool GetCopyTensors(int ctype = ALLCOPY);
446 vtkBooleanMacro(CopyTensors, vtkTypeBool);
447
449 void SetCopyGlobalIds(vtkTypeBool i, int ctype = ALLCOPY);
450 vtkTypeBool GetCopyGlobalIds(int ctype = ALLCOPY);
451 vtkBooleanMacro(CopyGlobalIds, vtkTypeBool);
452
454 void SetCopyPedigreeIds(vtkTypeBool i, int ctype = ALLCOPY);
455 vtkTypeBool GetCopyPedigreeIds(int ctype = ALLCOPY);
456 vtkBooleanMacro(CopyPedigreeIds, vtkTypeBool);
457
459 void SetCopyRationalWeights(vtkTypeBool i, int ctype = ALLCOPY);
461 vtkBooleanMacro(CopyRationalWeights, vtkTypeBool);
462
464 void SetCopyHigherOrderDegrees(vtkTypeBool i, int ctype = ALLCOPY);
466 vtkBooleanMacro(CopyHigherOrderDegrees, vtkTypeBool);
467
469 void SetCopyProcessIds(vtkTypeBool i, int ctype = ALLCOPY);
470 vtkTypeBool GetCopyProcessIds(int ctype = ALLCOPY);
471 vtkBooleanMacro(CopyProcessIds, vtkTypeBool);
472
474 void CopyAllOn(int ctype = ALLCOPY) override;
475
477 void CopyAllOff(int ctype = ALLCOPY) override;
478
479 // -- passthrough operations ----------------------------------------------
480
490 void PassData(vtkFieldData* fd) override;
491
492 // -- copytuple operations ------------------------------------------------
493
495
507 {
508 this->CopyAllocate(pd, sze, ext, 0);
509 }
510 void CopyAllocate(vtkDataSetAttributes* pd, vtkIdType sze, vtkIdType ext, int shallowCopyArrays);
512
521
531 vtkDataSetAttributes* inDsa, const int* inExt, const int* outExt, bool setSize = true);
532
534
548 void CopyData(vtkDataSetAttributes* fromPd, vtkIdList* fromIds, vtkIdList* toIds);
549 void CopyData(vtkDataSetAttributes* fromPd, vtkIdList* fromIds, vtkIdType destStartId = 0);
551
557 void CopyData(vtkDataSetAttributes* fromPd, vtkIdType dstStart, vtkIdType n, vtkIdType srcStart);
558
560
567 vtkAbstractArray* fromData, vtkAbstractArray* toData, vtkIdType fromId, vtkIdType toId);
569 vtkAbstractArray* fromData, vtkAbstractArray* toData, vtkIdList* fromIds, vtkIdList* toIds);
570 void CopyTuples(vtkAbstractArray* fromData, vtkAbstractArray* toData, vtkIdType dstStart,
571 vtkIdType n, vtkIdType srcStart);
573
574 // -- interpolate operations ----------------------------------------------
575
577
586 {
587 this->InterpolateAllocate(pd, sze, ext, 0);
588 }
590 vtkDataSetAttributes* pd, vtkIdType sze, vtkIdType ext, int shallowCopyArrays);
592
601 vtkDataSetAttributes* fromPd, vtkIdType toId, vtkIdList* ids, double* weights);
602
613 vtkDataSetAttributes* fromPd, vtkIdType toId, vtkIdType p1, vtkIdType p2, double t);
614
628 vtkDataSetAttributes* from1, vtkDataSetAttributes* from2, vtkIdType id, double t);
629
631
632 // field list copy operations ------------------------------------------
633
639
647 vtkIdType fromId, vtkIdType toId);
649 vtkIdType dstStart, vtkIdType n, vtkIdType srcStart);
650
658 vtkDataSetAttributes::FieldList& list, vtkIdType sze = 0, vtkIdType ext = 1000);
659
667 int idx, vtkIdType toId, vtkIdList* ids, double* weights);
668
669protected:
672
674 vtkIdType ext = 1000, int shallowCopyArrays = 0, bool createNewArrays = true);
675
679 void InitializeFields() override;
680
681 int AttributeIndices[NUM_ATTRIBUTES]; // index to attribute array in field data
682 int CopyAttributeFlags[ALLCOPY][NUM_ATTRIBUTES]; // copy flag for attribute data
683
684 friend struct ArrayList; // Friend to base class in vtkArrayListTemplate
687
688 static const int NumberOfAttributeComponents[NUM_ATTRIBUTES];
689 static const int AttributeLimits[NUM_ATTRIBUTES];
690 static const char AttributeNames[NUM_ATTRIBUTES][19];
691 static const char LongAttributeNames[NUM_ATTRIBUTES][42];
692
693private:
694 static int CheckNumberOfComponents(vtkAbstractArray* da, int attributeType);
695
696 vtkFieldData::BasicIterator ComputeRequiredArrays(vtkDataSetAttributes* pd, int ctype);
697
699 void operator=(const vtkDataSetAttributes&) = delete;
700
702};
703
704VTK_ABI_NAMESPACE_END
705#endif
Abstract superclass for all arrays.
abstract superclass for arrays of numeric data
helps manage arrays from multiple vtkDataSetAttributes.
represent and manipulate attribute data in a dataset
static const char * GetLongAttributeTypeAsString(int attributeType)
Given an integer attribute type, this static method returns a string type for the attribute (i....
vtkTypeBool GetCopyPedigreeIds(int ctype=ALLCOPY)
void PassData(vtkFieldData *fd) override
Pass entire arrays of input data through to output.
virtual void Update()
Attributes have a chance to bring themselves up to date; right now this is ignored.
vtkDataArray * GetTangents(const char *name)
If the string is nullptr or empty, calls the alternate method of the same name (that takes no paramet...
int SetActiveTangents(const char *name)
Set/get the tangent data.
int SetGlobalIds(vtkDataArray *da)
Set/Get the global id data.
void InterpolateEdge(vtkDataSetAttributes *fromPd, vtkIdType toId, vtkIdType p1, vtkIdType p2, double t)
Interpolate data from the two points p1,p2 (forming an edge) and an interpolation factor,...
void CopyAllocate(vtkDataSetAttributes *pd, vtkIdType sze, vtkIdType ext, int shallowCopyArrays)
Allocates point data for point-by-point (or cell-by-cell) copy operation.
void Initialize() override
Initialize all of the object's data to nullptr Also, clear the copy flags.
int GetCopyAttribute(int index, int ctype)
Get the attribute copy flag for copy operation ctype of attribute index.
vtkFieldData::BasicIterator RequiredArrays
vtkDataArray * GetHigherOrderDegrees(const char *name)
If the string is nullptr or empty, calls the alternate method of the same name (that takes no paramet...
vtkDataArray * GetScalars(const char *name)
If the string is nullptr or empty, calls the alternate method of the same name (that takes no paramet...
vtkTypeBool GetCopyScalars(int ctype=ALLCOPY)
vtkDataArray * GetTCoords()
Set/Get the texture coordinate data.
static vtkDataSetAttributes * ExtendedNew()
int SetActiveAttribute(int index, int attributeType)
Make the array with the given index the active attribute.
void SetCopyAttribute(int index, int value, int ctype=ALLCOPY)
Turn on/off the copying of attribute data.
int SetActiveProcessIds(const char *name)
Set/Get the process id data.
~vtkDataSetAttributes() override
int SetHigherOrderDegrees(vtkDataArray *da)
Set/Get the rational degrees data.
int SetActiveNormals(const char *name)
Set/get the normal data.
vtkDataArray * GetTangents()
Set/get the tangent data.
vtkAbstractArray * GetPedigreeIds(const char *name)
If the string is nullptr or empty, calls the alternate method of the same name (that takes no paramet...
vtkDataArray * GetRationalWeights()
Set/Get the rational weights data.
void SetCopyNormals(vtkTypeBool i, int ctype=ALLCOPY)
Turn on/off the copying of attribute data.
void InterpolateAllocate(vtkDataSetAttributes *pd, vtkIdType sze=0, vtkIdType ext=1000)
Initialize point interpolation method.
void CopyData(vtkDataSetAttributes *fromPd, vtkIdList *fromIds, vtkIdType destStartId=0)
Copy the attribute data from one id to another.
vtkDataArray * GetProcessIds()
Set/Get the process id data.
int SetActiveHigherOrderDegrees(const char *name)
Set/Get the rational degrees data.
vtkDataArray * GetNormals()
Set/get the normal data.
int SetScalars(vtkDataArray *da)
Set/Get the scalar data.
vtkDataArray * GetNormals(const char *name)
If the string is nullptr or empty, calls the alternate method of the same name (that takes no paramet...
void SetCopyTCoords(vtkTypeBool i, int ctype=ALLCOPY)
Turn on/off the copying of attribute data.
void InterpolatePoint(vtkDataSetAttributes::FieldList &list, vtkDataSetAttributes *fromPd, int idx, vtkIdType toId, vtkIdList *ids, double *weights)
Interpolate data set attributes from other data set attributes given cell or point ids and associated...
vtkDataArray * GetRationalWeights(const char *name)
If the string is nullptr or empty, calls the alternate method of the same name (that takes no paramet...
int SetActiveTCoords(const char *name)
Set/Get the texture coordinate data.
void SetCopyTangents(vtkTypeBool i, int ctype=ALLCOPY)
Turn on/off the copying of attribute data.
vtkTypeBool GetCopyVectors(int ctype=ALLCOPY)
vtkTypeBool GetCopyNormals(int ctype=ALLCOPY)
void CopyTuples(vtkAbstractArray *fromData, vtkAbstractArray *toData, vtkIdList *fromIds, vtkIdList *toIds)
Copy a tuple (or set of tuples) of data from one data array to another.
void InterpolatePoint(vtkDataSetAttributes *fromPd, vtkIdType toId, vtkIdList *ids, double *weights)
Interpolate data set attributes from other data set attributes given cell or point ids and associated...
void InterpolateAllocate(vtkDataSetAttributes::FieldList &list, vtkIdType sze=0, vtkIdType ext=1000)
A special form of InterpolateAllocate() to be used with FieldLists.
void SetCopyPedigreeIds(vtkTypeBool i, int ctype=ALLCOPY)
Turn on/off the copying of attribute data.
void InitializeFields() override
Initialize all of the object's data to nullptr.
vtkDataArray * GetTensors()
Set/Get the tensor data.
int SetActiveGlobalIds(const char *name)
Set/Get the global id data.
void SetupForCopy(vtkDataSetAttributes *pd)
Create a mapping between the input attributes and this object so that methods like CopyData() and Cop...
int SetActiveScalars(const char *name)
Set/Get the scalar data.
void CopyData(vtkDataSetAttributes *fromPd, vtkIdType dstStart, vtkIdType n, vtkIdType srcStart)
Copy n consecutive attributes starting at srcStart from fromPd to this container, starting at the dst...
int SetNormals(vtkDataArray *da)
Set/get the normal data.
void InterpolateTime(vtkDataSetAttributes *from1, vtkDataSetAttributes *from2, vtkIdType id, double t)
Interpolate data from the same id (point or cell) at different points in time (parameter t).
void CopyData(vtkDataSetAttributes::FieldList &list, vtkDataSetAttributes *dsa, int idx, vtkIdType fromId, vtkIdType toId)
Special forms of CopyData() to be used with FieldLists.
void CopyAllOn(int ctype=ALLCOPY) override
Turn on/off the copying of attribute data.
void SetCopyScalars(vtkTypeBool i, int ctype=ALLCOPY)
Turn on/off the copying of attribute data.
void CopyTuple(vtkAbstractArray *fromData, vtkAbstractArray *toData, vtkIdType fromId, vtkIdType toId)
Copy a tuple (or set of tuples) of data from one data array to another.
void InternalCopyAllocate(vtkDataSetAttributes *pd, int ctype, vtkIdType sze=0, vtkIdType ext=1000, int shallowCopyArrays=0, bool createNewArrays=true)
int IsArrayAnAttribute(int idx)
Determine whether a data array of index idx is considered a data set attribute (i....
vtkTypeBool GetCopyTangents(int ctype=ALLCOPY)
vtkDataArray * GetTCoords(const char *name)
If the string is nullptr or empty, calls the alternate method of the same name (that takes no paramet...
void CopyData(vtkDataSetAttributes *fromPd, vtkIdType fromId, vtkIdType toId)
Copy the attribute data from one id to another.
int SetActivePedigreeIds(const char *name)
Set/Get the pedigree id data.
vtkAbstractArray * GetPedigreeIds()
Set/Get the pedigree id data.
vtkDataArray * GetVectors()
Set/Get the vector data.
int SetProcessIds(vtkDataArray *da)
Set/Get the process id data.
int SetActiveRationalWeights(const char *name)
Set/Get the rational weights data.
vtkAbstractArray * GetAbstractAttribute(int attributeType)
Return an attribute given the attribute type (see vtkDataSetAttributes::AttributeTypes).
void RemoveArray(int index) override
Remove an array (with the given index) from the list of arrays.
static const char * GhostArrayName()
vtkTypeBool GetCopyRationalWeights(int ctype=ALLCOPY)
vtkTypeBool GetCopyHigherOrderDegrees(int ctype=ALLCOPY)
vtkDataArray * GetAttribute(int attributeType)
Return an attribute given the attribute type (see vtkDataSetAttributes::AttributeTypes).
void CopyTuples(vtkAbstractArray *fromData, vtkAbstractArray *toData, vtkIdType dstStart, vtkIdType n, vtkIdType srcStart)
Copy a tuple (or set of tuples) of data from one data array to another.
void CopyData(vtkDataSetAttributes::FieldList &list, vtkDataSetAttributes *dsa, int idx, vtkIdType dstStart, vtkIdType n, vtkIdType srcStart)
vtkTypeBool GetCopyGlobalIds(int ctype=ALLCOPY)
vtkTypeBool GetCopyTCoords(int ctype=ALLCOPY)
static vtkDataSetAttributes * New()
Construct object with copying turned on for all data.
void CopyStructuredData(vtkDataSetAttributes *inDsa, const int *inExt, const int *outExt, bool setSize=true)
This method is used to copy data arrays in images.
void CopyAllocate(vtkDataSetAttributes::FieldList &list, vtkIdType sze=0, vtkIdType ext=1000)
A special form of CopyAllocate() to be used with FieldLists.
void CopyAllocate(vtkDataSetAttributes *pd, vtkIdType sze=0, vtkIdType ext=1000)
Allocates point data for point-by-point (or cell-by-cell) copy operation.
void DeepCopy(vtkFieldData *pd) override
Deep copy of data (i.e., create new data arrays and copy from input data).
int SetRationalWeights(vtkDataArray *da)
Set/Get the rational weights data.
void ShallowCopy(vtkFieldData *pd) override
Shallow copy of data (i.e., use reference counting).
static const char * GetAttributeTypeAsString(int attributeType)
Given an integer attribute type, this static method returns a string type for the attribute (i....
void GetAttributeIndices(int *indexArray)
Get the field data array indices corresponding to scalars, vectors, tensors, etc.
void SetCopyRationalWeights(vtkTypeBool i, int ctype=ALLCOPY)
Turn on/off the copying of attribute data.
void SetCopyTensors(vtkTypeBool i, int ctype=ALLCOPY)
Turn on/off the copying of attribute data.
int SetActiveAttribute(const char *name, int attributeType)
Make the array with the given name the active attribute.
int SetTCoords(vtkDataArray *da)
Set/Get the texture coordinate data.
vtkTypeBool GetCopyProcessIds(int ctype=ALLCOPY)
void SetCopyHigherOrderDegrees(vtkTypeBool i, int ctype=ALLCOPY)
Turn on/off the copying of attribute data.
void InterpolateAllocate(vtkDataSetAttributes *pd, vtkIdType sze, vtkIdType ext, int shallowCopyArrays)
Initialize point interpolation method.
int SetPedigreeIds(vtkAbstractArray *da)
Set/Get the pedigree id data.
vtkTypeBool GetCopyTensors(int ctype=ALLCOPY)
void CopyData(vtkDataSetAttributes *fromPd, vtkIdList *fromIds, vtkIdList *toIds)
Copy the attribute data from one id to another.
void SetCopyProcessIds(vtkTypeBool i, int ctype=ALLCOPY)
Turn on/off the copying of attribute data.
int SetActiveVectors(const char *name)
Set/Get the vector data.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetCopyGlobalIds(vtkTypeBool i, int ctype=ALLCOPY)
Turn on/off the copying of attribute data.
void CopyAllOff(int ctype=ALLCOPY) override
Turn on/off the copying of attribute data.
vtkDataArray * GetGlobalIds(const char *name)
If the string is nullptr or empty, calls the alternate method of the same name (that takes no paramet...
vtkDataArray * GetScalars()
Set/Get the scalar data.
vtkDataArray * GetHigherOrderDegrees()
Set/Get the rational degrees data.
int SetTangents(vtkDataArray *da)
Set/get the tangent data.
int SetActiveTensors(const char *name)
Set/Get the tensor data.
void SetCopyVectors(vtkTypeBool i, int ctype=ALLCOPY)
Turn on/off the copying of attribute data.
vtkDataArray * GetVectors(const char *name)
If the string is nullptr or empty, calls the alternate method of the same name (that takes no paramet...
int SetVectors(vtkDataArray *da)
Set/Get the vector data.
vtkDataArray * GetTensors(const char *name)
If the string is nullptr or empty, calls the alternate method of the same name (that takes no paramet...
vtkDataArray * GetGlobalIds()
Set/Get the global id data.
int SetTensors(vtkDataArray *da)
Set/Get the tensor data.
int SetAttribute(vtkAbstractArray *aa, int attributeType)
Set an array to use as the given attribute type (i.e., vtkDataSetAttributes::SCALAR,...
vtkDataArray * GetProcessIds(const char *name)
If the string is nullptr or empty, calls the alternate method of the same name (that takes no paramet...
represent and manipulate fields of data
virtual void RemoveArray(const char *name)
Remove an array (with the given name) from the list of arrays.
list of point or cell ids
Definition vtkIdList.h:32
a simple class to control print indentation
Definition vtkIndent.h:38
map scalar values into colors via a lookup table
int vtkTypeBool
Definition vtkABI.h:64
int vtkIdType
Definition vtkType.h:315