brainsmatics 1.0.53 → 1.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/App.d.ts +4 -0
- package/dist/basedecoder-0503cc54.js +1 -0
- package/dist/basedecoder-11034ec6.mjs +89 -0
- package/dist/component/2d/config.d.ts +40 -0
- package/dist/component/2d/contextmenu/ContextMenuX.d.ts +3 -0
- package/dist/component/2d/distribution/index.d.ts +4 -0
- package/dist/component/2d/gridviewer/index.d.ts +9 -0
- package/dist/component/2d/gridviewer/index1.d.ts +8 -0
- package/dist/component/2d/index.d.ts +9 -0
- package/dist/component/2d/infodiv/index.d.ts +7 -0
- package/dist/component/2d/js/index.d.ts +3 -0
- package/dist/component/2d/js/index.js +59517 -0
- package/dist/component/2d/modelloder.d.ts +3 -0
- package/dist/component/2d/mulifiveiewer/index.d.ts +4 -0
- package/dist/component/2d/navigation/index.d.ts +12 -0
- package/dist/component/2d/navtree/index.d.ts +13 -0
- package/dist/component/2d/tast1/config.d.ts +20 -0
- package/dist/component/2d/tast1/index.d.ts +4 -0
- package/dist/component/2d/thumbnail/VirtualList.d.ts +14 -0
- package/dist/component/2d/thumbnail/index.d.ts +12 -0
- package/dist/component/2d/twoviewer/index.d.ts +19 -0
- package/dist/component/3d/ai/index.d.ts +7 -0
- package/dist/component/3d/aichat/index.d.ts +10 -0
- package/dist/component/3d/atlas.d.ts +31 -0
- package/dist/component/3d/atlasBottomTabs/index.d.ts +19 -0
- package/dist/component/3d/atlasSiderBar/index.d.ts +79 -0
- package/dist/component/3d/auxiliary/index.d.ts +111 -0
- package/dist/component/3d/bottomTabs/index.d.ts +16 -0
- package/dist/component/3d/cardData/index.d.ts +3 -0
- package/dist/component/3d/chartViewer/index.d.ts +12 -0
- package/dist/component/3d/dataset/index.d.ts +3 -0
- package/dist/component/3d/index.d.ts +14 -0
- package/dist/component/3d/inputgrey/index.d.ts +3 -0
- package/dist/component/3d/lengthViewer/index.d.ts +10 -0
- package/dist/component/3d/markdown/index.d.ts +7 -0
- package/dist/component/3d/modal2DLoader/index.d.ts +11 -0
- package/dist/component/3d/modalLoader/index.d.ts +13 -0
- package/dist/component/3d/pipeline/index.d.ts +83 -0
- package/dist/component/3d/registration/index.d.ts +4 -0
- package/dist/component/3d/sangjiViewer/index.d.ts +6 -0
- package/dist/component/3d/section/index.d.ts +53 -0
- package/dist/component/3d/showreglions/index.d.ts +7 -0
- package/dist/component/3d/sideBar/index.d.ts +73 -0
- package/dist/component/3d/stlLoader/index.d.ts +9 -0
- package/dist/component/3d/swctree/index.d.ts +3 -0
- package/dist/component/3d/tabViewer/index.d.ts +13 -0
- package/dist/component/3d/wordMap/index.d.ts +11 -0
- package/dist/component/STAM.d.ts +4 -0
- package/dist/component/common/Button/index.d.ts +45 -0
- package/dist/component/common/Header/index.d.ts +19 -0
- package/dist/component/common/index.d.ts +2 -0
- package/dist/component/index.d.ts +2 -0
- package/dist/component/types/header.d.ts +9 -0
- package/dist/component/types/index.d.ts +1 -0
- package/dist/component/util/CommonFunctions.d.ts +23 -0
- package/dist/component/util/global.d.ts +17 -0
- package/dist/component/util/i18n.d.ts +3 -0
- package/dist/component/util/index.d.ts +2 -0
- package/dist/component/util/swc.d.ts +13 -0
- package/dist/deflate-501b2e1b.js +1 -0
- package/dist/deflate-9c483211.mjs +12 -0
- package/dist/index-003567ac.mjs +177265 -0
- package/dist/index-a7e377a7.js +5107 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.mjs +52 -0
- package/dist/jpeg-335c778f.mjs +515 -0
- package/dist/jpeg-f3c7cefc.js +1 -0
- package/dist/lerc-ce5b7d8a.js +1 -0
- package/dist/lerc-e1ff90a6.mjs +1035 -0
- package/dist/lzw-82d7fc69.mjs +84 -0
- package/dist/lzw-f00e8c8c.js +1 -0
- package/dist/main.d.ts +1 -0
- package/dist/packbits-58fd9c05.js +1 -0
- package/dist/packbits-8b95f4d7.mjs +24 -0
- package/dist/raw-9c0f4034.js +1 -0
- package/dist/raw-c0fe1c20.mjs +9 -0
- package/dist/stories/3Ddata.stories.d.ts +12 -0
- package/dist/stories/3Dlabel.d.ts +4 -0
- package/dist/stories/3Dlabelreglions.d.ts +4 -0
- package/dist/stories/3Dlable.stories.d.ts +12 -0
- package/dist/stories/3Dlablereglions.stories.d.ts +12 -0
- package/dist/stories/3Dneurons.d.ts +4 -0
- package/dist/stories/3Dneurons.stories.d.ts +12 -0
- package/dist/stories/3Dswc.stories.d.ts +12 -0
- package/dist/stories/ArlasViewer.stories.d.ts +12 -0
- package/dist/stories/AtlasViewer.d.ts +3 -0
- package/dist/stories/Button.stories.d.ts +25 -0
- package/dist/stories/Distribution.stories.d.ts +11 -0
- package/dist/stories/Header.stories.d.ts +32 -0
- package/dist/stories/Iputgrey.stories.d.ts +12 -0
- package/dist/stories/MulfiViewer.stories.d.ts +11 -0
- package/dist/stories/Page.d.ts +3 -0
- package/dist/stories/Page.stories.d.ts +15 -0
- package/dist/stories/Sangjiviewer.stories.d.ts +14 -0
- package/dist/stories/Soma.d.ts +4 -0
- package/dist/stories/Soma.stories.d.ts +12 -0
- package/dist/stories/Task3D.stories.d.ts +12 -0
- package/dist/stories/Thumbnail.stories.d.ts +25 -0
- package/dist/stories/Vessel.d.ts +4 -0
- package/dist/stories/Vessel.stories.d.ts +12 -0
- package/dist/stories/chartviewer.stories.d.ts +20 -0
- package/dist/stories/lengthviewer.stories.d.ts +17 -0
- package/dist/stories/navtree.stories.d.ts +25 -0
- package/dist/stories/registration.stories.d.ts +12 -0
- package/dist/stories/task3D.d.ts +4 -0
- package/dist/stories/tast1.stories.d.ts +11 -0
- package/dist/stories/twoview.stories.d.ts +31 -0
- package/dist/style.css +1 -0
- package/dist/webimage-affb95d1.mjs +19 -0
- package/dist/webimage-bc81928d.js +1 -0
- package/package.json +9 -1
- package/.storybook/ant-custom-theme.js +0 -12
- package/.storybook/main.js +0 -24
- package/.storybook/middleware.js +0 -85
- package/.storybook/preview.js +0 -19
|
@@ -0,0 +1,1035 @@
|
|
|
1
|
+
import { L as oA, a as gA, i as sA } from "./index-003567ac.mjs";
|
|
2
|
+
import { B as DA } from "./basedecoder-11034ec6.mjs";
|
|
3
|
+
import "react";
|
|
4
|
+
import "react-dom";
|
|
5
|
+
var QA = {}, nA = {
|
|
6
|
+
get exports() {
|
|
7
|
+
return QA;
|
|
8
|
+
},
|
|
9
|
+
set exports(T) {
|
|
10
|
+
QA = T;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
(function(T) {
|
|
14
|
+
/* Copyright 2015-2021 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */
|
|
15
|
+
(function() {
|
|
16
|
+
var J = function() {
|
|
17
|
+
var u = {};
|
|
18
|
+
u.defaultNoDataValue = -34027999387901484e22, u.decode = function(I, a) {
|
|
19
|
+
a = a || {};
|
|
20
|
+
var Q = a.encodedMaskData || a.encodedMaskData === null, g = E(I, a.inputOffset || 0, Q), D = a.noDataValue !== null ? a.noDataValue : u.defaultNoDataValue, B = L(
|
|
21
|
+
g,
|
|
22
|
+
a.pixelType || Float32Array,
|
|
23
|
+
a.encodedMaskData,
|
|
24
|
+
D,
|
|
25
|
+
a.returnMask
|
|
26
|
+
), C = {
|
|
27
|
+
width: g.width,
|
|
28
|
+
height: g.height,
|
|
29
|
+
pixelData: B.resultPixels,
|
|
30
|
+
minValue: B.minValue,
|
|
31
|
+
maxValue: g.pixels.maxValue,
|
|
32
|
+
noDataValue: D
|
|
33
|
+
};
|
|
34
|
+
return B.resultMask && (C.maskData = B.resultMask), a.returnEncodedMask && g.mask && (C.encodedMaskData = g.mask.bitset ? g.mask.bitset : null), a.returnFileInfo && (C.fileInfo = d(g), a.computeUsedBitDepths && (C.fileInfo.bitDepths = z(g))), C;
|
|
35
|
+
};
|
|
36
|
+
var L = function(I, a, Q, g, D) {
|
|
37
|
+
var B = 0, C = I.pixels.numBlocksX, o = I.pixels.numBlocksY, r = Math.floor(I.width / C), s = Math.floor(I.height / o), f = 2 * I.maxZError, e = Number.MAX_VALUE, i;
|
|
38
|
+
Q = Q || (I.mask ? I.mask.bitset : null);
|
|
39
|
+
var t, F;
|
|
40
|
+
t = new a(I.width * I.height), D && Q && (F = new Uint8Array(I.width * I.height));
|
|
41
|
+
for (var S = new Float32Array(r * s), h, U, G = 0; G <= o; G++) {
|
|
42
|
+
var R = G !== o ? s : I.height % o;
|
|
43
|
+
if (R !== 0)
|
|
44
|
+
for (var w = 0; w <= C; w++) {
|
|
45
|
+
var n = w !== C ? r : I.width % C;
|
|
46
|
+
if (n !== 0) {
|
|
47
|
+
var l = G * I.width * s + w * r, y = I.width - n, k = I.pixels.blocks[B], M, c, N;
|
|
48
|
+
k.encoding < 2 ? (k.encoding === 0 ? M = k.rawData : (A(k.stuffedData, k.bitsPerPixel, k.numValidPixels, k.offset, f, S, I.pixels.maxValue), M = S), c = 0) : k.encoding === 2 ? N = 0 : N = k.offset;
|
|
49
|
+
var q;
|
|
50
|
+
if (Q)
|
|
51
|
+
for (U = 0; U < R; U++) {
|
|
52
|
+
for (l & 7 && (q = Q[l >> 3], q <<= l & 7), h = 0; h < n; h++)
|
|
53
|
+
l & 7 || (q = Q[l >> 3]), q & 128 ? (F && (F[l] = 1), i = k.encoding < 2 ? M[c++] : N, e = e > i ? i : e, t[l++] = i) : (F && (F[l] = 0), t[l++] = g), q <<= 1;
|
|
54
|
+
l += y;
|
|
55
|
+
}
|
|
56
|
+
else if (k.encoding < 2)
|
|
57
|
+
for (U = 0; U < R; U++) {
|
|
58
|
+
for (h = 0; h < n; h++)
|
|
59
|
+
i = M[c++], e = e > i ? i : e, t[l++] = i;
|
|
60
|
+
l += y;
|
|
61
|
+
}
|
|
62
|
+
else
|
|
63
|
+
for (e = e > N ? N : e, U = 0; U < R; U++) {
|
|
64
|
+
for (h = 0; h < n; h++)
|
|
65
|
+
t[l++] = N;
|
|
66
|
+
l += y;
|
|
67
|
+
}
|
|
68
|
+
if (k.encoding === 1 && c !== k.numValidPixels)
|
|
69
|
+
throw "Block and Mask do not match";
|
|
70
|
+
B++;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
resultPixels: t,
|
|
76
|
+
resultMask: F,
|
|
77
|
+
minValue: e
|
|
78
|
+
};
|
|
79
|
+
}, d = function(I) {
|
|
80
|
+
return {
|
|
81
|
+
fileIdentifierString: I.fileIdentifierString,
|
|
82
|
+
fileVersion: I.fileVersion,
|
|
83
|
+
imageType: I.imageType,
|
|
84
|
+
height: I.height,
|
|
85
|
+
width: I.width,
|
|
86
|
+
maxZError: I.maxZError,
|
|
87
|
+
eofOffset: I.eofOffset,
|
|
88
|
+
mask: I.mask ? {
|
|
89
|
+
numBlocksX: I.mask.numBlocksX,
|
|
90
|
+
numBlocksY: I.mask.numBlocksY,
|
|
91
|
+
numBytes: I.mask.numBytes,
|
|
92
|
+
maxValue: I.mask.maxValue
|
|
93
|
+
} : null,
|
|
94
|
+
pixels: {
|
|
95
|
+
numBlocksX: I.pixels.numBlocksX,
|
|
96
|
+
numBlocksY: I.pixels.numBlocksY,
|
|
97
|
+
numBytes: I.pixels.numBytes,
|
|
98
|
+
maxValue: I.pixels.maxValue,
|
|
99
|
+
noDataValue: I.noDataValue
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
}, z = function(I) {
|
|
103
|
+
for (var a = I.pixels.numBlocksX * I.pixels.numBlocksY, Q = {}, g = 0; g < a; g++) {
|
|
104
|
+
var D = I.pixels.blocks[g];
|
|
105
|
+
D.encoding === 0 ? Q.float32 = !0 : D.encoding === 1 ? Q[D.bitsPerPixel] = !0 : Q[0] = !0;
|
|
106
|
+
}
|
|
107
|
+
return Object.keys(Q);
|
|
108
|
+
}, E = function(I, a, Q) {
|
|
109
|
+
var g = {}, D = new Uint8Array(I, a, 10);
|
|
110
|
+
if (g.fileIdentifierString = String.fromCharCode.apply(null, D), g.fileIdentifierString.trim() !== "CntZImage")
|
|
111
|
+
throw "Unexpected file identifier string: " + g.fileIdentifierString;
|
|
112
|
+
a += 10;
|
|
113
|
+
var B = new DataView(I, a, 24);
|
|
114
|
+
if (g.fileVersion = B.getInt32(0, !0), g.imageType = B.getInt32(4, !0), g.height = B.getUint32(8, !0), g.width = B.getUint32(12, !0), g.maxZError = B.getFloat64(16, !0), a += 24, !Q)
|
|
115
|
+
if (B = new DataView(I, a, 16), g.mask = {}, g.mask.numBlocksY = B.getUint32(0, !0), g.mask.numBlocksX = B.getUint32(4, !0), g.mask.numBytes = B.getUint32(8, !0), g.mask.maxValue = B.getFloat32(12, !0), a += 16, g.mask.numBytes > 0) {
|
|
116
|
+
var C = new Uint8Array(Math.ceil(g.width * g.height / 8));
|
|
117
|
+
B = new DataView(I, a, g.mask.numBytes);
|
|
118
|
+
var o = B.getInt16(0, !0), r = 2, s = 0;
|
|
119
|
+
do {
|
|
120
|
+
if (o > 0)
|
|
121
|
+
for (; o--; )
|
|
122
|
+
C[s++] = B.getUint8(r++);
|
|
123
|
+
else {
|
|
124
|
+
var f = B.getUint8(r++);
|
|
125
|
+
for (o = -o; o--; )
|
|
126
|
+
C[s++] = f;
|
|
127
|
+
}
|
|
128
|
+
o = B.getInt16(r, !0), r += 2;
|
|
129
|
+
} while (r < g.mask.numBytes);
|
|
130
|
+
if (o !== -32768 || s < C.length)
|
|
131
|
+
throw "Unexpected end of mask RLE encoding";
|
|
132
|
+
g.mask.bitset = C, a += g.mask.numBytes;
|
|
133
|
+
} else
|
|
134
|
+
g.mask.numBytes | g.mask.numBlocksY | g.mask.maxValue || (g.mask.bitset = new Uint8Array(Math.ceil(g.width * g.height / 8)));
|
|
135
|
+
B = new DataView(I, a, 16), g.pixels = {}, g.pixels.numBlocksY = B.getUint32(0, !0), g.pixels.numBlocksX = B.getUint32(4, !0), g.pixels.numBytes = B.getUint32(8, !0), g.pixels.maxValue = B.getFloat32(12, !0), a += 16;
|
|
136
|
+
var e = g.pixels.numBlocksX, i = g.pixels.numBlocksY, t = e + (g.width % e > 0 ? 1 : 0), F = i + (g.height % i > 0 ? 1 : 0);
|
|
137
|
+
g.pixels.blocks = new Array(t * F);
|
|
138
|
+
for (var S = 0, h = 0; h < F; h++)
|
|
139
|
+
for (var U = 0; U < t; U++) {
|
|
140
|
+
var G = 0, R = I.byteLength - a;
|
|
141
|
+
B = new DataView(I, a, Math.min(10, R));
|
|
142
|
+
var w = {};
|
|
143
|
+
g.pixels.blocks[S++] = w;
|
|
144
|
+
var n = B.getUint8(0);
|
|
145
|
+
if (G++, w.encoding = n & 63, w.encoding > 3)
|
|
146
|
+
throw "Invalid block encoding (" + w.encoding + ")";
|
|
147
|
+
if (w.encoding === 2) {
|
|
148
|
+
a++;
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
if (n !== 0 && n !== 2) {
|
|
152
|
+
if (n >>= 6, w.offsetType = n, n === 2)
|
|
153
|
+
w.offset = B.getInt8(1), G++;
|
|
154
|
+
else if (n === 1)
|
|
155
|
+
w.offset = B.getInt16(1, !0), G += 2;
|
|
156
|
+
else if (n === 0)
|
|
157
|
+
w.offset = B.getFloat32(1, !0), G += 4;
|
|
158
|
+
else
|
|
159
|
+
throw "Invalid block offset type";
|
|
160
|
+
if (w.encoding === 1)
|
|
161
|
+
if (n = B.getUint8(G), G++, w.bitsPerPixel = n & 63, n >>= 6, w.numValidPixelsType = n, n === 2)
|
|
162
|
+
w.numValidPixels = B.getUint8(G), G++;
|
|
163
|
+
else if (n === 1)
|
|
164
|
+
w.numValidPixels = B.getUint16(G, !0), G += 2;
|
|
165
|
+
else if (n === 0)
|
|
166
|
+
w.numValidPixels = B.getUint32(G, !0), G += 4;
|
|
167
|
+
else
|
|
168
|
+
throw "Invalid valid pixel count type";
|
|
169
|
+
}
|
|
170
|
+
if (a += G, w.encoding !== 3) {
|
|
171
|
+
var l, y;
|
|
172
|
+
if (w.encoding === 0) {
|
|
173
|
+
var k = (g.pixels.numBytes - 1) / 4;
|
|
174
|
+
if (k !== Math.floor(k))
|
|
175
|
+
throw "uncompressed block has invalid length";
|
|
176
|
+
l = new ArrayBuffer(k * 4), y = new Uint8Array(l), y.set(new Uint8Array(I, a, k * 4));
|
|
177
|
+
var M = new Float32Array(l);
|
|
178
|
+
w.rawData = M, a += k * 4;
|
|
179
|
+
} else if (w.encoding === 1) {
|
|
180
|
+
var c = Math.ceil(w.numValidPixels * w.bitsPerPixel / 8), N = Math.ceil(c / 4);
|
|
181
|
+
l = new ArrayBuffer(N * 4), y = new Uint8Array(l), y.set(new Uint8Array(I, a, c)), w.stuffedData = new Uint32Array(l), a += c;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return g.eofOffset = a, g;
|
|
186
|
+
}, A = function(I, a, Q, g, D, B, C) {
|
|
187
|
+
var o = (1 << a) - 1, r = 0, s, f = 0, e, i, t = Math.ceil((C - g) / D), F = I.length * 4 - Math.ceil(a * Q / 8);
|
|
188
|
+
for (I[I.length - 1] <<= 8 * F, s = 0; s < Q; s++) {
|
|
189
|
+
if (f === 0 && (i = I[r++], f = 32), f >= a)
|
|
190
|
+
e = i >>> f - a & o, f -= a;
|
|
191
|
+
else {
|
|
192
|
+
var S = a - f;
|
|
193
|
+
e = (i & o) << S & o, i = I[r++], f = 32 - S, e += i >>> f;
|
|
194
|
+
}
|
|
195
|
+
B[s] = e < t ? g + e * D : C;
|
|
196
|
+
}
|
|
197
|
+
return B;
|
|
198
|
+
};
|
|
199
|
+
return u;
|
|
200
|
+
}(), X = function() {
|
|
201
|
+
var u = {
|
|
202
|
+
//methods ending with 2 are for the new byte order used by Lerc2.3 and above.
|
|
203
|
+
//originalUnstuff is used to unpack Huffman code table. code is duplicated to unstuffx for performance reasons.
|
|
204
|
+
unstuff: function(E, A, I, a, Q, g, D, B) {
|
|
205
|
+
var C = (1 << I) - 1, o = 0, r, s = 0, f, e, i, t, F = E.length * 4 - Math.ceil(I * a / 8);
|
|
206
|
+
if (E[E.length - 1] <<= 8 * F, Q)
|
|
207
|
+
for (r = 0; r < a; r++)
|
|
208
|
+
s === 0 && (e = E[o++], s = 32), s >= I ? (f = e >>> s - I & C, s -= I) : (i = I - s, f = (e & C) << i & C, e = E[o++], s = 32 - i, f += e >>> s), A[r] = Q[f];
|
|
209
|
+
else
|
|
210
|
+
for (t = Math.ceil((B - g) / D), r = 0; r < a; r++)
|
|
211
|
+
s === 0 && (e = E[o++], s = 32), s >= I ? (f = e >>> s - I & C, s -= I) : (i = I - s, f = (e & C) << i & C, e = E[o++], s = 32 - i, f += e >>> s), A[r] = f < t ? g + f * D : B;
|
|
212
|
+
},
|
|
213
|
+
unstuffLUT: function(E, A, I, a, Q, g) {
|
|
214
|
+
var D = (1 << A) - 1, B = 0, C = 0, o = 0, r = 0, s = 0, f, e = [], i = E.length * 4 - Math.ceil(A * I / 8);
|
|
215
|
+
E[E.length - 1] <<= 8 * i;
|
|
216
|
+
var t = Math.ceil((g - a) / Q);
|
|
217
|
+
for (C = 0; C < I; C++)
|
|
218
|
+
r === 0 && (f = E[B++], r = 32), r >= A ? (s = f >>> r - A & D, r -= A) : (o = A - r, s = (f & D) << o & D, f = E[B++], r = 32 - o, s += f >>> r), e[C] = s < t ? a + s * Q : g;
|
|
219
|
+
return e.unshift(a), e;
|
|
220
|
+
},
|
|
221
|
+
unstuff2: function(E, A, I, a, Q, g, D, B) {
|
|
222
|
+
var C = (1 << I) - 1, o = 0, r, s = 0, f = 0, e, i, t;
|
|
223
|
+
if (Q)
|
|
224
|
+
for (r = 0; r < a; r++)
|
|
225
|
+
s === 0 && (i = E[o++], s = 32, f = 0), s >= I ? (e = i >>> f & C, s -= I, f += I) : (t = I - s, e = i >>> f & C, i = E[o++], s = 32 - t, e |= (i & (1 << t) - 1) << I - t, f = t), A[r] = Q[e];
|
|
226
|
+
else {
|
|
227
|
+
var F = Math.ceil((B - g) / D);
|
|
228
|
+
for (r = 0; r < a; r++)
|
|
229
|
+
s === 0 && (i = E[o++], s = 32, f = 0), s >= I ? (e = i >>> f & C, s -= I, f += I) : (t = I - s, e = i >>> f & C, i = E[o++], s = 32 - t, e |= (i & (1 << t) - 1) << I - t, f = t), A[r] = e < F ? g + e * D : B;
|
|
230
|
+
}
|
|
231
|
+
return A;
|
|
232
|
+
},
|
|
233
|
+
unstuffLUT2: function(E, A, I, a, Q, g) {
|
|
234
|
+
var D = (1 << A) - 1, B = 0, C = 0, o = 0, r = 0, s = 0, f = 0, e, i = [], t = Math.ceil((g - a) / Q);
|
|
235
|
+
for (C = 0; C < I; C++)
|
|
236
|
+
r === 0 && (e = E[B++], r = 32, f = 0), r >= A ? (s = e >>> f & D, r -= A, f += A) : (o = A - r, s = e >>> f & D, e = E[B++], r = 32 - o, s |= (e & (1 << o) - 1) << A - o, f = o), i[C] = s < t ? a + s * Q : g;
|
|
237
|
+
return i.unshift(a), i;
|
|
238
|
+
},
|
|
239
|
+
originalUnstuff: function(E, A, I, a) {
|
|
240
|
+
var Q = (1 << I) - 1, g = 0, D, B = 0, C, o, r, s = E.length * 4 - Math.ceil(I * a / 8);
|
|
241
|
+
for (E[E.length - 1] <<= 8 * s, D = 0; D < a; D++)
|
|
242
|
+
B === 0 && (o = E[g++], B = 32), B >= I ? (C = o >>> B - I & Q, B -= I) : (r = I - B, C = (o & Q) << r & Q, o = E[g++], B = 32 - r, C += o >>> B), A[D] = C;
|
|
243
|
+
return A;
|
|
244
|
+
},
|
|
245
|
+
originalUnstuff2: function(E, A, I, a) {
|
|
246
|
+
var Q = (1 << I) - 1, g = 0, D, B = 0, C = 0, o, r, s;
|
|
247
|
+
for (D = 0; D < a; D++)
|
|
248
|
+
B === 0 && (r = E[g++], B = 32, C = 0), B >= I ? (o = r >>> C & Q, B -= I, C += I) : (s = I - B, o = r >>> C & Q, r = E[g++], B = 32 - s, o |= (r & (1 << s) - 1) << I - s, C = s), A[D] = o;
|
|
249
|
+
return A;
|
|
250
|
+
}
|
|
251
|
+
}, L = {
|
|
252
|
+
HUFFMAN_LUT_BITS_MAX: 12,
|
|
253
|
+
//use 2^12 lut, treat it like constant
|
|
254
|
+
computeChecksumFletcher32: function(E) {
|
|
255
|
+
for (var A = 65535, I = 65535, a = E.length, Q = Math.floor(a / 2), g = 0; Q; ) {
|
|
256
|
+
var D = Q >= 359 ? 359 : Q;
|
|
257
|
+
Q -= D;
|
|
258
|
+
do
|
|
259
|
+
A += E[g++] << 8, I += A += E[g++];
|
|
260
|
+
while (--D);
|
|
261
|
+
A = (A & 65535) + (A >>> 16), I = (I & 65535) + (I >>> 16);
|
|
262
|
+
}
|
|
263
|
+
return a & 1 && (I += A += E[g] << 8), A = (A & 65535) + (A >>> 16), I = (I & 65535) + (I >>> 16), (I << 16 | A) >>> 0;
|
|
264
|
+
},
|
|
265
|
+
readHeaderInfo: function(E, A) {
|
|
266
|
+
var I = A.ptr, a = new Uint8Array(E, I, 6), Q = {};
|
|
267
|
+
if (Q.fileIdentifierString = String.fromCharCode.apply(null, a), Q.fileIdentifierString.lastIndexOf("Lerc2", 0) !== 0)
|
|
268
|
+
throw "Unexpected file identifier string (expect Lerc2 ): " + Q.fileIdentifierString;
|
|
269
|
+
I += 6;
|
|
270
|
+
var g = new DataView(E, I, 8), D = g.getInt32(0, !0);
|
|
271
|
+
Q.fileVersion = D, I += 4, D >= 3 && (Q.checksum = g.getUint32(4, !0), I += 4), g = new DataView(E, I, 12), Q.height = g.getUint32(0, !0), Q.width = g.getUint32(4, !0), I += 8, D >= 4 ? (Q.numDims = g.getUint32(8, !0), I += 4) : Q.numDims = 1, g = new DataView(E, I, 40), Q.numValidPixel = g.getUint32(0, !0), Q.microBlockSize = g.getInt32(4, !0), Q.blobSize = g.getInt32(8, !0), Q.imageType = g.getInt32(12, !0), Q.maxZError = g.getFloat64(16, !0), Q.zMin = g.getFloat64(24, !0), Q.zMax = g.getFloat64(32, !0), I += 40, A.headerInfo = Q, A.ptr = I;
|
|
272
|
+
var B, C;
|
|
273
|
+
if (D >= 3 && (C = D >= 4 ? 52 : 48, B = this.computeChecksumFletcher32(new Uint8Array(E, I - C, Q.blobSize - 14)), B !== Q.checksum))
|
|
274
|
+
throw "Checksum failed.";
|
|
275
|
+
return !0;
|
|
276
|
+
},
|
|
277
|
+
checkMinMaxRanges: function(E, A) {
|
|
278
|
+
var I = A.headerInfo, a = this.getDataTypeArray(I.imageType), Q = I.numDims * this.getDataTypeSize(I.imageType), g = this.readSubArray(E, A.ptr, a, Q), D = this.readSubArray(E, A.ptr + Q, a, Q);
|
|
279
|
+
A.ptr += 2 * Q;
|
|
280
|
+
var B, C = !0;
|
|
281
|
+
for (B = 0; B < I.numDims; B++)
|
|
282
|
+
if (g[B] !== D[B]) {
|
|
283
|
+
C = !1;
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
return I.minValues = g, I.maxValues = D, C;
|
|
287
|
+
},
|
|
288
|
+
readSubArray: function(E, A, I, a) {
|
|
289
|
+
var Q;
|
|
290
|
+
if (I === Uint8Array)
|
|
291
|
+
Q = new Uint8Array(E, A, a);
|
|
292
|
+
else {
|
|
293
|
+
var g = new ArrayBuffer(a), D = new Uint8Array(g);
|
|
294
|
+
D.set(new Uint8Array(E, A, a)), Q = new I(g);
|
|
295
|
+
}
|
|
296
|
+
return Q;
|
|
297
|
+
},
|
|
298
|
+
readMask: function(E, A) {
|
|
299
|
+
var I = A.ptr, a = A.headerInfo, Q = a.width * a.height, g = a.numValidPixel, D = new DataView(E, I, 4), B = {};
|
|
300
|
+
if (B.numBytes = D.getUint32(0, !0), I += 4, (g === 0 || Q === g) && B.numBytes !== 0)
|
|
301
|
+
throw "invalid mask";
|
|
302
|
+
var C, o;
|
|
303
|
+
if (g === 0)
|
|
304
|
+
C = new Uint8Array(Math.ceil(Q / 8)), B.bitset = C, o = new Uint8Array(Q), A.pixels.resultMask = o, I += B.numBytes;
|
|
305
|
+
else if (B.numBytes > 0) {
|
|
306
|
+
C = new Uint8Array(Math.ceil(Q / 8)), D = new DataView(E, I, B.numBytes);
|
|
307
|
+
var r = D.getInt16(0, !0), s = 2, f = 0, e = 0;
|
|
308
|
+
do {
|
|
309
|
+
if (r > 0)
|
|
310
|
+
for (; r--; )
|
|
311
|
+
C[f++] = D.getUint8(s++);
|
|
312
|
+
else
|
|
313
|
+
for (e = D.getUint8(s++), r = -r; r--; )
|
|
314
|
+
C[f++] = e;
|
|
315
|
+
r = D.getInt16(s, !0), s += 2;
|
|
316
|
+
} while (s < B.numBytes);
|
|
317
|
+
if (r !== -32768 || f < C.length)
|
|
318
|
+
throw "Unexpected end of mask RLE encoding";
|
|
319
|
+
o = new Uint8Array(Q);
|
|
320
|
+
var i = 0, t = 0;
|
|
321
|
+
for (t = 0; t < Q; t++)
|
|
322
|
+
t & 7 ? (i = C[t >> 3], i <<= t & 7) : i = C[t >> 3], i & 128 && (o[t] = 1);
|
|
323
|
+
A.pixels.resultMask = o, B.bitset = C, I += B.numBytes;
|
|
324
|
+
}
|
|
325
|
+
return A.ptr = I, A.mask = B, !0;
|
|
326
|
+
},
|
|
327
|
+
readDataOneSweep: function(E, A, I, a) {
|
|
328
|
+
var Q = A.ptr, g = A.headerInfo, D = g.numDims, B = g.width * g.height, C = g.imageType, o = g.numValidPixel * L.getDataTypeSize(C) * D, r, s = A.pixels.resultMask;
|
|
329
|
+
if (I === Uint8Array)
|
|
330
|
+
r = new Uint8Array(E, Q, o);
|
|
331
|
+
else {
|
|
332
|
+
var f = new ArrayBuffer(o), e = new Uint8Array(f);
|
|
333
|
+
e.set(new Uint8Array(E, Q, o)), r = new I(f);
|
|
334
|
+
}
|
|
335
|
+
if (r.length === B * D)
|
|
336
|
+
a ? A.pixels.resultPixels = L.swapDimensionOrder(r, B, D, I, !0) : A.pixels.resultPixels = r;
|
|
337
|
+
else {
|
|
338
|
+
A.pixels.resultPixels = new I(B * D);
|
|
339
|
+
var i = 0, t = 0, F = 0, S = 0;
|
|
340
|
+
if (D > 1) {
|
|
341
|
+
if (a) {
|
|
342
|
+
for (t = 0; t < B; t++)
|
|
343
|
+
if (s[t])
|
|
344
|
+
for (S = t, F = 0; F < D; F++, S += B)
|
|
345
|
+
A.pixels.resultPixels[S] = r[i++];
|
|
346
|
+
} else
|
|
347
|
+
for (t = 0; t < B; t++)
|
|
348
|
+
if (s[t])
|
|
349
|
+
for (S = t * D, F = 0; F < D; F++)
|
|
350
|
+
A.pixels.resultPixels[S + F] = r[i++];
|
|
351
|
+
} else
|
|
352
|
+
for (t = 0; t < B; t++)
|
|
353
|
+
s[t] && (A.pixels.resultPixels[t] = r[i++]);
|
|
354
|
+
}
|
|
355
|
+
return Q += o, A.ptr = Q, !0;
|
|
356
|
+
},
|
|
357
|
+
readHuffmanTree: function(E, A) {
|
|
358
|
+
var I = this.HUFFMAN_LUT_BITS_MAX, a = new DataView(E, A.ptr, 16);
|
|
359
|
+
A.ptr += 16;
|
|
360
|
+
var Q = a.getInt32(0, !0);
|
|
361
|
+
if (Q < 2)
|
|
362
|
+
throw "unsupported Huffman version";
|
|
363
|
+
var g = a.getInt32(4, !0), D = a.getInt32(8, !0), B = a.getInt32(12, !0);
|
|
364
|
+
if (D >= B)
|
|
365
|
+
return !1;
|
|
366
|
+
var C = new Uint32Array(B - D);
|
|
367
|
+
L.decodeBits(E, A, C);
|
|
368
|
+
var o = [], r, s, f, e;
|
|
369
|
+
for (r = D; r < B; r++)
|
|
370
|
+
s = r - (r < g ? 0 : g), o[s] = { first: C[r - D], second: null };
|
|
371
|
+
var i = E.byteLength - A.ptr, t = Math.ceil(i / 4), F = new ArrayBuffer(t * 4), S = new Uint8Array(F);
|
|
372
|
+
S.set(new Uint8Array(E, A.ptr, i));
|
|
373
|
+
var h = new Uint32Array(F), U = 0, G, R = 0;
|
|
374
|
+
for (G = h[0], r = D; r < B; r++)
|
|
375
|
+
s = r - (r < g ? 0 : g), e = o[s].first, e > 0 && (o[s].second = G << U >>> 32 - e, 32 - U >= e ? (U += e, U === 32 && (U = 0, R++, G = h[R])) : (U += e - 32, R++, G = h[R], o[s].second |= G >>> 32 - U));
|
|
376
|
+
var w = 0, n = 0, l = new d();
|
|
377
|
+
for (r = 0; r < o.length; r++)
|
|
378
|
+
o[r] !== void 0 && (w = Math.max(w, o[r].first));
|
|
379
|
+
w >= I ? n = I : n = w;
|
|
380
|
+
var y = [], k, M, c, N, q, m;
|
|
381
|
+
for (r = D; r < B; r++)
|
|
382
|
+
if (s = r - (r < g ? 0 : g), e = o[s].first, e > 0)
|
|
383
|
+
if (k = [e, s], e <= n)
|
|
384
|
+
for (M = o[s].second << n - e, c = 1 << n - e, f = 0; f < c; f++)
|
|
385
|
+
y[M | f] = k;
|
|
386
|
+
else
|
|
387
|
+
for (M = o[s].second, m = l, N = e - 1; N >= 0; N--)
|
|
388
|
+
q = M >>> N & 1, q ? (m.right || (m.right = new d()), m = m.right) : (m.left || (m.left = new d()), m = m.left), N === 0 && !m.val && (m.val = k[1]);
|
|
389
|
+
return {
|
|
390
|
+
decodeLut: y,
|
|
391
|
+
numBitsLUTQick: n,
|
|
392
|
+
numBitsLUT: w,
|
|
393
|
+
tree: l,
|
|
394
|
+
stuffedData: h,
|
|
395
|
+
srcPtr: R,
|
|
396
|
+
bitPos: U
|
|
397
|
+
};
|
|
398
|
+
},
|
|
399
|
+
readHuffman: function(E, A, I, a) {
|
|
400
|
+
var Q = A.headerInfo, g = Q.numDims, D = A.headerInfo.height, B = A.headerInfo.width, C = B * D, o = this.readHuffmanTree(E, A), r = o.decodeLut, s = o.tree, f = o.stuffedData, e = o.srcPtr, i = o.bitPos, t = o.numBitsLUTQick, F = o.numBitsLUT, S = A.headerInfo.imageType === 0 ? 128 : 0, h, U, G, R = A.pixels.resultMask, w, n, l, y, k, M, c, N = 0;
|
|
401
|
+
i > 0 && (e++, i = 0);
|
|
402
|
+
var q = f[e], m = A.encodeMode === 1, W = new I(C * g), v = W, Y;
|
|
403
|
+
if (g < 2 || m) {
|
|
404
|
+
for (Y = 0; Y < g; Y++)
|
|
405
|
+
if (g > 1 && (v = new I(W.buffer, C * Y, C), N = 0), A.headerInfo.numValidPixel === B * D)
|
|
406
|
+
for (M = 0, y = 0; y < D; y++)
|
|
407
|
+
for (k = 0; k < B; k++, M++) {
|
|
408
|
+
if (U = 0, w = q << i >>> 32 - t, n = w, 32 - i < t && (w |= f[e + 1] >>> 64 - i - t, n = w), r[n])
|
|
409
|
+
U = r[n][1], i += r[n][0];
|
|
410
|
+
else
|
|
411
|
+
for (w = q << i >>> 32 - F, n = w, 32 - i < F && (w |= f[e + 1] >>> 64 - i - F, n = w), h = s, c = 0; c < F; c++)
|
|
412
|
+
if (l = w >>> F - c - 1 & 1, h = l ? h.right : h.left, !(h.left || h.right)) {
|
|
413
|
+
U = h.val, i = i + c + 1;
|
|
414
|
+
break;
|
|
415
|
+
}
|
|
416
|
+
i >= 32 && (i -= 32, e++, q = f[e]), G = U - S, m ? (k > 0 ? G += N : y > 0 ? G += v[M - B] : G += N, G &= 255, v[M] = G, N = G) : v[M] = G;
|
|
417
|
+
}
|
|
418
|
+
else
|
|
419
|
+
for (M = 0, y = 0; y < D; y++)
|
|
420
|
+
for (k = 0; k < B; k++, M++)
|
|
421
|
+
if (R[M]) {
|
|
422
|
+
if (U = 0, w = q << i >>> 32 - t, n = w, 32 - i < t && (w |= f[e + 1] >>> 64 - i - t, n = w), r[n])
|
|
423
|
+
U = r[n][1], i += r[n][0];
|
|
424
|
+
else
|
|
425
|
+
for (w = q << i >>> 32 - F, n = w, 32 - i < F && (w |= f[e + 1] >>> 64 - i - F, n = w), h = s, c = 0; c < F; c++)
|
|
426
|
+
if (l = w >>> F - c - 1 & 1, h = l ? h.right : h.left, !(h.left || h.right)) {
|
|
427
|
+
U = h.val, i = i + c + 1;
|
|
428
|
+
break;
|
|
429
|
+
}
|
|
430
|
+
i >= 32 && (i -= 32, e++, q = f[e]), G = U - S, m ? (k > 0 && R[M - 1] ? G += N : y > 0 && R[M - B] ? G += v[M - B] : G += N, G &= 255, v[M] = G, N = G) : v[M] = G;
|
|
431
|
+
}
|
|
432
|
+
} else
|
|
433
|
+
for (M = 0, y = 0; y < D; y++)
|
|
434
|
+
for (k = 0; k < B; k++)
|
|
435
|
+
if (M = y * B + k, !R || R[M])
|
|
436
|
+
for (Y = 0; Y < g; Y++, M += C) {
|
|
437
|
+
if (U = 0, w = q << i >>> 32 - t, n = w, 32 - i < t && (w |= f[e + 1] >>> 64 - i - t, n = w), r[n])
|
|
438
|
+
U = r[n][1], i += r[n][0];
|
|
439
|
+
else
|
|
440
|
+
for (w = q << i >>> 32 - F, n = w, 32 - i < F && (w |= f[e + 1] >>> 64 - i - F, n = w), h = s, c = 0; c < F; c++)
|
|
441
|
+
if (l = w >>> F - c - 1 & 1, h = l ? h.right : h.left, !(h.left || h.right)) {
|
|
442
|
+
U = h.val, i = i + c + 1;
|
|
443
|
+
break;
|
|
444
|
+
}
|
|
445
|
+
i >= 32 && (i -= 32, e++, q = f[e]), G = U - S, v[M] = G;
|
|
446
|
+
}
|
|
447
|
+
A.ptr = A.ptr + (e + 1) * 4 + (i > 0 ? 4 : 0), A.pixels.resultPixels = W, g > 1 && !a && (A.pixels.resultPixels = L.swapDimensionOrder(W, C, g, I));
|
|
448
|
+
},
|
|
449
|
+
decodeBits: function(E, A, I, a, Q) {
|
|
450
|
+
{
|
|
451
|
+
var g = A.headerInfo, D = g.fileVersion, B = 0, C = E.byteLength - A.ptr >= 5 ? 5 : E.byteLength - A.ptr, o = new DataView(E, A.ptr, C), r = o.getUint8(0);
|
|
452
|
+
B++;
|
|
453
|
+
var s = r >> 6, f = s === 0 ? 4 : 3 - s, e = (r & 32) > 0, i = r & 31, t = 0;
|
|
454
|
+
if (f === 1)
|
|
455
|
+
t = o.getUint8(B), B++;
|
|
456
|
+
else if (f === 2)
|
|
457
|
+
t = o.getUint16(B, !0), B += 2;
|
|
458
|
+
else if (f === 4)
|
|
459
|
+
t = o.getUint32(B, !0), B += 4;
|
|
460
|
+
else
|
|
461
|
+
throw "Invalid valid pixel count type";
|
|
462
|
+
var F = 2 * g.maxZError, S, h, U, G, R, w, n, l, y, k = g.numDims > 1 ? g.maxValues[Q] : g.zMax;
|
|
463
|
+
if (e) {
|
|
464
|
+
for (A.counter.lut++, l = o.getUint8(B), B++, G = Math.ceil((l - 1) * i / 8), R = Math.ceil(G / 4), h = new ArrayBuffer(R * 4), U = new Uint8Array(h), A.ptr += B, U.set(new Uint8Array(E, A.ptr, G)), n = new Uint32Array(h), A.ptr += G, y = 0; l - 1 >>> y; )
|
|
465
|
+
y++;
|
|
466
|
+
G = Math.ceil(t * y / 8), R = Math.ceil(G / 4), h = new ArrayBuffer(R * 4), U = new Uint8Array(h), U.set(new Uint8Array(E, A.ptr, G)), S = new Uint32Array(h), A.ptr += G, D >= 3 ? w = u.unstuffLUT2(n, i, l - 1, a, F, k) : w = u.unstuffLUT(n, i, l - 1, a, F, k), D >= 3 ? u.unstuff2(S, I, y, t, w) : u.unstuff(S, I, y, t, w);
|
|
467
|
+
} else
|
|
468
|
+
A.counter.bitstuffer++, y = i, A.ptr += B, y > 0 && (G = Math.ceil(t * y / 8), R = Math.ceil(G / 4), h = new ArrayBuffer(R * 4), U = new Uint8Array(h), U.set(new Uint8Array(E, A.ptr, G)), S = new Uint32Array(h), A.ptr += G, D >= 3 ? a == null ? u.originalUnstuff2(S, I, y, t) : u.unstuff2(S, I, y, t, !1, a, F, k) : a == null ? u.originalUnstuff(S, I, y, t) : u.unstuff(S, I, y, t, !1, a, F, k));
|
|
469
|
+
}
|
|
470
|
+
},
|
|
471
|
+
readTiles: function(E, A, I, a) {
|
|
472
|
+
var Q = A.headerInfo, g = Q.width, D = Q.height, B = g * D, C = Q.microBlockSize, o = Q.imageType, r = L.getDataTypeSize(o), s = Math.ceil(g / C), f = Math.ceil(D / C);
|
|
473
|
+
A.pixels.numBlocksY = f, A.pixels.numBlocksX = s, A.pixels.ptr = 0;
|
|
474
|
+
var e = 0, i = 0, t = 0, F = 0, S = 0, h = 0, U = 0, G = 0, R = 0, w = 0, n = 0, l = 0, y = 0, k = 0, M = 0, c = 0, N, q, m, W, v, Y, P = new I(C * C), eA = D % C || C, aA = g % C || C, AA, j, $ = Q.numDims, Z, K = A.pixels.resultMask, H = A.pixels.resultPixels, rA = Q.fileVersion, EA = rA >= 5 ? 14 : 15, p, IA = Q.zMax, V;
|
|
475
|
+
for (t = 0; t < f; t++)
|
|
476
|
+
for (S = t !== f - 1 ? C : eA, F = 0; F < s; F++)
|
|
477
|
+
for (h = F !== s - 1 ? C : aA, n = t * g * C + F * C, l = g - h, Z = 0; Z < $; Z++) {
|
|
478
|
+
if ($ > 1 ? (V = H, n = t * g * C + F * C, H = new I(A.pixels.resultPixels.buffer, B * Z * r, B), IA = Q.maxValues[Z]) : V = null, U = E.byteLength - A.ptr, N = new DataView(E, A.ptr, Math.min(10, U)), q = {}, c = 0, G = N.getUint8(0), c++, p = Q.fileVersion >= 5 ? G & 4 : 0, R = G >> 6 & 255, w = G >> 2 & EA, w !== (F * C >> 3 & EA) || p && Z === 0)
|
|
479
|
+
throw "integrity issue";
|
|
480
|
+
if (Y = G & 3, Y > 3)
|
|
481
|
+
throw A.ptr += c, "Invalid block encoding (" + Y + ")";
|
|
482
|
+
if (Y === 2) {
|
|
483
|
+
if (p)
|
|
484
|
+
if (K)
|
|
485
|
+
for (e = 0; e < S; e++)
|
|
486
|
+
for (i = 0; i < h; i++)
|
|
487
|
+
K[n] && (H[n] = V[n]), n++;
|
|
488
|
+
else
|
|
489
|
+
for (e = 0; e < S; e++)
|
|
490
|
+
for (i = 0; i < h; i++)
|
|
491
|
+
H[n] = V[n], n++;
|
|
492
|
+
A.counter.constant++, A.ptr += c;
|
|
493
|
+
continue;
|
|
494
|
+
} else if (Y === 0) {
|
|
495
|
+
if (p)
|
|
496
|
+
throw "integrity issue";
|
|
497
|
+
if (A.counter.uncompressed++, A.ptr += c, y = S * h * r, k = E.byteLength - A.ptr, y = y < k ? y : k, m = new ArrayBuffer(y % r === 0 ? y : y + r - y % r), W = new Uint8Array(m), W.set(new Uint8Array(E, A.ptr, y)), v = new I(m), M = 0, K)
|
|
498
|
+
for (e = 0; e < S; e++) {
|
|
499
|
+
for (i = 0; i < h; i++)
|
|
500
|
+
K[n] && (H[n] = v[M++]), n++;
|
|
501
|
+
n += l;
|
|
502
|
+
}
|
|
503
|
+
else
|
|
504
|
+
for (e = 0; e < S; e++) {
|
|
505
|
+
for (i = 0; i < h; i++)
|
|
506
|
+
H[n++] = v[M++];
|
|
507
|
+
n += l;
|
|
508
|
+
}
|
|
509
|
+
A.ptr += M * r;
|
|
510
|
+
} else if (AA = L.getDataTypeUsed(p && o < 6 ? 4 : o, R), j = L.getOnePixel(q, c, AA, N), c += L.getDataTypeSize(AA), Y === 3)
|
|
511
|
+
if (A.ptr += c, A.counter.constantoffset++, K)
|
|
512
|
+
for (e = 0; e < S; e++) {
|
|
513
|
+
for (i = 0; i < h; i++)
|
|
514
|
+
K[n] && (H[n] = p ? Math.min(IA, V[n] + j) : j), n++;
|
|
515
|
+
n += l;
|
|
516
|
+
}
|
|
517
|
+
else
|
|
518
|
+
for (e = 0; e < S; e++) {
|
|
519
|
+
for (i = 0; i < h; i++)
|
|
520
|
+
H[n] = p ? Math.min(IA, V[n] + j) : j, n++;
|
|
521
|
+
n += l;
|
|
522
|
+
}
|
|
523
|
+
else if (A.ptr += c, L.decodeBits(E, A, P, j, Z), c = 0, p)
|
|
524
|
+
if (K)
|
|
525
|
+
for (e = 0; e < S; e++) {
|
|
526
|
+
for (i = 0; i < h; i++)
|
|
527
|
+
K[n] && (H[n] = P[c++] + V[n]), n++;
|
|
528
|
+
n += l;
|
|
529
|
+
}
|
|
530
|
+
else
|
|
531
|
+
for (e = 0; e < S; e++) {
|
|
532
|
+
for (i = 0; i < h; i++)
|
|
533
|
+
H[n] = P[c++] + V[n], n++;
|
|
534
|
+
n += l;
|
|
535
|
+
}
|
|
536
|
+
else if (K)
|
|
537
|
+
for (e = 0; e < S; e++) {
|
|
538
|
+
for (i = 0; i < h; i++)
|
|
539
|
+
K[n] && (H[n] = P[c++]), n++;
|
|
540
|
+
n += l;
|
|
541
|
+
}
|
|
542
|
+
else
|
|
543
|
+
for (e = 0; e < S; e++) {
|
|
544
|
+
for (i = 0; i < h; i++)
|
|
545
|
+
H[n++] = P[c++];
|
|
546
|
+
n += l;
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
$ > 1 && !a && (A.pixels.resultPixels = L.swapDimensionOrder(A.pixels.resultPixels, B, $, I));
|
|
550
|
+
},
|
|
551
|
+
/*****************
|
|
552
|
+
* private methods (helper methods)
|
|
553
|
+
*****************/
|
|
554
|
+
formatFileInfo: function(E) {
|
|
555
|
+
return {
|
|
556
|
+
fileIdentifierString: E.headerInfo.fileIdentifierString,
|
|
557
|
+
fileVersion: E.headerInfo.fileVersion,
|
|
558
|
+
imageType: E.headerInfo.imageType,
|
|
559
|
+
height: E.headerInfo.height,
|
|
560
|
+
width: E.headerInfo.width,
|
|
561
|
+
numValidPixel: E.headerInfo.numValidPixel,
|
|
562
|
+
microBlockSize: E.headerInfo.microBlockSize,
|
|
563
|
+
blobSize: E.headerInfo.blobSize,
|
|
564
|
+
maxZError: E.headerInfo.maxZError,
|
|
565
|
+
pixelType: L.getPixelType(E.headerInfo.imageType),
|
|
566
|
+
eofOffset: E.eofOffset,
|
|
567
|
+
mask: E.mask ? {
|
|
568
|
+
numBytes: E.mask.numBytes
|
|
569
|
+
} : null,
|
|
570
|
+
pixels: {
|
|
571
|
+
numBlocksX: E.pixels.numBlocksX,
|
|
572
|
+
numBlocksY: E.pixels.numBlocksY,
|
|
573
|
+
//"numBytes": data.pixels.numBytes,
|
|
574
|
+
maxValue: E.headerInfo.zMax,
|
|
575
|
+
minValue: E.headerInfo.zMin,
|
|
576
|
+
noDataValue: E.noDataValue
|
|
577
|
+
}
|
|
578
|
+
};
|
|
579
|
+
},
|
|
580
|
+
constructConstantSurface: function(E, A) {
|
|
581
|
+
var I = E.headerInfo.zMax, a = E.headerInfo.zMin, Q = E.headerInfo.maxValues, g = E.headerInfo.numDims, D = E.headerInfo.height * E.headerInfo.width, B = 0, C = 0, o = 0, r = E.pixels.resultMask, s = E.pixels.resultPixels;
|
|
582
|
+
if (r)
|
|
583
|
+
if (g > 1) {
|
|
584
|
+
if (A)
|
|
585
|
+
for (B = 0; B < g; B++)
|
|
586
|
+
for (o = B * D, I = Q[B], C = 0; C < D; C++)
|
|
587
|
+
r[C] && (s[o + C] = I);
|
|
588
|
+
else
|
|
589
|
+
for (C = 0; C < D; C++)
|
|
590
|
+
if (r[C])
|
|
591
|
+
for (o = C * g, B = 0; B < g; B++)
|
|
592
|
+
s[o + g] = Q[B];
|
|
593
|
+
} else
|
|
594
|
+
for (C = 0; C < D; C++)
|
|
595
|
+
r[C] && (s[C] = I);
|
|
596
|
+
else if (g > 1 && a !== I)
|
|
597
|
+
if (A)
|
|
598
|
+
for (B = 0; B < g; B++)
|
|
599
|
+
for (o = B * D, I = Q[B], C = 0; C < D; C++)
|
|
600
|
+
s[o + C] = I;
|
|
601
|
+
else
|
|
602
|
+
for (C = 0; C < D; C++)
|
|
603
|
+
for (o = C * g, B = 0; B < g; B++)
|
|
604
|
+
s[o + B] = Q[B];
|
|
605
|
+
else
|
|
606
|
+
for (C = 0; C < D * g; C++)
|
|
607
|
+
s[C] = I;
|
|
608
|
+
},
|
|
609
|
+
getDataTypeArray: function(E) {
|
|
610
|
+
var A;
|
|
611
|
+
switch (E) {
|
|
612
|
+
case 0:
|
|
613
|
+
A = Int8Array;
|
|
614
|
+
break;
|
|
615
|
+
case 1:
|
|
616
|
+
A = Uint8Array;
|
|
617
|
+
break;
|
|
618
|
+
case 2:
|
|
619
|
+
A = Int16Array;
|
|
620
|
+
break;
|
|
621
|
+
case 3:
|
|
622
|
+
A = Uint16Array;
|
|
623
|
+
break;
|
|
624
|
+
case 4:
|
|
625
|
+
A = Int32Array;
|
|
626
|
+
break;
|
|
627
|
+
case 5:
|
|
628
|
+
A = Uint32Array;
|
|
629
|
+
break;
|
|
630
|
+
case 6:
|
|
631
|
+
A = Float32Array;
|
|
632
|
+
break;
|
|
633
|
+
case 7:
|
|
634
|
+
A = Float64Array;
|
|
635
|
+
break;
|
|
636
|
+
default:
|
|
637
|
+
A = Float32Array;
|
|
638
|
+
}
|
|
639
|
+
return A;
|
|
640
|
+
},
|
|
641
|
+
getPixelType: function(E) {
|
|
642
|
+
var A;
|
|
643
|
+
switch (E) {
|
|
644
|
+
case 0:
|
|
645
|
+
A = "S8";
|
|
646
|
+
break;
|
|
647
|
+
case 1:
|
|
648
|
+
A = "U8";
|
|
649
|
+
break;
|
|
650
|
+
case 2:
|
|
651
|
+
A = "S16";
|
|
652
|
+
break;
|
|
653
|
+
case 3:
|
|
654
|
+
A = "U16";
|
|
655
|
+
break;
|
|
656
|
+
case 4:
|
|
657
|
+
A = "S32";
|
|
658
|
+
break;
|
|
659
|
+
case 5:
|
|
660
|
+
A = "U32";
|
|
661
|
+
break;
|
|
662
|
+
case 6:
|
|
663
|
+
A = "F32";
|
|
664
|
+
break;
|
|
665
|
+
case 7:
|
|
666
|
+
A = "F64";
|
|
667
|
+
break;
|
|
668
|
+
default:
|
|
669
|
+
A = "F32";
|
|
670
|
+
}
|
|
671
|
+
return A;
|
|
672
|
+
},
|
|
673
|
+
isValidPixelValue: function(E, A) {
|
|
674
|
+
if (A == null)
|
|
675
|
+
return !1;
|
|
676
|
+
var I;
|
|
677
|
+
switch (E) {
|
|
678
|
+
case 0:
|
|
679
|
+
I = A >= -128 && A <= 127;
|
|
680
|
+
break;
|
|
681
|
+
case 1:
|
|
682
|
+
I = A >= 0 && A <= 255;
|
|
683
|
+
break;
|
|
684
|
+
case 2:
|
|
685
|
+
I = A >= -32768 && A <= 32767;
|
|
686
|
+
break;
|
|
687
|
+
case 3:
|
|
688
|
+
I = A >= 0 && A <= 65536;
|
|
689
|
+
break;
|
|
690
|
+
case 4:
|
|
691
|
+
I = A >= -2147483648 && A <= 2147483647;
|
|
692
|
+
break;
|
|
693
|
+
case 5:
|
|
694
|
+
I = A >= 0 && A <= 4294967296;
|
|
695
|
+
break;
|
|
696
|
+
case 6:
|
|
697
|
+
I = A >= -34027999387901484e22 && A <= 34027999387901484e22;
|
|
698
|
+
break;
|
|
699
|
+
case 7:
|
|
700
|
+
I = A >= -17976931348623157e292 && A <= 17976931348623157e292;
|
|
701
|
+
break;
|
|
702
|
+
default:
|
|
703
|
+
I = !1;
|
|
704
|
+
}
|
|
705
|
+
return I;
|
|
706
|
+
},
|
|
707
|
+
getDataTypeSize: function(E) {
|
|
708
|
+
var A = 0;
|
|
709
|
+
switch (E) {
|
|
710
|
+
case 0:
|
|
711
|
+
case 1:
|
|
712
|
+
A = 1;
|
|
713
|
+
break;
|
|
714
|
+
case 2:
|
|
715
|
+
case 3:
|
|
716
|
+
A = 2;
|
|
717
|
+
break;
|
|
718
|
+
case 4:
|
|
719
|
+
case 5:
|
|
720
|
+
case 6:
|
|
721
|
+
A = 4;
|
|
722
|
+
break;
|
|
723
|
+
case 7:
|
|
724
|
+
A = 8;
|
|
725
|
+
break;
|
|
726
|
+
default:
|
|
727
|
+
A = E;
|
|
728
|
+
}
|
|
729
|
+
return A;
|
|
730
|
+
},
|
|
731
|
+
getDataTypeUsed: function(E, A) {
|
|
732
|
+
var I = E;
|
|
733
|
+
switch (E) {
|
|
734
|
+
case 2:
|
|
735
|
+
case 4:
|
|
736
|
+
I = E - A;
|
|
737
|
+
break;
|
|
738
|
+
case 3:
|
|
739
|
+
case 5:
|
|
740
|
+
I = E - 2 * A;
|
|
741
|
+
break;
|
|
742
|
+
case 6:
|
|
743
|
+
A === 0 ? I = E : A === 1 ? I = 2 : I = 1;
|
|
744
|
+
break;
|
|
745
|
+
case 7:
|
|
746
|
+
A === 0 ? I = E : I = E - 2 * A + 1;
|
|
747
|
+
break;
|
|
748
|
+
default:
|
|
749
|
+
I = E;
|
|
750
|
+
break;
|
|
751
|
+
}
|
|
752
|
+
return I;
|
|
753
|
+
},
|
|
754
|
+
getOnePixel: function(E, A, I, a) {
|
|
755
|
+
var Q = 0;
|
|
756
|
+
switch (I) {
|
|
757
|
+
case 0:
|
|
758
|
+
Q = a.getInt8(A);
|
|
759
|
+
break;
|
|
760
|
+
case 1:
|
|
761
|
+
Q = a.getUint8(A);
|
|
762
|
+
break;
|
|
763
|
+
case 2:
|
|
764
|
+
Q = a.getInt16(A, !0);
|
|
765
|
+
break;
|
|
766
|
+
case 3:
|
|
767
|
+
Q = a.getUint16(A, !0);
|
|
768
|
+
break;
|
|
769
|
+
case 4:
|
|
770
|
+
Q = a.getInt32(A, !0);
|
|
771
|
+
break;
|
|
772
|
+
case 5:
|
|
773
|
+
Q = a.getUInt32(A, !0);
|
|
774
|
+
break;
|
|
775
|
+
case 6:
|
|
776
|
+
Q = a.getFloat32(A, !0);
|
|
777
|
+
break;
|
|
778
|
+
case 7:
|
|
779
|
+
Q = a.getFloat64(A, !0);
|
|
780
|
+
break;
|
|
781
|
+
default:
|
|
782
|
+
throw "the decoder does not understand this pixel type";
|
|
783
|
+
}
|
|
784
|
+
return Q;
|
|
785
|
+
},
|
|
786
|
+
swapDimensionOrder: function(E, A, I, a, Q) {
|
|
787
|
+
var g = 0, D = 0, B = 0, C = 0, o = E;
|
|
788
|
+
if (I > 1)
|
|
789
|
+
if (o = new a(A * I), Q)
|
|
790
|
+
for (g = 0; g < A; g++)
|
|
791
|
+
for (C = g, B = 0; B < I; B++, C += A)
|
|
792
|
+
o[C] = E[D++];
|
|
793
|
+
else
|
|
794
|
+
for (g = 0; g < A; g++)
|
|
795
|
+
for (C = g, B = 0; B < I; B++, C += A)
|
|
796
|
+
o[D++] = E[C];
|
|
797
|
+
return o;
|
|
798
|
+
}
|
|
799
|
+
}, d = function(E, A, I) {
|
|
800
|
+
this.val = E, this.left = A, this.right = I;
|
|
801
|
+
}, z = {
|
|
802
|
+
/*
|
|
803
|
+
* ********removed options compared to LERC1. We can bring some of them back if needed.
|
|
804
|
+
* removed pixel type. LERC2 is typed and doesn't require user to give pixel type
|
|
805
|
+
* changed encodedMaskData to maskData. LERC2 's js version make it faster to use maskData directly.
|
|
806
|
+
* removed returnMask. mask is used by LERC2 internally and is cost free. In case of user input mask, it's returned as well and has neglible cost.
|
|
807
|
+
* removed nodatavalue. Because LERC2 pixels are typed, nodatavalue will sacrify a useful value for many types (8bit, 16bit) etc,
|
|
808
|
+
* user has to be knowledgable enough about raster and their data to avoid usability issues. so nodata value is simply removed now.
|
|
809
|
+
* We can add it back later if their's a clear requirement.
|
|
810
|
+
* removed encodedMask. This option was not implemented in LercDecode. It can be done after decoding (less efficient)
|
|
811
|
+
* removed computeUsedBitDepths.
|
|
812
|
+
*
|
|
813
|
+
*
|
|
814
|
+
* response changes compared to LERC1
|
|
815
|
+
* 1. encodedMaskData is not available
|
|
816
|
+
* 2. noDataValue is optional (returns only if user's noDataValue is with in the valid data type range)
|
|
817
|
+
* 3. maskData is always available
|
|
818
|
+
*/
|
|
819
|
+
/*****************
|
|
820
|
+
* public properties
|
|
821
|
+
******************/
|
|
822
|
+
//HUFFMAN_LUT_BITS_MAX: 12, //use 2^12 lut, not configurable
|
|
823
|
+
/*****************
|
|
824
|
+
* public methods
|
|
825
|
+
*****************/
|
|
826
|
+
/**
|
|
827
|
+
* Decode a LERC2 byte stream and return an object containing the pixel data and optional metadata.
|
|
828
|
+
*
|
|
829
|
+
* @param {ArrayBuffer} input The LERC input byte stream
|
|
830
|
+
* @param {object} [options] options Decoding options
|
|
831
|
+
* @param {number} [options.inputOffset] The number of bytes to skip in the input byte stream. A valid LERC file is expected at that position
|
|
832
|
+
* @param {boolean} [options.returnFileInfo] If true, the return value will have a fileInfo property that contains metadata obtained from the LERC headers and the decoding process
|
|
833
|
+
* @param {boolean} [options.returnPixelInterleavedDims] If true, returned dimensions are pixel-interleaved, a.k.a [p1_dim0, p1_dim1, p1_dimn, p2_dim0...], default is [p1_dim0, p2_dim0, ..., p1_dim1, p2_dim1...]
|
|
834
|
+
*/
|
|
835
|
+
decode: function(E, A) {
|
|
836
|
+
A = A || {};
|
|
837
|
+
var I = A.noDataValue, a = 0, Q = {};
|
|
838
|
+
if (Q.ptr = A.inputOffset || 0, Q.pixels = {}, !!L.readHeaderInfo(E, Q)) {
|
|
839
|
+
var g = Q.headerInfo, D = g.fileVersion, B = L.getDataTypeArray(g.imageType);
|
|
840
|
+
if (D > 5)
|
|
841
|
+
throw "unsupported lerc version 2." + D;
|
|
842
|
+
L.readMask(E, Q), g.numValidPixel !== g.width * g.height && !Q.pixels.resultMask && (Q.pixels.resultMask = A.maskData);
|
|
843
|
+
var C = g.width * g.height;
|
|
844
|
+
Q.pixels.resultPixels = new B(C * g.numDims), Q.counter = {
|
|
845
|
+
onesweep: 0,
|
|
846
|
+
uncompressed: 0,
|
|
847
|
+
lut: 0,
|
|
848
|
+
bitstuffer: 0,
|
|
849
|
+
constant: 0,
|
|
850
|
+
constantoffset: 0
|
|
851
|
+
};
|
|
852
|
+
var o = !A.returnPixelInterleavedDims;
|
|
853
|
+
if (g.numValidPixel !== 0)
|
|
854
|
+
if (g.zMax === g.zMin)
|
|
855
|
+
L.constructConstantSurface(Q, o);
|
|
856
|
+
else if (D >= 4 && L.checkMinMaxRanges(E, Q))
|
|
857
|
+
L.constructConstantSurface(Q, o);
|
|
858
|
+
else {
|
|
859
|
+
var r = new DataView(E, Q.ptr, 2), s = r.getUint8(0);
|
|
860
|
+
if (Q.ptr++, s)
|
|
861
|
+
L.readDataOneSweep(E, Q, B, o);
|
|
862
|
+
else if (D > 1 && g.imageType <= 1 && Math.abs(g.maxZError - 0.5) < 1e-5) {
|
|
863
|
+
var f = r.getUint8(1);
|
|
864
|
+
if (Q.ptr++, Q.encodeMode = f, f > 2 || D < 4 && f > 1)
|
|
865
|
+
throw "Invalid Huffman flag " + f;
|
|
866
|
+
f ? L.readHuffman(E, Q, B, o) : L.readTiles(E, Q, B, o);
|
|
867
|
+
} else
|
|
868
|
+
L.readTiles(E, Q, B, o);
|
|
869
|
+
}
|
|
870
|
+
Q.eofOffset = Q.ptr;
|
|
871
|
+
var e;
|
|
872
|
+
A.inputOffset ? (e = Q.headerInfo.blobSize + A.inputOffset - Q.ptr, Math.abs(e) >= 1 && (Q.eofOffset = A.inputOffset + Q.headerInfo.blobSize)) : (e = Q.headerInfo.blobSize - Q.ptr, Math.abs(e) >= 1 && (Q.eofOffset = Q.headerInfo.blobSize));
|
|
873
|
+
var i = {
|
|
874
|
+
width: g.width,
|
|
875
|
+
height: g.height,
|
|
876
|
+
pixelData: Q.pixels.resultPixels,
|
|
877
|
+
minValue: g.zMin,
|
|
878
|
+
maxValue: g.zMax,
|
|
879
|
+
validPixelCount: g.numValidPixel,
|
|
880
|
+
dimCount: g.numDims,
|
|
881
|
+
dimStats: {
|
|
882
|
+
minValues: g.minValues,
|
|
883
|
+
maxValues: g.maxValues
|
|
884
|
+
},
|
|
885
|
+
maskData: Q.pixels.resultMask
|
|
886
|
+
//noDataValue: noDataValue
|
|
887
|
+
};
|
|
888
|
+
if (Q.pixels.resultMask && L.isValidPixelValue(g.imageType, I)) {
|
|
889
|
+
var t = Q.pixels.resultMask;
|
|
890
|
+
for (a = 0; a < C; a++)
|
|
891
|
+
t[a] || (i.pixelData[a] = I);
|
|
892
|
+
i.noDataValue = I;
|
|
893
|
+
}
|
|
894
|
+
return Q.noDataValue = I, A.returnFileInfo && (i.fileInfo = L.formatFileInfo(Q)), i;
|
|
895
|
+
}
|
|
896
|
+
},
|
|
897
|
+
getBandCount: function(E) {
|
|
898
|
+
var A = 0, I = 0, a = {};
|
|
899
|
+
for (a.ptr = 0, a.pixels = {}; I < E.byteLength - 58; )
|
|
900
|
+
L.readHeaderInfo(E, a), I += a.headerInfo.blobSize, A++, a.ptr = I;
|
|
901
|
+
return A;
|
|
902
|
+
}
|
|
903
|
+
};
|
|
904
|
+
return z;
|
|
905
|
+
}(), b = function() {
|
|
906
|
+
var u = new ArrayBuffer(4), L = new Uint8Array(u), d = new Uint32Array(u);
|
|
907
|
+
return d[0] = 1, L[0] === 1;
|
|
908
|
+
}(), O = {
|
|
909
|
+
/************wrapper**********************************************/
|
|
910
|
+
/**
|
|
911
|
+
* A wrapper for decoding both LERC1 and LERC2 byte streams capable of handling multiband pixel blocks for various pixel types.
|
|
912
|
+
*
|
|
913
|
+
* @alias module:Lerc
|
|
914
|
+
* @param {ArrayBuffer} input The LERC input byte stream
|
|
915
|
+
* @param {object} [options] The decoding options below are optional.
|
|
916
|
+
* @param {number} [options.inputOffset] The number of bytes to skip in the input byte stream. A valid Lerc file is expected at that position.
|
|
917
|
+
* @param {string} [options.pixelType] (LERC1 only) Default value is F32. Valid pixel types for input are U8/S8/S16/U16/S32/U32/F32.
|
|
918
|
+
* @param {number} [options.noDataValue] (LERC1 only). It is recommended to use the returned mask instead of setting this value.
|
|
919
|
+
* @param {boolean} [options.returnPixelInterleavedDims] (nDim LERC2 only) If true, returned dimensions are pixel-interleaved, a.k.a [p1_dim0, p1_dim1, p1_dimn, p2_dim0...], default is [p1_dim0, p2_dim0, ..., p1_dim1, p2_dim1...]
|
|
920
|
+
* @returns {{width, height, pixels, pixelType, mask, statistics}}
|
|
921
|
+
* @property {number} width Width of decoded image.
|
|
922
|
+
* @property {number} height Height of decoded image.
|
|
923
|
+
* @property {array} pixels [band1, band2, …] Each band is a typed array of width*height.
|
|
924
|
+
* @property {string} pixelType The type of pixels represented in the output.
|
|
925
|
+
* @property {mask} mask Typed array with a size of width*height, or null if all pixels are valid.
|
|
926
|
+
* @property {array} statistics [statistics_band1, statistics_band2, …] Each element is a statistics object representing min and max values
|
|
927
|
+
**/
|
|
928
|
+
decode: function(u, L) {
|
|
929
|
+
if (!b)
|
|
930
|
+
throw "Big endian system is not supported.";
|
|
931
|
+
L = L || {};
|
|
932
|
+
var d = L.inputOffset || 0, z = new Uint8Array(u, d, 10), E = String.fromCharCode.apply(null, z), A, I;
|
|
933
|
+
if (E.trim() === "CntZImage")
|
|
934
|
+
A = J, I = 1;
|
|
935
|
+
else if (E.substring(0, 5) === "Lerc2")
|
|
936
|
+
A = X, I = 2;
|
|
937
|
+
else
|
|
938
|
+
throw "Unexpected file identifier string: " + E;
|
|
939
|
+
for (var a = 0, Q = u.byteLength - 10, g, D = [], B, C, o = {
|
|
940
|
+
width: 0,
|
|
941
|
+
height: 0,
|
|
942
|
+
pixels: [],
|
|
943
|
+
pixelType: L.pixelType,
|
|
944
|
+
mask: null,
|
|
945
|
+
statistics: []
|
|
946
|
+
}, r = 0; d < Q; ) {
|
|
947
|
+
var s = A.decode(u, {
|
|
948
|
+
inputOffset: d,
|
|
949
|
+
//for both lerc1 and lerc2
|
|
950
|
+
encodedMaskData: g,
|
|
951
|
+
//lerc1 only
|
|
952
|
+
maskData: C,
|
|
953
|
+
//lerc2 only
|
|
954
|
+
returnMask: a === 0,
|
|
955
|
+
//lerc1 only
|
|
956
|
+
returnEncodedMask: a === 0,
|
|
957
|
+
//lerc1 only
|
|
958
|
+
returnFileInfo: !0,
|
|
959
|
+
//for both lerc1 and lerc2
|
|
960
|
+
returnPixelInterleavedDims: L.returnPixelInterleavedDims,
|
|
961
|
+
//for ndim lerc2 only
|
|
962
|
+
pixelType: L.pixelType || null,
|
|
963
|
+
//lerc1 only
|
|
964
|
+
noDataValue: L.noDataValue || null
|
|
965
|
+
//lerc1 only
|
|
966
|
+
});
|
|
967
|
+
d = s.fileInfo.eofOffset, C = s.maskData, a === 0 && (g = s.encodedMaskData, o.width = s.width, o.height = s.height, o.dimCount = s.dimCount || 1, o.pixelType = s.pixelType || s.fileInfo.pixelType, o.mask = C), I > 1 && (C && D.push(C), s.fileInfo.mask && s.fileInfo.mask.numBytes > 0 && r++), a++, o.pixels.push(s.pixelData), o.statistics.push({
|
|
968
|
+
minValue: s.minValue,
|
|
969
|
+
maxValue: s.maxValue,
|
|
970
|
+
noDataValue: s.noDataValue,
|
|
971
|
+
dimStats: s.dimStats
|
|
972
|
+
});
|
|
973
|
+
}
|
|
974
|
+
var f, e, i;
|
|
975
|
+
if (I > 1 && r > 1) {
|
|
976
|
+
for (i = o.width * o.height, o.bandMasks = D, C = new Uint8Array(i), C.set(D[0]), f = 1; f < D.length; f++)
|
|
977
|
+
for (B = D[f], e = 0; e < i; e++)
|
|
978
|
+
C[e] = C[e] & B[e];
|
|
979
|
+
o.maskData = C;
|
|
980
|
+
}
|
|
981
|
+
return o;
|
|
982
|
+
}
|
|
983
|
+
};
|
|
984
|
+
T.exports ? T.exports = O : this.Lerc = O;
|
|
985
|
+
})();
|
|
986
|
+
})(nA);
|
|
987
|
+
let _, x, CA;
|
|
988
|
+
const BA = {
|
|
989
|
+
env: {
|
|
990
|
+
emscripten_notify_memory_growth: function(T) {
|
|
991
|
+
CA = new Uint8Array(x.exports.memory.buffer);
|
|
992
|
+
}
|
|
993
|
+
}
|
|
994
|
+
};
|
|
995
|
+
class fA {
|
|
996
|
+
init() {
|
|
997
|
+
return _ || (typeof fetch < "u" ? _ = fetch("data:application/wasm;base64," + iA).then((J) => J.arrayBuffer()).then((J) => WebAssembly.instantiate(J, BA)).then(this._init) : _ = WebAssembly.instantiate(Buffer.from(iA, "base64"), BA).then(this._init), _);
|
|
998
|
+
}
|
|
999
|
+
_init(J) {
|
|
1000
|
+
x = J.instance, BA.env.emscripten_notify_memory_growth(0);
|
|
1001
|
+
}
|
|
1002
|
+
decode(J, X = 0) {
|
|
1003
|
+
if (!x)
|
|
1004
|
+
throw new Error("ZSTDDecoder: Await .init() before decoding.");
|
|
1005
|
+
const b = J.byteLength, O = x.exports.malloc(b);
|
|
1006
|
+
CA.set(J, O), X = X || Number(x.exports.ZSTD_findDecompressedSize(O, b));
|
|
1007
|
+
const u = x.exports.malloc(X), L = x.exports.ZSTD_decompress(u, X, O, b), d = CA.slice(u, u + L);
|
|
1008
|
+
return x.exports.free(O), x.exports.free(u), d;
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
const iA = "AGFzbQEAAAABpQEVYAF/AX9gAn9/AGADf39/AX9gBX9/f39/AX9gAX8AYAJ/fwF/YAR/f39/AX9gA39/fwBgBn9/f39/fwF/YAd/f39/f39/AX9gAn9/AX5gAn5+AX5gAABgBX9/f39/AGAGf39/f39/AGAIf39/f39/f38AYAl/f39/f39/f38AYAABf2AIf39/f39/f38Bf2ANf39/f39/f39/f39/fwF/YAF/AX4CJwEDZW52H2Vtc2NyaXB0ZW5fbm90aWZ5X21lbW9yeV9ncm93dGgABANpaAEFAAAFAgEFCwACAQABAgIFBQcAAwABDgsBAQcAEhMHAAUBDAQEAAANBwQCAgYCBAgDAwMDBgEACQkHBgICAAYGAgQUBwYGAwIGAAMCAQgBBwUGCgoEEQAEBAEIAwgDBQgDEA8IAAcABAUBcAECAgUEAQCAAgYJAX8BQaCgwAILB2AHBm1lbW9yeQIABm1hbGxvYwAoBGZyZWUAJgxaU1REX2lzRXJyb3IAaBlaU1REX2ZpbmREZWNvbXByZXNzZWRTaXplAFQPWlNURF9kZWNvbXByZXNzAEoGX3N0YXJ0ACQJBwEAQQELASQKussBaA8AIAAgACgCBCABajYCBAsZACAAKAIAIAAoAgRBH3F0QQAgAWtBH3F2CwgAIABBiH9LC34BBH9BAyEBIAAoAgQiA0EgTQRAIAAoAggiASAAKAIQTwRAIAAQDQ8LIAAoAgwiAiABRgRAQQFBAiADQSBJGw8LIAAgASABIAJrIANBA3YiBCABIARrIAJJIgEbIgJrIgQ2AgggACADIAJBA3RrNgIEIAAgBCgAADYCAAsgAQsUAQF/IAAgARACIQIgACABEAEgAgv3AQECfyACRQRAIABCADcCACAAQQA2AhAgAEIANwIIQbh/DwsgACABNgIMIAAgAUEEajYCECACQQRPBEAgACABIAJqIgFBfGoiAzYCCCAAIAMoAAA2AgAgAUF/ai0AACIBBEAgAEEIIAEQFGs2AgQgAg8LIABBADYCBEF/DwsgACABNgIIIAAgAS0AACIDNgIAIAJBfmoiBEEBTQRAIARBAWtFBEAgACABLQACQRB0IANyIgM2AgALIAAgAS0AAUEIdCADajYCAAsgASACakF/ai0AACIBRQRAIABBADYCBEFsDwsgAEEoIAEQFCACQQN0ams2AgQgAgsWACAAIAEpAAA3AAAgACABKQAINwAICy8BAX8gAUECdEGgHWooAgAgACgCAEEgIAEgACgCBGprQR9xdnEhAiAAIAEQASACCyEAIAFCz9bTvtLHq9lCfiAAfEIfiUKHla+vmLbem55/fgsdAQF/IAAoAgggACgCDEYEfyAAKAIEQSBGBUEACwuCBAEDfyACQYDAAE8EQCAAIAEgAhBnIAAPCyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAkEBSARAIAAhAgwBCyAAQQNxRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADTw0BIAJBA3ENAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgA0F8aiIEIABJBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAsMACAAIAEpAAA3AAALQQECfyAAKAIIIgEgACgCEEkEQEEDDwsgACAAKAIEIgJBB3E2AgQgACABIAJBA3ZrIgE2AgggACABKAAANgIAQQALDAAgACABKAIANgAAC/cCAQJ/AkAgACABRg0AAkAgASACaiAASwRAIAAgAmoiBCABSw0BCyAAIAEgAhALDwsgACABc0EDcSEDAkACQCAAIAFJBEAgAwRAIAAhAwwDCyAAQQNxRQRAIAAhAwwCCyAAIQMDQCACRQ0EIAMgAS0AADoAACABQQFqIQEgAkF/aiECIANBAWoiA0EDcQ0ACwwBCwJAIAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY0AAQMyIFEAMiBg0AIANBHzYCfCADIANB/ABqIANB+ABqIAQgBCAFaiAGGyIEIAEgAmoiAiAEaxAVIgUQAw0AIAMoAnwiBkEfSw0AIAMoAngiB0EJTw0AIABBiCBqIAMgBkGAC0GADCAHEBggA0E0NgJ8IAMgA0H8AGogA0H4AGogBCAFaiIEIAIgBGsQFSIFEAMNACADKAJ8IgZBNEsNACADKAJ4IgdBCk8NACAAQZAwaiADIAZBgA1B4A4gBxAYIANBIzYCfCADIANB/ABqIANB+ABqIAQgBWoiBCACIARrEBUiBRADDQAgAygCfCIGQSNLDQAgAygCeCIHQQpPDQAgACADIAZBwBBB0BEgBxAYIAQgBWoiBEEMaiIFIAJLDQAgAiAFayEFQQAhAgNAIAJBA0cEQCAEKAAAIgZBf2ogBU8NAiAAIAJBAnRqQZzQAWogBjYCACACQQFqIQIgBEEEaiEEDAELCyAEIAFrIQgLIANBgAFqJAAgCAtGAQN/IABBCGohAyAAKAIEIQJBACEAA0AgACACdkUEQCABIAMgAEEDdGotAAJBFktqIQEgAEEBaiEADAELCyABQQggAmt0C4YDAQV/Qbh/IQcCQCADRQ0AIAItAAAiBEUEQCABQQA2AgBBAUG4fyADQQFGGw8LAn8gAkEBaiIFIARBGHRBGHUiBkF/Sg0AGiAGQX9GBEAgA0EDSA0CIAUvAABBgP4BaiEEIAJBA2oMAQsgA0ECSA0BIAItAAEgBEEIdHJBgIB+aiEEIAJBAmoLIQUgASAENgIAIAVBAWoiASACIANqIgNLDQBBbCEHIABBEGogACAFLQAAIgVBBnZBI0EJIAEgAyABa0HAEEHQEUHwEiAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBmCBqIABBCGogBUEEdkEDcUEfQQggASABIAZqIAgbIgEgAyABa0GAC0GADEGAFyAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBoDBqIABBBGogBUECdkEDcUE0QQkgASABIAZqIAgbIgEgAyABa0GADUHgDkGQGSAAKAKM4QEgACgCnOIBIAQQHyIAEAMNACAAIAFqIAJrIQcLIAcLrQMBCn8jAEGABGsiCCQAAn9BUiACQf8BSw0AGkFUIANBDEsNABogAkEBaiELIABBBGohCUGAgAQgA0F/anRBEHUhCkEAIQJBASEEQQEgA3QiB0F/aiIMIQUDQCACIAtGRQRAAkAgASACQQF0Ig1qLwEAIgZB//8DRgRAIAkgBUECdGogAjoAAiAFQX9qIQVBASEGDAELIARBACAKIAZBEHRBEHVKGyEECyAIIA1qIAY7AQAgAkEBaiECDAELCyAAIAQ7AQIgACADOwEAIAdBA3YgB0EBdmpBA2ohBkEAIQRBACECA0AgBCALRkUEQCABIARBAXRqLgEAIQpBACEAA0AgACAKTkUEQCAJIAJBAnRqIAQ6AAIDQCACIAZqIAxxIgIgBUsNAAsgAEEBaiEADAELCyAEQQFqIQQMAQsLQX8gAg0AGkEAIQIDfyACIAdGBH9BAAUgCCAJIAJBAnRqIgAtAAJBAXRqIgEgAS8BACIBQQFqOwEAIAAgAyABEBRrIgU6AAMgACABIAVB/wFxdCAHazsBACACQQFqIQIMAQsLCyEFIAhBgARqJAAgBQvjBgEIf0FsIQcCQCACQQNJDQACQAJAAkACQCABLQAAIgNBA3EiCUEBaw4DAwEAAgsgACgCiOEBDQBBYg8LIAJBBUkNAkEDIQYgASgAACEFAn8CQAJAIANBAnZBA3EiCEF+aiIEQQFNBEAgBEEBaw0BDAILIAVBDnZB/wdxIQQgBUEEdkH/B3EhAyAIRQwCCyAFQRJ2IQRBBCEGIAVBBHZB//8AcSEDQQAMAQsgBUEEdkH//w9xIgNBgIAISw0DIAEtAARBCnQgBUEWdnIhBEEFIQZBAAshBSAEIAZqIgogAksNAgJAIANBgQZJDQAgACgCnOIBRQ0AQQAhAgNAIAJBg4ABSw0BIAJBQGshAgwAAAsACwJ/IAlBA0YEQCABIAZqIQEgAEHw4gFqIQIgACgCDCEGIAUEQCACIAMgASAEIAYQXwwCCyACIAMgASAEIAYQXQwBCyAAQbjQAWohAiABIAZqIQEgAEHw4gFqIQYgAEGo0ABqIQggBQRAIAggBiADIAEgBCACEF4MAQsgCCAGIAMgASAEIAIQXAsQAw0CIAAgAzYCgOIBIABBATYCiOEBIAAgAEHw4gFqNgLw4QEgCUECRgRAIAAgAEGo0ABqNgIMCyAAIANqIgBBiOMBakIANwAAIABBgOMBakIANwAAIABB+OIBakIANwAAIABB8OIBakIANwAAIAoPCwJ/AkACQAJAIANBAnZBA3FBf2oiBEECSw0AIARBAWsOAgACAQtBASEEIANBA3YMAgtBAiEEIAEvAABBBHYMAQtBAyEEIAEQIUEEdgsiAyAEaiIFQSBqIAJLBEAgBSACSw0CIABB8OIBaiABIARqIAMQCyEBIAAgAzYCgOIBIAAgATYC8OEBIAEgA2oiAEIANwAYIABCADcAECAAQgA3AAggAEIANwAAIAUPCyAAIAM2AoDiASAAIAEgBGo2AvDhASAFDwsCfwJAAkACQCADQQJ2QQNxQX9qIgRBAksNACAEQQFrDgIAAgELQQEhByADQQN2DAILQQIhByABLwAAQQR2DAELIAJBBEkgARAhIgJBj4CAAUtyDQFBAyEHIAJBBHYLIQIgAEHw4gFqIAEgB2otAAAgAkEgahAQIQEgACACNgKA4gEgACABNgLw4QEgB0EBaiEHCyAHC0sAIABC+erQ0OfJoeThADcDICAAQgA3AxggAELP1tO+0ser2UI3AxAgAELW64Lu6v2J9eAANwMIIABCADcDACAAQShqQQBBKBAQGgviAgICfwV+IABBKGoiASAAKAJIaiECAn4gACkDACIDQiBaBEAgACkDECIEQgeJIAApAwgiBUIBiXwgACkDGCIGQgyJfCAAKQMgIgdCEol8IAUQGSAEEBkgBhAZIAcQGQwBCyAAKQMYQsXP2bLx5brqJ3wLIAN8IQMDQCABQQhqIgAgAk0EQEIAIAEpAAAQCSADhUIbiUKHla+vmLbem55/fkLj3MqV/M7y9YV/fCEDIAAhAQwBCwsCQCABQQRqIgAgAksEQCABIQAMAQsgASgAAK1Ch5Wvr5i23puef34gA4VCF4lCz9bTvtLHq9lCfkL5893xmfaZqxZ8IQMLA0AgACACSQRAIAAxAABCxc/ZsvHluuonfiADhUILiUKHla+vmLbem55/fiEDIABBAWohAAwBCwsgA0IhiCADhULP1tO+0ser2UJ+IgNCHYggA4VC+fPd8Zn2masWfiIDQiCIIAOFC+8CAgJ/BH4gACAAKQMAIAKtfDcDAAJAAkAgACgCSCIDIAJqIgRBH00EQCABRQ0BIAAgA2pBKGogASACECAgACgCSCACaiEEDAELIAEgAmohAgJ/IAMEQCAAQShqIgQgA2ogAUEgIANrECAgACAAKQMIIAQpAAAQCTcDCCAAIAApAxAgACkAMBAJNwMQIAAgACkDGCAAKQA4EAk3AxggACAAKQMgIABBQGspAAAQCTcDICAAKAJIIQMgAEEANgJIIAEgA2tBIGohAQsgAUEgaiACTQsEQCACQWBqIQMgACkDICEFIAApAxghBiAAKQMQIQcgACkDCCEIA0AgCCABKQAAEAkhCCAHIAEpAAgQCSEHIAYgASkAEBAJIQYgBSABKQAYEAkhBSABQSBqIgEgA00NAAsgACAFNwMgIAAgBjcDGCAAIAc3AxAgACAINwMICyABIAJPDQEgAEEoaiABIAIgAWsiBBAgCyAAIAQ2AkgLCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQEBogAwVBun8LCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQCxogAwVBun8LC6gCAQZ/IwBBEGsiByQAIABB2OABaikDAEKAgIAQViEIQbh/IQUCQCAEQf//B0sNACAAIAMgBBBCIgUQAyIGDQAgACgCnOIBIQkgACAHQQxqIAMgAyAFaiAGGyIKIARBACAFIAYbayIGEEAiAxADBEAgAyEFDAELIAcoAgwhBCABRQRAQbp/IQUgBEEASg0BCyAGIANrIQUgAyAKaiEDAkAgCQRAIABBADYCnOIBDAELAkACQAJAIARBBUgNACAAQdjgAWopAwBCgICACFgNAAwBCyAAQQA2ApziAQwBCyAAKAIIED8hBiAAQQA2ApziASAGQRRPDQELIAAgASACIAMgBSAEIAgQOSEFDAELIAAgASACIAMgBSAEIAgQOiEFCyAHQRBqJAAgBQtnACAAQdDgAWogASACIAAoAuzhARAuIgEQAwRAIAEPC0G4fyECAkAgAQ0AIABB7OABaigCACIBBEBBYCECIAAoApjiASABRw0BC0EAIQIgAEHw4AFqKAIARQ0AIABBkOEBahBDCyACCycBAX8QVyIERQRAQUAPCyAEIAAgASACIAMgBBBLEE8hACAEEFYgAAs/AQF/AkACQAJAIAAoAqDiAUEBaiIBQQJLDQAgAUEBaw4CAAECCyAAEDBBAA8LIABBADYCoOIBCyAAKAKU4gELvAMCB38BfiMAQRBrIgkkAEG4fyEGAkAgBCgCACIIQQVBCSAAKALs4QEiBRtJDQAgAygCACIHQQFBBSAFGyAFEC8iBRADBEAgBSEGDAELIAggBUEDakkNACAAIAcgBRBJIgYQAw0AIAEgAmohCiAAQZDhAWohCyAIIAVrIQIgBSAHaiEHIAEhBQNAIAcgAiAJECwiBhADDQEgAkF9aiICIAZJBEBBuH8hBgwCCyAJKAIAIghBAksEQEFsIQYMAgsgB0EDaiEHAn8CQAJAAkAgCEEBaw4CAgABCyAAIAUgCiAFayAHIAYQSAwCCyAFIAogBWsgByAGEEcMAQsgBSAKIAVrIActAAAgCSgCCBBGCyIIEAMEQCAIIQYMAgsgACgC8OABBEAgCyAFIAgQRQsgAiAGayECIAYgB2ohByAFIAhqIQUgCSgCBEUNAAsgACkD0OABIgxCf1IEQEFsIQYgDCAFIAFrrFINAQsgACgC8OABBEBBaiEGIAJBBEkNASALEEQhDCAHKAAAIAynRw0BIAdBBGohByACQXxqIQILIAMgBzYCACAEIAI2AgAgBSABayEGCyAJQRBqJAAgBgsuACAAECsCf0EAQQAQAw0AGiABRSACRXJFBEBBYiAAIAEgAhA9EAMNARoLQQALCzcAIAEEQCAAIAAoAsTgASABKAIEIAEoAghqRzYCnOIBCyAAECtBABADIAFFckUEQCAAIAEQWwsL0QIBB38jAEEQayIGJAAgBiAENgIIIAYgAzYCDCAFBEAgBSgCBCEKIAUoAgghCQsgASEIAkACQANAIAAoAuzhARAWIQsCQANAIAQgC0kNASADKAAAQXBxQdDUtMIBRgRAIAMgBBAiIgcQAw0EIAQgB2shBCADIAdqIQMMAQsLIAYgAzYCDCAGIAQ2AggCQCAFBEAgACAFEE5BACEHQQAQA0UNAQwFCyAAIAogCRBNIgcQAw0ECyAAIAgQUCAMQQFHQQAgACAIIAIgBkEMaiAGQQhqEEwiByIDa0EAIAMQAxtBCkdyRQRAQbh/IQcMBAsgBxADDQMgAiAHayECIAcgCGohCEEBIQwgBigCDCEDIAYoAgghBAwBCwsgBiADNgIMIAYgBDYCCEG4fyEHIAQNASAIIAFrIQcMAQsgBiADNgIMIAYgBDYCCAsgBkEQaiQAIAcLRgECfyABIAAoArjgASICRwRAIAAgAjYCxOABIAAgATYCuOABIAAoArzgASEDIAAgATYCvOABIAAgASADIAJrajYCwOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", tA = new fA();
|
|
1012
|
+
class yA extends DA {
|
|
1013
|
+
constructor(J) {
|
|
1014
|
+
super(), this.planarConfiguration = typeof J.PlanarConfiguration < "u" ? J.PlanarConfiguration : 1, this.samplesPerPixel = typeof J.SamplesPerPixel < "u" ? J.SamplesPerPixel : 1, this.addCompression = J.LercParameters[oA.AddCompression];
|
|
1015
|
+
}
|
|
1016
|
+
decodeBlock(J) {
|
|
1017
|
+
switch (this.addCompression) {
|
|
1018
|
+
case gA.None:
|
|
1019
|
+
break;
|
|
1020
|
+
case gA.Deflate:
|
|
1021
|
+
J = sA(new Uint8Array(J)).buffer;
|
|
1022
|
+
break;
|
|
1023
|
+
case gA.Zstandard:
|
|
1024
|
+
J = tA.decode(new Uint8Array(J)).buffer;
|
|
1025
|
+
break;
|
|
1026
|
+
default:
|
|
1027
|
+
throw new Error(`Unsupported LERC additional compression method identifier: ${this.addCompression}`);
|
|
1028
|
+
}
|
|
1029
|
+
return QA.decode(J, { returnPixelInterleavedDims: this.planarConfiguration === 1 }).pixels[0].buffer;
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
1032
|
+
export {
|
|
1033
|
+
yA as default,
|
|
1034
|
+
tA as zstd
|
|
1035
|
+
};
|