[Libreoffice-commits] core.git: 2 commits - android/Bootstrap android/experimental desktop/source
android/Bootstrap/src/org/libreoffice/kit/Document.java |4 android/Bootstrap/src/org/libreoffice/kit/Office.java |4 android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java | 18 ++ android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java |1 android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java | 64 +- android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java | 14 ++ android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java | 19 +- android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java |4 android/experimental/LOAndroid3/src/java/org/libreoffice/TileProvider.java |2 desktop/source/lib/lokandroid.cxx | 50 ++- 10 files changed, 129 insertions(+), 51 deletions(-) New commits: commit 2897374fdad4fdb2daab273c2cf6f85e5ae49ec1 Author: Tomaž Vajngerl tomaz.vajng...@collabora.com Date: Mon Sep 22 22:37:11 2014 +0200 android: cleanly load/close a document when activity starts/stops Change-Id: I2206a2b6818c030ba756f2b4d014a20d46f4106e diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java index 746ceb5..4aa32cb 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOEvent.java @@ -12,17 +12,24 @@ public class LOEvent { public static final int VIEWPORT = 3; public static final int DRAW = 4; public static final int CHANGE_PART = 5; +public static final int LOAD = 6; + public int mType; -ViewportMetrics viewportMetrics; private ViewportMetrics mViewportMetrics; private String mTypeString; private int mPartIndex; +private String mFilename; public LOEvent(int type, int widthPixels, int heightPixels, int tileWidth, int tileHeight) { mType = type; mTypeString = Size Changed: + widthPixels + + heightPixels; } +public LOEvent(int type, String filename) { +mType = type; +mFilename = filename; +} + public LOEvent(int type, IntSize tileSize) { mType = type; mTypeString = Tile size; @@ -65,6 +72,10 @@ public class LOEvent { return new LOEvent(CHANGE_PART, part); } +public static LOEvent load(String inputFile) { +return new LOEvent(LOAD, inputFile); +} + public String getTypeString() { return mTypeString; } @@ -76,4 +87,9 @@ public class LOEvent { public int getPartIndex() { return mPartIndex; } + +public String getFilename() { +return mFilename; +} + } diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java index 0d44d66..fbf8675 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java @@ -38,4 +38,5 @@ public class LOKitShell { public static Handler getMainHandler() { return LibreOfficeMainActivity.mAppContext.mMainHandler; } + } diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java index bc08b98..25a1705 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java @@ -22,21 +22,19 @@ public class LOKitThread extends Thread { private LibreOfficeMainActivity mApplication; private TileProvider mTileProvider; private ViewportMetrics mViewportMetrics; -private String mInputFile; private Rect mOldRect; private boolean mCheckboardImageSet = false; -LOKitThread(String inputFile) { -mInputFile = inputFile; +public LOKitThread() { } -RectF normlizeRect(ImmutableViewportMetrics metrics) { +private RectF normlizeRect(ImmutableViewportMetrics metrics) { RectF rect = metrics.getViewport(); float zoomFactor = metrics.zoomFactor; return new RectF(rect.left / zoomFactor, rect.top / zoomFactor, rect.right / zoomFactor, rect.bottom / zoomFactor); } -Rect roundToTileSize(RectF input, int tileSize) { +private Rect roundToTileSize(RectF input, int tileSize) { int minX = (Math.round(input.left)/ tileSize) * tileSize; int minY = (Math.round(input.top) / tileSize) * tileSize; int maxX = ((Math.round(input.right) / tileSize) + 1) * tileSize; @@ -44,7 +42,7 @@ public class LOKitThread
[Libreoffice-commits] core.git: 2 commits - android/Bootstrap android/experimental desktop/source
android/Bootstrap/src/org/libreoffice/kit/Document.java |2 android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java | 134 +++-- android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java | 33 - android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/BufferedCairoImage.java |4 android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/GeckoGLLayerClient.java | 265 -- android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java | 174 ++ android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/GeckoSoftwareLayerClient.java | 151 + android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/Layer.java |4 android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/LayerRenderer.java |1 android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/MultiTileLayer.java | 86 --- android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/SubTile.java | 15 desktop/source/lib/lokandroid.cxx | 10 12 files changed, 244 insertions(+), 635 deletions(-) New commits: commit b8ce647194c3c0f715296bee540ff18cfefa3497 Author: Tomaž Vajngerl tomaz.vajng...@collabora.com Date: Wed Jul 2 11:11:56 2014 +0200 LOAndroid3: add tiled rendering from document - one tile first Change-Id: Ib9c27cc8fcc9aee8670c217a4a5ab84bd3035577 diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java index ea3472b..abcbe65 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java @@ -6,6 +6,7 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.util.JsonWriter; +import android.util.Log; import org.mozilla.gecko.gfx.ViewportMetrics; @@ -15,72 +16,110 @@ import java.nio.ByteBuffer; import java.util.Random; import java.util.concurrent.ConcurrentLinkedQueue; +import org.libreoffice.kit.LibreOfficeKit; +import org.libreoffice.kit.Office; +import org.libreoffice.kit.Document; + public class LOKitThread extends Thread { private static final String LOGTAG = GeckoThread; +private static final int TILE_SIZE = 256; + +public Office mOffice; +public Document mDocument; public ConcurrentLinkedQueueLOEvent gEvents = new ConcurrentLinkedQueueLOEvent(); private ViewportMetrics mViewportMetrics; -private Random rand = new Random(); LOKitThread() { } -private boolean draw() throws InterruptedException { +private void openDocument() { +// enable debugging messages as the first thing + LibreOfficeKit.putenv(SAL_LOG=+WARN+INFO-INFO.legacy.osl-INFO.i18nlangtag); +LibreOfficeKit.init(LibreOfficeMainActivity.mAppContext); + +mOffice = new Office(LibreOfficeKit.getLibreOfficeKitHandle()); +String input = /assets/test1.odt; +mDocument = mOffice.documentLoad(input); +} + +private synchronized boolean draw() throws InterruptedException { final LibreOfficeMainActivity application = LibreOfficeMainActivity.mAppContext; -Bitmap bitmap = application.getLayerClient().getLayerController().getDrawable(docu); -//bitmap = convert(bitmap, Bitmap.Config.ARGB_); +openDocument(); + +long height = mDocument.getDocumentHeight(); +long width = mDocument.getDocumentWidth(); + +Log.e(LOGTAG, Document Size: + width + + height); + +int pageWidth = 1024; +int pageHeight = 1024; + +String metadata = createJson(0, 0, 256, 256, pageWidth, pageHeight, 0, 0, 1.0); + +Rect bufferRect = application.getLayerClient().beginDrawing(256, 256, TILE_SIZE, TILE_SIZE, metadata); + +/*if (bufferRect == null) { +Log.e(LOGTAG, beginDrawing - false); +return false; +}*/ + +Log.e(LOGTAG, Filling tiles..); + +ByteBuffer buffer = ByteBuffer.allocateDirect(TILE_SIZE * TILE_SIZE * 4); + +Log.e(LOGTAG, PaintTile..); + +mDocument.paintTile(buffer, 256, 256, 1024, 1024, 4096, 4096); + +Log.e(LOGTAG, EndPaintTile..); -StringWriter stringWriter = new StringWriter(); +Bitmap bitmap = Bitmap.createBitmap(TILE_SIZE, TILE_SIZE, Bitmap.Config.ARGB_); +bitmap.copyPixelsFromBuffer(buffer); +application.getLayerClient().addTile(bitmap, 0, 0); + +Log.e(LOGTAG, EndDrawing..); +application.getLayerClient().endDrawing(0, 0, 256, 256); + +return true; +} + +private String createJson(ViewportMetrics