mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-22 16:37:31 +09:00
Bug 1452075 - Backport some upstream pdf.js fixes.
This commit is contained in:
parent
52269fa01a
commit
32c5941589
2 changed files with 60 additions and 42 deletions
|
|
@ -41653,6 +41653,22 @@
|
|||
var isStream = corePrimitives.isStream;
|
||||
var PostScriptLexer = corePsParser.PostScriptLexer;
|
||||
var PostScriptParser = corePsParser.PostScriptParser;
|
||||
function toNumberArray(arr) {
|
||||
if (!Array.isArray(arr)) {
|
||||
return null;
|
||||
}
|
||||
var length = arr.length;
|
||||
for (var i = 0; i < length; i++) {
|
||||
if (typeof arr[i] !== 'number') {
|
||||
var result = new Array(length);
|
||||
for (var j = 0; j < length; j++) {
|
||||
result[j] = +arr[j];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
var PDFFunction = function PDFFunctionClosure() {
|
||||
var CONSTRUCT_SAMPLED = 0;
|
||||
var CONSTRUCT_INTERPOLATED = 2;
|
||||
|
|
@ -41752,8 +41768,8 @@
|
|||
}
|
||||
return out;
|
||||
}
|
||||
var domain = dict.getArray('Domain');
|
||||
var range = dict.getArray('Range');
|
||||
var domain = toNumberArray(dict.getArray('Domain'));
|
||||
var range = toNumberArray(dict.getArray('Range'));
|
||||
if (!domain || !range) {
|
||||
error('No domain or range');
|
||||
}
|
||||
|
|
@ -41761,7 +41777,7 @@
|
|||
var outputSize = range.length / 2;
|
||||
domain = toMultiArray(domain);
|
||||
range = toMultiArray(range);
|
||||
var size = dict.get('Size');
|
||||
var size = toNumberArray(dict.get('Size'));
|
||||
var bps = dict.get('BitsPerSample');
|
||||
var order = dict.get('Order') || 1;
|
||||
if (order !== 1) {
|
||||
|
|
@ -41769,16 +41785,16 @@
|
|||
// As in poppler, ignoring order, linear interpolation may work as good
|
||||
info('No support for cubic spline interpolation: ' + order);
|
||||
}
|
||||
var encode = dict.getArray('Encode');
|
||||
var encode = toNumberArray(dict.getArray('Encode'));
|
||||
if (!encode) {
|
||||
encode = [];
|
||||
for (var i = 0; i < inputSize; ++i) {
|
||||
encode.push(0);
|
||||
encode.push(size[i] - 1);
|
||||
encode.push([0, size[i] - 1]);
|
||||
}
|
||||
} else {
|
||||
encode = toMultiArray(encode);
|
||||
}
|
||||
encode = toMultiArray(encode);
|
||||
var decode = dict.getArray('Decode');
|
||||
var decode = toNumberArray(dict.getArray('Decode'));
|
||||
if (!decode) {
|
||||
decode = range;
|
||||
} else {
|
||||
|
|
@ -41873,12 +41889,9 @@
|
|||
};
|
||||
},
|
||||
constructInterpolated: function PDFFunction_constructInterpolated(str, dict) {
|
||||
var c0 = dict.getArray('C0') || [0];
|
||||
var c1 = dict.getArray('C1') || [1];
|
||||
var c0 = toNumberArray(dict.getArray('C0')) || [0];
|
||||
var c1 = toNumberArray(dict.getArray('C1')) || [1];
|
||||
var n = dict.get('N');
|
||||
if (!isArray(c0) || !isArray(c1)) {
|
||||
error('Illegal dictionary for interpolated function');
|
||||
}
|
||||
var length = c0.length;
|
||||
var diff = [];
|
||||
for (var i = 0; i < length; ++i) {
|
||||
|
|
@ -41904,7 +41917,7 @@
|
|||
};
|
||||
},
|
||||
constructStiched: function PDFFunction_constructStiched(fn, dict, xref) {
|
||||
var domain = dict.getArray('Domain');
|
||||
var domain = toNumberArray(dict.getArray('Domain'));
|
||||
if (!domain) {
|
||||
error('No domain');
|
||||
}
|
||||
|
|
@ -41915,10 +41928,10 @@
|
|||
var fnRefs = dict.get('Functions');
|
||||
var fns = [];
|
||||
for (var i = 0, ii = fnRefs.length; i < ii; ++i) {
|
||||
fns.push(PDFFunction.getIR(xref, xref.fetchIfRef(fnRefs[i])));
|
||||
fns.push(PDFFunction.parse(xref, xref.fetchIfRef(fnRefs[i])));
|
||||
}
|
||||
var bounds = dict.getArray('Bounds');
|
||||
var encode = dict.getArray('Encode');
|
||||
var bounds = toNumberArray(dict.getArray('Bounds'));
|
||||
var encode = toNumberArray(dict.getArray('Encode'));
|
||||
return [
|
||||
CONSTRUCT_STICHED,
|
||||
domain,
|
||||
|
|
@ -41931,12 +41944,8 @@
|
|||
var domain = IR[1];
|
||||
var bounds = IR[2];
|
||||
var encode = IR[3];
|
||||
var fnsIR = IR[4];
|
||||
var fns = [];
|
||||
var fns = IR[4];
|
||||
var tmpBuf = new Float32Array(1);
|
||||
for (var i = 0, ii = fnsIR.length; i < ii; i++) {
|
||||
fns.push(PDFFunction.fromIR(fnsIR[i]));
|
||||
}
|
||||
return function constructStichedFromIRResult(src, srcOffset, dest, destOffset) {
|
||||
var clip = function constructStichedFromIRClip(v, min, max) {
|
||||
if (v > max) {
|
||||
|
|
@ -41973,8 +41982,8 @@
|
|||
};
|
||||
},
|
||||
constructPostScript: function PDFFunction_constructPostScript(fn, dict, xref) {
|
||||
var domain = dict.getArray('Domain');
|
||||
var range = dict.getArray('Range');
|
||||
var domain = toNumberArray(dict.getArray('Domain'));
|
||||
var range = toNumberArray(dict.getArray('Range'));
|
||||
if (!domain) {
|
||||
error('No domain.');
|
||||
}
|
||||
|
|
@ -42933,8 +42942,8 @@
|
|||
case 'AlternateCS':
|
||||
var numComps = IR[1];
|
||||
var alt = IR[2];
|
||||
var tintFnIR = IR[3];
|
||||
return new AlternateCS(numComps, ColorSpace.fromIR(alt), PDFFunction.fromIR(tintFnIR));
|
||||
var tintFn = IR[3];
|
||||
return new AlternateCS(numComps, ColorSpace.fromIR(alt), tintFn);
|
||||
case 'LabCS':
|
||||
whitePoint = IR[1];
|
||||
blackPoint = IR[2];
|
||||
|
|
@ -43072,12 +43081,12 @@
|
|||
numComps = name.length;
|
||||
}
|
||||
alt = ColorSpace.parseToIR(cs[2], xref, res);
|
||||
var tintFnIR = PDFFunction.getIR(xref, xref.fetchIfRef(cs[3]));
|
||||
var tintFn = PDFFunction.parse(xref, xref.fetchIfRef(cs[3]));
|
||||
return [
|
||||
'AlternateCS',
|
||||
numComps,
|
||||
alt,
|
||||
tintFnIR
|
||||
tintFn
|
||||
];
|
||||
case 'Lab':
|
||||
params = xref.fetchIfRef(cs[1]);
|
||||
|
|
@ -52488,4 +52497,4 @@
|
|||
}));
|
||||
}.call(pdfjsLibs));
|
||||
exports.WorkerMessageHandler = pdfjsLibs.pdfjsCoreWorker.WorkerMessageHandler;
|
||||
}));
|
||||
}));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue