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