Initial commit
This commit is contained in:
107
node_modules/@maplibre/mlt/dist/encoding/encodingUtils.js
generated
vendored
Normal file
107
node_modules/@maplibre/mlt/dist/encoding/encodingUtils.js
generated
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
export function encodeFloatsLE(values) {
|
||||
const buffer = new Uint8Array(values.length * 4);
|
||||
const view = new DataView(buffer.buffer);
|
||||
for (let i = 0; i < values.length; i++) {
|
||||
view.setFloat32(i * 4, values[i], true);
|
||||
}
|
||||
return buffer;
|
||||
}
|
||||
export function encodeDoubleLE(values) {
|
||||
const buffer = new Uint8Array(values.length * Float64Array.BYTES_PER_ELEMENT);
|
||||
const view = new DataView(buffer.buffer);
|
||||
for (let i = 0; i < values.length; i++) {
|
||||
view.setFloat64(i * Float64Array.BYTES_PER_ELEMENT, values[i], true);
|
||||
}
|
||||
return buffer;
|
||||
}
|
||||
export function encodeBooleanRle(values) {
|
||||
// Pack booleans into bytes (8 booleans per byte)
|
||||
const numBytes = Math.ceil(values.length / 8);
|
||||
const packed = new Uint8Array(numBytes);
|
||||
for (let i = 0; i < values.length; i++) {
|
||||
if (values[i]) {
|
||||
const byteIndex = Math.floor(i / 8);
|
||||
const bitIndex = i % 8;
|
||||
packed[byteIndex] |= 1 << bitIndex;
|
||||
}
|
||||
}
|
||||
const result = new Uint8Array(1 + numBytes);
|
||||
result[0] = 256 - numBytes;
|
||||
result.set(packed, 1);
|
||||
return result;
|
||||
}
|
||||
export function encodeByteRle(values) {
|
||||
const result = [];
|
||||
let i = 0;
|
||||
while (i < values.length) {
|
||||
const currentByte = values[i];
|
||||
let runLength = 1;
|
||||
while (i + runLength < values.length && values[i + runLength] === currentByte && runLength < 131) {
|
||||
runLength++;
|
||||
}
|
||||
if (runLength >= 3) {
|
||||
const header = runLength - 3;
|
||||
result.push(Math.min(header, 0x7f));
|
||||
result.push(currentByte);
|
||||
i += runLength;
|
||||
}
|
||||
else {
|
||||
const literalStart = i;
|
||||
while (i < values.length) {
|
||||
let nextRunLength = 1;
|
||||
if (i + 1 < values.length) {
|
||||
while (i + nextRunLength < values.length &&
|
||||
values[i + nextRunLength] === values[i] &&
|
||||
nextRunLength < 3) {
|
||||
nextRunLength++;
|
||||
}
|
||||
}
|
||||
if (nextRunLength >= 3) {
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
if (i - literalStart >= 128) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
const numLiterals = i - literalStart;
|
||||
const header = 256 - numLiterals;
|
||||
result.push(header);
|
||||
for (let j = literalStart; j < i; j++) {
|
||||
result.push(values[j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return new Uint8Array(result);
|
||||
}
|
||||
export function encodeStrings(strings) {
|
||||
const encoder = new TextEncoder();
|
||||
const encoded = strings.map((s) => encoder.encode(s));
|
||||
const totalLength = encoded.reduce((sum, arr) => sum + arr.length, 0);
|
||||
const result = new Uint8Array(totalLength);
|
||||
let offset = 0;
|
||||
for (const arr of encoded) {
|
||||
result.set(arr, offset);
|
||||
offset += arr.length;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
export function createStringLengths(strings) {
|
||||
const lengths = new Uint32Array(strings.length);
|
||||
const encoder = new TextEncoder();
|
||||
for (let i = 0; i < strings.length; i++) {
|
||||
lengths[i] = encoder.encode(strings[i]).length;
|
||||
}
|
||||
return lengths;
|
||||
}
|
||||
export function concatenateBuffers(...buffers) {
|
||||
const totalLength = buffers.reduce((sum, buf) => sum + buf.length, 0);
|
||||
const result = new Uint8Array(totalLength);
|
||||
let offset = 0;
|
||||
for (const buffer of buffers) {
|
||||
result.set(buffer, offset);
|
||||
offset += buffer.length;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
//# sourceMappingURL=encodingUtils.js.map
|
||||
Reference in New Issue
Block a user