emf-converter 4.4.8 → 4.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.js +192 -96
- package/dist/browser.mjs +192 -96
- package/dist/index.js +196 -100
- package/dist/index.mjs +196 -100
- package/package.json +1 -1
package/dist/browser.js
CHANGED
|
@@ -1369,21 +1369,21 @@ var require_decoder = __commonJS({
|
|
|
1369
1369
|
successiveACState = 0;
|
|
1370
1370
|
}
|
|
1371
1371
|
}
|
|
1372
|
-
function decodeMcu(component2,
|
|
1372
|
+
function decodeMcu(component2, decode4, mcu2, row, col) {
|
|
1373
1373
|
var mcuRow = mcu2 / mcusPerLine | 0;
|
|
1374
1374
|
var mcuCol = mcu2 % mcusPerLine;
|
|
1375
1375
|
var blockRow = mcuRow * component2.v + row;
|
|
1376
1376
|
var blockCol = mcuCol * component2.h + col;
|
|
1377
1377
|
if (component2.blocks[blockRow] === void 0 && opts.tolerantDecoding)
|
|
1378
1378
|
return;
|
|
1379
|
-
|
|
1379
|
+
decode4(component2, component2.blocks[blockRow][blockCol]);
|
|
1380
1380
|
}
|
|
1381
|
-
function decodeBlock(component2,
|
|
1381
|
+
function decodeBlock(component2, decode4, mcu2) {
|
|
1382
1382
|
var blockRow = mcu2 / component2.blocksPerLine | 0;
|
|
1383
1383
|
var blockCol = mcu2 % component2.blocksPerLine;
|
|
1384
1384
|
if (component2.blocks[blockRow] === void 0 && opts.tolerantDecoding)
|
|
1385
1385
|
return;
|
|
1386
|
-
|
|
1386
|
+
decode4(component2, component2.blocks[blockRow][blockCol]);
|
|
1387
1387
|
}
|
|
1388
1388
|
var componentsLength = components.length;
|
|
1389
1389
|
var component, i, j, k, n;
|
|
@@ -2104,12 +2104,12 @@ var require_decoder = __commonJS({
|
|
|
2104
2104
|
return constructor;
|
|
2105
2105
|
})();
|
|
2106
2106
|
if (typeof module !== "undefined") {
|
|
2107
|
-
module.exports =
|
|
2107
|
+
module.exports = decode3;
|
|
2108
2108
|
} else if (typeof window !== "undefined") {
|
|
2109
2109
|
window["jpeg-js"] = window["jpeg-js"] || {};
|
|
2110
|
-
window["jpeg-js"].decode =
|
|
2110
|
+
window["jpeg-js"].decode = decode3;
|
|
2111
2111
|
}
|
|
2112
|
-
function
|
|
2112
|
+
function decode3(jpegData, userOpts = {}) {
|
|
2113
2113
|
var defaultOpts = {
|
|
2114
2114
|
// "undefined" means "Choose whether to transform colors based on the image’s color model."
|
|
2115
2115
|
colorTransform: void 0,
|
|
@@ -2161,10 +2161,10 @@ var require_decoder = __commonJS({
|
|
|
2161
2161
|
var require_jpeg_js = __commonJS({
|
|
2162
2162
|
"node_modules/jpeg-js/index.js"(exports, module) {
|
|
2163
2163
|
var encode2 = require_encoder();
|
|
2164
|
-
var
|
|
2164
|
+
var decode3 = require_decoder();
|
|
2165
2165
|
module.exports = {
|
|
2166
2166
|
encode: encode2,
|
|
2167
|
-
decode:
|
|
2167
|
+
decode: decode3
|
|
2168
2168
|
};
|
|
2169
2169
|
}
|
|
2170
2170
|
});
|
|
@@ -4762,8 +4762,8 @@ var require_deflate2 = __commonJS({
|
|
|
4762
4762
|
var Z_DEFAULT_COMPRESSION = -1;
|
|
4763
4763
|
var Z_DEFAULT_STRATEGY = 0;
|
|
4764
4764
|
var Z_DEFLATED = 8;
|
|
4765
|
-
function Deflate(
|
|
4766
|
-
if (!(this instanceof Deflate)) return new Deflate(
|
|
4765
|
+
function Deflate(options2) {
|
|
4766
|
+
if (!(this instanceof Deflate)) return new Deflate(options2);
|
|
4767
4767
|
this.options = utils.assign({
|
|
4768
4768
|
level: Z_DEFAULT_COMPRESSION,
|
|
4769
4769
|
method: Z_DEFLATED,
|
|
@@ -4772,7 +4772,7 @@ var require_deflate2 = __commonJS({
|
|
|
4772
4772
|
memLevel: 8,
|
|
4773
4773
|
strategy: Z_DEFAULT_STRATEGY,
|
|
4774
4774
|
to: ""
|
|
4775
|
-
},
|
|
4775
|
+
}, options2 || {});
|
|
4776
4776
|
var opt = this.options;
|
|
4777
4777
|
if (opt.raw && opt.windowBits > 0) {
|
|
4778
4778
|
opt.windowBits = -opt.windowBits;
|
|
@@ -4880,23 +4880,23 @@ var require_deflate2 = __commonJS({
|
|
|
4880
4880
|
this.err = status;
|
|
4881
4881
|
this.msg = this.strm.msg;
|
|
4882
4882
|
};
|
|
4883
|
-
function deflate(input,
|
|
4884
|
-
var deflator = new Deflate(
|
|
4883
|
+
function deflate(input, options2) {
|
|
4884
|
+
var deflator = new Deflate(options2);
|
|
4885
4885
|
deflator.push(input, true);
|
|
4886
4886
|
if (deflator.err) {
|
|
4887
4887
|
throw deflator.msg || msg[deflator.err];
|
|
4888
4888
|
}
|
|
4889
4889
|
return deflator.result;
|
|
4890
4890
|
}
|
|
4891
|
-
function deflateRaw(input,
|
|
4892
|
-
|
|
4893
|
-
|
|
4894
|
-
return deflate(input,
|
|
4891
|
+
function deflateRaw(input, options2) {
|
|
4892
|
+
options2 = options2 || {};
|
|
4893
|
+
options2.raw = true;
|
|
4894
|
+
return deflate(input, options2);
|
|
4895
4895
|
}
|
|
4896
|
-
function gzip(input,
|
|
4897
|
-
|
|
4898
|
-
|
|
4899
|
-
return deflate(input,
|
|
4896
|
+
function gzip(input, options2) {
|
|
4897
|
+
options2 = options2 || {};
|
|
4898
|
+
options2.gzip = true;
|
|
4899
|
+
return deflate(input, options2);
|
|
4900
4900
|
}
|
|
4901
4901
|
exports.Deflate = Deflate;
|
|
4902
4902
|
exports.deflate = deflate;
|
|
@@ -6759,13 +6759,13 @@ var require_inflate2 = __commonJS({
|
|
|
6759
6759
|
var ZStream = require_zstream();
|
|
6760
6760
|
var GZheader = require_gzheader();
|
|
6761
6761
|
var toString = Object.prototype.toString;
|
|
6762
|
-
function Inflate(
|
|
6763
|
-
if (!(this instanceof Inflate)) return new Inflate(
|
|
6762
|
+
function Inflate(options2) {
|
|
6763
|
+
if (!(this instanceof Inflate)) return new Inflate(options2);
|
|
6764
6764
|
this.options = utils.assign({
|
|
6765
6765
|
chunkSize: 16384,
|
|
6766
6766
|
windowBits: 0,
|
|
6767
6767
|
to: ""
|
|
6768
|
-
},
|
|
6768
|
+
}, options2 || {});
|
|
6769
6769
|
var opt = this.options;
|
|
6770
6770
|
if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) {
|
|
6771
6771
|
opt.windowBits = -opt.windowBits;
|
|
@@ -6773,7 +6773,7 @@ var require_inflate2 = __commonJS({
|
|
|
6773
6773
|
opt.windowBits = -15;
|
|
6774
6774
|
}
|
|
6775
6775
|
}
|
|
6776
|
-
if (opt.windowBits >= 0 && opt.windowBits < 16 && !(
|
|
6776
|
+
if (opt.windowBits >= 0 && opt.windowBits < 16 && !(options2 && options2.windowBits)) {
|
|
6777
6777
|
opt.windowBits += 32;
|
|
6778
6778
|
}
|
|
6779
6779
|
if (opt.windowBits > 15 && opt.windowBits < 48) {
|
|
@@ -6901,18 +6901,18 @@ var require_inflate2 = __commonJS({
|
|
|
6901
6901
|
this.err = status;
|
|
6902
6902
|
this.msg = this.strm.msg;
|
|
6903
6903
|
};
|
|
6904
|
-
function inflate(input,
|
|
6905
|
-
var inflator = new Inflate(
|
|
6904
|
+
function inflate(input, options2) {
|
|
6905
|
+
var inflator = new Inflate(options2);
|
|
6906
6906
|
inflator.push(input, true);
|
|
6907
6907
|
if (inflator.err) {
|
|
6908
6908
|
throw inflator.msg || msg[inflator.err];
|
|
6909
6909
|
}
|
|
6910
6910
|
return inflator.result;
|
|
6911
6911
|
}
|
|
6912
|
-
function inflateRaw(input,
|
|
6913
|
-
|
|
6914
|
-
|
|
6915
|
-
return inflate(input,
|
|
6912
|
+
function inflateRaw(input, options2) {
|
|
6913
|
+
options2 = options2 || {};
|
|
6914
|
+
options2.raw = true;
|
|
6915
|
+
return inflate(input, options2);
|
|
6916
6916
|
}
|
|
6917
6917
|
exports.Inflate = Inflate;
|
|
6918
6918
|
exports.inflate = inflate;
|
|
@@ -10045,7 +10045,7 @@ function inflateZlibSync(input) {
|
|
|
10045
10045
|
bitCnt -= n;
|
|
10046
10046
|
return v;
|
|
10047
10047
|
};
|
|
10048
|
-
const
|
|
10048
|
+
const decode3 = (h) => {
|
|
10049
10049
|
let code = 0;
|
|
10050
10050
|
let first = 0;
|
|
10051
10051
|
let index = 0;
|
|
@@ -10103,7 +10103,7 @@ function inflateZlibSync(input) {
|
|
|
10103
10103
|
const clh = buildHuffman(cl, 19);
|
|
10104
10104
|
const lens = new Uint8Array(hlit + hdist);
|
|
10105
10105
|
for (let i = 0; i < hlit + hdist; ) {
|
|
10106
|
-
const sym =
|
|
10106
|
+
const sym = decode3(clh);
|
|
10107
10107
|
if (sym < 16) {
|
|
10108
10108
|
lens[i++] = sym;
|
|
10109
10109
|
} else if (sym === 16) {
|
|
@@ -10123,7 +10123,7 @@ function inflateZlibSync(input) {
|
|
|
10123
10123
|
throw new Error("inflate: invalid block type");
|
|
10124
10124
|
}
|
|
10125
10125
|
for (; ; ) {
|
|
10126
|
-
const sym =
|
|
10126
|
+
const sym = decode3(lit);
|
|
10127
10127
|
if (sym < 256) {
|
|
10128
10128
|
need(1);
|
|
10129
10129
|
out[outLen++] = sym;
|
|
@@ -10132,7 +10132,7 @@ function inflateZlibSync(input) {
|
|
|
10132
10132
|
} else {
|
|
10133
10133
|
const li = sym - 257;
|
|
10134
10134
|
const len = LENGTH_BASE[li] + bits(LENGTH_EXTRA[li]);
|
|
10135
|
-
const di =
|
|
10135
|
+
const di = decode3(dist);
|
|
10136
10136
|
const d = DIST_BASE[di] + bits(DIST_EXTRA[di]);
|
|
10137
10137
|
need(len);
|
|
10138
10138
|
for (let k = 0; k < len; k++) {
|
|
@@ -10312,15 +10312,74 @@ async function decodePng(bytes) {
|
|
|
10312
10312
|
return { width, height, data: out };
|
|
10313
10313
|
}
|
|
10314
10314
|
|
|
10315
|
-
// src/
|
|
10315
|
+
// src/jpeg-decoder.ts
|
|
10316
10316
|
var import_jpeg_js = __toESM(require_jpeg_js());
|
|
10317
|
+
var options = { useTArray: true, formatAsRGBA: true, maxResolutionInMP: 67.108864, maxMemoryUsageInMB: 512 };
|
|
10318
|
+
function decodeJpegPixels(bytes, colorTransform) {
|
|
10319
|
+
let sampling = [];
|
|
10320
|
+
let adobeTransform;
|
|
10321
|
+
let adobeOffset = -1;
|
|
10322
|
+
for (let position = 2; position + 4 <= bytes.length; ) {
|
|
10323
|
+
if (bytes[position] !== 255) break;
|
|
10324
|
+
if (bytes[position + 1] === 255) {
|
|
10325
|
+
position++;
|
|
10326
|
+
continue;
|
|
10327
|
+
}
|
|
10328
|
+
const marker = bytes[position + 1];
|
|
10329
|
+
if (marker === 218 || marker === 217) break;
|
|
10330
|
+
const length = bytes[position + 2] * 256 + bytes[position + 3];
|
|
10331
|
+
if (length < 2 || position + length + 2 > bytes.length) break;
|
|
10332
|
+
const start = position + 4;
|
|
10333
|
+
if ([192, 193, 194].includes(marker) && length >= 8) {
|
|
10334
|
+
const count = bytes[start + 5];
|
|
10335
|
+
if (length >= 8 + 3 * count) sampling = Array.from({ length: count }, (_, i) => ({ id: bytes[start + 6 + i * 3], h: bytes[start + 7 + i * 3] >> 4, v: bytes[start + 7 + i * 3] & 15 }));
|
|
10336
|
+
}
|
|
10337
|
+
if (marker === 238 && length >= 14 && String.fromCharCode(...bytes.subarray(start, start + 5)) === "Adobe") {
|
|
10338
|
+
adobeOffset = start + 11;
|
|
10339
|
+
adobeTransform = bytes[adobeOffset];
|
|
10340
|
+
}
|
|
10341
|
+
position += length + 2;
|
|
10342
|
+
}
|
|
10343
|
+
const transform = colorTransform ?? (adobeTransform !== void 0 ? adobeTransform !== 0 : !sampling.every((component, i) => component.id === [82, 71, 66][i]));
|
|
10344
|
+
if (sampling.length !== 3 || !transform) return (0, import_jpeg_js.decode)(bytes, { ...options, colorTransform: sampling.length === 3 ? transform : colorTransform });
|
|
10345
|
+
const maxH = Math.max(...sampling.map((c) => c.h)), maxV = Math.max(...sampling.map((c) => c.v));
|
|
10346
|
+
if (sampling.some((c) => !c.h || !c.v || maxH % c.h || maxV % c.v)) return (0, import_jpeg_js.decode)(bytes, { ...options, colorTransform });
|
|
10347
|
+
let encoded = bytes;
|
|
10348
|
+
if (adobeTransform) {
|
|
10349
|
+
encoded = bytes.slice();
|
|
10350
|
+
encoded[adobeOffset] = 0;
|
|
10351
|
+
}
|
|
10352
|
+
const raw = (0, import_jpeg_js.decode)(encoded, { ...options, colorTransform: false });
|
|
10353
|
+
const { width, height } = raw;
|
|
10354
|
+
const data = new Uint8Array(raw.data.length);
|
|
10355
|
+
const sample2 = (x, y, channel) => {
|
|
10356
|
+
const sx = maxH / sampling[channel].h, sy = maxV / sampling[channel].v;
|
|
10357
|
+
const px = Math.max(0, Math.min(Math.ceil(width / sx) - 1, (x + 0.5) / sx - 0.5));
|
|
10358
|
+
const py = Math.max(0, Math.min(Math.ceil(height / sy) - 1, (y + 0.5) / sy - 0.5));
|
|
10359
|
+
const ix = Math.floor(px), iy = Math.floor(py), fx = px - ix, fy = py - iy;
|
|
10360
|
+
const at = (xx, yy) => raw.data[(Math.min(height - 1, yy * sy) * width + Math.min(width - 1, xx * sx)) * 4 + channel];
|
|
10361
|
+
return (1 - fy) * ((1 - fx) * at(ix, iy) + fx * at(ix + 1, iy)) + fy * ((1 - fx) * at(ix, iy + 1) + fx * at(ix + 1, iy + 1));
|
|
10362
|
+
};
|
|
10363
|
+
const byte = (value) => Math.max(0, Math.min(255, Math.round(value)));
|
|
10364
|
+
for (let y = 0; y < height; y++) for (let x = 0; x < width; x++) {
|
|
10365
|
+
const luma = sample2(x, y, 0), cb = sample2(x, y, 1) - 128, cr = sample2(x, y, 2) - 128;
|
|
10366
|
+
const offset = (y * width + x) * 4;
|
|
10367
|
+
data[offset] = byte(luma + 1.402 * cr);
|
|
10368
|
+
data[offset + 1] = byte(luma - 0.3441363 * cb - 0.71413636 * cr);
|
|
10369
|
+
data[offset + 2] = byte(luma + 1.772 * cb);
|
|
10370
|
+
data[offset + 3] = 255;
|
|
10371
|
+
}
|
|
10372
|
+
return { ...raw, data };
|
|
10373
|
+
}
|
|
10374
|
+
|
|
10375
|
+
// src/image-codec-fallback.ts
|
|
10317
10376
|
var import_gifuct_js = __toESM(require_lib2());
|
|
10318
10377
|
var UTIF = __toESM(require_UTIF());
|
|
10319
10378
|
|
|
10320
10379
|
// src/tiff-group3.ts
|
|
10321
10380
|
function normalizeGroup3(buffer, page) {
|
|
10322
|
-
const
|
|
10323
|
-
if (!Array.isArray(page.t259) || page.t259[0] !== 3 || (
|
|
10381
|
+
const options2 = Array.isArray(page.t292) ? Number(page.t292[0]) : 0;
|
|
10382
|
+
if (!Array.isArray(page.t259) || page.t259[0] !== 3 || (options2 & 3) !== 0) return buffer;
|
|
10324
10383
|
const offsets = page.t273, lengths = page.t279;
|
|
10325
10384
|
if (!Array.isArray(offsets) || !Array.isArray(lengths) || offsets.length !== lengths.length) return buffer;
|
|
10326
10385
|
const source = new Uint8Array(buffer);
|
|
@@ -10354,16 +10413,50 @@ function normalizeGroup3(buffer, page) {
|
|
|
10354
10413
|
return offset;
|
|
10355
10414
|
});
|
|
10356
10415
|
page.t279 = strips.map((strip) => strip.length);
|
|
10357
|
-
page.t292 = [
|
|
10416
|
+
page.t292 = [options2 | 1];
|
|
10358
10417
|
return normalized.buffer;
|
|
10359
10418
|
}
|
|
10360
10419
|
|
|
10420
|
+
// src/tiff-jpeg.ts
|
|
10421
|
+
function decodeJpegTiff(bytes, page) {
|
|
10422
|
+
const values = (tag2) => Array.isArray(page[tag2]) ? page[tag2].map(Number) : [];
|
|
10423
|
+
const first = (tag2, fallback = 0) => values(tag2)[0] ?? fallback;
|
|
10424
|
+
const photo = first("t262");
|
|
10425
|
+
if (first("t259") !== 7 || photo !== 2 && photo !== 6 || first("t277") !== 3 || first("t284", 1) !== 1 || values("t258").some((v) => v !== 8)) return null;
|
|
10426
|
+
const width = first("t256"), height = first("t257");
|
|
10427
|
+
const tiled = !!page.t322;
|
|
10428
|
+
const blockWidth = tiled ? first("t322") : width;
|
|
10429
|
+
const blockHeight = tiled ? first("t323") : first("t278", height);
|
|
10430
|
+
if (!Number.isInteger(blockWidth) || !Number.isInteger(blockHeight) || blockWidth <= 0 || blockHeight <= 0 || blockWidth > 8192 || blockHeight > 8192) throw new Error("Invalid TIFF JPEG block");
|
|
10431
|
+
const offsets = values(tiled ? "t324" : "t273");
|
|
10432
|
+
const lengths = values(tiled ? "t325" : "t279");
|
|
10433
|
+
const columns = Math.ceil(width / blockWidth), rows = Math.ceil(height / blockHeight);
|
|
10434
|
+
if (offsets.length !== columns * rows || lengths.length !== offsets.length) throw new Error("Invalid TIFF JPEG offsets");
|
|
10435
|
+
const tables = page.t347 instanceof Uint8Array ? page.t347 : new Uint8Array(values("t347"));
|
|
10436
|
+
const tableLength = tables.length >= 2 && tables[tables.length - 2] === 255 && tables[tables.length - 1] === 217 ? tables.length - 2 : tables.length;
|
|
10437
|
+
const result = new Uint8ClampedArray(width * height * 4);
|
|
10438
|
+
for (let block = 0; block < offsets.length; block++) {
|
|
10439
|
+
const offset = offsets[block], length = lengths[block];
|
|
10440
|
+
if (!Number.isInteger(offset) || !Number.isInteger(length) || offset < 0 || length <= 0 || offset + length > bytes.length) throw new Error("Invalid TIFF JPEG data");
|
|
10441
|
+
const skip = tableLength && bytes[offset] === 255 && bytes[offset + 1] === 216 ? 2 : 0;
|
|
10442
|
+
const jpeg = new Uint8Array(tableLength + length - skip);
|
|
10443
|
+
jpeg.set(tables.subarray(0, tableLength));
|
|
10444
|
+
jpeg.set(bytes.subarray(offset + skip, offset + length), tableLength);
|
|
10445
|
+
const decoded = decodeJpegPixels(jpeg, photo === 6);
|
|
10446
|
+
const x = block % columns * blockWidth, y = Math.floor(block / columns) * blockHeight;
|
|
10447
|
+
const copyWidth = Math.min(blockWidth, width - x), copyHeight = Math.min(blockHeight, height - y);
|
|
10448
|
+
if (decoded.width !== blockWidth || decoded.height < copyHeight || decoded.height > blockHeight) throw new Error("Invalid TIFF JPEG dimensions");
|
|
10449
|
+
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);
|
|
10450
|
+
}
|
|
10451
|
+
return result;
|
|
10452
|
+
}
|
|
10453
|
+
|
|
10361
10454
|
// src/image-codec-fallback.ts
|
|
10362
10455
|
var validSize = (w, h) => Number.isInteger(w) && Number.isInteger(h) && w > 0 && h > 0 && w <= 8192 && h <= 8192;
|
|
10363
10456
|
function decodeImageCodecFallback(bytes) {
|
|
10364
10457
|
try {
|
|
10365
10458
|
if (bytes[0] === 255 && bytes[1] === 216) {
|
|
10366
|
-
const p = (
|
|
10459
|
+
const p = decodeJpegPixels(bytes);
|
|
10367
10460
|
return validSize(p.width, p.height) ? { ...p, data: new Uint8ClampedArray(p.data) } : null;
|
|
10368
10461
|
}
|
|
10369
10462
|
if (bytes.length >= 13 && String.fromCharCode(...bytes.subarray(0, 6)).match(/^GIF8[79]a$/)) {
|
|
@@ -10397,6 +10490,9 @@ function decodeImageCodecFallback(bytes) {
|
|
|
10397
10490
|
const pages = UTIF.decode(buffer);
|
|
10398
10491
|
const page = pages.find((p) => p.t256 && p.t257);
|
|
10399
10492
|
if (!page || !Array.isArray(page.t256) || !Array.isArray(page.t257) || !validSize(Number(page.t256[0]), Number(page.t257[0]))) return null;
|
|
10493
|
+
const jpeg = decodeJpegTiff(new Uint8Array(buffer), page);
|
|
10494
|
+
if (jpeg) return { data: jpeg, width: Number(page.t256[0]), height: Number(page.t257[0]) };
|
|
10495
|
+
if (Array.isArray(page.t259) && page.t259[0] === 32946) page.t259 = [8];
|
|
10400
10496
|
UTIF.decodeImage(normalizeGroup3(buffer, page), page);
|
|
10401
10497
|
const width = page.width, height = page.height;
|
|
10402
10498
|
if (!validSize(width, height)) return null;
|
|
@@ -14314,13 +14410,13 @@ function writeJsx(node, depth, out, rootSpread) {
|
|
|
14314
14410
|
}
|
|
14315
14411
|
out.push(`${pad}</${node.tag}>`);
|
|
14316
14412
|
}
|
|
14317
|
-
function svgTreeToJsx(node,
|
|
14318
|
-
const name =
|
|
14413
|
+
function svgTreeToJsx(node, options2 = {}) {
|
|
14414
|
+
const name = options2.componentName ?? "Metafile";
|
|
14319
14415
|
if (!/^[A-Z][A-Za-z0-9_$]*$/.test(name)) {
|
|
14320
14416
|
throw new TypeError(`svgTreeToJsx: componentName must be a PascalCase identifier, got ${JSON.stringify(name)}`);
|
|
14321
14417
|
}
|
|
14322
|
-
const ts =
|
|
14323
|
-
const spread =
|
|
14418
|
+
const ts = options2.typescript ?? true;
|
|
14419
|
+
const spread = options2.spreadProps ?? true;
|
|
14324
14420
|
const body = [];
|
|
14325
14421
|
writeJsx(node, 2, body, spread);
|
|
14326
14422
|
const params = spread ? ts ? "props: SVGProps<SVGSVGElement>" : "props" : "";
|
|
@@ -18672,11 +18768,11 @@ function capFigures(path, closeAll) {
|
|
|
18672
18768
|
}, [1, 0, 0, 1, 0, 0]);
|
|
18673
18769
|
return closeAll ? figures.map((f) => ({ ...f, closed: true })) : figures;
|
|
18674
18770
|
}
|
|
18675
|
-
function customCapGeometry(figures, width, start, end,
|
|
18771
|
+
function customCapGeometry(figures, width, start, end, options2 = {}) {
|
|
18676
18772
|
const out = [];
|
|
18677
18773
|
const capped = [];
|
|
18678
18774
|
const polygons = [];
|
|
18679
|
-
const minFill =
|
|
18775
|
+
const minFill = options2.minFillScale ?? 2;
|
|
18680
18776
|
for (const fig of figures) {
|
|
18681
18777
|
if (fig.closed || !start && !end) {
|
|
18682
18778
|
out.push(fig);
|
|
@@ -18729,7 +18825,7 @@ function customCapGeometry(figures, width, start, end, options = {}) {
|
|
|
18729
18825
|
const pen = {
|
|
18730
18826
|
// GDI+'s widener never makes an outline thinner than one device pixel.
|
|
18731
18827
|
half: Math.max(ws, 1) / 2,
|
|
18732
|
-
join: (
|
|
18828
|
+
join: (options2.widenJoin ?? ((j) => j))(cap.strokeJoin),
|
|
18733
18829
|
miterLimit: 10,
|
|
18734
18830
|
startCap: cap.strokeStartCap,
|
|
18735
18831
|
endCap: cap.strokeEndCap,
|
|
@@ -18739,7 +18835,7 @@ function customCapGeometry(figures, width, start, end, options = {}) {
|
|
|
18739
18835
|
compound: null,
|
|
18740
18836
|
inset: false
|
|
18741
18837
|
};
|
|
18742
|
-
polygons.push(...(
|
|
18838
|
+
polygons.push(...(options2.widen ?? widenFigures)(capFigures(placed, false), pen).map((q) => q.reverse()));
|
|
18743
18839
|
}
|
|
18744
18840
|
};
|
|
18745
18841
|
if (start) {
|
|
@@ -20454,7 +20550,7 @@ var BLEND_MODES = /* @__PURE__ */ new Set([
|
|
|
20454
20550
|
"luminosity"
|
|
20455
20551
|
]);
|
|
20456
20552
|
var SvgContext = class {
|
|
20457
|
-
constructor(width, height,
|
|
20553
|
+
constructor(width, height, options2 = {}) {
|
|
20458
20554
|
this.nextId = 0;
|
|
20459
20555
|
this.stack = [];
|
|
20460
20556
|
/** The current path, in DEVICE space (see `canvas-path.ts`). */
|
|
@@ -20465,9 +20561,9 @@ var SvgContext = class {
|
|
|
20465
20561
|
this.group = null;
|
|
20466
20562
|
this.images = [];
|
|
20467
20563
|
this.canvas = { width, height, svgContext: this };
|
|
20468
|
-
this.shadow =
|
|
20469
|
-
this.imageResampling =
|
|
20470
|
-
this.idPrefix =
|
|
20564
|
+
this.shadow = options2.shadow ?? null;
|
|
20565
|
+
this.imageResampling = options2.imageResampling ?? "renderer";
|
|
20566
|
+
this.idPrefix = options2.idPrefix ?? "emf-";
|
|
20471
20567
|
this.state = {
|
|
20472
20568
|
transform: [...IDENTITY3],
|
|
20473
20569
|
fillStyle: "#000000",
|
|
@@ -21470,7 +21566,7 @@ var SvgContext = class {
|
|
|
21470
21566
|
* Encodes every pending raster payload and returns the finished `<svg>`
|
|
21471
21567
|
* tree. Call once, after replay (and deferred images) are complete.
|
|
21472
21568
|
*/
|
|
21473
|
-
async toTree(
|
|
21569
|
+
async toTree(options2 = {}) {
|
|
21474
21570
|
const cache2 = /* @__PURE__ */ new Map();
|
|
21475
21571
|
for (const img of this.images) {
|
|
21476
21572
|
let url = cache2.get(img.payload);
|
|
@@ -21482,7 +21578,7 @@ var SvgContext = class {
|
|
|
21482
21578
|
}
|
|
21483
21579
|
const { width, height } = this.canvas;
|
|
21484
21580
|
const attrs = { xmlns: "http://www.w3.org/2000/svg" };
|
|
21485
|
-
if (
|
|
21581
|
+
if (options2.includeSize ?? true) {
|
|
21486
21582
|
attrs.width = width;
|
|
21487
21583
|
attrs.height = height;
|
|
21488
21584
|
}
|
|
@@ -32307,12 +32403,12 @@ function drawWithFontEngine(rCtx, offset, dataOff, nChars, offString, viewEnd) {
|
|
|
32307
32403
|
if (!fonts) {
|
|
32308
32404
|
return false;
|
|
32309
32405
|
}
|
|
32310
|
-
const
|
|
32406
|
+
const options2 = view.getUint32(dataOff + 44, true);
|
|
32311
32407
|
const codes = [];
|
|
32312
32408
|
for (let i = 0; i < nChars; i++) {
|
|
32313
32409
|
codes.push(view.getUint16(offset + offString + i * 2, true));
|
|
32314
32410
|
}
|
|
32315
|
-
const pdy = (
|
|
32411
|
+
const pdy = (options2 & ETO_PDY) !== 0;
|
|
32316
32412
|
const raw = readDxArray(view, offset, dataOff, pdy ? nChars * 2 : nChars, viewEnd);
|
|
32317
32413
|
let dx = raw;
|
|
32318
32414
|
let dy = null;
|
|
@@ -32326,10 +32422,10 @@ function drawWithFontEngine(rCtx, offset, dataOff, nChars, offString, viewEnd) {
|
|
|
32326
32422
|
}
|
|
32327
32423
|
const adv = drawGdiTextCall(ctx, fonts, state, {
|
|
32328
32424
|
codes,
|
|
32329
|
-
glyphIndices: (
|
|
32425
|
+
glyphIndices: (options2 & ETO_GLYPH_INDEX) !== 0,
|
|
32330
32426
|
x: view.getInt32(dataOff + 28, true),
|
|
32331
32427
|
y: view.getInt32(dataOff + 32, true),
|
|
32332
|
-
options,
|
|
32428
|
+
options: options2,
|
|
32333
32429
|
rect: {
|
|
32334
32430
|
left: view.getInt32(dataOff + 48, true),
|
|
32335
32431
|
top: view.getInt32(dataOff + 52, true),
|
|
@@ -32471,7 +32567,7 @@ function handleExtTextOutW(rCtx, offset, dataOff, recSize) {
|
|
|
32471
32567
|
}
|
|
32472
32568
|
return true;
|
|
32473
32569
|
}
|
|
32474
|
-
function drawTextCall(rCtx, x, y, codes,
|
|
32570
|
+
function drawTextCall(rCtx, x, y, codes, options2, rect, dx) {
|
|
32475
32571
|
const n = codes.length;
|
|
32476
32572
|
const offString = 76;
|
|
32477
32573
|
const offDx = offString + n * 2 + 3 & -4;
|
|
@@ -32480,7 +32576,7 @@ function drawTextCall(rCtx, x, y, codes, options, rect, dx) {
|
|
|
32480
32576
|
const view = new DataView(new ArrayBuffer(size));
|
|
32481
32577
|
view.setUint32(44, n, true);
|
|
32482
32578
|
view.setUint32(48, offString, true);
|
|
32483
|
-
view.setUint32(52,
|
|
32579
|
+
view.setUint32(52, options2, true);
|
|
32484
32580
|
view.setInt32(36, x, true);
|
|
32485
32581
|
view.setInt32(40, y, true);
|
|
32486
32582
|
view.setInt32(56, rect[0], true);
|
|
@@ -32524,7 +32620,7 @@ function handlePolyText(rCtx, offset, dataOff, recSize, wide) {
|
|
|
32524
32620
|
const e = arrayStart + i * 40;
|
|
32525
32621
|
const x = view.getInt32(e, true), y = view.getInt32(e + 4, true);
|
|
32526
32622
|
const n = view.getUint32(e + 8, true), offString = view.getUint32(e + 12, true);
|
|
32527
|
-
const
|
|
32623
|
+
const options2 = view.getUint32(e + 16, true);
|
|
32528
32624
|
const rect = [view.getInt32(e + 20, true), view.getInt32(e + 24, true), view.getInt32(e + 28, true), view.getInt32(e + 32, true)];
|
|
32529
32625
|
const offDx = view.getUint32(e + 36, true);
|
|
32530
32626
|
const unit = wide ? 2 : 1;
|
|
@@ -32532,13 +32628,13 @@ function handlePolyText(rCtx, offset, dataOff, recSize, wide) {
|
|
|
32532
32628
|
const ansi = wide ? null : readAnsiRecord(view, offset + offString, n, charSet);
|
|
32533
32629
|
const codes = wide ? Array.from({ length: n }, (_, j) => view.getUint16(offset + offString + j * 2, true)) : ansi.codes;
|
|
32534
32630
|
let dx = null;
|
|
32535
|
-
const pdy = (
|
|
32631
|
+
const pdy = (options2 & ETO_PDY) !== 0;
|
|
32536
32632
|
const dxCount = n * (pdy ? 2 : 1);
|
|
32537
32633
|
if (offDx && offDx <= end - offset && dxCount <= Math.floor((end - (offset + offDx)) / 4)) {
|
|
32538
32634
|
dx = Array.from({ length: dxCount }, (_, j) => view.getInt32(offset + offDx + j * 4, true));
|
|
32539
32635
|
if (!wide) dx = collapseAnsiDx(dx, ansi.byteLengths, pdy);
|
|
32540
32636
|
}
|
|
32541
|
-
drawTextCall(rCtx, x, y, codes,
|
|
32637
|
+
drawTextCall(rCtx, x, y, codes, options2, rect, dx);
|
|
32542
32638
|
}
|
|
32543
32639
|
return true;
|
|
32544
32640
|
}
|
|
@@ -32547,13 +32643,13 @@ function handleSmallTextOut(rCtx, offset, dataOff, recSize) {
|
|
|
32547
32643
|
const end = Math.min(view.byteLength, offset + recSize);
|
|
32548
32644
|
if (recSize < 36) return true;
|
|
32549
32645
|
const x = view.getInt32(dataOff, true), y = view.getInt32(dataOff + 4, true);
|
|
32550
|
-
const n = view.getUint32(dataOff + 8, true),
|
|
32551
|
-
const small = (
|
|
32646
|
+
const n = view.getUint32(dataOff + 8, true), options2 = view.getUint32(dataOff + 12, true);
|
|
32647
|
+
const small = (options2 & 512) !== 0, noRect = (options2 & 256) !== 0;
|
|
32552
32648
|
const base = dataOff + 28 + (noRect ? 0 : 16);
|
|
32553
32649
|
if (base > end || n > Math.floor((end - base) / (small ? 1 : 2))) return true;
|
|
32554
32650
|
const rect = noRect ? [0, 0, 0, 0] : [view.getInt32(dataOff + 28, true), view.getInt32(dataOff + 32, true), view.getInt32(dataOff + 36, true), view.getInt32(dataOff + 40, true)];
|
|
32555
32651
|
const codes = small ? Array.from({ length: n }, (_, i) => view.getUint8(base + i)) : Array.from({ length: n }, (_, i) => view.getUint16(base + i * 2, true));
|
|
32556
|
-
drawTextCall(rCtx, x, y, codes,
|
|
32652
|
+
drawTextCall(rCtx, x, y, codes, options2, rect, null);
|
|
32557
32653
|
return true;
|
|
32558
32654
|
}
|
|
32559
32655
|
function handleEmfGdiDrawTextRecord(rCtx, recType, offset, dataOff, recSize) {
|
|
@@ -32567,20 +32663,20 @@ function handleEmfGdiDrawTextRecord(rCtx, recType, offset, dataOff, recSize) {
|
|
|
32567
32663
|
const end = Math.min(view.byteLength, offset + recSize);
|
|
32568
32664
|
if (recSize < 76) return true;
|
|
32569
32665
|
const x = view.getInt32(dataOff + 28, true), y = view.getInt32(dataOff + 32, true);
|
|
32570
|
-
const n = view.getUint32(dataOff + 36, true), strOff = view.getUint32(dataOff + 40, true),
|
|
32666
|
+
const n = view.getUint32(dataOff + 36, true), strOff = view.getUint32(dataOff + 40, true), options2 = view.getUint32(dataOff + 44, true);
|
|
32571
32667
|
if (!strOff || strOff > end - offset) return true;
|
|
32572
32668
|
if (n > end - (offset + strOff)) return true;
|
|
32573
32669
|
const ansi = readAnsiRecord(view, offset + strOff, n, state.fontDetails?.charSet ?? 1);
|
|
32574
32670
|
const rect = [view.getInt32(dataOff + 48, true), view.getInt32(dataOff + 52, true), view.getInt32(dataOff + 56, true), view.getInt32(dataOff + 60, true)];
|
|
32575
32671
|
const offDx = view.getUint32(dataOff + 64, true);
|
|
32576
32672
|
let dx = null;
|
|
32577
|
-
const pdy = (
|
|
32673
|
+
const pdy = (options2 & ETO_PDY) !== 0;
|
|
32578
32674
|
const dxCount = n * (pdy ? 2 : 1);
|
|
32579
32675
|
if (offDx && offDx <= end - offset && dxCount <= Math.floor((end - (offset + offDx)) / 4)) {
|
|
32580
32676
|
dx = Array.from({ length: dxCount }, (_, i) => view.getInt32(offset + offDx + i * 4, true));
|
|
32581
32677
|
dx = collapseAnsiDx(dx, ansi.byteLengths, pdy);
|
|
32582
32678
|
}
|
|
32583
|
-
drawTextCall(rCtx, x, y, ansi.codes,
|
|
32679
|
+
drawTextCall(rCtx, x, y, ansi.codes, options2, rect, dx);
|
|
32584
32680
|
return true;
|
|
32585
32681
|
}
|
|
32586
32682
|
return false;
|
|
@@ -33561,8 +33657,8 @@ function widenBracketPath(rCtx) {
|
|
|
33561
33657
|
if (rCtx.inPath || !rCtx.rasterPath || (state.penStyle & 15) === 5) {
|
|
33562
33658
|
return;
|
|
33563
33659
|
}
|
|
33564
|
-
const
|
|
33565
|
-
const polys = widenPath(rCtx.rasterPath,
|
|
33660
|
+
const options2 = penIsCosmetic(rCtx) ? { width: 16, cap: "round", join: "round", miterLimit: state.miterLimit ?? 10 } : penWidenOptions(rCtx);
|
|
33661
|
+
const polys = widenPath(rCtx.rasterPath, options2);
|
|
33566
33662
|
const path = new GdiRasterPath();
|
|
33567
33663
|
for (const poly of polys) {
|
|
33568
33664
|
if (poly.length < 4) {
|
|
@@ -36343,7 +36439,7 @@ function replayEmfRecords(view, ctx, bounds, canvasW, canvasH, dpiScale = 1, rep
|
|
|
36343
36439
|
}
|
|
36344
36440
|
return allDeferredImages;
|
|
36345
36441
|
}
|
|
36346
|
-
function replayNestedEmf(bytes, ctx, canvasW, canvasH, toCanvas,
|
|
36442
|
+
function replayNestedEmf(bytes, ctx, canvasW, canvasH, toCanvas, options2) {
|
|
36347
36443
|
const view = new DataView(bytes);
|
|
36348
36444
|
const header = parseEmfHeader(view);
|
|
36349
36445
|
if (!header) {
|
|
@@ -36354,11 +36450,11 @@ function replayNestedEmf(bytes, ctx, canvasW, canvasH, toCanvas, options) {
|
|
|
36354
36450
|
const left = -e / a;
|
|
36355
36451
|
const top = -f / d;
|
|
36356
36452
|
const bounds2 = { left, top, right: left + canvasW / a, bottom: top + canvasH / d };
|
|
36357
|
-
return replayEmfRecords(view, ctx, bounds2, canvasW, canvasH, 1,
|
|
36453
|
+
return replayEmfRecords(view, ctx, bounds2, canvasW, canvasH, 1, options2);
|
|
36358
36454
|
}
|
|
36359
36455
|
const bounds = { left: 0, top: 0, right: canvasW, bottom: canvasH };
|
|
36360
36456
|
return replayEmfRecords(view, ctx, bounds, canvasW, canvasH, 1, {
|
|
36361
|
-
...
|
|
36457
|
+
...options2,
|
|
36362
36458
|
plusBaseTransform: toCanvas,
|
|
36363
36459
|
gdiDrawing: false
|
|
36364
36460
|
});
|
|
@@ -37902,8 +37998,8 @@ function wmfExtTextOut(p, dataOff, recEnd) {
|
|
|
37902
37998
|
const y = view.getInt16(dataOff, true);
|
|
37903
37999
|
const x = view.getInt16(dataOff + 2, true);
|
|
37904
38000
|
const n = view.getInt16(dataOff + 4, true);
|
|
37905
|
-
const
|
|
37906
|
-
const hasRect = (
|
|
38001
|
+
const options2 = view.getUint16(dataOff + 6, true);
|
|
38002
|
+
const hasRect = (options2 & (ETO_OPAQUE | ETO_CLIPPED)) !== 0;
|
|
37907
38003
|
const strOff = dataOff + 8 + (hasRect ? 8 : 0);
|
|
37908
38004
|
const rect = hasRect && dataOff + 16 <= recEnd ? [view.getInt16(dataOff + 8, true), view.getInt16(dataOff + 10, true), view.getInt16(dataOff + 12, true), view.getInt16(dataOff + 14, true)] : null;
|
|
37909
38005
|
const count = Math.max(0, n);
|
|
@@ -37923,12 +38019,12 @@ function wmfExtTextOut(p, dataOff, recEnd) {
|
|
|
37923
38019
|
}
|
|
37924
38020
|
}
|
|
37925
38021
|
if (count === 0) {
|
|
37926
|
-
if (rect &&
|
|
37927
|
-
playText(p, { x, y, bytes: [32], options, rect, dx: [0] });
|
|
38022
|
+
if (rect && options2 & ETO_OPAQUE) {
|
|
38023
|
+
playText(p, { x, y, bytes: [32], options: options2, rect, dx: [0] });
|
|
37928
38024
|
}
|
|
37929
38025
|
return;
|
|
37930
38026
|
}
|
|
37931
|
-
playText(p, { x, y, bytes, options, rect, dx });
|
|
38027
|
+
playText(p, { x, y, bytes, options: options2, rect, dx });
|
|
37932
38028
|
}
|
|
37933
38029
|
|
|
37934
38030
|
// src/wmf-replay.ts
|
|
@@ -38398,7 +38494,7 @@ function replayWmfRecords(view, ctx, header, canvasW, canvasH, replayOptions = {
|
|
|
38398
38494
|
|
|
38399
38495
|
// src/emf-converter.ts
|
|
38400
38496
|
var MAX_METAFILE_RECURSION = 3;
|
|
38401
|
-
async function replayMetafile(buffer,
|
|
38497
|
+
async function replayMetafile(buffer, options2, createSurface) {
|
|
38402
38498
|
emfLog(`replayMetafile: input buffer ${buffer.byteLength} bytes`);
|
|
38403
38499
|
if (buffer.byteLength >= 16) {
|
|
38404
38500
|
const hdrBytes = new Uint8Array(buffer, 0, 16);
|
|
@@ -38406,7 +38502,7 @@ async function replayMetafile(buffer, options, createSurface) {
|
|
|
38406
38502
|
`replayMetafile: first 16 bytes: [${Array.from(hdrBytes).map((b) => b.toString(16).padStart(2, "0")).join(" ")}]`
|
|
38407
38503
|
);
|
|
38408
38504
|
}
|
|
38409
|
-
const opts =
|
|
38505
|
+
const opts = options2 ?? {};
|
|
38410
38506
|
const dpiScale = opts.dpiScale ?? DEFAULT_DPI_SCALE;
|
|
38411
38507
|
let view = new DataView(buffer);
|
|
38412
38508
|
let emfHeader = null;
|
|
@@ -38612,12 +38708,12 @@ async function processDeferredImages(ctx, deferredImages, recursionDepth) {
|
|
|
38612
38708
|
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
|
38613
38709
|
return complete;
|
|
38614
38710
|
}
|
|
38615
|
-
async function convertMetafileToDataUrl(buffer,
|
|
38711
|
+
async function convertMetafileToDataUrl(buffer, options2, recursionDepth = 0) {
|
|
38616
38712
|
await ensureNodeCanvasModule();
|
|
38617
38713
|
if (recursionDepth > MAX_METAFILE_RECURSION) {
|
|
38618
38714
|
return null;
|
|
38619
38715
|
}
|
|
38620
|
-
const opts = { ...
|
|
38716
|
+
const opts = { ...options2, gdiAntialias: options2?.gdiAntialias ?? false };
|
|
38621
38717
|
let canvas = null;
|
|
38622
38718
|
const result = await replayMetafile(buffer, opts, (w, h) => {
|
|
38623
38719
|
const setup = createCanvas(
|
|
@@ -38686,7 +38782,7 @@ async function resampleExact(bytes, spec, surface) {
|
|
|
38686
38782
|
}
|
|
38687
38783
|
return resampleImage(pixels.data, pixels.width, pixels.height, spec, { w: surface.width, h: surface.height });
|
|
38688
38784
|
}
|
|
38689
|
-
async function processDeferredImagesSvg(svg, deferredImages,
|
|
38785
|
+
async function processDeferredImagesSvg(svg, deferredImages, options2, recursionDepth) {
|
|
38690
38786
|
for (let idx = 0; idx < deferredImages.length; idx++) {
|
|
38691
38787
|
let img = deferredImages[idx];
|
|
38692
38788
|
try {
|
|
@@ -38709,7 +38805,7 @@ async function processDeferredImagesSvg(svg, deferredImages, options, recursionD
|
|
|
38709
38805
|
}
|
|
38710
38806
|
const nested = await convertMetafileToSvgTree(
|
|
38711
38807
|
bytes,
|
|
38712
|
-
{ ...
|
|
38808
|
+
{ ...options2, includeSize: true, idPrefix: void 0 },
|
|
38713
38809
|
recursionDepth + 1
|
|
38714
38810
|
);
|
|
38715
38811
|
if (nested) {
|
|
@@ -38746,7 +38842,7 @@ async function processDeferredImagesSvg(svg, deferredImages, options, recursionD
|
|
|
38746
38842
|
continue;
|
|
38747
38843
|
}
|
|
38748
38844
|
const slot = img.svgSlot ?? svg.reserveSlot();
|
|
38749
|
-
if (img.resample &&
|
|
38845
|
+
if (img.resample && options2.imageResampling === "exact" && !img.isMetafile) {
|
|
38750
38846
|
const block = await resampleExact(bytes, img.resample, svg.canvas);
|
|
38751
38847
|
if (block) {
|
|
38752
38848
|
svg.fillSlot(slot, { kind: "rgba", data: block.rgba, width: block.w, height: block.h }, [1, 0, 0, 1, 0, 0], block.x, block.y, block.w, block.h);
|
|
@@ -38766,16 +38862,16 @@ async function processDeferredImagesSvg(svg, deferredImages, options, recursionD
|
|
|
38766
38862
|
}
|
|
38767
38863
|
}
|
|
38768
38864
|
}
|
|
38769
|
-
async function convertMetafileToSvgTree(buffer,
|
|
38770
|
-
const svg = await replayToSvgContext(buffer,
|
|
38771
|
-
return svg ? svg.toTree({ includeSize:
|
|
38865
|
+
async function convertMetafileToSvgTree(buffer, options2, recursionDepth = 0) {
|
|
38866
|
+
const svg = await replayToSvgContext(buffer, options2, recursionDepth);
|
|
38867
|
+
return svg ? svg.toTree({ includeSize: options2?.includeSize }) : null;
|
|
38772
38868
|
}
|
|
38773
|
-
async function replayToSvgContext(buffer,
|
|
38869
|
+
async function replayToSvgContext(buffer, options2, recursionDepth = 0) {
|
|
38774
38870
|
await ensureNodeCanvasModule();
|
|
38775
38871
|
if (recursionDepth > MAX_METAFILE_RECURSION) {
|
|
38776
38872
|
return null;
|
|
38777
38873
|
}
|
|
38778
|
-
const opts =
|
|
38874
|
+
const opts = options2 ?? {};
|
|
38779
38875
|
const dpiScale = opts.dpiScale ?? DEFAULT_DPI_SCALE;
|
|
38780
38876
|
const idPrefix = opts.idPrefix ?? `emf${++svgDocumentCounter}-`;
|
|
38781
38877
|
let svg = null;
|
|
@@ -38792,12 +38888,12 @@ async function replayToSvgContext(buffer, options, recursionDepth = 0) {
|
|
|
38792
38888
|
await processDeferredImagesSvg(target, result.deferredImages, opts, recursionDepth);
|
|
38793
38889
|
return target;
|
|
38794
38890
|
}
|
|
38795
|
-
async function convertMetafileToSvg(buffer,
|
|
38796
|
-
const tree = await convertMetafileToSvgTree(buffer,
|
|
38891
|
+
async function convertMetafileToSvg(buffer, options2) {
|
|
38892
|
+
const tree = await convertMetafileToSvgTree(buffer, options2);
|
|
38797
38893
|
return tree ? svgTreeToString(tree) : null;
|
|
38798
38894
|
}
|
|
38799
|
-
async function convertMetafileToSvgDataUrl(buffer,
|
|
38800
|
-
const markup = await convertMetafileToSvg(buffer,
|
|
38895
|
+
async function convertMetafileToSvgDataUrl(buffer, options2) {
|
|
38896
|
+
const markup = await convertMetafileToSvg(buffer, options2);
|
|
38801
38897
|
return markup ? svgMarkupToDataUrl(markup) : null;
|
|
38802
38898
|
}
|
|
38803
38899
|
|