emf-converter 4.5.2 → 4.6.1

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
@@ -10,8 +10,8 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
10
10
  if (typeof require !== "undefined") return require.apply(this, arguments);
11
11
  throw Error('Dynamic require of "' + x + '" is not supported');
12
12
  });
13
- var __commonJS = (cb, mod2) => function __require2() {
14
- return mod2 || (0, cb[__getOwnPropNames(cb)[0]])((mod2 = { exports: {} }).exports, mod2), mod2.exports;
13
+ var __commonJS = (cb, mod3) => function __require2() {
14
+ return mod3 || (0, cb[__getOwnPropNames(cb)[0]])((mod3 = { exports: {} }).exports, mod3), mod3.exports;
15
15
  };
16
16
  var __copyProps = (to, from, except, desc) => {
17
17
  if (from && typeof from === "object" || typeof from === "function") {
@@ -21,13 +21,13 @@ var __copyProps = (to, from, except, desc) => {
21
21
  }
22
22
  return to;
23
23
  };
24
- var __toESM = (mod2, isNodeMode, target) => (target = mod2 != null ? __create(__getProtoOf(mod2)) : {}, __copyProps(
24
+ var __toESM = (mod3, isNodeMode, target) => (target = mod3 != null ? __create(__getProtoOf(mod3)) : {}, __copyProps(
25
25
  // If the importer is in node compatibility mode or this is not an ESM
26
26
  // file that has been converted to a CommonJS file using a Babel-
27
27
  // compatible transform (i.e. "__esModule" has not been set), then set
28
28
  // "default" to the CommonJS "module.exports" for node compatibility.
29
- !mod2 || !mod2.__esModule ? __defProp(target, "default", { value: mod2, enumerable: true }) : target,
30
- mod2
29
+ !mod3 || !mod3.__esModule ? __defProp(target, "default", { value: mod3, enumerable: true }) : target,
30
+ mod3
31
31
  ));
32
32
 
33
33
  // node_modules/jpeg-js/lib/encoder.js
@@ -618,10 +618,10 @@ var require_encoder = __commonJS({
618
618
  0.275899379
619
619
  ];
620
620
  var k = 0;
621
- for (var row = 0; row < 8; row++) {
621
+ for (var row2 = 0; row2 < 8; row2++) {
622
622
  for (var col = 0; col < 8; col++) {
623
- fdtbl_Y[k] = 1 / (YTable[ZigZag[k]] * aasf[row] * aasf[col] * 8);
624
- fdtbl_UV[k] = 1 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8);
623
+ fdtbl_Y[k] = 1 / (YTable[ZigZag[k]] * aasf[row2] * aasf[col] * 8);
624
+ fdtbl_UV[k] = 1 / (UVTable[ZigZag[k]] * aasf[row2] * aasf[col] * 8);
625
625
  k++;
626
626
  }
627
627
  }
@@ -1006,20 +1006,20 @@ var require_encoder = __commonJS({
1006
1006
  var quadWidth = width * 4;
1007
1007
  var x, y = 0;
1008
1008
  var r, g, b;
1009
- var start, p, col, row, pos;
1009
+ var start, p, col, row2, pos;
1010
1010
  while (y < height) {
1011
1011
  x = 0;
1012
1012
  while (x < quadWidth) {
1013
1013
  start = quadWidth * y + x;
1014
1014
  p = start;
1015
1015
  col = -1;
1016
- row = 0;
1016
+ row2 = 0;
1017
1017
  for (pos = 0; pos < 64; pos++) {
1018
- row = pos >> 3;
1018
+ row2 = pos >> 3;
1019
1019
  col = (pos & 7) * 4;
1020
- p = start + row * quadWidth + col;
1021
- if (y + row >= height) {
1022
- p -= quadWidth * (y + 1 + row - height);
1020
+ p = start + row2 * quadWidth + col;
1021
+ if (y + row2 >= height) {
1022
+ p -= quadWidth * (y + 1 + row2 - height);
1023
1023
  }
1024
1024
  if (x + col >= quadWidth) {
1025
1025
  p -= x + col - quadWidth + 4;
@@ -1367,10 +1367,10 @@ var require_decoder = __commonJS({
1367
1367
  successiveACState = 0;
1368
1368
  }
1369
1369
  }
1370
- function decodeMcu(component2, decode4, mcu2, row, col) {
1370
+ function decodeMcu(component2, decode4, mcu2, row2, col) {
1371
1371
  var mcuRow = mcu2 / mcusPerLine | 0;
1372
1372
  var mcuCol = mcu2 % mcusPerLine;
1373
- var blockRow = mcuRow * component2.v + row;
1373
+ var blockRow = mcuRow * component2.v + row2;
1374
1374
  var blockCol = mcuCol * component2.h + col;
1375
1375
  if (component2.blocks[blockRow] === void 0 && opts.tolerantDecoding)
1376
1376
  return;
@@ -1465,27 +1465,27 @@ var require_decoder = __commonJS({
1465
1465
  for (i2 = 0; i2 < 64; i2++)
1466
1466
  p[i2] = zz[i2] * qt[i2];
1467
1467
  for (i2 = 0; i2 < 8; ++i2) {
1468
- var row = 8 * i2;
1469
- if (p[1 + row] == 0 && p[2 + row] == 0 && p[3 + row] == 0 && p[4 + row] == 0 && p[5 + row] == 0 && p[6 + row] == 0 && p[7 + row] == 0) {
1470
- t = dctSqrt2 * p[0 + row] + 512 >> 10;
1471
- p[0 + row] = t;
1472
- p[1 + row] = t;
1473
- p[2 + row] = t;
1474
- p[3 + row] = t;
1475
- p[4 + row] = t;
1476
- p[5 + row] = t;
1477
- p[6 + row] = t;
1478
- p[7 + row] = t;
1468
+ var row2 = 8 * i2;
1469
+ if (p[1 + row2] == 0 && p[2 + row2] == 0 && p[3 + row2] == 0 && p[4 + row2] == 0 && p[5 + row2] == 0 && p[6 + row2] == 0 && p[7 + row2] == 0) {
1470
+ t = dctSqrt2 * p[0 + row2] + 512 >> 10;
1471
+ p[0 + row2] = t;
1472
+ p[1 + row2] = t;
1473
+ p[2 + row2] = t;
1474
+ p[3 + row2] = t;
1475
+ p[4 + row2] = t;
1476
+ p[5 + row2] = t;
1477
+ p[6 + row2] = t;
1478
+ p[7 + row2] = t;
1479
1479
  continue;
1480
1480
  }
1481
- v0 = dctSqrt2 * p[0 + row] + 128 >> 8;
1482
- v1 = dctSqrt2 * p[4 + row] + 128 >> 8;
1483
- v2 = p[2 + row];
1484
- v3 = p[6 + row];
1485
- v4 = dctSqrt1d2 * (p[1 + row] - p[7 + row]) + 128 >> 8;
1486
- v7 = dctSqrt1d2 * (p[1 + row] + p[7 + row]) + 128 >> 8;
1487
- v5 = p[3 + row] << 4;
1488
- v6 = p[5 + row] << 4;
1481
+ v0 = dctSqrt2 * p[0 + row2] + 128 >> 8;
1482
+ v1 = dctSqrt2 * p[4 + row2] + 128 >> 8;
1483
+ v2 = p[2 + row2];
1484
+ v3 = p[6 + row2];
1485
+ v4 = dctSqrt1d2 * (p[1 + row2] - p[7 + row2]) + 128 >> 8;
1486
+ v7 = dctSqrt1d2 * (p[1 + row2] + p[7 + row2]) + 128 >> 8;
1487
+ v5 = p[3 + row2] << 4;
1488
+ v6 = p[5 + row2] << 4;
1489
1489
  t = v0 - v1 + 1 >> 1;
1490
1490
  v0 = v0 + v1 + 1 >> 1;
1491
1491
  v1 = t;
@@ -1510,14 +1510,14 @@ var require_decoder = __commonJS({
1510
1510
  t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;
1511
1511
  v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;
1512
1512
  v6 = t;
1513
- p[0 + row] = v0 + v7;
1514
- p[7 + row] = v0 - v7;
1515
- p[1 + row] = v1 + v6;
1516
- p[6 + row] = v1 - v6;
1517
- p[2 + row] = v2 + v5;
1518
- p[5 + row] = v2 - v5;
1519
- p[3 + row] = v3 + v4;
1520
- p[4 + row] = v3 - v4;
1513
+ p[0 + row2] = v0 + v7;
1514
+ p[7 + row2] = v0 - v7;
1515
+ p[1 + row2] = v1 + v6;
1516
+ p[6 + row2] = v1 - v6;
1517
+ p[2 + row2] = v2 + v5;
1518
+ p[5 + row2] = v2 - v5;
1519
+ p[3 + row2] = v3 + v4;
1520
+ p[4 + row2] = v3 - v4;
1521
1521
  }
1522
1522
  for (i2 = 0; i2 < 8; ++i2) {
1523
1523
  var col = i2;
@@ -1650,10 +1650,10 @@ var require_decoder = __commonJS({
1650
1650
  var blocks = [];
1651
1651
  requestMemoryAllocation(blocksToAllocate * 256);
1652
1652
  for (var i2 = 0; i2 < blocksPerColumnForMcu; i2++) {
1653
- var row = [];
1653
+ var row2 = [];
1654
1654
  for (var j2 = 0; j2 < blocksPerLineForMcu; j2++)
1655
- row.push(new Int32Array(64));
1656
- blocks.push(row);
1655
+ row2.push(new Int32Array(64));
1656
+ blocks.push(row2);
1657
1657
  }
1658
1658
  component2.blocksPerLine = blocksPerLine;
1659
1659
  component2.blocksPerColumn = blocksPerColumn;
@@ -7662,7 +7662,7 @@ var require_UTIF = __commonJS({
7662
7662
  514,
7663
7663
  513
7664
7664
  ];
7665
- var i, c, n, col, row, sum = 0;
7665
+ var i, c, n, col, row2, sum = 0;
7666
7666
  var ljpeg_diff = UTIF3.decode._ljpeg_diff;
7667
7667
  huff[0] = 15;
7668
7668
  for (n = i = 0; i < 18; i++) {
@@ -7670,12 +7670,12 @@ var require_UTIF = __commonJS({
7670
7670
  for (var c = 0; c < lim; c++) huff[++n] = tab[i];
7671
7671
  }
7672
7672
  for (col = raw_width; col--; )
7673
- for (row = 0; row < height + 1; row += 2) {
7674
- if (row == height) row = 1;
7673
+ for (row2 = 0; row2 < height + 1; row2 += 2) {
7674
+ if (row2 == height) row2 = 1;
7675
7675
  sum += ljpeg_diff(inp, prm, huff);
7676
- if (row < height) {
7676
+ if (row2 < height) {
7677
7677
  var clr = sum & 4095;
7678
- UTIF3.decode._putsF(tgt, (row * raw_width + col) * tiff_bps, clr << 16 - tiff_bps);
7678
+ UTIF3.decode._putsF(tgt, (row2 * raw_width + col) * tiff_bps, clr << 16 - tiff_bps);
7679
7679
  }
7680
7680
  }
7681
7681
  return;
@@ -7690,9 +7690,9 @@ var require_UTIF = __commonJS({
7690
7690
  return;
7691
7691
  }
7692
7692
  var pix = new Uint16Array(16);
7693
- var row, col, val, max, min, imax, imin, sh, bit, i, dp;
7693
+ var row2, col, val, max, min, imax, imin, sh, bit, i, dp;
7694
7694
  var data = new Uint8Array(raw_width + 1);
7695
- for (row = 0; row < height; row++) {
7695
+ for (row2 = 0; row2 < height; row2++) {
7696
7696
  for (var j = 0; j < raw_width; j++) data[j] = inp[off++];
7697
7697
  for (dp = 0, col = 0; col < raw_width - 30; dp += 16) {
7698
7698
  max = 2047 & (val = bin.readUint(data, dp));
@@ -7710,7 +7710,7 @@ var require_UTIF = __commonJS({
7710
7710
  }
7711
7711
  for (i = 0; i < 16; i++, col += 2) {
7712
7712
  var clr = pix[i] << 1;
7713
- UTIF3.decode._putsF(tgt, (row * raw_width + col) * tiff_bps, clr << 16 - tiff_bps);
7713
+ UTIF3.decode._putsF(tgt, (row2 * raw_width + col) * tiff_bps, clr << 16 - tiff_bps);
7714
7714
  }
7715
7715
  col -= col & 1 ? 1 : 31;
7716
7716
  }
@@ -7944,13 +7944,13 @@ var require_UTIF = __commonJS({
7944
7944
  if (csize > 1) step = Math.floor(max / (csize - 1));
7945
7945
  if (ver0 == 68 && ver1 == 32 && step > 0) split = bin.readShort(md, 562);
7946
7946
  var i;
7947
- var row, col;
7947
+ var row2, col;
7948
7948
  var len, shl, diff;
7949
7949
  var hpred = [0, 0];
7950
7950
  var huff = make_decoder(nikon_tree[tree]);
7951
7951
  var prm = [off, 0, 0, 0];
7952
- for (row = 0; row < height; row++) {
7953
- if (split && row == split) {
7952
+ for (row2 = 0; row2 < height; row2++) {
7953
+ if (split && row2 == split) {
7954
7954
  huff = make_decoder(nikon_tree[tree + 1]);
7955
7955
  }
7956
7956
  for (col = 0; col < raw_width; col++) {
@@ -7960,10 +7960,10 @@ var require_UTIF = __commonJS({
7960
7960
  diff = (getbithuff(data, prm, len - shl, 0) << 1) + 1 << shl >>> 1;
7961
7961
  if ((diff & 1 << len - 1) == 0)
7962
7962
  diff -= (1 << len) - (shl == 0 ? 1 : 0);
7963
- if (col < 2) hpred[col] = vpred[row & 1][col] += diff;
7963
+ if (col < 2) hpred[col] = vpred[row2 & 1][col] += diff;
7964
7964
  else hpred[col & 1] += diff;
7965
7965
  var clr = Math.min(Math.max(hpred[col & 1], 0), (1 << tiff_bps) - 1);
7966
- var bti = (row * raw_width + col) * tiff_bps;
7966
+ var bti = (row2 * raw_width + col) * tiff_bps;
7967
7967
  UTIF3.decode._putsF(tgt, bti, clr << 16 - tiff_bps);
7968
7968
  }
7969
7969
  }
@@ -9529,9 +9529,9 @@ function decodeMonoBits(view, bmiOffset, bitsOffset) {
9529
9529
  return null;
9530
9530
  }
9531
9531
  const bits = new Uint8Array(width * height);
9532
- for (let row = 0; row < height; row++) {
9533
- const y = heightRaw > 0 ? height - 1 - row : row;
9534
- const rowOff = bitsOffset + row * stride;
9532
+ for (let row2 = 0; row2 < height; row2++) {
9533
+ const y = heightRaw > 0 ? height - 1 - row2 : row2;
9534
+ const rowOff = bitsOffset + row2 * stride;
9535
9535
  for (let x = 0; x < width; x++) {
9536
9536
  bits[y * width + x] = view.getUint8(rowOff + (x >> 3)) >> 7 - (x & 7) & 1;
9537
9537
  }
@@ -10162,12 +10162,12 @@ function unfilter(raw, offset, stride, rows, bpp) {
10162
10162
  let prev = -1;
10163
10163
  for (let y = 0; y < rows; y++) {
10164
10164
  const filter = raw[offset];
10165
- const row = offset + 1;
10165
+ const row2 = offset + 1;
10166
10166
  for (let i = 0; i < stride; i++) {
10167
- const a = i >= bpp ? raw[row + i - bpp] : 0;
10167
+ const a = i >= bpp ? raw[row2 + i - bpp] : 0;
10168
10168
  const b = prev >= 0 ? raw[prev + i] : 0;
10169
10169
  const c = prev >= 0 && i >= bpp ? raw[prev + i - bpp] : 0;
10170
- let v = raw[row + i];
10170
+ let v = raw[row2 + i];
10171
10171
  switch (filter) {
10172
10172
  case 1:
10173
10173
  v += a;
@@ -10182,10 +10182,10 @@ function unfilter(raw, offset, stride, rows, bpp) {
10182
10182
  v += paeth(a, b, c);
10183
10183
  break;
10184
10184
  }
10185
- raw[row + i] = v & 255;
10185
+ raw[row2 + i] = v & 255;
10186
10186
  }
10187
- prev = row;
10188
- offset = row + stride;
10187
+ prev = row2;
10188
+ offset = row2 + stride;
10189
10189
  }
10190
10190
  return offset;
10191
10191
  }
@@ -10251,41 +10251,41 @@ async function decodePng(bytes) {
10251
10251
  const maxSample = (1 << depth) - 1;
10252
10252
  const keyGray = trns && colorType === 0 && trns.length >= 2 ? trns[0] << 8 | trns[1] : -1;
10253
10253
  const keyRgb = trns && colorType === 2 && trns.length >= 6 ? [trns[0] << 8 | trns[1], trns[2] << 8 | trns[3], trns[4] << 8 | trns[5]] : null;
10254
- const sampleAt = (row, index) => {
10254
+ const sampleAt = (row2, index) => {
10255
10255
  if (depth === 8) {
10256
- return raw[row + index];
10256
+ return raw[row2 + index];
10257
10257
  }
10258
10258
  if (depth === 16) {
10259
- return raw[row + index * 2] << 8 | raw[row + index * 2 + 1];
10259
+ return raw[row2 + index * 2] << 8 | raw[row2 + index * 2 + 1];
10260
10260
  }
10261
10261
  const bit = index * depth;
10262
- return raw[row + (bit >> 3)] >> 8 - depth - (bit & 7) & maxSample;
10262
+ return raw[row2 + (bit >> 3)] >> 8 - depth - (bit & 7) & maxSample;
10263
10263
  };
10264
10264
  const to8 = (v) => depth === 16 ? v >> 8 : depth === 8 ? v : Math.round(v * 255 / maxSample);
10265
- const writeRow = (row, count, y, x0, dx) => {
10265
+ const writeRow = (row2, count, y, x0, dx) => {
10266
10266
  for (let i = 0; i < count; i++) {
10267
10267
  const di = (y * width + x0 + i * dx) * 4;
10268
10268
  if (colorType === 3) {
10269
- const idx = sampleAt(row, i);
10269
+ const idx = sampleAt(row2, i);
10270
10270
  out[di] = palette[idx * 3] ?? 0;
10271
10271
  out[di + 1] = palette[idx * 3 + 1] ?? 0;
10272
10272
  out[di + 2] = palette[idx * 3 + 2] ?? 0;
10273
10273
  out[di + 3] = trns && idx < trns.length ? trns[idx] : 255;
10274
10274
  } else if (colorType === 0 || colorType === 4) {
10275
- const g = sampleAt(row, i * channels);
10275
+ const g = sampleAt(row2, i * channels);
10276
10276
  const v = to8(g);
10277
10277
  out[di] = v;
10278
10278
  out[di + 1] = v;
10279
10279
  out[di + 2] = v;
10280
- out[di + 3] = colorType === 4 ? to8(sampleAt(row, i * channels + 1)) : g === keyGray ? 0 : 255;
10280
+ out[di + 3] = colorType === 4 ? to8(sampleAt(row2, i * channels + 1)) : g === keyGray ? 0 : 255;
10281
10281
  } else {
10282
- const r = sampleAt(row, i * channels);
10283
- const g = sampleAt(row, i * channels + 1);
10284
- const b = sampleAt(row, i * channels + 2);
10282
+ const r = sampleAt(row2, i * channels);
10283
+ const g = sampleAt(row2, i * channels + 1);
10284
+ const b = sampleAt(row2, i * channels + 2);
10285
10285
  out[di] = to8(r);
10286
10286
  out[di + 1] = to8(g);
10287
10287
  out[di + 2] = to8(b);
10288
- out[di + 3] = colorType === 6 ? to8(sampleAt(row, i * channels + 3)) : keyRgb && r === keyRgb[0] && g === keyRgb[1] && b === keyRgb[2] ? 0 : 255;
10288
+ out[di + 3] = colorType === 6 ? to8(sampleAt(row2, i * channels + 3)) : keyRgb && r === keyRgb[0] && g === keyRgb[1] && b === keyRgb[2] ? 0 : 255;
10289
10289
  }
10290
10290
  }
10291
10291
  };
@@ -10584,13 +10584,13 @@ function idctBlock(coef, offset, quant, out, outOffset, stride, ws) {
10584
10584
  idct1d(vec, res);
10585
10585
  for (let r = 0; r < 8; r++) ws[r * 8 + col] = descale(res[r], CONST_BITS - PASS1_BITS);
10586
10586
  }
10587
- for (let row = 0; row < 8; row++) {
10587
+ for (let row2 = 0; row2 < 8; row2++) {
10588
10588
  let ac = 0;
10589
10589
  for (let c = 0; c < 8; c++) {
10590
- vec[c] = ws[row * 8 + c];
10590
+ vec[c] = ws[row2 * 8 + c];
10591
10591
  if (c) ac |= vec[c];
10592
10592
  }
10593
- const o = outOffset + row * stride;
10593
+ const o = outOffset + row2 * stride;
10594
10594
  if (!ac) {
10595
10595
  const x = descale(vec[0], PASS1_BITS + 3) + 128;
10596
10596
  const dc = x < 0 ? 0 : x > 255 ? 255 : x;
@@ -11038,7 +11038,7 @@ function decodeJpegTiff(bytes, page) {
11038
11038
  const x = block % columns * blockWidth, y = Math.floor(block / columns) * blockHeight;
11039
11039
  const copyWidth = Math.min(blockWidth, width - x), copyHeight = Math.min(blockHeight, height - y);
11040
11040
  if (decoded.width !== blockWidth || decoded.height < copyHeight || decoded.height > blockHeight) throw new Error("Invalid TIFF JPEG dimensions");
11041
- for (let row = 0; row < copyHeight; row++) result.set(decoded.data.subarray(row * decoded.width * 4, (row * decoded.width + copyWidth) * 4), ((y + row) * width + x) * 4);
11041
+ for (let row2 = 0; row2 < copyHeight; row2++) result.set(decoded.data.subarray(row2 * decoded.width * 4, (row2 * decoded.width + copyWidth) * 4), ((y + row2) * width + x) * 4);
11042
11042
  }
11043
11043
  return result;
11044
11044
  }
@@ -11195,11 +11195,11 @@ function filterScanlines(input, width, height) {
11195
11195
  const up = new Uint8Array(stride);
11196
11196
  const pae = new Uint8Array(stride);
11197
11197
  for (let y = 0; y < height; y++) {
11198
- const row = y * stride;
11199
- const prev = row - stride;
11198
+ const row2 = y * stride;
11199
+ const prev = row2 - stride;
11200
11200
  const o = y * (stride + 1);
11201
11201
  if (words && y > 0) {
11202
- const w0 = row >> 2;
11202
+ const w0 = row2 >> 2;
11203
11203
  const p0 = prev >> 2;
11204
11204
  let same = true;
11205
11205
  for (let k = 0; k < width; k++) {
@@ -11213,7 +11213,7 @@ function filterScanlines(input, width, height) {
11213
11213
  continue;
11214
11214
  }
11215
11215
  }
11216
- const none = data.subarray(row, row + stride);
11216
+ const none = data.subarray(row2, row2 + stride);
11217
11217
  const noneScore = score(none, stride);
11218
11218
  if (noneScore === 0) {
11219
11219
  out.set(none, o + 1);
@@ -11222,18 +11222,18 @@ function filterScanlines(input, width, height) {
11222
11222
  let subScore = 0;
11223
11223
  let upScore = 0;
11224
11224
  for (let i = 0; i < 4 && i < stride; i++) {
11225
- const x = data[row + i];
11225
+ const x = data[row2 + i];
11226
11226
  sub[i] = x;
11227
11227
  subScore += x < 128 ? x : 256 - x;
11228
11228
  }
11229
11229
  for (let i = 4; i < stride; i++) {
11230
- const v = data[row + i] - data[row + i - 4] & 255;
11230
+ const v = data[row2 + i] - data[row2 + i - 4] & 255;
11231
11231
  sub[i] = v;
11232
11232
  subScore += v < 128 ? v : 256 - v;
11233
11233
  }
11234
11234
  if (y > 0) {
11235
11235
  for (let i = 0; i < stride; i++) {
11236
- const v = data[row + i] - data[prev + i] & 255;
11236
+ const v = data[row2 + i] - data[prev + i] & 255;
11237
11237
  up[i] = v;
11238
11238
  upScore += v < 128 ? v : 256 - v;
11239
11239
  }
@@ -11256,10 +11256,10 @@ function filterScanlines(input, width, height) {
11256
11256
  }
11257
11257
  if (y > 0 && bestScore > stride >> 3) {
11258
11258
  for (let i = 0; i < stride; i++) {
11259
- const a = i >= 4 ? data[row + i - 4] : 0;
11259
+ const a = i >= 4 ? data[row2 + i - 4] : 0;
11260
11260
  const b = data[prev + i];
11261
11261
  const c = i >= 4 ? data[prev + i - 4] : 0;
11262
- pae[i] = data[row + i] - paeth2(a, b, c) & 255;
11262
+ pae[i] = data[row2 + i] - paeth2(a, b, c) & 255;
11263
11263
  }
11264
11264
  const paethScore = score(pae, stride);
11265
11265
  if (paethScore < bestScore) {
@@ -12463,19 +12463,19 @@ function accumulateLine(acc, mark, stride, rows, width, x0, y0, x1, y1) {
12463
12463
  if (top >= bottom) {
12464
12464
  return;
12465
12465
  }
12466
- const add = (row, cell, v) => {
12467
- const i = row * stride + cell;
12466
+ const add = (row2, cell, v) => {
12467
+ const i = row2 * stride + cell;
12468
12468
  acc[i] += v;
12469
12469
  if (!mark[i]) {
12470
12470
  mark[i] = 1;
12471
- touched[row].push(cell);
12471
+ touched[row2].push(cell);
12472
12472
  }
12473
12473
  };
12474
12474
  const dxdy = (x1 - x0) / (y1 - y0);
12475
12475
  let x = Math.min(width, Math.max(0, x0 + (top - y0) * dxdy));
12476
12476
  const rowEnd = Math.ceil(bottom);
12477
- for (let row = Math.floor(top); row < rowEnd; row++) {
12478
- const dy = Math.min(row + 1, bottom) - Math.max(row, top);
12477
+ for (let row2 = Math.floor(top); row2 < rowEnd; row2++) {
12478
+ const dy = Math.min(row2 + 1, bottom) - Math.max(row2, top);
12479
12479
  let xnext = x + dxdy * dy;
12480
12480
  if (xnext < 0) {
12481
12481
  xnext = 0;
@@ -12489,27 +12489,27 @@ function accumulateLine(acc, mark, stride, rows, width, x0, y0, x1, y1) {
12489
12489
  const hiCeil = Math.ceil(hi);
12490
12490
  if (hiCeil <= loFloor + 1) {
12491
12491
  const xmf = 0.5 * (x + xnext) - loFloor;
12492
- add(row, loFloor, d - d * xmf);
12493
- add(row, loFloor + 1, d * xmf);
12492
+ add(row2, loFloor, d - d * xmf);
12493
+ add(row2, loFloor + 1, d * xmf);
12494
12494
  } else {
12495
12495
  const s = 1 / (hi - lo);
12496
12496
  const x0f = lo - loFloor;
12497
12497
  const a0 = 0.5 * s * (1 - x0f) * (1 - x0f);
12498
12498
  const x1f = hi - hiCeil + 1;
12499
12499
  const am = 0.5 * s * x1f * x1f;
12500
- add(row, loFloor, d * a0);
12500
+ add(row2, loFloor, d * a0);
12501
12501
  if (hiCeil === loFloor + 2) {
12502
- add(row, loFloor + 1, d * (1 - a0 - am));
12502
+ add(row2, loFloor + 1, d * (1 - a0 - am));
12503
12503
  } else {
12504
12504
  const a1 = s * (1.5 - x0f);
12505
- add(row, loFloor + 1, d * (a1 - a0));
12505
+ add(row2, loFloor + 1, d * (a1 - a0));
12506
12506
  for (let xi = loFloor + 2; xi < hiCeil - 1; xi++) {
12507
- add(row, xi, d * s);
12507
+ add(row2, xi, d * s);
12508
12508
  }
12509
12509
  const a2 = a1 + (hiCeil - loFloor - 3) * s;
12510
- add(row, hiCeil - 1, d * (1 - a2 - am));
12510
+ add(row2, hiCeil - 1, d * (1 - a2 - am));
12511
12511
  }
12512
- add(row, hiCeil, d * am);
12512
+ add(row2, hiCeil, d * am);
12513
12513
  }
12514
12514
  x = xnext;
12515
12515
  }
@@ -12639,14 +12639,14 @@ function rasterizeRings(rings, rule, bounds, sink) {
12639
12639
  }
12640
12640
  accumulateLine(acc, mark, stride, rows, width, segs[o], ya, segs[o + 2], yb);
12641
12641
  }
12642
- for (let row = 0; row < rows; row++) {
12643
- const cells = touched[row];
12642
+ for (let row2 = 0; row2 < rows; row2++) {
12643
+ const cells = touched[row2];
12644
12644
  if (cells.length === 0) {
12645
12645
  continue;
12646
12646
  }
12647
12647
  cells.sort(byNumber);
12648
- const base = row * stride;
12649
- const y = bandTop + row;
12648
+ const base = row2 * stride;
12649
+ const y = bandTop + row2;
12650
12650
  let sum = 0;
12651
12651
  for (let k = 0; k < cells.length; k++) {
12652
12652
  const cell = cells[k];
@@ -13787,8 +13787,8 @@ var SoftwareRasterCanvas = class {
13787
13787
  readRgba(x, y, w, h) {
13788
13788
  const out = new Uint8ClampedArray(Math.max(0, w * h * 4));
13789
13789
  const { width, height, data } = this;
13790
- for (let row = 0; row < h; row++) {
13791
- const sy = y + row;
13790
+ for (let row2 = 0; row2 < h; row2++) {
13791
+ const sy = y + row2;
13792
13792
  if (sy < 0 || sy >= height) {
13793
13793
  continue;
13794
13794
  }
@@ -13798,7 +13798,7 @@ var SoftwareRasterCanvas = class {
13798
13798
  continue;
13799
13799
  }
13800
13800
  const si = (sy * width + sx) * 4;
13801
- const di = (row * w + col) * 4;
13801
+ const di = (row2 * w + col) * 4;
13802
13802
  const a = data[si + 3];
13803
13803
  if (a === 255) {
13804
13804
  out[di] = data[si];
@@ -13807,10 +13807,10 @@ var SoftwareRasterCanvas = class {
13807
13807
  out[di + 3] = 255;
13808
13808
  } else if (a !== 0) {
13809
13809
  const table = unpremultiplyTable();
13810
- const row2 = a << 8;
13811
- out[di] = table[row2 | data[si]];
13812
- out[di + 1] = table[row2 | data[si + 1]];
13813
- out[di + 2] = table[row2 | data[si + 2]];
13810
+ const row3 = a << 8;
13811
+ out[di] = table[row3 | data[si]];
13812
+ out[di + 1] = table[row3 | data[si + 1]];
13813
+ out[di + 2] = table[row3 | data[si + 2]];
13814
13814
  out[di + 3] = a;
13815
13815
  }
13816
13816
  }
@@ -13827,8 +13827,8 @@ var SoftwareRasterCanvas = class {
13827
13827
  return null;
13828
13828
  }
13829
13829
  let out = null;
13830
- for (let row = 0; row < h; row++) {
13831
- const sy = y + row;
13830
+ for (let row2 = 0; row2 < h; row2++) {
13831
+ const sy = y + row2;
13832
13832
  if (sy < 0 || sy >= this.height) {
13833
13833
  continue;
13834
13834
  }
@@ -13836,7 +13836,7 @@ var SoftwareRasterCanvas = class {
13836
13836
  const sx = x + col;
13837
13837
  if (sx >= 0 && sx < this.width && u[sy * this.width + sx]) {
13838
13838
  out ?? (out = new Uint8Array(w * h));
13839
- out[row * w + col] = 1;
13839
+ out[row2 * w + col] = 1;
13840
13840
  }
13841
13841
  }
13842
13842
  }
@@ -14534,9 +14534,9 @@ var SoftwareRasterContext = class {
14534
14534
  return null;
14535
14535
  }
14536
14536
  const out = new Uint8Array(Math.max(0, w * h));
14537
- for (let row = 0; row < h; row++) {
14537
+ for (let row2 = 0; row2 < h; row2++) {
14538
14538
  for (let col = 0; col < w; col++) {
14539
- out[row * w + col] = clipAt(clip, x + col, y + row);
14539
+ out[row2 * w + col] = clipAt(clip, x + col, y + row2);
14540
14540
  }
14541
14541
  }
14542
14542
  return out;
@@ -14547,8 +14547,8 @@ var SoftwareRasterContext = class {
14547
14547
  }
14548
14548
  const polys = this.flattened();
14549
14549
  const key = `${y}`;
14550
- let row = this.rowCache;
14551
- if (!row || row.key !== key) {
14550
+ let row2 = this.rowCache;
14551
+ if (!row2 || row2.key !== key) {
14552
14552
  const xs = [];
14553
14553
  const dirs = [];
14554
14554
  for (const poly of polys) {
@@ -14578,23 +14578,23 @@ var SoftwareRasterContext = class {
14578
14578
  for (let k = order.length - 1; k >= 0; k--) {
14579
14579
  suffix[k] = suffix[k + 1] + dirs[order[k]];
14580
14580
  }
14581
- row = { key, xs: sortedX, suffixWinding: suffix, count: order.length };
14582
- this.rowCache = row;
14581
+ row2 = { key, xs: sortedX, suffixWinding: suffix, count: order.length };
14582
+ this.rowCache = row2;
14583
14583
  }
14584
14584
  let lo = 0;
14585
- let hi = row.count;
14585
+ let hi = row2.count;
14586
14586
  while (lo < hi) {
14587
14587
  const mid = lo + hi >> 1;
14588
- if (row.xs[mid] > x) {
14588
+ if (row2.xs[mid] > x) {
14589
14589
  hi = mid;
14590
14590
  } else {
14591
14591
  lo = mid + 1;
14592
14592
  }
14593
14593
  }
14594
14594
  if (fillRule === "evenodd") {
14595
- return (row.count - lo & 1) === 1;
14595
+ return (row2.count - lo & 1) === 1;
14596
14596
  }
14597
- return row.suffixWinding[lo] !== 0;
14597
+ return row2.suffixWinding[lo] !== 0;
14598
14598
  }
14599
14599
  isPointInStroke(x, y) {
14600
14600
  const rings = strokeToRings(this.flattened(), this.state.transform, this.strokeParams(), FLATTEN_TOLERANCE);
@@ -14801,8 +14801,8 @@ var SoftwareRasterContext = class {
14801
14801
  const c1 = Math.min(image.width, Math.floor(dirtyX + dirtyW));
14802
14802
  const r1 = Math.min(image.height, Math.floor(dirtyY + dirtyH));
14803
14803
  const src = image.data;
14804
- for (let row = r0; row < r1; row++) {
14805
- const ty = dy + row;
14804
+ for (let row2 = r0; row2 < r1; row2++) {
14805
+ const ty = dy + row2;
14806
14806
  if (ty < 0 || ty >= height) {
14807
14807
  continue;
14808
14808
  }
@@ -14811,7 +14811,7 @@ var SoftwareRasterContext = class {
14811
14811
  if (tx < 0 || tx >= width) {
14812
14812
  continue;
14813
14813
  }
14814
- const si = (row * image.width + col) * 4;
14814
+ const si = (row2 * image.width + col) * 4;
14815
14815
  const di = (ty * width + tx) * 4;
14816
14816
  const a = src[si + 3];
14817
14817
  if (a === 255) {
@@ -16345,7 +16345,7 @@ function gdipHue(r, g, b) {
16345
16345
  const q = (256 - t - (t >= 40 ? 1 : 0)) % 256;
16346
16346
  return q - Math.floor((q + 42) / 86);
16347
16347
  }
16348
- function applyHueSaturationLightness(src, hue, saturation, lightness2) {
16348
+ function applyHueSaturationLightness(src, hue, saturation, lightness) {
16349
16349
  const out = new Uint8ClampedArray(src);
16350
16350
  const shift = Math.round(hue * HUE_CIRCLE / 360);
16351
16351
  const sMul = 1 + saturation / 100;
@@ -16355,7 +16355,7 @@ function applyHueSaturationLightness(src, hue, saturation, lightness2) {
16355
16355
  const b = src[i + 2];
16356
16356
  const max = Math.max(r, g, b);
16357
16357
  const min = Math.min(r, g, b);
16358
- const l = clamp(Math.round(((max + min >> 1) * 100 + 255 * lightness2) / 100), 0, 255);
16358
+ const l = clamp(Math.round(((max + min >> 1) * 100 + 255 * lightness) / 100), 0, 255);
16359
16359
  if (max === min) {
16360
16360
  out[i] = out[i + 1] = out[i + 2] = l;
16361
16361
  continue;
@@ -16462,21 +16462,21 @@ function gdipBlur(src, w, h, radius, vRow = 0, vZeroAbove = false, fullVertical
16462
16462
  const verticalIndex = taps >= edgeHeight ? (y) => Math.max(0, Math.min(h - 1, y)) : (y) => mirror(y, h);
16463
16463
  const out = new Float64Array(w * h * 4);
16464
16464
  for (let y = 0; y < h; y++) {
16465
- const row = y * w * 4;
16465
+ const row2 = y * w * 4;
16466
16466
  for (let x = 0; x < w; x++) {
16467
16467
  let s0 = 0;
16468
16468
  let s1 = 0;
16469
16469
  let s2 = 0;
16470
16470
  let s3 = 0;
16471
16471
  for (let j = -taps; j <= taps; j++) {
16472
- const p = row + horizontalIndex(x + j) * 4;
16472
+ const p = row2 + horizontalIndex(x + j) * 4;
16473
16473
  const kw = k[j + taps];
16474
16474
  s0 += kw * src[p];
16475
16475
  s1 += kw * src[p + 1];
16476
16476
  s2 += kw * src[p + 2];
16477
16477
  s3 += kw * src[p + 3];
16478
16478
  }
16479
- const o = row + x * 4;
16479
+ const o = row2 + x * 4;
16480
16480
  out[o] = Math.round(s0);
16481
16481
  out[o + 1] = Math.round(s1);
16482
16482
  out[o + 2] = Math.round(s2);
@@ -16486,10 +16486,10 @@ function gdipBlur(src, w, h, radius, vRow = 0, vZeroAbove = false, fullVertical
16486
16486
  if (taps > 0 && vRow >= 0 && vRow < h) {
16487
16487
  const horizontal = out.slice();
16488
16488
  const endRow = fullVertical ? h : Math.min(h, vRow + verticalRows);
16489
- for (let row = vRow; row < endRow; row++) {
16489
+ for (let row2 = vRow; row2 < endRow; row2++) {
16490
16490
  const col = new Float64Array(w * 4);
16491
16491
  for (let j = -taps; j <= taps; j++) {
16492
- const yy = row + j;
16492
+ const yy = row2 + j;
16493
16493
  if (vZeroAbove && yy < vRow) {
16494
16494
  continue;
16495
16495
  }
@@ -16498,7 +16498,7 @@ function gdipBlur(src, w, h, radius, vRow = 0, vZeroAbove = false, fullVertical
16498
16498
  col[i] += k[j + taps] * horizontal[base + i];
16499
16499
  }
16500
16500
  }
16501
- out.set(col, row * w * 4);
16501
+ out.set(col, row2 * w * 4);
16502
16502
  }
16503
16503
  }
16504
16504
  return out;
@@ -17102,14 +17102,14 @@ function shapeRowSpans(shape, dom) {
17102
17102
  let active = [];
17103
17103
  let next = 0;
17104
17104
  const xs = [];
17105
- for (let row = dom.y0; row < dom.y1; row++) {
17106
- while (next < edges.length && edges[next].row0 === row) {
17105
+ for (let row2 = dom.y0; row2 < dom.y1; row2++) {
17106
+ while (next < edges.length && edges[next].row0 === row2) {
17107
17107
  active.push(edges[next++]);
17108
17108
  }
17109
- active = active.filter((e) => e.row1 > row);
17109
+ active = active.filter((e) => e.row1 > row2);
17110
17110
  xs.length = 0;
17111
17111
  for (const e of active) {
17112
- xs.push({ x: e.x + (row - e.row0) * e.slope, dir: e.dir });
17112
+ xs.push({ x: e.x + (row2 - e.row0) * e.slope, dir: e.dir });
17113
17113
  }
17114
17114
  xs.sort((a, b) => a.x - b.x);
17115
17115
  const spans = [];
@@ -26399,7 +26399,7 @@ function rasterizeMono(o, dropout, fixedBox) {
26399
26399
  }
26400
26400
  const local = { xs, ys, onCurve: o.onCurve, endPts: o.endPts };
26401
26401
  const data = new Uint8Array(width * height);
26402
- const at = (col, row) => (height - 1 - row) * width + col;
26402
+ const at = (col, row2) => (height - 1 - row2) * width + col;
26403
26403
  const r = new Raster(dropout);
26404
26404
  const P = r.precision;
26405
26405
  if (r.convert(local, false, 0, (height - 1) * P)) {
@@ -26470,9 +26470,9 @@ function rasterizeMono(o, dropout, fixedBox) {
26470
26470
  const e1 = h.ceilPub(x1);
26471
26471
  const e2 = h.floorPub(x2);
26472
26472
  if (e1 === e2) {
26473
- const row = h.truncPub(e1);
26474
- if (row >= 0 && row < height && col >= 0 && col < width) {
26475
- data[at(col, row)] = 1;
26473
+ const row2 = h.truncPub(e1);
26474
+ if (row2 >= 0 && row2 < height && col >= 0 && col < width) {
26475
+ data[at(col, row2)] = 1;
26476
26476
  }
26477
26477
  }
26478
26478
  }
@@ -26513,9 +26513,9 @@ function rasterizeMono(o, dropout, fixedBox) {
26513
26513
  return;
26514
26514
  }
26515
26515
  }
26516
- const row = h.truncPub(pxl);
26517
- if (row >= 0 && row < height && col >= 0 && col < width) {
26518
- data[at(col, row)] = 1;
26516
+ const row2 = h.truncPub(pxl);
26517
+ if (row2 >= 0 && row2 < height && col >= 0 && col < width) {
26518
+ data[at(col, row2)] = 1;
26519
26519
  }
26520
26520
  }
26521
26521
  );
@@ -26594,10 +26594,10 @@ function rasterizeGray(o) {
26594
26594
  const height = box.yMax - box.yMin;
26595
26595
  const data = new Uint8Array(width * height);
26596
26596
  for (let y = 0; y < hi.height; y++) {
26597
- const row = Math.floor(y / k) * width;
26597
+ const row2 = Math.floor(y / k) * width;
26598
26598
  for (let x = 0; x < hi.width; x++) {
26599
26599
  if (hi.data[y * hi.width + x]) {
26600
- data[row + Math.floor(x / k)]++;
26600
+ data[row2 + Math.floor(x / k)]++;
26601
26601
  }
26602
26602
  }
26603
26603
  }
@@ -27400,9 +27400,9 @@ function rasterizeClearType(o) {
27400
27400
  const data = new Uint8Array(n * height);
27401
27401
  for (let y = 0; y < height; y++) {
27402
27402
  sub.fill(0);
27403
- const row = y * hi.width;
27403
+ const row2 = y * hi.width;
27404
27404
  for (let x = 0; x < hi.width; x++) {
27405
- if (hi.data[row + x]) {
27405
+ if (hi.data[row2 + x]) {
27406
27406
  sub[Math.floor(x / S)] += 1;
27407
27407
  }
27408
27408
  }
@@ -30871,12 +30871,94 @@ function handleEmfGdiShapeRecord(rCtx, recType, dataOff, recSize) {
30871
30871
  }
30872
30872
  }
30873
30873
 
30874
+ // src/emf-gdi-illuminant-data.ts
30875
+ var ILLUMINANT_CUBE_DATA = {
30876
+ 1: "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",
30877
+ 2: "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",
30878
+ 3: "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",
30879
+ 4: "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",
30880
+ 5: "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",
30881
+ 7: "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",
30882
+ 8: "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"
30883
+ };
30884
+
30874
30885
  // src/emf-gdi-color-adjust.ts
30875
30886
  var CA_NEGATIVE = 1;
30876
30887
  var CA_LOG_FILTER = 2;
30877
30888
  var COLOR_ADJUSTMENT_SIZE = 24;
30889
+ var DEFAULT_COLOR_ADJUSTMENT = {
30890
+ flags: 0,
30891
+ illuminant: 0,
30892
+ redGamma: 1e4,
30893
+ greenGamma: 1e4,
30894
+ blueGamma: 1e4,
30895
+ referenceBlack: 0,
30896
+ referenceWhite: 1e4,
30897
+ contrast: 0,
30898
+ brightness: 0,
30899
+ colorfulness: 0,
30900
+ redGreenTint: 0
30901
+ };
30902
+ var illuminantCubes = /* @__PURE__ */ new Map();
30903
+ function illuminantCube(index) {
30904
+ let cube = illuminantCubes.get(index);
30905
+ if (cube === void 0) {
30906
+ const encoded = ILLUMINANT_CUBE_DATA[index];
30907
+ cube = null;
30908
+ if (encoded) {
30909
+ const bytes = Uint8Array.from(atob(encoded), (c) => c.charCodeAt(0));
30910
+ const planes = inflateZlibSync(bytes);
30911
+ cube = new Uint8Array(32768 * 3);
30912
+ for (let c = 0; c < 3; c++) {
30913
+ for (let i = 0; i < 32768; i++) {
30914
+ const prev = i & 31 ? cube[(i - 1) * 3 + c] : 0;
30915
+ cube[i * 3 + c] = prev + planes[c * 32768 + i] & 255;
30916
+ }
30917
+ }
30918
+ }
30919
+ illuminantCubes.set(index, cube);
30920
+ }
30921
+ return cube;
30922
+ }
30923
+ function hasIlluminant(ca) {
30924
+ return illuminantCube(ca.illuminant) !== null;
30925
+ }
30926
+ var PALETTE = Array.from({ length: 32 }, (_, n) => Math.round(n * 255 / 31));
30927
+ function paletteIndex(v) {
30928
+ const x = clamp012(v) * 255;
30929
+ let n = Math.min(30, Math.floor(x * 31 / 255));
30930
+ while (n < 30 && x >= PALETTE[n + 1]) n++;
30931
+ while (n > 0 && x < PALETTE[n]) n--;
30932
+ return n + Math.min(1, Math.max(0, (x - PALETTE[n]) / (PALETTE[n + 1] - PALETTE[n])));
30933
+ }
30934
+ function lookupIlluminant(cube, r, g, b) {
30935
+ const fr = paletteIndex(r);
30936
+ const fg = paletteIndex(g);
30937
+ const fb = paletteIndex(b);
30938
+ const r0 = Math.min(30, Math.floor(fr));
30939
+ const g0 = Math.min(30, Math.floor(fg));
30940
+ const b0 = Math.min(30, Math.floor(fb));
30941
+ const tr = fr - r0;
30942
+ const tg = fg - g0;
30943
+ const tb = fb - b0;
30944
+ const result = [0, 0, 0];
30945
+ for (let c = 0; c < 3; c++) {
30946
+ let acc = 0;
30947
+ for (let corner = 0; corner < 8; corner++) {
30948
+ const dr = corner & 1;
30949
+ const dg = corner >> 1 & 1;
30950
+ const db = corner >> 2 & 1;
30951
+ const weight = (dr ? tr : 1 - tr) * (dg ? tg : 1 - tg) * (db ? tb : 1 - tb);
30952
+ if (weight !== 0) {
30953
+ acc += weight * cube[(((r0 + dr) * 32 + g0 + dg) * 32 + b0 + db) * 3 + c];
30954
+ }
30955
+ }
30956
+ result[c] = acc / 255;
30957
+ }
30958
+ return result;
30959
+ }
30878
30960
  function isChannelOnlyColorAdjustment(ca) {
30879
- return !!ca && (ca.flags & ~CA_LOG_FILTER) === 0 && (ca.illuminant === 0 || ca.illuminant === 6) && ca.referenceBlack === 0 && ca.referenceWhite === 1e4 && ca.contrast === 0 && ca.brightness === 0 && ca.colorfulness === 0 && ca.redGreenTint === 0;
30961
+ return !!ca && !hasIlluminant(ca) && ca.colorfulness === 0 && ca.redGreenTint === 0;
30880
30962
  }
30881
30963
  function readColorAdjustment(view, off) {
30882
30964
  const ca = {
@@ -30897,19 +30979,19 @@ function readColorAdjustment(view, off) {
30897
30979
  return valid ? ca : null;
30898
30980
  }
30899
30981
  function isIdentityColorAdjustment(ca) {
30900
- return !ca || ca.flags === 0 && ca.redGamma === 1e4 && ca.greenGamma === 1e4 && ca.blueGamma === 1e4 && ca.referenceBlack === 0 && ca.referenceWhite === 1e4 && ca.contrast === 0 && ca.brightness === 0 && ca.colorfulness === 0 && ca.redGreenTint === 0;
30982
+ return !ca || ca.flags === 0 && !hasIlluminant(ca) && ca.redGamma === 1e4 && ca.greenGamma === 1e4 && ca.blueGamma === 1e4 && ca.referenceBlack === 0 && ca.referenceWhite === 1e4 && ca.contrast === 0 && ca.brightness === 0 && ca.colorfulness === 0 && ca.redGreenTint === 0;
30901
30983
  }
30902
- var CONTRAST_GAIN = 1.88;
30903
- var BRIGHTNESS_GAIN = 78.5;
30904
- var COLORFULNESS_GAIN = 1.335;
30905
- var TINT_RADIANS = -1.135;
30984
+ var CONTRAST_RATE = 0.0148885;
30985
+ var BRIGHTNESS_STEP = 0.95625;
30986
+ var COLORFULNESS_SCALE = 1 / 100;
30987
+ var TINT_RADIANS = -Math.PI / 3;
30906
30988
  var RGB_TO_XYZ = [
30907
30989
  [0.4124, 0.3576, 0.1805],
30908
30990
  [0.2126, 0.7152, 0.0722],
30909
30991
  [0.0193, 0.1192, 0.9505]
30910
30992
  ];
30911
30993
  var XYZ_TO_RGB = invert3(RGB_TO_XYZ);
30912
- var WHITE = RGB_TO_XYZ.map((row) => row[0] + row[1] + row[2]);
30994
+ var WHITE = RGB_TO_XYZ.map((row2) => row2[0] + row2[1] + row2[2]);
30913
30995
  var WHITE_D = WHITE[0] + 15 * WHITE[1] + 3 * WHITE[2];
30914
30996
  var WHITE_U = 4 * WHITE[0] / WHITE_D;
30915
30997
  var WHITE_V = 9 * WHITE[1] / WHITE_D;
@@ -30925,76 +31007,84 @@ function invert3(m) {
30925
31007
  [C / det, (b * g - a * h) / det, (a * e - b * d) / det]
30926
31008
  ];
30927
31009
  }
30928
- function lightness(t) {
30929
- return t > 8856e-6 ? 116 * Math.cbrt(t) - 16 : 903.3 * t;
30930
- }
30931
- function fromLightness(l) {
30932
- return l > 8 ? ((l + 16) / 116) ** 3 : l / 903.3;
30933
- }
30934
31010
  var clamp012 = (v) => v < 0 ? 0 : v > 1 ? 1 : v;
30935
- function colorAdjustmentMapper(ca) {
30936
- if (ca.referenceBlack === 0 && ca.referenceWhite === 1e4 && ca.contrast === 0 && ca.brightness === 0 && ca.colorfulness === 0 && ca.redGreenTint === 0) {
30937
- const tables = [ca.redGamma, ca.greenGamma, ca.blueGamma].map((gamma) => {
30938
- const table = new Uint8Array(256);
30939
- for (let i = 0; i < 256; i++) {
30940
- const input = (ca.flags & CA_NEGATIVE) !== 0 ? 255 - i : i;
30941
- let value = (input / 255) ** (gamma / 1e4);
30942
- if ((ca.flags & CA_LOG_FILTER) !== 0) value = Math.log2(1 + 7 * value) / 3;
30943
- table[i] = Math.round(value * 255);
30944
- }
30945
- return table;
30946
- });
30947
- return (rgb2) => tables[0][rgb2 >> 16 & 255] << 16 | tables[1][rgb2 >> 8 & 255] << 8 | tables[2][rgb2 & 255];
31011
+ var clamp255 = (v) => v < 0 ? 0 : v > 255 ? 255 : v;
31012
+ function adjustChroma(r, g, b, scale, angle) {
31013
+ const x = RGB_TO_XYZ[0][0] * r + RGB_TO_XYZ[0][1] * g + RGB_TO_XYZ[0][2] * b;
31014
+ const y = RGB_TO_XYZ[1][0] * r + RGB_TO_XYZ[1][1] * g + RGB_TO_XYZ[1][2] * b;
31015
+ const z = RGB_TO_XYZ[2][0] * r + RGB_TO_XYZ[2][1] * g + RGB_TO_XYZ[2][2] * b;
31016
+ const d = x + 15 * y + 3 * z;
31017
+ if (d <= 1e-9 || y <= 1e-9) {
31018
+ return [r, g, b];
31019
+ }
31020
+ const du = 4 * x / d - WHITE_U;
31021
+ const dv = 9 * y / d - WHITE_V;
31022
+ const cos = Math.cos(angle) * scale;
31023
+ const sin = Math.sin(angle) * scale;
31024
+ const u = WHITE_U + du * cos - dv * sin;
31025
+ const v = Math.max(1e-6, WHITE_V + du * sin + dv * cos);
31026
+ const x2 = y * 9 * u / (4 * v);
31027
+ const z2 = y * (12 - 3 * u - 20 * v) / (4 * v);
31028
+ const out = [
31029
+ XYZ_TO_RGB[0][0] * x2 + XYZ_TO_RGB[0][1] * y + XYZ_TO_RGB[0][2] * z2,
31030
+ XYZ_TO_RGB[1][0] * x2 + XYZ_TO_RGB[1][1] * y + XYZ_TO_RGB[1][2] * z2,
31031
+ XYZ_TO_RGB[2][0] * x2 + XYZ_TO_RGB[2][1] * y + XYZ_TO_RGB[2][2] * z2
31032
+ ];
31033
+ const lo = Math.min(0, out[0], out[1], out[2]);
31034
+ const hi = Math.max(255, out[0], out[1], out[2]);
31035
+ if (lo < 0 || hi > 255) {
31036
+ const k = 255 / (hi - lo);
31037
+ return [(out[0] - lo) * k, (out[1] - lo) * k, (out[2] - lo) * k];
30948
31038
  }
30949
- const black = ca.referenceBlack / 1e4;
30950
- const span = Math.max(1e-6, ca.referenceWhite / 1e4 - black);
31039
+ return out;
31040
+ }
31041
+ function colorAdjustmentMapper(ca) {
31042
+ const illuminant = illuminantCube(ca.illuminant);
30951
31043
  const gammas = [ca.redGamma / 1e4, ca.greenGamma / 1e4, ca.blueGamma / 1e4];
30952
- const negative = (ca.flags & CA_NEGATIVE) !== 0;
30953
- const linear = gammas.map((gamma) => {
30954
- const table = new Float64Array(256);
30955
- for (let i = 0; i < 256; i++) {
30956
- const v = negative ? 1 - i / 255 : i / 255;
30957
- table[i] = clamp012((v - black) / span) ** gamma;
30958
- }
30959
- return table;
30960
- });
30961
- const chroma = ca.colorfulness < 0 ? 1 + ca.colorfulness / 100 : 1 + COLORFULNESS_GAIN * ca.colorfulness / 100;
31044
+ const black = ca.referenceBlack / 1e4 * 255;
31045
+ const span = Math.max(1e-6, ca.referenceWhite / 1e4 * 255 - black);
31046
+ const gain = Math.exp(CONTRAST_RATE * ca.contrast);
31047
+ const lift = BRIGHTNESS_STEP * ca.brightness;
31048
+ const chroma = ca.colorfulness !== 0 || ca.redGreenTint !== 0;
31049
+ const scale = 1 + COLORFULNESS_SCALE * ca.colorfulness;
30962
31050
  const angle = TINT_RADIANS * ca.redGreenTint / 100;
30963
- const cos = Math.cos(angle) * chroma;
30964
- const sin = Math.sin(angle) * chroma;
30965
- const slope = Math.exp(CONTRAST_GAIN * ca.contrast / 100);
30966
- const offset = 50 - 50 * slope + BRIGHTNESS_GAIN * ca.brightness / 100;
30967
31051
  const log = (ca.flags & CA_LOG_FILTER) !== 0;
30968
- const colour = ca.colorfulness !== 0 || ca.redGreenTint !== 0;
30969
- const out = (v, c) => {
30970
- v = clamp012(fromLightness(slope * lightness(clamp012(v)) + offset)) ** (1 / gammas[c]);
31052
+ const negative = (ca.flags & CA_NEGATIVE) !== 0;
31053
+ const curve = (value, channel) => {
31054
+ let v = 255 * (clamp255(value) / 255) ** gammas[channel];
31055
+ v = (v - black) / span * 255;
31056
+ v = v * gain + lift;
30971
31057
  if (log) {
30972
- v = Math.log2(1 + 7 * v) / 3;
31058
+ v = 255 * Math.log2(1 + 7 * clamp255(v) / 255) / 3;
31059
+ }
31060
+ if (negative) {
31061
+ v = 255 - clamp255(v);
30973
31062
  }
30974
- return Math.round(v * 255);
31063
+ return Math.round(clamp255(v));
30975
31064
  };
31065
+ if (!illuminant && !chroma) {
31066
+ const tables = [0, 1, 2].map((channel) => Uint8Array.from({ length: 256 }, (_, i) => curve(i, channel)));
31067
+ return (rgb2) => tables[0][rgb2 >> 16 & 255] << 16 | tables[1][rgb2 >> 8 & 255] << 8 | tables[2][rgb2 & 255];
31068
+ }
30976
31069
  return (rgb2) => {
30977
- let r = linear[0][rgb2 >> 16 & 255];
30978
- let g = linear[1][rgb2 >> 8 & 255];
30979
- let b = linear[2][rgb2 & 255];
30980
- if (colour) {
30981
- const x = RGB_TO_XYZ[0][0] * r + RGB_TO_XYZ[0][1] * g + RGB_TO_XYZ[0][2] * b;
30982
- const y = RGB_TO_XYZ[1][0] * r + RGB_TO_XYZ[1][1] * g + RGB_TO_XYZ[1][2] * b;
30983
- const z = RGB_TO_XYZ[2][0] * r + RGB_TO_XYZ[2][1] * g + RGB_TO_XYZ[2][2] * b;
30984
- const d = x + 15 * y + 3 * z;
30985
- if (d > 1e-12 && y > 1e-12) {
30986
- const du = 4 * x / d - WHITE_U;
30987
- const dv = 9 * y / d - WHITE_V;
30988
- const u = WHITE_U + du * cos - dv * sin;
30989
- const v = Math.max(1e-6, WHITE_V + du * sin + dv * cos);
30990
- const x2 = y * 9 * u / (4 * v);
30991
- const z2 = y * (12 - 3 * u - 20 * v) / (4 * v);
30992
- r = XYZ_TO_RGB[0][0] * x2 + XYZ_TO_RGB[0][1] * y + XYZ_TO_RGB[0][2] * z2;
30993
- g = XYZ_TO_RGB[1][0] * x2 + XYZ_TO_RGB[1][1] * y + XYZ_TO_RGB[1][2] * z2;
30994
- b = XYZ_TO_RGB[2][0] * x2 + XYZ_TO_RGB[2][1] * y + XYZ_TO_RGB[2][2] * z2;
30995
- }
30996
- }
30997
- return out(r, 0) << 16 | out(g, 1) << 8 | out(b, 2);
31070
+ let c = [rgb2 >> 16 & 255, rgb2 >> 8 & 255, rgb2 & 255];
31071
+ if (illuminant) {
31072
+ const mapped = lookupIlluminant(illuminant, c[0] / 255, c[1] / 255, c[2] / 255);
31073
+ c = [mapped[0] * 255, mapped[1] * 255, mapped[2] * 255];
31074
+ }
31075
+ if (chroma) {
31076
+ c = adjustChroma(clamp255(c[0]), clamp255(c[1]), clamp255(c[2]), scale, angle);
31077
+ }
31078
+ return curve(c[0], 0) << 16 | curve(c[1], 1) << 8 | curve(c[2], 2);
31079
+ };
31080
+ }
31081
+ function splitColorAdjustment(ca) {
31082
+ const neutral = DEFAULT_COLOR_ADJUSTMENT;
31083
+ const palette = { ...neutral, illuminant: ca.illuminant, colorfulness: ca.colorfulness, redGreenTint: ca.redGreenTint };
31084
+ const curves = { ...ca, illuminant: 0, colorfulness: 0, redGreenTint: 0 };
31085
+ return {
31086
+ palette: isIdentityColorAdjustment(palette) ? void 0 : palette,
31087
+ curves: isIdentityColorAdjustment(curves) ? void 0 : curves
30998
31088
  };
30999
31089
  }
31000
31090
  function colorAdjustRgb(rgbs, ca) {
@@ -31039,6 +31129,52 @@ function applyColorAdjustment(pixels, ca) {
31039
31129
  }
31040
31130
  }
31041
31131
 
31132
+ // src/emf-gdi-halftone-dither.ts
31133
+ var THRESHOLDS = [
31134
+ [238, 110, 198, 70, 229, 102, 204, 76, 236, 108, 195, 69, 228, 100, 205, 78],
31135
+ [46, 174, 7, 134, 39, 166, 12, 140, 45, 171, 5, 132, 36, 164, 15, 142],
31136
+ [209, 83, 249, 122, 218, 90, 239, 112, 208, 80, 247, 120, 215, 88, 242, 114],
31137
+ [18, 146, 59, 185, 26, 154, 49, 176, 16, 144, 56, 184, 25, 152, 50, 178],
31138
+ [226, 98, 202, 74, 233, 107, 192, 64, 224, 96, 200, 73, 232, 104, 194, 66],
31139
+ [35, 162, 11, 138, 42, 170, 1, 128, 32, 160, 8, 136, 40, 168, 2, 130],
31140
+ [219, 91, 243, 115, 211, 83, 253, 125, 221, 93, 245, 117, 212, 85, 250, 123],
31141
+ [28, 154, 52, 178, 19, 147, 61, 188, 29, 157, 53, 181, 22, 149, 59, 187],
31142
+ [235, 107, 195, 67, 226, 100, 205, 77, 236, 109, 197, 69, 229, 101, 202, 76],
31143
+ [43, 171, 4, 131, 35, 163, 14, 141, 45, 173, 5, 133, 38, 164, 11, 139],
31144
+ [207, 79, 246, 119, 215, 87, 240, 113, 209, 81, 249, 121, 216, 90, 239, 111],
31145
+ [15, 143, 56, 183, 23, 151, 49, 177, 18, 145, 57, 185, 25, 153, 47, 175],
31146
+ [222, 95, 198, 71, 231, 103, 193, 66, 225, 97, 201, 73, 232, 105, 191, 63],
31147
+ [32, 159, 8, 135, 39, 167, 1, 129, 33, 161, 9, 137, 42, 169, 1, 127],
31148
+ [222, 94, 246, 118, 214, 86, 252, 124, 219, 92, 243, 116, 212, 84, 253, 126],
31149
+ [30, 158, 54, 181, 22, 150, 60, 188, 28, 156, 52, 180, 21, 147, 62, 190]
31150
+ ];
31151
+ var PERIOD_X = 66;
31152
+ var PERIOD_Y = 65;
31153
+ function column(j) {
31154
+ return j < 63 ? j % 16 : j <= 64 ? 14 : 15;
31155
+ }
31156
+ function row(i) {
31157
+ return i < 63 ? i % 16 : i === 63 ? 14 : 15;
31158
+ }
31159
+ var mod2 = (a, m) => (a % m + m) % m;
31160
+ function ditherStartX(destLeft, brushOrgX) {
31161
+ const k = mod2(destLeft - brushOrgX - 2, 65);
31162
+ return k < 63 ? k : k + 1;
31163
+ }
31164
+ function ditherStartY(destTop, brushOrgY) {
31165
+ return mod2(destTop - brushOrgY - 2, PERIOD_Y);
31166
+ }
31167
+ function ditherThreshold(startX, startY, dx, dy) {
31168
+ return THRESHOLDS[row(mod2(startY + dy, PERIOD_Y))][column(mod2(startX + dx, PERIOD_X))];
31169
+ }
31170
+ function paletteLevel(n) {
31171
+ return Math.round(n * 255 / 31);
31172
+ }
31173
+ function ditherQuantize(v, threshold) {
31174
+ const n = Math.floor((31 * v + threshold) / 255);
31175
+ return paletteLevel(n < 0 ? 0 : n > 31 ? 31 : n);
31176
+ }
31177
+
31042
31178
  // src/emf-gdi-stretch.ts
31043
31179
  var BLACKONWHITE = 1;
31044
31180
  var WHITEONBLACK = 2;
@@ -31173,6 +31309,19 @@ function softTent(d) {
31173
31309
  softTentCache.set(key, value);
31174
31310
  return value;
31175
31311
  }
31312
+ function ditherPixels(px, w, h, dither, flipX, flipY, phaseX, phaseY) {
31313
+ for (let y = 0; y < h; y++) {
31314
+ const yy = phaseY ? phaseY[y] : flipY ? h - 1 - y : y;
31315
+ for (let x = 0; x < w; x++) {
31316
+ const xx = phaseX ? phaseX[x] : x;
31317
+ const threshold = ditherThreshold(dither.startX, dither.startY, xx, yy);
31318
+ const o = (y * w + x) * 3;
31319
+ px[o] = ditherQuantize(px[o], threshold);
31320
+ px[o + 1] = ditherQuantize(px[o + 1], threshold);
31321
+ px[o + 2] = ditherQuantize(px[o + 2], threshold);
31322
+ }
31323
+ }
31324
+ }
31176
31325
  var SPECKLE_OVERSHOOT = 4;
31177
31326
  function halftoneDespeckle(px, w, h) {
31178
31327
  const src = px.slice();
@@ -31232,7 +31381,7 @@ function halftoneSharpen(px, w, h) {
31232
31381
  }
31233
31382
  }
31234
31383
  }
31235
- function stretchHalftone(src, sx, sy, sw, sh, dw, dh, adjust, adjustAfterSampling = false, directDib = false) {
31384
+ function stretchHalftone(src, sx, sy, sw, sh, dw, dh, adjust, adjustAfterSampling = false, directDib = false, dither, curves) {
31236
31385
  const W = Math.max(0, Math.round(Math.abs(dw)));
31237
31386
  const H = Math.max(0, Math.round(Math.abs(dh)));
31238
31387
  const SW = Math.round(Math.abs(sw));
@@ -31263,12 +31412,18 @@ function stretchHalftone(src, sx, sy, sw, sh, dw, dh, adjust, adjustAfterSamplin
31263
31412
  const enlarging = W >= SW && H >= SH && (W > SW || H > SH);
31264
31413
  const reducing = W < SW && H < SH;
31265
31414
  const mixed = W > SW && H < SH || W < SW && H > SH;
31266
- const nearestMixed = mixed && (!adjust || adjustAfterSampling) && (W < SW && W * 2 > SW || H < SH && H * 2 > SH);
31267
- const nativeMixed = mixed && (!adjust || adjustAfterSampling) && Math.min(SW, W) >= 2 && Math.min(SH, H) >= 2 && (W > SW && H * 2 <= SH || H > SH && W * 2 <= SW);
31415
+ const dithered = !!dither && !!adjust && !adjustAfterSampling;
31416
+ const nearestMixed = mixed && (!adjust || adjustAfterSampling || dithered) && (W < SW && W * 2 > SW || H < SH && H * 2 > SH);
31417
+ const nativeMixed = mixed && (!adjust || adjustAfterSampling || dithered) && Math.min(SW, W) >= 2 && Math.min(SH, H) >= 2 && (W > SW && H * 2 <= SH || H > SH && W * 2 <= SW);
31268
31418
  if ((enlarging || nearestMixed) && !directDib) {
31269
31419
  halftoneDespeckle(rect, SW, SH);
31270
31420
  }
31271
- if (adjust && !adjustAfterSampling) {
31421
+ const reducedEven = W < SW ? SW % 2 === 0 && H % SH === 0 : SH % 2 === 0 && W % SW === 0;
31422
+ const ditherAtSource = dithered && (W >= SW && H >= SH || nativeMixed && reducedEven);
31423
+ if (ditherAtSource) {
31424
+ ditherPixels(rect, SW, SH, dither, false, flipY);
31425
+ }
31426
+ if (adjust && !adjustAfterSampling && (!dithered || ditherAtSource)) {
31272
31427
  adjust(rect);
31273
31428
  }
31274
31429
  const sampleW = nativeMixed ? Math.min(SW, W) : W;
@@ -31394,7 +31549,22 @@ function stretchHalftone(src, sx, sy, sw, sh, dw, dh, adjust, adjustAfterSamplin
31394
31549
  }
31395
31550
  }
31396
31551
  }
31552
+ if (dithered && !ditherAtSource) {
31553
+ const phase = (n, src2, dst, selectSource) => Int32Array.from({ length: n }, (_, i) => dst > src2 ? Math.floor(i * src2 / dst) : selectSource ? Math.max(0, Math.min(src2 - 1, Math.floor(((i + 1) * 2 * src2 - dst) / (2 * dst)))) : i);
31554
+ ditherPixels(
31555
+ out,
31556
+ W,
31557
+ H,
31558
+ dither,
31559
+ false,
31560
+ false,
31561
+ nearestMixed ? phase(W, SW, W, true) : void 0,
31562
+ nearestMixed ? phase(H, SH, H, false) : void 0
31563
+ );
31564
+ adjust(out);
31565
+ }
31397
31566
  if (adjust && adjustAfterSampling) adjust(out);
31567
+ if (curves && dithered) curves(out);
31398
31568
  for (let i = 0, o = 0; i < W * H; i++, o += 3) {
31399
31569
  data[i * 4] = out[o];
31400
31570
  data[i * 4 + 1] = out[o + 1];
@@ -31423,7 +31593,7 @@ function patternOperand(rCtx, brush) {
31423
31593
  state.brushOrgY
31424
31594
  );
31425
31595
  }
31426
- function drawSourceMapped(target, decoded, req, offsetX, offsetY, mode) {
31596
+ function drawSourceMapped(target, decoded, req, offsetX, offsetY, mode, brushOrgX, brushOrgY) {
31427
31597
  const dLeft = Math.min(req.dx, req.dx + req.dw) - offsetX;
31428
31598
  const dTop = Math.min(req.dy, req.dy + req.dh) - offsetY;
31429
31599
  const px = mode === HALFTONE ? stretchHalftone(
@@ -31436,7 +31606,9 @@ function drawSourceMapped(target, decoded, req, offsetX, offsetY, mode) {
31436
31606
  req.dh,
31437
31607
  decoded.adjust,
31438
31608
  decoded.adjustAfterSampling,
31439
- req.dibOrigin === "bottom-left"
31609
+ req.dibOrigin === "bottom-left",
31610
+ decoded.adjust && !decoded.adjustAfterSampling ? { startX: ditherStartX(Math.min(req.dx, req.dx + req.dw), brushOrgX), startY: ditherStartY(Math.min(req.dy, req.dy + req.dh), brushOrgY) } : void 0,
31611
+ decoded.curves
31440
31612
  ) : stretchGdi(decoded.pixels, req.sx, req.sy, req.sw, req.sh, req.dw, req.dh, mode);
31441
31613
  if (px.width === 0 || px.height === 0) {
31442
31614
  return;
@@ -31466,13 +31638,17 @@ function decodeSource(rCtx, req) {
31466
31638
  return null;
31467
31639
  }
31468
31640
  const ca = rCtx.state.colorAdjustment;
31469
- const adjust = req.stretch && rCtx.state.stretchBltMode === HALFTONE && ca ? (rgb2) => colorAdjustRgb(rgb2, ca) : void 0;
31641
+ const halftone = req.stretch && rCtx.state.stretchBltMode === HALFTONE && ca;
31642
+ const channelOnly = isChannelOnlyColorAdjustment(ca);
31643
+ const split = halftone && !channelOnly ? splitColorAdjustment(ca) : void 0;
31644
+ const adjust = halftone ? ((rgb2) => colorAdjustRgb(rgb2, split?.palette ?? ca)) : void 0;
31645
+ const curves = split?.curves;
31470
31646
  let { sy } = req;
31471
31647
  if (req.dibOrigin === "bottom-left" && rCtx.view.getInt32(req.source.bmi + 8, true) > 0) {
31472
31648
  sy = image.height - sy - req.sh;
31473
31649
  }
31474
31650
  return {
31475
- decoded: { pixels: image, adjust, adjustAfterSampling: isChannelOnlyColorAdjustment(ca) },
31651
+ decoded: { pixels: image, adjust, adjustAfterSampling: channelOnly, curves: curves ? (rgb2) => colorAdjustRgb(rgb2, curves) : void 0 },
31476
31652
  req: { ...req, sy }
31477
31653
  };
31478
31654
  }
@@ -31545,7 +31721,7 @@ function runTernary(rCtx, req, index, usesP, usesS) {
31545
31721
  if (!decoded) {
31546
31722
  return;
31547
31723
  }
31548
- drawSourceMapped(layer.ctx, decoded.decoded, decoded.req, rect.x, rect.y, rCtx.state.stretchBltMode);
31724
+ drawSourceMapped(layer.ctx, decoded.decoded, decoded.req, rect.x, rect.y, rCtx.state.stretchBltMode, rCtx.state.brushOrgX, rCtx.state.brushOrgY);
31549
31725
  src = canvasGetImageData(layer.ctx, 0, 0, rect.w, rect.h);
31550
31726
  }
31551
31727
  const dst = canvasGetImageData(ctx, rect.x, rect.y, rect.w, rect.h);
@@ -31724,7 +31900,7 @@ function executeBlit(rCtx, request) {
31724
31900
  case "copy": {
31725
31901
  const decoded = decodeSource(rCtx, req);
31726
31902
  if (decoded) {
31727
- drawSourceMapped(ctx, decoded.decoded, decoded.req, 0, 0, rCtx.state.stretchBltMode);
31903
+ drawSourceMapped(ctx, decoded.decoded, decoded.req, 0, 0, rCtx.state.stretchBltMode, rCtx.state.brushOrgX, rCtx.state.brushOrgY);
31728
31904
  }
31729
31905
  return;
31730
31906
  }
@@ -31901,9 +32077,9 @@ function readMask(rCtx, offset, offBmi, cbBmi, offBits, cbBits) {
31901
32077
  return null;
31902
32078
  }
31903
32079
  const out = new Uint8Array(width * height);
31904
- for (let row = 0; row < height; row++) {
31905
- const y = heightRaw > 0 ? height - 1 - row : row;
31906
- const rowOff = bits + row * stride;
32080
+ for (let row2 = 0; row2 < height; row2++) {
32081
+ const y = heightRaw > 0 ? height - 1 - row2 : row2;
32082
+ const rowOff = bits + row2 * stride;
31907
32083
  for (let x = 0; x < width; x++) {
31908
32084
  out[y * width + x] = view.getUint8(rowOff + (x >> 3)) >> 7 - (x & 7) & 1;
31909
32085
  }
@@ -31963,7 +32139,7 @@ function axisMap(rCtx, xDest, yDest, cxDest, cyDest, sx, sy, sw, sh) {
31963
32139
  const baseX = Math.min(sx, sx + sw);
31964
32140
  const baseY = Math.min(sy, sy + sh);
31965
32141
  const col = new Int32Array(x1 - x0);
31966
- const row = new Int32Array(y1 - y0);
32142
+ const row2 = new Int32Array(y1 - y0);
31967
32143
  const mirrored = dw < 0 || dh < 0;
31968
32144
  const pick = (i, len, n) => mirrored ? Math.min(len - 1, Math.floor(i * len / n)) : gdiNearest(i, len, n);
31969
32145
  for (let x = x0; x < x1; x++) {
@@ -31972,9 +32148,9 @@ function axisMap(rCtx, xDest, yDest, cxDest, cyDest, sx, sy, sw, sh) {
31972
32148
  }
31973
32149
  for (let y = y0; y < y1; y++) {
31974
32150
  const k = pick(y - top, ah, H);
31975
- row[y - y0] = sh < 0 !== dh < 0 ? baseY + ah - 1 - k : baseY + k;
32151
+ row2[y - y0] = sh < 0 !== dh < 0 ? baseY + ah - 1 - k : baseY + k;
31976
32152
  }
31977
- return { box: { x: x0, y: y0, w: x1 - x0, h: y1 - y0 }, col, row };
32153
+ return { box: { x: x0, y: y0, w: x1 - x0, h: y1 - y0 }, col, row: row2 };
31978
32154
  }
31979
32155
  function writePixels(rCtx, box, op) {
31980
32156
  const { ctx } = rCtx;
@@ -32063,15 +32239,15 @@ function handleAlphaBlend(rCtx, offset, dataOff, recSize) {
32063
32239
  if (!map) {
32064
32240
  return;
32065
32241
  }
32066
- const { box, col, row } = map;
32242
+ const { box, col, row: row2 } = map;
32067
32243
  if (!canReadBack(rCtx.ctx)) {
32068
32244
  drawAlphaOverlay(rCtx, map, src, sca, srcAlpha);
32069
32245
  return;
32070
32246
  }
32071
- writePixels(rCtx, box, (x, y, d) => alphaBlendPixel(texelAt(src, col[x - box.x], row[y - box.y]), d, sca, srcAlpha));
32247
+ writePixels(rCtx, box, (x, y, d) => alphaBlendPixel(texelAt(src, col[x - box.x], row2[y - box.y]), d, sca, srcAlpha));
32072
32248
  }
32073
32249
  function drawAlphaOverlay(rCtx, map, src, sca, srcAlpha) {
32074
- const { box, col, row } = map;
32250
+ const { box, col, row: row2 } = map;
32075
32251
  const scratch = acquireScratch(box.w, box.h);
32076
32252
  if (!scratch) {
32077
32253
  return;
@@ -32079,7 +32255,7 @@ function drawAlphaOverlay(rCtx, map, src, sca, srcAlpha) {
32079
32255
  const data = new Uint8ClampedArray(box.w * box.h * 4);
32080
32256
  for (let y = 0; y < box.h; y++) {
32081
32257
  for (let x = 0; x < box.w; x++) {
32082
- const s = texelAt(src, col[x], row[y]);
32258
+ const s = texelAt(src, col[x], row2[y]);
32083
32259
  const a = srcAlpha ? (s >>> 24) * sca / 255 : sca;
32084
32260
  const i = (y * box.w + x) * 4;
32085
32261
  const k = srcAlpha && s >>> 24 > 0 ? 255 / (s >>> 24) : 1;
@@ -32114,9 +32290,9 @@ function handleTransparentBlt(rCtx, offset, dataOff, recSize) {
32114
32290
  if (!map) {
32115
32291
  return;
32116
32292
  }
32117
- const { box, col, row } = map;
32293
+ const { box, col, row: row2 } = map;
32118
32294
  writePixels(rCtx, box, (x, y) => {
32119
- const s = texelAt(src, col[x - box.x], row[y - box.y]) & 16777215;
32295
+ const s = texelAt(src, col[x - box.x], row2[y - box.y]) & 16777215;
32120
32296
  return s === key ? -1 : s;
32121
32297
  });
32122
32298
  }
@@ -32147,7 +32323,7 @@ function handleMaskBlt(rCtx, offset, dataOff, recSize) {
32147
32323
  if (!map) {
32148
32324
  return;
32149
32325
  }
32150
- const { box, col, row } = map;
32326
+ const { box, col, row: row2 } = map;
32151
32327
  const needsDest = rop3Operands(fore).usesD || mask !== null && rop3Operands(back).usesD;
32152
32328
  if (needsDest && !canReadBack(rCtx.ctx)) {
32153
32329
  return;
@@ -32157,7 +32333,7 @@ function handleMaskBlt(rCtx, offset, dataOff, recSize) {
32157
32333
  const my0 = Math.min(r.sy, r.sy + r.sh);
32158
32334
  writePixels(rCtx, box, (x, y, d) => {
32159
32335
  const sxp = col[x - box.x];
32160
- const syp = row[y - box.y];
32336
+ const syp = row2[y - box.y];
32161
32337
  let index = fore;
32162
32338
  if (mask) {
32163
32339
  const mx = xMask + sxp - mx0;
@@ -32272,10 +32448,10 @@ function handleSetDibitsToDevice(rCtx, offset, dataOff, recSize) {
32272
32448
  if (!map) {
32273
32449
  return;
32274
32450
  }
32275
- const { box, col, row } = map;
32451
+ const { box, col, row: row2 } = map;
32276
32452
  writePixels(rCtx, box, (x, y) => {
32277
32453
  const i = col[x - box.x];
32278
- const j = row[y - box.y];
32454
+ const j = row2[y - box.y];
32279
32455
  const fromBottom = ySrc + cy - 1 - j;
32280
32456
  const bandRow = topDown ? fullRows - 1 - fromBottom - startScan : scans - 1 - (fromBottom - startScan);
32281
32457
  if (bandRow < 0 || bandRow >= band.height) {
@@ -32497,8 +32673,8 @@ function decodeAnsiRecord(bytes, charSet) {
32497
32673
  const byteLengths = [];
32498
32674
  for (let i = 0; i < bytes.length; i++) {
32499
32675
  const lead = bytes[i];
32500
- const row = JOHAB_ROWS[lead];
32501
- const code = row && i + 1 < bytes.length ? row.charCodeAt(bytes[i + 1]) : 65533;
32676
+ const row2 = JOHAB_ROWS[lead];
32677
+ const code = row2 && i + 1 < bytes.length ? row2.charCodeAt(bytes[i + 1]) : 65533;
32502
32678
  const count = lead < 128 || code === 65533 ? 1 : 2;
32503
32679
  codes.push(lead < 128 ? lead : code);
32504
32680
  byteLengths.push(count);
@@ -38153,23 +38329,23 @@ function spansOf(p, rects) {
38153
38329
  const x0 = Math.round(l * p.kx);
38154
38330
  const x1 = Math.round(r * p.kx);
38155
38331
  for (let y = Math.round(t * p.ky); y < Math.round(b * p.ky); y++) {
38156
- let row = rows.get(y);
38157
- if (!row) {
38158
- row = [];
38159
- rows.set(y, row);
38332
+ let row2 = rows.get(y);
38333
+ if (!row2) {
38334
+ row2 = [];
38335
+ rows.set(y, row2);
38160
38336
  }
38161
- row.push([x0, x1]);
38337
+ row2.push([x0, x1]);
38162
38338
  }
38163
38339
  }
38164
38340
  for (const y of [...rows.keys()].sort((a, b) => a - b)) {
38165
- const row = rows.get(y).sort((a, b) => a[0] - b[0]);
38166
- let [s0, s1] = row[0];
38167
- for (let i = 1; i < row.length; i++) {
38168
- if (row[i][0] <= s1) {
38169
- s1 = Math.max(s1, row[i][1]);
38341
+ const row2 = rows.get(y).sort((a, b) => a[0] - b[0]);
38342
+ let [s0, s1] = row2[0];
38343
+ for (let i = 1; i < row2.length; i++) {
38344
+ if (row2[i][0] <= s1) {
38345
+ s1 = Math.max(s1, row2[i][1]);
38170
38346
  } else {
38171
38347
  spans.add(y, s0, s1);
38172
- [s0, s1] = row[i];
38348
+ [s0, s1] = row2[i];
38173
38349
  }
38174
38350
  }
38175
38351
  spans.add(y, s0, s1);
@@ -38281,8 +38457,8 @@ function devicePixelSpans(p, x, y) {
38281
38457
  const x1 = Math.max(x0 + 1, Math.round((x + 1) * p.kx));
38282
38458
  const y0 = Math.round(y * p.ky);
38283
38459
  const y1 = Math.max(y0 + 1, Math.round((y + 1) * p.ky));
38284
- for (let row = y0; row < y1; row++) {
38285
- spans.add(row, x0, x1);
38460
+ for (let row2 = y0; row2 < y1; row2++) {
38461
+ spans.add(row2, x0, x1);
38286
38462
  }
38287
38463
  return spans;
38288
38464
  }
@@ -38342,14 +38518,14 @@ function wmfExtFloodFill(p, x, y, colorRef, type) {
38342
38518
  if (py + 1 < h) visit(i + w);
38343
38519
  }
38344
38520
  const spans = new SpanList();
38345
- for (let row = 0; row < h; row++) {
38521
+ for (let row2 = 0; row2 < h; row2++) {
38346
38522
  let run = -1;
38347
38523
  for (let col = 0; col <= w; col++) {
38348
- const on = col < w && seen[row * w + col] === 1;
38524
+ const on = col < w && seen[row2 * w + col] === 1;
38349
38525
  if (on && run < 0) {
38350
38526
  run = col;
38351
38527
  } else if (!on && run >= 0) {
38352
- spans.add(row, run, col);
38528
+ spans.add(row2, run, col);
38353
38529
  run = -1;
38354
38530
  }
38355
38531
  }