types.h 6.83 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
#include "macros.h"

/**
 * Document
 */
typedef struct zathura_document_s zathura_document_t;
/**
 * Page
 */
typedef struct zathura_page_s zathura_page_t;
18
19
20
21
22
/**
 * Page widget
 */
typedef struct zathura_page_widget_s ZathuraPage;
typedef struct zathura_page_widget_class_s ZathuraPageClass;
23
24
25
26
/**
 * Zathura
 */
typedef struct zathura_s zathura_t;
Moritz Lipp's avatar
Moritz Lipp committed
27

28
29
30
31
32
/**
 * Plugin manager
 */
typedef struct zathura_plugin_manager_s zathura_plugin_manager_t;

33
34
35
/**
 * Renderer
 */
36
typedef struct zathura_renderer_s ZathuraRenderer;
37

38
/**
Sebastian Ramacher's avatar
Sebastian Ramacher committed
39
 * D-Bus manager
40
 */
Sebastian Ramacher's avatar
Sebastian Ramacher committed
41
typedef struct zathura_dbus_s ZathuraDbus;
42

43
44
45
46
47
/**
 * Error types
 */
typedef enum zathura_plugin_error_e
{
48
49
  ZATHURA_ERROR_OK, /**< No error occurred */
  ZATHURA_ERROR_UNKNOWN, /**< An unknown error occurred */
50
51
52
53
54
55
  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;

56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/**
 * 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
72
73
74
75
76
/**
  * Plugin
  */
typedef struct zathura_plugin_s zathura_plugin_t;

77
78
79
80
81
82
/**
 * Document information entry
 *
 * Represents a single entry in the returned list from the \ref
 * zathura_document_get_information function
 */
83
typedef struct zathura_document_information_entry_s zathura_document_information_entry_t;
84

Moritz Lipp's avatar
Moritz Lipp committed
85
86
87
88
89
90
91
92
93
94
95
/**
 * 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;

96
97
98
99
100
101
102
/**
 * Adjust mode
 */
typedef enum zathura_adjust_mode_e
{
  ZATHURA_ADJUST_NONE, /**< No adjustment */
  ZATHURA_ADJUST_BESTFIT, /**< Adjust to best-fit */
103
  ZATHURA_ADJUST_WIDTH, /**< Adjust to width */
104
105
  ZATHURA_ADJUST_INPUTBAR, /**< Focusing the inputbar */
  ZATHURA_ADJUST_MODE_NUMBER /**< Number of adjust modes */
106
107
} zathura_adjust_mode_t;

Moritz Lipp's avatar
Moritz Lipp committed
108
109
110
111
112
/**
 * Creates an image buffer
 *
 * @param width Width of the image stored in the buffer
 * @param height Height of the image stored in the buffer
113
 * @return Image buffer or NULL if an error occurred
Moritz Lipp's avatar
Moritz Lipp committed
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
 */
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 */
152
  ZATHURA_LINK_NONE, /**< No action */
Moritz Lipp's avatar
Moritz Lipp committed
153
154
155
156
  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
157
  ZATHURA_LINK_NAMED /**< Links to an external source */
Moritz Lipp's avatar
Moritz Lipp committed
158
159
} zathura_link_type_t;

160
typedef enum zathura_link_destination_type_e
Moritz Lipp's avatar
Moritz Lipp committed
161
{
162
163
164
165
166
167
168
169
170
  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,
  ZATHURA_LINK_DESTINATION_FITBV
171
} zathura_link_destination_type_t;
Moritz Lipp's avatar
Moritz Lipp committed
172
173
174

typedef struct zathura_link_target_s
{
175
  zathura_link_destination_type_t destination_type;
Moritz Lipp's avatar
Moritz Lipp committed
176
  char* value; /**< Value */
Moritz Lipp's avatar
Moritz Lipp committed
177
178
179
180
181
182
  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
183
184
185
186
187
} zathura_link_target_t;

/**
 * Link
 */
188
typedef struct zathura_link_s zathura_link_t;
Moritz Lipp's avatar
Moritz Lipp committed
189
190
191
192
193
194
195

/**
 * Index element
 */
typedef struct zathura_index_element_s
{
  char* title; /**< Title of the element */
Moritz Lipp's avatar
Moritz Lipp committed
196
  zathura_link_t* link;
Moritz Lipp's avatar
Moritz Lipp committed
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
} 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;

217
218
219
220
221
222
223
224
225
226
/**
 * Jump
 */
typedef struct zathura_jump_s
{
  unsigned int page;
  double x;
  double y;
} zathura_jump_t;

Moritz Lipp's avatar
Moritz Lipp committed
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
/**
 * 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);

242
243
244
245
/**
 * Creates a list that should be used to store \ref
 * zathura_document_information_entry_t entries
 *
246
 * @return A list or NULL if an error occurred
247
248
249
250
251
252
253
254
255
 */
girara_list_t* zathura_document_information_entry_list_new();

/**
 * Creates a new document information entry
 *
 * @param type The type
 * @param value The value
 *
256
 * @return A new entry or NULL if an error occurred
257
258
259
260
261
262
263
264
265
266
267
268
 */
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);

269
270
271
272
273
/**
 * Context for MIME type detection
 */
typedef struct zathura_content_type_context_s zathura_content_type_context_t;

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