diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2015-01-09 17:21:01 +0900 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-01-12 11:06:42 +0100 |
commit | a04e32558738c912913fa368e0e2cf237e61485c (patch) | |
tree | be46b7151445b5395dc41012590a2e269953995c /android | |
parent | e905d3b3e9eb356b26fc4d860a0fbdcd5d041092 (diff) |
android: Process messages in TileProvider + invalidation interface
Process the LOK messages in TileProvider and add an interface to
register and communicate invalidation requests.
Change-Id: I798dc5591dbc60ee6b055a95464cd3406ecd8b0d
Diffstat (limited to 'android')
3 files changed, 48 insertions, 3 deletions
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java index e1aeba359222..14a6acb4a5cb 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java @@ -1,6 +1,7 @@ package org.libreoffice; import android.graphics.Bitmap; +import android.graphics.RectF; import android.util.Log; import org.libreoffice.kit.Document; @@ -13,16 +14,17 @@ import org.mozilla.gecko.gfx.IntSize; import java.nio.ByteBuffer; -public class LOKitTileProvider implements TileProvider { +public class LOKitTileProvider implements TileProvider, Document.MessageCallback { private static final String LOGTAG = LOKitTileProvider.class.getSimpleName(); private static int TILE_SIZE = 256; - private Office mOffice; - private Document mDocument; private final GeckoLayerClient mLayerClient; private final float mTileWidth; private final float mTileHeight; private final String mInputFile; + private Office mOffice; + private Document mDocument; private boolean mIsReady = false; + private TileInvalidationCallback tileInvalidationCallback = null; private float mDPI; private float mWidthTwip; @@ -67,6 +69,7 @@ public class LOKitTileProvider implements TileProvider { public void postLoad() { mDocument.initializeForRendering(); + mDocument.setMessageCallback(this); int parts = mDocument.getParts(); Log.i(LOGTAG, "Document parts: " + parts); @@ -254,6 +257,12 @@ public class LOKitTileProvider implements TileProvider { } @Override + public void registerInvalidationCallback(TileInvalidationCallback tileInvalidationCallback) { + this.tileInvalidationCallback = tileInvalidationCallback; + } + + + @Override protected void finalize() throws Throwable { close(); super.finalize(); @@ -269,6 +278,31 @@ public class LOKitTileProvider implements TileProvider { public int getCurrentPartNumber() { return mDocument.getPart(); } + + @Override + public void messageRetrieved(int signalNumber, String payload) { + switch (signalNumber) { + case 0: + if (!payload.equals("EMPTY")) { + String[] coordinates = payload.split(","); + + if (coordinates.length == 4) { + int left = Integer.decode(coordinates[0].trim()); + int top = Integer.decode(coordinates[1].trim()); + int right = Integer.decode(coordinates[2].trim()); + int bottom = Integer.decode(coordinates[3].trim()); + RectF rect = new RectF( + twipToPixel(left, mDPI), + twipToPixel(top, mDPI), + twipToPixel(right, mDPI), + twipToPixel(bottom, mDPI) + ); + Log.i(LOGTAG, "Invalidate R: " + rect +" - " + getPageWidth() + " " + getPageHeight()); + tileInvalidationCallback.invalidate(rect); + } + } + } + } } // vim:set shiftwidth=4 softtabstop=4 expandtab: diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java index 79fef43a491d..0b58f1aa9d91 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java @@ -79,6 +79,10 @@ public class MockTileProvider implements TileProvider { } @Override + public void registerInvalidationCallback(TileInvalidationCallback tileInvalidationCallback) { + } + + @Override public void changePart(int partIndex) { } diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java index 988e53a0fcdf..abe76545b060 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java @@ -2,6 +2,7 @@ package org.libreoffice; import android.graphics.Bitmap; +import android.graphics.RectF; import org.mozilla.gecko.gfx.CairoImage; import org.mozilla.gecko.gfx.IntSize; @@ -24,4 +25,10 @@ public interface TileProvider { void close(); boolean isTextDocument(); + + void registerInvalidationCallback(TileProvider.TileInvalidationCallback tileInvalidationCallback); + + public interface TileInvalidationCallback { + void invalidate(RectF rect); + } } |