1#![allow(unused)]
2
3use std::mem;
4
5pub const FZ_MAX_COLORS: usize = 32;
6pub const FZ_VERSION: &str = "1.27.0";
7
8pub const FZ_META_INFO_AUTHOR: &str = "info:Author";
9pub const FZ_META_INFO_TITLE: &str = "info:Title";
10
11pub const FZ_TEXT_PRESERVE_LIGATURES: libc::c_int = 1;
12pub const FZ_TEXT_PRESERVE_WHITESPACE: libc::c_int = 2;
13pub const FZ_TEXT_PRESERVE_IMAGES: libc::c_int = 4;
14pub const FZ_TEXT_INHIBIT_SPACES: libc::c_int = 8;
15pub const FZ_TEXT_DEHYPHENATE: libc::c_int = 16;
16pub const FZ_TEXT_PRESERVE_SPANS: libc::c_int = 32;
17pub const FZ_TEXT_CLIP: libc::c_int = 64;
18pub const FZ_TEXT_CLIP_RECT: libc::c_int = 1 << 17;
19pub const FZ_TEXT_COLLECT_STRUCTURE: libc::c_int = 256;
20pub const FZ_TEXT_COLLECT_VECTORS: libc::c_int = 1024;
21pub const FZ_TEXT_ACCURATE_BBOXES: libc::c_int = 512;
22pub const FZ_TEXT_ACCURATE_ASCENDERS: libc::c_int = 1 << 18;
23pub const FZ_TEXT_ACCURATE_SIDE_BEARINGS: libc::c_int = 1 << 19;
24pub const FZ_TEXT_IGNORE_ACTUALTEXT: libc::c_int = 2048;
25pub const FZ_TEXT_SEGMENT: libc::c_int = 4096;
26pub const FZ_TEXT_PARAGRAPH_BREAK: libc::c_int = 8192;
27pub const FZ_TEXT_TABLE_HUNT: libc::c_int = 16384;
28pub const FZ_TEXT_USE_CID_FOR_UNKNOWN_UNICODE: libc::c_int = 128;
29pub const FZ_TEXT_USE_GID_FOR_UNKNOWN_UNICODE: libc::c_int = 65536;
30
31pub const FZ_PAGE_BLOCK_TEXT: libc::c_int = 0;
32pub const FZ_PAGE_BLOCK_IMAGE: libc::c_int = 1;
33pub const FZ_PAGE_BLOCK_STRUCT: libc::c_int = 2;
34pub const FZ_PAGE_BLOCK_VECTOR: libc::c_int = 3;
35pub const FZ_PAGE_BLOCK_GRID: libc::c_int = 4;
36
37pub const CACHE_SIZE: libc::size_t = 32 * 1024 * 1024;
38
39pub enum FzContext {}
40pub enum FzDocument {}
41pub enum FzStream {}
42pub enum FzPool {}
43pub enum FzPage {}
44pub enum FzDevice {}
45pub enum FzFont {}
46pub enum FzColorspace {}
47pub enum FzAllocContext {}
48pub enum FzLocksContext {}
49pub enum FzCookie {}
50pub enum FzStoreDropFn {}
51pub enum FzStoreDroppableFn {}
52pub enum FzLinkSetRectFn {}
53pub enum FzLinkSetUriFn {}
54pub enum FzLinkDropLinkFn {}
55pub enum FzSeparations {}
56pub enum FzTextStruct {}
57pub enum FzGridPositions {}
58pub enum FzGridInfo {}
59pub enum FzPoolArray {}
60pub enum FzImage {}
61
62#[link(name = "mupdf")]
63#[link(name = "mupdf_wrapper", kind = "static")]
64
65extern "C" {
66 pub fn fz_new_context_imp(
67 alloc_ctx: *const FzAllocContext,
68 locks_ctx: *const FzLocksContext,
69 cache_size: libc::size_t,
70 version: *const libc::c_char,
71 ) -> *mut FzContext;
72 pub fn fz_drop_context(ctx: *mut FzContext);
73 pub fn fz_register_document_handlers(ctx: *mut FzContext);
74 pub fn fz_set_user_css(ctx: *mut FzContext, user_css: *const libc::c_char);
75 pub fn fz_set_use_document_css(ctx: *mut FzContext, should_use: libc::c_int);
76 pub fn mp_open_document(ctx: *mut FzContext, path: *const libc::c_char) -> *mut FzDocument;
77 pub fn mp_open_document_with_error(
78 ctx: *mut FzContext,
79 path: *const libc::c_char,
80 err_buf: *mut libc::c_char,
81 err_buf_len: libc::c_int,
82 ) -> *mut FzDocument;
83 pub fn mp_open_document_with_stream(
84 ctx: *mut FzContext,
85 kind: *const libc::c_char,
86 stream: *mut FzStream,
87 ) -> *mut FzDocument;
88 pub fn fz_drop_document(ctx: *mut FzContext, doc: *mut FzDocument);
89 pub fn fz_open_memory(
90 ctx: *mut FzContext,
91 data: *const libc::c_uchar,
92 len: libc::size_t,
93 ) -> *mut FzStream;
94 pub fn fz_drop_stream(ctx: *mut FzContext, stream: *mut FzStream);
95 pub fn mp_count_pages(ctx: *mut FzContext, doc: *mut FzDocument) -> libc::c_int;
96 pub fn mp_page_number_from_location(
97 ctx: *mut FzContext,
98 doc: *mut FzDocument,
99 loc: FzLocation,
100 ) -> libc::c_int;
101 pub fn fz_lookup_metadata(
102 ctx: *mut FzContext,
103 doc: *mut FzDocument,
104 key: *const libc::c_char,
105 buf: *mut libc::c_char,
106 size: libc::c_int,
107 ) -> libc::c_int;
108 pub fn fz_needs_password(ctx: *mut FzContext, doc: *mut FzDocument) -> libc::c_int;
109 pub fn fz_is_document_reflowable(ctx: *mut FzContext, doc: *mut FzDocument) -> libc::c_int;
110 pub fn fz_layout_document(
111 ctx: *mut FzContext,
112 doc: *mut FzDocument,
113 w: libc::c_float,
114 h: libc::c_float,
115 em: libc::c_float,
116 );
117 pub fn mp_load_outline(ctx: *mut FzContext, doc: *mut FzDocument) -> *mut FzOutline;
118 pub fn fz_drop_outline(ctx: *mut FzContext, outline: *mut FzOutline);
119 pub fn fz_device_rgb(ctx: *mut FzContext) -> *mut FzColorspace;
120 pub fn fz_device_gray(ctx: *mut FzContext) -> *mut FzColorspace;
121 pub fn fz_scale(sx: libc::c_float, sy: libc::c_float) -> FzMatrix;
122 pub fn mp_new_pixmap_from_page(
123 ctx: *mut FzContext,
124 page: *mut FzPage,
125 mat: FzMatrix,
126 cs: *mut FzColorspace,
127 alpha: libc::c_int,
128 ) -> *mut FzPixmap;
129 pub fn fz_set_pixmap_resolution(
130 ctx: *mut FzContext,
131 pix: *mut FzPixmap,
132 xres: libc::c_int,
133 yres: libc::c_int,
134 );
135 pub fn fz_drop_pixmap(ctx: *mut FzContext, pixmap: *mut FzPixmap);
136 pub fn mp_load_page(
137 ctx: *mut FzContext,
138 doc: *mut FzDocument,
139 page_idx: libc::c_int,
140 ) -> *mut FzPage;
141 pub fn fz_drop_page(ctx: *mut FzContext, page: *mut FzPage);
142 pub fn fz_bound_page(ctx: *mut FzContext, page: *mut FzPage) -> FzRect;
143 pub fn fz_run_page(
144 ctx: *mut FzContext,
145 page: *mut FzPage,
146 dev: *mut FzDevice,
147 mat: FzMatrix,
148 cookie: *mut FzCookie,
149 );
150 pub fn mp_load_links(ctx: *mut FzContext, page: *mut FzPage) -> *mut FzLink;
151 pub fn fz_drop_link(ctx: *mut FzContext, link: *mut FzLink);
152 pub fn fz_resolve_link_dest(
153 ctx: *mut FzContext,
154 doc: *mut FzDocument,
155 uri: *const libc::c_char,
156 ) -> FzLinkDest;
157 pub fn mp_new_stext_page_from_page(
158 ctx: *mut FzContext,
159 page: *mut FzPage,
160 options: *const FzTextOptions,
161 ) -> *mut FzTextPage;
162 pub fn fz_drop_stext_page(ctx: *mut FzContext, tp: *mut FzTextPage);
163 pub fn fz_new_bbox_device(ctx: *mut FzContext, rect: *mut FzRect) -> *mut FzDevice;
164 pub fn fz_close_device(ctx: *mut FzContext, dev: *mut FzDevice);
165 pub fn fz_drop_device(ctx: *mut FzContext, dev: *mut FzDevice);
166 pub fn fz_union_rect(a: FzRect, b: FzRect) -> FzRect;
167 pub fn fz_rect_from_quad(q: FzQuad) -> FzRect;
168 pub fn fz_runetochar(buf: *mut u8, rune: libc::c_int) -> libc::c_int;
169 pub static fz_identity: FzMatrix;
170}
171
172#[repr(C)]
173#[derive(Debug, Copy, Clone)]
174pub struct FzRect {
175 pub x0: libc::c_float,
176 pub y0: libc::c_float,
177 pub x1: libc::c_float,
178 pub y1: libc::c_float,
179}
180
181impl Default for FzRect {
182 fn default() -> FzRect {
183 FzRect {
185 x0: 1.0,
186 y0: 1.0,
187 x1: -1.0,
188 y1: -1.0,
189 }
190 }
191}
192
193#[repr(C)]
194#[derive(Debug, Copy, Clone)]
195pub struct FzPoint {
196 x: libc::c_float,
197 y: libc::c_float,
198}
199
200#[repr(C)]
201#[derive(Debug, Copy, Clone)]
202pub struct FzQuad {
203 ul: FzPoint,
204 ur: FzPoint,
205 ll: FzPoint,
206 lr: FzPoint,
207}
208
209#[derive(Copy, Clone)]
210#[repr(C)]
211pub struct FzMatrix {
212 a: libc::c_float,
213 b: libc::c_float,
214 c: libc::c_float,
215 d: libc::c_float,
216 e: libc::c_float,
217 f: libc::c_float,
218}
219
220#[repr(C)]
221pub struct FzStorable {
222 refs: libc::c_int,
223 drop: *mut FzStoreDropFn,
224 droppable: *mut FzStoreDroppableFn,
225}
226
227#[repr(C)]
228pub struct FzTextOptions {
229 pub flags: libc::c_int,
230 pub scale: libc::c_float,
231 pub clip: FzRect,
232}
233
234#[repr(C)]
235pub struct FzLinkDest {
236 pub loc: FzLocation,
237 kind: libc::c_int,
238 x: libc::c_float,
239 y: libc::c_float,
240 w: libc::c_float,
241 h: libc::c_float,
242 zoom: libc::c_float,
243}
244
245#[repr(C)]
246pub struct FzPixmap {
247 storable: FzStorable,
248 x: libc::c_int,
249 y: libc::c_int,
250 pub w: libc::c_int,
251 pub h: libc::c_int,
252 n: libc::c_uchar,
253 s: libc::c_uchar,
254 alpha: libc::c_uchar,
255 flags: libc::c_uchar,
256 stride: libc::ptrdiff_t,
257 seps: *mut FzSeparations,
258 xres: libc::c_int,
259 yres: libc::c_int,
260 colorspace: *mut FzColorspace,
261 pub samples: *mut libc::c_uchar,
262 underlying: *mut FzPixmap,
263}
264
265impl Default for FzMatrix {
266 fn default() -> FzMatrix {
267 unsafe { mem::zeroed() }
268 }
269}
270
271#[repr(C)]
272pub struct FzLink {
273 refs: libc::c_int,
274 pub next: *mut FzLink,
275 pub rect: FzRect,
276 pub uri: *mut libc::c_char,
277 set_rect_fn: *mut FzLinkSetRectFn,
278 set_uri_fn: *mut FzLinkSetUriFn,
279 drop: *mut FzLinkDropLinkFn,
280}
281
282#[repr(C)]
283pub struct FzTextPage {
284 refs: libc::c_int,
285 pool: *mut FzPool,
286 mediabox: FzRect,
287 pub first_block: *mut FzTextBlock,
288 last_block: *mut FzTextBlock,
289 last_struct: *mut FzTextStruct,
290 id_list: *mut FzPoolArray,
291}
292
293#[repr(C)]
294pub struct FzTextBlock {
295 pub kind: libc::c_int,
296 id: libc::c_int,
297 pub bbox: FzRect,
298 pub u: FzTextBlockTextImage,
299 prev: *mut FzTextBlock,
300 pub next: *mut FzTextBlock,
301}
302
303#[derive(Copy, Clone)]
304#[repr(C)]
305pub struct FzTextBlockText {
306 pub first_line: *mut FzTextLine,
307 last_line: *mut FzTextLine,
308 flags: libc::c_int,
309}
310
311#[derive(Copy, Clone)]
312#[repr(C)]
313pub struct FzTextBlockImage {
314 transform: FzMatrix,
315 image: *mut FzImage,
316}
317
318#[derive(Copy, Clone)]
319#[repr(C)]
320pub struct FzTextBlockStruct {
321 down: *mut FzTextStruct,
322 index: libc::c_int,
323}
324
325#[derive(Copy, Clone)]
326#[repr(C)]
327pub struct FzTextBlockVector {
328 flags: u32,
329 argb: u32,
330}
331
332#[derive(Copy, Clone)]
333#[repr(C)]
334pub struct FzTextBlockGrid {
335 xs: *mut FzGridPositions,
336 ys: *mut FzGridPositions,
337 info: *mut FzGridInfo,
338}
339
340#[repr(C)]
341pub union FzTextBlockTextImage {
342 pub text: FzTextBlockText,
343 pub image: FzTextBlockImage,
344 pub stru: FzTextBlockStruct,
345 pub vector: FzTextBlockVector,
346 pub grid: FzTextBlockGrid,
347}
348
349#[repr(C)]
350pub struct FzTextLine {
351 wmode: u8,
352 flags: u8,
353 dir: FzPoint,
354 pub bbox: FzRect,
355 pub first_char: *mut FzTextChar,
356 last_char: *mut FzTextChar,
357 prev: *mut FzTextLine,
358 pub next: *mut FzTextLine,
359}
360
361#[repr(C)]
362pub struct FzTextChar {
363 pub c: libc::c_int,
364 bidi: u16,
365 flags: u16,
366 argb: u32,
367 origin: FzPoint,
368 pub quad: FzQuad,
369 size: libc::c_float,
370 font: *mut FzFont,
371 pub next: *mut FzTextChar,
372}
373
374#[derive(Copy, Clone)]
375#[repr(C)]
376pub struct FzLocation {
377 pub chapter: libc::c_int,
378 pub page: libc::c_int,
379}
380
381#[repr(C)]
382pub struct FzOutline {
383 refs: libc::c_int,
384 pub title: *mut libc::c_char,
385 pub uri: *mut libc::c_char,
386 pub page: FzLocation,
387 x: libc::c_float,
388 y: libc::c_float,
389 pub next: *mut FzOutline,
390 pub down: *mut FzOutline,
391 is_open: libc::c_uint,
392 flags: libc::c_uint,
393 r: libc::c_uint,
394 g: libc::c_uint,
395 b: libc::c_uint,
396}
397
398impl Default for FzOutline {
399 fn default() -> Self {
400 unsafe { mem::zeroed() }
401 }
402}