UNPKG

molstar

Version:

A comprehensive macromolecular library.

87 lines 5.17 kB
/** * Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> * @author David Sehnal <david.sehnal@gmail.com> */ import { defaults } from '../../mol-util'; export var SimpleBuffer; (function (SimpleBuffer) { function fromUint8Array(array) { var dv = new DataView(array.buffer); return Object.assign(array.subarray(0), { readInt8: function (offset) { return dv.getInt8(offset); }, readUInt8: function (offset) { return dv.getUint8(offset); }, writeInt8: function (value, offset) { return dv.setInt8(offset, value); }, writeUInt8: function (value, offset) { return dv.setUint8(offset, value); }, readInt16LE: function (offset) { return dv.getInt16(offset, true); }, readInt32LE: function (offset) { return dv.getInt32(offset, true); }, readUInt16LE: function (offset) { return dv.getUint16(offset, true); }, readUInt32LE: function (offset) { return dv.getUint32(offset, true); }, readFloatLE: function (offset) { return dv.getFloat32(offset, true); }, readDoubleLE: function (offset) { return dv.getFloat64(offset, true); }, writeInt16LE: function (value, offset) { return dv.setInt16(offset, value, true); }, writeInt32LE: function (value, offset) { return dv.setInt32(offset, value, true); }, writeUInt16LE: function (value, offset) { return dv.setUint16(offset, value, true); }, writeUInt32LE: function (value, offset) { return dv.setUint32(offset, value, true); }, writeFloatLE: function (value, offset) { return dv.setFloat32(offset, value, true); }, writeDoubleLE: function (value, offset) { return dv.setFloat64(offset, value, true); }, readInt16BE: function (offset) { return dv.getInt16(offset, false); }, readInt32BE: function (offset) { return dv.getInt32(offset, false); }, readUInt16BE: function (offset) { return dv.getUint16(offset, false); }, readUInt32BE: function (offset) { return dv.getUint32(offset, false); }, readFloatBE: function (offset) { return dv.getFloat32(offset, false); }, readDoubleBE: function (offset) { return dv.getFloat64(offset, false); }, writeInt16BE: function (value, offset) { return dv.setInt16(offset, value, false); }, writeInt32BE: function (value, offset) { return dv.setInt32(offset, value, false); }, writeUInt16BE: function (value, offset) { return dv.setUint16(offset, value, false); }, writeUInt32BE: function (value, offset) { return dv.setUint32(offset, value, false); }, writeFloatBE: function (value, offset) { return dv.setFloat32(offset, value, false); }, writeDoubleBE: function (value, offset) { return dv.setFloat64(offset, value, false); }, copy: function (targetBuffer, targetStart, sourceStart, sourceEnd) { targetStart = defaults(targetStart, 0); sourceStart = defaults(sourceStart, 0); sourceEnd = defaults(sourceEnd, array.length); targetBuffer.set(array.subarray(sourceStart, sourceEnd), targetStart); return sourceEnd - sourceStart; } }); } SimpleBuffer.fromUint8Array = fromUint8Array; function fromArrayBuffer(arrayBuffer) { return fromUint8Array(new Uint8Array(arrayBuffer)); } SimpleBuffer.fromArrayBuffer = fromArrayBuffer; function fromBuffer(buffer) { return buffer; } SimpleBuffer.fromBuffer = fromBuffer; SimpleBuffer.IsNativeEndianLittle = new Uint16Array(new Uint8Array([0x12, 0x34]).buffer)[0] === 0x3412; /** source and target can't be the same */ function flipByteOrder(source, target, byteCount, elementByteSize, offset) { for (var i = 0, n = byteCount; i < n; i += elementByteSize) { for (var j = 0; j < elementByteSize; j++) { target[offset + i + elementByteSize - j - 1] = source[offset + i + j]; } } } SimpleBuffer.flipByteOrder = flipByteOrder; function flipByteOrderInPlace2(buffer, byteOffset, length) { if (byteOffset === void 0) { byteOffset = 0; } var intView = new Int16Array(buffer, byteOffset, length); for (var i = 0, n = intView.length; i < n; ++i) { var val = intView[i]; intView[i] = ((val & 0xff) << 8) | ((val >> 8) & 0xff); } } SimpleBuffer.flipByteOrderInPlace2 = flipByteOrderInPlace2; function ensureLittleEndian(source, target, byteCount, elementByteSize, offset) { if (SimpleBuffer.IsNativeEndianLittle) return; if (!byteCount || elementByteSize <= 1) return; flipByteOrder(source, target, byteCount, elementByteSize, offset); } SimpleBuffer.ensureLittleEndian = ensureLittleEndian; })(SimpleBuffer || (SimpleBuffer = {})); //# sourceMappingURL=simple-buffer.js.map