UNPKG

@thewtex/vtk.js-esm

Version:

Visualization Toolkit for the Web

103 lines (86 loc) 4.7 kB
import _defineProperty from '@babel/runtime/helpers/defineProperty'; import macro from '../../macro.js'; import vtkDataArray from '../../Common/Core/DataArray.js'; import vtkXMLWriter from './XMLWriter.js'; import { POLYDATA_FIELDS } from '../../Common/DataModel/PolyData/Constants.js'; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } // Global methods // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // vtkXMLPolyDataWriter methods // ---------------------------------------------------------------------------- function vtkXMLPolyDataWriter(publicAPI, model) { // Set our className model.classHierarchy.push('vtkXMLPolyDataWriter'); // Capture "parentClass" api for internal use var superClass = _objectSpread({}, publicAPI); function camelize(str) { return str.replace(/(?:^\w|[A-Z]|\b\w)/g, function (letter) { return letter.toUpperCase(); }).replace(/\s+/g, ''); } publicAPI.create = function (dataObject) { var parent = superClass.create(dataObject); var polyData = parent.ele('PolyData', {}); var piece = polyData.ele('Piece', { NumberOfPoints: dataObject.getPoints().getNumberOfPoints(), NumberOfVerts: dataObject.getNumberOfVerts(), NumberOfLines: dataObject.getNumberOfLines(), NumberOfStrips: dataObject.getNumberOfStrips(), NumberOfPolys: dataObject.getNumberOfPolys() }); publicAPI.processDataSetAttributes(piece, 'PointData', dataObject.getPointData()); publicAPI.processDataSetAttributes(piece, 'CellData', dataObject.getCellData()); publicAPI.processDataArray(piece.ele('Points'), dataObject.getPoints()); POLYDATA_FIELDS.forEach(function (cellType) { var cellTypeName = camelize(cellType); var cells = dataObject["get".concat(cellTypeName)](); var connectivity = []; var offsets = []; var cellsData = cells.getData(); var npts = cellsData[0]; var offset = 0; for (var i = 0; i < cellsData.length;) { npts = cellsData[i++]; for (var j = 0; j < npts; ++j) { connectivity.push(cellsData[i++]); } offset += npts; offsets.push(offset); } var connectivityDataArray = vtkDataArray.newInstance({ numberOfComponents: 1, name: 'connectivity', values: Int32Array.from(connectivity) }); var offsetsDataArray = vtkDataArray.newInstance({ numberOfComponents: 1, name: 'offsets', values: Int32Array.from(offsets) }); var cellEle = piece.ele(cellTypeName); publicAPI.processDataArray(cellEle, connectivityDataArray); publicAPI.processDataArray(cellEle, offsetsDataArray); }); return parent; }; } // ---------------------------------------------------------------------------- // Object factory // ---------------------------------------------------------------------------- var DEFAULT_VALUES = { dataType: 'PolyData' }; // ---------------------------------------------------------------------------- function extend(publicAPI, model) { var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; Object.assign(model, DEFAULT_VALUES, initialValues); vtkXMLWriter.extend(publicAPI, model, initialValues); vtkXMLPolyDataWriter(publicAPI, model); } // ---------------------------------------------------------------------------- var newInstance = macro.newInstance(extend, 'vtkXMLPolyDataWriter'); // ---------------------------------------------------------------------------- var vtkXMLPolyDataWriter$1 = { newInstance: newInstance, extend: extend }; export default vtkXMLPolyDataWriter$1; export { extend, newInstance };