[Libreoffice-commits] core.git: 3 commits - android/experimental
Tomaž Vajngerl
tomaz.vajngerl at collabora.co.uk
Wed Dec 17 02:04:13 PST 2014
android/experimental/LOAndroid/.gitignore | 4
android/experimental/LOAndroid/.idea/.name | 1
android/experimental/LOAndroid/.idea/compiler.xml | 23
android/experimental/LOAndroid/.idea/copyright/profiles_settings.xml | 3
android/experimental/LOAndroid/.idea/encodings.xml | 5
android/experimental/LOAndroid/.idea/gradle.xml | 18
android/experimental/LOAndroid/.idea/libraries/appcompat_v7_19_1_0.xml | 10
android/experimental/LOAndroid/.idea/libraries/support_v4_19_1_0.xml | 11
android/experimental/LOAndroid/.idea/misc.xml | 146
android/experimental/LOAndroid/.idea/modules.xml | 10
android/experimental/LOAndroid/.idea/scopes/scope_settings.xml | 5
android/experimental/LOAndroid/.idea/vcs.xml | 7
android/experimental/LOAndroid/LOAndroid.iml | 12
android/experimental/LOAndroid/app/.gitignore | 1
android/experimental/LOAndroid/app/app.iml | 77
android/experimental/LOAndroid/app/build.gradle | 24
android/experimental/LOAndroid/app/proguard-rules.txt | 17
android/experimental/LOAndroid/app/src/main/AndroidManifest.xml | 25
android/experimental/LOAndroid/app/src/main/java/org/libreoffice/LOKitShell.java | 22
android/experimental/LOAndroid/app/src/main/java/org/libreoffice/MainActivity.java | 36
android/experimental/LOAndroid/app/src/main/java/org/libreoffice/MainLayerView.java | 26
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/TouchEventInterceptor.java | 14
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/ZoomConstraints.java | 46
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/Axis.java | 420 --
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/BitmapUtils.java | 368 --
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/BufferedCairoImage.java | 69
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/CairoGLInfo.java | 35
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/CairoImage.java | 28
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/CairoUtils.java | 51
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/DisplayPortCalculator.java | 777 -----
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/DisplayPortMetrics.java | 78
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/DrawTimingQueue.java | 95
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/FloatSize.java | 54
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/GLController.java | 354 --
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/GeckoLayerClient.java | 1000 ------
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/ImmutableViewportMetrics.java | 374 --
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/InputConnectionHandler.java | 22
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/IntSize.java | 91
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/JavaPanZoomController.java | 1461 ----------
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/Layer.java | 207 -
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/LayerMarginsAnimator.java | 324 --
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/LayerRenderer.java | 722 ----
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/LayerView.java | 692 ----
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/Overscroll.java | 21
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/OverscrollEdgeEffect.java | 130
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/PanZoomController.java | 49
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/PanZoomTarget.java | 33
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/PanningPerfAPI.java | 123
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/PointUtils.java | 51
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/ProgressiveUpdateData.java | 33
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/RectUtils.java | 126
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/RenderTask.java | 80
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/ScrollbarLayer.java | 297 --
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/SimpleScaleGestureDetector.java | 322 --
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/SingleTileLayer.java | 153 -
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/SubdocumentScrollHelper.java | 148 -
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/TextLayer.java | 69
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/TextureGenerator.java | 75
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/TextureReaper.java | 51
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/TileLayer.java | 177 -
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/TouchEventHandler.java | 306 --
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/ViewTransform.java | 34
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/VirtualLayer.java | 36
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/mozglue/DirectBufferAllocator.java | 51
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/util/EventDispatcher.java | 115
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/util/FloatUtils.java | 43
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/util/GeckoBackgroundThread.java | 55
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/util/GeckoEventListener.java | 14
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/util/GeckoEventResponder.java | 16
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/util/ThreadUtils.java | 169 -
android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/util/UiAsyncTask.java | 86
android/experimental/LOAndroid/app/src/main/res/layout/activity_main.xml | 15
android/experimental/LOAndroid/app/src/main/res/menu/main.xml | 9
android/experimental/LOAndroid/app/src/main/res/values-w820dp/dimens.xml | 6
android/experimental/LOAndroid/app/src/main/res/values/colors.xml | 95
android/experimental/LOAndroid/app/src/main/res/values/dimens.xml | 5
android/experimental/LOAndroid/app/src/main/res/values/strings.xml | 8
android/experimental/LOAndroid/app/src/main/res/values/styles.xml | 8
android/experimental/LOAndroid/build.gradle | 16
android/experimental/LOAndroid/gradle.properties | 18
android/experimental/LOAndroid/gradle/wrapper/gradle-wrapper.properties | 6
android/experimental/LOAndroid/gradlew | 164 -
android/experimental/LOAndroid/gradlew.bat | 90
android/experimental/LOAndroid/settings.gradle | 1
android/experimental/LOAndroid2/.gitignore | 4
android/experimental/LOAndroid2/.idea/.name | 1
android/experimental/LOAndroid2/.idea/compiler.xml | 23
android/experimental/LOAndroid2/.idea/copyright/profiles_settings.xml | 3
android/experimental/LOAndroid2/.idea/encodings.xml | 5
android/experimental/LOAndroid2/.idea/gradle.xml | 18
android/experimental/LOAndroid2/.idea/misc.xml | 41
android/experimental/LOAndroid2/.idea/modules.xml | 11
android/experimental/LOAndroid2/.idea/scopes/scope_settings.xml | 5
android/experimental/LOAndroid2/.idea/vcs.xml | 7
android/experimental/LOAndroid2/LOAndroid2.iml | 19
android/experimental/LOAndroid2/app/.gitignore | 1
android/experimental/LOAndroid2/app/app.iml | 66
android/experimental/LOAndroid2/app/build.gradle | 23
android/experimental/LOAndroid2/app/proguard-rules.txt | 17
android/experimental/LOAndroid2/app/src/main/AndroidManifest.xml | 24
android/experimental/LOAndroid2/app/src/main/java/org/libreoffice/LOEvent.java | 67
android/experimental/LOAndroid2/app/src/main/java/org/libreoffice/LOKitShell.java | 131
android/experimental/LOAndroid2/app/src/main/java/org/libreoffice/LOKitThread.java | 157 -
android/experimental/LOAndroid2/app/src/main/java/org/libreoffice/LibreOfficeMainActivity.java | 102
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/GeckoEventListener.java | 44
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/BufferedCairoImage.java | 105
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/CairoGLInfo.java | 72
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/CairoImage.java | 58
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/CairoUtils.java | 85
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/CheckerboardImage.java | 170 -
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/FlexibleGLSurfaceView.java | 218 -
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/FloatSize.java | 99
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/GLController.java | 279 -
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/GLThread.java | 181 -
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/GeckoLayerClient.java | 398 --
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/GeckoSoftwareLayerClient.java | 242 -
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/InputConnectionHandler.java | 15
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/IntSize.java | 103
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/Layer.java | 242 -
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/LayerClient.java | 81
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/LayerController.java | 534 ---
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/LayerRenderer.java | 689 ----
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/LayerView.java | 230 -
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/MultiTileLayer.java | 250 -
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/NinePatchTileLayer.java | 124
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/PanningPerfAPI.java | 125
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/PointUtils.java | 96
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/RectUtils.java | 139
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/ScrollbarLayer.java | 425 --
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/SingleTileLayer.java | 127
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/SubTile.java | 15
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/TextLayer.java | 117
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/TextureGenerator.java | 73
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/TextureReaper.java | 76
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/TileLayer.java | 256 -
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/ViewTransform.java | 51
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/ViewportMetrics.java | 306 --
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/VirtualLayer.java | 80
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/gfx/WidgetTileLayer.java | 160 -
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/ui/Axis.java | 271 -
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/ui/PanZoomController.java | 921 ------
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/ui/SimpleScaleGestureDetector.java | 332 --
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/ui/SubdocumentScrollHelper.java | 140
android/experimental/LOAndroid2/app/src/main/java/org/mozilla/gecko/util/FloatUtils.java | 43
android/experimental/LOAndroid2/app/src/main/res/layout/activity_main.xml | 15
android/experimental/LOAndroid2/app/src/main/res/menu/main.xml | 8
android/experimental/LOAndroid2/app/src/main/res/values-w820dp/dimens.xml | 6
android/experimental/LOAndroid2/app/src/main/res/values/colors.xml | 95
android/experimental/LOAndroid2/app/src/main/res/values/dimens.xml | 5
android/experimental/LOAndroid2/app/src/main/res/values/strings.xml | 8
android/experimental/LOAndroid2/app/src/main/res/values/styles.xml | 8
android/experimental/LOAndroid2/build.gradle | 16
android/experimental/LOAndroid2/gradle.properties | 18
android/experimental/LOAndroid2/gradle/wrapper/gradle-wrapper.properties | 6
android/experimental/LOAndroid2/gradlew | 164 -
android/experimental/LOAndroid2/gradlew.bat | 90
android/experimental/LOAndroid2/settings.gradle | 1
android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java | 8
android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java | 9
android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/ComposedTileLayer.java | 11
android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/DynamicTileLayer.java | 5
android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/FixedZoomTileLayer.java | 9
dev/null |binary
163 files changed, 28 insertions(+), 20220 deletions(-)
New commits:
commit bd219e3cba549694f2c190916626ae9e65f06c81
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date: Wed Dec 17 18:53:40 2014 +0900
android: tweak low-res tiles
Change-Id: I2806f35ee112b9ea7ccf323e01372f7e2f68ffa2
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 cb924e3..e6799b6 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
@@ -135,6 +135,7 @@ public abstract class ComposedTileLayer extends Layer {
currentViewport = newCurrentViewPort;
currentZoom = newZoom;
+ clearMarkedTiles();
addNewTiles(viewportMetrics);
markTiles(viewportMetrics);
}
@@ -190,10 +191,8 @@ public abstract class ComposedTileLayer extends Layer {
RectF tileRect = tile.id.getRect();
if (!RectF.intersects(currentViewport, tileRect)) {
tile.markForRemoval();
- Log.i(LOGTAG, "Mark for remove - " + currentViewport + " " + tileRect);
}
} else {
- Log.i(LOGTAG, "Mark for remove - " + tile.id.zoom + " " + zoom);
tile.markForRemoval();
}
}
@@ -205,7 +204,6 @@ public abstract class ComposedTileLayer extends Layer {
}
public void addTile(SubTile tile) {
- clearMarkedTiles();
tile.beginTransaction();
tiles.add(tile);
}
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 52a26f6..2db6a1d 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
@@ -12,7 +12,7 @@ public class FixedZoomTileLayer extends ComposedTileLayer {
@Override
protected float getZoom(ImmutableViewportMetrics viewportMetrics) {
- return 1.0f / 32.0f;
+ return 1.0f / 16.0f;
}
@Override
@@ -21,6 +21,6 @@ public class FixedZoomTileLayer extends ComposedTileLayer {
}
private IntSize getInflateFactor() {
- return tileSize.scale(3);
+ return new IntSize(tileSize.width, tileSize.height*6);
}
}
commit 3df95150c1ab65b5d2dc1ed2bd2e2010e6132d32
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date: Wed Dec 17 18:45:57 2014 +0900
android: support to handle events with prioritization
Low-res tiles should be handleded before normal tiles so for this
add priority to tiles and store in a with priority queue.
Change-Id: I8d36c14503d9b684816d99f577198ac34b729d15
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java
index ade57c7..ced5ebd 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java
@@ -3,7 +3,7 @@ package org.libreoffice;
import org.mozilla.gecko.gfx.ComposedTileLayer;
import org.mozilla.gecko.gfx.IntSize;
-public class LOEvent {
+public class LOEvent implements Comparable<LOEvent> {
public static final int SIZE_CHANGED = 1;
public static final int TILE_SIZE = 2;
@@ -14,6 +14,7 @@ public class LOEvent {
public static final int TILE_REQUEST = 7;
public final int mType;
+ public int mPriority = 0;
public String mTypeString;
public int mPartIndex;
@@ -60,4 +61,9 @@ public class LOEvent {
}
return mTypeString;
}
+
+ @Override
+ public int compareTo(LOEvent another) {
+ return mPriority - another.mPriority;
+ }
}
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
index 7888095..8bf8239 100644
--- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
+++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
@@ -1,22 +1,17 @@
package org.libreoffice;
-import android.graphics.Bitmap;
-import android.graphics.RectF;
-import android.util.DisplayMetrics;
-import android.util.Log;
-
import org.mozilla.gecko.gfx.CairoImage;
import org.mozilla.gecko.gfx.ComposedTileLayer;
import org.mozilla.gecko.gfx.GeckoLayerClient;
import org.mozilla.gecko.gfx.ImmutableViewportMetrics;
import org.mozilla.gecko.gfx.SubTile;
-import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.PriorityBlockingQueue;
public class LOKitThread extends Thread {
private static final String LOGTAG = LOKitThread.class.getSimpleName();
- private LinkedBlockingQueue<LOEvent> mEventQueue = new LinkedBlockingQueue<LOEvent>();
+ private PriorityBlockingQueue<LOEvent> mEventQueue = new PriorityBlockingQueue<LOEvent>();
private LibreOfficeMainActivity mApplication;
private TileProvider mTileProvider;
private ImmutableViewportMetrics mViewportMetrics;
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 7c41db1..cb924e3 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
@@ -4,6 +4,7 @@ import android.graphics.RectF;
import android.graphics.Region;
import android.util.Log;
+import org.libreoffice.LOEvent;
import org.libreoffice.LOEventFactory;
import org.libreoffice.LOKitShell;
import org.libreoffice.TileIdentifier;
@@ -143,6 +144,8 @@ public abstract class ComposedTileLayer extends Layer {
protected abstract float getZoom(ImmutableViewportMetrics viewportMetrics);
+ protected abstract int getTilePriority();
+
private void addNewTiles(ImmutableViewportMetrics viewportMetrics) {
float zoom = getZoom(viewportMetrics);
@@ -161,7 +164,9 @@ public abstract class ComposedTileLayer extends Layer {
}
}
if (!contains) {
- LOKitShell.sendEvent(LOEventFactory.tileRequest(this, new TileIdentifier((int) x, (int) y, zoom, tileSize)));
+ LOEvent event = LOEventFactory.tileRequest(this, new TileIdentifier((int) x, (int) y, zoom, tileSize));
+ event.mPriority = getTilePriority();
+ LOKitShell.sendEvent(event);
}
}
}
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 82d9928..12ff723 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
@@ -14,6 +14,11 @@ public class DynamicTileLayer extends ComposedTileLayer {
return viewportMetrics.zoomFactor;
}
+ @Override
+ protected int getTilePriority() {
+ return 0;
+ }
+
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 7b66916..52a26f6 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
@@ -15,6 +15,11 @@ public class FixedZoomTileLayer extends ComposedTileLayer {
return 1.0f / 32.0f;
}
+ @Override
+ protected int getTilePriority() {
+ return -1;
+ }
+
private IntSize getInflateFactor() {
return tileSize.scale(3);
}
commit 33e53de6ca2253ebfc1bc0501ab992cb915e16df
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date: Tue Dec 16 22:56:46 2014 +0900
android: remove old and unused LOAndroid and LOAndroid2
Change-Id: Ib25c4bb29081ae51a3b06a6fe2af76749ec8ea46
diff --git a/android/experimental/LOAndroid/.gitignore b/android/experimental/LOAndroid/.gitignore
deleted file mode 100644
index d6bfc95..0000000
--- a/android/experimental/LOAndroid/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.gradle
-/local.properties
-/.idea/workspace.xml
-.DS_Store
diff --git a/android/experimental/LOAndroid/.idea/.name b/android/experimental/LOAndroid/.idea/.name
deleted file mode 100644
index 3300c56..0000000
--- a/android/experimental/LOAndroid/.idea/.name
+++ /dev/null
@@ -1 +0,0 @@
-LOAndroid
\ No newline at end of file
diff --git a/android/experimental/LOAndroid/.idea/compiler.xml b/android/experimental/LOAndroid/.idea/compiler.xml
deleted file mode 100644
index 217af47..0000000
--- a/android/experimental/LOAndroid/.idea/compiler.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="CompilerConfiguration">
- <option name="DEFAULT_COMPILER" value="Javac" />
- <resourceExtensions />
- <wildcardResourcePatterns>
- <entry name="!?*.java" />
- <entry name="!?*.form" />
- <entry name="!?*.class" />
- <entry name="!?*.groovy" />
- <entry name="!?*.scala" />
- <entry name="!?*.flex" />
- <entry name="!?*.kt" />
- <entry name="!?*.clj" />
- </wildcardResourcePatterns>
- <annotationProcessing>
- <profile default="true" name="Default" enabled="false">
- <processorPath useClasspath="true" />
- </profile>
- </annotationProcessing>
- </component>
-</project>
-
diff --git a/android/experimental/LOAndroid/.idea/copyright/profiles_settings.xml b/android/experimental/LOAndroid/.idea/copyright/profiles_settings.xml
deleted file mode 100644
index e7bedf3..0000000
--- a/android/experimental/LOAndroid/.idea/copyright/profiles_settings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<component name="CopyrightManager">
- <settings default="" />
-</component>
\ No newline at end of file
diff --git a/android/experimental/LOAndroid/.idea/encodings.xml b/android/experimental/LOAndroid/.idea/encodings.xml
deleted file mode 100644
index e206d70..0000000
--- a/android/experimental/LOAndroid/.idea/encodings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
-</project>
-
diff --git a/android/experimental/LOAndroid/.idea/gradle.xml b/android/experimental/LOAndroid/.idea/gradle.xml
deleted file mode 100644
index 736c7b5..0000000
--- a/android/experimental/LOAndroid/.idea/gradle.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="GradleSettings">
- <option name="linkedExternalProjectsSettings">
- <GradleProjectSettings>
- <option name="distributionType" value="DEFAULT_WRAPPED" />
- <option name="externalProjectPath" value="$PROJECT_DIR$" />
- <option name="modules">
- <set>
- <option value="$PROJECT_DIR$" />
- <option value="$PROJECT_DIR$/app" />
- </set>
- </option>
- </GradleProjectSettings>
- </option>
- </component>
-</project>
-
diff --git a/android/experimental/LOAndroid/.idea/libraries/appcompat_v7_19_1_0.xml b/android/experimental/LOAndroid/.idea/libraries/appcompat_v7_19_1_0.xml
deleted file mode 100644
index 970e5fa..0000000
--- a/android/experimental/LOAndroid/.idea/libraries/appcompat_v7_19_1_0.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<component name="libraryTable">
- <library name="appcompat-v7-19.1.0">
- <CLASSES>
- <root url="jar://$PROJECT_DIR$/app/build/exploded-aar/com.android.support/appcompat-v7/19.1.0/classes.jar!/" />
- <root url="file://$PROJECT_DIR$/app/build/exploded-aar/com.android.support/appcompat-v7/19.1.0/res" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
-</component>
\ No newline at end of file
diff --git a/android/experimental/LOAndroid/.idea/libraries/support_v4_19_1_0.xml b/android/experimental/LOAndroid/.idea/libraries/support_v4_19_1_0.xml
deleted file mode 100644
index 1ca1ac6..0000000
--- a/android/experimental/LOAndroid/.idea/libraries/support_v4_19_1_0.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<component name="libraryTable">
- <library name="support-v4-19.1.0">
- <CLASSES>
- <root url="jar://$USER_HOME$/Programs/android-sdk-linux/extras/android/m2repository/com/android/support/support-v4/19.1.0/support-v4-19.1.0.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES>
- <root url="jar://$USER_HOME$/Programs/android-sdk-linux/extras/android/m2repository/com/android/support/support-v4/19.1.0/support-v4-19.1.0-sources.jar!/" />
- </SOURCES>
- </library>
-</component>
\ No newline at end of file
diff --git a/android/experimental/LOAndroid/.idea/misc.xml b/android/experimental/LOAndroid/.idea/misc.xml
deleted file mode 100644
index 589a3ed..0000000
--- a/android/experimental/LOAndroid/.idea/misc.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="DaemonCodeAnalyzer">
- <disable_hints />
- </component>
- <component name="EntryPointsManager">
- <entry_points version="2.0" />
- </component>
- <component name="ProjectInspectionProfilesVisibleTreeState">
- <entry key="Project Default">
- <profile-state>
- <expanded-state>
- <State>
- <id />
- </State>
- </expanded-state>
- <selected-state>
- <State>
- <id>Abstraction issues</id>
- </State>
- </selected-state>
- </profile-state>
- </entry>
- </component>
- <component name="ProjectLevelVcsManager" settingsEditedManually="false">
- <OptionsSetting value="true" id="Add" />
- <OptionsSetting value="true" id="Remove" />
- <OptionsSetting value="true" id="Checkout" />
- <OptionsSetting value="true" id="Update" />
- <OptionsSetting value="true" id="Status" />
- <OptionsSetting value="true" id="Edit" />
- <ConfirmationsSetting value="0" id="Add" />
- <ConfirmationsSetting value="0" id="Remove" />
- </component>
- <component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="1.7" project-jdk-type="JavaSDK">
- <output url="file://$PROJECT_DIR$/build/classes" />
- </component>
- <component name="RunManager">
- <configuration default="true" type="Remote" factoryName="Remote">
- <option name="USE_SOCKET_TRANSPORT" value="true" />
- <option name="SERVER_MODE" value="false" />
- <option name="SHMEM_ADDRESS" value="javadebug" />
- <option name="HOST" value="localhost" />
- <option name="PORT" value="5005" />
- <method />
- </configuration>
- <configuration default="true" type="TestNG" factoryName="TestNG">
- <module name="" />
- <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
- <option name="ALTERNATIVE_JRE_PATH" />
- <option name="SUITE_NAME" />
- <option name="PACKAGE_NAME" />
- <option name="MAIN_CLASS_NAME" />
- <option name="METHOD_NAME" />
- <option name="GROUP_NAME" />
- <option name="TEST_OBJECT" value="CLASS" />
- <option name="VM_PARAMETERS" value="-ea" />
- <option name="PARAMETERS" />
- <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
- <option name="OUTPUT_DIRECTORY" />
- <option name="ANNOTATION_TYPE" />
- <option name="ENV_VARIABLES" />
- <option name="PASS_PARENT_ENVS" value="true" />
- <option name="TEST_SEARCH_SCOPE">
- <value defaultName="moduleWithDependencies" />
- </option>
- <option name="USE_DEFAULT_REPORTERS" value="false" />
- <option name="PROPERTIES_FILE" />
- <envs />
- <properties />
- <listeners />
- <method />
- </configuration>
- <configuration default="true" type="Applet" factoryName="Applet">
- <module name="" />
- <option name="MAIN_CLASS_NAME" />
- <option name="HTML_FILE_NAME" />
- <option name="HTML_USED" value="false" />
- <option name="WIDTH" value="400" />
- <option name="HEIGHT" value="300" />
- <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
- <option name="VM_PARAMETERS" />
- <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
- <option name="ALTERNATIVE_JRE_PATH" />
- <method />
- </configuration>
- <configuration default="true" type="Application" factoryName="Application">
- <option name="MAIN_CLASS_NAME" />
- <option name="VM_PARAMETERS" />
- <option name="PROGRAM_PARAMETERS" />
- <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
- <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
- <option name="ALTERNATIVE_JRE_PATH" />
- <option name="ENABLE_SWING_INSPECTOR" value="false" />
- <option name="ENV_VARIABLES" />
- <option name="PASS_PARENT_ENVS" value="true" />
- <module name="" />
- <envs />
- <method />
- </configuration>
- <configuration default="true" type="JUnit" factoryName="JUnit">
- <module name="" />
- <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
- <option name="ALTERNATIVE_JRE_PATH" />
- <option name="PACKAGE_NAME" />
- <option name="MAIN_CLASS_NAME" />
- <option name="METHOD_NAME" />
- <option name="TEST_OBJECT" value="class" />
- <option name="VM_PARAMETERS" value="-ea" />
- <option name="PARAMETERS" />
- <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
- <option name="ENV_VARIABLES" />
- <option name="PASS_PARENT_ENVS" value="true" />
- <option name="TEST_SEARCH_SCOPE">
- <value defaultName="moduleWithDependencies" />
- </option>
- <envs />
- <patterns />
- <method />
- </configuration>
- <list size="0" />
- <configuration name="<template>" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" default="true" selected="false">
- <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
- </configuration>
- <configuration name="<template>" type="WebApp" default="true" selected="false">
- <Host>localhost</Host>
- <Port>5050</Port>
- </configuration>
- </component>
- <component name="masterDetails">
- <states>
- <state key="ScopeChooserConfigurable.UI">
- <settings>
- <splitter-proportions>
- <option name="proportions">
- <list>
- <option value="0.2" />
- </list>
- </option>
- </splitter-proportions>
- </settings>
- </state>
- </states>
- </component>
-</project>
-
diff --git a/android/experimental/LOAndroid/.idea/modules.xml b/android/experimental/LOAndroid/.idea/modules.xml
deleted file mode 100644
index f08135d..0000000
--- a/android/experimental/LOAndroid/.idea/modules.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectModuleManager">
- <modules>
- <module fileurl="file://$PROJECT_DIR$/LOAndroid.iml" filepath="$PROJECT_DIR$/LOAndroid.iml" />
- <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
- </modules>
- </component>
-</project>
-
diff --git a/android/experimental/LOAndroid/.idea/scopes/scope_settings.xml b/android/experimental/LOAndroid/.idea/scopes/scope_settings.xml
deleted file mode 100644
index 922003b..0000000
--- a/android/experimental/LOAndroid/.idea/scopes/scope_settings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<component name="DependencyValidationManager">
- <state>
- <option name="SKIP_IMPORT_STATEMENTS" value="false" />
- </state>
-</component>
\ No newline at end of file
diff --git a/android/experimental/LOAndroid/.idea/vcs.xml b/android/experimental/LOAndroid/.idea/vcs.xml
deleted file mode 100644
index def6a6a..0000000
--- a/android/experimental/LOAndroid/.idea/vcs.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="VcsDirectoryMappings">
- <mapping directory="" vcs="" />
- </component>
-</project>
-
diff --git a/android/experimental/LOAndroid/LOAndroid.iml b/android/experimental/LOAndroid/LOAndroid.iml
deleted file mode 100644
index edb62a6..0000000
--- a/android/experimental/LOAndroid/LOAndroid.iml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
- <component name="NewModuleRootManager" inherit-compiler-output="true">
- <exclude-output />
- <content url="file://$MODULE_DIR$">
- <excludeFolder url="file://$MODULE_DIR$/.gradle" />
- </content>
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- </component>
-</module>
-
diff --git a/android/experimental/LOAndroid/app/.gitignore b/android/experimental/LOAndroid/app/.gitignore
deleted file mode 100644
index 796b96d..0000000
--- a/android/experimental/LOAndroid/app/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
diff --git a/android/experimental/LOAndroid/app/app.iml b/android/experimental/LOAndroid/app/app.iml
deleted file mode 100644
index d3a780b..0000000
--- a/android/experimental/LOAndroid/app/app.iml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="LOAndroid" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
- <component name="FacetManager">
- <facet type="android-gradle" name="Android-Gradle">
- <configuration>
- <option name="GRADLE_PROJECT_PATH" value=":app" />
- </configuration>
- </facet>
- <facet type="android" name="Android">
- <configuration>
- <option name="SELECTED_BUILD_VARIANT" value="debug" />
- <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
- <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugJava" />
- <option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugTest" />
- <option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />
- <option name="ALLOW_USER_CONFIGURATION" value="false" />
- <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
- <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
- <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
- <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
- </configuration>
- </facet>
- </component>
- <component name="NewModuleRootManager" inherit-compiler-output="false">
- <output url="file://$MODULE_DIR$/build/classes/debug" />
- <exclude-output />
- <content url="file://$MODULE_DIR$">
- <sourceFolder url="file://$MODULE_DIR$/build/source/r/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/source/aidl/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/source/buildConfig/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/source/rs/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/res/rs/debug" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/build/source/r/test/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/source/aidl/test/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/source/buildConfig/test/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/source/rs/test/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/res/rs/test/debug" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/assets" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
- <excludeFolder url="file://$MODULE_DIR$/build/apk" />
- <excludeFolder url="file://$MODULE_DIR$/build/assets" />
- <excludeFolder url="file://$MODULE_DIR$/build/bundles" />
- <excludeFolder url="file://$MODULE_DIR$/build/classes" />
- <excludeFolder url="file://$MODULE_DIR$/build/dependency-cache" />
- <excludeFolder url="file://$MODULE_DIR$/build/incremental" />
- <excludeFolder url="file://$MODULE_DIR$/build/libs" />
- <excludeFolder url="file://$MODULE_DIR$/build/manifests" />
- <excludeFolder url="file://$MODULE_DIR$/build/res" />
- <excludeFolder url="file://$MODULE_DIR$/build/symbols" />
- <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
- </content>
- <orderEntry type="jdk" jdkName="Android API 19 Platform" jdkType="Android SDK" />
- <orderEntry type="sourceFolder" forTests="false" />
- <orderEntry type="library" exported="" name="appcompat-v7-19.1.0" level="project" />
- <orderEntry type="library" exported="" name="support-v4-19.1.0" level="project" />
- </component>
-</module>
-
diff --git a/android/experimental/LOAndroid/app/build.gradle b/android/experimental/LOAndroid/app/build.gradle
deleted file mode 100644
index 7e98dd4c..0000000
--- a/android/experimental/LOAndroid/app/build.gradle
+++ /dev/null
@@ -1,24 +0,0 @@
-apply plugin: 'android'
-
-android {
- compileSdkVersion 19
- buildToolsVersion "19.1.0"
-
- defaultConfig {
- minSdkVersion 15
- targetSdkVersion 19
- versionCode 1
- versionName "1.0"
- }
- buildTypes {
- release {
- runProguard false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
- }
- }
-}
-
-dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- compile 'com.android.support:appcompat-v7:19.+'
-}
diff --git a/android/experimental/LOAndroid/app/proguard-rules.txt b/android/experimental/LOAndroid/app/proguard-rules.txt
deleted file mode 100644
index 0b0be28..0000000
--- a/android/experimental/LOAndroid/app/proguard-rules.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-# Add project specific ProGuard rules here.
-# By default, the flags in this file are appended to flags specified
-# in /home/quikee/Programs/android-sdk-linux/tools/proguard/proguard-android.txt
-# You can edit the include path and order by changing the ProGuard
-# include property in project.properties.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# Add any project specific keep options here:
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
\ No newline at end of file
diff --git a/android/experimental/LOAndroid/app/src/main/AndroidManifest.xml b/android/experimental/LOAndroid/app/src/main/AndroidManifest.xml
deleted file mode 100644
index 3120a69..0000000
--- a/android/experimental/LOAndroid/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="org.libreoffice" >
-
- <!-- App requires OpenGL ES 2.0 -->
- <uses-feature android:glEsVersion="0x00020000" android:required="true" />
-
- <application
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:hardwareAccelerated="true"
- android:theme="@style/AppTheme" >
- <activity
- android:name="org.libreoffice.MainActivity"
- android:label="@string/app_name" >
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
-
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
-
-</manifest>
diff --git a/android/experimental/LOAndroid/app/src/main/java/org/libreoffice/LOKitShell.java b/android/experimental/LOAndroid/app/src/main/java/org/libreoffice/LOKitShell.java
deleted file mode 100644
index cd429d6..0000000
--- a/android/experimental/LOAndroid/app/src/main/java/org/libreoffice/LOKitShell.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.libreoffice;
-
-
-import org.mozilla.gecko.gfx.LayerView;
-
-public class LOKitShell {
- public static int getDpi() {
- return 96;
- }
-
- public static int getScreenDepth() {
- return 24;
- }
-
- public static LayerView getLayerView() {
- return null;
- }
-
- public static float computeRenderIntegrity() {
- return 0.0f;
- }
-}
diff --git a/android/experimental/LOAndroid/app/src/main/java/org/libreoffice/MainActivity.java b/android/experimental/LOAndroid/app/src/main/java/org/libreoffice/MainActivity.java
deleted file mode 100644
index 1963ad2..0000000
--- a/android/experimental/LOAndroid/app/src/main/java/org/libreoffice/MainActivity.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.libreoffice;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.view.Menu;
-import android.view.MenuItem;
-
-
-public class MainActivity extends Activity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- }
-
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // Handle action bar item clicks here. The action bar will
- // automatically handle clicks on the Home/Up button, so long
- // as you specify a parent activity in AndroidManifest.xml.
- int id = item.getItemId();
- if (id == R.id.action_settings) {
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
-}
diff --git a/android/experimental/LOAndroid/app/src/main/java/org/libreoffice/MainLayerView.java b/android/experimental/LOAndroid/app/src/main/java/org/libreoffice/MainLayerView.java
deleted file mode 100644
index 5721df2..0000000
--- a/android/experimental/LOAndroid/app/src/main/java/org/libreoffice/MainLayerView.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.libreoffice;
-
-import android.content.Context;
-import android.os.Handler;
-import android.util.AttributeSet;
-
-import org.mozilla.gecko.gfx.LayerView;
-import org.mozilla.gecko.util.ThreadUtils;
-
-public class MainLayerView extends LayerView {
-
- public MainLayerView(Context context) {
- super(context);
- init(context);
- }
-
- public MainLayerView(Context context, AttributeSet attrs) {
- super(context, attrs);
- init(context);
- }
-
- private void init(Context context) {
- ThreadUtils.setUiThread(Thread.currentThread(), new Handler());
- }
-
-}
diff --git a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/TouchEventInterceptor.java b/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/TouchEventInterceptor.java
deleted file mode 100644
index 41a71df..0000000
--- a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/TouchEventInterceptor.java
+++ /dev/null
@@ -1,14 +0,0 @@
-/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.gecko;
-
-import android.view.MotionEvent;
-import android.view.View;
-
-public interface TouchEventInterceptor extends View.OnTouchListener {
- /** Override this method for a chance to consume events before the view or its children */
- public boolean onInterceptTouchEvent(View view, MotionEvent event);
-}
diff --git a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/ZoomConstraints.java b/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/ZoomConstraints.java
deleted file mode 100644
index 40d1817..0000000
--- a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/ZoomConstraints.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.gecko;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-public final class ZoomConstraints {
- private final boolean mAllowZoom;
- private final float mDefaultZoom;
- private final float mMinZoom;
- private final float mMaxZoom;
-
- public ZoomConstraints(boolean allowZoom) {
- mAllowZoom = allowZoom;
- mDefaultZoom = 0.0f;
- mMinZoom = 0.0f;
- mMaxZoom = 0.0f;
- }
-
- ZoomConstraints(JSONObject message) throws JSONException {
- mAllowZoom = message.getBoolean("allowZoom");
- mDefaultZoom = (float)message.getDouble("defaultZoom");
- mMinZoom = (float)message.getDouble("minZoom");
- mMaxZoom = (float)message.getDouble("maxZoom");
- }
-
- public final boolean getAllowZoom() {
- return mAllowZoom;
- }
-
- public final float getDefaultZoom() {
- return mDefaultZoom;
- }
-
- public final float getMinZoom() {
- return mMinZoom;
- }
-
- public final float getMaxZoom() {
- return mMaxZoom;
- }
-}
diff --git a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/Axis.java b/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/Axis.java
deleted file mode 100644
index 103ee51..0000000
--- a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/Axis.java
+++ /dev/null
@@ -1,420 +0,0 @@
-/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.gecko.gfx;
-
-//import org.mozilla.gecko.GeckoAppShell;
-//import org.mozilla.gecko.PrefsHelper;
-import org.libreoffice.LOKitShell;
-import org.mozilla.gecko.util.FloatUtils;
-
-import org.json.JSONArray;
-
-import android.util.Log;
-import android.view.View;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * This class represents the physics for one axis of movement (i.e. either
- * horizontal or vertical). It tracks the different properties of movement
- * like displacement, velocity, viewport dimensions, etc. pertaining to
- * a particular axis.
- */
-abstract class Axis {
- private static final String LOGTAG = "GeckoAxis";
-
- private static final String PREF_SCROLLING_FRICTION_SLOW = "ui.scrolling.friction_slow";
- private static final String PREF_SCROLLING_FRICTION_FAST = "ui.scrolling.friction_fast";
- private static final String PREF_SCROLLING_MAX_EVENT_ACCELERATION = "ui.scrolling.max_event_acceleration";
- private static final String PREF_SCROLLING_OVERSCROLL_DECEL_RATE = "ui.scrolling.overscroll_decel_rate";
- private static final String PREF_SCROLLING_OVERSCROLL_SNAP_LIMIT = "ui.scrolling.overscroll_snap_limit";
- private static final String PREF_SCROLLING_MIN_SCROLLABLE_DISTANCE = "ui.scrolling.min_scrollable_distance";
-
- // This fraction of velocity remains after every animation frame when the velocity is low.
- private static float FRICTION_SLOW;
- // This fraction of velocity remains after every animation frame when the velocity is high.
- private static float FRICTION_FAST;
- // Below this velocity (in pixels per frame), the friction starts increasing from FRICTION_FAST
- // to FRICTION_SLOW.
- private static float VELOCITY_THRESHOLD;
- // The maximum velocity change factor between events, per ms, in %.
- // Direction changes are excluded.
- private static float MAX_EVENT_ACCELERATION;
-
- // The rate of deceleration when the surface has overscrolled.
- private static float OVERSCROLL_DECEL_RATE;
- // The percentage of the surface which can be overscrolled before it must snap back.
- private static float SNAP_LIMIT;
-
- // The minimum amount of space that must be present for an axis to be considered scrollable,
- // in pixels.
- private static float MIN_SCROLLABLE_DISTANCE;
-
- private static float getFloatPref(Map<String, Integer> prefs, String prefName, int defaultValue) {
- Integer value = (prefs == null ? null : prefs.get(prefName));
- return (float)(value == null || value < 0 ? defaultValue : value) / 1000f;
- }
-
- private static int getIntPref(Map<String, Integer> prefs, String prefName, int defaultValue) {
- Integer value = (prefs == null ? null : prefs.get(prefName));
- return (value == null || value < 0 ? defaultValue : value);
- }
-
- static void initPrefs() {
- final String[] prefs = { PREF_SCROLLING_FRICTION_FAST,
- PREF_SCROLLING_FRICTION_SLOW,
- PREF_SCROLLING_MAX_EVENT_ACCELERATION,
- PREF_SCROLLING_OVERSCROLL_DECEL_RATE,
- PREF_SCROLLING_OVERSCROLL_SNAP_LIMIT,
- PREF_SCROLLING_MIN_SCROLLABLE_DISTANCE };
-
- /*PrefsHelper.getPrefs(prefs, new PrefsHelper.PrefHandlerBase() {
- Map<String, Integer> mPrefs = new HashMap<String, Integer>();
-
- @Override public void prefValue(String name, int value) {
- mPrefs.put(name, value);
- }
-
- @Override public void finish() {
- setPrefs(mPrefs);
- }
- });*/
- }
-
- static final float MS_PER_FRAME = 1000.0f / 60.0f;
- static final long NS_PER_FRAME = Math.round(1000000000f / 60f);
- private static final float FRAMERATE_MULTIPLIER = (1000f/60f) / MS_PER_FRAME;
- private static final int FLING_VELOCITY_POINTS = 8;
-
- // The values we use for friction are based on a 16.6ms frame, adjust them to currentNsPerFrame:
- static float getFrameAdjustedFriction(float baseFriction, long currentNsPerFrame) {
- float framerateMultiplier = (float)currentNsPerFrame / NS_PER_FRAME;
- return (float)Math.pow(Math.E, (Math.log(baseFriction) / framerateMultiplier));
- }
-
- static void setPrefs(Map<String, Integer> prefs) {
- FRICTION_SLOW = getFloatPref(prefs, PREF_SCROLLING_FRICTION_SLOW, 850);
- FRICTION_FAST = getFloatPref(prefs, PREF_SCROLLING_FRICTION_FAST, 970);
- VELOCITY_THRESHOLD = 10 / FRAMERATE_MULTIPLIER;
- MAX_EVENT_ACCELERATION = getFloatPref(prefs, PREF_SCROLLING_MAX_EVENT_ACCELERATION, /*GeckoAppShell.getDpi()*/ LOKitShell.getDpi() > 300 ? 100 : 40);
- OVERSCROLL_DECEL_RATE = getFloatPref(prefs, PREF_SCROLLING_OVERSCROLL_DECEL_RATE, 40);
- SNAP_LIMIT = getFloatPref(prefs, PREF_SCROLLING_OVERSCROLL_SNAP_LIMIT, 300);
- MIN_SCROLLABLE_DISTANCE = getFloatPref(prefs, PREF_SCROLLING_MIN_SCROLLABLE_DISTANCE, 500);
- Log.i(LOGTAG, "Prefs: " + FRICTION_SLOW + "," + FRICTION_FAST + "," + VELOCITY_THRESHOLD + ","
- + MAX_EVENT_ACCELERATION + "," + OVERSCROLL_DECEL_RATE + "," + SNAP_LIMIT + "," + MIN_SCROLLABLE_DISTANCE);
- }
-
- static {
- // set the scrolling parameters to default values on startup
- setPrefs(null);
- }
-
- private enum FlingStates {
- STOPPED,
- PANNING,
- FLINGING,
- }
-
- private enum Overscroll {
- NONE,
- MINUS, // Overscrolled in the negative direction
- PLUS, // Overscrolled in the positive direction
- BOTH, // Overscrolled in both directions (page is zoomed to smaller than screen)
- }
-
- private final SubdocumentScrollHelper mSubscroller;
-
- private int mOverscrollMode; /* Default to only overscrolling if we're allowed to scroll in a direction */
- private float mFirstTouchPos; /* Position of the first touch event on the current drag. */
- private float mTouchPos; /* Position of the most recent touch event on the current drag. */
- private float mLastTouchPos; /* Position of the touch event before touchPos. */
- private float mVelocity; /* Velocity in this direction; pixels per animation frame. */
- private float[] mRecentVelocities; /* Circular buffer of recent velocities since last touch start. */
- private int mRecentVelocityCount; /* Number of values put into mRecentVelocities (unbounded). */
- private boolean mScrollingDisabled; /* Whether movement on this axis is locked. */
- private boolean mDisableSnap; /* Whether overscroll snapping is disabled. */
- private float mDisplacement;
-
- private FlingStates mFlingState = FlingStates.STOPPED; /* The fling state we're in on this axis. */
-
- protected abstract float getOrigin();
- protected abstract float getViewportLength();
- protected abstract float getPageStart();
- protected abstract float getPageLength();
- protected abstract float getMarginStart();
- protected abstract float getMarginEnd();
- protected abstract boolean marginsHidden();
-
- Axis(SubdocumentScrollHelper subscroller) {
- mSubscroller = subscroller;
- mOverscrollMode = View.OVER_SCROLL_IF_CONTENT_SCROLLS;
- mRecentVelocities = new float[FLING_VELOCITY_POINTS];
- }
-
- // Implementors can override these to show effects when the axis overscrolls
- protected void overscrollFling(float velocity) { }
- protected void overscrollPan(float displacement) { }
-
- public void setOverScrollMode(int overscrollMode) {
- mOverscrollMode = overscrollMode;
- }
-
- public int getOverScrollMode() {
- return mOverscrollMode;
- }
-
- private float getViewportEnd() {
- return getOrigin() + getViewportLength();
- }
-
- private float getPageEnd() {
- return getPageStart() + getPageLength();
- }
-
- void startTouch(float pos) {
- mVelocity = 0.0f;
- mScrollingDisabled = false;
- mFirstTouchPos = mTouchPos = mLastTouchPos = pos;
- mRecentVelocityCount = 0;
- }
-
- float panDistance(float currentPos) {
- return currentPos - mFirstTouchPos;
- }
-
- void setScrollingDisabled(boolean disabled) {
- mScrollingDisabled = disabled;
- }
-
- void saveTouchPos() {
- mLastTouchPos = mTouchPos;
- }
-
- void updateWithTouchAt(float pos, float timeDelta) {
- float newVelocity = (mTouchPos - pos) / timeDelta * MS_PER_FRAME;
-
- mRecentVelocities[mRecentVelocityCount % FLING_VELOCITY_POINTS] = newVelocity;
- mRecentVelocityCount++;
-
- // If there's a direction change, or current velocity is very low,
- // allow setting of the velocity outright. Otherwise, use the current
- // velocity and a maximum change factor to set the new velocity.
- boolean curVelocityIsLow = Math.abs(mVelocity) < 1.0f / FRAMERATE_MULTIPLIER;
- boolean directionChange = (mVelocity > 0) != (newVelocity > 0);
- if (curVelocityIsLow || (directionChange && !FloatUtils.fuzzyEquals(newVelocity, 0.0f))) {
- mVelocity = newVelocity;
- } else {
- float maxChange = Math.abs(mVelocity * timeDelta * MAX_EVENT_ACCELERATION);
- mVelocity = Math.min(mVelocity + maxChange, Math.max(mVelocity - maxChange, newVelocity));
- }
-
- mTouchPos = pos;
- }
-
- boolean overscrolled() {
- return getOverscroll() != Overscroll.NONE;
- }
-
- private Overscroll getOverscroll() {
- boolean minus = (getOrigin() < getPageStart());
- boolean plus = (getViewportEnd() > getPageEnd());
- if (minus && plus) {
- return Overscroll.BOTH;
- } else if (minus) {
- return Overscroll.MINUS;
- } else if (plus) {
- return Overscroll.PLUS;
- } else {
- return Overscroll.NONE;
- }
- }
-
- // Returns the amount that the page has been overscrolled. If the page hasn't been
- // overscrolled on this axis, returns 0.
- private float getExcess() {
- switch (getOverscroll()) {
- case MINUS: return getPageStart() - getOrigin();
- case PLUS: return getViewportEnd() - getPageEnd();
- case BOTH: return (getViewportEnd() - getPageEnd()) + (getPageStart() - getOrigin());
- default: return 0.0f;
- }
- }
-
- /*
- * Returns true if the page is zoomed in to some degree along this axis such that scrolling is
- * possible and this axis has not been scroll locked while panning. Otherwise, returns false.
- */
- boolean scrollable() {
- // If we're scrolling a subdocument, ignore the viewport length restrictions (since those
- // apply to the top-level document) and only take into account axis locking.
- if (mSubscroller.scrolling()) {
- return !mScrollingDisabled;
- }
-
- // if we are axis locked, return false
- if (mScrollingDisabled) {
- return false;
- }
-
- // if there are margins on this axis but they are currently hidden,
- // we must be able to scroll in order to make them visible, so allow
- // scrolling in that case
- if (marginsHidden()) {
- return true;
- }
-
- // there is scrollable space, and we're not disabled, or the document fits the viewport
- // but we always allow overscroll anyway
- return getViewportLength() <= getPageLength() - MIN_SCROLLABLE_DISTANCE ||
- getOverScrollMode() == View.OVER_SCROLL_ALWAYS;
- }
-
- /*
- * Returns the resistance, as a multiplier, that should be taken into account when
- * tracking or pinching.
- */
- float getEdgeResistance(boolean forPinching) {
- float excess = getExcess();
- if (excess > 0.0f && (getOverscroll() == Overscroll.BOTH || !forPinching)) {
- // excess can be greater than viewport length, but the resistance
- // must never drop below 0.0
- return Math.max(0.0f, SNAP_LIMIT - excess / getViewportLength());
- }
- return 1.0f;
- }
-
- /* Returns the velocity. If the axis is locked, returns 0. */
- float getRealVelocity() {
- return scrollable() ? mVelocity : 0f;
- }
-
- void startPan() {
- mFlingState = FlingStates.PANNING;
- }
-
- private float calculateFlingVelocity() {
- int usablePoints = Math.min(mRecentVelocityCount, FLING_VELOCITY_POINTS);
- if (usablePoints <= 1) {
- return mVelocity;
- }
- float average = 0;
- for (int i = 0; i < usablePoints; i++) {
- average += mRecentVelocities[i];
- }
- return average / usablePoints;
- }
-
- void startFling(boolean stopped) {
- mDisableSnap = mSubscroller.scrolling();
-
- if (stopped) {
- mFlingState = FlingStates.STOPPED;
- } else {
- mVelocity = calculateFlingVelocity();
- mFlingState = FlingStates.FLINGING;
- }
- }
-
- /* Advances a fling animation by one step. */
- boolean advanceFling(long realNsPerFrame) {
- if (mFlingState != FlingStates.FLINGING) {
- return false;
- }
- if (mSubscroller.scrolling() && !mSubscroller.lastScrollSucceeded()) {
- // if the subdocument stopped scrolling, it's because it reached the end
- // of the subdocument. we don't do overscroll on subdocuments, so there's
- // no point in continuing this fling.
- return false;
- }
-
- float excess = getExcess();
- Overscroll overscroll = getOverscroll();
- boolean decreasingOverscroll = false;
- if ((overscroll == Overscroll.MINUS && mVelocity > 0) ||
- (overscroll == Overscroll.PLUS && mVelocity < 0))
- {
- decreasingOverscroll = true;
- }
-
- if (mDisableSnap || FloatUtils.fuzzyEquals(excess, 0.0f) || decreasingOverscroll) {
- // If we aren't overscrolled, just apply friction.
- if (Math.abs(mVelocity) >= VELOCITY_THRESHOLD) {
- mVelocity *= getFrameAdjustedFriction(FRICTION_FAST, realNsPerFrame);
- } else {
- float t = mVelocity / VELOCITY_THRESHOLD;
- mVelocity *= FloatUtils.interpolate(getFrameAdjustedFriction(FRICTION_SLOW, realNsPerFrame),
- getFrameAdjustedFriction(FRICTION_FAST, realNsPerFrame), t);
- }
- } else {
- // Otherwise, decrease the velocity linearly.
- float elasticity = 1.0f - excess / (getViewportLength() * SNAP_LIMIT);
- float overscrollDecelRate = getFrameAdjustedFriction(OVERSCROLL_DECEL_RATE, realNsPerFrame);
- if (overscroll == Overscroll.MINUS) {
- mVelocity = Math.min((mVelocity + overscrollDecelRate) * elasticity, 0.0f);
- } else { // must be Overscroll.PLUS
- mVelocity = Math.max((mVelocity - overscrollDecelRate) * elasticity, 0.0f);
- }
- }
-
- return true;
- }
-
- void stopFling() {
- mVelocity = 0.0f;
- mFlingState = FlingStates.STOPPED;
- }
-
- // Performs displacement of the viewport position according to the current velocity.
- void displace() {
- // if this isn't scrollable just return
- if (!scrollable())
- return;
-
- if (mFlingState == FlingStates.PANNING)
- mDisplacement += (mLastTouchPos - mTouchPos) * getEdgeResistance(false);
- else
- mDisplacement += mVelocity * getEdgeResistance(false);
-
- // if overscroll is disabled and we're trying to overscroll, reset the displacement
- // to remove any excess. Using getExcess alone isn't enough here since it relies on
- // getOverscroll which doesn't take into account any new displacment being applied.
- // If we using a subscroller, we don't want to alter the scrolling being done
- if (getOverScrollMode() == View.OVER_SCROLL_NEVER && !mSubscroller.scrolling()) {
- float originalDisplacement = mDisplacement;
-
- if (mDisplacement + getOrigin() < getPageStart() - getMarginStart()) {
- mDisplacement = getPageStart() - getMarginStart() - getOrigin();
- } else if (mDisplacement + getViewportEnd() > getPageEnd() + getMarginEnd()) {
- mDisplacement = getPageEnd() - getMarginEnd() - getViewportEnd();
- }
-
- // Return the amount of overscroll so that the overscroll controller can draw it for us
- if (originalDisplacement != mDisplacement) {
- if (mFlingState == FlingStates.FLINGING) {
- overscrollFling(mVelocity / MS_PER_FRAME * 1000);
- stopFling();
- } else if (mFlingState == FlingStates.PANNING) {
- overscrollPan(originalDisplacement - mDisplacement);
- }
- }
- }
- }
-
- float resetDisplacement() {
- float d = mDisplacement;
- mDisplacement = 0.0f;
- return d;
- }
-
- void setAutoscrollVelocity(float velocity) {
- if (mFlingState != FlingStates.STOPPED) {
- Log.e(LOGTAG, "Setting autoscroll velocity while in a fling is not allowed!");
- return;
- }
- mVelocity = velocity;
- }
-}
diff --git a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/BitmapUtils.java b/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/BitmapUtils.java
deleted file mode 100644
index 9dba802..0000000
--- a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/BitmapUtils.java
+++ /dev/null
@@ -1,368 +0,0 @@
-/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.gecko.gfx;
-
-import org.mozilla.gecko.util.ThreadUtils;
-import org.mozilla.gecko.util.UiAsyncTask;
-//import org.mozilla.gecko.util.GeckoJarReader;
-//import org.mozilla.gecko.R;
-
-import org.libreoffice.R;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.BitmapDrawable;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.util.Base64;
-import android.util.Log;
-import android.text.TextUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Field;
-import java.lang.NoSuchFieldException;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-public final class BitmapUtils {
- private static final String LOGTAG = "GeckoBitmapUtils";
-
- private BitmapUtils() {}
-
- public interface BitmapLoader {
- public void onBitmapFound(Drawable d);
- }
-
- public static void getDrawable(final Context context, final String data, final BitmapLoader loader) {
- if (TextUtils.isEmpty(data)) {
- loader.onBitmapFound(null);
- return;
- }
-
- if (data.startsWith("data")) {
- BitmapDrawable d = new BitmapDrawable(context.getResources(), getBitmapFromDataURI(data));
- loader.onBitmapFound(d);
- return;
- }
-
- if (data.startsWith("jar:") || data.startsWith("file://")) {
- (new UiAsyncTask<Void, Void, Drawable>(ThreadUtils.getBackgroundHandler()) {
- @Override
- public Drawable doInBackground(Void... params) {
- try {
- //if (data.startsWith("jar:jar")) {
- // return GeckoJarReader.getBitmapDrawable(context.getResources(), data);
- //}
-
- // Don't attempt to validate the JAR signature when loading an add-on icon
- //if (data.startsWith("jar:file")) {
- // return GeckoJarReader.getBitmapDrawable(context.getResources(), Uri.decode(data));
- //}
-
- URL url = new URL(data);
- InputStream is = (InputStream) url.getContent();
- try {
- return Drawable.createFromStream(is, "src");
- } finally {
- is.close();
- }
- } catch (Exception e) {
- Log.w(LOGTAG, "Unable to set icon", e);
- }
- return null;
- }
-
- @Override
- public void onPostExecute(Drawable drawable) {
- loader.onBitmapFound(drawable);
- }
- }).execute();
- return;
- }
-
- if(data.startsWith("-moz-icon://")) {
- Uri imageUri = Uri.parse(data);
- String resource = imageUri.getSchemeSpecificPart();
- resource = resource.substring(resource.lastIndexOf('/') + 1);
-
- try {
- Drawable d = context.getPackageManager().getApplicationIcon(resource);
- loader.onBitmapFound(d);
- } catch(Exception ex) { }
-
- return;
- }
-
- if(data.startsWith("drawable://")) {
- Uri imageUri = Uri.parse(data);
- int id = getResource(imageUri, R.drawable.ic_status_logo);
- Drawable d = context.getResources().getDrawable(id);
-
- loader.onBitmapFound(d);
- return;
- }
-
- loader.onBitmapFound(null);
- }
-
- public static Bitmap decodeByteArray(byte[] bytes) {
- return decodeByteArray(bytes, null);
- }
-
- public static Bitmap decodeByteArray(byte[] bytes, BitmapFactory.Options options) {
- return decodeByteArray(bytes, 0, bytes.length, options);
- }
-
- public static Bitmap decodeByteArray(byte[] bytes, int offset, int length) {
- return decodeByteArray(bytes, offset, length, null);
- }
-
- public static Bitmap decodeByteArray(byte[] bytes, int offset, int length, BitmapFactory.Options options) {
- if (bytes.length <= 0) {
- throw new IllegalArgumentException("bytes.length " + bytes.length
- + " must be a positive number");
- }
-
- Bitmap bitmap = null;
- try {
- bitmap = BitmapFactory.decodeByteArray(bytes, offset, length, options);
- } catch (OutOfMemoryError e) {
- Log.e(LOGTAG, "decodeByteArray(bytes.length=" + bytes.length
- + ", options= " + options + ") OOM!", e);
- return null;
- }
-
- if (bitmap == null) {
- Log.w(LOGTAG, "decodeByteArray() returning null because BitmapFactory returned null");
- return null;
- }
-
- if (bitmap.getWidth() <= 0 || bitmap.getHeight() <= 0) {
- Log.w(LOGTAG, "decodeByteArray() returning null because BitmapFactory returned "
- + "a bitmap with dimensions " + bitmap.getWidth()
- + "x" + bitmap.getHeight());
- return null;
- }
-
- return bitmap;
- }
-
- public static Bitmap decodeStream(InputStream inputStream) {
- try {
- return BitmapFactory.decodeStream(inputStream);
- } catch (OutOfMemoryError e) {
- Log.e(LOGTAG, "decodeStream() OOM!", e);
- return null;
- }
- }
-
- public static Bitmap decodeUrl(Uri uri) {
- return decodeUrl(uri.toString());
- }
-
- public static Bitmap decodeUrl(String urlString) {
- URL url;
-
- try {
- url = new URL(urlString);
- } catch(MalformedURLException e) {
- Log.w(LOGTAG, "decodeUrl: malformed URL " + urlString);
- return null;
- }
-
- return decodeUrl(url);
- }
-
- public static Bitmap decodeUrl(URL url) {
- InputStream stream = null;
-
- try {
- stream = url.openStream();
- } catch(IOException e) {
- Log.w(LOGTAG, "decodeUrl: IOException downloading " + url);
- return null;
- }
-
- if (stream == null) {
- Log.w(LOGTAG, "decodeUrl: stream not found downloading " + url);
- return null;
- }
-
- Bitmap bitmap = decodeStream(stream);
-
- try {
- stream.close();
- } catch(IOException e) {
- Log.w(LOGTAG, "decodeUrl: IOException closing stream " + url, e);
- }
-
- return bitmap;
- }
-
- public static Bitmap decodeResource(Context context, int id) {
- return decodeResource(context, id, null);
- }
-
- public static Bitmap decodeResource(Context context, int id, BitmapFactory.Options options) {
- Resources resources = context.getResources();
- try {
- return BitmapFactory.decodeResource(resources, id, options);
- } catch (OutOfMemoryError e) {
- Log.e(LOGTAG, "decodeResource() OOM! Resource id=" + id, e);
- return null;
- }
- }
-
- public static int getDominantColor(Bitmap source) {
- return getDominantColor(source, true);
- }
-
- public static int getDominantColor(Bitmap source, boolean applyThreshold) {
- if (source == null)
- return Color.argb(255,255,255,255);
-
- // Keep track of how many times a hue in a given bin appears in the image.
- // Hue values range [0 .. 360), so dividing by 10, we get 36 bins.
- int[] colorBins = new int[36];
-
- // The bin with the most colors. Initialize to -1 to prevent accidentally
- // thinking the first bin holds the dominant color.
- int maxBin = -1;
-
- // Keep track of sum hue/saturation/value per hue bin, which we'll use to
- // compute an average to for the dominant color.
- float[] sumHue = new float[36];
- float[] sumSat = new float[36];
- float[] sumVal = new float[36];
- float[] hsv = new float[3];
-
- int height = source.getHeight();
- int width = source.getWidth();
- int[] pixels = new int[width * height];
- source.getPixels(pixels, 0, width, 0, 0, width, height);
- for (int row = 0; row < height; row++) {
- for (int col = 0; col < width; col++) {
- int c = pixels[col + row * width];
- // Ignore pixels with a certain transparency.
- if (Color.alpha(c) < 128)
- continue;
-
- Color.colorToHSV(c, hsv);
-
- // If a threshold is applied, ignore arbitrarily chosen values for "white" and "black".
- if (applyThreshold && (hsv[1] <= 0.35f || hsv[2] <= 0.35f))
- continue;
-
- // We compute the dominant color by putting colors in bins based on their hue.
- int bin = (int) Math.floor(hsv[0] / 10.0f);
-
- // Update the sum hue/saturation/value for this bin.
- sumHue[bin] = sumHue[bin] + hsv[0];
- sumSat[bin] = sumSat[bin] + hsv[1];
- sumVal[bin] = sumVal[bin] + hsv[2];
-
- // Increment the number of colors in this bin.
- colorBins[bin]++;
-
- // Keep track of the bin that holds the most colors.
- if (maxBin < 0 || colorBins[bin] > colorBins[maxBin])
- maxBin = bin;
- }
- }
-
- // maxBin may never get updated if the image holds only transparent and/or black/white pixels.
- if (maxBin < 0)
- return Color.argb(255,255,255,255);
-
- // Return a color with the average hue/saturation/value of the bin with the most colors.
- hsv[0] = sumHue[maxBin]/colorBins[maxBin];
- hsv[1] = sumSat[maxBin]/colorBins[maxBin];
- hsv[2] = sumVal[maxBin]/colorBins[maxBin];
- return Color.HSVToColor(hsv);
- }
-
- /**
- * Decodes a bitmap from a Base64 data URI.
- *
- * @param dataURI a Base64-encoded data URI string
- * @return the decoded bitmap, or null if the data URI is invalid
- */
- public static Bitmap getBitmapFromDataURI(String dataURI) {
- String base64 = dataURI.substring(dataURI.indexOf(',') + 1);
- try {
- byte[] raw = Base64.decode(base64, Base64.DEFAULT);
- return BitmapUtils.decodeByteArray(raw);
- } catch (Exception e) {
- Log.e(LOGTAG, "exception decoding bitmap from data URI: " + dataURI, e);
- }
- return null;
- }
-
- public static Bitmap getBitmapFromDrawable(Drawable drawable) {
- if (drawable instanceof BitmapDrawable) {
- return ((BitmapDrawable) drawable).getBitmap();
- }
-
- int width = drawable.getIntrinsicWidth();
- width = width > 0 ? width : 1;
- int height = drawable.getIntrinsicHeight();
- height = height > 0 ? height : 1;
-
- Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
- Canvas canvas = new Canvas(bitmap);
- drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
- drawable.draw(canvas);
-
- return bitmap;
- }
-
- public static int getResource(Uri resourceUrl, int defaultIcon) {
- int icon = defaultIcon;
-
- final String scheme = resourceUrl.getScheme();
- if ("drawable".equals(scheme)) {
- String resource = resourceUrl.getSchemeSpecificPart();
- resource = resource.substring(resource.lastIndexOf('/') + 1);
-
- try {
- return Integer.parseInt(resource);
- } catch(NumberFormatException ex) {
- // This isn't a resource id, try looking for a string
- }
-
- try {
- final Class<R.drawable> drawableClass = R.drawable.class;
- final Field f = drawableClass.getField(resource);
- icon = f.getInt(null);
- } catch (final NoSuchFieldException e1) {
-
- // just means the resource doesn't exist for fennec. Check in Android resources
- try {
- final Class<android.R.drawable> drawableClass = android.R.drawable.class;
- final Field f = drawableClass.getField(resource);
- icon = f.getInt(null);
- } catch (final NoSuchFieldException e2) {
- // This drawable doesn't seem to exist...
- } catch(Exception e3) {
- Log.i(LOGTAG, "Exception getting drawable", e3);
- }
-
- } catch (Exception e4) {
- Log.i(LOGTAG, "Exception getting drawable", e4);
- }
-
- resourceUrl = null;
- }
- return icon;
- }
-}
-
diff --git a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/BufferedCairoImage.java b/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/BufferedCairoImage.java
deleted file mode 100644
index 307f412..0000000
--- a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/BufferedCairoImage.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.gecko.gfx;
-
-import org.mozilla.gecko.mozglue.DirectBufferAllocator;
-
-import android.graphics.Bitmap;
-import android.util.Log;
-
-import java.nio.ByteBuffer;
-
-/** A Cairo image that simply saves a buffer of pixel data. */
-public class BufferedCairoImage extends CairoImage {
- private ByteBuffer mBuffer;
- private IntSize mSize;
- private int mFormat;
-
- private static String LOGTAG = "GeckoBufferedCairoImage";
-
- /** Creates a buffered Cairo image from a byte buffer. */
- public BufferedCairoImage(ByteBuffer inBuffer, int inWidth, int inHeight, int inFormat) {
- setBuffer(inBuffer, inWidth, inHeight, inFormat);
- }
-
- /** Creates a buffered Cairo image from an Android bitmap. */
- public BufferedCairoImage(Bitmap bitmap) {
- setBitmap(bitmap);
- }
-
- private synchronized void freeBuffer() {
- mBuffer = DirectBufferAllocator.free(mBuffer);
- }
-
- @Override
- public void destroy() {
- try {
- freeBuffer();
- } catch (Exception ex) {
- Log.e(LOGTAG, "error clearing buffer: ", ex);
- }
- }
-
- @Override
- public ByteBuffer getBuffer() { return mBuffer; }
- @Override
- public IntSize getSize() { return mSize; }
- @Override
- public int getFormat() { return mFormat; }
-
-
- public void setBuffer(ByteBuffer buffer, int width, int height, int format) {
- freeBuffer();
- mBuffer = buffer;
- mSize = new IntSize(width, height);
- mFormat = format;
- }
-
- public void setBitmap(Bitmap bitmap) {
- mFormat = CairoUtils.bitmapConfigToCairoFormat(bitmap.getConfig());
- mSize = new IntSize(bitmap.getWidth(), bitmap.getHeight());
-
- int bpp = CairoUtils.bitsPerPixelForCairoFormat(mFormat);
- mBuffer = DirectBufferAllocator.allocate(mSize.getArea() * bpp);
- bitmap.copyPixelsToBuffer(mBuffer.asIntBuffer());
- }
-}
diff --git a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/CairoGLInfo.java b/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/CairoGLInfo.java
deleted file mode 100644
index 472c1d2..0000000
--- a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/CairoGLInfo.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.gecko.gfx;
-
-import javax.microedition.khronos.opengles.GL10;
-
-/** Information needed to render Cairo bitmaps using OpenGL ES. */
-public class CairoGLInfo {
- public final int internalFormat;
- public final int format;
- public final int type;
-
- public CairoGLInfo(int cairoFormat) {
- switch (cairoFormat) {
- case CairoImage.FORMAT_ARGB32:
- internalFormat = format = GL10.GL_RGBA; type = GL10.GL_UNSIGNED_BYTE;
- break;
- case CairoImage.FORMAT_RGB24:
- internalFormat = format = GL10.GL_RGB; type = GL10.GL_UNSIGNED_BYTE;
- break;
- case CairoImage.FORMAT_RGB16_565:
- internalFormat = format = GL10.GL_RGB; type = GL10.GL_UNSIGNED_SHORT_5_6_5;
- break;
- case CairoImage.FORMAT_A8:
- case CairoImage.FORMAT_A1:
- throw new RuntimeException("Cairo FORMAT_A1 and FORMAT_A8 unsupported");
- default:
- throw new RuntimeException("Unknown Cairo format");
- }
- }
-}
-
diff --git a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/CairoImage.java b/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/CairoImage.java
deleted file mode 100644
index 5a18a4b..0000000
--- a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/CairoImage.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.gecko.gfx;
-
-import java.nio.ByteBuffer;
-
-/*
- * A bitmap with pixel data in one of the formats that Cairo understands.
- */
-public abstract class CairoImage {
- public abstract ByteBuffer getBuffer();
-
- public abstract void destroy();
-
- public abstract IntSize getSize();
- public abstract int getFormat();
-
- public static final int FORMAT_INVALID = -1;
- public static final int FORMAT_ARGB32 = 0;
- public static final int FORMAT_RGB24 = 1;
- public static final int FORMAT_A8 = 2;
- public static final int FORMAT_A1 = 3;
- public static final int FORMAT_RGB16_565 = 4;
-}
-
diff --git a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/CairoUtils.java b/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/CairoUtils.java
deleted file mode 100644
index 48c449f..0000000
--- a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/CairoUtils.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.gecko.gfx;
-
-import android.graphics.Bitmap;
-
-/**
- * Utility methods useful when displaying Cairo bitmaps using OpenGL ES.
- */
-public class CairoUtils {
- private CairoUtils() { /* Don't call me. */ }
-
- public static int bitsPerPixelForCairoFormat(int cairoFormat) {
- switch (cairoFormat) {
- case CairoImage.FORMAT_A1: return 1;
- case CairoImage.FORMAT_A8: return 8;
- case CairoImage.FORMAT_RGB16_565: return 16;
- case CairoImage.FORMAT_RGB24: return 24;
- case CairoImage.FORMAT_ARGB32: return 32;
- default:
- throw new RuntimeException("Unknown Cairo format");
- }
- }
-
- public static int bitmapConfigToCairoFormat(Bitmap.Config config) {
- if (config == null)
- return CairoImage.FORMAT_ARGB32; /* Droid Pro fix. */
-
- switch (config) {
- case ALPHA_8: return CairoImage.FORMAT_A8;
- case ARGB_4444: throw new RuntimeException("ARGB_444 unsupported");
- case ARGB_8888: return CairoImage.FORMAT_ARGB32;
- case RGB_565: return CairoImage.FORMAT_RGB16_565;
- default: throw new RuntimeException("Unknown Skia bitmap config");
- }
- }
-
- public static Bitmap.Config cairoFormatTobitmapConfig(int format) {
- switch (format) {
- case CairoImage.FORMAT_A8: return Bitmap.Config.ALPHA_8;
- case CairoImage.FORMAT_ARGB32: return Bitmap.Config.ARGB_8888;
- case CairoImage.FORMAT_RGB16_565: return Bitmap.Config.RGB_565;
- default:
- throw new RuntimeException("Unknown CairoImage format");
- }
- }
-}
-
diff --git a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/DisplayPortCalculator.java b/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/DisplayPortCalculator.java
deleted file mode 100644
index f101dfb..0000000
--- a/android/experimental/LOAndroid/app/src/main/java/org/mozilla/gecko/gfx/DisplayPortCalculator.java
+++ /dev/null
@@ -1,777 +0,0 @@
-/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.gecko.gfx;
-
-//import org.mozilla.gecko.GeckoAppShell;
-//import org.mozilla.gecko.PrefsHelper;
-import org.libreoffice.LOKitShell;
-import org.mozilla.gecko.util.FloatUtils;
-
-import org.json.JSONArray;
-
-import android.graphics.PointF;
-import android.graphics.RectF;
-import android.util.FloatMath;
-import android.util.Log;
-
-import java.util.HashMap;
-import java.util.Map;
-
-final class DisplayPortCalculator {
- private static final String LOGTAG = "GeckoDisplayPort";
- private static final PointF ZERO_VELOCITY = new PointF(0, 0);
-
- // Keep this in sync with the TILEDLAYERBUFFER_TILE_SIZE defined in gfx/layers/TiledLayerBuffer.h
- private static final int TILE_SIZE = 256;
-
- private static final String PREF_DISPLAYPORT_STRATEGY = "gfx.displayport.strategy";
- private static final String PREF_DISPLAYPORT_FM_MULTIPLIER = "gfx.displayport.strategy_fm.multiplier";
- private static final String PREF_DISPLAYPORT_FM_DANGER_X = "gfx.displayport.strategy_fm.danger_x";
- private static final String PREF_DISPLAYPORT_FM_DANGER_Y = "gfx.displayport.strategy_fm.danger_y";
- private static final String PREF_DISPLAYPORT_VB_MULTIPLIER = "gfx.displayport.strategy_vb.multiplier";
- private static final String PREF_DISPLAYPORT_VB_VELOCITY_THRESHOLD = "gfx.displayport.strategy_vb.threshold";
- private static final String PREF_DISPLAYPORT_VB_REVERSE_BUFFER = "gfx.displayport.strategy_vb.reverse_buffer";
- private static final String PREF_DISPLAYPORT_VB_DANGER_X_BASE = "gfx.displayport.strategy_vb.danger_x_base";
- private static final String PREF_DISPLAYPORT_VB_DANGER_Y_BASE = "gfx.displayport.strategy_vb.danger_y_base";
- private static final String PREF_DISPLAYPORT_VB_DANGER_X_INCR = "gfx.displayport.strategy_vb.danger_x_incr";
- private static final String PREF_DISPLAYPORT_VB_DANGER_Y_INCR = "gfx.displayport.strategy_vb.danger_y_incr";
- private static final String PREF_DISPLAYPORT_PB_VELOCITY_THRESHOLD = "gfx.displayport.strategy_pb.threshold";
-
- private static DisplayPortStrategy sStrategy = new VelocityBiasStrategy(null);
-
- static DisplayPortMetrics calculate(ImmutableViewportMetrics metrics, PointF velocity) {
- return sStrategy.calculate(metrics, (velocity == null ? ZERO_VELOCITY : velocity));
- }
-
- static boolean aboutToCheckerboard(ImmutableViewportMetrics metrics, PointF velocity, DisplayPortMetrics displayPort) {
- if (displayPort == null) {
- return true;
- }
- return sStrategy.aboutToCheckerboard(metrics, (velocity == null ? ZERO_VELOCITY : velocity), displayPort);
- }
-
- static boolean drawTimeUpdate(long millis, int pixels) {
- return sStrategy.drawTimeUpdate(millis, pixels);
- }
-
- static void resetPageState() {
- sStrategy.resetPageState();
- }
-
- static void initPrefs() {
- final String[] prefs = { PREF_DISPLAYPORT_STRATEGY,
- PREF_DISPLAYPORT_FM_MULTIPLIER,
- PREF_DISPLAYPORT_FM_DANGER_X,
- PREF_DISPLAYPORT_FM_DANGER_Y,
- PREF_DISPLAYPORT_VB_MULTIPLIER,
- PREF_DISPLAYPORT_VB_VELOCITY_THRESHOLD,
- PREF_DISPLAYPORT_VB_REVERSE_BUFFER,
- PREF_DISPLAYPORT_VB_DANGER_X_BASE,
- PREF_DISPLAYPORT_VB_DANGER_Y_BASE,
- PREF_DISPLAYPORT_VB_DANGER_X_INCR,
- PREF_DISPLAYPORT_VB_DANGER_Y_INCR,
- PREF_DISPLAYPORT_PB_VELOCITY_THRESHOLD };
-
- /*PrefsHelper.getPrefs(prefs, new PrefsHelper.PrefHandlerBase() {
- private Map<String, Integer> mValues = new HashMap<String, Integer>();
-
- @Override public void prefValue(String pref, int value) {
- mValues.put(pref, value);
- }
-
- @Override public void finish() {
- setStrategy(mValues);
- }
- });*/
- }
-
- /**
- * Set the active strategy to use.
- * See the gfx.displayport.strategy pref in mobile/android/app/mobile.js to see the
- * mapping between ints and strategies.
- */
- static boolean setStrategy(Map<String, Integer> prefs) {
- Integer strategy = prefs.get(PREF_DISPLAYPORT_STRATEGY);
- if (strategy == null) {
- return false;
- }
-
- switch (strategy) {
- case 0:
- sStrategy = new FixedMarginStrategy(prefs);
- break;
- case 1:
- sStrategy = new VelocityBiasStrategy(prefs);
- break;
- case 2:
- sStrategy = new DynamicResolutionStrategy(prefs);
- break;
- case 3:
- sStrategy = new NoMarginStrategy(prefs);
- break;
- case 4:
- sStrategy = new PredictionBiasStrategy(prefs);
- break;
- default:
- Log.e(LOGTAG, "Invalid strategy index specified");
- return false;
- }
- Log.i(LOGTAG, "Set strategy " + sStrategy.toString());
- return true;
- }
-
- private static float getFloatPref(Map<String, Integer> prefs, String prefName, int defaultValue) {
- Integer value = (prefs == null ? null : prefs.get(prefName));
- return (float)(value == null || value < 0 ? defaultValue : value) / 1000f;
- }
-
- private static abstract class DisplayPortStrategy {
- /** Calculates a displayport given a viewport and panning velocity. */
- public abstract DisplayPortMetrics calculate(ImmutableViewportMetrics metrics, PointF velocity);
- /** Returns true if a checkerboard is about to be visible and we should not throttle drawing. */
- public abstract boolean aboutToCheckerboard(ImmutableViewportMetrics metrics, PointF velocity, DisplayPortMetrics displayPort);
- /** Notify the strategy of a new recorded draw time. Return false to turn off draw time recording. */
- public boolean drawTimeUpdate(long millis, int pixels) { return false; }
- /** Reset any page-specific state stored, as the page being displayed has changed. */
- public void resetPageState() {}
- }
-
- /**
- * Return the dimensions for a rect that has area (width*height) that does not exceed the page size in the
- * given metrics object. The area in the returned FloatSize may be less than width*height if the page is
- * small, but it will never be larger than width*height.
- * Note that this process may change the relative aspect ratio of the given dimensions.
- */
- private static FloatSize reshapeForPage(float width, float height, ImmutableViewportMetrics metrics) {
- // figure out how much of the desired buffer amount we can actually use on the horizontal axis
- float usableWidth = Math.min(width, metrics.getPageWidth());
- // if we reduced the buffer amount on the horizontal axis, we should take that saved memory and
- // use it on the vertical axis
- float extraUsableHeight = (float)Math.floor(((width - usableWidth) * height) / usableWidth);
- float usableHeight = Math.min(height + extraUsableHeight, metrics.getPageHeight());
- if (usableHeight < height && usableWidth == width) {
- // and the reverse - if we shrunk the buffer on the vertical axis we can add it to the horizontal
- float extraUsableWidth = (float)Math.floor(((height - usableHeight) * width) / usableHeight);
- usableWidth = Math.min(width + extraUsableWidth, metrics.getPageWidth());
- }
- return new FloatSize(usableWidth, usableHeight);
- }
-
- /**
- * Expand the given rect in all directions by a "danger zone". The size of the danger zone on an axis
- * is the size of the view on that axis multiplied by the given multiplier. The expanded rect is then
- * clamped to page bounds and returned.
- */
- private static RectF expandByDangerZone(RectF rect, float dangerZoneXMultiplier, float dangerZoneYMultiplier, ImmutableViewportMetrics metrics) {
- // calculate the danger zone amounts in pixels
- float dangerZoneX = metrics.getWidth() * dangerZoneXMultiplier;
- float dangerZoneY = metrics.getHeight() * dangerZoneYMultiplier;
- rect = RectUtils.expand(rect, dangerZoneX, dangerZoneY);
- // clamp to page bounds
- return clampToPageBounds(rect, metrics);
- }
-
- /**
- * Expand the given margins such that when they are applied on the viewport, the resulting rect
- * does not have any partial tiles, except when it is clipped by the page bounds. This assumes
- * the tiles are TILE_SIZE by TILE_SIZE and start at the origin, such that there will always be
- * a tile at (0,0)-(TILE_SIZE,TILE_SIZE)).
- */
- private static DisplayPortMetrics getTileAlignedDisplayPortMetrics(RectF margins, float zoom, ImmutableViewportMetrics metrics) {
- float left = metrics.viewportRectLeft - margins.left;
- float top = metrics.viewportRectTop - margins.top;
- float right = metrics.viewportRectRight + margins.right;
- float bottom = metrics.viewportRectBottom + margins.bottom;
- left = Math.max(metrics.pageRectLeft, TILE_SIZE * FloatMath.floor(left / TILE_SIZE));
- top = Math.max(metrics.pageRectTop, TILE_SIZE * FloatMath.floor(top / TILE_SIZE));
- right = Math.min(metrics.pageRectRight, TILE_SIZE * FloatMath.ceil(right / TILE_SIZE));
- bottom = Math.min(metrics.pageRectBottom, TILE_SIZE * FloatMath.ceil(bottom / TILE_SIZE));
- return new DisplayPortMetrics(left, top, right, bottom, zoom);
- }
-
- /**
- * Adjust the given margins so if they are applied on the viewport in the metrics, the resulting rect
- * does not exceed the page bounds. This code will maintain the total margin amount for a given axis;
- * it assumes that margins.left + metrics.getWidth() + margins.right is less than or equal to
- * metrics.getPageWidth(); and the same for the y axis.
- */
- private static RectF shiftMarginsForPageBounds(RectF margins, ImmutableViewportMetrics metrics) {
- // check how much we're overflowing in each direction. note that at most one of leftOverflow
- // and rightOverflow can be greater than zero, and at most one of topOverflow and bottomOverflow
- // can be greater than zero, because of the assumption described in the method javadoc.
- float leftOverflow = metrics.pageRectLeft - (metrics.viewportRectLeft - margins.left);
- float rightOverflow = (metrics.viewportRectRight + margins.right) - metrics.pageRectRight;
- float topOverflow = metrics.pageRectTop - (metrics.viewportRectTop - margins.top);
- float bottomOverflow = (metrics.viewportRectBottom + margins.bottom) - metrics.pageRectBottom;
-
- // if the margins overflow the page bounds, shift them to other side on the same axis
- if (leftOverflow > 0) {
- margins.left -= leftOverflow;
- margins.right += leftOverflow;
- } else if (rightOverflow > 0) {
- margins.right -= rightOverflow;
- margins.left += rightOverflow;
- }
- if (topOverflow > 0) {
- margins.top -= topOverflow;
- margins.bottom += topOverflow;
- } else if (bottomOverflow > 0) {
- margins.bottom -= bottomOverflow;
- margins.top += bottomOverflow;
- }
- return margins;
- }
-
- /**
- * Clamp the given rect to the page bounds and return it.
- */
- private static RectF clampToPageBounds(RectF rect, ImmutableViewportMetrics metrics) {
- if (rect.top < metrics.pageRectTop) rect.top = metrics.pageRectTop;
- if (rect.left < metrics.pageRectLeft) rect.left = metrics.pageRectLeft;
- if (rect.right > metrics.pageRectRight) rect.right = metrics.pageRectRight;
- if (rect.bottom > metrics.pageRectBottom) rect.bottom = metrics.pageRectBottom;
- return rect;
- }
-
- /**
- * This class implements the variation where we basically don't bother with a display port.
- */
- private static class NoMarginStrategy extends DisplayPortStrategy {
- NoMarginStrategy(Map<String, Integer> prefs) {
- // no prefs in this strategy
- }
-
- @Override
- public DisplayPortMetrics calculate(ImmutableViewportMetrics metrics, PointF velocity) {
- return new DisplayPortMetrics(metrics.viewportRectLeft,
- metrics.viewportRectTop,
- metrics.viewportRectRight,
- metrics.viewportRectBottom,
- metrics.zoomFactor);
- }
-
- @Override
- public boolean aboutToCheckerboard(ImmutableViewportMetrics metrics, PointF velocity, DisplayPortMetrics displayPort) {
- return true;
- }
-
- @Override
- public String toString() {
- return "NoMarginStrategy";
- }
- }
-
- /**
- * This class implements the variation where we use a fixed-size margin on the display port.
- * The margin is always 300 pixels in all directions, except when we are (a) approaching a page
- * boundary, and/or (b) if we are limited by the page size. In these cases we try to maintain
- * the area of the display port by (a) shifting the buffer to the other side on the same axis,
- * and/or (b) increasing the buffer on the other axis to compensate for the reduced buffer on
- * one axis.
- */
- private static class FixedMarginStrategy extends DisplayPortStrategy {
- // The length of each axis of the display port will be the corresponding view length
- // multiplied by this factor.
- private final float SIZE_MULTIPLIER;
-
- // If the visible rect is within the danger zone (measured as a fraction of the view size
- // from the edge of the displayport) we start redrawing to minimize checkerboarding.
- private final float DANGER_ZONE_X_MULTIPLIER;
- private final float DANGER_ZONE_Y_MULTIPLIER;
-
- FixedMarginStrategy(Map<String, Integer> prefs) {
- SIZE_MULTIPLIER = getFloatPref(prefs, PREF_DISPLAYPORT_FM_MULTIPLIER, 2000);
- DANGER_ZONE_X_MULTIPLIER = getFloatPref(prefs, PREF_DISPLAYPORT_FM_DANGER_X, 100);
- DANGER_ZONE_Y_MULTIPLIER = getFloatPref(prefs, PREF_DISPLAYPORT_FM_DANGER_Y, 200);
- }
-
- @Override
- public DisplayPortMetrics calculate(ImmutableViewportMetrics metrics, PointF velocity) {
- float displayPortWidth = metrics.getWidth() * SIZE_MULTIPLIER;
- float displayPortHeight = metrics.getHeight() * SIZE_MULTIPLIER;
-
- // we need to avoid having a display port that is larger than the page, or we will end up
- // painting things outside the page bounds (bug 729169). we simultaneously need to make
- // the display port as large as possible so that we redraw less. reshape the display
- // port dimensions to accomplish this.
- FloatSize usableSize = reshapeForPage(displayPortWidth, displayPortHeight, metrics);
- float horizontalBuffer = usableSize.width - metrics.getWidth();
- float verticalBuffer = usableSize.height - metrics.getHeight();
-
- // and now calculate the display port margins based on how much buffer we've decided to use and
- // the page bounds, ensuring we use all of the available buffer amounts on one side or the other
- // on any given axis. (i.e. if we're scrolled to the top of the page, the vertical buffer is
- // entirely below the visible viewport, but if we're halfway down the page, the vertical buffer
- // is split).
- RectF margins = new RectF();
- margins.left = horizontalBuffer / 2.0f;
- margins.right = horizontalBuffer - margins.left;
- margins.top = verticalBuffer / 2.0f;
- margins.bottom = verticalBuffer - margins.top;
- margins = shiftMarginsForPageBounds(margins, metrics);
-
- return getTileAlignedDisplayPortMetrics(margins, metrics.zoomFactor, metrics);
- }
-
- @Override
- public boolean aboutToCheckerboard(ImmutableViewportMetrics metrics, PointF velocity, DisplayPortMetrics displayPort) {
- // Increase the size of the viewport based on the danger zone multiplier (and clamp to page
- // boundaries), and intersect it with the current displayport to determine whether we're
- // close to checkerboarding.
- RectF adjustedViewport = expandByDangerZone(metrics.getViewport(), DANGER_ZONE_X_MULTIPLIER, DANGER_ZONE_Y_MULTIPLIER, metrics);
- return !displayPort.contains(adjustedViewport);
- }
-
- @Override
- public String toString() {
- return "FixedMarginStrategy mult=" + SIZE_MULTIPLIER + ", dangerX=" + DANGER_ZONE_X_MULTIPLIER + ", dangerY=" + DANGER_ZONE_Y_MULTIPLIER;
- }
- }
-
- /**
- * This class implements the variation with a small fixed-size margin with velocity bias.
- * In this variation, the default margins are pretty small relative to the view size, but
- * they are affected by the panning velocity. Specifically, if we are panning on one axis,
- * we remove the margins on the other axis because we are likely axis-locked. Also once
- * we are panning in one direction above a certain threshold velocity, we shift the buffer
- * so that it is almost entirely in the direction of the pan, with a little bit in the
- * reverse direction.
- */
- private static class VelocityBiasStrategy extends DisplayPortStrategy {
- // The length of each axis of the display port will be the corresponding view length
- // multiplied by this factor.
- private final float SIZE_MULTIPLIER;
- // The velocity above which we apply the velocity bias
- private final float VELOCITY_THRESHOLD;
- // How much of the buffer to keep in the reverse direction of the velocity
- private final float REVERSE_BUFFER;
- // If the visible rect is within the danger zone we start redrawing to minimize
- // checkerboarding. the danger zone amount is a linear function of the form:
- // viewportsize * (base + velocity * incr)
- // where base and incr are configurable values.
- private final float DANGER_ZONE_BASE_X_MULTIPLIER;
- private final float DANGER_ZONE_BASE_Y_MULTIPLIER;
- private final float DANGER_ZONE_INCR_X_MULTIPLIER;
- private final float DANGER_ZONE_INCR_Y_MULTIPLIER;
-
- VelocityBiasStrategy(Map<String, Integer> prefs) {
- SIZE_MULTIPLIER = getFloatPref(prefs, PREF_DISPLAYPORT_VB_MULTIPLIER, 2000);
- VELOCITY_THRESHOLD = /*GeckoAppShell.getDpi()*/ LOKitShell.getDpi() * getFloatPref(prefs, PREF_DISPLAYPORT_VB_VELOCITY_THRESHOLD, 32);
- REVERSE_BUFFER = getFloatPref(prefs, PREF_DISPLAYPORT_VB_REVERSE_BUFFER, 200);
- DANGER_ZONE_BASE_X_MULTIPLIER = getFloatPref(prefs, PREF_DISPLAYPORT_VB_DANGER_X_BASE, 1000);
- DANGER_ZONE_BASE_Y_MULTIPLIER = getFloatPref(prefs, PREF_DISPLAYPORT_VB_DANGER_Y_BASE, 1000);
- DANGER_ZONE_INCR_X_MULTIPLIER = getFloatPref(prefs, PREF_DISPLAYPORT_VB_DANGER_X_INCR, 0);
- DANGER_ZONE_INCR_Y_MULTIPLIER = getFloatPref(prefs, PREF_DISPLAYPORT_VB_DANGER_Y_INCR, 0);
- }
-
- /**
- * Split the given amounts into margins based on the VELOCITY_THRESHOLD and REVERSE_BUFFER values.
- * If the velocity is above the VELOCITY_THRESHOLD on an axis, split the amount into REVERSE_BUFFER
- * and 1.0 - REVERSE_BUFFER fractions. The REVERSE_BUFFER fraction is set as the margin in the
- * direction opposite to the velocity, and the remaining fraction is set as the margin in the direction
- * of the velocity. If the velocity is lower than VELOCITY_THRESHOLD, split the amount evenly into the
- * two margins on that axis.
- */
- private RectF velocityBiasedMargins(float xAmount, float yAmount, PointF velocity) {
- RectF margins = new RectF();
-
- if (velocity.x > VELOCITY_THRESHOLD) {
- margins.left = xAmount * REVERSE_BUFFER;
- } else if (velocity.x < -VELOCITY_THRESHOLD) {
- margins.left = xAmount * (1.0f - REVERSE_BUFFER);
- } else {
- margins.left = xAmount / 2.0f;
- }
- margins.right = xAmount - margins.left;
-
- if (velocity.y > VELOCITY_THRESHOLD) {
- margins.top = yAmount * REVERSE_BUFFER;
- } else if (velocity.y < -VELOCITY_THRESHOLD) {
- margins.top = yAmount * (1.0f - REVERSE_BUFFER);
- } else {
- margins.top = yAmount / 2.0f;
- }
- margins.bottom = yAmount - margins.top;
-
- return margins;
- }
-
- @Override
- public DisplayPortMetrics calculate(ImmutableViewportMetrics metrics, PointF velocity) {
- float displayPortWidth = metrics.getWidth() * SIZE_MULTIPLIER;
- float displayPortHeight = metrics.getHeight() * SIZE_MULTIPLIER;
-
- // but if we're panning on one axis, set the margins for the other axis to zero since we are likely
- // axis locked and won't be displaying that extra area.
- if (Math.abs(velocity.x) > VELOCITY_THRESHOLD && FloatUtils.fuzzyEquals(velocity.y, 0)) {
- displayPortHeight = metrics.getHeight();
- } else if (Math.abs(velocity.y) > VELOCITY_THRESHOLD && FloatUtils.fuzzyEquals(velocity.x, 0)) {
- displayPortWidth = metrics.getWidth();
- }
-
- // we need to avoid having a display port that is larger than the page, or we will end up
- // painting things outside the page bounds (bug 729169).
- displayPortWidth = Math.min(displayPortWidth, metrics.getPageWidth());
- displayPortHeight = Math.min(displayPortHeight, metrics.getPageHeight());
- float horizontalBuffer = displayPortWidth - metrics.getWidth();
- float verticalBuffer = displayPortHeight - metrics.getHeight();
-
- // split the buffer amounts into margins based on velocity, and shift it to
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list