types.h 6.26 KB
Newer Older
Moritz Lipp's avatar
Moritz Lipp committed
1 2 3 4 5
/* See LICENSE file for license and copyright information */

#ifndef TYPES_H
#define TYPES_H

Moritz Lipp's avatar
Moritz Lipp committed
6 7
#include <girara/datastructures.h>

8 9 10 11 12 13 14 15 16 17 18 19 20 21
#include "macros.h"

/**
 * Document
 */
typedef struct zathura_document_s zathura_document_t;
/**
 * Page
 */
typedef struct zathura_page_s zathura_page_t;
/**
 * Zathura
 */
typedef struct zathura_s zathura_t;
Moritz Lipp's avatar
Moritz Lipp committed
22

23 24 25 26 27
/**
 * Plugin manager
 */
typedef struct zathura_plugin_manager_s zathura_plugin_manager_t;

28 29 30 31 32 33 34 35 36 37 38 39 40
/**
 * Error types
 */
typedef enum zathura_plugin_error_e
{
  ZATHURA_ERROR_OK, /**< No error occured */
  ZATHURA_ERROR_UNKNOWN, /**< An unknown error occured */
  ZATHURA_ERROR_OUT_OF_MEMORY, /**< Out of memory */
  ZATHURA_ERROR_NOT_IMPLEMENTED, /**< The called function has not been implemented */
  ZATHURA_ERROR_INVALID_ARGUMENTS, /**< Invalid arguments have been passed */
  ZATHURA_ERROR_INVALID_PASSWORD /**< The provided password is invalid */
} zathura_error_t;

41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
/**
 * Possible information entry types
 */
typedef enum zathura_document_information_type_e
{
  ZATHURA_DOCUMENT_INFORMATION_TITLE, /**< Title of the document */
  ZATHURA_DOCUMENT_INFORMATION_AUTHOR, /**< Author of the document */
  ZATHURA_DOCUMENT_INFORMATION_SUBJECT, /**< Subject of the document */
  ZATHURA_DOCUMENT_INFORMATION_KEYWORDS, /**< Keywords of the document */
  ZATHURA_DOCUMENT_INFORMATION_CREATOR, /**< Creator of the document */
  ZATHURA_DOCUMENT_INFORMATION_PRODUCER, /**< Producer of the document */
  ZATHURA_DOCUMENT_INFORMATION_CREATION_DATE, /**< Creation data */
  ZATHURA_DOCUMENT_INFORMATION_MODIFICATION_DATE, /**< Modification data */
  ZATHURA_DOCUMENT_INFORMATION_OTHER /**< Any other information */
} zathura_document_information_type_t;

Moritz Lipp's avatar
Moritz Lipp committed
57 58 59 60 61
/**
  * Plugin
  */
typedef struct zathura_plugin_s zathura_plugin_t;

62 63 64 65 66 67
/**
 * Document information entry
 *
 * Represents a single entry in the returned list from the \ref
 * zathura_document_get_information function
 */
68
typedef struct zathura_document_information_entry_s zathura_document_information_entry_t;
69

Moritz Lipp's avatar
Moritz Lipp committed
70 71 72 73 74 75 76 77 78 79 80
/**
 * 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;

81 82 83 84 85 86 87
/**
 * Adjust mode
 */
typedef enum zathura_adjust_mode_e
{
  ZATHURA_ADJUST_NONE, /**< No adjustment */
  ZATHURA_ADJUST_BESTFIT, /**< Adjust to best-fit */
88 89
  ZATHURA_ADJUST_WIDTH, /**< Adjust to width */
  ZATHURA_ADJUST_INPUTBAR /**< Focusing the inputbar */
90 91
} zathura_adjust_mode_t;

Moritz Lipp's avatar
Moritz Lipp committed
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
/**
 * 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 */
Moritz Lipp's avatar
Moritz Lipp committed
136
	ZATHURA_LINK_NONE, /**< No action */
Moritz Lipp's avatar
Moritz Lipp committed
137 138 139 140
  ZATHURA_LINK_GOTO_DEST, /**< Links to a page */
  ZATHURA_LINK_GOTO_REMOTE, /**< Links to a page */
  ZATHURA_LINK_URI, /**< Links to an external source */
  ZATHURA_LINK_LAUNCH, /**< Links to an external source */
Moritz Lipp's avatar
Moritz Lipp committed
141
  ZATHURA_LINK_NAMED /**< Links to an external source */
Moritz Lipp's avatar
Moritz Lipp committed
142 143
} zathura_link_type_t;

144
typedef enum zathura_link_destination_type_e
Moritz Lipp's avatar
Moritz Lipp committed
145
{
Moritz Lipp's avatar
Moritz Lipp committed
146 147 148 149 150 151 152 153
	ZATHURA_LINK_DESTINATION_UNKNOWN,
	ZATHURA_LINK_DESTINATION_XYZ,
	ZATHURA_LINK_DESTINATION_FIT,
	ZATHURA_LINK_DESTINATION_FITH,
	ZATHURA_LINK_DESTINATION_FITV,
	ZATHURA_LINK_DESTINATION_FITR,
	ZATHURA_LINK_DESTINATION_FITB,
	ZATHURA_LINK_DESTINATION_FITBH,
154
	ZATHURA_LINK_DESTINATION_FITBV
155
} zathura_link_destination_type_t;
Moritz Lipp's avatar
Moritz Lipp committed
156 157 158

typedef struct zathura_link_target_s
{
159
  zathura_link_destination_type_t destination_type;
Moritz Lipp's avatar
Moritz Lipp committed
160
  char* value; /**< Value */
Moritz Lipp's avatar
Moritz Lipp committed
161 162 163 164 165 166
  unsigned int page_number; /**< Page number */
  double left; /**< Left coordinate */
  double right; /**< Right coordinate */
  double top; /**< Top coordinate */
  double bottom; /**< Bottom coordinate */
  double scale; /**< Scale */
Moritz Lipp's avatar
Moritz Lipp committed
167 168 169 170 171
} zathura_link_target_t;

/**
 * Link
 */
172
typedef struct zathura_link_s zathura_link_t;
Moritz Lipp's avatar
Moritz Lipp committed
173 174 175 176 177 178 179

/**
 * Index element
 */
typedef struct zathura_index_element_s
{
  char* title; /**< Title of the element */
Moritz Lipp's avatar
Moritz Lipp committed
180
  zathura_link_t* link;
Moritz Lipp's avatar
Moritz Lipp committed
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
} 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);

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
/**
 * Creates a list that should be used to store \ref
 * zathura_document_information_entry_t entries
 *
 * @return A list or NULL if an error occured
 */
girara_list_t* zathura_document_information_entry_list_new();

/**
 * Creates a new document information entry
 *
 * @param type The type
 * @param value The value
 *
 * @return A new entry or NULL if an error occured
 */
zathura_document_information_entry_t*
zathura_document_information_entry_new(zathura_document_information_type_t
    type, const char* value);

/**
 * Frees a document information entry
 *
 * @param entry The entry that should be freed
 */
void zathura_document_information_entry_free(zathura_document_information_entry_t* entry);

Moritz Lipp's avatar
Moritz Lipp committed
243
#endif // TYPES_H