2012-03-27 13:30:04 +02:00
|
|
|
/* See LICENSE file for license and copyright information */
|
|
|
|
|
|
|
|
#ifndef PLUGIN_API_H
|
|
|
|
#define PLUGIN_API_H
|
|
|
|
|
|
|
|
#include "page.h"
|
|
|
|
#include "document.h"
|
|
|
|
#include "version.h"
|
|
|
|
|
2012-03-27 19:34:06 +02:00
|
|
|
typedef struct zathura_plugin_functions_s zathura_plugin_functions_t;
|
2012-03-27 13:30:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Functions register function
|
|
|
|
*
|
|
|
|
* @param functions The functions struct
|
|
|
|
*/
|
2012-03-27 19:34:06 +02:00
|
|
|
typedef void (*zathura_plugin_register_function_t)(zathura_plugin_functions_t* functions);
|
2012-03-27 13:30:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the functions register function of the plugin
|
|
|
|
*
|
|
|
|
* @param plugin The plugin
|
2012-03-27 22:01:00 +02:00
|
|
|
* @param register_function The register function that registers the document
|
|
|
|
* functions
|
2012-03-27 13:30:04 +02:00
|
|
|
*/
|
2012-03-27 22:01:00 +02:00
|
|
|
void zathura_plugin_set_register_functions_function(zathura_plugin_t* plugin,
|
|
|
|
zathura_plugin_register_function_t register_function);
|
2012-03-27 13:30:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the functions register function of the plugin
|
|
|
|
*
|
|
|
|
* @param plugin The plugin
|
2012-03-27 22:01:00 +02:00
|
|
|
* @param mime_type The mime type that should be added
|
2012-03-27 13:30:04 +02:00
|
|
|
*/
|
|
|
|
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
|
|
|
|
*/
|
2012-03-27 19:34:06 +02:00
|
|
|
#define ZATHURA_PLUGIN_REGISTER(plugin_name, major, minor, rev, register_functions, mimetypes) \
|
2012-03-27 21:59:35 +02:00
|
|
|
unsigned int zathura_plugin_version_major() { return major; } \
|
|
|
|
unsigned int zathura_plugin_version_minor() { return minor; } \
|
|
|
|
unsigned int zathura_plugin_version_revision() { return rev; } \
|
|
|
|
unsigned int zathura_plugin_api_version() { return ZATHURA_API_VERSION; } \
|
|
|
|
unsigned int zathura_plugin_abi_version() { return ZATHURA_ABI_VERSION; } \
|
2012-03-27 13:30:04 +02:00
|
|
|
\
|
2012-03-27 19:34:06 +02:00
|
|
|
void zathura_plugin_register(zathura_plugin_t* plugin) \
|
2012-03-27 13:30:04 +02:00
|
|
|
{ \
|
|
|
|
if (plugin == NULL) { \
|
|
|
|
return; \
|
|
|
|
} \
|
|
|
|
zathura_plugin_set_register_functions_function(plugin, register_functions); \
|
|
|
|
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]); \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
|
2012-03-27 19:34:06 +02:00
|
|
|
#define ZATHURA_PLUGIN_MIMETYPES(...) __VA_ARGS__
|
2012-03-27 13:30:04 +02:00
|
|
|
|
2012-03-27 19:34:06 +02:00
|
|
|
struct zathura_plugin_functions_s
|
2012-03-27 13:30:04 +02:00
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Opens a document
|
|
|
|
*/
|
|
|
|
zathura_error_t (*document_open)(zathura_document_t* document);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Frees the document
|
|
|
|
*/
|
2012-03-27 18:47:18 +02:00
|
|
|
zathura_error_t (*document_free)(zathura_document_t* document, void* data);
|
2012-03-27 13:30:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Generates the document index
|
|
|
|
*/
|
2012-03-27 18:47:18 +02:00
|
|
|
girara_tree_node_t* (*document_index_generate)(zathura_document_t* document, void* data, zathura_error_t* error);
|
2012-03-27 13:30:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Save the document
|
|
|
|
*/
|
2012-03-27 18:47:18 +02:00
|
|
|
zathura_error_t (*document_save_as)(zathura_document_t* document, void* data, const char* path);
|
2012-03-27 13:30:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Get list of attachments
|
|
|
|
*/
|
2012-03-27 18:47:18 +02:00
|
|
|
girara_list_t* (*document_attachments_get)(zathura_document_t* document, void* data, zathura_error_t* error);
|
2012-03-27 13:30:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Save attachment to a file
|
|
|
|
*/
|
2012-03-27 18:47:18 +02:00
|
|
|
zathura_error_t (*document_attachment_save)(zathura_document_t* document, void* data, const char* attachment, const char* file);
|
2012-03-27 13:30:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Get document information
|
|
|
|
*/
|
2012-03-30 18:24:00 +02:00
|
|
|
girara_list_t* (*document_get_information)(zathura_document_t* document, void* data, zathura_error_t* error);
|
2012-03-27 13:30:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the page object
|
|
|
|
*/
|
|
|
|
zathura_error_t (*page_init)(zathura_page_t* page);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Free page
|
|
|
|
*/
|
2012-03-27 18:47:18 +02:00
|
|
|
zathura_error_t (*page_clear)(zathura_page_t* page, void* data);
|
2012-03-27 13:30:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Search text
|
|
|
|
*/
|
2012-03-27 18:47:18 +02:00
|
|
|
girara_list_t* (*page_search_text)(zathura_page_t* page, void* data, const char* text, zathura_error_t* error);
|
2012-03-27 13:30:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Get links on a page
|
|
|
|
*/
|
2012-03-27 18:47:18 +02:00
|
|
|
girara_list_t* (*page_links_get)(zathura_page_t* page, void* data, zathura_error_t* error);
|
2012-03-27 13:30:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Get form fields
|
|
|
|
*/
|
2012-03-27 18:47:18 +02:00
|
|
|
girara_list_t* (*page_form_fields_get)(zathura_page_t* page, void* data, zathura_error_t* error);
|
2012-03-27 13:30:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Get list of images
|
|
|
|
*/
|
2012-03-27 18:47:18 +02:00
|
|
|
girara_list_t* (*page_images_get)(zathura_page_t* page, void* data, zathura_error_t* error);
|
2012-03-27 13:30:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the image
|
|
|
|
*/
|
2012-03-27 18:47:18 +02:00
|
|
|
cairo_surface_t* (*page_image_get_cairo)(zathura_page_t* page, void* data, zathura_image_t* image, zathura_error_t* error);
|
2012-03-27 13:30:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Get text for selection
|
|
|
|
*/
|
2012-03-27 18:47:18 +02:00
|
|
|
char* (*page_get_text)(zathura_page_t* page, void* data, zathura_rectangle_t rectangle, zathura_error_t* error);
|
2012-03-27 13:30:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Renders the page
|
|
|
|
*/
|
2012-03-27 18:47:18 +02:00
|
|
|
zathura_image_buffer_t* (*page_render)(zathura_page_t* page, void* data, zathura_error_t* error);
|
2012-03-27 13:30:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Renders the page
|
|
|
|
*/
|
2012-03-27 18:47:18 +02:00
|
|
|
zathura_error_t (*page_render_cairo)(zathura_page_t* page, void* data, cairo_t* cairo, bool printing);
|
2012-03-27 13:30:04 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif // PLUGIN_API_H
|