Move rotation normalization from PDFViewerApplication
and into BaseViewer
The rotation handling that's currently living in `PDFViewerApplication` is *very* old, and pre-dates the introduction of the viewer components by years. As can be seen in the `BaseViewer.pagesRotation` setter, we're not actually normalizing the rotation as intended and instead rely on the caller to handle that correctly. This is first of all inconsistent, given how other setters are implemented, and secondly it could also lead to the rotation being set to a value outside of the `[0, 360)`-range. Finally, for improved consistency the rotation handling in `PageViewport` is updated similarly. Please note that this case, it's *not* changing the pre-existing logic.
This commit is contained in:
parent
ba76dd4000
commit
19c2dfbb96
@ -250,8 +250,11 @@ class PageViewport {
|
||||
const centerX = (viewBox[2] + viewBox[0]) / 2;
|
||||
const centerY = (viewBox[3] + viewBox[1]) / 2;
|
||||
let rotateA, rotateB, rotateC, rotateD;
|
||||
rotation = rotation % 360;
|
||||
rotation = rotation < 0 ? rotation + 360 : rotation;
|
||||
// Normalize the rotation, by clamping it to the [0, 360) range.
|
||||
rotation %= 360;
|
||||
if (rotation < 0) {
|
||||
rotation += 360;
|
||||
}
|
||||
switch (rotation) {
|
||||
case 180:
|
||||
rotateA = -1;
|
||||
|
@ -1856,11 +1856,7 @@ const PDFViewerApplication = {
|
||||
},
|
||||
|
||||
rotatePages(delta) {
|
||||
if (!this.pdfDocument) {
|
||||
return;
|
||||
}
|
||||
const newRotation = (this.pdfViewer.pagesRotation + 360 + delta) % 360;
|
||||
this.pdfViewer.pagesRotation = newRotation;
|
||||
this.pdfViewer.pagesRotation += delta;
|
||||
// Note that the thumbnail viewer is updated, and rendering is triggered,
|
||||
// in the 'rotationchanging' event handler.
|
||||
},
|
||||
|
@ -388,6 +388,11 @@ class BaseViewer {
|
||||
if (!this.pdfDocument) {
|
||||
return;
|
||||
}
|
||||
// Normalize the rotation, by clamping it to the [0, 360) range.
|
||||
rotation %= 360;
|
||||
if (rotation < 0) {
|
||||
rotation += 360;
|
||||
}
|
||||
if (this._pagesRotation === rotation) {
|
||||
return; // The rotation didn't change.
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user