From 1de466896d123486bdffd06bfbbd5735f5792d5b Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 19 Mar 2021 12:19:29 +0100 Subject: [PATCH] Remove one loop from `BaseViewer.getPagesOverview` Currently, with `enablePrintAutoRotate = true` set, we're forced to loop through all the pages *twice* when checking for any landscape pages. This seems completely unnecessary now, and using only *one* loop should be marginally more efficient in general. --- web/base_viewer.js | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/web/base_viewer.js b/web/base_viewer.js index 34f2e796a..9d77e8bbb 100644 --- a/web/base_viewer.js +++ b/web/base_viewer.js @@ -1347,25 +1347,21 @@ class BaseViewer { * @returns {Array} Array of objects with width/height/rotation fields. */ getPagesOverview() { - const pagesOverview = this._pages.map(function (pageView) { + return this._pages.map(pageView => { const viewport = pageView.pdfPage.getViewport({ scale: 1 }); - return { - width: viewport.width, - height: viewport.height, - rotation: viewport.rotation, - }; - }); - if (!this.enablePrintAutoRotate) { - return pagesOverview; - } - return pagesOverview.map(function (size) { - if (isPortraitOrientation(size)) { - return size; + + if (!this.enablePrintAutoRotate || isPortraitOrientation(viewport)) { + return { + width: viewport.width, + height: viewport.height, + rotation: viewport.rotation, + }; } + // Landscape orientation. return { - width: size.height, - height: size.width, - rotation: (size.rotation - 90) % 360, + width: viewport.height, + height: viewport.width, + rotation: (viewport.rotation - 90) % 360, }; }); }