summaryrefslogtreecommitdiff
path: root/core/java/android/webkit/ZoomManager.java
diff options
context:
space:
mode:
authorMangesh Ghiware <mghiware@google.com>2011-10-12 14:25:41 -0700
committerMangesh Ghiware <mghiware@google.com>2011-10-12 15:24:29 -0700
commitedb528ef52fd9b0148d559c5e596cf9bb9a6d2f9 (patch)
tree722df5f2e08b8192f55eb8769540281d04966510 /core/java/android/webkit/ZoomManager.java
parentc351ab473400ff15e53c33ab57cf8286c4bfad7a (diff)
Add setting for configuring zoom level on double-tap.
In overview mode, text wrap is done at reading level scale. If user changes double-tap zoom in overview mode, reflow text at the new scale. In any other mode, a double-tap will take user to overview mode, at which point, the text will be reflowed at the updated reading level scale. Bug: 5312461 Change-Id: I29be34a32246019101a9a875e1758e22b5af2bd3
Diffstat (limited to 'core/java/android/webkit/ZoomManager.java')
-rw-r--r--core/java/android/webkit/ZoomManager.java24
1 files changed, 17 insertions, 7 deletions
diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java
index 7f526e7e7c1b..206142a5b38b 100644
--- a/core/java/android/webkit/ZoomManager.java
+++ b/core/java/android/webkit/ZoomManager.java
@@ -145,11 +145,11 @@ class ZoomManager {
private float mInvDefaultScale;
/*
- * The scale factor that is used to determine the zoom level for reading text.
- * The value is initially set to equal the display density.
- * TODO: Support changing this in WebSettings
+ * The logical density of the display. This is a scaling factor for the
+ * Density Independent Pixel unit, where one DIP is one pixel on an
+ * approximately 160 dpi screen (see android.util.DisplayMetrics.density)
*/
- private float mReadingLevelScale;
+ private float mDisplayDensity;
/*
* The scale factor that is used as the minimum increment when going from
@@ -233,11 +233,11 @@ class ZoomManager {
public void init(float density) {
assert density > 0;
+ mDisplayDensity = density;
setDefaultZoomScale(density);
mActualScale = density;
mInvActualScale = 1 / density;
- mReadingLevelScale = density;
- mTextWrapScale = density;
+ mTextWrapScale = getReadingLevelScale();
}
/**
@@ -310,8 +310,11 @@ class ZoomManager {
return mInitialScale > 0 ? mInitialScale : mDefaultScale;
}
+ /**
+ * Returns the zoom scale used for reading text on a double-tap.
+ */
public final float getReadingLevelScale() {
- return mReadingLevelScale;
+ return mDisplayDensity * mWebView.getSettings().getDoubleTapZoom() / 100.0f;
}
public final float getInvDefaultScale() {
@@ -510,6 +513,13 @@ class ZoomManager {
return mZoomScale != 0 || mInHWAcceleratedZoom;
}
+ public void updateDoubleTapZoom() {
+ if (mInZoomOverview) {
+ mTextWrapScale = getReadingLevelScale();
+ refreshZoomScale(true);
+ }
+ }
+
public void refreshZoomScale(boolean reflowText) {
setZoomScale(mActualScale, reflowText, true);
}