40 #ifndef vtkArrayListTemplate_h
41 #define vtkArrayListTemplate_h
60 Num(num), NumComp(numComp), OutputArray(outArray)
69 const double *weights,
vtkIdType outId) = 0;
85 BaseArrayPair(num,numComp,outArray), Input(in), Output(out), NullValue(null)
94 for (
int j=0; j < this->
NumComp; ++j)
96 this->Output[outId*this->NumComp+j] = this->Input[inId*this->NumComp+j];
101 const double *weights,
vtkIdType outId) VTK_OVERRIDE
103 for (
int j=0; j < this->
NumComp; ++j)
108 v += weights[i] *
static_cast<double>(this->Input[ids[i]*this->NumComp+j]);
110 this->Output[outId*this->NumComp+j] =
static_cast<T
>(v);
118 for (
int j=0; j < numComp; ++j)
120 v = this->Input[v0*numComp+j] +
121 t * (this->Input[v1*numComp+j] - this->Input[v0*numComp+j]);
122 this->Output[outId*numComp+j] =
static_cast<T
>(v);
128 for (
int j=0; j < this->
NumComp; ++j)
130 this->Output[outId*this->NumComp+j] = this->
NullValue;
144 template <
typename TInput,
typename TOutput>
152 BaseArrayPair(num,numComp,outArray), Input(in), Output(out), NullValue(null)
161 for (
int j=0; j < this->
NumComp; ++j)
163 this->Output[outId*this->NumComp+j] =
static_cast<TOutput
>(this->Input[inId*this->NumComp+j]);
168 const double *weights,
vtkIdType outId) VTK_OVERRIDE
170 for (
int j=0; j < this->
NumComp; ++j)
175 v += weights[i] *
static_cast<double>(this->Input[ids[i]*this->NumComp+j]);
177 this->Output[outId*this->NumComp+j] =
static_cast<TOutput
>(v);
185 for (
int j=0; j < numComp; ++j)
187 v = this->Input[v0*numComp+j] +
188 t * (this->Input[v1*numComp+j] - this->Input[v0*numComp+j]);
189 this->Output[outId*numComp+j] =
static_cast<TOutput
>(v);
195 for (
int j=0; j < this->
NumComp; ++j)
197 this->Output[outId*this->NumComp+j] = this->
NullValue;
212 template <
typename T>
214 vtkIdType numTuples,
int numComp, T nullValue);
233 vtkStdString &outArrayName,
double nullValue,
bool promote);
243 for (std::vector<BaseArrayPair*>::iterator it = Arrays.begin();
244 it != Arrays.end(); ++it)
246 (*it)->Copy(inId, outId);
253 for (std::vector<BaseArrayPair*>::iterator it = Arrays.begin();
254 it != Arrays.end(); ++it)
256 (*it)->Interpolate(numWeights, ids, weights, outId);
263 for (std::vector<BaseArrayPair*>::iterator it = Arrays.begin();
264 it != Arrays.end(); ++it)
266 (*it)->InterpolateEdge(v0, v1, t, outId);
273 for (std::vector<BaseArrayPair*>::iterator it = Arrays.begin();
274 it != Arrays.end(); ++it)
276 (*it)->AssignNullValue(outId);
283 for (std::vector<BaseArrayPair*>::iterator it = Arrays.begin();
284 it != Arrays.end(); ++it)
293 for (std::vector<BaseArrayPair*>::iterator it = Arrays.begin();
294 it != Arrays.end(); ++it)
303 return Arrays.size();
309 #include "vtkArrayListTemplate.txx"
void AddArrays(vtkIdType numOutPts, vtkDataSetAttributes *inPD, vtkDataSetAttributes *outPD, double nullValue=0.0, bool promote=true)
Wrapper around std::string to keep symbols short.
bool IsExcluded(vtkDataArray *da)
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.
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)
abstract superclass for arrays of numeric data
void Realloc(vtkIdType sze)
represent and manipulate attribute data in a dataset
virtual void Copy(vtkIdType inId, vtkIdType outId)=0
vtkDataArray * AddArrayPair(vtkIdType numTuples, vtkDataArray *inArray, vtkStdString &outArrayName, double nullValue, bool promote)
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