40 #ifndef vtkArrayListTemplate_h 41 #define vtkArrayListTemplate_h 96 for (
int j = 0; j < this->
NumComp; ++j)
98 this->Output[outId * this->NumComp + j] = this->Input[inId * this->NumComp + j];
103 int numWeights,
const vtkIdType* ids,
const double* weights,
vtkIdType outId)
override 105 for (
int j = 0; j < this->
NumComp; ++j)
108 for (
vtkIdType i = 0; i < numWeights; ++i)
110 v += weights[i] *
static_cast<double>(this->Input[ids[i] * this->NumComp + j]);
112 this->Output[outId * this->NumComp + j] =
static_cast<T
>(v);
120 for (
int j = 0; j < numComp; ++j)
122 v = this->Input[v0 * numComp + j] +
123 t * (this->Input[v1 * numComp + j] - this->Input[v0 * numComp + j]);
124 this->Output[outId * numComp + j] =
static_cast<T
>(v);
130 for (
int j = 0; j < this->
NumComp; ++j)
132 this->Output[outId * this->NumComp + j] = this->
NullValue;
145 template <
typename TInput,
typename TOutput>
166 for (
int j = 0; j < this->
NumComp; ++j)
168 this->Output[outId * this->NumComp + j] =
169 static_cast<TOutput
>(this->Input[inId * this->NumComp + j]);
174 int numWeights,
const vtkIdType* ids,
const double* weights,
vtkIdType outId)
override 176 for (
int j = 0; j < this->
NumComp; ++j)
179 for (
vtkIdType i = 0; i < numWeights; ++i)
181 v += weights[i] *
static_cast<double>(this->Input[ids[i] * this->NumComp + j]);
183 this->Output[outId * this->NumComp + j] =
static_cast<TOutput
>(v);
191 for (
int j = 0; j < numComp; ++j)
193 v = this->Input[v0 * numComp + j] +
194 t * (this->Input[v1 * numComp + j] - this->Input[v0 * numComp + j]);
195 this->Output[outId * numComp + j] =
static_cast<TOutput
>(v);
201 for (
int j = 0; j < this->
NumComp; ++j)
203 this->Output[outId * this->NumComp + j] = this->
NullValue;
217 template <
typename T>
219 ArrayList* list, T* inData, T* outData,
vtkIdType numTuples,
int numComp, T nullValue);
230 double nullValue = 0.0,
vtkTypeBool promote =
true);
250 for (std::vector<BaseArrayPair*>::iterator it =
Arrays.begin(); it !=
Arrays.end(); ++it)
252 (*it)->Copy(inId, outId);
259 for (std::vector<BaseArrayPair*>::iterator it =
Arrays.begin(); it !=
Arrays.end(); ++it)
261 (*it)->Interpolate(numWeights, ids, weights, outId);
268 for (std::vector<BaseArrayPair*>::iterator it =
Arrays.begin(); it !=
Arrays.end(); ++it)
270 (*it)->InterpolateEdge(v0, v1, t, outId);
277 for (std::vector<BaseArrayPair*>::iterator it =
Arrays.begin(); it !=
Arrays.end(); ++it)
279 (*it)->AssignNullValue(outId);
286 for (std::vector<BaseArrayPair*>::iterator it =
Arrays.begin(); it !=
Arrays.end(); ++it)
295 for (std::vector<BaseArrayPair*>::iterator it =
Arrays.begin(); it !=
Arrays.end(); ++it)
305 #include "vtkArrayListTemplate.txx" Wrapper around std::string to keep symbols short.
RealArrayPair(TInput *in, TOutput *out, vtkIdType num, int numComp, vtkDataArray *outArray, TOutput null)
std::vector< BaseArrayPair * > Arrays
ArrayPair(T *in, T *out, vtkIdType num, int numComp, vtkDataArray *outArray, T null)
virtual void * GetVoidPointer(vtkIdType valueIdx)=0
Return a void pointer.
vtkDataArray * AddArrayPair(vtkIdType numTuples, vtkDataArray *inArray, vtkStdString &outArrayName, double nullValue, vtkTypeBool promote)
void InterpolateEdge(vtkIdType v0, vtkIdType v1, double t, vtkIdType outId) override
void Copy(vtkIdType inId, vtkIdType outId) override
void Copy(vtkIdType inId, vtkIdType outId) override
void AssignNullValue(vtkIdType outId) override
void Realloc(vtkIdType sze) override
void Interpolate(int numWeights, const vtkIdType *ids, const double *weights, vtkIdType outId) override
BaseArrayPair(vtkIdType num, int numComp, vtkDataArray *outArray)
void AssignNullValue(vtkIdType outId) override
virtual void Realloc(vtkIdType sze)=0
void Interpolate(int numWeights, const vtkIdType *ids, const double *weights, vtkIdType outId)
virtual void Interpolate(int numWeights, const vtkIdType *ids, const double *weights, vtkIdType outId)=0
void InterpolateEdge(vtkIdType v0, vtkIdType v1, double t, vtkIdType outId)
void AssignNullValue(vtkIdType outId)
vtkIdType GetNumberOfArrays()
void Copy(vtkIdType inId, vtkIdType outId)
vtkTypeBool IsExcluded(vtkDataArray *da)
abstract superclass for arrays of numeric data
void Realloc(vtkIdType sze)
void AddArrays(vtkIdType numOutPts, vtkDataSetAttributes *inPD, vtkDataSetAttributes *outPD, double nullValue=0.0, vtkTypeBool promote=true)
represent and manipulate attribute data in a dataset
virtual void Copy(vtkIdType inId, vtkIdType outId)=0
void ExcludeArray(vtkDataArray *da)
virtual void InterpolateEdge(vtkIdType v0, vtkIdType v1, double t, vtkIdType outId)=0
void Interpolate(int numWeights, const vtkIdType *ids, const double *weights, vtkIdType outId) override
vtkSmartPointer< vtkDataArray > OutputArray
void InterpolateEdge(vtkIdType v0, vtkIdType v1, double t, vtkIdType outId) override
void Realloc(vtkIdType sze) override
virtual void * WriteVoidPointer(vtkIdType valueIdx, vtkIdType numValues)=0
Get the address of a particular data index.
void CreateArrayPair(ArrayList *list, T *inData, T *outData, vtkIdType numTuples, int numComp, T nullValue)
virtual void AssignNullValue(vtkIdType outId)=0
~RealArrayPair() override
std::vector< vtkDataArray * > ExcludedArrays
void AddSelfInterpolatingArrays(vtkIdType numOutPts, vtkDataSetAttributes *attr, double nullValue=0.0)