From 1f4d85db375af09106d01c7e4dd2e101398e05c6 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 16 Oct 2013 00:26:42 +0200 Subject: [PATCH] Inline setScale in parseScale --- web/page_view.js | 4 +- web/presentation_mode.js | 4 +- web/viewer.js | 117 ++++++++++++++++++++------------------- 3 files changed, 63 insertions(+), 62 deletions(-) diff --git a/web/page_view.js b/web/page_view.js index 7ced4af17..458057d47 100644 --- a/web/page_view.js +++ b/web/page_view.js @@ -330,9 +330,9 @@ var PageView = function pageView(container, id, scale, } if (scale && scale !== PDFView.currentScale) { - PDFView.parseScale(scale, true, true); + PDFView.setScale(scale, true, true); } else if (PDFView.currentScale === UNKNOWN_SCALE) { - PDFView.parseScale(DEFAULT_SCALE, true, true); + PDFView.setScale(DEFAULT_SCALE, true, true); } if (scale === 'page-fit' && !dest[4]) { diff --git a/web/presentation_mode.js b/web/presentation_mode.js index 2d02b3aea..c5d6a0dbe 100644 --- a/web/presentation_mode.js +++ b/web/presentation_mode.js @@ -93,7 +93,7 @@ var PresentationMode = { this.active = true; PDFView.page = this.args.page; - PDFView.parseScale('page-fit', true); + PDFView.setScale('page-fit', true); window.addEventListener('mousemove', this.mouseMove, false); window.addEventListener('mousedown', this.mouseDown, false); @@ -108,7 +108,7 @@ var PresentationMode = { this.active = false; var page = PDFView.page; - PDFView.parseScale(this.args.previousScale); + PDFView.setScale(this.args.previousScale); PDFView.page = page; window.removeEventListener('mousemove', this.mouseMove, false); diff --git a/web/viewer.js b/web/viewer.js index f20b124b1..cbf166cfc 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -194,66 +194,67 @@ var PDFView = { }, true); }, - setScale: function pdfViewSetScale(val, resetAutoSettings, noScroll) { - if (val == this.currentScale) + setScale: function pdfViewSetScale(value, resetAutoSettings, noScroll) { + if (value === 'custom') { return; - + } var pages = this.pages; - for (var i = 0; i < pages.length; i++) - pages[i].update(val); + var currentPage = pages[this.page - 1]; + var number = parseFloat(value); + var scale; - if (!noScroll && this.currentScale != val) - this.pages[this.page - 1].scrollIntoView(); - this.currentScale = val; + if (number) { + scale = number; + resetAutoSettings = true; + } else { + if (!currentPage) { + return; + } + var pageWidthScale = (this.container.clientWidth - SCROLLBAR_PADDING) / + currentPage.width * currentPage.scale; + var pageHeightScale = (this.container.clientHeight - VERTICAL_PADDING) / + currentPage.height * currentPage.scale; + switch (value) { + case 'page-actual': + scale = 1; + break; + case 'page-width': + scale = pageWidthScale; + break; + case 'page-height': + scale = pageHeightScale; + break; + case 'page-fit': + scale = Math.min(pageWidthScale, pageHeightScale); + break; + case 'auto': + scale = Math.min(1.0, pageWidthScale); + break; + } + } + this.currentScaleValue = value; + + if (scale === this.currentScale) { + return; + } + for (var i = 0, ii = pages.length; i < ii; i++) { + pages[i].update(scale); + } + this.currentScale = scale; + + if (!noScroll) { + currentPage.scrollIntoView(); + } var event = document.createEvent('UIEvents'); event.initUIEvent('scalechange', false, false, window, 0); - event.scale = val; + event.scale = scale; event.resetAutoSettings = resetAutoSettings; window.dispatchEvent(event); - }, - parseScale: function pdfViewParseScale(value, resetAutoSettings, noScroll) { - if ('custom' == value) - return; - - var scale = parseFloat(value); - this.currentScaleValue = value; - if (scale) { - this.setScale(scale, true, noScroll); - return; + if (!number) { + selectScaleOption(value); } - - var container = this.container; - var currentPage = this.pages[this.page - 1]; - if (!currentPage) { - return; - } - - var pageWidthScale = (container.clientWidth - SCROLLBAR_PADDING) / - currentPage.width * currentPage.scale; - var pageHeightScale = (container.clientHeight - VERTICAL_PADDING) / - currentPage.height * currentPage.scale; - switch (value) { - case 'page-actual': - scale = 1; - break; - case 'page-width': - scale = pageWidthScale; - break; - case 'page-height': - scale = pageHeightScale; - break; - case 'page-fit': - scale = Math.min(pageWidthScale, pageHeightScale); - break; - case 'auto': - scale = Math.min(1.0, pageWidthScale); - break; - } - this.setScale(scale, resetAutoSettings, noScroll); - - selectScaleOption(value); }, zoomIn: function pdfViewZoomIn(ticks) { @@ -263,7 +264,7 @@ var PDFView = { newScale = Math.ceil(newScale * 10) / 10; newScale = Math.min(MAX_SCALE, newScale); } while (--ticks && newScale < MAX_SCALE); - this.parseScale(newScale, true); + this.setScale(newScale, true); }, zoomOut: function pdfViewZoomOut(ticks) { @@ -273,7 +274,7 @@ var PDFView = { newScale = Math.floor(newScale * 10) / 10; newScale = Math.max(MIN_SCALE, newScale); } while (--ticks && newScale > MIN_SCALE); - this.parseScale(newScale, true); + this.setScale(newScale, true); }, set page(val) { @@ -1018,14 +1019,14 @@ var PDFView = { } else if (storedHash) { this.setHash(storedHash); } else if (scale) { - this.parseScale(scale, true); + this.setScale(scale, true); this.page = 1; } if (PDFView.currentScale === UNKNOWN_SCALE) { // Scale was not initialized: invalid bookmark or scale was not specified. // Setting the default one. - this.parseScale(DEFAULT_SCALE, true); + this.setScale(DEFAULT_SCALE, true); } }, @@ -1326,7 +1327,7 @@ var PDFView = { thumb.update(this.pageRotation); } - this.parseScale(this.currentScaleValue, true); + this.setScale(this.currentScaleValue, true); this.renderHighestPriority(); @@ -1654,7 +1655,7 @@ document.addEventListener('DOMContentLoaded', function webViewerLoad(evt) { document.getElementById('scaleSelect').addEventListener('change', function() { - PDFView.parseScale(this.value); + PDFView.setScale(this.value); }); document.getElementById('presentationMode').addEventListener('click', @@ -1750,7 +1751,7 @@ window.addEventListener('resize', function webViewerResize(evt) { (document.getElementById('pageWidthOption').selected || document.getElementById('pageFitOption').selected || document.getElementById('pageAutoOption').selected)) { - PDFView.parseScale(document.getElementById('scaleSelect').value); + PDFView.setScale(document.getElementById('scaleSelect').value); } updateViewarea(); @@ -1949,7 +1950,7 @@ window.addEventListener('keydown', function keydown(evt) { // keeping it unhandled (to restore page zoom to 100%) setTimeout(function () { // ... and resetting the scale after browser adjusts its scale - PDFView.parseScale(DEFAULT_SCALE, true); + PDFView.setScale(DEFAULT_SCALE, true); }); handled = false; break;