three-stdlib 2.8.6 → 2.8.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -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",