mirror of
https://gitee.com/onvia/ccc-tnt-psd2ui
synced 2024-12-28 12:37:43 +00:00
154 lines
18 KiB
JavaScript
154 lines
18 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.decodeString = exports.encodeString = exports.encodeStringTo = exports.stringLengthInBytes = void 0;
|
||
|
function charLengthInBytes(code) {
|
||
|
if ((code & 0xffffff80) === 0) {
|
||
|
return 1;
|
||
|
}
|
||
|
else if ((code & 0xfffff800) === 0) {
|
||
|
return 2;
|
||
|
}
|
||
|
else if ((code & 0xffff0000) === 0) {
|
||
|
return 3;
|
||
|
}
|
||
|
else {
|
||
|
return 4;
|
||
|
}
|
||
|
}
|
||
|
function stringLengthInBytes(value) {
|
||
|
var result = 0;
|
||
|
for (var i = 0; i < value.length; i++) {
|
||
|
var code = value.charCodeAt(i);
|
||
|
// high surrogate
|
||
|
if (code >= 0xd800 && code <= 0xdbff) {
|
||
|
if ((i + 1) < value.length) {
|
||
|
var extra = value.charCodeAt(i + 1);
|
||
|
// low surrogate
|
||
|
if ((extra & 0xfc00) === 0xdc00) {
|
||
|
i++;
|
||
|
result += charLengthInBytes(((code & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
result += charLengthInBytes(code);
|
||
|
}
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
exports.stringLengthInBytes = stringLengthInBytes;
|
||
|
function writeCharacter(buffer, offset, code) {
|
||
|
var length = charLengthInBytes(code);
|
||
|
switch (length) {
|
||
|
case 1:
|
||
|
buffer[offset] = code;
|
||
|
break;
|
||
|
case 2:
|
||
|
buffer[offset] = ((code >> 6) & 0x1f) | 0xc0;
|
||
|
buffer[offset + 1] = (code & 0x3f) | 0x80;
|
||
|
break;
|
||
|
case 3:
|
||
|
buffer[offset] = ((code >> 12) & 0x0f) | 0xe0;
|
||
|
buffer[offset + 1] = ((code >> 6) & 0x3f) | 0x80;
|
||
|
buffer[offset + 2] = (code & 0x3f) | 0x80;
|
||
|
break;
|
||
|
default:
|
||
|
buffer[offset] = ((code >> 18) & 0x07) | 0xf0;
|
||
|
buffer[offset + 1] = ((code >> 12) & 0x3f) | 0x80;
|
||
|
buffer[offset + 2] = ((code >> 6) & 0x3f) | 0x80;
|
||
|
buffer[offset + 3] = (code & 0x3f) | 0x80;
|
||
|
break;
|
||
|
}
|
||
|
return length;
|
||
|
}
|
||
|
function encodeStringTo(buffer, offset, value) {
|
||
|
for (var i = 0; i < value.length; i++) {
|
||
|
var code = value.charCodeAt(i);
|
||
|
// high surrogate
|
||
|
if (code >= 0xd800 && code <= 0xdbff) {
|
||
|
if ((i + 1) < value.length) {
|
||
|
var extra = value.charCodeAt(i + 1);
|
||
|
// low surrogate
|
||
|
if ((extra & 0xfc00) === 0xdc00) {
|
||
|
i++;
|
||
|
var fullCode = ((code & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;
|
||
|
offset += writeCharacter(buffer, offset, fullCode);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
offset += writeCharacter(buffer, offset, code);
|
||
|
}
|
||
|
}
|
||
|
return offset;
|
||
|
}
|
||
|
exports.encodeStringTo = encodeStringTo;
|
||
|
function encodeString(value) {
|
||
|
var buffer = new Uint8Array(stringLengthInBytes(value));
|
||
|
encodeStringTo(buffer, 0, value);
|
||
|
return buffer;
|
||
|
}
|
||
|
exports.encodeString = encodeString;
|
||
|
function continuationByte(buffer, index) {
|
||
|
if (index >= buffer.length) {
|
||
|
throw Error('Invalid byte index');
|
||
|
}
|
||
|
var continuationByte = buffer[index];
|
||
|
if ((continuationByte & 0xC0) === 0x80) {
|
||
|
return continuationByte & 0x3F;
|
||
|
}
|
||
|
else {
|
||
|
throw Error('Invalid continuation byte');
|
||
|
}
|
||
|
}
|
||
|
function decodeString(value) {
|
||
|
var result = '';
|
||
|
for (var i = 0; i < value.length;) {
|
||
|
var byte1 = value[i++];
|
||
|
var code = void 0;
|
||
|
if ((byte1 & 0x80) === 0) {
|
||
|
code = byte1;
|
||
|
}
|
||
|
else if ((byte1 & 0xe0) === 0xc0) {
|
||
|
var byte2 = continuationByte(value, i++);
|
||
|
code = ((byte1 & 0x1f) << 6) | byte2;
|
||
|
if (code < 0x80) {
|
||
|
throw Error('Invalid continuation byte');
|
||
|
}
|
||
|
}
|
||
|
else if ((byte1 & 0xf0) === 0xe0) {
|
||
|
var byte2 = continuationByte(value, i++);
|
||
|
var byte3 = continuationByte(value, i++);
|
||
|
code = ((byte1 & 0x0f) << 12) | (byte2 << 6) | byte3;
|
||
|
if (code < 0x0800) {
|
||
|
throw Error('Invalid continuation byte');
|
||
|
}
|
||
|
if (code >= 0xd800 && code <= 0xdfff) {
|
||
|
throw Error("Lone surrogate U+".concat(code.toString(16).toUpperCase(), " is not a scalar value"));
|
||
|
}
|
||
|
}
|
||
|
else if ((byte1 & 0xf8) === 0xf0) {
|
||
|
var byte2 = continuationByte(value, i++);
|
||
|
var byte3 = continuationByte(value, i++);
|
||
|
var byte4 = continuationByte(value, i++);
|
||
|
code = ((byte1 & 0x0f) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4;
|
||
|
if (code < 0x010000 || code > 0x10ffff) {
|
||
|
throw Error('Invalid continuation byte');
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
throw Error('Invalid UTF-8 detected');
|
||
|
}
|
||
|
if (code > 0xffff) {
|
||
|
code -= 0x10000;
|
||
|
result += String.fromCharCode(code >>> 10 & 0x3ff | 0xd800);
|
||
|
code = 0xdc00 | code & 0x3ff;
|
||
|
}
|
||
|
result += String.fromCharCode(code);
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
exports.decodeString = decodeString;
|
||
|
|
||
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,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
|