[Regression] Prevent the *built* pdf.scripting.js/pdf.sandbox.js files from accidentally including most of the main-thread code (PR 12631 follow-up)

*This is a recent regression, which I stumbled upon while working on cleaning-up the gulpfile related to `pdf.sandbox.js` building.*

By placing the `ColorConverters` functionality in the `src/display/display_utils.js` file, you end up including a *significant* chunk of the `pdf.js` file in the built `pdf.scripting.js`/`pdf.sandbox.js` files.
Given that I cannot imagine that this was actually intended, since it inflates the built files with unnecessary/unused code, this moves `ColorConverters` to a new file instead (thus breaking the dependencies).

To hopefully reduce the risk future bugs, along these lines, a big comment is also placed at the top of the new file.
Finally, the `ColorConverters` is converted to a class with static methods, since this felt slightly cleaner overall.
This commit is contained in:
Jonas Jenwald 2020-12-04 13:46:32 +01:00
parent c1f41df4ad
commit 155c17c99a
4 changed files with 87 additions and 56 deletions

View file

@ -635,59 +635,6 @@ class PDFDateString {
}
}
function makeColorComp(n) {
return Math.floor(Math.max(0, Math.min(1, n)) * 255)
.toString(16)
.padStart(2, "0");
}
const ColorConverters = {
// PDF specifications section 10.3
CMYK_G([c, y, m, k]) {
return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];
},
G_CMYK([g]) {
return ["CMYK", 0, 0, 0, 1 - g];
},
G_RGB([g]) {
return ["RGB", g, g, g];
},
G_HTML([g]) {
const G = makeColorComp(g);
return `#${G}${G}${G}`;
},
RGB_G([r, g, b]) {
return ["G", 0.3 * r + 0.59 * g + 0.11 * b];
},
RGB_HTML([r, g, b]) {
const R = makeColorComp(r);
const G = makeColorComp(g);
const B = makeColorComp(b);
return `#${R}${G}${B}`;
},
T_HTML() {
return "#00000000";
},
CMYK_RGB([c, y, m, k]) {
return [
"RGB",
1 - Math.min(1, c + k),
1 - Math.min(1, m + k),
1 - Math.min(1, y + k),
];
},
CMYK_HTML(components) {
return ColorConverters.RGB_HTML(ColorConverters.CMYK_RGB(components));
},
RGB_CMYK([r, g, b]) {
const c = 1 - r;
const m = 1 - g;
const y = 1 - b;
const k = Math.min(c, m, y);
return ["CMYK", c, m, y, k];
},
};
export {
PageViewport,
RenderingCancelledException,
@ -698,7 +645,6 @@ export {
BaseCanvasFactory,
DOMCanvasFactory,
BaseCMapReaderFactory,
ColorConverters,
DOMCMapReaderFactory,
DOMSVGFactory,
StatTimer,