From f4280368f7087a488f3f81d44de576633a874f77 Mon Sep 17 00:00:00 2001
From: Jonas Jenwald <jonas.jenwald@gmail.com>
Date: Tue, 13 Feb 2018 12:52:42 +0100
Subject: [PATCH] Move the `useOnlyCssZoom` option to a
 `BaseViewer`/`PDFPageView` option

This removes the `PDFJS.useOnlyCssZoom` dependency from the viewer components, but please note that as a *temporary* solution the default viewer still uses it.
---
 examples/mobile-viewer/viewer.js | 3 ++-
 web/app.js                       | 1 +
 web/base_viewer.js               | 4 ++++
 web/pdf_page_view.js             | 7 +++++--
 4 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/examples/mobile-viewer/viewer.js b/examples/mobile-viewer/viewer.js
index 15037fc77..01d2a097e 100644
--- a/examples/mobile-viewer/viewer.js
+++ b/examples/mobile-viewer/viewer.js
@@ -21,7 +21,7 @@ if (typeof PDFJS === 'undefined' || !PDFJS.PDFViewer || !PDFJS.getDocument) {
         '  `gulp dist-install`');
 }
 
-PDFJS.useOnlyCssZoom = true;
+var USE_ONLY_CSS_ZOOM = true;
 PDFJS.disableTextLayer = true;
 PDFJS.maxImageSize = 1024 * 1024;
 PDFJS.workerSrc = '../../node_modules/pdfjs-dist/build/pdf.worker.js';
@@ -298,6 +298,7 @@ var PDFViewerApplication = {
       container: container,
       linkService: linkService,
       l10n: this.l10n,
+      useOnlyCssZoom: USE_ONLY_CSS_ZOOM,
     });
     this.pdfViewer = pdfViewer;
     linkService.setViewer(pdfViewer);
diff --git a/web/app.js b/web/app.js
index a21b443f4..80d64f220 100644
--- a/web/app.js
+++ b/web/app.js
@@ -398,6 +398,7 @@ let PDFViewerApplication = {
         enhanceTextSelection: viewerPrefs['enhanceTextSelection'],
         renderInteractiveForms: viewerPrefs['renderInteractiveForms'],
         enablePrintAutoRotate: viewerPrefs['enablePrintAutoRotate'],
+        useOnlyCssZoom: PDFJS.useOnlyCssZoom,
       });
       pdfRenderingQueue.setViewer(this.pdfViewer);
       pdfLinkService.setViewer(this.pdfViewer);
diff --git a/web/base_viewer.js b/web/base_viewer.js
index 521b193a7..acc2d439f 100644
--- a/web/base_viewer.js
+++ b/web/base_viewer.js
@@ -48,6 +48,8 @@ const DEFAULT_CACHE_SIZE = 10;
  *   rotation of pages whose orientation differ from the first page upon
  *   printing. The default is `false`.
  * @property {string} renderer - 'canvas' or 'svg'. The default is 'canvas'.
+ * @property {boolean} useOnlyCssZoom - (optional) Enables CSS only zooming.
+ *   The default value is `false`.
  * @property {IL10n} l10n - Localization service.
  */
 
@@ -111,6 +113,7 @@ class BaseViewer {
     this.renderInteractiveForms = options.renderInteractiveForms || false;
     this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;
     this.renderer = options.renderer || RendererType.CANVAS;
+    this.useOnlyCssZoom = options.useOnlyCssZoom || false;
     this.l10n = options.l10n || NullL10n;
 
     this.defaultRenderingQueue = !options.renderingQueue;
@@ -377,6 +380,7 @@ class BaseViewer {
           enhanceTextSelection: this.enhanceTextSelection,
           renderInteractiveForms: this.renderInteractiveForms,
           renderer: this.renderer,
+          useOnlyCssZoom: this.useOnlyCssZoom,
           l10n: this.l10n,
         });
         bindOnAfterAndBeforeDraw(pageView);
diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js
index 50e1ac1a3..df2cdd9ab 100644
--- a/web/pdf_page_view.js
+++ b/web/pdf_page_view.js
@@ -38,6 +38,8 @@ import { RenderingStates } from './pdf_rendering_queue';
  * @property {boolean} renderInteractiveForms - Turns on rendering of
  *   interactive form elements. The default is `false`.
  * @property {string} renderer - 'canvas' or 'svg'. The default is 'canvas'.
+ * @property {boolean} useOnlyCssZoom - (optional) Enables CSS only zooming.
+ *   The default value is `false`.
  * @property {IL10n} l10n - Localization service.
  */
 
@@ -64,6 +66,7 @@ class PDFPageView {
     this.hasRestrictedScaling = false;
     this.enhanceTextSelection = options.enhanceTextSelection || false;
     this.renderInteractiveForms = options.renderInteractiveForms || false;
+    this.useOnlyCssZoom = options.useOnlyCssZoom || false;
 
     this.eventBus = options.eventBus || getGlobalEventBus();
     this.renderingQueue = options.renderingQueue;
@@ -218,7 +221,7 @@ class PDFPageView {
     }
 
     if (this.canvas) {
-      if (PDFJS.useOnlyCssZoom ||
+      if (this.useOnlyCssZoom ||
           (this.hasRestrictedScaling && isScalingRestricted)) {
         this.cssTransform(this.canvas, true);
 
@@ -517,7 +520,7 @@ class PDFPageView {
     let outputScale = getOutputScale(ctx);
     this.outputScale = outputScale;
 
-    if (PDFJS.useOnlyCssZoom) {
+    if (this.useOnlyCssZoom) {
       let actualSizeViewport = viewport.clone({ scale: CSS_UNITS, });
       // Use a scale that makes the canvas have the originally intended size
       // of the page.