| Index: components/dom_distiller/core/javascript/dom_distiller_viewer.js
|
| diff --git a/components/dom_distiller/core/javascript/dom_distiller_viewer.js b/components/dom_distiller/core/javascript/dom_distiller_viewer.js
|
| index 8221795e5d55810335ac77550401dbcf0b6ef190..ebc2f06011b1cc44a8ca5a85ce47217dc2687ec1 100644
|
| --- a/components/dom_distiller/core/javascript/dom_distiller_viewer.js
|
| +++ b/components/dom_distiller/core/javascript/dom_distiller_viewer.js
|
| @@ -116,6 +116,10 @@ function updateToolbarColor() {
|
| document.getElementById('theme-color').content = toolbarColor;
|
| }
|
|
|
| +function useFontScaling(scaling) {
|
| + pincher.useFontScaling(scaling);
|
| +}
|
| +
|
| var updateLoadingIndicator = function() {
|
| var colors = ["red", "yellow", "green", "blue"];
|
| return function(isLastPage) {
|
| @@ -233,6 +237,7 @@ var pincher = (function() {
|
|
|
| // The zooming speed relative to pinching speed.
|
| var FONT_SCALE_MULTIPLIER = 0.5;
|
| +
|
| var MIN_SPAN_LENGTH = 20;
|
|
|
| // The font size is guaranteed to be in px.
|
| @@ -241,7 +246,7 @@ var pincher = (function() {
|
|
|
| var refreshTransform = function() {
|
| var slowedScale = Math.exp(Math.log(scale) * FONT_SCALE_MULTIPLIER);
|
| - clampedScale = Math.max(0.4, Math.min(2.5, fontSizeAnchor * slowedScale));
|
| + clampedScale = Math.max(0.5, Math.min(2.0, fontSizeAnchor * slowedScale));
|
|
|
| // Use "fake" 3D transform so that the layer is not repainted.
|
| // With 2D transform, the frame rate would be much lower.
|
| @@ -251,6 +256,22 @@ var pincher = (function() {
|
| 'scale(' + clampedScale/fontSizeAnchor + ')';
|
| };
|
|
|
| + function saveCenter(clientMid) {
|
| + // Try to preserve the pinching center after text reflow.
|
| + // This is accurate to the HTML element level.
|
| + focusElement = document.elementFromPoint(clientMid.x, clientMid.y);
|
| + var rect = focusElement.getBoundingClientRect();
|
| + initClientMid = clientMid;
|
| + focusPos = (initClientMid.y - rect.top) / (rect.bottom - rect.top);
|
| + }
|
| +
|
| + function restoreCenter() {
|
| + var rect = focusElement.getBoundingClientRect();
|
| + var targetTop = focusPos * (rect.bottom - rect.top) + rect.top +
|
| + document.body.scrollTop - (initClientMid.y + shiftY);
|
| + document.body.scrollTop = targetTop;
|
| + }
|
| +
|
| function endPinch() {
|
| pinching = false;
|
|
|
| @@ -258,10 +279,16 @@ var pincher = (function() {
|
| document.body.style.transform = '';
|
| document.documentElement.style.fontSize = clampedScale * baseSize + "px";
|
|
|
| - var rect = focusElement.getBoundingClientRect();
|
| - var targetTop = focusPos * (rect.bottom - rect.top) + rect.top +
|
| - document.body.scrollTop - (initClientMid.y + shiftY);
|
| - document.body.scrollTop = targetTop;
|
| + restoreCenter();
|
| +
|
| + var img = document.getElementById('fontscaling-img');
|
| + if (!img) {
|
| + img = document.createElement('img');
|
| + img.id = 'fontscaling-img';
|
| + img.style.display = 'none';
|
| + document.body.appendChild(img);
|
| + }
|
| + img.src = "/savefontscaling/" + clampedScale;
|
| }
|
|
|
| function touchSpan(e) {
|
| @@ -322,12 +349,7 @@ var pincher = (function() {
|
| document.body.style.transformOrigin =
|
| pinchOrigin.x + 'px ' + pinchOrigin.y + 'px';
|
|
|
| - // Try to preserve the pinching center after text reflow.
|
| - // This is accurate to the HTML element level.
|
| - focusElement = document.elementFromPoint(clientMid.x, clientMid.y);
|
| - var rect = focusElement.getBoundingClientRect();
|
| - initClientMid = clientMid;
|
| - focusPos = (initClientMid.y - rect.top) / (rect.bottom - rect.top);
|
| + saveCenter(clientMid);
|
|
|
| lastSpan = span;
|
| lastClientMid = clientMid;
|
| @@ -389,6 +411,15 @@ var pincher = (function() {
|
| shiftX: shiftX,
|
| shiftY: shiftY
|
| };
|
| + },
|
| +
|
| + useFontScaling: function(scaling) {
|
| + saveCenter({x: window.innerWidth/2, y: window.innerHeight/2});
|
| + shiftX = 0;
|
| + shiftY = 0;
|
| + document.documentElement.style.fontSize = scaling * baseSize + "px";
|
| + clampedScale = scaling;
|
| + restoreCenter();
|
| }
|
| };
|
| }());
|
|
|