LibreOfficeKit ************** LibreOfficeKit can be used for accessing LibreOffice functionality through C/C++, without any need to use UNO. For now it only offers document conversion (in addition to an experimental tiled rendering API). Integrating LOK into other software ----------------------------------- LOK functionality can be accessed by including LibreOfficeKit.h[xx] in your program. LOK initialisation (lok_init) requires the inclusion of LibreOfficeKitInit.h in your program. If you use the C++ LibreOfficeKit.hxx header, it already includes LibreOfficeKitInit.h for you. (LibreOfficeKit.hxx is a simple and fully inlined C++ wrapper for the same functionality as in LibreOfficeKit.h.) An example program can be seen on: https://gitlab.com/ojwb/lloconv Tiled Rendering --------------- To use LOK Tiled Rendering you will need the following before the LOK includes: #define LOK_USE_UNSTABLE_API (This must be define before ANY LOK header, i.e. including the Init header.) Currently only bitmap-buffer rendering is supported, with a 32-bit BGRA colorspace (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 its slower development iteration (slow uploading to the device, the need to link all object files into a single .so, etc). * Debugging with gdb and gtktiledviewer To run gtktiledviewer: bin/run gtktiledviewer --lo-path=$PWD/instdir/program path/to/test.odt To receive all incoming events from core use G_MESSAGES_DEBUG=all G_MESSAGES_DEBUG=all bin/run gtktiledviewer --lo-path=$PWD/instdir/program ../test.odt To debug with gdb: export LO_TRACE='gdb --tui --args' before bin/run, this will run gtktiledviewer in the debugger instead. LibreOfficeKitGtk ***************** Currently consists of only a very basic GTK+ document viewer widget. The widget uses g_info() instead of SAL_INFO(), use the 'G_MESSAGES_DEBUG=all' environment variable to display those messages. ora/libreoffice-7-5+backports'>distro/collabora/libreoffice-7-5+backports LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff
path: root/jvmfwk
AgeCommit message (Expand)Author
2019-10-24Introduce OStringCharStephan Bergmann
2019-10-17Remove some memset callsMike Kaganski
2019-10-17Rename OUStringLiteral1 to OUStringCharStephan Bergmann
2019-10-14loplugin:stringadd look for unnecessary temporariesNoel Grandin
2019-10-01loplugin:stringadd in helpcompiler..ooxNoel Grandin
2019-08-12Fix typosAndrea Gelmini
2019-08-04Fix typoAndrea Gelmini
2019-07-31Improved loplugin:stringconstant (now that GCC 7 supports it): jvmfwkStephan Bergmann
2019-07-29Avoid memcpy nonnull issueStephan Bergmann
2019-07-29loplugin:sequentialassignNoel Grandin
2019-07-28loplugin:oncevarNoel Grandin
2019-07-26Bump Java baseline to Java 8Stephan Bergmann
2019-06-17simplify codeStephan Bergmann
2019-06-11Fix swapping of vector elementsStephan Bergmann
2019-04-27osl/diagnose.h and diagnostics.h are used when OSL_DEBUG_LEVEL >= 2Tomoyuki Kubota
2019-04-26tdf#42949 Fix IWYU warnings in jvmfwk/ & jvmaccess/Gabor Kelemen
2019-04-15improve loplugin simplifyconstructNoel Grandin
2019-04-13loplugin:sequentialassign in embeddedobj..l10ntoolsNoel Grandin
2019-04-12loplugin:unusedmethodsNoel Grandin
2019-04-09tdf#124503: Support JRE installations with unknown java.vendor propertyStephan Bergmann
2019-03-31tdf#120703 PVS: Silence V575 warningsMike Kaganski
2019-03-26Note when javavendors_*.xml <updated> should be updatedStephan Bergmann
2019-03-18Index is not needed for single getToken callMatteo Casalin
2019-02-24loplugin:unusedfields in helpcompiler..jvmfwkNoel Grandin
2019-02-13Javavendors: Set minimum version to 1.6Samuel Mehrbrodt
2019-02-09loplugin:indentation in jvmfwk..lotuswordproNoel Grandin
2019-02-04Get rid of some macrosStephan Bergmann
2019-02-04Support Amazon CorrettoMike Kaganski
2019-01-22Silence bogus -Werror=clobbered (GCC 7 --enable-optimized)Stephan Bergmann
2019-01-22Support AdoptOpenJDKhimajin100000
2018-12-08Remove obsolete SAL_FALLTHROUGH completelyStephan Bergmann
2018-11-29Rename Mac OS X to official name macOS in comments and documentationBartosz Kosiorek
2018-11-25tdf#120703 PVS: V560 A part of conditional expression is always true/falseMike Kaganski
2018-11-10tdf#120703 PVS: V547 Expression is always true/falseMike Kaganski
2018-11-02fix signatures of deleted copy/assign operatorsNoel Grandin
2018-10-27tdf#120703 PVS: V530 The return value of function is required to be utilizedMike Kaganski
2018-10-23clang-tidy performance-unnecessary-copy-init in idl..reportdesignNoel Grandin
2018-10-22loplugin:staticvar in variousNoel Grandin
2018-10-19clang-tidy readability-container-size-emptyNoel Grandin
2018-10-14Remove useless constructor and destructorArnaud Versini
2018-09-24loplugin:external (clang-cl)Stephan Bergmann
2018-09-17New loplugin:externalStephan Bergmann
2018-08-29Replace find_if with proper quantifier algorithmsArkadiy Illarionov
2018-08-06Add missing sal/log.hxx headersGabor Kelemen
2018-07-30Add missing sal/log.hxx headersGabor Kelemen
2018-07-26jvmfwk: avoid -Werror=deprecated-copy (GCC trunk towards GCC 9)Stephan Bergmann
2018-06-26tdf#96099 Remove some trivial container iterator typedefsArkadiy Illarionov