summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2014-12-15 21:46:16 +0900
committerTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2014-12-15 22:02:01 +0900
commitabc818facad0479a8af05e634b5375aa4abbfd35 (patch)
treee86544dcf2eaac3eddd67dbb9c1ea3625443bdae /android
parenta9c45c5e4ddd663ea92a8163188b1603cd1f5c6c (diff)
android: calculate tile position/dimension for FixedZoomTileLayer
Change-Id: I54664a9289ef513fb4660b002f6ce652c7a9e6ef
Diffstat (limited to 'android')
-rw-r--r--android/experimental/LOAndroid3/src/java/org/libreoffice/TileIdentifier.java6
-rw-r--r--android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/ComposedTileLayer.java29
-rw-r--r--android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/DynamicTileLayer.java12
-rw-r--r--android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/FixedZoomTileLayer.java14
-rw-r--r--android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java4
5 files changed, 44 insertions, 21 deletions
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/TileIdentifier.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/TileIdentifier.java
index f617b7082d95..fe4071c6cb68 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/TileIdentifier.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/TileIdentifier.java
@@ -1,5 +1,7 @@
package org.libreoffice;
+import android.graphics.RectF;
+
import org.mozilla.gecko.gfx.IntSize;
public class TileIdentifier {
@@ -15,6 +17,10 @@ public class TileIdentifier {
this.size = size;
}
+ public RectF getRect() {
+ return new RectF(x, y, x + size.width, y + size.height);
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
diff --git a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/ComposedTileLayer.java b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/ComposedTileLayer.java
index 95942850cf13..221cd8dcbbea 100644
--- a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/ComposedTileLayer.java
+++ b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/ComposedTileLayer.java
@@ -91,7 +91,7 @@ public abstract class ComposedTileLayer extends Layer {
}
}
- private RectF roundToTileSize(RectF input, IntSize tileSize) {
+ protected RectF roundToTileSize(RectF input, IntSize tileSize) {
float minX = ((int) (input.left / tileSize.width)) * tileSize.width;
float minY = ((int) (input.top / tileSize.height)) * tileSize.height;
float maxX = ((int) (input.right / tileSize.width) + 1) * tileSize.width;
@@ -99,7 +99,7 @@ public abstract class ComposedTileLayer extends Layer {
return new RectF(minX, minY, maxX, maxY);
}
- private RectF inflate(RectF rect, IntSize inflateSize) {
+ protected RectF inflate(RectF rect, IntSize inflateSize) {
RectF newRect = new RectF(rect);
newRect.left -= inflateSize.width;
newRect.left = newRect.left < 0.0f ? 0.0f : newRect.left;
@@ -113,35 +113,34 @@ public abstract class ComposedTileLayer extends Layer {
return newRect;
}
- private RectF normalizeRect(RectF rect, float factor) {
+ protected RectF normalizeRect(RectF rect, float sourceFactor, float targetFactor) {
RectF normalizedRect = new RectF(
- rect.left / factor,
- rect.top / factor,
- rect.right / factor,
- rect.bottom / factor);
+ (rect.left / sourceFactor) * targetFactor,
+ (rect.top / sourceFactor) * targetFactor,
+ (rect.right / sourceFactor) * targetFactor,
+ (rect.bottom / sourceFactor) * targetFactor);
return normalizedRect;
}
- public void reevaluateTiles(ImmutableViewportMetrics viewportMetrics) {
- RectF newCurrentViewPort = inflate(roundToTileSize(viewportMetrics.getViewport(), tileSize), tileSize);
+ public void reevaluateTiles(ImmutableViewportMetrics viewportMetrics, DisplayPortMetrics mDisplayPort) {
+ RectF newCurrentViewPort = getViewPort(viewportMetrics);
float newZoom = viewportMetrics.zoomFactor;
if (!currentViewport.equals(newCurrentViewPort) || currentZoom != newZoom) {
currentViewport = newCurrentViewPort;
currentZoom = newZoom;
- RectF normalizedRect = normalizeRect(currentViewport, currentZoom);
- RectF normalizedPageRect = normalizeRect(viewportMetrics.getPageRect(), currentZoom);
-
- Log.i(LOGTAG, "reevaluateTiles " + normalizedRect + " " + normalizedPageRect);
-
clearMarkedTiles();
addNewTiles(viewportMetrics);
markTiles(viewportMetrics);
}
}
+ protected abstract RectF getViewPort(ImmutableViewportMetrics viewportMetrics);
+
+ protected abstract float getZoom(ImmutableViewportMetrics viewportMetrics);
+
private void addNewTiles(ImmutableViewportMetrics viewportMetrics) {
float zoom = getZoom(viewportMetrics);
@@ -166,8 +165,6 @@ public abstract class ComposedTileLayer extends Layer {
}
}
- protected abstract float getZoom(ImmutableViewportMetrics viewportMetrics);
-
private void clearMarkedTiles() {
List<SubTile> tilesToRemove = new ArrayList<SubTile>();
for (SubTile tile : tiles) {
diff --git a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/DynamicTileLayer.java b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/DynamicTileLayer.java
index ec3e39aae210..82d9928836c8 100644
--- a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/DynamicTileLayer.java
+++ b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/DynamicTileLayer.java
@@ -1,8 +1,20 @@
package org.mozilla.gecko.gfx;
+import android.graphics.RectF;
+
public class DynamicTileLayer extends ComposedTileLayer {
@Override
+ protected RectF getViewPort(ImmutableViewportMetrics viewportMetrics) {
+ RectF rect = viewportMetrics.getViewport();
+ return inflate(roundToTileSize(rect, tileSize), getInflateFactor());
+ }
+
+ @Override
protected float getZoom(ImmutableViewportMetrics viewportMetrics) {
return viewportMetrics.zoomFactor;
}
+
+ protected IntSize getInflateFactor() {
+ return tileSize;
+ }
}
diff --git a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/FixedZoomTileLayer.java b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/FixedZoomTileLayer.java
index a62586800c50..7b669167fecb 100644
--- a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/FixedZoomTileLayer.java
+++ b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/FixedZoomTileLayer.java
@@ -1,13 +1,21 @@
package org.mozilla.gecko.gfx;
+import android.graphics.RectF;
+
public class FixedZoomTileLayer extends ComposedTileLayer {
@Override
- protected float getZoom(ImmutableViewportMetrics viewportMetrics) {
- return 0.5f;
+ protected RectF getViewPort(ImmutableViewportMetrics viewportMetrics) {
+ float zoom = getZoom(viewportMetrics);
+ RectF rect = normalizeRect(viewportMetrics.getViewport(), viewportMetrics.zoomFactor, zoom);
+ return inflate(roundToTileSize(rect, tileSize), getInflateFactor());
}
@Override
- public void addTile(SubTile tile) {
+ protected float getZoom(ImmutableViewportMetrics viewportMetrics) {
+ return 1.0f / 32.0f;
+ }
+ private IntSize getInflateFactor() {
+ return tileSize.scale(3);
}
}
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 6efd62df10b8..faa7d4e0f7b4 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
@@ -483,8 +483,8 @@ public class GeckoLayerClient implements PanZoomTarget, LayerView.Listener {
/* Root Layer Access */
public void reevaluateTiles() {
- mLowResLayer.reevaluateTiles(getViewportMetrics());
- mRootLayer.reevaluateTiles(getViewportMetrics());
+ mLowResLayer.reevaluateTiles(mViewportMetrics, mDisplayPort);
+ mRootLayer.reevaluateTiles(mViewportMetrics, mDisplayPort);
}
public void clearAndResetlayers() {