VTK  9.2.5
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 =========================================================================*/
166 #ifndef vtkDataSetAttributes_h
167 #define vtkDataSetAttributes_h
168 
169 #include "vtkCommonDataModelModule.h" // For export macro
170 #include "vtkDataSetAttributesFieldList.h" // for vtkDataSetAttributesFieldList
171 #include "vtkFieldData.h"
172 
173 class vtkLookupTable;
174 
175 class VTKCOMMONDATAMODEL_EXPORT vtkDataSetAttributes : public vtkFieldData
176 {
177 public:
183 
185  void PrintSelf(ostream& os, vtkIndent indent) override;
186 
191  void Initialize() override;
192 
197  virtual void Update() {}
198 
199  // -- shallow and deep copy -----------------------------------------------
200 
206  void DeepCopy(vtkFieldData* pd) override;
207 
212  void ShallowCopy(vtkFieldData* pd) override;
213 
214  // -- attribute types -----------------------------------------------------
215 
216  // Always keep NUM_ATTRIBUTES as the last entry
218  {
219  SCALARS = 0,
220  VECTORS = 1,
221  NORMALS = 2,
222  TCOORDS = 3,
223  TENSORS = 4,
224  GLOBALIDS = 5,
225  PEDIGREEIDS = 6,
226  EDGEFLAG = 7,
227  TANGENTS = 8,
228  RATIONALWEIGHTS = 9,
229  HIGHERORDERDEGREES = 10,
230  NUM_ATTRIBUTES
231  };
232 
234  {
237  NOLIMIT
238  };
239 
240  // ----------- ghost points and ghost cells -------------------------------------------
241  // The following bit fields are consistent with VisIt ghost zones specification
242  // For details, see http://www.visitusers.org/index.php?title=Representing_ghost_data
243 
245  {
246  DUPLICATECELL = 1, // the cell is present on multiple processors
247  HIGHCONNECTIVITYCELL = 2, // the cell has more neighbors than in a regular mesh
248  LOWCONNECTIVITYCELL = 4, // the cell has less neighbors than in a regular mesh
249  REFINEDCELL = 8, // other cells are present that refines it.
250  EXTERIORCELL = 16, // the cell is on the exterior of the data set
251  HIDDENCELL =
252  32 // the cell is needed to maintain connectivity, but the data values should be ignored.
253  };
254 
256  {
257  DUPLICATEPOINT = 1, // the cell is present on multiple processors
258  HIDDENPOINT =
259  2 // the point is needed to maintain connectivity, but the data values should be ignored.
260  };
261 
262  // A vtkDataArray with this name must be of type vtkUnsignedCharArray.
263  // Each value must be assigned according to the bit fields described in
264  // PointGhostTypes or CellGhostType
265  static const char* GhostArrayName() { return "vtkGhostType"; }
266 
267  //-----------------------------------------------------------------------------------
268 
270 
274  int SetActiveScalars(const char* name);
277 
279 
283  int SetActiveVectors(const char* name);
286 
288 
292  int SetActiveNormals(const char* name);
295 
297 
301  int SetActiveTangents(const char* name);
304 
306 
310  int SetActiveTCoords(const char* name);
313 
315 
319  int SetActiveTensors(const char* name);
322 
324 
328  int SetActiveGlobalIds(const char* name);
331 
333 
337  int SetActivePedigreeIds(const char* name);
340 
342 
346  int SetActiveRationalWeights(const char* name);
349 
351 
358 
360 
365  vtkDataArray* GetScalars(const char* name);
366  vtkDataArray* GetVectors(const char* name);
367  vtkDataArray* GetNormals(const char* name);
369  vtkDataArray* GetTCoords(const char* name);
370  vtkDataArray* GetTensors(const char* name);
376 
392  int SetActiveAttribute(const char* name, int attributeType);
393 
397  int SetActiveAttribute(int index, int attributeType);
398 
403  void GetAttributeIndices(int* indexArray);
404 
411  int IsArrayAnAttribute(int idx);
412 
435  int SetAttribute(vtkAbstractArray* aa, int attributeType);
436 
443  vtkDataArray* GetAttribute(int attributeType);
444 
453 
455 
459  void RemoveArray(int index) override;
461 
463 
467  static const char* GetAttributeTypeAsString(int attributeType);
468  static const char* GetLongAttributeTypeAsString(int attributeType);
470 
471  // -- attribute copy properties ------------------------------------------
472 
474  {
475  COPYTUPLE = 0,
476  INTERPOLATE = 1,
477  PASSDATA = 2,
478  ALLCOPY // all of the above
479  };
480 
502  void SetCopyAttribute(int index, int value, int ctype = ALLCOPY);
503 
508  int GetCopyAttribute(int index, int ctype);
509 
511  void SetCopyScalars(vtkTypeBool i, int ctype = ALLCOPY);
512  vtkTypeBool GetCopyScalars(int ctype = ALLCOPY);
513  vtkBooleanMacro(CopyScalars, vtkTypeBool);
514 
516  void SetCopyVectors(vtkTypeBool i, int ctype = ALLCOPY);
517  vtkTypeBool GetCopyVectors(int ctype = ALLCOPY);
518  vtkBooleanMacro(CopyVectors, vtkTypeBool);
519 
521  void SetCopyNormals(vtkTypeBool i, int ctype = ALLCOPY);
522  vtkTypeBool GetCopyNormals(int ctype = ALLCOPY);
523  vtkBooleanMacro(CopyNormals, vtkTypeBool);
524 
526  void SetCopyTangents(vtkTypeBool i, int ctype = ALLCOPY);
527  vtkTypeBool GetCopyTangents(int ctype = ALLCOPY);
528  vtkBooleanMacro(CopyTangents, vtkTypeBool);
529 
531  void SetCopyTCoords(vtkTypeBool i, int ctype = ALLCOPY);
532  vtkTypeBool GetCopyTCoords(int ctype = ALLCOPY);
533  vtkBooleanMacro(CopyTCoords, vtkTypeBool);
534 
536  void SetCopyTensors(vtkTypeBool i, int ctype = ALLCOPY);
537  vtkTypeBool GetCopyTensors(int ctype = ALLCOPY);
538  vtkBooleanMacro(CopyTensors, vtkTypeBool);
539 
541  void SetCopyGlobalIds(vtkTypeBool i, int ctype = ALLCOPY);
542  vtkTypeBool GetCopyGlobalIds(int ctype = ALLCOPY);
543  vtkBooleanMacro(CopyGlobalIds, vtkTypeBool);
544 
546  void SetCopyPedigreeIds(vtkTypeBool i, int ctype = ALLCOPY);
547  vtkTypeBool GetCopyPedigreeIds(int ctype = ALLCOPY);
548  vtkBooleanMacro(CopyPedigreeIds, vtkTypeBool);
549 
551  void SetCopyRationalWeights(vtkTypeBool i, int ctype = ALLCOPY);
552  vtkTypeBool GetCopyRationalWeights(int ctype = ALLCOPY);
553  vtkBooleanMacro(CopyRationalWeights, vtkTypeBool);
554 
556  void SetCopyHigherOrderDegrees(vtkTypeBool i, int ctype = ALLCOPY);
558  vtkBooleanMacro(CopyHigherOrderDegrees, vtkTypeBool);
559 
561  void CopyAllOn(int ctype = ALLCOPY) override;
562 
564  void CopyAllOff(int ctype = ALLCOPY) override;
565 
566  // -- passthrough operations ----------------------------------------------
567 
577  void PassData(vtkFieldData* fd) override;
578 
579  // -- copytuple operations ------------------------------------------------
580 
582 
593  void CopyAllocate(vtkDataSetAttributes* pd, vtkIdType sze = 0, vtkIdType ext = 1000)
594  {
595  this->CopyAllocate(pd, sze, ext, 0);
596  }
597  void CopyAllocate(vtkDataSetAttributes* pd, vtkIdType sze, vtkIdType ext, int shallowCopyArrays);
599 
608 
618  vtkDataSetAttributes* inDsa, const int* inExt, const int* outExt, bool setSize = true);
619 
621 
634  void CopyData(vtkDataSetAttributes* fromPd, vtkIdType fromId, vtkIdType toId);
635  void CopyData(vtkDataSetAttributes* fromPd, vtkIdList* fromIds, vtkIdList* toIds);
636  void CopyData(vtkDataSetAttributes* fromPd, vtkIdList* fromIds, vtkIdType destStartId = 0);
638 
644  void CopyData(vtkDataSetAttributes* fromPd, vtkIdType dstStart, vtkIdType n, vtkIdType srcStart);
645 
647 
653  void CopyTuple(
654  vtkAbstractArray* fromData, vtkAbstractArray* toData, vtkIdType fromId, vtkIdType toId);
656  vtkAbstractArray* fromData, vtkAbstractArray* toData, vtkIdList* fromIds, vtkIdList* toIds);
657  void CopyTuples(vtkAbstractArray* fromData, vtkAbstractArray* toData, vtkIdType dstStart,
658  vtkIdType n, vtkIdType srcStart);
660 
661  // -- interpolate operations ----------------------------------------------
662 
664 
673  {
674  this->InterpolateAllocate(pd, sze, ext, 0);
675  }
677  vtkDataSetAttributes* pd, vtkIdType sze, vtkIdType ext, int shallowCopyArrays);
679 
688  vtkDataSetAttributes* fromPd, vtkIdType toId, vtkIdList* ids, double* weights);
689 
700  vtkDataSetAttributes* fromPd, vtkIdType toId, vtkIdType p1, vtkIdType p2, double t);
701 
715  vtkDataSetAttributes* from1, vtkDataSetAttributes* from2, vtkIdType id, double t);
716 
718 
719  // field list copy operations ------------------------------------------
720 
726 
734  vtkIdType fromId, vtkIdType toId);
736  vtkIdType dstStart, vtkIdType n, vtkIdType srcStart);
737 
745  vtkDataSetAttributes::FieldList& list, vtkIdType sze = 0, vtkIdType ext = 1000);
746 
754  int idx, vtkIdType toId, vtkIdList* ids, double* weights);
755 
756 protected:
759 
761  vtkIdType ext = 1000, int shallowCopyArrays = 0, bool createNewArrays = true);
762 
766  void InitializeFields() override;
767 
768  int AttributeIndices[NUM_ATTRIBUTES]; // index to attribute array in field data
769  int CopyAttributeFlags[ALLCOPY][NUM_ATTRIBUTES]; // copy flag for attribute data
770 
771  friend struct ArrayList; // Friend to base class in vtkArrayListTemplate
774 
775  static const int NumberOfAttributeComponents[NUM_ATTRIBUTES];
776  static const int AttributeLimits[NUM_ATTRIBUTES];
777  static const char AttributeNames[NUM_ATTRIBUTES][19];
778  static const char LongAttributeNames[NUM_ATTRIBUTES][42];
779 
780 private:
781  static int CheckNumberOfComponents(vtkAbstractArray* da, int attributeType);
782 
783  vtkFieldData::BasicIterator ComputeRequiredArrays(vtkDataSetAttributes* pd, int ctype);
784 
785 private:
787  void operator=(const vtkDataSetAttributes&) = delete;
788 
790 };
791 
792 #endif
Abstract superclass for all arrays.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:165
helps manage arrays from multiple vtkDataSetAttributes.
represent and manipulate attribute data in a dataset
vtkDataArray * GetScalars(const char *name)
This will first look for an array with the correct name.
vtkTypeBool GetCopyPedigreeIds(int ctype=ALLCOPY)
static const char * GhostArrayName()
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 * GetTensors()
Set/Get the tensor data.
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.
vtkDataArray * GetNormals(const char *name)
This will first look for an array with the correct name.
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.
vtkDataArray * GetVectors(const char *name)
This will first look for an array with the correct name.
vtkFieldData::BasicIterator RequiredArrays
vtkDataArray * GetRationalWeights()
Set/Get the rational weights data.
vtkTypeBool GetCopyScalars(int ctype=ALLCOPY)
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.
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.
int SetScalars(vtkDataArray *da)
Set/Get the scalar data.
vtkAbstractArray * GetAbstractAttribute(int attributeType)
Return an attribute given the attribute type (see vtkDataSetAttributes::AttributeTypes).
vtkDataArray * GetTangents(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...
vtkAbstractArray * GetPedigreeIds(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.
vtkDataArray * GetTensors(const char *name)
This will first look for an array with the correct name.
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.
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...
vtkDataArray * GetNormals()
Set/get the normal data.
vtkDataArray * GetHigherOrderDegrees(const char *name)
This will first look for an array with the correct name.
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.
vtkDataArray * GetGlobalIds(const char *name)
This will first look for an array with the correct name.
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)
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.
static vtkDataSetAttributes * ExtendedNew()
int SetActiveRationalWeights(const char *name)
Set/Get the rational weights data.
vtkDataArray * GetGlobalIds()
Set/Get the global id data.
void RemoveArray(int index) override
Remove an array (with the given name) from the list of arrays.
vtkTypeBool GetCopyRationalWeights(int ctype=ALLCOPY)
vtkTypeBool GetCopyHigherOrderDegrees(int ctype=ALLCOPY)
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)
void CopyStructuredData(vtkDataSetAttributes *inDsa, const int *inExt, const int *outExt, bool setSize=true)
This method is used to copy data arrays in images.
static vtkDataSetAttributes * New()
Construct object with copying turned on for all data.
static const char * GetAttributeTypeAsString(int attributeType)
Given an integer attribute type, this static method returns a string type for the attribute (i....
vtkDataArray * GetVectors()
Set/Get the vector data.
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.
static const char * GetLongAttributeTypeAsString(int attributeType)
Given an integer attribute type, this static method returns a string type for the attribute (i....
vtkDataArray * GetRationalWeights(const char *name)
This will first look for an array with the correct name.
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).
void GetAttributeIndices(int *indexArray)
Get the field data array indices corresponding to scalars, vectors, tensors, etc.
vtkDataArray * GetTCoords(const char *name)
This will first look for an array with the correct name.
void SetCopyRationalWeights(vtkTypeBool i, int ctype=ALLCOPY)
Turn on/off the copying of attribute data.
vtkDataArray * GetTangents()
Set/get the tangent data.
void SetCopyTensors(vtkTypeBool i, int ctype=ALLCOPY)
Turn on/off the copying of attribute data.
vtkAbstractArray * GetPedigreeIds()
Set/Get the pedigree id data.
int SetActiveAttribute(const char *name, int attributeType)
Make the array with the given name the active attribute.
vtkDataArray * GetTCoords()
Set/Get the texture coordinate data.
int SetTCoords(vtkDataArray *da)
Set/Get the texture coordinate data.
vtkDataArray * GetHigherOrderDegrees()
Set/Get the rational degrees data.
void SetCopyHigherOrderDegrees(vtkTypeBool i, int ctype=ALLCOPY)
Turn on/off the copying of attribute data.
vtkDataArray * GetScalars()
Set/Get the scalar 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.
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.
int SetVectors(vtkDataArray *da)
Set/Get the vector data.
int SetTensors(vtkDataArray *da)
Set/Get the tensor data.
vtkDataArray * GetAttribute(int attributeType)
Return an attribute given the attribute type (see vtkDataSetAttributes::AttributeTypes).
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:172
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:143
a simple class to control print indentation
Definition: vtkIndent.h:119
map scalar values into colors via a lookup table
@ value
Definition: vtkX3D.h:226
@ name
Definition: vtkX3D.h:225
@ index
Definition: vtkX3D.h:252
int vtkTypeBool
Definition: vtkABI.h:69
int vtkIdType
Definition: vtkType.h:332