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.
@@ -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
- if (depth == 8) {
138
- for (var i = 0; i < qarea; i += 4) {
139
- bf[i] = data[i];
140
- bf[i + 1] = data[i + 1];
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
- if (depth == 16) {
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
- for (var i = 0; i < area; i++) {
158
- var ti = i * 3;
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
- if (depth == 16) {
164
- for (var i = 0; i < area; i++) {
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
- if (depth == 8) {
175
- for (var i = 0; i < area; i++) {
176
- var qi = i << 2,
177
- ti = i * 3;
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
- if (depth == 16) {
184
- for (var i = 0; i < area; i++) {
185
- var qi = i << 2,
186
- ti = i * 6;
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
- for (var y = 0; y < h; y++) {
200
- var s0 = y * bpl,
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
- if (depth == 2) {
216
- for (var y = 0; y < h; y++) {
217
- var s0 = y * bpl,
218
- t0 = y * w;
219
-
220
- for (var i = 0; i < w; i++) {
221
- var qi = t0 + i << 2,
222
- j = data[s0 + (i >> 2)] >> 6 - ((i & 3) << 1) & 3,
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
- if (depth == 4) {
233
- for (var y = 0; y < h; y++) {
234
- var s0 = y * bpl,
235
- t0 = y * w;
236
-
237
- for (var i = 0; i < w; i++) {
238
- var qi = t0 + i << 2,
239
- j = data[s0 + (i >> 1)] >> 4 - ((i & 1) << 2) & 15,
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
- if (depth == 8) {
250
- for (var i = 0; i < area; i++) {
251
- var qi = i << 2,
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
- for (var i = 0; i < area; i++) {
264
- var qi = i << 2,
265
- di = i << 1,
266
- gr = data[di];
267
- bf[qi] = gr;
268
- bf[qi + 1] = gr;
269
- bf[qi + 2] = gr;
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
- if (depth == 16) {
275
- for (var i = 0; i < area; i++) {
276
- var qi = i << 2,
277
- di = i << 2,
278
- gr = data[di];
279
- bf[qi] = gr;
280
- bf[qi + 1] = gr;
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
- if (depth == 1) {
294
- for (var x = 0; x < w; x++) {
295
- var gr = 255 * (data[off + (x >>> 3)] >>> 7 - (x & 7) & 1),
296
- al = gr == tr * 255 ? 0 : 255;
297
- bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
298
- }
299
- } else if (depth == 2) {
300
- for (var x = 0; x < w; x++) {
301
- var gr = 85 * (data[off + (x >>> 2)] >>> 6 - ((x & 3) << 1) & 3),
302
- al = gr == tr * 85 ? 0 : 255;
303
- bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
304
- }
305
- } else if (depth == 4) {
306
- for (var x = 0; x < w; x++) {
307
- var gr = 17 * (data[off + (x >>> 1)] >>> 4 - ((x & 1) << 2) & 15),
308
- al = gr == tr * 17 ? 0 : 255;
309
- bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
310
- }
311
- } else if (depth == 8) {
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
- var keyw = bin.readASCII(data, offset, nz - offset);
408
- var text,
409
- tl = offset + len - nz - 1;
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
- var keyw = bin.readASCII(data, off, nz - off);
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 text,
436
- tl = len - (off - offset);
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] = bin.readUint(data, offset) / 100000;
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
- if (N[l + 1] != 0) {
744
- var M = l >> 1,
745
- I = N[l + 1],
746
- e = M << 4 | I,
747
- b = W - I,
748
- Z = N[l] << b,
749
- m = Z + (1 << b);
750
-
751
- while (Z != m) {
752
- var J = A[Z] >>> 15 - W;
753
- R[J] = e;
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
- var val = data[cdi >> 3];
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
- var val = data[cdi >> 3];
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
- var val = data[cdi >> 3];
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
- for (var x = 0; x < w; x++) {
1104
- if (xoff >= 0 && yoff >= 0) {
1105
- si = y * sw + x << 2;
1106
- ti = (yoff + y) * tw + xoff + x << 2;
1107
- } else {
1108
- si = (-yoff + y) * sw - xoff + x << 2;
1109
- ti = y * tw + x << 2;
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
- if (mode == 0) {
1113
- tb[ti] = sb[si];
1114
- tb[ti + 1] = sb[si + 1];
1115
- tb[ti + 2] = sb[si + 2];
1116
- tb[ti + 3] = sb[si + 3];
1117
- } else if (mode == 1) {
1118
- var fa = sb[si + 3] * (1 / 255),
1119
- fr = sb[si] * fa,
1120
- fg = sb[si + 1] * fa,
1121
- fb = sb[si + 2] * fa;
1122
- var ba = tb[ti + 3] * (1 / 255),
1123
- br = tb[ti] * ba,
1124
- bg = tb[ti + 1] * ba,
1125
- bb = tb[ti + 2] * ba;
1126
- var ifa = 1 - fa,
1127
- oa = fa + ba * ifa,
1128
- ioa = oa == 0 ? 0 : 1 / oa;
1129
- tb[ti + 3] = 255 * oa;
1130
- tb[ti + 0] = (fr + br * ifa) * ioa;
1131
- tb[ti + 1] = (fg + bg * ifa) * ioa;
1132
- tb[ti + 2] = (fb + bb * ifa) * ioa;
1133
- } else if (mode == 2) {
1134
- // copy only differences, otherwise zero
1135
- var fa = sb[si + 3],
1136
- fr = sb[si],
1137
- fg = sb[si + 1],
1138
- fb = sb[si + 2];
1139
- var ba = tb[ti + 3],
1140
- br = tb[ti],
1141
- bg = tb[ti + 1],
1142
- bb = tb[ti + 2];
1143
-
1144
- if (fa == ba && fr == br && fg == bg && fb == bb) {
1145
- tb[ti] = 0;
1146
- tb[ti + 1] = 0;
1147
- tb[ti + 2] = 0;
1148
- tb[ti + 3] = 0;
1149
- } else {
1150
- tb[ti] = fr;
1151
- tb[ti + 1] = fg;
1152
- tb[ti + 2] = fb;
1153
- tb[ti + 3] = fa;
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.6",
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": "^9.0.2",
25
+ "chevrotain": "^10.1.1",
26
26
  "draco3d": "^1.4.1",
27
27
  "fflate": "^0.6.9",
28
28
  "ktx-parse": "^0.2.1",