[Libreoffice-commits] core.git: 2 commits - android/experimental
Tomaž Vajngerl
tomaz.vajngerl at collabora.co.uk
Thu Dec 25 01:13:51 PST 2014
android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java | 12 ++
android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java | 5 +
android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java | 5 +
android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java | 2
android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java | 11 +-
android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java | 43 ++++------
6 files changed, 50 insertions(+), 28 deletions(-)
New commits:
commit f69f3bfd9d8019365023eace8c1f1abdf31e1ef9
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date: Thu Dec 25 18:03:20 2014 +0900
android: Tweak initial zoom of documents in different situations
- In case of Writer document always show document by full width.
- Otherwise show the whole document on the screen even when the
orientation is portrait or landscape.
Change-Id: Ia6704432c850a5487aee1693ed12e039ae6ef0cb
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
index 8099c73..8fc75b2 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
@@ -2,6 +2,7 @@ package org.libreoffice;
import android.graphics.Bitmap;
import android.graphics.PointF;
+import android.graphics.RectF;
import android.util.Log;
import org.mozilla.gecko.gfx.CairoImage;
@@ -45,7 +46,16 @@ public class LOKitThread extends Thread {
mLayerClient.setPageRect(0, 0, mTileProvider.getPageWidth(), mTileProvider.getPageHeight());
mViewportMetrics = mLayerClient.getViewportMetrics();
mLayerClient.setViewportMetrics(mViewportMetrics);
- mLayerClient.zoomToPageWidth(mTileProvider.getPageWidth());
+
+ if (mTileProvider.isTextDocument()) {
+ float centerY = mViewportMetrics.getCssViewport().centerY();
+ mLayerClient.zoomTo(new RectF (0, centerY, mTileProvider.getPageWidth(), centerY));
+ } else if (mViewportMetrics.getViewport().width() < mViewportMetrics.getViewport().height()) {
+ mLayerClient.zoomTo(mTileProvider.getPageWidth(), 0);
+ } else {
+ mLayerClient.zoomTo(0, mTileProvider.getPageHeight());
+ }
+
mLayerClient.forceRedraw();
}
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
index bda810d..513d13d 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
@@ -247,6 +247,11 @@ public class LOKitTileProvider implements TileProvider {
}
@Override
+ public boolean isTextDocument() {
+ return mDocument.getDocumentType() == Document.DOCTYPE_TEXT;
+ }
+
+ @Override
protected void finalize() throws Throwable {
close();
super.finalize();
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java
index b8d7a3c..79fef43 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java
@@ -74,6 +74,11 @@ public class MockTileProvider implements TileProvider {
}
@Override
+ public boolean isTextDocument() {
+ return true;
+ }
+
+ @Override
public void changePart(int partIndex) {
}
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java
index 7142bc31..988e53a 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java
@@ -22,4 +22,6 @@ public interface TileProvider {
Bitmap thumbnail(int size);
void close();
+
+ boolean isTextDocument();
}
diff --git a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java
index 934d19a..09120ec 100644
--- a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java
+++ b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java
@@ -460,12 +460,17 @@ public class GeckoLayerClient implements PanZoomTarget, LayerView.Listener {
return mContext;
}
- public void zoomToPageWidth(int pageWidth) {
- if (mPanZoomController instanceof JavaPanZoomController) {
- ((JavaPanZoomController) mPanZoomController).animatedZoomTo(new RectF(0, 0, pageWidth, 0));
+
+ public void zoomTo(RectF rect) {
+ if (mPanZoomController instanceof JavaPanZoomController) {
+ ((JavaPanZoomController) mPanZoomController).animatedZoomTo(rect);
}
}
+ public void zoomTo(float pageWidth, float pageHeight) {
+ zoomTo(new RectF(0, 0, pageWidth, pageHeight));
+ }
+
private class AdjustRunnable implements Runnable {
public void run() {
mPendingViewportAdjust = false;
commit 6d6da4c94b7ca434deb5ee569c18fa3e3dfe6070
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date: Thu Dec 25 17:48:36 2014 +0900
android: Put document into center when it's smaller than viewport
Change-Id: I0d0cd421e366bf34b71d9d82dd21476ecfa90b18
diff --git a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java
index afab17d..3b3d33e 100644
--- a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java
+++ b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java
@@ -705,20 +705,6 @@ public class JavaPanZoomController
maxZoomFactor = minZoomFactor = constraints.getDefaultZoom();
}
- // Ensure minZoomFactor keeps the page at least as big as the viewport.
- if (pageRect.width() > 0) {
- float scaleFactor = viewport.width() / pageRect.width();
- minZoomFactor = Math.max(minZoomFactor, zoomFactor * scaleFactor);
- if (viewport.width() > pageRect.width())
- focusX = 0.0f;
- }
- /*if (pageRect.height() > 0) {
- float scaleFactor = viewport.height() / pageRect.height();
- minZoomFactor = Math.max(minZoomFactor, zoomFactor * scaleFactor);
- if (viewport.height() > pageRect.height())
- focusY = 0.0f;
- }*/
-
maxZoomFactor = Math.max(maxZoomFactor, minZoomFactor);
if (zoomFactor < minZoomFactor) {
@@ -737,6 +723,25 @@ public class JavaPanZoomController
/* Now we pan to the right origin. */
viewportMetrics = viewportMetrics.clamp();
+ viewportMetrics = pushPageToCenterOfViewport(viewportMetrics);
+
+ return viewportMetrics;
+ }
+
+ private ImmutableViewportMetrics pushPageToCenterOfViewport(ImmutableViewportMetrics viewportMetrics) {
+ RectF pageRect = viewportMetrics.getPageRect();
+ RectF viewportRect = viewportMetrics.getViewport();
+
+ if (pageRect.width() < viewportRect.width()) {
+ float originX = (viewportRect.width() - pageRect.width()) / 2.0f;
+ viewportMetrics = viewportMetrics.setViewportOrigin(-originX, viewportMetrics.getOrigin().y);
+ }
+
+ if (pageRect.height() < viewportRect.height()) {
+ float originY = (viewportRect.height() - pageRect.height()) / 2.0f;
+ viewportMetrics = viewportMetrics.setViewportOrigin(viewportMetrics.getOrigin().x, -originY);
+ }
+
return viewportMetrics;
}
@@ -795,16 +800,6 @@ public class JavaPanZoomController
float spanRatio = detector.getCurrentSpan() / prevSpan;
- /*
- * Apply edge resistance if we're zoomed out smaller than the page size by scaling the zoom
- * factor toward 1.0.
- */
- float resistance = Math.min(mX.getEdgeResistance(true), mY.getEdgeResistance(true));
- if (spanRatio > 1.0f)
- spanRatio = 1.0f + (spanRatio - 1.0f) * resistance;
- else
- spanRatio = 1.0f - (1.0f - spanRatio) * resistance;
-
synchronized (mTarget.getLock()) {
float newZoomFactor = getMetrics().zoomFactor * spanRatio;
float minZoomFactor = 0.0f;
More information about the Libreoffice-commits
mailing list