@thewtex/vtk.js-esm
Version:
Visualization Toolkit for the Web
84 lines (68 loc) • 2.29 kB
JavaScript
import macro from '../../../macro.js';
import vtkDataArray from '../../../Common/Core/DataArray.js';
import vtkCellArray from '../../../Common/Core/CellArray.js';
import vtkPoints from '../../../Common/Core/Points.js';
var FACTORY = {
vtkDataArray: vtkDataArray,
vtkCellArray: vtkCellArray,
vtkPoints: vtkPoints
};
function createDefaultTypedArrayHandler() {
var arrays = [];
function write(array) {
var id = arrays.length;
arrays.push(array);
return id;
}
function read(arrayId) {
return arrays[arrayId];
}
return {
write: write,
read: read,
arrays: arrays
};
}
function vtkArraySerializer(publicAPI, model) {
// Set our className
model.classHierarchy.push('vtkArraySerializer');
if (!model.typedArrayHandler) {
model.typedArrayHandler = createDefaultTypedArrayHandler();
}
publicAPI.serialize = function (obj) {
var name = obj.getName();
var numberOfTuples = obj.getNumberOfTuples();
var vtkClass = obj.getClassName();
var rawData = obj.getData();
return {
id: model.typedArrayHandler.write(rawData),
name: name,
numberOfTuples: numberOfTuples,
vtkClass: vtkClass
};
};
publicAPI.deserialize = function (obj) {
var values = model.typedArrayHandler.read(obj.id);
var name = obj.name,
numberOfTuples = obj.numberOfTuples;
return FACTORY[obj.vtkClass].newInstance({
name: name,
numberOfTuples: numberOfTuples,
values: values
});
};
} // ----------------------------------------------------------------------------
function extend(publicAPI, model) {
var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
Object.assign(model, initialValues);
macro.obj(publicAPI, model);
macro.setGet(publicAPI, model, ['typedArrayHandler']); // Object specific methods
vtkArraySerializer(publicAPI, model);
} // ----------------------------------------------------------------------------
var newInstance = macro.newInstance(extend, 'vtkArraySerializer'); // ----------------------------------------------------------------------------
var vtkArraySerializer$1 = {
newInstance: newInstance,
extend: extend
};
export default vtkArraySerializer$1;
export { extend, newInstance };