[Libreoffice-commits] core.git: Branch 'feature/tiled-editing' - libreofficekit/README

Miklos Vajna vmiklos at collabora.co.uk
Fri Mar 13 01:37:59 PDT 2015


 libreofficekit/README |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

New commits:
commit e1cb66ee99844868eda043d2df0f9fed416bc062
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Fri Mar 13 09:37:17 2015 +0100

    libreofficekit: add overview of tiled editing to README
    
    Change-Id: Ie4e28f9315c9de2062d63c5eb5e9c7481c719cef

diff --git a/libreofficekit/README b/libreofficekit/README
index eb29106..22693ce 100644
--- a/libreofficekit/README
+++ b/libreofficekit/README
@@ -38,6 +38,54 @@ colourspace (further alternatives could feasibly be implemented as needed).
 Scanlines are ordered top-down (whereas LibreOffice will internally default
 to bottom-up).
 
+Tiled Editing
+-------------
+
+On top of the tiled rendering API, a set of new methods have been added to the
+lok::Document class to allow basic editing, too. Communication between the LOK
+client and LibreOffice is a two-way channel. The client can initiate an action
+by calling the above mentioned methods. The most important methods for the
+client -> LibreOffice communication are:
+
+- initializeForRendering(), expected to be called right after
+  lok::Office::documentLoad() returned a lok::Document*.
+- postKeyEvent(), expected to be called when the user provides input on the
+  (soft-)keyboard.
+- postMouseEvent(), expected to be called when the user generated a touch or
+  mouse event.
+
+In general, all coordinates are always in absolute twips (20th of a point, or:
+1" = 1440 twips). See lok::Document in LibreOfficeKit.hxx for a full list of
+methods and their documentation.
+
+The other way around (LibreOffice -> LOK client) is implemented using a
+callback. A LOK client can register a callback using the registerCallback()
+method. Whenever editing requires some action on the client side, a callback
+event is emitted. The callback types are described using the
+LibreOfficeKitCallbackType enumeration in LibreOfficeKitEnums.h, the callback
+function signature itself is provided by the LibreOfficeKitCallback typedef in
+LibreOfficeKitTypes.h. The most important callback types:
+
+- LOK_CALLBACK_INVALIDATE_TILES: drop all tiles cached on client-side that
+  intersect with the provided rectangle
+- LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR: need to set the position and/or the
+  size of the cursor
+- LOK_CALLBACK_TEXT_SELECTION: need to adjust the selection overlay provided
+  by the client as the set of rectangles describing the selection overlay
+  changed
+
+There are currently two known LOK clients supporting tiled editing:
+
+- gtktiledviewer (see below), which allows testing the LOK core implementation
+  on (desktop) Linux
+- (LibreOffice on) Android
+
+Core has next to no idea what is the LOK client, so for effective development,
+it's recommended that the core part is developed against gtktiledviewer, and
+once a feature works there, then implement the Android part, with is slower
+development iteration (slow uploading to the device, the need to link all
+object files into a single .so, etc).
+
 LibreOfficeKitGtk
 *****************
 


More information about the Libreoffice-commits mailing list