UNPKG

bytev-charts

Version:

基于echarts和JavaScript及ES6封装的一个可以直接调用的图表组件库,内置主题设计,简单快捷,且支持用户自定义配置; npm 安装方式: npm install bytev-charts 若启动提示还需额外install插件,则运行 npm install @babel/runtime-corejs2 即可;

82 lines (72 loc) 2.54 kB
import _classCallCheck from "@babel/runtime-corejs2/helpers/classCallCheck"; import _createClass from "@babel/runtime-corejs2/helpers/createClass"; import _WeakMap from "@babel/runtime-corejs2/core-js/weak-map"; var WebGPUAttributes = /*#__PURE__*/function () { function WebGPUAttributes(device) { _classCallCheck(this, WebGPUAttributes); this.buffers = new _WeakMap(); this.device = device; } _createClass(WebGPUAttributes, [{ key: "get", value: function get(attribute) { return this.buffers.get(attribute); } }, { key: "remove", value: function remove(attribute) { var data = this.buffers.get(attribute); if (data) { data.buffer.destroy(); this.buffers["delete"](attribute); } } }, { key: "update", value: function update(attribute) { var isIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var data = this.buffers.get(attribute); if (data === undefined) { var usage = isIndex === true ? GPUBufferUsage.INDEX : GPUBufferUsage.VERTEX; data = this._createBuffer(attribute, usage); this.buffers.set(attribute, data); } else if (data.version < attribute.version) { this._writeBuffer(data.buffer, attribute); data.version = attribute.version; } } }, { key: "_createBuffer", value: function _createBuffer(attribute, usage) { var array = attribute.array; var size = array.byteLength + array.byteLength % 4; // ensure 4 byte alignment var buffer = this.device.createBuffer({ size: size, usage: usage | GPUBufferUsage.COPY_DST, mappedAtCreation: true }); new array.constructor(buffer.getMappedRange()).set(array); buffer.unmap(); attribute.onUploadCallback(); return { version: attribute.version, buffer: buffer }; } }, { key: "_writeBuffer", value: function _writeBuffer(buffer, attribute) { var array = attribute.array; var updateRange = attribute.updateRange; if (updateRange.count === -1) { // Not using update ranges this.device.defaultQueue.writeBuffer(buffer, 0, array, 0); } else { this.device.defaultQueue.writeBuffer(buffer, 0, array, updateRange.offset * array.BYTES_PER_ELEMENT, updateRange.count * array.BYTES_PER_ELEMENT); updateRange.count = -1; // reset range } } }]); return WebGPUAttributes; }(); export default WebGPUAttributes;