mirror of
https://git.pwmt.org/pwmt/zathura.git
synced 2024-12-29 15:45:59 +01:00
172 lines
3.8 KiB
C
172 lines
3.8 KiB
C
/* See LICENSE file for license and copyright information */
|
|
|
|
#ifndef TYPES_H
|
|
#define TYPES_H
|
|
|
|
#include "zathura.h"
|
|
|
|
/**
|
|
* Image buffer
|
|
*/
|
|
typedef struct zathura_image_buffer_s
|
|
{
|
|
unsigned char* data; /**< Image buffer data */
|
|
unsigned int height; /**< Height of the image */
|
|
unsigned int width; /**< Width of the image */
|
|
unsigned int rowstride; /**< Rowstride of the image */
|
|
} zathura_image_buffer_t;
|
|
|
|
/**
|
|
* Creates an image buffer
|
|
*
|
|
* @param width Width of the image stored in the buffer
|
|
* @param height Height of the image stored in the buffer
|
|
* @return Image buffer or NULL if an error occured
|
|
*/
|
|
zathura_image_buffer_t* zathura_image_buffer_create(unsigned int width, unsigned int height);
|
|
|
|
/**
|
|
* Frees the image buffer
|
|
*
|
|
* @param buffer The image buffer
|
|
*/
|
|
void zathura_image_buffer_free(zathura_image_buffer_t* buffer);
|
|
|
|
/**
|
|
* Rectangle structure.
|
|
* The coordinate system has its origin in the left upper corner. The x axes
|
|
* goes to the right, the y access goes down.
|
|
*/
|
|
typedef struct zathura_rectangle_s
|
|
{
|
|
double x1; /**< X coordinate of point 1 */
|
|
double y1; /**< Y coordinate of point 1 */
|
|
double x2; /**< X coordinate of point 2 */
|
|
double y2; /**< Y coordinate of point 2 */
|
|
} zathura_rectangle_t;
|
|
|
|
/**
|
|
* Image structure
|
|
*/
|
|
typedef struct zathura_image_s
|
|
{
|
|
zathura_rectangle_t position; /**< Coordinates of the image */
|
|
void* data; /**< Custom data of the plugin */
|
|
} zathura_image_t;
|
|
|
|
/**
|
|
* Possible link types
|
|
*/
|
|
typedef enum zathura_link_type_e
|
|
{
|
|
ZATHURA_LINK_INVALID, /**< Invalid type */
|
|
ZATHURA_LINK_TO_PAGE, /**< Links to a page */
|
|
ZATHURA_LINK_EXTERNAL, /**< Links to an external source */
|
|
} zathura_link_type_t;
|
|
|
|
typedef union zathura_link_target_u
|
|
{
|
|
unsigned int page_number; /**< Page number */
|
|
char* uri; /**< Value */
|
|
} zathura_link_target_t;
|
|
|
|
/**
|
|
* Link
|
|
*/
|
|
typedef struct zathura_link_s
|
|
{
|
|
zathura_rectangle_t position; /**< Position of the link */
|
|
zathura_link_type_t type; /**< Link type */
|
|
zathura_link_target_t target; /**< Link target */
|
|
} zathura_link_t;
|
|
|
|
/**
|
|
* Index element
|
|
*/
|
|
typedef struct zathura_index_element_s
|
|
{
|
|
char* title; /**< Title of the element */
|
|
zathura_link_type_t type; /**< Type */
|
|
union
|
|
{
|
|
unsigned int page_number; /**< Page number */
|
|
char* uri; /**< Uri */
|
|
} target;
|
|
} zathura_index_element_t;
|
|
|
|
/**
|
|
* Form type
|
|
*/
|
|
typedef enum zathura_form_type_e
|
|
{
|
|
ZATHURA_FORM_CHECKBOX, /**< Checkbox */
|
|
ZATHURA_FORM_TEXTFIELD /**< Textfield */
|
|
} zathura_form_type_t;
|
|
|
|
/**
|
|
* Form element
|
|
*/
|
|
typedef struct zathura_form_s
|
|
{
|
|
zathura_rectangle_t position; /**< Position */
|
|
zathura_form_type_t type; /**< Type */
|
|
} zathura_form_t;
|
|
|
|
/**
|
|
* Create new index element
|
|
*
|
|
* @param title Title of the index element
|
|
* @return Index element
|
|
*/
|
|
zathura_index_element_t* zathura_index_element_new(const char* title);
|
|
|
|
/**
|
|
* Free index element
|
|
*
|
|
* @param index The index element
|
|
*/
|
|
void zathura_index_element_free(zathura_index_element_t* index);
|
|
|
|
/**
|
|
* Creates a new zathura link
|
|
*
|
|
* @param type Type of the link
|
|
* @param position Position of the link
|
|
* @param target Target
|
|
* @return New zathura link
|
|
*/
|
|
zathura_link_t* zathura_link_new(zathura_link_type_t type, zathura_rectangle_t position,
|
|
zathura_link_target_t target);
|
|
|
|
/**
|
|
* Free link
|
|
*
|
|
* @param link The link
|
|
*/
|
|
void zathura_link_free(zathura_link_t* link);
|
|
|
|
/**
|
|
* Returns the type of the link
|
|
*
|
|
* @param link The link
|
|
* @return The target type of the link
|
|
*/
|
|
zathura_link_type_t zathura_link_get_type(zathura_link_t* link);
|
|
|
|
/**
|
|
* Returns the position of the link
|
|
*
|
|
* @param link The link
|
|
* @return The position of the link
|
|
*/
|
|
zathura_rectangle_t zathura_link_get_position(zathura_link_t* link);
|
|
|
|
/**
|
|
* The target value of the link
|
|
*
|
|
* @param link The link
|
|
* @return Returns the target of the link (depends on the link type)
|
|
*/
|
|
zathura_link_target_t zathura_link_get_target(zathura_link_t* link);
|
|
|
|
#endif // TYPES_H
|