VTK  9.6.20260214
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
16
17#ifndef vtkPeriodicDataArray_h
18#define vtkPeriodicDataArray_h
19
20#include "vtkAOSDataArrayTemplate.h" // Template
21#include "vtkDeprecation.h" // VTK_DEPRECATED_IN_9_7_0
22#include "vtkGenericDataArray.h" // Parent
23
24VTK_ABI_NAMESPACE_BEGIN
25template <class Scalar>
27 "No longer needed because vtkAngularPeriodicFilter generates an "
28 "implicit array using an internally defined backend.") vtkPeriodicDataArray
29 : public vtkGenericDataArray<vtkPeriodicDataArray<Scalar>, Scalar,
30 /* vtkArrayTypes::VTK_PERIODIC_DATA_ARRAY */ 9>
31{
32 using GenericDataArrayType = vtkGenericDataArray<vtkPeriodicDataArray<Scalar>, Scalar,
33 /* vtkArrayTypes::VTK_PERIODIC_DATA_ARRAY */ 9>;
34
35public:
38 using typename Superclass::ArrayTypeTag;
39 using typename Superclass::DataTypeTag;
40 using typename Superclass::ValueType;
41
42 void PrintSelf(ostream& os, vtkIndent indent) override;
43
48
52 void Initialize() override;
53
57 void GetTuples(vtkIdList* ptIds, vtkAbstractArray* output) override;
58
62 void GetTuples(vtkIdType p1, vtkIdType p2, vtkAbstractArray* output) override;
63
67 void Squeeze() override;
68
72 VTK_DEPRECATED_IN_9_7_0("Use vtk::DataArrayValueRange, or the array directly")
74
79
83 void LookupValue(vtkVariant value, vtkIdList* ids) override;
84
89
93 void ClearLookup() override;
94
99 double* GetTuple(vtkIdType i) override;
100
104 void GetTuple(vtkIdType i, double* tuple) override;
105
109 vtkIdType LookupTypedValue(Scalar value) override;
110
114 void LookupTypedValue(Scalar value, vtkIdList* ids) override;
115
122
129
133 void GetTypedTuple(vtkIdType idx, Scalar* t) const;
134
140 ValueType GetTypedComponent(vtkIdType tupleIdx, int compIdx) const;
141
145 unsigned long GetActualMemorySize() const override;
146
151
155 vtkTypeBool Resize(vtkIdType numTuples) override;
156
160 void SetNumberOfTuples(vtkIdType number) override;
161
166
170 void SetTuple(vtkIdType i, const float* source) override;
171
175 void SetTuple(vtkIdType i, const double* source) override;
176
181
185 void InsertTuple(vtkIdType i, const float* source) override;
186
190 void InsertTuple(vtkIdType i, const double* source) override;
191
195 void InsertTuples(vtkIdList* dstIds, vtkIdList* srcIds, vtkAbstractArray* source) override;
196
201 vtkIdType dstStart, vtkIdList* srcIds, vtkAbstractArray* source) override;
202
207 vtkIdType dstStart, vtkIdType n, vtkIdType srcStart, vtkAbstractArray* source) override;
208
213
217 vtkIdType InsertNextTuple(const float* source) override;
218
222 vtkIdType InsertNextTuple(const double* source) override;
223
227 void DeepCopy(vtkAbstractArray* aa) override;
228
232 void DeepCopy(vtkDataArray* da) override;
233
238 vtkIdType i, vtkIdList* ptIndices, vtkAbstractArray* source, double* weights) override;
239
244 vtkAbstractArray* source2, double t) override;
245
249 void SetVariantValue(vtkIdType idx, vtkVariant value) override;
250
254 void InsertVariantValue(vtkIdType idx, vtkVariant value) override;
255
259 void RemoveTuple(vtkIdType id) override;
260
264 void RemoveFirstTuple() override;
265
269 void RemoveLastTuple() override;
270
274 void SetTypedTuple(vtkIdType i, const Scalar* t);
275
279 void SetTypedComponent(vtkIdType t, int c, Scalar v);
280
284 void InsertTypedTuple(vtkIdType i, const Scalar* t);
285
290
294 void SetValue(vtkIdType idx, Scalar value);
295
300
304 void InsertValue(vtkIdType idx, Scalar v);
305
307
310 vtkSetMacro(Normalize, bool);
311 vtkGetMacro(Normalize, bool);
313
314protected:
317
319
322 bool AllocateTuples(vtkIdType numTuples);
325
329 virtual void Transform(Scalar* tuple) const = 0;
330
335
339 bool ComputeScalarRange(double* range) override;
340
344 bool ComputeVectorRange(double range[2]) override;
345
349 bool ComputeFiniteScalarRange(double* range) override;
350
354 bool ComputeFiniteVectorRange(double range[2]) override;
355
359 virtual void ComputePeriodicRange(bool finite = false);
360
365
366 bool Normalize; // If transformed vector must be normalized
367
368private:
370 void operator=(const vtkPeriodicDataArray&) = delete;
371
372 friend class vtkGenericDataArray<SelfType, ValueType, ArrayTypeTag::value>;
373
374 Scalar* TempScalarArray; // Temporary array used by GetTypedTuple methods
375 double* TempDoubleArray; // Temporary array used by GetTuple vethods
376 vtkIdType TempTupleIdx; // Location of currently stored Temp Tuple to use as cache
377 vtkAOSDataArrayTemplate<Scalar>* Data; // Original data
378
379 bool InvalidRange = true;
380 double PeriodicRange[6]; // Transformed periodic range
381 bool InvalidFiniteRange = true;
382 double PeriodicFiniteRange[6]; // Transformed periodic finite range
383};
384
385// Declare vtkArrayDownCast implementations for scaled SoA containers:
387
388VTK_ABI_NAMESPACE_END
389#include "vtkPeriodicDataArray.txx"
390
391#endif // vtkPeriodicDataArray_h
392// VTK-HeaderTest-Exclude: vtkPeriodicDataArray.h
Array-Of-Structs implementation of vtkGenericDataArray.
std::integral_constant< int, VTK_OPAQUE > DataTypeTag
std::integral_constant< int, vtkArrayTypes::VTK_ABSTRACT_ARRAY > ArrayTypeTag
Abstract superclass to iterate over elements in an vtkAbstractArray.
vtkAbstractArray Superclass
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.
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.
vtkPeriodicDataArray< Scalar > SelfType
unsigned long GetActualMemorySize() const override
Return the memory in kilobytes consumed by this data array.
vtkTemplateTypeMacro(vtkPeriodicDataArray< Scalar >, GenericDataArrayType)
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.
vtkIdType InsertNextTuple(vtkIdType j, vtkAbstractArray *source) override
Read only container, error.
void RemoveTuple(vtkIdType id) override
Read only container, not supported.
vtkArrayIterator * NewIterator() override
Not implemented.
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.
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.
ValueType & GetValueReference(vtkIdType idx)
Get value at index idx as reference.
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 GetTypedTuple(vtkIdType idx, Scalar *t) const
Copy tuple value at location idx into provided array.
void SetTypedComponent(vtkIdType t, int c, Scalar v)
Read only container, not supported.
bool ReallocateTuples(vtkIdType numTuples)
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.
std::integral_constant< int, vtkArrayTypes::VTK_ABSTRACT_ARRAY > ArrayTypeTag
void RemoveFirstTuple() override
Read only container, not supported.
void InsertTuples(vtkIdList *dstIds, vtkIdList *srcIds, vtkAbstractArray *source) override
Read only container, not supported.
void InterpolateTuple(vtkIdType i, vtkIdList *ptIndices, vtkAbstractArray *source, double *weights) 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 SetTypedTuple(vtkIdType i, const Scalar *t)
Read only container, not supported.
void InsertValue(vtkIdType idx, Scalar v)
Read only container, not supported.
vtkIdType LookupValue(vtkVariant value) override
Not implemented.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
double * GetTuple(vtkIdType i) override
Return tuple at location i.
A type representing the union of many types.
Definition vtkVariant.h:162
int vtkTypeBool
Definition vtkABI.h:64
#define vtkArrayDownCast_TemplateFastCastMacro(ArrayT)
Same as vtkArrayDownCast_FastCastMacro, but treats ArrayT as a single-parameter template (the paramet...
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
#define VTK_DEPRECATED_IN_9_7_0(reason)
int vtkIdType
Definition vtkType.h:363
#define VTK_NEWINSTANCE