VTK  9.3.20240417
vtkPeriodicDataArray.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
3 
17 #ifndef vtkPeriodicDataArray_h
18 #define vtkPeriodicDataArray_h
19 
20 #include "vtkAOSDataArrayTemplate.h" // Template
21 #include "vtkGenericDataArray.h" // Parent
22 
23 VTK_ABI_NAMESPACE_BEGIN
24 template <class Scalar>
25 class vtkPeriodicDataArray : public vtkGenericDataArray<vtkPeriodicDataArray<Scalar>, Scalar>
26 {
28 
29 public:
31  typedef typename Superclass::ValueType ValueType;
32 
33  void PrintSelf(ostream& os, vtkIndent indent) override;
34 
39 
43  void Initialize() override;
44 
48  void GetTuples(vtkIdList* ptIds, vtkAbstractArray* output) override;
49 
53  void GetTuples(vtkIdType p1, vtkIdType p2, vtkAbstractArray* output) override;
54 
58  void Squeeze() override;
59 
64 
69 
73  void LookupValue(vtkVariant value, vtkIdList* ids) override;
74 
79 
83  void ClearLookup() override;
84 
89  double* GetTuple(vtkIdType i) override;
90 
94  void GetTuple(vtkIdType i, double* tuple) override;
95 
99  vtkIdType LookupTypedValue(Scalar value) override;
100 
104  void LookupTypedValue(Scalar value, vtkIdList* ids) override;
105 
112 
119 
123  void GetTypedTuple(vtkIdType idx, Scalar* t) const;
124 
130  ValueType GetTypedComponent(vtkIdType tupleIdx, int compIdx) const;
131 
135  unsigned long GetActualMemorySize() const override;
136 
141 
145  vtkTypeBool Resize(vtkIdType numTuples) override;
146 
150  void SetNumberOfTuples(vtkIdType number) override;
151 
156 
160  void SetTuple(vtkIdType i, const float* source) override;
161 
165  void SetTuple(vtkIdType i, const double* source) override;
166 
171 
175  void InsertTuple(vtkIdType i, const float* source) override;
176 
180  void InsertTuple(vtkIdType i, const double* source) override;
181 
185  void InsertTuples(vtkIdList* dstIds, vtkIdList* srcIds, vtkAbstractArray* source) override;
186 
191  vtkIdType dstStart, vtkIdList* srcIds, vtkAbstractArray* source) override;
192 
197  vtkIdType dstStart, vtkIdType n, vtkIdType srcStart, vtkAbstractArray* source) override;
198 
203 
207  vtkIdType InsertNextTuple(const float* source) override;
208 
212  vtkIdType InsertNextTuple(const double* source) override;
213 
217  void DeepCopy(vtkAbstractArray* aa) override;
218 
222  void DeepCopy(vtkDataArray* da) override;
223 
228  vtkIdType i, vtkIdList* ptIndices, vtkAbstractArray* source, double* weights) override;
229 
234  vtkAbstractArray* source2, double t) override;
235 
240 
245 
249  void RemoveTuple(vtkIdType id) override;
250 
254  void RemoveFirstTuple() override;
255 
259  void RemoveLastTuple() override;
260 
264  void SetTypedTuple(vtkIdType i, const Scalar* t);
265 
269  void SetTypedComponent(vtkIdType t, int c, Scalar v);
270 
274  void InsertTypedTuple(vtkIdType i, const Scalar* t);
275 
279  vtkIdType InsertNextTypedTuple(const Scalar* t);
280 
284  void SetValue(vtkIdType idx, Scalar value);
285 
290 
294  void InsertValue(vtkIdType idx, Scalar v);
295 
297 
300  vtkSetMacro(Normalize, bool);
301  vtkGetMacro(Normalize, bool);
303 
308  void* GetVoidPointer(vtkIdType valueIdx) override;
309 
310 protected:
313 
315 
318  bool AllocateTuples(vtkIdType numTuples);
319  bool ReallocateTuples(vtkIdType numTuples);
321 
325  virtual void Transform(Scalar* tuple) const = 0;
326 
327  using Superclass::ComputeFiniteScalarRange;
328  using Superclass::ComputeFiniteVectorRange;
329  using Superclass::ComputeScalarRange;
330  using Superclass::ComputeVectorRange;
331 
335  bool ComputeScalarRange(double* range) override;
336 
340  bool ComputeVectorRange(double range[2]) override;
341 
345  bool ComputeFiniteScalarRange(double* range) override;
346 
350  bool ComputeFiniteVectorRange(double range[2]) override;
351 
355  virtual void ComputePeriodicRange(bool finite = false);
356 
361 
362  bool Normalize; // If transformed vector must be normalized
363 
364 private:
366  void operator=(const vtkPeriodicDataArray&) = delete;
367 
368  friend class vtkGenericDataArray<vtkPeriodicDataArray<Scalar>, Scalar>;
369 
370  Scalar* TempScalarArray; // Temporary array used by GetTypedTuple methods
371  double* TempDoubleArray; // Temporary array used by GetTuple vethods
372  vtkIdType TempTupleIdx; // Location of currently stored Temp Tuple to use as cache
373  vtkAOSDataArrayTemplate<Scalar>* Data; // Original data
374  vtkAOSDataArrayTemplate<Scalar>* Cache; // Only used by void pointer
375 
376  bool InvalidRange = true;
377  double PeriodicRange[6]; // Transformed periodic range
378  bool InvalidFiniteRange = true;
379  double PeriodicFiniteRange[6]; // Transformed periodic finite range
380 };
381 
382 VTK_ABI_NAMESPACE_END
383 #include "vtkPeriodicDataArray.txx"
384 
385 #endif // vtkPeriodicDataArray_h
386 // VTK-HeaderTest-Exclude: vtkPeriodicDataArray.h
Abstract superclass for all arrays.
Abstract superclass to iterate over elements in an vtkAbstractArray.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:155
Base interface for all typed vtkDataArray subclasses.
list of point or cell ids
Definition: vtkIdList.h:133
a simple class to control print indentation
Definition: vtkIndent.h:108
Map native an Array into an angulat periodic array.
void GetTuples(vtkIdType p1, vtkIdType p2, vtkAbstractArray *output) override
Copy tuples from id p1 to id p2 included into provided array.
void InsertTypedTuple(vtkIdType i, const Scalar *t)
Read only container, not supported.
void GetTuples(vtkIdList *ptIds, vtkAbstractArray *output) override
Copy tuples values, selected by ptIds into provided array.
void SetTuple(vtkIdType i, const double *source) override
Read only container, not supported.
bool AllocateTuples(vtkIdType numTuples)
Read only container, not supported.
vtkTypeBool Allocate(vtkIdType sz, vtkIdType ext) override
Read only container, not supported.
void ClearLookup() override
Not implemented.
vtkTemplateTypeMacro(vtkPeriodicDataArray< Scalar >, GenericBase)
vtkIdType InsertNextTuple(const double *source) override
Read only container, not supported.
unsigned long GetActualMemorySize() const override
Return the memory in kilobytes consumed by this data array.
vtkIdType LookupTypedValue(Scalar value) override
Not implemented.
virtual void ComputePeriodicRange(bool finite=false)
Update the transformed periodic range.
void SetNumberOfTuples(vtkIdType number) override
Read only container, not supported.
bool ComputeScalarRange(double *range) override
Get the transformed range by components.
void LookupValue(vtkVariant value, vtkIdList *ids) override
Not implemented.
vtkIdType InsertNextTuple(vtkIdType j, vtkAbstractArray *source) override
Read only container, error.
void RemoveTuple(vtkIdType id) override
Read only container, not supported.
void SetValue(vtkIdType idx, Scalar value)
Read only container, not supported.
bool ComputeFiniteScalarRange(double *range) override
Get the finite transformed range by components.
void DeepCopy(vtkAbstractArray *aa) override
Read only container, not supported.
double * GetTuple(vtkIdType i) override
Return tuple at location i.
void InsertTuplesStartingAt(vtkIdType dstStart, vtkIdList *srcIds, vtkAbstractArray *source) override
Read only container, not supported.
void InsertVariantValue(vtkIdType idx, vtkVariant value) override
Read only container, not supported.
bool ComputeFiniteVectorRange(double range[2]) override
Get the transformed finite range on all components.
vtkIdType InsertNextTypedTuple(const Scalar *t)
Read only container, not supported.
void SetTuple(vtkIdType i, vtkIdType j, vtkAbstractArray *source) override
Read only container, not supported.
void InsertTuple(vtkIdType i, vtkIdType j, vtkAbstractArray *source) override
Read only container, not supported.
void LookupTypedValue(Scalar value, vtkIdList *ids) override
Not implemented.
void GetTypedTuple(vtkIdType idx, Scalar *t) const
Copy tuple value at location idx into provided array.
ValueType & GetValueReference(vtkIdType idx)
Get value at index idx as reference.
void SetTuple(vtkIdType i, const float *source) override
Read only container, not supported.
void SetTypedComponent(vtkIdType t, int c, Scalar v)
Read only container, not supported.
bool ReallocateTuples(vtkIdType numTuples)
Read only container, not supported.
void InsertTuples(vtkIdType dstStart, vtkIdType n, vtkIdType srcStart, vtkAbstractArray *source) override
Read only container, not supported.
vtkTypeBool Resize(vtkIdType numTuples) override
Read only container, not supported.
vtkVariant GetVariantValue(vtkIdType idx) override
Not implemented.
virtual void Transform(Scalar *tuple) const =0
Transform the provided tuple.
void InitializeArray(vtkAOSDataArrayTemplate< Scalar > *inputData)
Initialize the mapped array with the original input data array.
ValueType GetTypedComponent(vtkIdType tupleIdx, int compIdx) const
Return the requested component of the specified tuple.
void RemoveLastTuple() override
Read only container, not supported.
void SetVariantValue(vtkIdType idx, vtkVariant value) override
Read only container, not supported.
void Squeeze() override
No effect.
bool ComputeVectorRange(double range[2]) override
Get the transformed range on all components.
vtkIdType InsertNextValue(Scalar v)
Read only container, not supported.
void InvalidateRange()
Set the invalid range flag to false.
void InsertTuple(vtkIdType i, const float *source) override
Read only container, not supported.
vtkArrayIterator * NewIterator() override
Not implemented.
void RemoveFirstTuple() override
Read only container, not supported.
void InsertTuples(vtkIdList *dstIds, vtkIdList *srcIds, vtkAbstractArray *source) override
Read only container, not supported.
void InsertTuple(vtkIdType i, const double *source) override
Read only container, not supported.
void InterpolateTuple(vtkIdType i, vtkIdList *ptIndices, vtkAbstractArray *source, double *weights) override
Read only container, not supported.
void DeepCopy(vtkDataArray *da) override
Read only container, not supported.
ValueType GetValue(vtkIdType idx) const
Get value at index idx.
void Initialize() override
Initialize array with zero values.
void GetTuple(vtkIdType i, double *tuple) override
Copy tuple at location i into user provided array.
void SetTypedTuple(vtkIdType i, const Scalar *t)
Read only container, not supported.
void InterpolateTuple(vtkIdType i, vtkIdType id1, vtkAbstractArray *source1, vtkIdType id2, vtkAbstractArray *source2, double t) override
Read only container, not supported.
void InsertValue(vtkIdType idx, Scalar v)
Read only container, not supported.
vtkIdType LookupValue(vtkVariant value) override
Not implemented.
Superclass::ValueType ValueType
~vtkPeriodicDataArray() override
vtkIdType InsertNextTuple(const float *source) override
Read only container, not supported.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void * GetVoidPointer(vtkIdType valueIdx) override
Use of this method is discouraged, it creates a memory copy of the data into a contiguous AoS-ordered...
A type representing the union of many types.
Definition: vtkVariant.h:162
@ value
Definition: vtkX3D.h:220
@ range
Definition: vtkX3D.h:238
int vtkTypeBool
Definition: vtkABI.h:64
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
int vtkIdType
Definition: vtkType.h:315
#define VTK_NEWINSTANCE