Line data Source code
1 : /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : */
9 :
10 : #ifndef INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKIT_H
11 : #define INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKIT_H
12 :
13 : #include <stddef.h>
14 :
15 : #include <LibreOfficeKit/LibreOfficeKitTypes.h>
16 :
17 : #ifdef __cplusplus
18 : extern "C"
19 : {
20 : #endif
21 :
22 : typedef struct _LibreOfficeKit LibreOfficeKit;
23 : typedef struct _LibreOfficeKitClass LibreOfficeKitClass;
24 :
25 : typedef struct _LibreOfficeKitDocument LibreOfficeKitDocument;
26 : typedef struct _LibreOfficeKitDocumentClass LibreOfficeKitDocumentClass;
27 :
28 : // Do we have an extended member in this struct ?
29 : #define LIBREOFFICEKIT_HAS_MEMBER(strct,member,nSize) \
30 : (offsetof(strct, member) < (nSize))
31 :
32 : #define LIBREOFFICEKIT_HAS(pKit,member) LIBREOFFICEKIT_HAS_MEMBER(LibreOfficeKitClass,member,(pKit)->pClass->nSize)
33 :
34 1 : struct _LibreOfficeKit
35 : {
36 : LibreOfficeKitClass* pClass;
37 : };
38 :
39 : struct _LibreOfficeKitClass
40 : {
41 : size_t nSize;
42 :
43 : void (*destroy) (LibreOfficeKit* pThis);
44 :
45 : LibreOfficeKitDocument* (*documentLoad) (LibreOfficeKit* pThis,
46 : const char* pURL);
47 :
48 : char* (*getError) (LibreOfficeKit* pThis);
49 :
50 : LibreOfficeKitDocument* (*documentLoadWithOptions) (LibreOfficeKit* pThis,
51 : const char* pURL,
52 : const char* pOptions);
53 : #ifdef LOK_USE_UNSTABLE_API
54 : void (*registerCallback) (LibreOfficeKit* pThis,
55 : LibreOfficeKitCallback pCallback,
56 : void* pData);
57 : #endif
58 : };
59 :
60 : #define LIBREOFFICEKIT_DOCUMENT_HAS(pDoc,member) LIBREOFFICEKIT_HAS_MEMBER(LibreOfficeKitDocumentClass,member,(pDoc)->pClass->nSize)
61 :
62 2 : struct _LibreOfficeKitDocument
63 : {
64 : LibreOfficeKitDocumentClass* pClass;
65 : };
66 :
67 : struct _LibreOfficeKitDocumentClass
68 : {
69 : size_t nSize;
70 :
71 : void (*destroy) (LibreOfficeKitDocument* pThis);
72 :
73 : int (*saveAs) (LibreOfficeKitDocument* pThis,
74 : const char* pUrl,
75 : const char* pFormat,
76 : const char* pFilterOptions);
77 :
78 : #ifdef LOK_USE_UNSTABLE_API
79 : /// @see lok::Document::getDocumentType().
80 : int (*getDocumentType) (LibreOfficeKitDocument* pThis);
81 :
82 : /// @see lok::Document::getParts().
83 : int (*getParts) (LibreOfficeKitDocument* pThis);
84 :
85 : /// @see lok::Document::getPart().
86 : int (*getPart) (LibreOfficeKitDocument* pThis);
87 :
88 : /// @see lok::Document::setPart().
89 : void (*setPart) (LibreOfficeKitDocument* pThis,
90 : int nPart);
91 :
92 : /// @see lok::Document::getPartName().
93 : char* (*getPartName) (LibreOfficeKitDocument* pThis,
94 : int nPart);
95 :
96 : /** Sets mode of the current part.
97 : *
98 : * @param nMode - element from the LibreOfficeKitPartMode enum.
99 : */
100 : void (*setPartMode) (LibreOfficeKitDocument* pThis,
101 : int nMode);
102 :
103 : /// @see lok::Document::paintTile().
104 : void (*paintTile) (LibreOfficeKitDocument* pThis,
105 : unsigned char* pBuffer,
106 : const int nCanvasWidth,
107 : const int nCanvasHeight,
108 : const int nTilePosX,
109 : const int nTilePosY,
110 : const int nTileWidth,
111 : const int nTileHeight);
112 :
113 : /// @see lok::Document::getDocumentSize().
114 : void (*getDocumentSize) (LibreOfficeKitDocument* pThis,
115 : long* pWidth,
116 : long* pHeight);
117 :
118 : /// @see lok::Document::initializeForRendering().
119 : void (*initializeForRendering) (LibreOfficeKitDocument* pThis);
120 :
121 : void (*registerCallback) (LibreOfficeKitDocument* pThis,
122 : LibreOfficeKitCallback pCallback,
123 : void* pData);
124 :
125 : /// @see lok::Document::postKeyEvent
126 : void (*postKeyEvent) (LibreOfficeKitDocument* pThis,
127 : int nType,
128 : int nCharCode,
129 : int nKeyCode);
130 :
131 : /// @see lok::Document::postMouseEvent
132 : void (*postMouseEvent) (LibreOfficeKitDocument* pThis,
133 : int nType,
134 : int nX,
135 : int nY,
136 : int nCount);
137 :
138 : /// @see lok::Document::postUnoCommand
139 : void (*postUnoCommand) (LibreOfficeKitDocument* pThis,
140 : const char* pCommand,
141 : const char* pArguments);
142 :
143 : /// @see lok::Document::setTextSelection
144 : void (*setTextSelection) (LibreOfficeKitDocument* pThis,
145 : int nType,
146 : int nX,
147 : int nY);
148 :
149 : /// @see lok::Document::setGraphicSelection
150 : void (*setGraphicSelection) (LibreOfficeKitDocument* pThis,
151 : int nType,
152 : int nX,
153 : int nY);
154 :
155 : /// @see lok::Document::resetSelection
156 : void (*resetSelection) (LibreOfficeKitDocument* pThis);
157 : #endif // LOK_USE_UNSTABLE_API
158 : };
159 :
160 : #ifdef __cplusplus
161 : }
162 : #endif
163 :
164 : #endif // INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKIT_H
165 :
166 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|