From ed885a3cdbfc4b4d194d40508a29334b9780858f Mon Sep 17 00:00:00 2001 From: jan Iversen Date: Thu, 23 Nov 2017 08:47:59 +0100 Subject: iOS, do not use different C compilers LibreOfficeKit.c was compiled with an xcode project and not like all other sources. Changed to use clang with same switches as rest of LO. Separated resource generation in own makefile Removed project LibreOfficeKit which was responsible for prelink. Change-Id: Iaf9fbb4b652501af0b7f3643ed3efcc2ed93b611 --- ios/source/LibreOfficeKit.c | 116 ++++++++++++++++++++++++++++++++++++++++++++ ios/source/LibreOfficeKit.h | 20 ++++++++ 2 files changed, 136 insertions(+) create mode 100644 ios/source/LibreOfficeKit.c create mode 100644 ios/source/LibreOfficeKit.h (limited to 'ios/source') diff --git a/ios/source/LibreOfficeKit.c b/ios/source/LibreOfficeKit.c new file mode 100644 index 000000000000..6240f802cf4d --- /dev/null +++ b/ios/source/LibreOfficeKit.c @@ -0,0 +1,116 @@ +// +// This file is part of the LibreOffice project. +// +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +// +#include +#include +#define LOK_USE_UNSTABLE_API +#include + +#include + +//#include +//#include + +// generated by solenv/bin/native-code.py: +#include "native-code.h" + + +// Force reference to libreofficekit_hook +extern __attribute__((used)) void *libreofficekit_hook(const char *); +static __attribute__((used)) void *(*foop)(const char *) = libreofficekit_hook; + +// pointers to our instance +static LibreOfficeKit* kit; +static LibreOfficeKitDocument* document; + + +// Tile variables +static int tileSizeX, tileSizeY, tileMaxY, documentParts; +static double twipsPerXtile, twipsPerYtile; + + + +// Bridge functions to LibreOfficeKit +int BridgeLOkit_Init(const char *path) +{ + char bufUserPath[200]; + strcpy(bufUserPath, path); + strcpy(bufUserPath + strlen(path), "/user"); + + // Initialize LibreOfficeKit + if (!kit) { + kit = lok_init_2(path, bufUserPath); + if (!kit) + return 1; + } + return 0; +} + + + +int BridgeLOkit_Sizing(const int countXtiles, const int countYtiles, + const int pixelsXtile, const int pixelsYtile) +{ + long docWidth, docHeight; + + (void)countXtiles; + (void)countYtiles; + + // Remember for later + tileSizeX = pixelsXtile; + tileSizeY = pixelsYtile; + + // Calculate twips to pixels in X,Y direction + document->pClass->getDocumentSize(document, &docWidth, &docHeight); + twipsPerXtile = docWidth / countXtiles; + double ratio = (double)docHeight / (double)docWidth + 0.05; + int x0 = (int)((ratio - (int)ratio) * 10.0); + int x1 = x0 * countXtiles / 10; + int x2 = (int)ratio; + tileMaxY = x1 + x2; + twipsPerYtile = docHeight / tileMaxY; + documentParts = document->pClass->getParts(document); + return 0; +} + + + +int BridgeLOkit_open(const char *path) +{ + document = kit->pClass->documentLoad(kit, path); + document->pClass->initializeForRendering(document, ""); + return 0; +} + + + +int BridgeLOkit_ClientCommand(const char *input) +{ + (void)input; + return 0; +} + + + +int BridgeLOkit_Hipernate() +{ + //FIXME + // check if document needs to be saved, to avoid data loss + // terminate all threads (basically terminate LOkit) + return 0; +} + + + +int BridgeLOkit_LeaveHipernate() +{ + //FIXME + // restart LOkit + // reload document (it may have been changed by other programs, especially if iCloud + return 0; +} + diff --git a/ios/source/LibreOfficeKit.h b/ios/source/LibreOfficeKit.h new file mode 100644 index 000000000000..3c6498c06854 --- /dev/null +++ b/ios/source/LibreOfficeKit.h @@ -0,0 +1,20 @@ +// +// This file is part of the LibreOffice project. +// +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +// + +// Bridge functions between LibreOfficeKit library and swift application. +// Only functions mentioned here can be used from the application +// The swift compiler uses this header to generate a needed interface +// The functions (LibreOfficeKit.mm) calls functions directly in LibreOffice + +int BridgeLOkit_Init(const char *path); +int BridgeLOkit_Sizing(const int countXtiles, const int countYtiles, + const int pixelsXtile, const int pixelsYtile); +int BridgeLOkit_open(const char *path); +int BridgeLOkit_ClientCommand(const char *input); +int BridgeLOkit_Hipernate(void); +int BridgeLOkit_LeaveHipernate(void); -- cgit v1.2.3