bytev-charts-beta
Version:
基于echarts和JavaScript及ES6封装的一个可以直接调用的图表组件库,内置主题设计,简单快捷,且支持用户自定义配置; npm 安装方式: npm install bytev-charts 若启动提示还需额外install插件,则运行 npm install @babel/runtime-corejs2 即可;
175 lines (143 loc) • 6.93 kB
JavaScript
import "core-js/modules/es.array.iterator.js";
import "core-js/modules/es.array-buffer.slice.js";
import "core-js/modules/es.object.to-string.js";
import "core-js/modules/es.typed-array.uint32-array.js";
import "core-js/modules/es.typed-array.copy-within.js";
import "core-js/modules/es.typed-array.every.js";
import "core-js/modules/es.typed-array.fill.js";
import "core-js/modules/es.typed-array.filter.js";
import "core-js/modules/es.typed-array.find.js";
import "core-js/modules/es.typed-array.find-index.js";
import "core-js/modules/es.typed-array.for-each.js";
import "core-js/modules/es.typed-array.includes.js";
import "core-js/modules/es.typed-array.index-of.js";
import "core-js/modules/es.typed-array.iterator.js";
import "core-js/modules/es.typed-array.join.js";
import "core-js/modules/es.typed-array.last-index-of.js";
import "core-js/modules/es.typed-array.map.js";
import "core-js/modules/es.typed-array.reduce.js";
import "core-js/modules/es.typed-array.reduce-right.js";
import "core-js/modules/es.typed-array.reverse.js";
import "core-js/modules/es.typed-array.set.js";
import "core-js/modules/es.typed-array.slice.js";
import "core-js/modules/es.typed-array.some.js";
import "core-js/modules/es.typed-array.sort.js";
import "core-js/modules/es.typed-array.subarray.js";
import "core-js/modules/es.typed-array.to-locale-string.js";
import "core-js/modules/es.typed-array.to-string.js";
import "core-js/modules/es.typed-array.uint16-array.js";
import "core-js/modules/es.typed-array.int8-array.js";
import "core-js/modules/es.array-buffer.constructor.js";
console.warn("THREE.DRACOExporter: As part of the transition to ES6 Modules, the files in 'examples/js' were deprecated in May 2020 (r117) and will be deleted in December 2020 (r124). You can find more information about developing using ES6 Modules in https://threejs.org/docs/#manual/en/introduction/Installation.");
/**
* Export draco compressed files from threejs geometry objects.
*
* Draco files are compressed and usually are smaller than conventional 3D file formats.
*
* The exporter receives a options object containing
* - decodeSpeed, indicates how to tune the encoder regarding decode speed (0 gives better speed but worst quality)
* - encodeSpeed, indicates how to tune the encoder parameters (0 gives better speed but worst quality)
* - encoderMethod
* - quantization, indicates the presision of each type of data stored in the draco file in the order (POSITION, NORMAL, COLOR, TEX_COORD, GENERIC)
* - exportUvs
* - exportNormals
*/
/* global DracoEncoderModule */
THREE.DRACOExporter = function () {};
THREE.DRACOExporter.prototype = {
constructor: THREE.DRACOExporter,
parse: function parse(geometry, options) {
if (DracoEncoderModule === undefined) {
throw new Error('THREE.DRACOExporter: required the draco_decoder to work.');
}
if (options === undefined) {
options = {
decodeSpeed: 5,
encodeSpeed: 5,
encoderMethod: THREE.DRACOExporter.MESH_EDGEBREAKER_ENCODING,
quantization: [16, 8, 8, 8, 8],
exportUvs: true,
exportNormals: true,
exportColor: false
};
}
var dracoEncoder = DracoEncoderModule();
var encoder = new dracoEncoder.Encoder();
var builder = new dracoEncoder.MeshBuilder();
var mesh = new dracoEncoder.Mesh();
if (geometry.isGeometry === true) {
var bufferGeometry = new THREE.BufferGeometry();
bufferGeometry.fromGeometry(geometry);
geometry = bufferGeometry;
}
if (geometry.isBufferGeometry !== true) {
throw new Error('THREE.DRACOExporter.parse(geometry, options): geometry is not a THREE.Geometry or THREE.BufferGeometry instance.');
}
var vertices = geometry.getAttribute('position');
builder.AddFloatAttributeToMesh(mesh, dracoEncoder.POSITION, vertices.count, vertices.itemSize, vertices.array);
var faces = geometry.getIndex();
if (faces !== null) {
builder.AddFacesToMesh(mesh, faces.count / 3, faces.array);
} else {
var faces = new (vertices.count > 65535 ? Uint32Array : Uint16Array)(vertices.count);
for (var i = 0; i < faces.length; i++) {
faces[i] = i;
}
builder.AddFacesToMesh(mesh, vertices.count, faces);
}
if (options.exportNormals === true) {
var normals = geometry.getAttribute('normal');
if (normals !== undefined) {
builder.AddFloatAttributeToMesh(mesh, dracoEncoder.NORMAL, normals.count, normals.itemSize, normals.array);
}
}
if (options.exportUvs === true) {
var uvs = geometry.getAttribute('uv');
if (uvs !== undefined) {
builder.AddFloatAttributeToMesh(mesh, dracoEncoder.TEX_COORD, uvs.count, uvs.itemSize, uvs.array);
}
}
if (options.exportColor === true) {
var colors = geometry.getAttribute('color');
if (colors !== undefined) {
builder.AddFloatAttributeToMesh(mesh, dracoEncoder.COLOR, colors.count, colors.itemSize, colors.array);
}
} //Compress using draco encoder
var encodedData = new dracoEncoder.DracoInt8Array(); //Sets the desired encoding and decoding speed for the given options from 0 (slowest speed, but the best compression) to 10 (fastest, but the worst compression).
encoder.SetSpeedOptions(options.encodeSpeed || 5, options.decodeSpeed || 5); // Sets the desired encoding method for a given geometry.
if (options.encoderMethod !== undefined) {
encoder.SetEncodingMethod(options.encoderMethod);
} // Sets the quantization (number of bits used to represent) compression options for a named attribute.
// The attribute values will be quantized in a box defined by the maximum extent of the attribute values.
if (options.quantization !== undefined) {
for (var i = 0; i < 5; i++) {
if (options.quantization[i] !== undefined) {
encoder.SetAttributeQuantization(i, options.quantization[i]);
}
}
}
var length = encoder.EncodeMeshToDracoBuffer(mesh, encodedData);
dracoEncoder.destroy(mesh);
if (length === 0) {
throw new Error('THREE.DRACOExporter: Draco encoding failed.');
} //Copy encoded data to buffer.
var outputData = new Int8Array(new ArrayBuffer(length));
for (var i = 0; i < length; i++) {
outputData[i] = encodedData.GetValue(i);
}
dracoEncoder.destroy(encodedData);
dracoEncoder.destroy(encoder);
dracoEncoder.destroy(builder);
return outputData;
}
}; // Encoder methods
THREE.DRACOExporter.MESH_EDGEBREAKER_ENCODING = 1;
THREE.DRACOExporter.MESH_SEQUENTIAL_ENCODING = 0; // Geometry type
THREE.DRACOExporter.POINT_CLOUD = 0;
THREE.DRACOExporter.TRIANGULAR_MESH = 1; // Attribute type
THREE.DRACOExporter.INVALID = -1;
THREE.DRACOExporter.POSITION = 0;
THREE.DRACOExporter.NORMAL = 1;
THREE.DRACOExporter.COLOR = 2;
THREE.DRACOExporter.TEX_COORD = 3;
THREE.DRACOExporter.GENERIC = 4;