three-stdlib 2.8.6 → 2.8.9
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/controls/PointerLockControls.cjs.js +1 -1
- package/controls/PointerLockControls.d.ts +3 -3
- package/controls/PointerLockControls.js +12 -10
- package/index.cjs.js +1 -1
- package/loaders/RGBELoader.cjs.js +1 -1
- package/loaders/RGBELoader.js +3 -3
- package/loaders/RGBMLoader.cjs.js +1 -1
- package/loaders/RGBMLoader.js +190 -268
- package/package.json +2 -2
package/loaders/RGBMLoader.js
CHANGED
|
@@ -107,12 +107,7 @@ UPNG.toRGBA8 = function (out) {
|
|
|
107
107
|
if (i != 0) for (var j = 0; j < len; j++) prev[j] = img[j];
|
|
108
108
|
if (frm.blend == 0) UPNG._copyTile(fdata, fw, fh, img, w, h, fx, fy, 0);else if (frm.blend == 1) UPNG._copyTile(fdata, fw, fh, img, w, h, fx, fy, 1);
|
|
109
109
|
frms.push(img.buffer.slice(0));
|
|
110
|
-
|
|
111
|
-
if (frm.dispose == 0) ; else if (frm.dispose == 1) {
|
|
112
|
-
UPNG._copyTile(empty, fw, fh, img, w, h, fx, fy, 0);
|
|
113
|
-
} else if (frm.dispose == 2) {
|
|
114
|
-
for (var j = 0; j < len; j++) img[j] = prev[j];
|
|
115
|
-
}
|
|
110
|
+
if (frm.dispose == 1) UPNG._copyTile(empty, fw, fh, img, w, h, fx, fy, 0);else if (frm.dispose == 2) for (var j = 0; j < len; j++) img[j] = prev[j];
|
|
116
111
|
}
|
|
117
112
|
|
|
118
113
|
return frms;
|
|
@@ -133,60 +128,43 @@ UPNG.toRGBA8.decodeImage = function (data, w, h, out) {
|
|
|
133
128
|
if (ctype == 6) {
|
|
134
129
|
// RGB + alpha
|
|
135
130
|
var qarea = area << 2;
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
bf[i + 2] = data[i + 2];
|
|
142
|
-
bf[i + 3] = data[i + 3];
|
|
143
|
-
}
|
|
131
|
+
if (depth == 8) for (var i = 0; i < qarea; i += 4) {
|
|
132
|
+
bf[i] = data[i];
|
|
133
|
+
bf[i + 1] = data[i + 1];
|
|
134
|
+
bf[i + 2] = data[i + 2];
|
|
135
|
+
bf[i + 3] = data[i + 3];
|
|
144
136
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
for (var i = 0; i < qarea; i++) {
|
|
148
|
-
bf[i] = data[i << 1];
|
|
149
|
-
}
|
|
137
|
+
if (depth == 16) for (var i = 0; i < qarea; i++) {
|
|
138
|
+
bf[i] = data[i << 1];
|
|
150
139
|
}
|
|
151
140
|
} else if (ctype == 2) {
|
|
152
141
|
// RGB
|
|
153
142
|
var ts = out.tabs['tRNS'];
|
|
154
143
|
|
|
155
144
|
if (ts == null) {
|
|
156
|
-
if (depth == 8) {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
bf32[i] = 255 << 24 | data[ti + 2] << 16 | data[ti + 1] << 8 | data[ti];
|
|
160
|
-
}
|
|
145
|
+
if (depth == 8) for (var i = 0; i < area; i++) {
|
|
146
|
+
var ti = i * 3;
|
|
147
|
+
bf32[i] = 255 << 24 | data[ti + 2] << 16 | data[ti + 1] << 8 | data[ti];
|
|
161
148
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
var ti = i * 6;
|
|
166
|
-
bf32[i] = 255 << 24 | data[ti + 4] << 16 | data[ti + 2] << 8 | data[ti];
|
|
167
|
-
}
|
|
149
|
+
if (depth == 16) for (var i = 0; i < area; i++) {
|
|
150
|
+
var ti = i * 6;
|
|
151
|
+
bf32[i] = 255 << 24 | data[ti + 4] << 16 | data[ti + 2] << 8 | data[ti];
|
|
168
152
|
}
|
|
169
153
|
} else {
|
|
170
154
|
var tr = ts[0],
|
|
171
155
|
tg = ts[1],
|
|
172
156
|
tb = ts[2];
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
bf32[i] = 255 << 24 | data[ti + 2] << 16 | data[ti + 1] << 8 | data[ti];
|
|
179
|
-
if (data[ti] == tr && data[ti + 1] == tg && data[ti + 2] == tb) bf[qi + 3] = 0;
|
|
180
|
-
}
|
|
157
|
+
if (depth == 8) for (var i = 0; i < area; i++) {
|
|
158
|
+
var qi = i << 2,
|
|
159
|
+
ti = i * 3;
|
|
160
|
+
bf32[i] = 255 << 24 | data[ti + 2] << 16 | data[ti + 1] << 8 | data[ti];
|
|
161
|
+
if (data[ti] == tr && data[ti + 1] == tg && data[ti + 2] == tb) bf[qi + 3] = 0;
|
|
181
162
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
bf32[i] = 255 << 24 | data[ti + 4] << 16 | data[ti + 2] << 8 | data[ti];
|
|
188
|
-
if (rs(data, ti) == tr && rs(data, ti + 2) == tg && rs(data, ti + 4) == tb) bf[qi + 3] = 0;
|
|
189
|
-
}
|
|
163
|
+
if (depth == 16) for (var i = 0; i < area; i++) {
|
|
164
|
+
var qi = i << 2,
|
|
165
|
+
ti = i * 6;
|
|
166
|
+
bf32[i] = 255 << 24 | data[ti + 4] << 16 | data[ti + 2] << 8 | data[ti];
|
|
167
|
+
if (rs(data, ti) == tr && rs(data, ti + 2) == tg && rs(data, ti + 4) == tb) bf[qi + 3] = 0;
|
|
190
168
|
}
|
|
191
169
|
}
|
|
192
170
|
} else if (ctype == 3) {
|
|
@@ -195,61 +173,41 @@ UPNG.toRGBA8.decodeImage = function (data, w, h, out) {
|
|
|
195
173
|
ap = out.tabs['tRNS'],
|
|
196
174
|
tl = ap ? ap.length : 0; //console.log(p, ap);
|
|
197
175
|
|
|
198
|
-
if (depth == 1) {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
t0 = y * w;
|
|
202
|
-
|
|
203
|
-
for (var i = 0; i < w; i++) {
|
|
204
|
-
var qi = t0 + i << 2,
|
|
205
|
-
j = data[s0 + (i >> 3)] >> 7 - ((i & 7) << 0) & 1,
|
|
206
|
-
cj = 3 * j;
|
|
207
|
-
bf[qi] = p[cj];
|
|
208
|
-
bf[qi + 1] = p[cj + 1];
|
|
209
|
-
bf[qi + 2] = p[cj + 2];
|
|
210
|
-
bf[qi + 3] = j < tl ? ap[j] : 255;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
176
|
+
if (depth == 1) for (var y = 0; y < h; y++) {
|
|
177
|
+
var s0 = y * bpl,
|
|
178
|
+
t0 = y * w;
|
|
214
179
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
cj = 3 * j;
|
|
224
|
-
bf[qi] = p[cj];
|
|
225
|
-
bf[qi + 1] = p[cj + 1];
|
|
226
|
-
bf[qi + 2] = p[cj + 2];
|
|
227
|
-
bf[qi + 3] = j < tl ? ap[j] : 255;
|
|
228
|
-
}
|
|
180
|
+
for (var i = 0; i < w; i++) {
|
|
181
|
+
var qi = t0 + i << 2,
|
|
182
|
+
j = data[s0 + (i >> 3)] >> 7 - ((i & 7) << 0) & 1,
|
|
183
|
+
cj = 3 * j;
|
|
184
|
+
bf[qi] = p[cj];
|
|
185
|
+
bf[qi + 1] = p[cj + 1];
|
|
186
|
+
bf[qi + 2] = p[cj + 2];
|
|
187
|
+
bf[qi + 3] = j < tl ? ap[j] : 255;
|
|
229
188
|
}
|
|
230
189
|
}
|
|
190
|
+
if (depth == 2) for (var y = 0; y < h; y++) {
|
|
191
|
+
var s0 = y * bpl,
|
|
192
|
+
t0 = y * w;
|
|
231
193
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
cj = 3 * j;
|
|
241
|
-
bf[qi] = p[cj];
|
|
242
|
-
bf[qi + 1] = p[cj + 1];
|
|
243
|
-
bf[qi + 2] = p[cj + 2];
|
|
244
|
-
bf[qi + 3] = j < tl ? ap[j] : 255;
|
|
245
|
-
}
|
|
194
|
+
for (var i = 0; i < w; i++) {
|
|
195
|
+
var qi = t0 + i << 2,
|
|
196
|
+
j = data[s0 + (i >> 2)] >> 6 - ((i & 3) << 1) & 3,
|
|
197
|
+
cj = 3 * j;
|
|
198
|
+
bf[qi] = p[cj];
|
|
199
|
+
bf[qi + 1] = p[cj + 1];
|
|
200
|
+
bf[qi + 2] = p[cj + 2];
|
|
201
|
+
bf[qi + 3] = j < tl ? ap[j] : 255;
|
|
246
202
|
}
|
|
247
203
|
}
|
|
204
|
+
if (depth == 4) for (var y = 0; y < h; y++) {
|
|
205
|
+
var s0 = y * bpl,
|
|
206
|
+
t0 = y * w;
|
|
248
207
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
j = data[i],
|
|
208
|
+
for (var i = 0; i < w; i++) {
|
|
209
|
+
var qi = t0 + i << 2,
|
|
210
|
+
j = data[s0 + (i >> 1)] >> 4 - ((i & 1) << 2) & 15,
|
|
253
211
|
cj = 3 * j;
|
|
254
212
|
bf[qi] = p[cj];
|
|
255
213
|
bf[qi + 1] = p[cj + 1];
|
|
@@ -257,30 +215,34 @@ UPNG.toRGBA8.decodeImage = function (data, w, h, out) {
|
|
|
257
215
|
bf[qi + 3] = j < tl ? ap[j] : 255;
|
|
258
216
|
}
|
|
259
217
|
}
|
|
218
|
+
if (depth == 8) for (var i = 0; i < area; i++) {
|
|
219
|
+
var qi = i << 2,
|
|
220
|
+
j = data[i],
|
|
221
|
+
cj = 3 * j;
|
|
222
|
+
bf[qi] = p[cj];
|
|
223
|
+
bf[qi + 1] = p[cj + 1];
|
|
224
|
+
bf[qi + 2] = p[cj + 2];
|
|
225
|
+
bf[qi + 3] = j < tl ? ap[j] : 255;
|
|
226
|
+
}
|
|
260
227
|
} else if (ctype == 4) {
|
|
261
228
|
// gray + alpha
|
|
262
|
-
if (depth == 8) {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
bf[qi + 3] = data[di + 1];
|
|
271
|
-
}
|
|
229
|
+
if (depth == 8) for (var i = 0; i < area; i++) {
|
|
230
|
+
var qi = i << 2,
|
|
231
|
+
di = i << 1,
|
|
232
|
+
gr = data[di];
|
|
233
|
+
bf[qi] = gr;
|
|
234
|
+
bf[qi + 1] = gr;
|
|
235
|
+
bf[qi + 2] = gr;
|
|
236
|
+
bf[qi + 3] = data[di + 1];
|
|
272
237
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
bf[qi + 2] = gr;
|
|
282
|
-
bf[qi + 3] = data[di + 2];
|
|
283
|
-
}
|
|
238
|
+
if (depth == 16) for (var i = 0; i < area; i++) {
|
|
239
|
+
var qi = i << 2,
|
|
240
|
+
di = i << 2,
|
|
241
|
+
gr = data[di];
|
|
242
|
+
bf[qi] = gr;
|
|
243
|
+
bf[qi + 1] = gr;
|
|
244
|
+
bf[qi + 2] = gr;
|
|
245
|
+
bf[qi + 3] = data[di + 2];
|
|
284
246
|
}
|
|
285
247
|
} else if (ctype == 0) {
|
|
286
248
|
// gray
|
|
@@ -289,37 +251,26 @@ UPNG.toRGBA8.decodeImage = function (data, w, h, out) {
|
|
|
289
251
|
for (var y = 0; y < h; y++) {
|
|
290
252
|
var off = y * bpl,
|
|
291
253
|
to = y * w;
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
for (var x = 0; x < w; x++) {
|
|
313
|
-
var gr = data[off + x],
|
|
314
|
-
al = gr == tr ? 0 : 255;
|
|
315
|
-
bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
|
|
316
|
-
}
|
|
317
|
-
} else if (depth == 16) {
|
|
318
|
-
for (var x = 0; x < w; x++) {
|
|
319
|
-
var gr = data[off + (x << 1)],
|
|
320
|
-
al = rs(data, off + (x << 1)) == tr ? 0 : 255;
|
|
321
|
-
bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
|
|
322
|
-
}
|
|
254
|
+
if (depth == 1) for (var x = 0; x < w; x++) {
|
|
255
|
+
var gr = 255 * (data[off + (x >>> 3)] >>> 7 - (x & 7) & 1),
|
|
256
|
+
al = gr == tr * 255 ? 0 : 255;
|
|
257
|
+
bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
|
|
258
|
+
} else if (depth == 2) for (var x = 0; x < w; x++) {
|
|
259
|
+
var gr = 85 * (data[off + (x >>> 2)] >>> 6 - ((x & 3) << 1) & 3),
|
|
260
|
+
al = gr == tr * 85 ? 0 : 255;
|
|
261
|
+
bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
|
|
262
|
+
} else if (depth == 4) for (var x = 0; x < w; x++) {
|
|
263
|
+
var gr = 17 * (data[off + (x >>> 1)] >>> 4 - ((x & 1) << 2) & 15),
|
|
264
|
+
al = gr == tr * 17 ? 0 : 255;
|
|
265
|
+
bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
|
|
266
|
+
} else if (depth == 8) for (var x = 0; x < w; x++) {
|
|
267
|
+
var gr = data[off + x],
|
|
268
|
+
al = gr == tr ? 0 : 255;
|
|
269
|
+
bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
|
|
270
|
+
} else if (depth == 16) for (var x = 0; x < w; x++) {
|
|
271
|
+
var gr = data[off + (x << 1)],
|
|
272
|
+
al = rs(data, off + (x << 1)) == tr ? 0 : 255;
|
|
273
|
+
bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
|
|
323
274
|
}
|
|
324
275
|
}
|
|
325
276
|
} //console.log(Date.now()-time);
|
|
@@ -344,9 +295,10 @@ UPNG.decode = function (buff) {
|
|
|
344
295
|
var fd,
|
|
345
296
|
foff = 0; // frames
|
|
346
297
|
|
|
298
|
+
var text, keyw, bfr;
|
|
347
299
|
var mgck = [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a];
|
|
348
300
|
|
|
349
|
-
for (var i = 0; i < 8; i++) if (data[i] != mgck[i]) throw 'The input is not a PNG file!';
|
|
301
|
+
for (var i = 0; i < 8; i++) if (data[i] != mgck[i]) throw new Error('The input is not a PNG file!');
|
|
350
302
|
|
|
351
303
|
while (offset < data.length) {
|
|
352
304
|
var len = bin.readUint(data, offset);
|
|
@@ -404,25 +356,19 @@ UPNG.decode = function (buff) {
|
|
|
404
356
|
} else if (type == 'tEXt' || type == 'zTXt') {
|
|
405
357
|
if (out.tabs[type] == null) out.tabs[type] = {};
|
|
406
358
|
var nz = bin.nextZero(data, offset);
|
|
407
|
-
|
|
408
|
-
var
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
if (type == 'tEXt') {
|
|
412
|
-
text = bin.readASCII(data, nz + 1, tl);
|
|
413
|
-
} else {
|
|
414
|
-
var bfr = UPNG.decode._inflate(data.slice(nz + 2, nz + 2 + tl));
|
|
415
|
-
|
|
359
|
+
keyw = bin.readASCII(data, offset, nz - offset);
|
|
360
|
+
var tl = offset + len - nz - 1;
|
|
361
|
+
if (type == 'tEXt') text = bin.readASCII(data, nz + 1, tl);else {
|
|
362
|
+
bfr = UPNG.decode._inflate(data.slice(nz + 2, nz + 2 + tl));
|
|
416
363
|
text = bin.readUTF8(bfr, 0, bfr.length);
|
|
417
364
|
}
|
|
418
|
-
|
|
419
365
|
out.tabs[type][keyw] = text;
|
|
420
366
|
} else if (type == 'iTXt') {
|
|
421
367
|
if (out.tabs[type] == null) out.tabs[type] = {};
|
|
422
368
|
var nz = 0,
|
|
423
369
|
off = offset;
|
|
424
370
|
nz = bin.nextZero(data, off);
|
|
425
|
-
|
|
371
|
+
keyw = bin.readASCII(data, off, nz - off);
|
|
426
372
|
off = nz + 1;
|
|
427
373
|
var cflag = data[off];
|
|
428
374
|
off += 2;
|
|
@@ -432,17 +378,11 @@ UPNG.decode = function (buff) {
|
|
|
432
378
|
nz = bin.nextZero(data, off);
|
|
433
379
|
bin.readUTF8(data, off, nz - off);
|
|
434
380
|
off = nz + 1;
|
|
435
|
-
var
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
if (cflag == 0) {
|
|
439
|
-
text = bin.readUTF8(data, off, tl);
|
|
440
|
-
} else {
|
|
441
|
-
var bfr = UPNG.decode._inflate(data.slice(off, off + tl));
|
|
442
|
-
|
|
381
|
+
var tl = len - (off - offset);
|
|
382
|
+
if (cflag == 0) text = bin.readUTF8(data, off, tl);else {
|
|
383
|
+
bfr = UPNG.decode._inflate(data.slice(off, off + tl));
|
|
443
384
|
text = bin.readUTF8(bfr, 0, bfr.length);
|
|
444
385
|
}
|
|
445
|
-
|
|
446
386
|
out.tabs[type][keyw] = text;
|
|
447
387
|
} else if (type == 'PLTE') {
|
|
448
388
|
out.tabs[type] = bin.readBytes(data, offset, len);
|
|
@@ -453,18 +393,8 @@ UPNG.decode = function (buff) {
|
|
|
453
393
|
for (var i = 0; i < pl; i++) out.tabs[type].push(rUs(data, offset + i * 2));
|
|
454
394
|
} else if (type == 'tRNS') {
|
|
455
395
|
if (out.ctype == 3) out.tabs[type] = bin.readBytes(data, offset, len);else if (out.ctype == 0) out.tabs[type] = rUs(data, offset);else if (out.ctype == 2) out.tabs[type] = [rUs(data, offset), rUs(data, offset + 2), rUs(data, offset + 4)]; //else console.log("tRNS for unsupported color type",out.ctype, len);
|
|
456
|
-
} else if (type == 'gAMA') {
|
|
457
|
-
out.tabs[type] =
|
|
458
|
-
} else if (type == 'sRGB') {
|
|
459
|
-
out.tabs[type] = data[offset];
|
|
460
|
-
} else if (type == 'bKGD') {
|
|
461
|
-
if (out.ctype == 0 || out.ctype == 4) {
|
|
462
|
-
out.tabs[type] = [rUs(data, offset)];
|
|
463
|
-
} else if (out.ctype == 2 || out.ctype == 6) {
|
|
464
|
-
out.tabs[type] = [rUs(data, offset), rUs(data, offset + 2), rUs(data, offset + 4)];
|
|
465
|
-
} else if (out.ctype == 3) {
|
|
466
|
-
out.tabs[type] = data[offset];
|
|
467
|
-
}
|
|
396
|
+
} else if (type == 'gAMA') out.tabs[type] = bin.readUint(data, offset) / 100000;else if (type == 'sRGB') out.tabs[type] = data[offset];else if (type == 'bKGD') {
|
|
397
|
+
if (out.ctype == 0 || out.ctype == 4) out.tabs[type] = [rUs(data, offset)];else if (out.ctype == 2 || out.ctype == 6) out.tabs[type] = [rUs(data, offset), rUs(data, offset + 2), rUs(data, offset + 4)];else if (out.ctype == 3) out.tabs[type] = data[offset];
|
|
468
398
|
} else if (type == 'IEND') {
|
|
469
399
|
break;
|
|
470
400
|
} //else { console.log("unknown chunk type", type, len); out.tabs[type]=data.slice(offset,offset+len); }
|
|
@@ -739,20 +669,18 @@ UPNG.inflateRaw = function () {
|
|
|
739
669
|
n = H.H.m,
|
|
740
670
|
A = n.r;
|
|
741
671
|
|
|
742
|
-
for (var l = 0; l < V; l += 2) {
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
Z++;
|
|
755
|
-
}
|
|
672
|
+
for (var l = 0; l < V; l += 2) if (N[l + 1] != 0) {
|
|
673
|
+
var M = l >> 1,
|
|
674
|
+
I = N[l + 1],
|
|
675
|
+
e = M << 4 | I,
|
|
676
|
+
b = W - I,
|
|
677
|
+
Z = N[l] << b,
|
|
678
|
+
m = Z + (1 << b);
|
|
679
|
+
|
|
680
|
+
while (Z != m) {
|
|
681
|
+
var J = A[Z] >>> 15 - W;
|
|
682
|
+
R[J] = e;
|
|
683
|
+
Z++;
|
|
756
684
|
}
|
|
757
685
|
}
|
|
758
686
|
};
|
|
@@ -915,6 +843,7 @@ UPNG.decode._readInterlace = function (data, out) {
|
|
|
915
843
|
|
|
916
844
|
var y = 0,
|
|
917
845
|
row = starting_row[pass];
|
|
846
|
+
var val;
|
|
918
847
|
|
|
919
848
|
while (row < h) {
|
|
920
849
|
var col = starting_col[pass];
|
|
@@ -922,19 +851,19 @@ UPNG.decode._readInterlace = function (data, out) {
|
|
|
922
851
|
|
|
923
852
|
while (col < w) {
|
|
924
853
|
if (bpp == 1) {
|
|
925
|
-
|
|
854
|
+
val = data[cdi >> 3];
|
|
926
855
|
val = val >> 7 - (cdi & 7) & 1;
|
|
927
856
|
img[row * bpl + (col >> 3)] |= val << 7 - ((col & 7) << 0);
|
|
928
857
|
}
|
|
929
858
|
|
|
930
859
|
if (bpp == 2) {
|
|
931
|
-
|
|
860
|
+
val = data[cdi >> 3];
|
|
932
861
|
val = val >> 6 - (cdi & 7) & 3;
|
|
933
862
|
img[row * bpl + (col >> 2)] |= val << 6 - ((col & 3) << 1);
|
|
934
863
|
}
|
|
935
864
|
|
|
936
865
|
if (bpp == 4) {
|
|
937
|
-
|
|
866
|
+
val = data[cdi >> 3];
|
|
938
867
|
val = val >> 4 - (cdi & 7) & 15;
|
|
939
868
|
img[row * bpl + (col >> 1)] |= val << 4 - ((col & 1) << 2);
|
|
940
869
|
}
|
|
@@ -983,10 +912,7 @@ UPNG.decode._filterZero = function (data, out, off, w, h) {
|
|
|
983
912
|
di = i + y + 1;
|
|
984
913
|
type = data[di - 1];
|
|
985
914
|
x = 0;
|
|
986
|
-
|
|
987
|
-
if (type == 0) {
|
|
988
|
-
for (; x < bpl; x++) data[i + x] = data[di + x];
|
|
989
|
-
} else if (type == 1) {
|
|
915
|
+
if (type == 0) for (; x < bpl; x++) data[i + x] = data[di + x];else if (type == 1) {
|
|
990
916
|
for (; x < bpp; x++) data[i + x] = data[di + x];
|
|
991
917
|
|
|
992
918
|
for (; x < bpl; x++) data[i + x] = data[di + x] + data[i + x - bpp];
|
|
@@ -999,9 +925,7 @@ UPNG.decode._filterZero = function (data, out, off, w, h) {
|
|
|
999
925
|
} else {
|
|
1000
926
|
for (; x < bpp; x++) data[i + x] = data[di + x] + paeth(0, data[i + x - bpl], 0);
|
|
1001
927
|
|
|
1002
|
-
for (; x < bpl; x++)
|
|
1003
|
-
data[i + x] = data[di + x] + paeth(data[i + x - bpp], data[i + x - bpl], data[i + x - bpp - bpl]);
|
|
1004
|
-
}
|
|
928
|
+
for (; x < bpl; x++) data[i + x] = data[di + x] + paeth(data[i + x - bpp], data[i + x - bpl], data[i + x - bpp - bpl]);
|
|
1005
929
|
}
|
|
1006
930
|
}
|
|
1007
931
|
|
|
@@ -1099,73 +1023,71 @@ UPNG._copyTile = function (sb, sw, sh, tb, tw, th, xoff, yoff, mode) {
|
|
|
1099
1023
|
var si = 0,
|
|
1100
1024
|
ti = 0;
|
|
1101
1025
|
|
|
1102
|
-
for (var y = 0; y < h; y++) {
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
}
|
|
1026
|
+
for (var y = 0; y < h; y++) for (var x = 0; x < w; x++) {
|
|
1027
|
+
if (xoff >= 0 && yoff >= 0) {
|
|
1028
|
+
si = y * sw + x << 2;
|
|
1029
|
+
ti = (yoff + y) * tw + xoff + x << 2;
|
|
1030
|
+
} else {
|
|
1031
|
+
si = (-yoff + y) * sw - xoff + x << 2;
|
|
1032
|
+
ti = y * tw + x << 2;
|
|
1033
|
+
}
|
|
1111
1034
|
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
}
|
|
1155
|
-
} else if (mode == 3) {
|
|
1156
|
-
// check if can be blended
|
|
1157
|
-
var fa = sb[si + 3],
|
|
1158
|
-
fr = sb[si],
|
|
1159
|
-
fg = sb[si + 1],
|
|
1160
|
-
fb = sb[si + 2];
|
|
1161
|
-
var ba = tb[ti + 3],
|
|
1162
|
-
br = tb[ti],
|
|
1163
|
-
bg = tb[ti + 1],
|
|
1164
|
-
bb = tb[ti + 2];
|
|
1165
|
-
if (fa == ba && fr == br && fg == bg && fb == bb) continue; //if(fa!=255 && ba!=0) return false;
|
|
1166
|
-
|
|
1167
|
-
if (fa < 220 && ba > 20) return false;
|
|
1035
|
+
if (mode == 0) {
|
|
1036
|
+
tb[ti] = sb[si];
|
|
1037
|
+
tb[ti + 1] = sb[si + 1];
|
|
1038
|
+
tb[ti + 2] = sb[si + 2];
|
|
1039
|
+
tb[ti + 3] = sb[si + 3];
|
|
1040
|
+
} else if (mode == 1) {
|
|
1041
|
+
var fa = sb[si + 3] * (1 / 255),
|
|
1042
|
+
fr = sb[si] * fa,
|
|
1043
|
+
fg = sb[si + 1] * fa,
|
|
1044
|
+
fb = sb[si + 2] * fa;
|
|
1045
|
+
var ba = tb[ti + 3] * (1 / 255),
|
|
1046
|
+
br = tb[ti] * ba,
|
|
1047
|
+
bg = tb[ti + 1] * ba,
|
|
1048
|
+
bb = tb[ti + 2] * ba;
|
|
1049
|
+
var ifa = 1 - fa,
|
|
1050
|
+
oa = fa + ba * ifa,
|
|
1051
|
+
ioa = oa == 0 ? 0 : 1 / oa;
|
|
1052
|
+
tb[ti + 3] = 255 * oa;
|
|
1053
|
+
tb[ti + 0] = (fr + br * ifa) * ioa;
|
|
1054
|
+
tb[ti + 1] = (fg + bg * ifa) * ioa;
|
|
1055
|
+
tb[ti + 2] = (fb + bb * ifa) * ioa;
|
|
1056
|
+
} else if (mode == 2) {
|
|
1057
|
+
// copy only differences, otherwise zero
|
|
1058
|
+
var fa = sb[si + 3],
|
|
1059
|
+
fr = sb[si],
|
|
1060
|
+
fg = sb[si + 1],
|
|
1061
|
+
fb = sb[si + 2];
|
|
1062
|
+
var ba = tb[ti + 3],
|
|
1063
|
+
br = tb[ti],
|
|
1064
|
+
bg = tb[ti + 1],
|
|
1065
|
+
bb = tb[ti + 2];
|
|
1066
|
+
|
|
1067
|
+
if (fa == ba && fr == br && fg == bg && fb == bb) {
|
|
1068
|
+
tb[ti] = 0;
|
|
1069
|
+
tb[ti + 1] = 0;
|
|
1070
|
+
tb[ti + 2] = 0;
|
|
1071
|
+
tb[ti + 3] = 0;
|
|
1072
|
+
} else {
|
|
1073
|
+
tb[ti] = fr;
|
|
1074
|
+
tb[ti + 1] = fg;
|
|
1075
|
+
tb[ti + 2] = fb;
|
|
1076
|
+
tb[ti + 3] = fa;
|
|
1168
1077
|
}
|
|
1078
|
+
} else if (mode == 3) {
|
|
1079
|
+
// check if can be blended
|
|
1080
|
+
var fa = sb[si + 3],
|
|
1081
|
+
fr = sb[si],
|
|
1082
|
+
fg = sb[si + 1],
|
|
1083
|
+
fb = sb[si + 2];
|
|
1084
|
+
var ba = tb[ti + 3],
|
|
1085
|
+
br = tb[ti],
|
|
1086
|
+
bg = tb[ti + 1],
|
|
1087
|
+
bb = tb[ti + 2];
|
|
1088
|
+
if (fa == ba && fr == br && fg == bg && fb == bb) continue; //if(fa!=255 && ba!=0) return false;
|
|
1089
|
+
|
|
1090
|
+
if (fa < 220 && ba > 20) return false;
|
|
1169
1091
|
}
|
|
1170
1092
|
}
|
|
1171
1093
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "three-stdlib",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.9",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "stand-alone library of threejs examples",
|
|
6
6
|
"main": "index.cjs.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@babel/runtime": "^7.16.7",
|
|
24
24
|
"@webgpu/glslang": "^0.0.15",
|
|
25
|
-
"chevrotain": "^
|
|
25
|
+
"chevrotain": "^10.1.1",
|
|
26
26
|
"draco3d": "^1.4.1",
|
|
27
27
|
"fflate": "^0.6.9",
|
|
28
28
|
"ktx-parse": "^0.2.1",
|