VTK  9.1.0
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 =========================================================================*/
160 #ifndef vtkDataSetAttributes_h
161 #define vtkDataSetAttributes_h
162 
163 #include "vtkCommonDataModelModule.h" // For export macro
164 #include "vtkDataSetAttributesFieldList.h" // for vtkDataSetAttributesFieldList
165 #include "vtkFieldData.h"
166 
167 class vtkLookupTable;
168 
169 class VTKCOMMONDATAMODEL_EXPORT vtkDataSetAttributes : public vtkFieldData
170 {
171 public:
177 
179  void PrintSelf(ostream& os, vtkIndent indent) override;
180 
185  void Initialize() override;
186 
191  virtual void Update() {}
192 
193  // -- shallow and deep copy -----------------------------------------------
194 
200  void DeepCopy(vtkFieldData* pd) override;
201 
206  void ShallowCopy(vtkFieldData* pd) override;
207 
208  // -- attribute types -----------------------------------------------------
209 
210  // Always keep NUM_ATTRIBUTES as the last entry
212  {
213  SCALARS = 0,
214  VECTORS = 1,
215  NORMALS = 2,
216  TCOORDS = 3,
217  TENSORS = 4,
218  GLOBALIDS = 5,
219  PEDIGREEIDS = 6,
220  EDGEFLAG = 7,
221  TANGENTS = 8,
222  RATIONALWEIGHTS = 9,
223  HIGHERORDERDEGREES = 10,
224  NUM_ATTRIBUTES
225  };
226 
228  {
231  NOLIMIT
232  };
233 
234  // ----------- ghost points and ghost cells -------------------------------------------
235  // The following bit fields are consistent with VisIt ghost zones specification
236  // For details, see http://www.visitusers.org/index.php?title=Representing_ghost_data
237 
239  {
240  DUPLICATECELL = 1, // the cell is present on multiple processors
241  HIGHCONNECTIVITYCELL = 2, // the cell has more neighbors than in a regular mesh
242  LOWCONNECTIVITYCELL = 4, // the cell has less neighbors than in a regular mesh
243  REFINEDCELL = 8, // other cells are present that refines it.
244  EXTERIORCELL = 16, // the cell is on the exterior of the data set
245  HIDDENCELL =
246  32 // the cell is needed to maintain connectivity, but the data values should be ignored.
247  };
248 
250  {
251  DUPLICATEPOINT = 1, // the cell is present on multiple processors
252  HIDDENPOINT =
253  2 // the point is needed to maintain connectivity, but the data values should be ignored.
254  };
255 
256  // A vtkDataArray with this name must be of type vtkUnsignedCharArray.
257  // Each value must be assigned according to the bit fields described in
258  // PointGhostTypes or CellGhostType
259  static const char* GhostArrayName() { return "vtkGhostType"; }
260 
261  //-----------------------------------------------------------------------------------
262 
264 
268  int SetActiveScalars(const char* name);
271 
273 
277  int SetActiveVectors(const char* name);
280 
282 
286  int SetActiveNormals(const char* name);
289 
291 
295  int SetActiveTangents(const char* name);
298 
300 
304  int SetActiveTCoords(const char* name);
307 
309 
313  int SetActiveTensors(const char* name);
316 
318 
322  int SetActiveGlobalIds(const char* name);
325 
327 
331  int SetActivePedigreeIds(const char* name);
334 
336 
340  int SetActiveRationalWeights(const char* name);
343 
345 
352 
354 
359  vtkDataArray* GetScalars(const char* name);
360  vtkDataArray* GetVectors(const char* name);
361  vtkDataArray* GetNormals(const char* name);
363  vtkDataArray* GetTCoords(const char* name);
364  vtkDataArray* GetTensors(const char* name);
370 
386  int SetActiveAttribute(const char* name, int attributeType);
387 
391  int SetActiveAttribute(int index, int attributeType);
392 
397  void GetAttributeIndices(int* indexArray);
398 
405  int IsArrayAnAttribute(int idx);
406 
429  int SetAttribute(vtkAbstractArray* aa, int attributeType);
430 
437  vtkDataArray* GetAttribute(int attributeType);
438 
447 
449 
453  void RemoveArray(int index) override;
455 
457 
461  static const char* GetAttributeTypeAsString(int attributeType);
462  static const char* GetLongAttributeTypeAsString(int attributeType);
464 
465  // -- attribute copy properties ------------------------------------------
466 
468  {
469  COPYTUPLE = 0,
470  INTERPOLATE = 1,
471  PASSDATA = 2,
472  ALLCOPY // all of the above
473  };
474 
496  void SetCopyAttribute(int index, int value, int ctype = ALLCOPY);
497 
502  int GetCopyAttribute(int index, int ctype);
503 
505  void SetCopyScalars(vtkTypeBool i, int ctype = ALLCOPY);
506  vtkTypeBool GetCopyScalars(int ctype = ALLCOPY);
507  vtkBooleanMacro(CopyScalars, vtkTypeBool);
508 
510  void SetCopyVectors(vtkTypeBool i, int ctype = ALLCOPY);
511  vtkTypeBool GetCopyVectors(int ctype = ALLCOPY);
512  vtkBooleanMacro(CopyVectors, vtkTypeBool);
513 
515  void SetCopyNormals(vtkTypeBool i, int ctype = ALLCOPY);
516  vtkTypeBool GetCopyNormals(int ctype = ALLCOPY);
517  vtkBooleanMacro(CopyNormals, vtkTypeBool);
518 
520  void SetCopyTangents(vtkTypeBool i, int ctype = ALLCOPY);
521  vtkTypeBool GetCopyTangents(int ctype = ALLCOPY);
522  vtkBooleanMacro(CopyTangents, vtkTypeBool);
523 
525  void SetCopyTCoords(vtkTypeBool i, int ctype = ALLCOPY);
526  vtkTypeBool GetCopyTCoords(int ctype = ALLCOPY);
527  vtkBooleanMacro(CopyTCoords, vtkTypeBool);
528 
530  void SetCopyTensors(vtkTypeBool i, int ctype = ALLCOPY);
531  vtkTypeBool GetCopyTensors(int ctype = ALLCOPY);
532  vtkBooleanMacro(CopyTensors, vtkTypeBool);
533 
535  void SetCopyGlobalIds(vtkTypeBool i, int ctype = ALLCOPY);
536  vtkTypeBool GetCopyGlobalIds(int ctype = ALLCOPY);
537  vtkBooleanMacro(CopyGlobalIds, vtkTypeBool);
538 
540  void SetCopyPedigreeIds(vtkTypeBool i, int ctype = ALLCOPY);
541  vtkTypeBool GetCopyPedigreeIds(int ctype = ALLCOPY);
542  vtkBooleanMacro(CopyPedigreeIds, vtkTypeBool);
543 
545  void SetCopyRationalWeights(vtkTypeBool i, int ctype = ALLCOPY);
546  vtkTypeBool GetCopyRationalWeights(int ctype = ALLCOPY);
547  vtkBooleanMacro(CopyRationalWeights, vtkTypeBool);
548 
550  void SetCopyHigherOrderDegrees(vtkTypeBool i, int ctype = ALLCOPY);
552  vtkBooleanMacro(CopyHigherOrderDegrees, vtkTypeBool);
553 
555  void CopyAllOn(int ctype = ALLCOPY) override;
556 
558  void CopyAllOff(int ctype = ALLCOPY) override;
559 
560  // -- passthrough operations ----------------------------------------------
561 
571  void PassData(vtkFieldData* fd) override;
572 
573  // -- copytuple operations ------------------------------------------------
574 
576 
587  void CopyAllocate(vtkDataSetAttributes* pd, vtkIdType sze = 0, vtkIdType ext = 1000)
588  {
589  this->CopyAllocate(pd, sze, ext, 0);
590  }
591  void CopyAllocate(vtkDataSetAttributes* pd, vtkIdType sze, vtkIdType ext, int shallowCopyArrays);
593 
602 
612  vtkDataSetAttributes* inDsa, const int* inExt, const int* outExt, bool setSize = true);
613 
615 
625  void CopyData(vtkDataSetAttributes* fromPd, vtkIdType fromId, vtkIdType toId);
626  void CopyData(vtkDataSetAttributes* fromPd, vtkIdList* fromIds, vtkIdList* toIds);
628 
634  void CopyData(vtkDataSetAttributes* fromPd, vtkIdType dstStart, vtkIdType n, vtkIdType srcStart);
635 
637 
643  void CopyTuple(
644  vtkAbstractArray* fromData, vtkAbstractArray* toData, vtkIdType fromId, vtkIdType toId);
646  vtkAbstractArray* fromData, vtkAbstractArray* toData, vtkIdList* fromIds, vtkIdList* toIds);
647  void CopyTuples(vtkAbstractArray* fromData, vtkAbstractArray* toData, vtkIdType dstStart,
648  vtkIdType n, vtkIdType srcStart);
650 
651  // -- interpolate operations ----------------------------------------------
652 
654 
663  {
664  this->InterpolateAllocate(pd, sze, ext, 0);
665  }
667  vtkDataSetAttributes* pd, vtkIdType sze, vtkIdType ext, int shallowCopyArrays);
669 
678  vtkDataSetAttributes* fromPd, vtkIdType toId, vtkIdList* ids, double* weights);
679 
690  vtkDataSetAttributes* fromPd, vtkIdType toId, vtkIdType p1, vtkIdType p2, double t);
691 
705  vtkDataSetAttributes* from1, vtkDataSetAttributes* from2, vtkIdType id, double t);
706 
708 
709  // field list copy operations ------------------------------------------
710 
716 
724  vtkIdType fromId, vtkIdType toId);
726  vtkIdType dstStart, vtkIdType n, vtkIdType srcStart);
727 
735  vtkDataSetAttributes::FieldList& list, vtkIdType sze = 0, vtkIdType ext = 1000);
736 
744  int idx, vtkIdType toId, vtkIdList* ids, double* weights);
745 
746 protected:
749 
751  vtkIdType ext = 1000, int shallowCopyArrays = 0, bool createNewArrays = true);
752 
756  void InitializeFields() override;
757 
758  int AttributeIndices[NUM_ATTRIBUTES]; // index to attribute array in field data
759  int CopyAttributeFlags[ALLCOPY][NUM_ATTRIBUTES]; // copy flag for attribute data
760 
761  friend struct ArrayList; // Friend to base class in vtkArrayListTemplate
764 
765  static const int NumberOfAttributeComponents[NUM_ATTRIBUTES];
766  static const int AttributeLimits[NUM_ATTRIBUTES];
767  static const char AttributeNames[NUM_ATTRIBUTES][19];
768  static const char LongAttributeNames[NUM_ATTRIBUTES][42];
769 
770 private:
771  static int CheckNumberOfComponents(vtkAbstractArray* da, int attributeType);
772 
773  vtkFieldData::BasicIterator ComputeRequiredArrays(vtkDataSetAttributes* pd, int ctype);
774 
775 private:
777  void operator=(const vtkDataSetAttributes&) = delete;
778 
780 };
781 
782 #endif
Abstract superclass for all arrays.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:159
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.
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:164
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:140
a simple class to control print indentation
Definition: vtkIndent.h:113
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