summaryrefslogtreecommitdiff
path: root/ios/source
diff options
context:
space:
mode:
authorjan Iversen <jani@libreoffice.org>2017-11-23 08:47:59 +0100
committerjan Iversen <jani@libreoffice.org>2017-11-23 08:53:39 +0100
commited885a3cdbfc4b4d194d40508a29334b9780858f (patch)
treea1f81948f89fe93fd95fc513a300c392ef65a917 /ios/source
parent62da53e52cf141a7cdf8a27e95737a575fbf1696 (diff)
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
Diffstat (limited to 'ios/source')
-rw-r--r--ios/source/LibreOfficeKit.c116
-rw-r--r--ios/source/LibreOfficeKit.h20
2 files changed, 136 insertions, 0 deletions
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 <stdio.h>
+#include <TargetConditionals.h>
+#define LOK_USE_UNSTABLE_API
+#include <LibreOfficeKit/LibreOfficeKitInit.h>
+
+#include <osl/process.h>
+
+//#include <unicode/udata.h>
+//#include <unicode/ucnv.h>
+
+// 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);