android/experimental/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java | 111 +++++++++- testtools/Module_testtools.mk | 4 2 files changed, 105 insertions(+), 10 deletions(-)
New commits: commit 82f65054561020d38e37dd376e4f652dcd1bcca8 Author: Tor Lillqvist <tlillqv...@suse.com> Date: Wed May 30 23:11:22 2012 +0300 Progress finally Now I get (a page of) the document rendered into a bitmap. Unfortunately css.awt.XBitmap::getDIB() provides an in-core 24-bit (BGR) BMP file. (Yes, despite the name, it's not just the DIB, but is prefixed with a BMP file header.) Android's Image class wants RGBA. Hmm. Change-Id: Ie0effef20751e1959644861af358d81538b6d6ea diff --git a/android/experimental/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java b/android/experimental/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java index ac95164..c39741e 100644 --- a/android/experimental/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java +++ b/android/experimental/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java @@ -105,7 +105,7 @@ public class DocumentLoader } } - static void dump(String objectName, Object object) + static void dumpUNOObject(String objectName, Object object) { Log.i(TAG, objectName + " is " + (object != null ? object.toString() : "null")); @@ -128,6 +128,17 @@ public class DocumentLoader Log.i(TAG, " " + t.getTypeName()); } + static void dumpBytes(byte[] image) + { + for (int i = 0; i < 160; i += 16) { + String s = ""; + for (int j = 0; j < 16; j++) + s = s + String.format(" %02x", image[i+j]); + + Log.i(TAG, s); + } + } + @Override public void onCreate(Bundle savedInstanceState) { @@ -207,7 +218,7 @@ public class DocumentLoader xCompLoader.loadComponentFromURL (sUrl, "_blank", 0, loadProps); - dump("oDoc", oDoc); + dumpUNOObject("oDoc", oDoc); // Test stuff, try creating various services, see what types // they offer, stuff that is hard to find out by reading @@ -219,12 +230,12 @@ public class DocumentLoader xCompLoader.loadComponentFromURL ("private:factory/swriter", "_blank", 0, loadProps); - dump("swriter", swriter); + dumpUNOObject("swriter", swriter); Object frameControl = xMCF.createInstanceWithContext ("com.sun.star.frame.FrameControl", xContext); - dump("frameControl", frameControl); + dumpUNOObject("frameControl", frameControl); com.sun.star.awt.XControl control = (com.sun.star.awt.XControl) UnoRuntime.queryInterface(com.sun.star.awt.XControl.class, frameControl); @@ -232,14 +243,14 @@ public class DocumentLoader Object toolkit = xMCF.createInstanceWithContext ("com.sun.star.awt.Toolkit", xContext); - dump("toolkit", toolkit); + dumpUNOObject("toolkit", toolkit); com.sun.star.awt.XToolkit xToolkit = (com.sun.star.awt.XToolkit) UnoRuntime.queryInterface(com.sun.star.awt.XToolkit.class, toolkit); com.sun.star.awt.XDevice device = xToolkit.createScreenCompatibleDevice(1024, 1024); - dump("device", device); + dumpUNOObject("device", device); // I guess the XRenderable thing might be what we want to use, // having the code pretend it is printing? @@ -262,6 +273,14 @@ public class DocumentLoader Log.i(TAG, "getRendererCount: " + renderBabe.getRendererCount(oDoc, renderProps)); renderBabe.render(0, oDoc, renderProps); + + com.sun.star.awt.XBitmap bitmap = device.createBitmap(0, 0, 1024, 1024); + + byte[] image = bitmap.getDIB(); + + Log.i(TAG, "image is " + image.length + " bytes"); + + dumpBytes(image); } } catch (Exception e) { commit d69bcc9979f56ab5dc59b9d10bbc601d38506873 Author: Tor Lillqvist <tlillqv...@suse.com> Date: Wed May 30 20:25:01 2012 +0300 Getting closer, maybe Change-Id: Ifcfdd33631c257d2cf6f54fe0d00444200f48335 diff --git a/android/experimental/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java b/android/experimental/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java index 5a45406..ac95164 100644 --- a/android/experimental/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java +++ b/android/experimental/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java @@ -41,6 +41,70 @@ public class DocumentLoader private static String TAG = "DocumentLoader"; + class MyXController + implements com.sun.star.frame.XController { + + com.sun.star.frame.XModel model; + com.sun.star.frame.XFrame frame; + + public void attachFrame(com.sun.star.frame.XFrame frame) + { + Log.i(TAG, "attachFrame"); + this.frame = frame; + } + + public boolean attachModel(com.sun.star.frame.XModel model) + { + Log.i(TAG, "attachModel"); + this.model = model; + return true; + } + + public boolean suspend(boolean doSuspend) + { + Log.i(TAG, "suspend"); + return false; + } + + public Object getViewData() + { + Log.i(TAG, "getViewData"); + return null; + } + + public void restoreViewData(Object data) + { + Log.i(TAG, "restoreViewData"); + } + + public com.sun.star.frame.XModel getModel() + { + Log.i(TAG, "getModel"); + return model; + } + + public com.sun.star.frame.XFrame getFrame() + { + Log.i(TAG, "getFrame"); + return frame; + } + + public void dispose() + { + Log.i(TAG, "dispose"); + } + + public void addEventListener(com.sun.star.lang.XEventListener listener) + { + Log.i(TAG, "addEventListener"); + } + + public void removeEventListener(com.sun.star.lang.XEventListener listener) + { + Log.i(TAG, "removeEventListener"); + } + } + static void dump(String objectName, Object object) { Log.i(TAG, objectName + " is " + (object != null ? object.toString() : "null")); @@ -170,6 +234,13 @@ public class DocumentLoader dump("toolkit", toolkit); + com.sun.star.awt.XToolkit xToolkit = (com.sun.star.awt.XToolkit) + UnoRuntime.queryInterface(com.sun.star.awt.XToolkit.class, toolkit); + + com.sun.star.awt.XDevice device = xToolkit.createScreenCompatibleDevice(1024, 1024); + + dump("device", device); + // I guess the XRenderable thing might be what we want to use, // having the code pretend it is printing? @@ -177,13 +248,16 @@ public class DocumentLoader UnoRuntime.queryInterface(com.sun.star.view.XRenderable.class, oDoc); com.sun.star.beans.PropertyValue renderProps[] = - new com.sun.star.beans.PropertyValue[1]; + new com.sun.star.beans.PropertyValue[3]; renderProps[0] = new com.sun.star.beans.PropertyValue(); renderProps[0].Name = "IsPrinter"; renderProps[0].Value = new Boolean(true); -// renderProps[1] = new com.sun.star.beans.PropertyValue(); -// renderProps[1].Name = "View"; -// renderProps[1].Value = no idea where to get an XController... + renderProps[1] = new com.sun.star.beans.PropertyValue(); + renderProps[1].Name = "RenderDevice"; + renderProps[1].Value = device; + renderProps[2] = new com.sun.star.beans.PropertyValue(); + renderProps[2].Name = "View"; + renderProps[2].Value = new MyXController(); Log.i(TAG, "getRendererCount: " + renderBabe.getRendererCount(oDoc, renderProps)); commit eceeb15c13644537ed7d78921b6598daecda650a Author: Tor Lillqvist <tlillqv...@suse.com> Date: Wed May 30 16:55:26 2012 +0300 Just bypass completely when cross-compiling Change-Id: I4f3ca66cbba141bc26ae0b4bbd622fe8e3e86674 diff --git a/testtools/Module_testtools.mk b/testtools/Module_testtools.mk index c2e3068..2ae6fed 100644 --- a/testtools/Module_testtools.mk +++ b/testtools/Module_testtools.mk @@ -26,6 +26,8 @@ $(eval $(call gb_Module_Module,testtools)) +ifneq ($(CROSS_COMPILING),YES) + $(eval $(call gb_Module_add_targets,testtools,\ CustomTarget_bridgetest \ InternalUnoApi_bridgetest \ @@ -53,7 +55,6 @@ endif #)) #endif -ifneq ($(CROSS_COMPILING),YES) # FIXME: Mac OSX PPC GCC fails this test!, likely broken UNO bridge. # (is it still relevant?) ifneq ($(COM)$(OS)$(CPU),GCCMACOSXP) @@ -61,6 +62,7 @@ $(eval $(call gb_Module_add_check_targets,testtools,\ CustomTarget_uno_test \ )) endif + endif # vim:set shiftwidth=4 softtabstop=4 expandtab: _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits