emf-converter 4.4.16 → 4.5.0

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/index.js CHANGED
@@ -1210,7 +1210,7 @@ var require_decoder = __commonJS({
1210
1210
  }
1211
1211
  return code[0].children;
1212
1212
  }
1213
- function decodeScan(data, offset, frame2, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive, opts) {
1213
+ function decodeScan2(data, offset, frame2, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive, opts) {
1214
1214
  frame2.precision;
1215
1215
  frame2.samplesPerLine;
1216
1216
  frame2.scanLines;
@@ -1851,7 +1851,7 @@ var require_decoder = __commonJS({
1851
1851
  var spectralStart = data[offset++];
1852
1852
  var spectralEnd = data[offset++];
1853
1853
  var successiveApproximation = data[offset++];
1854
- var processed = decodeScan(
1854
+ var processed = decodeScan2(
1855
1855
  data,
1856
1856
  offset,
1857
1857
  frame2,
@@ -2305,14 +2305,14 @@ var require_uint8 = __commonJS({
2305
2305
  for (var i = 0; i < 8; i++) {
2306
2306
  bits[7 - i] = !!(_byte & 1 << i);
2307
2307
  }
2308
- return Object.keys(schema).reduce(function(res, key) {
2308
+ return Object.keys(schema).reduce(function(res2, key) {
2309
2309
  var def = schema[key];
2310
2310
  if (def.length) {
2311
- res[key] = subBitsTotal(bits, def.index, def.length);
2311
+ res2[key] = subBitsTotal(bits, def.index, def.length);
2312
2312
  } else {
2313
- res[key] = bits[def.index];
2313
+ res2[key] = bits[def.index];
2314
2314
  }
2315
- return res;
2315
+ return res2;
2316
2316
  }, {});
2317
2317
  };
2318
2318
  };
@@ -2921,13 +2921,13 @@ var require_trees = __commonJS({
2921
2921
  );
2922
2922
  }
2923
2923
  function bi_reverse(code, len) {
2924
- var res = 0;
2924
+ var res2 = 0;
2925
2925
  do {
2926
- res |= code & 1;
2926
+ res2 |= code & 1;
2927
2927
  code >>>= 1;
2928
- res <<= 1;
2928
+ res2 <<= 1;
2929
2929
  } while (--len > 0);
2930
- return res >>> 1;
2930
+ return res2 >>> 1;
2931
2931
  }
2932
2932
  function bi_flush(s) {
2933
2933
  if (s.bi_valid === 16) {
@@ -10312,10 +10312,10 @@ async function decodePng(bytes) {
10312
10312
  return { width, height, data: out };
10313
10313
  }
10314
10314
 
10315
- // src/jpeg-decoder.ts
10315
+ // src/jpeg-decoder-legacy.ts
10316
10316
  var import_jpeg_js = __toESM(require_jpeg_js());
10317
10317
  var options = { useTArray: true, formatAsRGBA: true, maxResolutionInMP: 67.108864, maxMemoryUsageInMB: 512 };
10318
- function decodeJpegPixels(bytes, colorTransform) {
10318
+ function decodeJpegPixelsLegacy(bytes, colorTransform) {
10319
10319
  let sampling = [];
10320
10320
  let adobeTransform;
10321
10321
  let adobeOffset = -1;
@@ -10372,6 +10372,600 @@ function decodeJpegPixels(bytes, colorTransform) {
10372
10372
  return { ...raw, data };
10373
10373
  }
10374
10374
 
10375
+ // src/jpeg-turbo.ts
10376
+ var ZIGZAG = [
10377
+ 0,
10378
+ 1,
10379
+ 8,
10380
+ 16,
10381
+ 9,
10382
+ 2,
10383
+ 3,
10384
+ 10,
10385
+ 17,
10386
+ 24,
10387
+ 32,
10388
+ 25,
10389
+ 18,
10390
+ 11,
10391
+ 4,
10392
+ 5,
10393
+ 12,
10394
+ 19,
10395
+ 26,
10396
+ 33,
10397
+ 40,
10398
+ 48,
10399
+ 41,
10400
+ 34,
10401
+ 27,
10402
+ 20,
10403
+ 13,
10404
+ 6,
10405
+ 7,
10406
+ 14,
10407
+ 21,
10408
+ 28,
10409
+ 35,
10410
+ 42,
10411
+ 49,
10412
+ 56,
10413
+ 57,
10414
+ 50,
10415
+ 43,
10416
+ 36,
10417
+ 29,
10418
+ 22,
10419
+ 15,
10420
+ 23,
10421
+ 30,
10422
+ 37,
10423
+ 44,
10424
+ 51,
10425
+ 58,
10426
+ 59,
10427
+ 52,
10428
+ 45,
10429
+ 38,
10430
+ 31,
10431
+ 39,
10432
+ 46,
10433
+ 53,
10434
+ 60,
10435
+ 61,
10436
+ 54,
10437
+ 47,
10438
+ 55,
10439
+ 62,
10440
+ 63
10441
+ ];
10442
+ function buildHuffman2(counts, values) {
10443
+ const maxcode = new Int32Array(18).fill(-1);
10444
+ const valptr = new Int32Array(17);
10445
+ const mincode = new Int32Array(17);
10446
+ let code = 0;
10447
+ let k = 0;
10448
+ for (let l = 1; l <= 16; l++) {
10449
+ valptr[l] = k;
10450
+ mincode[l] = code;
10451
+ code += counts[l - 1];
10452
+ k += counts[l - 1];
10453
+ maxcode[l] = counts[l - 1] ? code - 1 : -1;
10454
+ code <<= 1;
10455
+ }
10456
+ return { maxcode, valptr, mincode, values };
10457
+ }
10458
+ var BitReader = class {
10459
+ constructor(data, start) {
10460
+ this.data = data;
10461
+ this.bits = 0;
10462
+ this.count = 0;
10463
+ this.marker = false;
10464
+ this.pos = start;
10465
+ }
10466
+ reset() {
10467
+ this.bits = 0;
10468
+ this.count = 0;
10469
+ this.marker = false;
10470
+ }
10471
+ bit() {
10472
+ if (this.count === 0) {
10473
+ let b = 0;
10474
+ if (!this.marker && this.pos < this.data.length) {
10475
+ b = this.data[this.pos++];
10476
+ if (b === 255) {
10477
+ let n = this.data[this.pos];
10478
+ while (n === 255) {
10479
+ this.pos++;
10480
+ n = this.data[this.pos];
10481
+ }
10482
+ if (n === 0) {
10483
+ this.pos++;
10484
+ } else {
10485
+ this.marker = true;
10486
+ this.pos--;
10487
+ b = 0;
10488
+ }
10489
+ }
10490
+ }
10491
+ this.bits = b;
10492
+ this.count = 8;
10493
+ }
10494
+ this.count--;
10495
+ return this.bits >> this.count & 1;
10496
+ }
10497
+ receive(n) {
10498
+ let v = 0;
10499
+ while (n--) v = v << 1 | this.bit();
10500
+ return v;
10501
+ }
10502
+ receiveExtend(n) {
10503
+ if (n === 0) return 0;
10504
+ const v = this.receive(n);
10505
+ return v < 1 << n - 1 ? v - (1 << n) + 1 : v;
10506
+ }
10507
+ decode(h) {
10508
+ let code = 0;
10509
+ for (let l = 1; l <= 16; l++) {
10510
+ code = code << 1 | this.bit();
10511
+ if (h.maxcode[l] >= 0 && code <= h.maxcode[l] && code >= h.mincode[l]) return h.values[h.valptr[l] + code - h.mincode[l]];
10512
+ }
10513
+ throw new Error("Bad Huffman code");
10514
+ }
10515
+ };
10516
+ var CONST_BITS = 13;
10517
+ var PASS1_BITS = 2;
10518
+ var FIX_0_298631336 = 2446;
10519
+ var FIX_0_541196100 = 4433;
10520
+ var FIX_0_765366865 = 6270;
10521
+ var FIX_1_175875602 = 9633;
10522
+ var FIX_1_501321110 = 12299;
10523
+ var FIX_2_053119869 = 16819;
10524
+ var FIX_3_072711026 = 25172;
10525
+ function descale(x, n) {
10526
+ return x + (1 << n - 1) >> n;
10527
+ }
10528
+ function idct1d(v, r) {
10529
+ let z2 = v[2];
10530
+ let z3 = v[6];
10531
+ let z1 = (z2 + z3) * FIX_0_541196100;
10532
+ let tmp2 = z1 + z3 * -15137;
10533
+ let tmp3 = z1 + z2 * FIX_0_765366865;
10534
+ let tmp0 = v[0] + v[4] << CONST_BITS;
10535
+ let tmp1 = v[0] - v[4] << CONST_BITS;
10536
+ const tmp10 = tmp0 + tmp3;
10537
+ const tmp13 = tmp0 - tmp3;
10538
+ const tmp11 = tmp1 + tmp2;
10539
+ const tmp12 = tmp1 - tmp2;
10540
+ tmp0 = v[7];
10541
+ tmp1 = v[5];
10542
+ tmp2 = v[3];
10543
+ tmp3 = v[1];
10544
+ z1 = tmp0 + tmp3;
10545
+ z2 = tmp1 + tmp2;
10546
+ z3 = tmp0 + tmp2;
10547
+ let z4 = tmp1 + tmp3;
10548
+ const z5 = (z3 + z4) * FIX_1_175875602;
10549
+ tmp0 *= FIX_0_298631336;
10550
+ tmp1 *= FIX_2_053119869;
10551
+ tmp2 *= FIX_3_072711026;
10552
+ tmp3 *= FIX_1_501321110;
10553
+ z1 *= -7373;
10554
+ z2 *= -20995;
10555
+ z3 *= -16069;
10556
+ z4 *= -3196;
10557
+ z3 += z5;
10558
+ z4 += z5;
10559
+ tmp0 += z1 + z3;
10560
+ tmp1 += z2 + z4;
10561
+ tmp2 += z2 + z3;
10562
+ tmp3 += z1 + z4;
10563
+ r[0] = tmp10 + tmp3;
10564
+ r[7] = tmp10 - tmp3;
10565
+ r[1] = tmp11 + tmp2;
10566
+ r[6] = tmp11 - tmp2;
10567
+ r[2] = tmp12 + tmp1;
10568
+ r[5] = tmp12 - tmp1;
10569
+ r[3] = tmp13 + tmp0;
10570
+ r[4] = tmp13 - tmp0;
10571
+ }
10572
+ var vec = new Array(8).fill(0);
10573
+ var res = new Array(8).fill(0);
10574
+ function idctBlock(coef, offset, quant, out, outOffset, stride, ws) {
10575
+ for (let col = 0; col < 8; col++) {
10576
+ let ac = 0;
10577
+ for (let r = 0; r < 8; r++) {
10578
+ vec[r] = coef[offset + r * 8 + col] * quant[r * 8 + col];
10579
+ if (r) ac |= vec[r];
10580
+ }
10581
+ if (!ac) {
10582
+ const dc = vec[0] << PASS1_BITS;
10583
+ for (let r = 0; r < 8; r++) ws[r * 8 + col] = dc;
10584
+ continue;
10585
+ }
10586
+ idct1d(vec, res);
10587
+ for (let r = 0; r < 8; r++) ws[r * 8 + col] = descale(res[r], CONST_BITS - PASS1_BITS);
10588
+ }
10589
+ for (let row = 0; row < 8; row++) {
10590
+ let ac = 0;
10591
+ for (let c = 0; c < 8; c++) {
10592
+ vec[c] = ws[row * 8 + c];
10593
+ if (c) ac |= vec[c];
10594
+ }
10595
+ const o = outOffset + row * stride;
10596
+ if (!ac) {
10597
+ const x = descale(vec[0], PASS1_BITS + 3) + 128;
10598
+ const dc = x < 0 ? 0 : x > 255 ? 255 : x;
10599
+ for (let c = 0; c < 8; c++) out[o + c] = dc;
10600
+ continue;
10601
+ }
10602
+ idct1d(vec, res);
10603
+ for (let c = 0; c < 8; c++) {
10604
+ const x = descale(res[c], CONST_BITS + PASS1_BITS + 3) + 128;
10605
+ out[o + c] = x < 0 ? 0 : x > 255 ? 255 : x;
10606
+ }
10607
+ }
10608
+ }
10609
+ function upsample(plane, stride, cw, ch, hr, vr, width, height) {
10610
+ const out = new Uint8Array(width * height);
10611
+ const at = (x, y) => plane[Math.min(ch - 1, Math.max(0, y)) * stride + x];
10612
+ if (hr === 1 && vr === 1) {
10613
+ for (let y = 0; y < height; y++) for (let x = 0; x < width; x++) out[y * width + x] = plane[y * stride + x];
10614
+ return out;
10615
+ }
10616
+ if (hr === 2 && vr === 1) {
10617
+ for (let y = 0; y < height; y++) {
10618
+ for (let i = 0; i < cw; i++) {
10619
+ const v = at(i, y);
10620
+ const a = i === 0 ? v : 3 * v + at(i - 1, y) + 1 >> 2;
10621
+ const b = i === cw - 1 ? v : 3 * v + at(i + 1, y) + 2 >> 2;
10622
+ if (2 * i < width) out[y * width + 2 * i] = a;
10623
+ if (2 * i + 1 < width) out[y * width + 2 * i + 1] = b;
10624
+ }
10625
+ }
10626
+ return out;
10627
+ }
10628
+ if (hr === 2 && vr === 2) {
10629
+ for (let y = 0; y < height; y++) {
10630
+ const iy = y >> 1;
10631
+ const ny = (y & 1) === 0 ? iy - 1 : iy + 1;
10632
+ const sum = (i) => 3 * at(i, iy) + at(i, ny);
10633
+ for (let i = 0; i < cw; i++) {
10634
+ const t = sum(i);
10635
+ const a = i === 0 ? t * 4 + 8 >> 4 : 3 * t + sum(i - 1) + 8 >> 4;
10636
+ const b = i === cw - 1 ? t * 4 + 7 >> 4 : 3 * t + sum(i + 1) + 7 >> 4;
10637
+ if (2 * i < width) out[y * width + 2 * i] = a;
10638
+ if (2 * i + 1 < width) out[y * width + 2 * i + 1] = b;
10639
+ }
10640
+ }
10641
+ return out;
10642
+ }
10643
+ if (hr === 1 && vr === 2) {
10644
+ for (let y = 0; y < height; y++) {
10645
+ const iy = y >> 1;
10646
+ const upper = (y & 1) === 0;
10647
+ const ny = upper ? iy - 1 : iy + 1;
10648
+ const bias = upper ? 1 : 2;
10649
+ for (let x = 0; x < width; x++) out[y * width + x] = 3 * at(x, iy) + at(x, ny) + bias >> 2;
10650
+ }
10651
+ return out;
10652
+ }
10653
+ for (let y = 0; y < height; y++) {
10654
+ for (let x = 0; x < width; x++) out[y * width + x] = plane[Math.min(ch - 1, Math.floor(y / vr)) * stride + Math.min(cw - 1, Math.floor(x / hr))];
10655
+ }
10656
+ return out;
10657
+ }
10658
+ function decodeJpegTurbo(bytes, colorTransform) {
10659
+ try {
10660
+ return decodeInner(bytes, colorTransform);
10661
+ } catch {
10662
+ return null;
10663
+ }
10664
+ }
10665
+ function decodeInner(data, colorTransform) {
10666
+ if (data[0] !== 255 || data[1] !== 216) return null;
10667
+ const quant = [];
10668
+ const dcTables = [];
10669
+ const acTables = [];
10670
+ let comps = [];
10671
+ let width = 0;
10672
+ let height = 0;
10673
+ let progressive = false;
10674
+ let restart = 0;
10675
+ let adobe;
10676
+ let maxH = 1;
10677
+ let maxV = 1;
10678
+ let sawScan = false;
10679
+ let pos = 2;
10680
+ const ws = new Int32Array(64);
10681
+ while (pos < data.length) {
10682
+ if (data[pos] !== 255) {
10683
+ pos++;
10684
+ continue;
10685
+ }
10686
+ const marker = data[pos + 1];
10687
+ if (marker === 255) {
10688
+ pos++;
10689
+ continue;
10690
+ }
10691
+ pos += 2;
10692
+ if (marker === 216 || marker === 1 || marker >= 208 && marker <= 215 || marker === 0) continue;
10693
+ if (marker === 217) break;
10694
+ const len = data[pos] * 256 + data[pos + 1];
10695
+ const seg = pos + 2;
10696
+ const end = pos + len;
10697
+ if (marker === 219) {
10698
+ let p = seg;
10699
+ while (p < end) {
10700
+ const pq = data[p] >> 4;
10701
+ const tq = data[p] & 15;
10702
+ p++;
10703
+ const table = new Int32Array(64);
10704
+ for (let i = 0; i < 64; i++) {
10705
+ table[ZIGZAG[i]] = pq ? data[p] * 256 + data[p + 1] : data[p];
10706
+ p += pq ? 2 : 1;
10707
+ }
10708
+ quant[tq] = table;
10709
+ }
10710
+ } else if (marker === 192 || marker === 193 || marker === 194) {
10711
+ if (data[seg] !== 8) return null;
10712
+ progressive = marker === 194;
10713
+ height = data[seg + 1] * 256 + data[seg + 2];
10714
+ width = data[seg + 3] * 256 + data[seg + 4];
10715
+ const n = data[seg + 5];
10716
+ if (n !== 1 && n !== 3 || !width || !height) return null;
10717
+ comps = [];
10718
+ for (let i = 0; i < n; i++) {
10719
+ const h = data[seg + 7 + i * 3] >> 4;
10720
+ const v = data[seg + 7 + i * 3] & 15;
10721
+ if (!h || !v) return null;
10722
+ comps.push({ id: data[seg + 6 + i * 3], h, v, tq: data[seg + 8 + i * 3], blocksW: 0, blocksH: 0, coefs: new Int16Array(0), pred: 0, dc: 0, ac: 0 });
10723
+ }
10724
+ maxH = Math.max(...comps.map((c) => c.h));
10725
+ maxV = Math.max(...comps.map((c) => c.v));
10726
+ const mcusX = Math.ceil(width / (8 * maxH));
10727
+ const mcusY = Math.ceil(height / (8 * maxV));
10728
+ for (const c of comps) {
10729
+ c.blocksW = mcusX * c.h;
10730
+ c.blocksH = mcusY * c.v;
10731
+ c.coefs = new Int16Array(c.blocksW * c.blocksH * 64);
10732
+ }
10733
+ } else if (marker === 195 || marker >= 197 && marker <= 207 && marker !== 200 && marker !== 204) {
10734
+ return null;
10735
+ } else if (marker === 196) {
10736
+ let p = seg;
10737
+ while (p < end) {
10738
+ const tc = data[p] >> 4;
10739
+ const th = data[p] & 15;
10740
+ p++;
10741
+ const counts = data.subarray(p, p + 16);
10742
+ p += 16;
10743
+ let total = 0;
10744
+ for (let i = 0; i < 16; i++) total += counts[i];
10745
+ const table = buildHuffman2(counts, data.subarray(p, p + total));
10746
+ p += total;
10747
+ (tc ? acTables : dcTables)[th] = table;
10748
+ }
10749
+ } else if (marker === 221) {
10750
+ restart = data[seg] * 256 + data[seg + 1];
10751
+ } else if (marker === 238) {
10752
+ if (len >= 14 && String.fromCharCode(...data.subarray(seg, seg + 5)) === "Adobe") adobe = data[seg + 11];
10753
+ } else if (marker === 218) {
10754
+ if (!comps.length) return null;
10755
+ const ns = data[seg];
10756
+ const scanComps = [];
10757
+ for (let i = 0; i < ns; i++) {
10758
+ const c = comps.find((x) => x.id === data[seg + 1 + i * 2]);
10759
+ if (!c) return null;
10760
+ c.dc = data[seg + 2 + i * 2] >> 4;
10761
+ c.ac = data[seg + 2 + i * 2] & 15;
10762
+ scanComps.push(c);
10763
+ }
10764
+ const ss = data[seg + 1 + ns * 2];
10765
+ const se = data[seg + 2 + ns * 2];
10766
+ const ah = data[seg + 3 + ns * 2] >> 4;
10767
+ const al = data[seg + 3 + ns * 2] & 15;
10768
+ pos = decodeScan(data, end, scanComps, comps, width, height, maxH, maxV, progressive, restart, ss, se, ah, al, dcTables, acTables);
10769
+ sawScan = true;
10770
+ continue;
10771
+ }
10772
+ pos = end;
10773
+ }
10774
+ if (!sawScan || !comps.length) return null;
10775
+ const full = comps.map((c) => {
10776
+ if (maxH % c.h || maxV % c.v) throw new Error("Unsupported sampling");
10777
+ const stride = c.blocksW * 8;
10778
+ const plane = new Uint8Array(stride * c.blocksH * 8);
10779
+ const q = quant[c.tq];
10780
+ if (!q) throw new Error("Missing quantisation table");
10781
+ for (let by = 0; by < c.blocksH; by++) {
10782
+ for (let bx = 0; bx < c.blocksW; bx++) idctBlock(c.coefs, (by * c.blocksW + bx) * 64, q, plane, by * 8 * stride + bx * 8, stride, ws);
10783
+ }
10784
+ const cw = Math.ceil(width * c.h / maxH);
10785
+ const ch = Math.ceil(height * c.v / maxV);
10786
+ return upsample(plane, stride, cw, ch, maxH / c.h, maxV / c.v, width, height);
10787
+ });
10788
+ const out = new Uint8Array(width * height * 4);
10789
+ const transform = colorTransform ?? (adobe !== void 0 ? adobe !== 0 : !comps.every((c, i) => c.id === [82, 71, 66][i]));
10790
+ if (comps.length === 1) {
10791
+ for (let i = 0; i < width * height; i++) {
10792
+ out[i * 4] = out[i * 4 + 1] = out[i * 4 + 2] = full[0][i];
10793
+ out[i * 4 + 3] = 255;
10794
+ }
10795
+ } else if (!transform) {
10796
+ for (let i = 0; i < width * height; i++) {
10797
+ out[i * 4] = full[0][i];
10798
+ out[i * 4 + 1] = full[1][i];
10799
+ out[i * 4 + 2] = full[2][i];
10800
+ out[i * 4 + 3] = 255;
10801
+ }
10802
+ } else {
10803
+ const clamp2 = (v) => v < 0 ? 0 : v > 255 ? 255 : v;
10804
+ const fix = (x) => Math.floor(x * 65536 + 0.5);
10805
+ const half = 1 << 15;
10806
+ const crR = fix(1.402);
10807
+ const cbB = fix(1.772);
10808
+ const crG = -fix(0.71414);
10809
+ const cbG = -fix(0.34414);
10810
+ for (let i = 0; i < width * height; i++) {
10811
+ const y = full[0][i];
10812
+ const cb = full[1][i] - 128;
10813
+ const cr = full[2][i] - 128;
10814
+ out[i * 4] = clamp2(y + (crR * cr + half >> 16));
10815
+ out[i * 4 + 1] = clamp2(y + (cbG * cb + half + crG * cr >> 16));
10816
+ out[i * 4 + 2] = clamp2(y + (cbB * cb + half >> 16));
10817
+ out[i * 4 + 3] = 255;
10818
+ }
10819
+ }
10820
+ return { width, height, data: out };
10821
+ }
10822
+ function decodeScan(data, start, scan, all, width, height, maxH, maxV, progressive, restart, ss, se, ah, al, dcTables, acTables) {
10823
+ const br = new BitReader(data, start);
10824
+ let eobrun = 0;
10825
+ const single = scan.length === 1;
10826
+ const decodeBlock = (c, off) => {
10827
+ const coefs = c.coefs;
10828
+ if (!progressive) {
10829
+ const t = br.decode(dcTables[c.dc]);
10830
+ c.pred += t === 0 ? 0 : br.receiveExtend(t);
10831
+ coefs[off] = c.pred;
10832
+ let k2 = 1;
10833
+ while (k2 < 64) {
10834
+ const rs = br.decode(acTables[c.ac]);
10835
+ const s = rs & 15;
10836
+ const r = rs >> 4;
10837
+ if (s === 0) {
10838
+ if (r < 15) break;
10839
+ k2 += 16;
10840
+ continue;
10841
+ }
10842
+ k2 += r;
10843
+ if (k2 > 63) break;
10844
+ coefs[off + ZIGZAG[k2]] = br.receiveExtend(s);
10845
+ k2++;
10846
+ }
10847
+ return;
10848
+ }
10849
+ if (ss === 0) {
10850
+ if (ah === 0) {
10851
+ const t = br.decode(dcTables[c.dc]);
10852
+ c.pred += t === 0 ? 0 : br.receiveExtend(t);
10853
+ coefs[off] = c.pred * (1 << al);
10854
+ } else if (br.bit()) {
10855
+ coefs[off] |= 1 << al;
10856
+ }
10857
+ return;
10858
+ }
10859
+ if (ah === 0) {
10860
+ if (eobrun > 0) {
10861
+ eobrun--;
10862
+ return;
10863
+ }
10864
+ let k2 = ss;
10865
+ while (k2 <= se) {
10866
+ const rs = br.decode(acTables[c.ac]);
10867
+ const s = rs & 15;
10868
+ const r = rs >> 4;
10869
+ if (s === 0) {
10870
+ if (r < 15) {
10871
+ eobrun = br.receive(r) + (1 << r) - 1;
10872
+ break;
10873
+ }
10874
+ k2 += 16;
10875
+ continue;
10876
+ }
10877
+ k2 += r;
10878
+ if (k2 > 63) break;
10879
+ coefs[off + ZIGZAG[k2]] = br.receiveExtend(s) * (1 << al);
10880
+ k2++;
10881
+ }
10882
+ return;
10883
+ }
10884
+ const p1 = 1 << al;
10885
+ const m1 = -1 << al;
10886
+ let k = ss;
10887
+ if (eobrun <= 0) {
10888
+ for (; k <= se; k++) {
10889
+ const rs = br.decode(acTables[c.ac]);
10890
+ const s = rs & 15;
10891
+ let r = rs >> 4;
10892
+ let value = 0;
10893
+ if (s === 0) {
10894
+ if (r < 15) {
10895
+ eobrun = (1 << r) + br.receive(r);
10896
+ break;
10897
+ }
10898
+ } else {
10899
+ value = br.bit() ? p1 : m1;
10900
+ }
10901
+ for (; k <= se; k++) {
10902
+ const idx = off + ZIGZAG[k];
10903
+ if (coefs[idx] !== 0) {
10904
+ if (br.bit() && (coefs[idx] & p1) === 0) coefs[idx] += coefs[idx] >= 0 ? p1 : m1;
10905
+ } else {
10906
+ if (r === 0) {
10907
+ if (value) coefs[idx] = value;
10908
+ break;
10909
+ }
10910
+ r--;
10911
+ }
10912
+ }
10913
+ }
10914
+ }
10915
+ if (eobrun > 0) {
10916
+ for (; k <= se; k++) {
10917
+ const idx = off + ZIGZAG[k];
10918
+ if (coefs[idx] !== 0 && br.bit() && (coefs[idx] & p1) === 0) coefs[idx] += coefs[idx] >= 0 ? p1 : m1;
10919
+ }
10920
+ eobrun--;
10921
+ }
10922
+ };
10923
+ let total;
10924
+ let mcusX;
10925
+ if (single) {
10926
+ const c = scan[0];
10927
+ mcusX = Math.ceil(Math.ceil(width * c.h / maxH) / 8);
10928
+ total = mcusX * Math.ceil(Math.ceil(height * c.v / maxV) / 8);
10929
+ } else {
10930
+ mcusX = Math.ceil(width / (8 * maxH));
10931
+ total = mcusX * Math.ceil(height / (8 * maxV));
10932
+ }
10933
+ const nextMarker = (from) => {
10934
+ let p = from;
10935
+ while (p + 1 < data.length && !(data[p] === 255 && data[p + 1] !== 0 && data[p + 1] !== 255)) p++;
10936
+ return p;
10937
+ };
10938
+ let n = 0;
10939
+ while (n < total) {
10940
+ for (const c of all) c.pred = 0;
10941
+ eobrun = 0;
10942
+ br.reset();
10943
+ const limit = restart ? Math.min(total, n + restart) : total;
10944
+ for (; n < limit; n++) {
10945
+ if (single) {
10946
+ const c = scan[0];
10947
+ decodeBlock(c, (Math.floor(n / mcusX) * c.blocksW + n % mcusX) * 64);
10948
+ } else {
10949
+ const mx = n % mcusX;
10950
+ const my = Math.floor(n / mcusX);
10951
+ for (const c of scan) {
10952
+ for (let v = 0; v < c.v; v++) for (let h = 0; h < c.h; h++) decodeBlock(c, ((my * c.v + v) * c.blocksW + mx * c.h + h) * 64);
10953
+ }
10954
+ }
10955
+ }
10956
+ const p = nextMarker(br.pos);
10957
+ if (n >= total) return p;
10958
+ if (data[p + 1] >= 208 && data[p + 1] <= 215) br.pos = p + 2;
10959
+ else return p;
10960
+ }
10961
+ return nextMarker(br.pos);
10962
+ }
10963
+
10964
+ // src/jpeg-decoder.ts
10965
+ function decodeJpegPixels(bytes, colorTransform) {
10966
+ return decodeJpegTurbo(bytes, colorTransform) ?? decodeJpegPixelsLegacy(bytes, colorTransform);
10967
+ }
10968
+
10375
10969
  // src/image-codec-fallback.ts
10376
10970
  var import_gifuct_js = __toESM(require_lib2());
10377
10971
  var UTIF = __toESM(require_UTIF());
@@ -21930,14 +22524,14 @@ function pixelSnapPlusClip(rCtx, incoming) {
21930
22524
  function applyPlusClipRegion(rCtx, rawIncoming, combineMode, opName) {
21931
22525
  const incoming = pixelSnapPlusClip(rCtx, rawIncoming);
21932
22526
  const op = PLUS_COMBINE_OPS[combineMode];
21933
- const res = combineClipRegions(
22527
+ const res2 = combineClipRegions(
21934
22528
  rCtx.clipRegion ?? null,
21935
22529
  incoming,
21936
22530
  op ?? "intersect",
21937
22531
  plusClipDomain(rCtx)
21938
22532
  );
21939
- if (!res.exact) ;
21940
- rCtx.clipRegion = res.region;
22533
+ if (!res2.exact) ;
22534
+ rCtx.clipRegion = res2.region;
21941
22535
  reapplyPlusClip(rCtx);
21942
22536
  }
21943
22537
  function applyPlusClipShape(rCtx, shape, combineMode, opName) {
@@ -23345,27 +23939,27 @@ var HintedSize = class _HintedSize {
23345
23939
  /** Loads and grid-fits glyph `g`. Never throws. */
23346
23940
  hintGlyph(g) {
23347
23941
  const { advance } = this.font.hMetrics(g);
23348
- const res = this.loadRecursive(g, 0);
23349
- const n = res.zone.n - 4;
23350
- const pp1x = res.zone.curX[n];
23351
- const pp2x = res.zone.curX[n + 1];
23942
+ const res2 = this.loadRecursive(g, 0);
23943
+ const n = res2.zone.n - 4;
23944
+ const pp1x = res2.zone.curX[n];
23945
+ const pp2x = res2.zone.curX[n + 1];
23352
23946
  const xs = new Float64Array(n);
23353
23947
  const ys = new Float64Array(n);
23354
23948
  const onCurve = new Uint8Array(n);
23355
23949
  for (let i = 0; i < n; i++) {
23356
- xs[i] = res.zone.curX[i] - pp1x;
23357
- ys[i] = res.zone.curY[i];
23358
- onCurve[i] = res.zone.tags[i] & ON_CURVE;
23950
+ xs[i] = res2.zone.curX[i] - pp1x;
23951
+ ys[i] = res2.zone.curY[i];
23952
+ onCurve[i] = res2.zone.tags[i] & ON_CURVE;
23359
23953
  }
23360
23954
  return {
23361
23955
  xs,
23362
23956
  ys,
23363
23957
  onCurve,
23364
- endPts: res.zone.endPts,
23958
+ endPts: res2.zone.endPts,
23365
23959
  advance: pp2x - pp1x,
23366
23960
  linearAdvance: mulFix(advance, this.xScale),
23367
- scanControl: res.scanControl,
23368
- scanType: res.scanType
23961
+ scanControl: res2.scanControl,
23962
+ scanType: res2.scanType
23369
23963
  };
23370
23964
  }
23371
23965
  /**
@@ -32760,15 +33354,15 @@ function handleEmfGdiDrawTextRecord(rCtx, recType, offset, dataOff, recSize) {
32760
33354
 
32761
33355
  // src/emf-gdi-clip-records.ts
32762
33356
  function gdiCombineClip(rCtx, shape, op) {
32763
- const res = combineClip(op === "replace" ? null : rCtx.clipRegion ?? null, shape, op, {
33357
+ const res2 = combineClip(op === "replace" ? null : rCtx.clipRegion ?? null, shape, op, {
32764
33358
  x: 0,
32765
33359
  y: 0,
32766
33360
  w: rCtx.canvasW,
32767
33361
  h: rCtx.canvasH
32768
33362
  });
32769
- if (!res.exact) ;
32770
- rCtx.clipRegion = res.region;
32771
- reapplyClipRegion(rCtx, res.region);
33363
+ if (!res2.exact) ;
33364
+ rCtx.clipRegion = res2.region;
33365
+ reapplyClipRegion(rCtx, res2.region);
32772
33366
  }
32773
33367
  function readClipRectShape(rCtx, dataOff) {
32774
33368
  const { view } = rCtx;