mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-20 15:18:08 +02:00
Support the maxCanvasPixels
option in the thumbnails code
This addresses an inconsistency in the viewer, since the thumbnails don't respect the `maxCanvasPixels` option. Note that, as far as I know, this has not lead to any bugs since the thumbnails render with a fixed (and small) width, however it really cannot hurt to address this (especially after the introduction of the `maxCanvasDim` option). To support this a new `OutputScale`-method was added, to avoid having to duplicate code in multiple files.
This commit is contained in:
parent
1bc98dfbd9
commit
fc22d3afc7
5 changed files with 79 additions and 50 deletions
|
@ -640,9 +640,39 @@ class OutputScale {
|
|||
return this.sx !== 1 || this.sy !== 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @type {boolean} Returns `true` when scaling is symmetric,
|
||||
* `false` otherwise.
|
||||
*/
|
||||
get symmetric() {
|
||||
return this.sx === this.sy;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {boolean} Returns `true` if scaling was limited,
|
||||
* `false` otherwise.
|
||||
*/
|
||||
limitCanvas(width, height, maxPixels, maxDim) {
|
||||
let maxAreaScale = Infinity,
|
||||
maxWidthScale = Infinity,
|
||||
maxHeightScale = Infinity;
|
||||
|
||||
if (maxPixels > 0) {
|
||||
maxAreaScale = Math.sqrt(maxPixels / (width * height));
|
||||
}
|
||||
if (maxDim !== -1) {
|
||||
maxWidthScale = maxDim / width;
|
||||
maxHeightScale = maxDim / height;
|
||||
}
|
||||
const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);
|
||||
|
||||
if (this.sx > maxScale || this.sy > maxScale) {
|
||||
this.sx = maxScale;
|
||||
this.sy = maxScale;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// See https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue