@poe-platform/safe-bash 0.1.773 → 0.1.775
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/image-ast/index.browser.js +754 -162
- package/dist/image-ast/index.js +754 -162
- package/dist/pdf-ast/index.js +754 -162
- package/dist/pdf-ast/vendor/pdfjs-fonts.d.mts +12 -0
- package/dist/pdf-ast/vendor/pdfjs-fonts.mjs +702 -0
- package/dist/safe-bash/command-chunks/{chunk-B2MM5DIT.js → chunk-3444RZLY.js} +754 -162
- package/dist/safe-bash/command-chunks/{chunk-G3NVK25P.js → chunk-QLYJUVVM.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-5VXZSNM2.js → chunk-ZY6PMCW5.js} +2 -2
- package/dist/safe-bash/core.browser.js +63 -7
- package/dist/safe-bash/shell/runtime.js +17 -9
- package/dist/safe-bash/shell/sync-posix-regex.d.ts +3 -0
- package/dist/safe-bash/shell/sync-posix-regex.js +48 -0
- package/dist/safe-bash-command-ffmpeg/index.js +7249 -7039
- package/dist/safe-bash-command-gpg/index.js +28 -7
- package/dist/safe-bash-command-imagemagick/index.js +2 -2
- package/dist/safe-bash-command-openssl/index.js +24 -6
- package/dist/safe-bash-command-pandoc/command.js +3 -3
- package/dist/safe-bash-command-pandoc/index.js +3 -3
- package/dist/safe-bash-command-pdfimages/index.js +754 -162
- package/dist/safe-bash-command-pdfinfo/index.js +754 -162
- package/dist/safe-bash-command-pdftk/index.js +754 -162
- package/dist/safe-bash-command-pdftoppm/index.js +754 -162
- package/dist/safe-bash-command-pdftotext/index.js +754 -162
- package/dist/safe-bash-command-qpdf/index.js +754 -162
- package/dist/safe-bash-command-sips/index.js +2 -2
- package/dist/safe-bash-command-soffice/index.js +1 -1
- package/dist/safe-bash-command-ssconvert/index.js +754 -162
- package/dist/safe-bash-command-ssh/index.js +124 -23
- package/dist/safe-bash-command-wkhtmltopdf/index.js +760 -162
- package/package.json +2 -2
- package/third-party/pdf-ast/THIRD_PARTY_NOTICES.md +29 -0
|
@@ -177092,6 +177092,11 @@ var FONT_IDENTITY_MATRIX = [1e-3, 0, 0, 1e-3, 0, 0];
|
|
|
177092
177092
|
var LINE_FACTOR = 1.35;
|
|
177093
177093
|
var LINE_DESCENT_FACTOR = 0.35;
|
|
177094
177094
|
var BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;
|
|
177095
|
+
var MeshFigureType = {
|
|
177096
|
+
TRIANGLES: 1,
|
|
177097
|
+
LATTICE: 2,
|
|
177098
|
+
PATCH: 3
|
|
177099
|
+
};
|
|
177095
177100
|
var VerbosityLevel = {
|
|
177096
177101
|
ERRORS: 0,
|
|
177097
177102
|
WARNINGS: 1,
|
|
@@ -198624,6 +198629,700 @@ function buildPostScriptJsFunction(source, domain, range3, forceInterpreter = fa
|
|
|
198624
198629
|
}
|
|
198625
198630
|
return PSStackBasedInterpreter.build(program, domain, range3);
|
|
198626
198631
|
}
|
|
198632
|
+
var ShadingType = {
|
|
198633
|
+
FUNCTION_BASED: 1,
|
|
198634
|
+
AXIAL: 2,
|
|
198635
|
+
RADIAL: 3,
|
|
198636
|
+
FREE_FORM_MESH: 4,
|
|
198637
|
+
LATTICE_FORM_MESH: 5,
|
|
198638
|
+
COONS_PATCH_MESH: 6,
|
|
198639
|
+
TENSOR_PATCH_MESH: 7
|
|
198640
|
+
};
|
|
198641
|
+
var BaseShading = class _BaseShading {
|
|
198642
|
+
// A small number to offset the first/last color stops so we can insert ones
|
|
198643
|
+
// to support extend. Number.MIN_VALUE is too small and breaks the extend.
|
|
198644
|
+
static SMALL_NUMBER = 1e-6;
|
|
198645
|
+
constructor() {
|
|
198646
|
+
if ((typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && this.constructor === _BaseShading) {
|
|
198647
|
+
unreachable2("Cannot initialize BaseShading.");
|
|
198648
|
+
}
|
|
198649
|
+
}
|
|
198650
|
+
getIR() {
|
|
198651
|
+
unreachable2("Abstract method `getIR` called.");
|
|
198652
|
+
}
|
|
198653
|
+
};
|
|
198654
|
+
function meshUpdateBounds(self2) {
|
|
198655
|
+
let minX = self2.coords[0][0], minY = self2.coords[0][1], maxX = minX, maxY = minY;
|
|
198656
|
+
for (let i = 1, ii = self2.coords.length; i < ii; i++) {
|
|
198657
|
+
const x = self2.coords[i][0], y = self2.coords[i][1];
|
|
198658
|
+
minX = minX > x ? x : minX;
|
|
198659
|
+
minY = minY > y ? y : minY;
|
|
198660
|
+
maxX = maxX < x ? x : maxX;
|
|
198661
|
+
maxY = maxY < y ? y : maxY;
|
|
198662
|
+
}
|
|
198663
|
+
self2.bounds = [minX, minY, maxX, maxY];
|
|
198664
|
+
}
|
|
198665
|
+
function meshPackData(self2) {
|
|
198666
|
+
let i, j, ii;
|
|
198667
|
+
const coords = self2.coords;
|
|
198668
|
+
const coordsPacked = new Float32Array(coords.length * 2);
|
|
198669
|
+
for (i = 0, j = 0, ii = coords.length; i < ii; i++) {
|
|
198670
|
+
const xy = coords[i];
|
|
198671
|
+
coordsPacked[j++] = xy[0];
|
|
198672
|
+
coordsPacked[j++] = xy[1];
|
|
198673
|
+
}
|
|
198674
|
+
self2.coords = coordsPacked;
|
|
198675
|
+
const colors2 = self2.colors;
|
|
198676
|
+
const colorsPacked = new Uint8Array(colors2.length * 4);
|
|
198677
|
+
for (i = 0, j = 0, ii = colors2.length; i < ii; i++) {
|
|
198678
|
+
const c4 = colors2[i];
|
|
198679
|
+
colorsPacked[j++] = c4[0];
|
|
198680
|
+
colorsPacked[j++] = c4[1];
|
|
198681
|
+
colorsPacked[j++] = c4[2];
|
|
198682
|
+
j++;
|
|
198683
|
+
}
|
|
198684
|
+
self2.colors = colorsPacked;
|
|
198685
|
+
for (const figure of self2.figures) {
|
|
198686
|
+
figure.coords = new Uint32Array(figure.coords);
|
|
198687
|
+
figure.colors = new Uint32Array(figure.colors);
|
|
198688
|
+
}
|
|
198689
|
+
}
|
|
198690
|
+
function buildMeshVertexData(coords, colors2, figures) {
|
|
198691
|
+
let vertexCount = 0;
|
|
198692
|
+
for (const figure of figures) {
|
|
198693
|
+
if (figure.type === MeshFigureType.TRIANGLES) {
|
|
198694
|
+
vertexCount += figure.coords.length;
|
|
198695
|
+
} else if (figure.type === MeshFigureType.LATTICE) {
|
|
198696
|
+
const vpr = figure.verticesPerRow;
|
|
198697
|
+
vertexCount += (Math.floor(figure.coords.length / vpr) - 1) * (vpr - 1) * 6;
|
|
198698
|
+
}
|
|
198699
|
+
}
|
|
198700
|
+
const posData = new Float32Array(vertexCount * 2);
|
|
198701
|
+
const colData = new Uint8Array(vertexCount * 4);
|
|
198702
|
+
let pOff = 0, cOff = 0;
|
|
198703
|
+
const addVertex = (pi2, ci) => {
|
|
198704
|
+
posData[pOff++] = coords[pi2 * 2];
|
|
198705
|
+
posData[pOff++] = coords[pi2 * 2 + 1];
|
|
198706
|
+
colData[cOff++] = colors2[ci * 4];
|
|
198707
|
+
colData[cOff++] = colors2[ci * 4 + 1];
|
|
198708
|
+
colData[cOff++] = colors2[ci * 4 + 2];
|
|
198709
|
+
cOff++;
|
|
198710
|
+
};
|
|
198711
|
+
for (const figure of figures) {
|
|
198712
|
+
const ps = figure.coords;
|
|
198713
|
+
const cs = figure.colors;
|
|
198714
|
+
if (figure.type === MeshFigureType.TRIANGLES) {
|
|
198715
|
+
for (let i = 0, ii = ps.length; i < ii; i++) {
|
|
198716
|
+
addVertex(ps[i], cs[i]);
|
|
198717
|
+
}
|
|
198718
|
+
} else if (figure.type === MeshFigureType.LATTICE) {
|
|
198719
|
+
const vpr = figure.verticesPerRow;
|
|
198720
|
+
const rows = Math.floor(ps.length / vpr) - 1;
|
|
198721
|
+
const cols = vpr - 1;
|
|
198722
|
+
for (let i = 0; i < rows; i++) {
|
|
198723
|
+
let q2 = i * vpr;
|
|
198724
|
+
for (let j = 0; j < cols; j++, q2++) {
|
|
198725
|
+
addVertex(ps[q2], cs[q2]);
|
|
198726
|
+
addVertex(ps[q2 + 1], cs[q2 + 1]);
|
|
198727
|
+
addVertex(ps[q2 + vpr], cs[q2 + vpr]);
|
|
198728
|
+
addVertex(ps[q2 + vpr + 1], cs[q2 + vpr + 1]);
|
|
198729
|
+
addVertex(ps[q2 + 1], cs[q2 + 1]);
|
|
198730
|
+
addVertex(ps[q2 + vpr], cs[q2 + vpr]);
|
|
198731
|
+
}
|
|
198732
|
+
}
|
|
198733
|
+
}
|
|
198734
|
+
}
|
|
198735
|
+
return { posData, colData, vertexCount };
|
|
198736
|
+
}
|
|
198737
|
+
var MeshStreamReader = class {
|
|
198738
|
+
constructor(stream, context) {
|
|
198739
|
+
this.stream = stream;
|
|
198740
|
+
this.context = context;
|
|
198741
|
+
this.buffer = 0;
|
|
198742
|
+
this.bufferLength = 0;
|
|
198743
|
+
const numComps = context.numComps;
|
|
198744
|
+
this.tmpCompsBuf = new Float32Array(numComps);
|
|
198745
|
+
const csNumComps = context.colorSpace.numComps;
|
|
198746
|
+
this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf;
|
|
198747
|
+
}
|
|
198748
|
+
get hasData() {
|
|
198749
|
+
if (this.stream.end) {
|
|
198750
|
+
return this.stream.pos < this.stream.end;
|
|
198751
|
+
}
|
|
198752
|
+
if (this.bufferLength > 0) {
|
|
198753
|
+
return true;
|
|
198754
|
+
}
|
|
198755
|
+
const nextByte = this.stream.getByte();
|
|
198756
|
+
if (nextByte < 0) {
|
|
198757
|
+
return false;
|
|
198758
|
+
}
|
|
198759
|
+
this.buffer = nextByte;
|
|
198760
|
+
this.bufferLength = 8;
|
|
198761
|
+
return true;
|
|
198762
|
+
}
|
|
198763
|
+
readBits(n) {
|
|
198764
|
+
const { stream } = this;
|
|
198765
|
+
let { buffer, bufferLength } = this;
|
|
198766
|
+
if (n === 32) {
|
|
198767
|
+
if (bufferLength === 0) {
|
|
198768
|
+
return stream.getInt32() >>> 0;
|
|
198769
|
+
}
|
|
198770
|
+
buffer = buffer << 24 | stream.getByte() << 16 | stream.getByte() << 8 | stream.getByte();
|
|
198771
|
+
const nextByte = stream.getByte();
|
|
198772
|
+
this.buffer = nextByte & (1 << bufferLength) - 1;
|
|
198773
|
+
return (buffer << 8 - bufferLength | (nextByte & 255) >> bufferLength) >>> 0;
|
|
198774
|
+
}
|
|
198775
|
+
if (n === 8 && bufferLength === 0) {
|
|
198776
|
+
return stream.getByte();
|
|
198777
|
+
}
|
|
198778
|
+
while (bufferLength < n) {
|
|
198779
|
+
buffer = buffer << 8 | stream.getByte();
|
|
198780
|
+
bufferLength += 8;
|
|
198781
|
+
}
|
|
198782
|
+
bufferLength -= n;
|
|
198783
|
+
this.bufferLength = bufferLength;
|
|
198784
|
+
this.buffer = buffer & (1 << bufferLength) - 1;
|
|
198785
|
+
return buffer >> bufferLength;
|
|
198786
|
+
}
|
|
198787
|
+
align() {
|
|
198788
|
+
this.buffer = 0;
|
|
198789
|
+
this.bufferLength = 0;
|
|
198790
|
+
}
|
|
198791
|
+
readFlag() {
|
|
198792
|
+
return this.readBits(this.context.bitsPerFlag);
|
|
198793
|
+
}
|
|
198794
|
+
readCoordinate() {
|
|
198795
|
+
const { bitsPerCoordinate, decode: decode3 } = this.context;
|
|
198796
|
+
const xi = this.readBits(bitsPerCoordinate);
|
|
198797
|
+
const yi = this.readBits(bitsPerCoordinate);
|
|
198798
|
+
const scale2 = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 23283064365386963e-26;
|
|
198799
|
+
return [
|
|
198800
|
+
xi * scale2 * (decode3[1] - decode3[0]) + decode3[0],
|
|
198801
|
+
yi * scale2 * (decode3[3] - decode3[2]) + decode3[2]
|
|
198802
|
+
];
|
|
198803
|
+
}
|
|
198804
|
+
readComponents() {
|
|
198805
|
+
const { bitsPerComponent, colorFn, colorSpace, decode: decode3, numComps } = this.context;
|
|
198806
|
+
const scale2 = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 23283064365386963e-26;
|
|
198807
|
+
const components22 = this.tmpCompsBuf;
|
|
198808
|
+
for (let i = 0, j = 4; i < numComps; i++, j += 2) {
|
|
198809
|
+
const ci = this.readBits(bitsPerComponent);
|
|
198810
|
+
components22[i] = ci * scale2 * (decode3[j + 1] - decode3[j]) + decode3[j];
|
|
198811
|
+
}
|
|
198812
|
+
const color5 = this.tmpCsCompsBuf;
|
|
198813
|
+
colorFn?.(components22, 0, color5, 0);
|
|
198814
|
+
return colorSpace.getRgb(color5, 0);
|
|
198815
|
+
}
|
|
198816
|
+
};
|
|
198817
|
+
var bCache = null;
|
|
198818
|
+
function getB(count) {
|
|
198819
|
+
if (bCache?.has(count)) return bCache.get(count);
|
|
198820
|
+
const values2 = Array.from({ length: count + 1 }, (_, i) => {
|
|
198821
|
+
const t = i / count, t_ = 1 - t;
|
|
198822
|
+
return new Float32Array([
|
|
198823
|
+
t_ ** 3,
|
|
198824
|
+
3 * t * t_ ** 2,
|
|
198825
|
+
3 * t ** 2 * t_,
|
|
198826
|
+
t ** 3
|
|
198827
|
+
]);
|
|
198828
|
+
});
|
|
198829
|
+
(bCache ??= /* @__PURE__ */ new Map()).set(count, values2);
|
|
198830
|
+
return values2;
|
|
198831
|
+
}
|
|
198832
|
+
var MeshShading = class _MeshShading extends BaseShading {
|
|
198833
|
+
static MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;
|
|
198834
|
+
static MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;
|
|
198835
|
+
// Count of triangles per entire mesh bounds.
|
|
198836
|
+
static TRIANGLE_DENSITY = 20;
|
|
198837
|
+
constructor(shadingType, stream, context, rowVertices) {
|
|
198838
|
+
super();
|
|
198839
|
+
this.shadingType = shadingType;
|
|
198840
|
+
this.bbox = this.background = null;
|
|
198841
|
+
this.coords = [];
|
|
198842
|
+
this.colors = [];
|
|
198843
|
+
this.figures = [];
|
|
198844
|
+
const reader = new MeshStreamReader(stream, context);
|
|
198845
|
+
let patchMesh = false;
|
|
198846
|
+
switch (this.shadingType) {
|
|
198847
|
+
case ShadingType.FREE_FORM_MESH:
|
|
198848
|
+
this._decodeType4Shading(reader);
|
|
198849
|
+
break;
|
|
198850
|
+
case ShadingType.LATTICE_FORM_MESH:
|
|
198851
|
+
const verticesPerRow = rowVertices | 0;
|
|
198852
|
+
if (verticesPerRow < 2) {
|
|
198853
|
+
throw new FormatError("Invalid VerticesPerRow");
|
|
198854
|
+
}
|
|
198855
|
+
this._decodeType5Shading(reader, verticesPerRow);
|
|
198856
|
+
break;
|
|
198857
|
+
case ShadingType.COONS_PATCH_MESH:
|
|
198858
|
+
this._decodeType6Shading(reader);
|
|
198859
|
+
patchMesh = true;
|
|
198860
|
+
break;
|
|
198861
|
+
case ShadingType.TENSOR_PATCH_MESH:
|
|
198862
|
+
this._decodeType7Shading(reader);
|
|
198863
|
+
patchMesh = true;
|
|
198864
|
+
break;
|
|
198865
|
+
default:
|
|
198866
|
+
unreachable2("Unsupported mesh type.");
|
|
198867
|
+
break;
|
|
198868
|
+
}
|
|
198869
|
+
if (patchMesh) {
|
|
198870
|
+
this._updateBounds();
|
|
198871
|
+
for (let i = 0, ii = this.figures.length; i < ii; i++) {
|
|
198872
|
+
this._buildFigureFromPatch(i);
|
|
198873
|
+
}
|
|
198874
|
+
}
|
|
198875
|
+
this._updateBounds();
|
|
198876
|
+
this._packData();
|
|
198877
|
+
}
|
|
198878
|
+
_decodeType4Shading(reader) {
|
|
198879
|
+
const coords = this.coords;
|
|
198880
|
+
const colors2 = this.colors;
|
|
198881
|
+
const operators2 = [];
|
|
198882
|
+
const ps = [];
|
|
198883
|
+
let verticesLeft = 0;
|
|
198884
|
+
while (reader.hasData) {
|
|
198885
|
+
const f2 = reader.readFlag();
|
|
198886
|
+
const coord2 = reader.readCoordinate();
|
|
198887
|
+
const color5 = reader.readComponents();
|
|
198888
|
+
if (verticesLeft === 0) {
|
|
198889
|
+
if (!(0 <= f2 && f2 <= 2)) {
|
|
198890
|
+
throw new FormatError("Unknown type4 flag");
|
|
198891
|
+
}
|
|
198892
|
+
switch (f2) {
|
|
198893
|
+
case 0:
|
|
198894
|
+
verticesLeft = 3;
|
|
198895
|
+
break;
|
|
198896
|
+
case 1:
|
|
198897
|
+
ps.push(ps.at(-2), ps.at(-1));
|
|
198898
|
+
verticesLeft = 1;
|
|
198899
|
+
break;
|
|
198900
|
+
case 2:
|
|
198901
|
+
ps.push(ps.at(-3), ps.at(-1));
|
|
198902
|
+
verticesLeft = 1;
|
|
198903
|
+
break;
|
|
198904
|
+
}
|
|
198905
|
+
operators2.push(f2);
|
|
198906
|
+
}
|
|
198907
|
+
ps.push(coords.length);
|
|
198908
|
+
coords.push(coord2);
|
|
198909
|
+
colors2.push(color5);
|
|
198910
|
+
verticesLeft--;
|
|
198911
|
+
reader.align();
|
|
198912
|
+
}
|
|
198913
|
+
this.figures.push({
|
|
198914
|
+
type: MeshFigureType.TRIANGLES,
|
|
198915
|
+
coords: new Int32Array(ps),
|
|
198916
|
+
colors: new Int32Array(ps)
|
|
198917
|
+
});
|
|
198918
|
+
}
|
|
198919
|
+
_decodeType5Shading(reader, verticesPerRow) {
|
|
198920
|
+
const coords = this.coords;
|
|
198921
|
+
const colors2 = this.colors;
|
|
198922
|
+
const ps = [];
|
|
198923
|
+
while (reader.hasData) {
|
|
198924
|
+
const coord2 = reader.readCoordinate();
|
|
198925
|
+
const color5 = reader.readComponents();
|
|
198926
|
+
ps.push(coords.length);
|
|
198927
|
+
coords.push(coord2);
|
|
198928
|
+
colors2.push(color5);
|
|
198929
|
+
}
|
|
198930
|
+
this.figures.push({
|
|
198931
|
+
type: MeshFigureType.LATTICE,
|
|
198932
|
+
coords: new Int32Array(ps),
|
|
198933
|
+
colors: new Int32Array(ps),
|
|
198934
|
+
verticesPerRow
|
|
198935
|
+
});
|
|
198936
|
+
}
|
|
198937
|
+
_decodeType6Shading(reader) {
|
|
198938
|
+
const coords = this.coords;
|
|
198939
|
+
const colors2 = this.colors;
|
|
198940
|
+
const ps = new Int32Array(16);
|
|
198941
|
+
const cs = new Int32Array(4);
|
|
198942
|
+
while (reader.hasData) {
|
|
198943
|
+
const f2 = reader.readFlag();
|
|
198944
|
+
if (!(0 <= f2 && f2 <= 3)) {
|
|
198945
|
+
throw new FormatError("Unknown type6 flag");
|
|
198946
|
+
}
|
|
198947
|
+
const pi2 = coords.length;
|
|
198948
|
+
for (let i = 0, ii = f2 !== 0 ? 8 : 12; i < ii; i++) {
|
|
198949
|
+
coords.push(reader.readCoordinate());
|
|
198950
|
+
}
|
|
198951
|
+
const ci = colors2.length;
|
|
198952
|
+
for (let i = 0, ii = f2 !== 0 ? 2 : 4; i < ii; i++) {
|
|
198953
|
+
colors2.push(reader.readComponents());
|
|
198954
|
+
}
|
|
198955
|
+
let tmp1, tmp2, tmp3, tmp4;
|
|
198956
|
+
switch (f2) {
|
|
198957
|
+
// prettier-ignore
|
|
198958
|
+
case 0:
|
|
198959
|
+
ps[12] = pi2 + 3;
|
|
198960
|
+
ps[13] = pi2 + 4;
|
|
198961
|
+
ps[14] = pi2 + 5;
|
|
198962
|
+
ps[15] = pi2 + 6;
|
|
198963
|
+
ps[8] = pi2 + 2;
|
|
198964
|
+
ps[11] = pi2 + 7;
|
|
198965
|
+
ps[4] = pi2 + 1;
|
|
198966
|
+
ps[7] = pi2 + 8;
|
|
198967
|
+
ps[0] = pi2;
|
|
198968
|
+
ps[1] = pi2 + 11;
|
|
198969
|
+
ps[2] = pi2 + 10;
|
|
198970
|
+
ps[3] = pi2 + 9;
|
|
198971
|
+
cs[2] = ci + 1;
|
|
198972
|
+
cs[3] = ci + 2;
|
|
198973
|
+
cs[0] = ci;
|
|
198974
|
+
cs[1] = ci + 3;
|
|
198975
|
+
break;
|
|
198976
|
+
// prettier-ignore
|
|
198977
|
+
case 1:
|
|
198978
|
+
tmp1 = ps[12];
|
|
198979
|
+
tmp2 = ps[13];
|
|
198980
|
+
tmp3 = ps[14];
|
|
198981
|
+
tmp4 = ps[15];
|
|
198982
|
+
ps[12] = tmp4;
|
|
198983
|
+
ps[13] = pi2 + 0;
|
|
198984
|
+
ps[14] = pi2 + 1;
|
|
198985
|
+
ps[15] = pi2 + 2;
|
|
198986
|
+
ps[8] = tmp3;
|
|
198987
|
+
ps[11] = pi2 + 3;
|
|
198988
|
+
ps[4] = tmp2;
|
|
198989
|
+
ps[7] = pi2 + 4;
|
|
198990
|
+
ps[0] = tmp1;
|
|
198991
|
+
ps[1] = pi2 + 7;
|
|
198992
|
+
ps[2] = pi2 + 6;
|
|
198993
|
+
ps[3] = pi2 + 5;
|
|
198994
|
+
tmp1 = cs[2];
|
|
198995
|
+
tmp2 = cs[3];
|
|
198996
|
+
cs[2] = tmp2;
|
|
198997
|
+
cs[3] = ci;
|
|
198998
|
+
cs[0] = tmp1;
|
|
198999
|
+
cs[1] = ci + 1;
|
|
199000
|
+
break;
|
|
199001
|
+
// prettier-ignore
|
|
199002
|
+
case 2:
|
|
199003
|
+
tmp1 = ps[15];
|
|
199004
|
+
tmp2 = ps[11];
|
|
199005
|
+
ps[12] = ps[3];
|
|
199006
|
+
ps[13] = pi2 + 0;
|
|
199007
|
+
ps[14] = pi2 + 1;
|
|
199008
|
+
ps[15] = pi2 + 2;
|
|
199009
|
+
ps[8] = ps[7];
|
|
199010
|
+
ps[11] = pi2 + 3;
|
|
199011
|
+
ps[4] = tmp2;
|
|
199012
|
+
ps[7] = pi2 + 4;
|
|
199013
|
+
ps[0] = tmp1;
|
|
199014
|
+
ps[1] = pi2 + 7;
|
|
199015
|
+
ps[2] = pi2 + 6;
|
|
199016
|
+
ps[3] = pi2 + 5;
|
|
199017
|
+
tmp1 = cs[3];
|
|
199018
|
+
cs[2] = cs[1];
|
|
199019
|
+
cs[3] = ci;
|
|
199020
|
+
cs[0] = tmp1;
|
|
199021
|
+
cs[1] = ci + 1;
|
|
199022
|
+
break;
|
|
199023
|
+
// prettier-ignore
|
|
199024
|
+
case 3:
|
|
199025
|
+
ps[12] = ps[0];
|
|
199026
|
+
ps[13] = pi2 + 0;
|
|
199027
|
+
ps[14] = pi2 + 1;
|
|
199028
|
+
ps[15] = pi2 + 2;
|
|
199029
|
+
ps[8] = ps[1];
|
|
199030
|
+
ps[11] = pi2 + 3;
|
|
199031
|
+
ps[4] = ps[2];
|
|
199032
|
+
ps[7] = pi2 + 4;
|
|
199033
|
+
ps[0] = ps[3];
|
|
199034
|
+
ps[1] = pi2 + 7;
|
|
199035
|
+
ps[2] = pi2 + 6;
|
|
199036
|
+
ps[3] = pi2 + 5;
|
|
199037
|
+
cs[2] = cs[0];
|
|
199038
|
+
cs[3] = ci;
|
|
199039
|
+
cs[0] = cs[1];
|
|
199040
|
+
cs[1] = ci + 1;
|
|
199041
|
+
break;
|
|
199042
|
+
}
|
|
199043
|
+
ps[5] = coords.length;
|
|
199044
|
+
coords.push([
|
|
199045
|
+
(-4 * coords[ps[0]][0] - coords[ps[15]][0] + 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9,
|
|
199046
|
+
(-4 * coords[ps[0]][1] - coords[ps[15]][1] + 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9
|
|
199047
|
+
]);
|
|
199048
|
+
ps[6] = coords.length;
|
|
199049
|
+
coords.push([
|
|
199050
|
+
(-4 * coords[ps[3]][0] - coords[ps[12]][0] + 6 * (coords[ps[2]][0] + coords[ps[7]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9,
|
|
199051
|
+
(-4 * coords[ps[3]][1] - coords[ps[12]][1] + 6 * (coords[ps[2]][1] + coords[ps[7]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9
|
|
199052
|
+
]);
|
|
199053
|
+
ps[9] = coords.length;
|
|
199054
|
+
coords.push([
|
|
199055
|
+
(-4 * coords[ps[12]][0] - coords[ps[3]][0] + 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9,
|
|
199056
|
+
(-4 * coords[ps[12]][1] - coords[ps[3]][1] + 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9
|
|
199057
|
+
]);
|
|
199058
|
+
ps[10] = coords.length;
|
|
199059
|
+
coords.push([
|
|
199060
|
+
(-4 * coords[ps[15]][0] - coords[ps[0]][0] + 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9,
|
|
199061
|
+
(-4 * coords[ps[15]][1] - coords[ps[0]][1] + 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9
|
|
199062
|
+
]);
|
|
199063
|
+
this.figures.push({
|
|
199064
|
+
type: MeshFigureType.PATCH,
|
|
199065
|
+
coords: new Int32Array(ps),
|
|
199066
|
+
// making copies of ps and cs
|
|
199067
|
+
colors: new Int32Array(cs)
|
|
199068
|
+
});
|
|
199069
|
+
}
|
|
199070
|
+
}
|
|
199071
|
+
_decodeType7Shading(reader) {
|
|
199072
|
+
const coords = this.coords;
|
|
199073
|
+
const colors2 = this.colors;
|
|
199074
|
+
const ps = new Int32Array(16);
|
|
199075
|
+
const cs = new Int32Array(4);
|
|
199076
|
+
while (reader.hasData) {
|
|
199077
|
+
const f2 = reader.readFlag();
|
|
199078
|
+
if (!(0 <= f2 && f2 <= 3)) {
|
|
199079
|
+
throw new FormatError("Unknown type7 flag");
|
|
199080
|
+
}
|
|
199081
|
+
const pi2 = coords.length;
|
|
199082
|
+
for (let i = 0, ii = f2 !== 0 ? 12 : 16; i < ii; i++) {
|
|
199083
|
+
coords.push(reader.readCoordinate());
|
|
199084
|
+
}
|
|
199085
|
+
const ci = colors2.length;
|
|
199086
|
+
for (let i = 0, ii = f2 !== 0 ? 2 : 4; i < ii; i++) {
|
|
199087
|
+
colors2.push(reader.readComponents());
|
|
199088
|
+
}
|
|
199089
|
+
let tmp1, tmp2, tmp3, tmp4;
|
|
199090
|
+
switch (f2) {
|
|
199091
|
+
// prettier-ignore
|
|
199092
|
+
case 0:
|
|
199093
|
+
ps[12] = pi2 + 3;
|
|
199094
|
+
ps[13] = pi2 + 4;
|
|
199095
|
+
ps[14] = pi2 + 5;
|
|
199096
|
+
ps[15] = pi2 + 6;
|
|
199097
|
+
ps[8] = pi2 + 2;
|
|
199098
|
+
ps[9] = pi2 + 13;
|
|
199099
|
+
ps[10] = pi2 + 14;
|
|
199100
|
+
ps[11] = pi2 + 7;
|
|
199101
|
+
ps[4] = pi2 + 1;
|
|
199102
|
+
ps[5] = pi2 + 12;
|
|
199103
|
+
ps[6] = pi2 + 15;
|
|
199104
|
+
ps[7] = pi2 + 8;
|
|
199105
|
+
ps[0] = pi2;
|
|
199106
|
+
ps[1] = pi2 + 11;
|
|
199107
|
+
ps[2] = pi2 + 10;
|
|
199108
|
+
ps[3] = pi2 + 9;
|
|
199109
|
+
cs[2] = ci + 1;
|
|
199110
|
+
cs[3] = ci + 2;
|
|
199111
|
+
cs[0] = ci;
|
|
199112
|
+
cs[1] = ci + 3;
|
|
199113
|
+
break;
|
|
199114
|
+
// prettier-ignore
|
|
199115
|
+
case 1:
|
|
199116
|
+
tmp1 = ps[12];
|
|
199117
|
+
tmp2 = ps[13];
|
|
199118
|
+
tmp3 = ps[14];
|
|
199119
|
+
tmp4 = ps[15];
|
|
199120
|
+
ps[12] = tmp4;
|
|
199121
|
+
ps[13] = pi2 + 0;
|
|
199122
|
+
ps[14] = pi2 + 1;
|
|
199123
|
+
ps[15] = pi2 + 2;
|
|
199124
|
+
ps[8] = tmp3;
|
|
199125
|
+
ps[9] = pi2 + 9;
|
|
199126
|
+
ps[10] = pi2 + 10;
|
|
199127
|
+
ps[11] = pi2 + 3;
|
|
199128
|
+
ps[4] = tmp2;
|
|
199129
|
+
ps[5] = pi2 + 8;
|
|
199130
|
+
ps[6] = pi2 + 11;
|
|
199131
|
+
ps[7] = pi2 + 4;
|
|
199132
|
+
ps[0] = tmp1;
|
|
199133
|
+
ps[1] = pi2 + 7;
|
|
199134
|
+
ps[2] = pi2 + 6;
|
|
199135
|
+
ps[3] = pi2 + 5;
|
|
199136
|
+
tmp1 = cs[2];
|
|
199137
|
+
tmp2 = cs[3];
|
|
199138
|
+
cs[2] = tmp2;
|
|
199139
|
+
cs[3] = ci;
|
|
199140
|
+
cs[0] = tmp1;
|
|
199141
|
+
cs[1] = ci + 1;
|
|
199142
|
+
break;
|
|
199143
|
+
// prettier-ignore
|
|
199144
|
+
case 2:
|
|
199145
|
+
tmp1 = ps[15];
|
|
199146
|
+
tmp2 = ps[11];
|
|
199147
|
+
ps[12] = ps[3];
|
|
199148
|
+
ps[13] = pi2 + 0;
|
|
199149
|
+
ps[14] = pi2 + 1;
|
|
199150
|
+
ps[15] = pi2 + 2;
|
|
199151
|
+
ps[8] = ps[7];
|
|
199152
|
+
ps[9] = pi2 + 9;
|
|
199153
|
+
ps[10] = pi2 + 10;
|
|
199154
|
+
ps[11] = pi2 + 3;
|
|
199155
|
+
ps[4] = tmp2;
|
|
199156
|
+
ps[5] = pi2 + 8;
|
|
199157
|
+
ps[6] = pi2 + 11;
|
|
199158
|
+
ps[7] = pi2 + 4;
|
|
199159
|
+
ps[0] = tmp1;
|
|
199160
|
+
ps[1] = pi2 + 7;
|
|
199161
|
+
ps[2] = pi2 + 6;
|
|
199162
|
+
ps[3] = pi2 + 5;
|
|
199163
|
+
tmp1 = cs[3];
|
|
199164
|
+
cs[2] = cs[1];
|
|
199165
|
+
cs[3] = ci;
|
|
199166
|
+
cs[0] = tmp1;
|
|
199167
|
+
cs[1] = ci + 1;
|
|
199168
|
+
break;
|
|
199169
|
+
// prettier-ignore
|
|
199170
|
+
case 3:
|
|
199171
|
+
ps[12] = ps[0];
|
|
199172
|
+
ps[13] = pi2 + 0;
|
|
199173
|
+
ps[14] = pi2 + 1;
|
|
199174
|
+
ps[15] = pi2 + 2;
|
|
199175
|
+
ps[8] = ps[1];
|
|
199176
|
+
ps[9] = pi2 + 9;
|
|
199177
|
+
ps[10] = pi2 + 10;
|
|
199178
|
+
ps[11] = pi2 + 3;
|
|
199179
|
+
ps[4] = ps[2];
|
|
199180
|
+
ps[5] = pi2 + 8;
|
|
199181
|
+
ps[6] = pi2 + 11;
|
|
199182
|
+
ps[7] = pi2 + 4;
|
|
199183
|
+
ps[0] = ps[3];
|
|
199184
|
+
ps[1] = pi2 + 7;
|
|
199185
|
+
ps[2] = pi2 + 6;
|
|
199186
|
+
ps[3] = pi2 + 5;
|
|
199187
|
+
cs[2] = cs[0];
|
|
199188
|
+
cs[3] = ci;
|
|
199189
|
+
cs[0] = cs[1];
|
|
199190
|
+
cs[1] = ci + 1;
|
|
199191
|
+
break;
|
|
199192
|
+
}
|
|
199193
|
+
this.figures.push({
|
|
199194
|
+
type: MeshFigureType.PATCH,
|
|
199195
|
+
coords: new Int32Array(ps),
|
|
199196
|
+
// making copies of ps and cs
|
|
199197
|
+
colors: new Int32Array(cs)
|
|
199198
|
+
});
|
|
199199
|
+
}
|
|
199200
|
+
}
|
|
199201
|
+
_buildFigureFromPatch(index2) {
|
|
199202
|
+
const figure = this.figures[index2];
|
|
199203
|
+
assert2(
|
|
199204
|
+
figure.type === MeshFigureType.PATCH,
|
|
199205
|
+
"Unexpected patch mesh figure"
|
|
199206
|
+
);
|
|
199207
|
+
const coords = this.coords, colors2 = this.colors;
|
|
199208
|
+
const pi2 = figure.coords;
|
|
199209
|
+
const ci = figure.colors;
|
|
199210
|
+
const figureMinX = Math.min(
|
|
199211
|
+
coords[pi2[0]][0],
|
|
199212
|
+
coords[pi2[3]][0],
|
|
199213
|
+
coords[pi2[12]][0],
|
|
199214
|
+
coords[pi2[15]][0]
|
|
199215
|
+
);
|
|
199216
|
+
const figureMinY = Math.min(
|
|
199217
|
+
coords[pi2[0]][1],
|
|
199218
|
+
coords[pi2[3]][1],
|
|
199219
|
+
coords[pi2[12]][1],
|
|
199220
|
+
coords[pi2[15]][1]
|
|
199221
|
+
);
|
|
199222
|
+
const figureMaxX = Math.max(
|
|
199223
|
+
coords[pi2[0]][0],
|
|
199224
|
+
coords[pi2[3]][0],
|
|
199225
|
+
coords[pi2[12]][0],
|
|
199226
|
+
coords[pi2[15]][0]
|
|
199227
|
+
);
|
|
199228
|
+
const figureMaxY = Math.max(
|
|
199229
|
+
coords[pi2[0]][1],
|
|
199230
|
+
coords[pi2[3]][1],
|
|
199231
|
+
coords[pi2[12]][1],
|
|
199232
|
+
coords[pi2[15]][1]
|
|
199233
|
+
);
|
|
199234
|
+
let splitXBy = Math.ceil(
|
|
199235
|
+
(figureMaxX - figureMinX) * _MeshShading.TRIANGLE_DENSITY / (this.bounds[2] - this.bounds[0])
|
|
199236
|
+
);
|
|
199237
|
+
splitXBy = MathClamp(
|
|
199238
|
+
splitXBy,
|
|
199239
|
+
_MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,
|
|
199240
|
+
_MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT
|
|
199241
|
+
);
|
|
199242
|
+
let splitYBy = Math.ceil(
|
|
199243
|
+
(figureMaxY - figureMinY) * _MeshShading.TRIANGLE_DENSITY / (this.bounds[3] - this.bounds[1])
|
|
199244
|
+
);
|
|
199245
|
+
splitYBy = MathClamp(
|
|
199246
|
+
splitYBy,
|
|
199247
|
+
_MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,
|
|
199248
|
+
_MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT
|
|
199249
|
+
);
|
|
199250
|
+
const verticesPerRow = splitXBy + 1;
|
|
199251
|
+
const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);
|
|
199252
|
+
const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);
|
|
199253
|
+
let k = 0;
|
|
199254
|
+
const cl = new Uint8Array(3), cr = new Uint8Array(3);
|
|
199255
|
+
const c0 = colors2[ci[0]], c1 = colors2[ci[1]], c22 = colors2[ci[2]], c32 = colors2[ci[3]];
|
|
199256
|
+
const bRow = getB(splitYBy), bCol = getB(splitXBy);
|
|
199257
|
+
for (let row = 0; row <= splitYBy; row++) {
|
|
199258
|
+
cl[0] = (c0[0] * (splitYBy - row) + c22[0] * row) / splitYBy | 0;
|
|
199259
|
+
cl[1] = (c0[1] * (splitYBy - row) + c22[1] * row) / splitYBy | 0;
|
|
199260
|
+
cl[2] = (c0[2] * (splitYBy - row) + c22[2] * row) / splitYBy | 0;
|
|
199261
|
+
cr[0] = (c1[0] * (splitYBy - row) + c32[0] * row) / splitYBy | 0;
|
|
199262
|
+
cr[1] = (c1[1] * (splitYBy - row) + c32[1] * row) / splitYBy | 0;
|
|
199263
|
+
cr[2] = (c1[2] * (splitYBy - row) + c32[2] * row) / splitYBy | 0;
|
|
199264
|
+
for (let col = 0; col <= splitXBy; col++, k++) {
|
|
199265
|
+
if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) {
|
|
199266
|
+
continue;
|
|
199267
|
+
}
|
|
199268
|
+
let x = 0, y = 0;
|
|
199269
|
+
let q2 = 0;
|
|
199270
|
+
for (let i = 0; i <= 3; i++) {
|
|
199271
|
+
for (let j = 0; j <= 3; j++, q2++) {
|
|
199272
|
+
const m = bRow[row][i] * bCol[col][j];
|
|
199273
|
+
x += coords[pi2[q2]][0] * m;
|
|
199274
|
+
y += coords[pi2[q2]][1] * m;
|
|
199275
|
+
}
|
|
199276
|
+
}
|
|
199277
|
+
figureCoords[k] = coords.length;
|
|
199278
|
+
coords.push([x, y]);
|
|
199279
|
+
figureColors[k] = colors2.length;
|
|
199280
|
+
const newColor = new Uint8Array(3);
|
|
199281
|
+
newColor[0] = (cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy | 0;
|
|
199282
|
+
newColor[1] = (cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy | 0;
|
|
199283
|
+
newColor[2] = (cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy | 0;
|
|
199284
|
+
colors2.push(newColor);
|
|
199285
|
+
}
|
|
199286
|
+
}
|
|
199287
|
+
figureCoords[0] = pi2[0];
|
|
199288
|
+
figureColors[0] = ci[0];
|
|
199289
|
+
figureCoords[splitXBy] = pi2[3];
|
|
199290
|
+
figureColors[splitXBy] = ci[1];
|
|
199291
|
+
figureCoords[verticesPerRow * splitYBy] = pi2[12];
|
|
199292
|
+
figureColors[verticesPerRow * splitYBy] = ci[2];
|
|
199293
|
+
figureCoords[verticesPerRow * splitYBy + splitXBy] = pi2[15];
|
|
199294
|
+
figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];
|
|
199295
|
+
this.figures[index2] = {
|
|
199296
|
+
type: MeshFigureType.LATTICE,
|
|
199297
|
+
coords: figureCoords,
|
|
199298
|
+
colors: figureColors,
|
|
199299
|
+
verticesPerRow
|
|
199300
|
+
};
|
|
199301
|
+
}
|
|
199302
|
+
_updateBounds() {
|
|
199303
|
+
meshUpdateBounds(this);
|
|
199304
|
+
}
|
|
199305
|
+
_packData() {
|
|
199306
|
+
meshPackData(this);
|
|
199307
|
+
}
|
|
199308
|
+
getIR() {
|
|
199309
|
+
const { posData, colData, vertexCount } = buildMeshVertexData(
|
|
199310
|
+
this.coords,
|
|
199311
|
+
this.colors,
|
|
199312
|
+
this.figures
|
|
199313
|
+
);
|
|
199314
|
+
return [
|
|
199315
|
+
"Mesh",
|
|
199316
|
+
this.shadingType,
|
|
199317
|
+
posData,
|
|
199318
|
+
colData,
|
|
199319
|
+
vertexCount,
|
|
199320
|
+
this.bounds,
|
|
199321
|
+
this.bbox,
|
|
199322
|
+
this.background
|
|
199323
|
+
];
|
|
199324
|
+
}
|
|
199325
|
+
};
|
|
198627
199326
|
var PdfError2 = class extends Error {
|
|
198628
199327
|
constructor(code, message) {
|
|
198629
199328
|
super(message);
|
|
@@ -201529,11 +202228,16 @@ function parseDictionaryStream(dictNode, lexer, bytes) {
|
|
|
201529
202228
|
let streamEnd = streamStart;
|
|
201530
202229
|
if (resolvedLength !== void 0 && resolvedLength >= 0 && streamStart + resolvedLength <= bytes.length) {
|
|
201531
202230
|
const candidateEnd = streamStart + resolvedLength;
|
|
201532
|
-
const
|
|
201533
|
-
|
|
201534
|
-
|
|
202231
|
+
const tailLexer = new CosByteLexer(bytes, candidateEnd);
|
|
202232
|
+
let endToken;
|
|
202233
|
+
try {
|
|
202234
|
+
endToken = tailLexer.nextToken();
|
|
202235
|
+
} catch (error2) {
|
|
202236
|
+
if (!(error2 instanceof PdfError2) || error2.code !== "E_PARSE") throw error2;
|
|
202237
|
+
}
|
|
202238
|
+
if (endToken?.kind === "keyword" && endToken.value === "endstream") {
|
|
201535
202239
|
rawStreamBytes = bytes.subarray(streamStart, candidateEnd);
|
|
201536
|
-
streamEnd =
|
|
202240
|
+
streamEnd = tailLexer.offset;
|
|
201537
202241
|
}
|
|
201538
202242
|
}
|
|
201539
202243
|
if (!rawStreamBytes) {
|
|
@@ -210498,21 +211202,23 @@ function resolvePageFonts(doc, resourcesDict) {
|
|
|
210498
211202
|
}
|
|
210499
211203
|
}
|
|
210500
211204
|
} else {
|
|
210501
|
-
const stdName = normalizeStandard14FontName(baseFont);
|
|
210502
|
-
const stdMetrics = STANDARD_14_FONTS[stdName];
|
|
210503
|
-
defaultWidth = stdMetrics.defaultWidth;
|
|
210504
|
-
for (const [codeStr, wVal] of Object.entries(stdMetrics.widthsByCode)) {
|
|
210505
|
-
widths.set(Number(codeStr), wVal);
|
|
210506
|
-
}
|
|
210507
211205
|
const firstCharNode = doc.resolve(dictGet(fObj, "FirstChar"));
|
|
210508
211206
|
const widthsArr = doc.resolveArray(dictGet(fObj, "Widths"));
|
|
210509
|
-
if (
|
|
211207
|
+
if (widthsArr) {
|
|
211208
|
+
const descriptor3 = doc.resolveDict(dictGet(fObj, "FontDescriptor"));
|
|
211209
|
+
const missingWidth = descriptor3 ? doc.resolve(dictGet(descriptor3, "MissingWidth")) : void 0;
|
|
211210
|
+
defaultWidth = (missingWidth?.kind === "number" ? missingWidth.value : 0) * type3Scale1000;
|
|
211211
|
+
const firstChar = firstCharNode?.kind === "number" ? firstCharNode.value : 0;
|
|
210510
211212
|
for (let k = 0; k < widthsArr.items.length; k++) {
|
|
210511
211213
|
const wItem = doc.resolve(widthsArr.items[k]);
|
|
210512
211214
|
if (wItem?.kind === "number") {
|
|
210513
|
-
widths.set(
|
|
211215
|
+
widths.set(firstChar + k, wItem.value * type3Scale1000);
|
|
210514
211216
|
}
|
|
210515
211217
|
}
|
|
211218
|
+
} else {
|
|
211219
|
+
const stdMetrics = STANDARD_14_FONTS[normalizeStandard14FontName(baseFont)];
|
|
211220
|
+
defaultWidth = stdMetrics.defaultWidth;
|
|
211221
|
+
for (const [codeStr, wVal] of Object.entries(stdMetrics.widthsByCode)) widths.set(Number(codeStr), wVal);
|
|
210516
211222
|
}
|
|
210517
211223
|
}
|
|
210518
211224
|
let embeddedCff;
|
|
@@ -210901,143 +211607,28 @@ function renderMeshShadingToImage(doc, shDict, shStream, shType, effectiveCtm, t
|
|
|
210901
211607
|
const r = doc.resolve(it);
|
|
210902
211608
|
return r?.kind === "number" ? r.value : 0;
|
|
210903
211609
|
});
|
|
210904
|
-
const xmin = decodeNums[0], xmax = decodeNums[1], ymin = decodeNums[2], ymax = decodeNums[3];
|
|
210905
|
-
const numColorParams = Math.max(1, Math.floor((decodeNums.length - 4) / 2));
|
|
210906
211610
|
const fnNode = dictGet(shDict, "Function");
|
|
210907
211611
|
const csNode = doc.resolve(dictGet(shDict, "ColorSpace"));
|
|
210908
211612
|
const csName = csNode?.kind === "name" ? csNode.decoded : "DeviceRGB";
|
|
210909
|
-
|
|
210910
|
-
const
|
|
210911
|
-
|
|
210912
|
-
|
|
210913
|
-
|
|
210914
|
-
|
|
210915
|
-
|
|
210916
|
-
|
|
210917
|
-
|
|
210918
|
-
|
|
210919
|
-
|
|
210920
|
-
|
|
210921
|
-
|
|
210922
|
-
|
|
210923
|
-
|
|
210924
|
-
|
|
210925
|
-
|
|
210926
|
-
|
|
210927
|
-
|
|
210928
|
-
};
|
|
210929
|
-
const readColorRgb = () => {
|
|
210930
|
-
const params = [];
|
|
210931
|
-
for (let c4 = 0; c4 < numColorParams; c4++) {
|
|
210932
|
-
const rc = readBits(bpcComp) / compMax;
|
|
210933
|
-
const cMin = decodeNums[4 + c4 * 2] ?? 0;
|
|
210934
|
-
const cMax = decodeNums[4 + c4 * 2 + 1] ?? 1;
|
|
210935
|
-
params.push(cMin + rc * (cMax - cMin));
|
|
210936
|
-
}
|
|
210937
|
-
const comps = fnNode ? evalShadingFunctionToComponents(doc, fnNode, params) : params;
|
|
210938
|
-
return convertColorSpaceComponentsToRgb(doc, csNode, csName, comps);
|
|
210939
|
-
};
|
|
210940
|
-
const triangles = [];
|
|
210941
|
-
if (shType === 4) {
|
|
210942
|
-
const minBitsPerVert = bpcFlag + 2 * bpcCoord + numColorParams * bpcComp;
|
|
210943
|
-
let triVerts;
|
|
210944
|
-
while (bitPos + minBitsPerVert <= totalBits) {
|
|
210945
|
-
const flag = readBits(bpcFlag) & 3;
|
|
210946
|
-
const [x, y] = readCoord();
|
|
210947
|
-
const rgb22 = readColorRgb();
|
|
210948
|
-
const vNew = { x, y, rgb: rgb22 };
|
|
210949
|
-
if (flag === 0 || !triVerts) {
|
|
210950
|
-
if (bitPos + 2 * minBitsPerVert > totalBits) break;
|
|
210951
|
-
readBits(bpcFlag);
|
|
210952
|
-
const [x1, y1] = readCoord();
|
|
210953
|
-
const rgb1 = readColorRgb();
|
|
210954
|
-
readBits(bpcFlag);
|
|
210955
|
-
const [x2, y2] = readCoord();
|
|
210956
|
-
const rgb222 = readColorRgb();
|
|
210957
|
-
triVerts = [vNew, { x: x1, y: y1, rgb: rgb1 }, { x: x2, y: y2, rgb: rgb222 }];
|
|
210958
|
-
triangles.push(triVerts);
|
|
210959
|
-
} else if (flag === 1) {
|
|
210960
|
-
triVerts = [triVerts[1], triVerts[2], vNew];
|
|
210961
|
-
triangles.push(triVerts);
|
|
210962
|
-
} else if (flag === 2) {
|
|
210963
|
-
triVerts = [triVerts[0], triVerts[2], vNew];
|
|
210964
|
-
triangles.push(triVerts);
|
|
210965
|
-
}
|
|
210966
|
-
}
|
|
210967
|
-
} else if (shType === 5) {
|
|
210968
|
-
const minBitsPerVert = 2 * bpcCoord + numColorParams * bpcComp;
|
|
210969
|
-
const verts = [];
|
|
210970
|
-
while (bitPos + minBitsPerVert <= totalBits) {
|
|
210971
|
-
const [x, y] = readCoord();
|
|
210972
|
-
const rgb22 = readColorRgb();
|
|
210973
|
-
verts.push({ x, y, rgb: rgb22 });
|
|
210974
|
-
}
|
|
210975
|
-
const numRows = Math.floor(verts.length / vPerRow);
|
|
210976
|
-
for (let r = 0; r + 1 < numRows; r++) {
|
|
210977
|
-
for (let c4 = 0; c4 + 1 < vPerRow; c4++) {
|
|
210978
|
-
const v00 = verts[r * vPerRow + c4];
|
|
210979
|
-
const v01 = verts[r * vPerRow + c4 + 1];
|
|
210980
|
-
const v11 = verts[(r + 1) * vPerRow + c4 + 1];
|
|
210981
|
-
const v10 = verts[(r + 1) * vPerRow + c4];
|
|
210982
|
-
triangles.push([v00, v01, v11], [v00, v11, v10]);
|
|
210983
|
-
}
|
|
210984
|
-
}
|
|
210985
|
-
} else if (shType === 6 || shType === 7) {
|
|
210986
|
-
const numCtrl = shType === 6 ? 12 : 16;
|
|
210987
|
-
const minBitsPatch = bpcFlag + (numCtrl - 4) * 2 * bpcCoord + 2 * numColorParams * bpcComp;
|
|
210988
|
-
let prevPts;
|
|
210989
|
-
let prevColors;
|
|
210990
|
-
while (bitPos + minBitsPatch <= totalBits) {
|
|
210991
|
-
const flag = readBits(bpcFlag) & 3;
|
|
210992
|
-
let pts = [];
|
|
210993
|
-
let cols = [];
|
|
210994
|
-
if (flag === 0 || !prevPts || !prevColors) {
|
|
210995
|
-
for (let i = 0; i < numCtrl; i++) pts.push(readCoord());
|
|
210996
|
-
for (let i = 0; i < 4; i++) cols.push(readColorRgb());
|
|
210997
|
-
} else {
|
|
210998
|
-
const extraCtrl = numCtrl - 4;
|
|
210999
|
-
const readExtra = [];
|
|
211000
|
-
for (let i = 0; i < extraCtrl; i++) readExtra.push(readCoord());
|
|
211001
|
-
const c22 = readColorRgb();
|
|
211002
|
-
const c32 = readColorRgb();
|
|
211003
|
-
pts = [prevPts[3], prevPts[4], prevPts[5], prevPts[6], ...readExtra];
|
|
211004
|
-
cols = [prevColors[1], prevColors[2], c22, c32];
|
|
211005
|
-
}
|
|
211006
|
-
prevPts = pts;
|
|
211007
|
-
prevColors = cols;
|
|
211008
|
-
const p00 = pts[0];
|
|
211009
|
-
const p03 = pts[3];
|
|
211010
|
-
const p33 = pts[6];
|
|
211011
|
-
const p30 = pts[9];
|
|
211012
|
-
const c00 = cols[0], c03 = cols[1], c33 = cols[2], c30 = cols[3];
|
|
211013
|
-
const steps = 4;
|
|
211014
|
-
const grid = [];
|
|
211015
|
-
for (let iu = 0; iu <= steps; iu++) {
|
|
211016
|
-
const u = iu / steps;
|
|
211017
|
-
const row = [];
|
|
211018
|
-
for (let iv = 0; iv <= steps; iv++) {
|
|
211019
|
-
const v = iv / steps;
|
|
211020
|
-
const x = (1 - u) * (1 - v) * p00[0] + (1 - u) * v * p03[0] + u * v * p33[0] + u * (1 - v) * p30[0];
|
|
211021
|
-
const y = (1 - u) * (1 - v) * p00[1] + (1 - u) * v * p03[1] + u * v * p33[1] + u * (1 - v) * p30[1];
|
|
211022
|
-
const r = (1 - u) * (1 - v) * c00[0] + (1 - u) * v * c03[0] + u * v * c33[0] + u * (1 - v) * c30[0];
|
|
211023
|
-
const g = (1 - u) * (1 - v) * c00[1] + (1 - u) * v * c03[1] + u * v * c33[1] + u * (1 - v) * c30[1];
|
|
211024
|
-
const b3 = (1 - u) * (1 - v) * c00[2] + (1 - u) * v * c03[2] + u * v * c33[2] + u * (1 - v) * c30[2];
|
|
211025
|
-
row.push({ x, y, rgb: [r, g, b3] });
|
|
211026
|
-
}
|
|
211027
|
-
grid.push(row);
|
|
211028
|
-
}
|
|
211029
|
-
for (let iu = 0; iu < steps; iu++) {
|
|
211030
|
-
for (let iv = 0; iv < steps; iv++) {
|
|
211031
|
-
const g00 = grid[iu][iv];
|
|
211032
|
-
const g01 = grid[iu][iv + 1];
|
|
211033
|
-
const g11 = grid[iu + 1][iv + 1];
|
|
211034
|
-
const g10 = grid[iu + 1][iv];
|
|
211035
|
-
triangles.push([g00, g01, g11], [g00, g11, g10]);
|
|
211036
|
-
}
|
|
211037
|
-
}
|
|
211038
|
-
}
|
|
211039
|
-
}
|
|
211040
|
-
if (triangles.length === 0) return void 0;
|
|
211613
|
+
const numComps = fnNode ? 1 : getColorSpaceComponentCount(doc, csNode);
|
|
211614
|
+
const mesh = new MeshShading(shType, new Stream(bytes), {
|
|
211615
|
+
bitsPerCoordinate: bpcCoord,
|
|
211616
|
+
bitsPerComponent: bpcComp,
|
|
211617
|
+
bitsPerFlag: bpcFlag,
|
|
211618
|
+
decode: decodeNums,
|
|
211619
|
+
numComps,
|
|
211620
|
+
colorFn: null,
|
|
211621
|
+
colorSpace: {
|
|
211622
|
+
numComps,
|
|
211623
|
+
getRgb(components22) {
|
|
211624
|
+
const params = Array.from(components22);
|
|
211625
|
+
const values2 = fnNode ? evalShadingFunctionToComponents(doc, fnNode, params) : params;
|
|
211626
|
+
return new Uint8Array(convertColorSpaceComponentsToRgb(doc, csNode, csName, values2).map((value3) => Math.round(Math.max(0, Math.min(1, value3)) * 255)));
|
|
211627
|
+
}
|
|
211628
|
+
}
|
|
211629
|
+
}, vPerRow);
|
|
211630
|
+
const [, , positions, colors2, vertexCount] = mesh.getIR();
|
|
211631
|
+
if (vertexCount === 0) return void 0;
|
|
211041
211632
|
const [bx0, by0, bx1, by1] = targetBox;
|
|
211042
211633
|
const boxW = Math.max(1, bx1 - bx0);
|
|
211043
211634
|
const boxH = Math.max(1, by1 - by0);
|
|
@@ -211049,10 +211640,10 @@ function renderMeshShadingToImage(doc, shDict, shStream, shType, effectiveCtm, t
|
|
|
211049
211640
|
const [px, py] = transformPoint(effectiveCtm, vx, vy);
|
|
211050
211641
|
return [(px - bx0) / boxW * imgW, (by1 - py) / boxH * imgH];
|
|
211051
211642
|
};
|
|
211052
|
-
for (
|
|
211053
|
-
const [x0, y0] = toImgCoords(
|
|
211054
|
-
const [x1, y1] = toImgCoords(
|
|
211055
|
-
const [x2, y2] = toImgCoords(
|
|
211643
|
+
for (let vertex = 0; vertex < vertexCount; vertex += 3) {
|
|
211644
|
+
const [x0, y0] = toImgCoords(positions[vertex * 2], positions[vertex * 2 + 1]);
|
|
211645
|
+
const [x1, y1] = toImgCoords(positions[vertex * 2 + 2], positions[vertex * 2 + 3]);
|
|
211646
|
+
const [x2, y2] = toImgCoords(positions[vertex * 2 + 4], positions[vertex * 2 + 5]);
|
|
211056
211647
|
const denom = (y1 - y2) * (x0 - x2) + (x2 - x1) * (y0 - y2);
|
|
211057
211648
|
if (Math.abs(denom) < 1e-6) continue;
|
|
211058
211649
|
const minX = Math.max(0, Math.floor(Math.min(x0, x1, x2)));
|
|
@@ -211067,13 +211658,12 @@ function renderMeshShadingToImage(doc, shDict, shStream, shType, effectiveCtm, t
|
|
|
211067
211658
|
const w1 = ((y2 - y0) * (px - x2) + (x0 - x2) * (py - y2)) / denom;
|
|
211068
211659
|
const w2 = 1 - w0 - w1;
|
|
211069
211660
|
if (w0 >= -1e-4 && w1 >= -1e-4 && w2 >= -1e-4) {
|
|
211070
|
-
const r = w0 * v0.rgb[0] + w1 * v1.rgb[0] + w2 * v2.rgb[0];
|
|
211071
|
-
const g = w0 * v0.rgb[1] + w1 * v1.rgb[1] + w2 * v2.rgb[1];
|
|
211072
|
-
const b3 = w0 * v0.rgb[2] + w1 * v1.rgb[2] + w2 * v2.rgb[2];
|
|
211073
211661
|
const pIdx = (iy * imgW + ix) * 4;
|
|
211074
|
-
|
|
211075
|
-
|
|
211076
|
-
|
|
211662
|
+
for (let channel = 0; channel < 3; channel++) {
|
|
211663
|
+
rgba[pIdx + channel] = Math.round(
|
|
211664
|
+
w0 * colors2[vertex * 4 + channel] + w1 * colors2[vertex * 4 + 4 + channel] + w2 * colors2[vertex * 4 + 8 + channel]
|
|
211665
|
+
);
|
|
211666
|
+
}
|
|
211077
211667
|
rgba[pIdx + 3] = a8;
|
|
211078
211668
|
}
|
|
211079
211669
|
}
|
|
@@ -211160,6 +211750,8 @@ function renderShadingDictToImage(doc, shDict, shadingCtm, targetBox, fillAlpha,
|
|
|
211160
211750
|
const [a3, b3, c4, d2, e, f2] = effectiveCtm;
|
|
211161
211751
|
const det = a3 * d2 - b3 * c4;
|
|
211162
211752
|
if (Math.abs(det) <= 1e-8) return void 0;
|
|
211753
|
+
const [sa, sb, sc, sd, se, sf] = shadingCtm;
|
|
211754
|
+
const shadingDet = sa * sd - sb * sc;
|
|
211163
211755
|
const t0Dom = shDomain[0] ?? 0;
|
|
211164
211756
|
const t1Dom = shDomain[1] ?? 1;
|
|
211165
211757
|
for (let iy = 0; iy < imgH; iy++) {
|
|
@@ -211170,8 +211762,10 @@ function renderShadingDictToImage(doc, shDict, shadingCtm, targetBox, fillAlpha,
|
|
|
211170
211762
|
const dxPdf = xPdf - e;
|
|
211171
211763
|
const xs = (d2 * dxPdf - c4 * dyPdf) / det;
|
|
211172
211764
|
const ys = (-b3 * dxPdf + a3 * dyPdf) / det;
|
|
211173
|
-
if (shBBox
|
|
211174
|
-
|
|
211765
|
+
if (shBBox) {
|
|
211766
|
+
const bboxX = (sd * (xPdf - se) - sc * (yPdf - sf)) / shadingDet;
|
|
211767
|
+
const bboxY = (-sb * (xPdf - se) + sa * (yPdf - sf)) / shadingDet;
|
|
211768
|
+
if (bboxX < shBBox[0] || bboxX > shBBox[2] || bboxY < shBBox[1] || bboxY > shBBox[3]) continue;
|
|
211175
211769
|
}
|
|
211176
211770
|
let comps;
|
|
211177
211771
|
if (shType === 1) {
|
|
@@ -211380,13 +211974,11 @@ function evaluateContentStreamToDisplayList(params) {
|
|
|
211380
211974
|
}
|
|
211381
211975
|
if (font2?.cmap) {
|
|
211382
211976
|
if (!font2.isTwoByteCid) {
|
|
211383
|
-
const stdName2 = normalizeStandard14FontName(font2.baseFont);
|
|
211384
|
-
const stdMetrics2 = STANDARD_14_FONTS[stdName2];
|
|
211385
211977
|
const out2 = [];
|
|
211386
211978
|
for (let i = 0; i < bytes.length; i++) {
|
|
211387
211979
|
const code = bytes[i];
|
|
211388
211980
|
const unicode = font2.cmap.map.get(code) ?? (font2.differences.has(code) ? font2.differences.get(code) : decodeWinAnsiByte(code));
|
|
211389
|
-
const advance1000 = font2.widths.get(code) ??
|
|
211981
|
+
const advance1000 = font2.widths.get(code) ?? font2.defaultWidth;
|
|
211390
211982
|
out2.push({ charCode: code, isSpace: code === 32, unicode, advance1000 });
|
|
211391
211983
|
}
|
|
211392
211984
|
return out2;
|
|
@@ -211418,7 +212010,7 @@ function evaluateContentStreamToDisplayList(params) {
|
|
|
211418
212010
|
for (let i = 0; i < bytes.length; i++) {
|
|
211419
212011
|
const code = bytes[i];
|
|
211420
212012
|
const unicode = font2?.differences.get(code) ?? decodeWinAnsiByte(code);
|
|
211421
|
-
const advance1000 = font2
|
|
212013
|
+
const advance1000 = font2 ? font2.widths.get(code) ?? font2.defaultWidth : stdMetrics.widthsByCode[code] ?? stdMetrics.defaultWidth;
|
|
211422
212014
|
out.push({ charCode: code, isSpace: code === 32, unicode, advance1000 });
|
|
211423
212015
|
}
|
|
211424
212016
|
return out;
|