awv3
Version:
⚡ AWV3 embedded CAD
159 lines (137 loc) • 4.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
exports.min = min;
exports.max = max;
exports.expand = expand;
exports.cross = cross;
exports.applyMatrix = applyMatrix;
exports.unpack = unpack;
var _pako = require('pako');
var _pako2 = _interopRequireDefault(_pako);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function min(vec, v) {
vec[0] = Math.min(vec[0], v[0]);
vec[1] = Math.min(vec[1], v[1]);
vec[2] = Math.min(vec[2], v[2]);
}
function max(vec, v) {
vec[0] = Math.max(vec[0], v[0]);
vec[1] = Math.max(vec[1], v[1]);
vec[2] = Math.max(vec[2], v[2]);
}
function expand(vecMin, vecMax, v) {
min(vecMin, v);
max(vecMax, v);
}
function cross(vec, v) {
var _vec = (0, _slicedToArray3.default)(vec, 3),
x = _vec[0],
y = _vec[1],
z = _vec[2];
vec[0] = y * v[2] - z * v[1];
vec[1] = z * v[0] - x * v[2];
vec[2] = x * v[1] - y * v[0];
}
function applyMatrix(vec, e) {
var _vec2 = (0, _slicedToArray3.default)(vec, 3),
x = _vec2[0],
y = _vec2[1],
z = _vec2[2];
vec[0] = e[0] * x + e[4] * y + e[8] * z + e[12];
vec[1] = e[1] * x + e[5] * y + e[9] * z + e[13];
vec[2] = e[2] * x + e[6] * y + e[10] * z + e[14];
}
function base128decode(buffer) {
var charmap = '!#$%()*,.0123456789:;=@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_abcdefghijklmnopqrstuvwxyz{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎ',
bufferSize = buffer.length;
if (bufferSize <= 0) return null;
var re = bufferSize % 8,
size = (bufferSize - re) / 8 * 7 + re;
if (re > 0) size--;
var r = 0,
nc = 0,
r1 = 0,
t = 0,
loc = 0,
rs = 8,
ls = 7,
inx = void 0,
decoded = new Uint8Array(size + 1);
for (inx = 0; inx < bufferSize; inx++) {
loc = charmap.lastIndexOf(buffer[inx]);
if (loc != -1) nc = loc;
if (rs > 7) {
rs = 1;
ls = 7;
r = nc;
continue;
}
r1 = nc;
nc = nc << ls-- & 0xFF;
nc = nc | r;
r = r1 >> rs++;
decoded[t++] = nc;
}
return decoded;
}
function utf8ArrayToStr(array) {
var out = void 0,
i = void 0,
len = void 0,
c = void 0;
var char2 = void 0,
char3 = void 0;
out = "";
len = array.length;
i = 0;
while (i < len) {
c = array[i++];
switch (c >> 4) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
// 0xxxxxxx
out += String.fromCharCode(c);
break;
case 12:
case 13:
// 110x xxxx 10xx xxxx
char2 = array[i++];
out += String.fromCharCode((c & 0x1F) << 6 | char2 & 0x3F);
break;
case 14:
// 1110 xxxx 10xx xxxx 10xx xxxx
char2 = array[i++];
char3 = array[i++];
out += String.fromCharCode((c & 0x0F) << 12 | (char2 & 0x3F) << 6 | (char3 & 0x3F) << 0);
break;
}
}
return out;
}
function decodeBuffer(buffer, length) {
var data = "";
if (typeof TextDecoder !== 'undefined') {
var dataView = new DataView(buffer.buffer),
decoder = new TextDecoder('utf-8');
data = decoder.decode(dataView);
} else data = utf8ArrayToStr(buffer);
return data.slice(0, length);
}
function unpack(blob) {
var stream = blob.data;
if (!(stream instanceof Uint8Array)) stream = base128decode(blob.data);
stream = _pako2.default.inflate(stream, { raw: true });
stream = decodeBuffer(stream, blob.length || stream.length);
blob.data = JSON.parse(stream);
blob.size = stream.length;
}