@kitware/vtk.js
Version:
Visualization Toolkit for the Web
48 lines (45 loc) • 1.36 kB
JavaScript
import vtkDataSetAttributes from '../../../Common/DataModel/DataSetAttributes.js';
const CLASS_NAME = 'vtkDataSetAttributes';
const ARRAYS = ['Scalars', 'Vectors', 'Normals', 'TCoords', 'Tensors', 'GlobalIds', 'PedigreeIds'];
function canSerialize(obj) {
return obj && obj.isA && obj.isA(CLASS_NAME);
}
function canDeserialize(obj) {
return obj && obj.vtkClass && obj.vtkClass === CLASS_NAME;
}
function serialize(obj, arrayHandler) {
const output = {
vtkClass: CLASS_NAME
};
const indexMapping = [];
const arrays = obj.getArrays();
for (let i = 0; i < arrays.length; i++) {
indexMapping.push(arrayHandler.serialize(arrays[i]));
}
ARRAYS.forEach(attrType => {
const arrayIdx = obj[`getActive${attrType}`]();
if (arrayIdx !== -1) {
output[attrType] = indexMapping[arrayIdx];
}
});
// List all arrays
output.arrays = indexMapping;
return output;
}
function deserialize(obj, arrayHandler) {
const ds = vtkDataSetAttributes.newInstance();
for (let i = 0; i < obj.arrays.length; i++) {
ds.addArray(arrayHandler.deserialize(obj.arrays[i]));
}
ARRAYS.forEach(attrType => {
ds[`set${attrType}`](arrayHandler.deserialize(obj[attrType]));
});
return ds;
}
var vtkFieldDataSerializer = {
canSerialize,
serialize,
canDeserialize,
deserialize
};
export { vtkFieldDataSerializer as default };