-
Notifications
You must be signed in to change notification settings - Fork 0
/
plugin-api.h
253 lines (207 loc) · 6.59 KB
/
plugin-api.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
/* See LICENSE file for license and copyright information */
#ifndef PLUGIN_API_H
#define PLUGIN_API_H
#include "page.h"
#include "document.h"
#include "links.h"
#include "version.h"
typedef struct zathura_plugin_functions_s zathura_plugin_functions_t;
/**
* Functions register function
*
* @param functions The functions struct
*/
typedef void (*zathura_plugin_register_function_t)(zathura_plugin_functions_t* functions);
/**
* Sets the functions register function of the plugin
*
* @param plugin The plugin
* @param register_function The register function that registers the document
* functions
*/
void zathura_plugin_set_register_functions_function(zathura_plugin_t* plugin,
zathura_plugin_register_function_t register_function);
/**
* Sets the name of the plugin
*
* @param plugin The plugin
* @param name The name of the plugin
*/
void zathura_plugin_set_name(zathura_plugin_t* plugin, const char* name);
/**
* Sets the functions register function of the plugin
*
* @param plugin The plugin
* @param mime_type The mime type that should be added
*/
void zathura_plugin_add_mimetype(zathura_plugin_t* plugin, const char* mime_type);
/**
* Register a plugin.
*
* @param plugin_name the name of the plugin
* @param major the plugin's major version
* @param minor the plugin's minor version
* @param rev the plugin's revision
* @param register_functions function to register the plugin's document functions
* @param mimetypes a char array of mime types supported by the plugin
*/
#define ZATHURA_PLUGIN_REGISTER(plugin_name, major, minor, rev, register_functions, mimetypes) \
unsigned int zathura_plugin_version_major(void) { return major; } \
unsigned int zathura_plugin_version_minor(void) { return minor; } \
unsigned int zathura_plugin_version_revision(void) { return rev; } \
unsigned int zathura_plugin_api_version(void) { return ZATHURA_API_VERSION; } \
unsigned int zathura_plugin_abi_version(void) { return ZATHURA_ABI_VERSION; } \
\
void zathura_plugin_register(zathura_plugin_t* plugin) \
{ \
if (plugin == NULL) { \
return; \
} \
zathura_plugin_set_register_functions_function(plugin, register_functions); \
zathura_plugin_set_name(plugin, plugin_name); \
static const char* mime_types[] = mimetypes; \
for (size_t s = 0; s != sizeof(mime_types) / sizeof(const char*); ++s) { \
zathura_plugin_add_mimetype(plugin, mime_types[s]); \
} \
} \
#define ZATHURA_PLUGIN_MIMETYPES(...) __VA_ARGS__
/**
* Opens a document
*/
typedef zathura_error_t (*zathura_plugin_document_open_t)(zathura_document_t* document);
/**
* Frees the document
*/
typedef zathura_error_t (*zathura_plugin_document_free_t)(zathura_document_t* document, void* data);
/**
* Generates the document index
*/
typedef girara_tree_node_t* (*zathura_plugin_document_index_generate_t)(zathura_document_t* document, void* data, zathura_error_t* error);
/**
* Save the document
*/
typedef zathura_error_t (*zathura_plugin_document_save_as_t)(zathura_document_t* document, void* data, const char* path);
/**
* Get list of attachments
*/
typedef girara_list_t* (*zathura_plugin_document_attachments_get_t)(zathura_document_t* document, void* data, zathura_error_t* error);
/**
* Save attachment to a file
*/
typedef zathura_error_t (*zathura_plugin_document_attachment_save_t)(zathura_document_t* document, void* data, const char* attachment, const char* file);
/**
* Get document information
*/
typedef girara_list_t* (*zathura_plugin_document_get_information_t)(zathura_document_t* document, void* data, zathura_error_t* error);
/**
* Gets the page object
*/
typedef zathura_error_t (*zathura_plugin_page_init_t)(zathura_page_t* page);
/**
* Free page
*/
typedef zathura_error_t (*zathura_plugin_page_clear_t)(zathura_page_t* page, void* data);
/**
* Search text
*/
typedef girara_list_t* (*zathura_plugin_page_search_text_t)(zathura_page_t* page, void* data, const char* text, zathura_error_t* error);
/**
* Get links on a page
*/
typedef girara_list_t* (*zathura_plugin_page_links_get_t)(zathura_page_t* page, void* data, zathura_error_t* error);
/**
* Get form fields
*/
typedef girara_list_t* (*zathura_plugin_page_form_fields_get_t)(zathura_page_t* page, void* data, zathura_error_t* error);
/**
* Get list of images
*/
typedef girara_list_t* (*zathura_plugin_page_images_get_t)(zathura_page_t* page, void* data, zathura_error_t* error);
/**
* Get the image
*/
typedef cairo_surface_t* (*zathura_plugin_page_image_get_cairo_t)(zathura_page_t* page, void* data, zathura_image_t* image, zathura_error_t* error);
/**
* Get text for selection
*/
typedef char* (*zathura_plugin_page_get_text_t)(zathura_page_t* page, void* data, zathura_rectangle_t rectangle, zathura_error_t* error);
/**
* Renders the page
*/
typedef zathura_image_buffer_t* (*zathura_plugin_page_render_t)(zathura_page_t* page, void* data, zathura_error_t* error);
/**
* Renders the page
*/
typedef zathura_error_t (*zathura_plugin_page_render_cairo_t)(zathura_page_t* page, void* data, cairo_t* cairo, bool printing);
struct zathura_plugin_functions_s
{
/**
* Opens a document
*/
zathura_plugin_document_open_t document_open;
/**
* Frees the document
*/
zathura_plugin_document_free_t document_free;
/**
* Generates the document index
*/
zathura_plugin_document_index_generate_t document_index_generate;
/**
* Save the document
*/
zathura_plugin_document_save_as_t document_save_as;
/**
* Get list of attachments
*/
zathura_plugin_document_attachments_get_t document_attachments_get;
/**
* Save attachment to a file
*/
zathura_plugin_document_attachment_save_t document_attachment_save;
/**
* Get document information
*/
zathura_plugin_document_get_information_t document_get_information;
/**
* Gets the page object
*/
zathura_plugin_page_init_t page_init;
/**
* Free page
*/
zathura_plugin_page_clear_t page_clear;
/**
* Search text
*/
zathura_plugin_page_search_text_t page_search_text;
/**
* Get links on a page
*/
zathura_plugin_page_links_get_t page_links_get;
/**
* Get form fields
*/
zathura_plugin_page_form_fields_get_t page_form_fields_get;
/**
* Get list of images
*/
zathura_plugin_page_images_get_t page_images_get;
/**
* Get the image
*/
zathura_plugin_page_image_get_cairo_t page_image_get_cairo;
/**
* Get text for selection
*/
zathura_plugin_page_get_text_t page_get_text;
/**
* Renders the page
*/
zathura_plugin_page_render_t page_render;
/**
* Renders the page
*/
zathura_plugin_page_render_cairo_t page_render_cairo;
};
#endif // PLUGIN_API_H