VTK  9.2.6
vtkDataSetAttributes.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkDataSetAttributes.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=========================================================================*/
57#ifndef vtkDataSetAttributes_h
58#define vtkDataSetAttributes_h
59
60#include "vtkCommonDataModelModule.h" // For export macro
61#include "vtkDataSetAttributesFieldList.h" // for vtkDataSetAttributesFieldList
62#include "vtkFieldData.h"
63
64class vtkLookupTable;
65
66class VTKCOMMONDATAMODEL_EXPORT vtkDataSetAttributes : public vtkFieldData
67{
68public:
74
76 void PrintSelf(ostream& os, vtkIndent indent) override;
77
82 void Initialize() override;
83
88 virtual void Update() {}
89
90 // -- shallow and deep copy -----------------------------------------------
91
97 void DeepCopy(vtkFieldData* pd) override;
98
103 void ShallowCopy(vtkFieldData* pd) override;
104
105 // -- attribute types -----------------------------------------------------
106
107 // Always keep NUM_ATTRIBUTES as the last entry
109 {
110 SCALARS = 0,
111 VECTORS = 1,
112 NORMALS = 2,
113 TCOORDS = 3,
114 TENSORS = 4,
115 GLOBALIDS = 5,
116 PEDIGREEIDS = 6,
117 EDGEFLAG = 7,
118 TANGENTS = 8,
119 RATIONALWEIGHTS = 9,
120 HIGHERORDERDEGREES = 10,
121 NUM_ATTRIBUTES
122 };
123
125 {
128 NOLIMIT
129 };
130
131 // ----------- ghost points and ghost cells -------------------------------------------
132 // The following bit fields are consistent with VisIt ghost zones specification
133 // For details, see http://www.visitusers.org/index.php?title=Representing_ghost_data
134
136 {
137 DUPLICATECELL = 1, // the cell is present on multiple processors
138 HIGHCONNECTIVITYCELL = 2, // the cell has more neighbors than in a regular mesh
139 LOWCONNECTIVITYCELL = 4, // the cell has less neighbors than in a regular mesh
140 REFINEDCELL = 8, // other cells are present that refines it.
141 EXTERIORCELL = 16, // the cell is on the exterior of the data set
142 HIDDENCELL =
143 32 // the cell is needed to maintain connectivity, but the data values should be ignored.
144 };
145
147 {
148 DUPLICATEPOINT = 1, // the cell is present on multiple processors
149 HIDDENPOINT =
150 2 // the point is needed to maintain connectivity, but the data values should be ignored.
151 };
152
153 // A vtkDataArray with this name must be of type vtkUnsignedCharArray.
154 // Each value must be assigned according to the bit fields described in
155 // PointGhostTypes or CellGhostType
156 static const char* GhostArrayName() { return "vtkGhostType"; }
157
158 //-----------------------------------------------------------------------------------
159
161
165 int SetActiveScalars(const char* name);
168
170
174 int SetActiveVectors(const char* name);
177
179
183 int SetActiveNormals(const char* name);
186
188
192 int SetActiveTangents(const char* name);
195
197
201 int SetActiveTCoords(const char* name);
204
206
210 int SetActiveTensors(const char* name);
213
215
219 int SetActiveGlobalIds(const char* name);
222
224
228 int SetActivePedigreeIds(const char* name);
231
233
237 int SetActiveRationalWeights(const char* name);
240
242
246 int SetActiveHigherOrderDegrees(const char* name);
249
251
256 vtkDataArray* GetScalars(const char* name);
257 vtkDataArray* GetVectors(const char* name);
258 vtkDataArray* GetNormals(const char* name);
259 vtkDataArray* GetTangents(const char* name);
260 vtkDataArray* GetTCoords(const char* name);
261 vtkDataArray* GetTensors(const char* name);
262 vtkDataArray* GetGlobalIds(const char* name);
267
283 int SetActiveAttribute(const char* name, int attributeType);
284
288 int SetActiveAttribute(int index, int attributeType);
289
294 void GetAttributeIndices(int* indexArray);
295
302 int IsArrayAnAttribute(int idx);
303
326 int SetAttribute(vtkAbstractArray* aa, int attributeType);
327
334 vtkDataArray* GetAttribute(int attributeType);
335
344
346
350 void RemoveArray(int index) override;
352
354
358 static const char* GetAttributeTypeAsString(int attributeType);
359 static const char* GetLongAttributeTypeAsString(int attributeType);
361
362 // -- attribute copy properties ------------------------------------------
363
365 {
366 COPYTUPLE = 0,
367 INTERPOLATE = 1,
368 PASSDATA = 2,
369 ALLCOPY // all of the above
370 };
371
393 void SetCopyAttribute(int index, int value, int ctype = ALLCOPY);
394
399 int GetCopyAttribute(int index, int ctype);
400
402 void SetCopyScalars(vtkTypeBool i, int ctype = ALLCOPY);
403 vtkTypeBool GetCopyScalars(int ctype = ALLCOPY);
404 vtkBooleanMacro(CopyScalars, vtkTypeBool);
405
407 void SetCopyVectors(vtkTypeBool i, int ctype = ALLCOPY);
408 vtkTypeBool GetCopyVectors(int ctype = ALLCOPY);
409 vtkBooleanMacro(CopyVectors, vtkTypeBool);
410
412 void SetCopyNormals(vtkTypeBool i, int ctype = ALLCOPY);
413 vtkTypeBool GetCopyNormals(int ctype = ALLCOPY);
414 vtkBooleanMacro(CopyNormals, vtkTypeBool);
415
417 void SetCopyTangents(vtkTypeBool i, int ctype = ALLCOPY);
418 vtkTypeBool GetCopyTangents(int ctype = ALLCOPY);
419 vtkBooleanMacro(CopyTangents, vtkTypeBool);
420
422 void SetCopyTCoords(vtkTypeBool i, int ctype = ALLCOPY);
423 vtkTypeBool GetCopyTCoords(int ctype = ALLCOPY);
424 vtkBooleanMacro(CopyTCoords, vtkTypeBool);
425
427 void SetCopyTensors(vtkTypeBool i, int ctype = ALLCOPY);
428 vtkTypeBool GetCopyTensors(int ctype = ALLCOPY);
429 vtkBooleanMacro(CopyTensors, vtkTypeBool);
430
432 void SetCopyGlobalIds(vtkTypeBool i, int ctype = ALLCOPY);
433 vtkTypeBool GetCopyGlobalIds(int ctype = ALLCOPY);
434 vtkBooleanMacro(CopyGlobalIds, vtkTypeBool);
435
437 void SetCopyPedigreeIds(vtkTypeBool i, int ctype = ALLCOPY);
438 vtkTypeBool GetCopyPedigreeIds(int ctype = ALLCOPY);
439 vtkBooleanMacro(CopyPedigreeIds, vtkTypeBool);
440
442 void SetCopyRationalWeights(vtkTypeBool i, int ctype = ALLCOPY);
444 vtkBooleanMacro(CopyRationalWeights, vtkTypeBool);
445
447 void SetCopyHigherOrderDegrees(vtkTypeBool i, int ctype = ALLCOPY);
449 vtkBooleanMacro(CopyHigherOrderDegrees, vtkTypeBool);
450
452 void CopyAllOn(int ctype = ALLCOPY) override;
453
455 void CopyAllOff(int ctype = ALLCOPY) override;
456
457 // -- passthrough operations ----------------------------------------------
458
468 void PassData(vtkFieldData* fd) override;
469
470 // -- copytuple operations ------------------------------------------------
471
473
485 {
486 this->CopyAllocate(pd, sze, ext, 0);
487 }
488 void CopyAllocate(vtkDataSetAttributes* pd, vtkIdType sze, vtkIdType ext, int shallowCopyArrays);
490
499
509 vtkDataSetAttributes* inDsa, const int* inExt, const int* outExt, bool setSize = true);
510
512
526 void CopyData(vtkDataSetAttributes* fromPd, vtkIdList* fromIds, vtkIdList* toIds);
527 void CopyData(vtkDataSetAttributes* fromPd, vtkIdList* fromIds, vtkIdType destStartId = 0);
529
535 void CopyData(vtkDataSetAttributes* fromPd, vtkIdType dstStart, vtkIdType n, vtkIdType srcStart);
536
538
545 vtkAbstractArray* fromData, vtkAbstractArray* toData, vtkIdType fromId, vtkIdType toId);
547 vtkAbstractArray* fromData, vtkAbstractArray* toData, vtkIdList* fromIds, vtkIdList* toIds);
548 void CopyTuples(vtkAbstractArray* fromData, vtkAbstractArray* toData, vtkIdType dstStart,
549 vtkIdType n, vtkIdType srcStart);
551
552 // -- interpolate operations ----------------------------------------------
553
555
564 {
565 this->InterpolateAllocate(pd, sze, ext, 0);
566 }
568 vtkDataSetAttributes* pd, vtkIdType sze, vtkIdType ext, int shallowCopyArrays);
570
579 vtkDataSetAttributes* fromPd, vtkIdType toId, vtkIdList* ids, double* weights);
580
591 vtkDataSetAttributes* fromPd, vtkIdType toId, vtkIdType p1, vtkIdType p2, double t);
592
606 vtkDataSetAttributes* from1, vtkDataSetAttributes* from2, vtkIdType id, double t);
607
609
610 // field list copy operations ------------------------------------------
611
617
625 vtkIdType fromId, vtkIdType toId);
627 vtkIdType dstStart, vtkIdType n, vtkIdType srcStart);
628
636 vtkDataSetAttributes::FieldList& list, vtkIdType sze = 0, vtkIdType ext = 1000);
637
645 int idx, vtkIdType toId, vtkIdList* ids, double* weights);
646
647protected:
650
652 vtkIdType ext = 1000, int shallowCopyArrays = 0, bool createNewArrays = true);
653
657 void InitializeFields() override;
658
659 int AttributeIndices[NUM_ATTRIBUTES]; // index to attribute array in field data
660 int CopyAttributeFlags[ALLCOPY][NUM_ATTRIBUTES]; // copy flag for attribute data
661
662 friend struct ArrayList; // Friend to base class in vtkArrayListTemplate
665
666 static const int NumberOfAttributeComponents[NUM_ATTRIBUTES];
667 static const int AttributeLimits[NUM_ATTRIBUTES];
668 static const char AttributeNames[NUM_ATTRIBUTES][19];
669 static const char LongAttributeNames[NUM_ATTRIBUTES][42];
670
671private:
672 static int CheckNumberOfComponents(vtkAbstractArray* da, int attributeType);
673
674 vtkFieldData::BasicIterator ComputeRequiredArrays(vtkDataSetAttributes* pd, int ctype);
675
676private:
678 void operator=(const vtkDataSetAttributes&) = delete;
679
681};
682
683#endif
Abstract superclass for all arrays.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:56
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)
This will first look for an array with the correct name.
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)
This will first look for an array with the correct name.
vtkDataArray * GetScalars(const char *name)
This will first look for an array with the correct name.
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.
~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)
This will first look for an array with the correct name.
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.
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)
This will first look for an array with the correct name.
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)
This will first look for an array with the correct name.
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)
This will first look for an array with the correct name.
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 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 name) 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.
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.
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)
This will first look for an array with the correct name.
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)
This will first look for an array with the correct name.
int SetVectors(vtkDataArray *da)
Set/Get the vector data.
vtkDataArray * GetTensors(const char *name)
This will first look for an array with the correct name.
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,...
represent and manipulate fields of data
Definition: vtkFieldData.h:63
virtual void RemoveArray(const char *name)
Remove an array (with the given name or index) from the list of arrays.
list of point or cell ids
Definition: vtkIdList.h:34
a simple class to control print indentation
Definition: vtkIndent.h:40
map scalar values into colors via a lookup table
int vtkTypeBool
Definition: vtkABI.h:69
int vtkIdType
Definition: vtkType.h:332