Merge pull request #16171 from Snuffleupagus/PDFViewer-cleanup-scale-methods
Clean-up the `PDFViewer.{increaseScale, decreaseScale}` methods
This commit is contained in:
commit
27fe7e9e72
@ -2003,83 +2003,58 @@ class PDFViewer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Increase the current zoom level one, or more, times.
|
* @typedef {Object} ChangeScaleOptions
|
||||||
* @param {Object|null} [options]
|
* @property {number} [drawingDelay]
|
||||||
|
* @property {number} [scaleFactor]
|
||||||
|
* @property {number} [steps]
|
||||||
*/
|
*/
|
||||||
increaseScale(options = null) {
|
|
||||||
if (
|
|
||||||
(typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) &&
|
|
||||||
typeof options === "number"
|
|
||||||
) {
|
|
||||||
console.error(
|
|
||||||
"The `increaseScale` method-signature was updated, please use an object instead."
|
|
||||||
);
|
|
||||||
options = { steps: options };
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Increase the current zoom level one, or more, times.
|
||||||
|
* @param {ChangeScaleOptions} [options]
|
||||||
|
*/
|
||||||
|
increaseScale({ drawingDelay, scaleFactor, steps } = {}) {
|
||||||
if (!this.pdfDocument) {
|
if (!this.pdfDocument) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
options ||= Object.create(null);
|
|
||||||
|
|
||||||
let newScale = this._currentScale;
|
let newScale = this._currentScale;
|
||||||
if (options.scaleFactor > 1) {
|
if (scaleFactor > 1) {
|
||||||
newScale = Math.min(
|
newScale = Math.min(
|
||||||
MAX_SCALE,
|
MAX_SCALE,
|
||||||
Math.round(newScale * options.scaleFactor * 100) / 100
|
Math.round(newScale * scaleFactor * 100) / 100
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
let steps = options.steps ?? 1;
|
steps ??= 1;
|
||||||
do {
|
do {
|
||||||
newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2);
|
newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2);
|
||||||
newScale = Math.ceil(newScale * 10) / 10;
|
newScale = Math.min(MAX_SCALE, Math.ceil(newScale * 10) / 10);
|
||||||
newScale = Math.min(MAX_SCALE, newScale);
|
|
||||||
} while (--steps > 0 && newScale < MAX_SCALE);
|
} while (--steps > 0 && newScale < MAX_SCALE);
|
||||||
}
|
}
|
||||||
|
this._setScale(newScale, { noScroll: false, drawingDelay });
|
||||||
options.noScroll = false;
|
|
||||||
this._setScale(newScale, options);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Decrease the current zoom level one, or more, times.
|
* Decrease the current zoom level one, or more, times.
|
||||||
* @param {Object|null} [options]
|
* @param {ChangeScaleOptions} [options]
|
||||||
*/
|
*/
|
||||||
decreaseScale(options = null) {
|
decreaseScale({ drawingDelay, scaleFactor, steps } = {}) {
|
||||||
if (
|
|
||||||
(typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) &&
|
|
||||||
typeof options === "number"
|
|
||||||
) {
|
|
||||||
console.error(
|
|
||||||
"The `decreaseScale` method-signature was updated, please use an object instead."
|
|
||||||
);
|
|
||||||
options = { steps: options };
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!this.pdfDocument) {
|
if (!this.pdfDocument) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
options ||= Object.create(null);
|
|
||||||
|
|
||||||
let newScale = this._currentScale;
|
let newScale = this._currentScale;
|
||||||
if (options.scaleFactor > 0 && options.scaleFactor < 1) {
|
if (scaleFactor > 0 && scaleFactor < 1) {
|
||||||
newScale = Math.max(
|
newScale = Math.max(
|
||||||
MIN_SCALE,
|
MIN_SCALE,
|
||||||
Math.round(newScale * options.scaleFactor * 100) / 100
|
Math.round(newScale * scaleFactor * 100) / 100
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
let steps = options.steps ?? 1;
|
steps ??= 1;
|
||||||
do {
|
do {
|
||||||
newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2);
|
newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2);
|
||||||
newScale = Math.floor(newScale * 10) / 10;
|
newScale = Math.max(MIN_SCALE, Math.floor(newScale * 10) / 10);
|
||||||
newScale = Math.max(MIN_SCALE, newScale);
|
|
||||||
} while (--steps > 0 && newScale > MIN_SCALE);
|
} while (--steps > 0 && newScale > MIN_SCALE);
|
||||||
}
|
}
|
||||||
|
this._setScale(newScale, { noScroll: false, drawingDelay });
|
||||||
options.noScroll = false;
|
|
||||||
this._setScale(newScale, options);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#updateContainerHeightCss(height = this.container.clientHeight) {
|
#updateContainerHeightCss(height = this.container.clientHeight) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user