/** * @brief ConvertData Templated function that converts an IDataArray to a given primitive type * @param ptr IDataArray instance pointer * @param dims Component dimensions * @param m DataContainer instance pointer * @param scalarType Primitive type to convert to * @param attributeMatrixName Name of target AttributeMatrix * @param name Name of converted array */ void ConvertData(T* ptr, QVector<size_t> dims, DataContainer::Pointer m, int32_t scalarType, const QString attributeMatrixName, const QString& name) { int voxels = ptr->getNumberOfTuples(); size_t size = ptr->getSize(); if (scalarType == Detail::Int8) { Int8ArrayType::Pointer p = Int8ArrayType::CreateArray(voxels, dims, name); m->getAttributeMatrix(attributeMatrixName)->addAttributeArray(p->getName(), p); for(size_t v = 0; v < size; ++v) { p->setValue(v, ptr->getValue(v) ); } } else if (scalarType == Detail::UInt8) { UInt8ArrayType::Pointer p = UInt8ArrayType::CreateArray(voxels, dims, name); m->getAttributeMatrix(attributeMatrixName)->addAttributeArray(p->getName(), p); for(size_t v = 0; v < size; ++v) { p->setValue(v, ptr->getValue(v) ); } } else if (scalarType == Detail::Int16) { Int16ArrayType::Pointer p = Int16ArrayType::CreateArray(voxels, dims, name); m->getAttributeMatrix(attributeMatrixName)->addAttributeArray(p->getName(), p); for(size_t v = 0; v < size; ++v) { p->setValue(v, ptr->getValue(v) ); } } else if (scalarType == Detail::UInt16) { UInt16ArrayType::Pointer p = UInt16ArrayType::CreateArray(voxels, dims, name); m->getAttributeMatrix(attributeMatrixName)->addAttributeArray(p->getName(), p); for(size_t v = 0; v < size; ++v) { p->setValue(v, ptr->getValue(v) ); } } else if (scalarType == Detail::Int32) { Int32ArrayType::Pointer p = Int32ArrayType::CreateArray(voxels, dims, name); m->getAttributeMatrix(attributeMatrixName)->addAttributeArray(p->getName(), p); for(size_t v = 0; v < size; ++v) { p->setValue(v, ptr->getValue(v) ); } } else if (scalarType == Detail::UInt32) { UInt32ArrayType::Pointer p = UInt32ArrayType::CreateArray(voxels, dims, name); m->getAttributeMatrix(attributeMatrixName)->addAttributeArray(p->getName(), p); for(size_t v = 0; v < size; ++v) { p->setValue(v, ptr->getValue(v) ); } } else if (scalarType == Detail::Int64) { Int64ArrayType::Pointer p = Int64ArrayType::CreateArray(voxels, dims, name); m->getAttributeMatrix(attributeMatrixName)->addAttributeArray(p->getName(), p); for(size_t v = 0; v < size; ++v) { p->setValue(v, ptr->getValue(v) ); } } else if (scalarType == Detail::UInt64) { UInt64ArrayType::Pointer p = UInt64ArrayType::CreateArray(voxels, dims, name); m->getAttributeMatrix(attributeMatrixName)->addAttributeArray(p->getName(), p); for(size_t v = 0; v < size; ++v) { p->setValue(v, ptr->getValue(v) ); } } else if (scalarType == Detail::Float) { FloatArrayType::Pointer p = FloatArrayType::CreateArray(voxels, dims, name); m->getAttributeMatrix(attributeMatrixName)->addAttributeArray(p->getName(), p); for(size_t v = 0; v < size; ++v) { p->setValue(v, ptr->getValue(v) ); } } else if (scalarType == Detail::Double) { DoubleArrayType::Pointer p = DoubleArrayType::CreateArray(voxels, dims, name); m->getAttributeMatrix(attributeMatrixName)->addAttributeArray(p->getName(), p); for(size_t v = 0; v < size; ++v) { p->setValue(v, ptr->getValue(v) ); } } }