Merge 602824ba0f7addc08c78bb7c0d26baed162d0b11 into e20ee9958081a06ac91808ffe5726f3db62a7b3a

This commit is contained in:
Jonas Jenwald 2025-08-21 09:48:20 +02:00 committed by GitHub
commit c3d27a220c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 45 additions and 14 deletions

View File

@ -386,24 +386,46 @@ class AlternateCS extends ColorSpace {
: new Uint8ClampedArray(baseNumComps * count);
const numComps = this.numComps;
const tintCache = new Map();
// Use an integer cache-key when possible, since that's a lot faster than
// string concatenation.
const int32Key =
numComps <= 4 &&
(src instanceof Uint8Array || src instanceof Uint8ClampedArray);
const scaled = new Float32Array(numComps);
const tinted = new Float32Array(baseNumComps);
let i, j;
let i, j, key, val;
for (i = 0; i < count; i++) {
key = int32Key ? 0 : "";
for (j = 0; j < numComps; j++) {
scaled[j] = src[srcOffset++] * scale;
val = src[srcOffset++];
scaled[j] = val * scale;
key += int32Key ? val << (8 * j) : val + "_";
}
tintFn(scaled, 0, tinted, 0);
if (usesZeroToOneRange) {
for (j = 0; j < baseNumComps; j++) {
baseBuf[pos++] = tinted[j] * 255;
}
} else {
base.getRgbItem(tinted, 0, baseBuf, pos);
const cached = tintCache.get(key);
if (cached) {
baseBuf.set(cached, pos);
pos += baseNumComps;
} else {
tintFn(scaled, 0, tinted, 0);
if (usesZeroToOneRange) {
for (j = 0; j < baseNumComps; j++) {
baseBuf[pos++] = tinted[j] * 255;
}
} else {
base.getRgbItem(tinted, 0, baseBuf, pos);
pos += baseNumComps;
}
tintCache.set(key, baseBuf.slice(pos - baseNumComps, pos));
}
}
tintCache.clear();
if (!isPassthrough) {
base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);

View File

@ -392,12 +392,11 @@ class PDFFunction {
// seen in our tests.
const MAX_CACHE_SIZE = 2048 * 4;
let cache_available = MAX_CACHE_SIZE;
const tmpBuf = new Float32Array(numInputs);
const input = new Float32Array(numInputs);
return function constructPostScriptFn(src, srcOffset, dest, destOffset) {
let i, value;
let key = "";
const input = tmpBuf;
for (i = 0; i < numInputs; i++) {
value = src[srcOffset + i];
input[i] = value;

View File

@ -165,7 +165,7 @@ const RENDERING_CANCELLED_TIMEOUT = 100; // ms
* Use -1 for no limit, which is also the default value.
* @property {boolean} [isEvalSupported] - Determines if we can evaluate strings
* as JavaScript. Primarily used to improve performance of PDF functions.
* The default value is `true`.
* The default value is `false`.
* @property {boolean} [isOffscreenCanvasSupported] - Determines if we can use
* `OffscreenCanvas` in the worker. Primarily used to improve performance of
* image conversion/rendering.
@ -295,7 +295,7 @@ function getDocument(src = {}) {
Number.isInteger(src.maxImageSize) && src.maxImageSize > -1
? src.maxImageSize
: -1;
const isEvalSupported = src.isEvalSupported !== false;
const isEvalSupported = src.isEvalSupported === true;
const isOffscreenCanvasSupported =
typeof src.isOffscreenCanvasSupported === "boolean"
? src.isOffscreenCanvasSupported

View File

@ -0,0 +1 @@
https://web.archive.org/web/20140211020222/http://www.coachusa.com/CoachUsaAssets/files/97/route45.pdf

View File

@ -2269,6 +2269,15 @@
"lastPage": 1,
"type": "eq"
},
{
"id": "pr5134",
"file": "pdfs/pr5134.pdf",
"md5": "6a701a163472e071a2519348b55cbac1",
"rounds": 1,
"link": true,
"firstPage": 2,
"type": "eq"
},
{
"id": "issue5599",
"file": "pdfs/issue5599.pdf",

View File

@ -450,7 +450,7 @@ const defaultOptions = {
},
isEvalSupported: {
/** @type {boolean} */
value: true,
value: false,
kind: OptionKind.API,
},
isOffscreenCanvasSupported: {