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_stream(
78 ctx: *mut FzContext,
79 kind: *const libc::c_char,
80 stream: *mut FzStream,
81 ) -> *mut FzDocument;
82 pub fn fz_drop_document(ctx: *mut FzContext, doc: *mut FzDocument);
83 pub fn fz_open_memory(
84 ctx: *mut FzContext,
85 data: *const libc::c_uchar,
86 len: libc::size_t,
87 ) -> *mut FzStream;
88 pub fn fz_drop_stream(ctx: *mut FzContext, stream: *mut FzStream);
89 pub fn mp_count_pages(ctx: *mut FzContext, doc: *mut FzDocument) -> libc::c_int;
90 pub fn mp_page_number_from_location(
91 ctx: *mut FzContext,
92 doc: *mut FzDocument,
93 loc: FzLocation,
94 ) -> libc::c_int;
95 pub fn fz_lookup_metadata(
96 ctx: *mut FzContext,
97 doc: *mut FzDocument,
98 key: *const libc::c_char,
99 buf: *mut libc::c_char,
100 size: libc::c_int,
101 ) -> libc::c_int;
102 pub fn fz_needs_password(ctx: *mut FzContext, doc: *mut FzDocument) -> libc::c_int;
103 pub fn fz_is_document_reflowable(ctx: *mut FzContext, doc: *mut FzDocument) -> libc::c_int;
104 pub fn fz_layout_document(
105 ctx: *mut FzContext,
106 doc: *mut FzDocument,
107 w: libc::c_float,
108 h: libc::c_float,
109 em: libc::c_float,
110 );
111 pub fn mp_load_outline(ctx: *mut FzContext, doc: *mut FzDocument) -> *mut FzOutline;
112 pub fn fz_drop_outline(ctx: *mut FzContext, outline: *mut FzOutline);
113 pub fn fz_device_rgb(ctx: *mut FzContext) -> *mut FzColorspace;
114 pub fn fz_device_gray(ctx: *mut FzContext) -> *mut FzColorspace;
115 pub fn fz_scale(sx: libc::c_float, sy: libc::c_float) -> FzMatrix;
116 pub fn mp_new_pixmap_from_page(
117 ctx: *mut FzContext,
118 page: *mut FzPage,
119 mat: FzMatrix,
120 cs: *mut FzColorspace,
121 alpha: libc::c_int,
122 ) -> *mut FzPixmap;
123 pub fn fz_set_pixmap_resolution(
124 ctx: *mut FzContext,
125 pix: *mut FzPixmap,
126 xres: libc::c_int,
127 yres: libc::c_int,
128 );
129 pub fn fz_drop_pixmap(ctx: *mut FzContext, pixmap: *mut FzPixmap);
130 pub fn mp_load_page(
131 ctx: *mut FzContext,
132 doc: *mut FzDocument,
133 page_idx: libc::c_int,
134 ) -> *mut FzPage;
135 pub fn fz_drop_page(ctx: *mut FzContext, page: *mut FzPage);
136 pub fn fz_bound_page(ctx: *mut FzContext, page: *mut FzPage) -> FzRect;
137 pub fn fz_run_page(
138 ctx: *mut FzContext,
139 page: *mut FzPage,
140 dev: *mut FzDevice,
141 mat: FzMatrix,
142 cookie: *mut FzCookie,
143 );
144 pub fn mp_load_links(ctx: *mut FzContext, page: *mut FzPage) -> *mut FzLink;
145 pub fn fz_drop_link(ctx: *mut FzContext, link: *mut FzLink);
146 pub fn fz_resolve_link_dest(
147 ctx: *mut FzContext,
148 doc: *mut FzDocument,
149 uri: *const libc::c_char,
150 ) -> FzLinkDest;
151 pub fn mp_new_stext_page_from_page(
152 ctx: *mut FzContext,
153 page: *mut FzPage,
154 options: *const FzTextOptions,
155 ) -> *mut FzTextPage;
156 pub fn fz_drop_stext_page(ctx: *mut FzContext, tp: *mut FzTextPage);
157 pub fn fz_new_bbox_device(ctx: *mut FzContext, rect: *mut FzRect) -> *mut FzDevice;
158 pub fn fz_close_device(ctx: *mut FzContext, dev: *mut FzDevice);
159 pub fn fz_drop_device(ctx: *mut FzContext, dev: *mut FzDevice);
160 pub fn fz_union_rect(a: FzRect, b: FzRect) -> FzRect;
161 pub fn fz_rect_from_quad(q: FzQuad) -> FzRect;
162 pub fn fz_runetochar(buf: *mut u8, rune: libc::c_int) -> libc::c_int;
163 pub static fz_identity: FzMatrix;
164}
165
166#[repr(C)]
167#[derive(Debug, Copy, Clone)]
168pub struct FzRect {
169 pub x0: libc::c_float,
170 pub y0: libc::c_float,
171 pub x1: libc::c_float,
172 pub y1: libc::c_float,
173}
174
175impl Default for FzRect {
176 fn default() -> FzRect {
177 FzRect {
179 x0: 1.0,
180 y0: 1.0,
181 x1: -1.0,
182 y1: -1.0,
183 }
184 }
185}
186
187#[repr(C)]
188#[derive(Debug, Copy, Clone)]
189pub struct FzPoint {
190 x: libc::c_float,
191 y: libc::c_float,
192}
193
194#[repr(C)]
195#[derive(Debug, Copy, Clone)]
196pub struct FzQuad {
197 ul: FzPoint,
198 ur: FzPoint,
199 ll: FzPoint,
200 lr: FzPoint,
201}
202
203#[derive(Copy, Clone)]
204#[repr(C)]
205pub struct FzMatrix {
206 a: libc::c_float,
207 b: libc::c_float,
208 c: libc::c_float,
209 d: libc::c_float,
210 e: libc::c_float,
211 f: libc::c_float,
212}
213
214#[repr(C)]
215pub struct FzStorable {
216 refs: libc::c_int,
217 drop: *mut FzStoreDropFn,
218 droppable: *mut FzStoreDroppableFn,
219}
220
221#[repr(C)]
222pub struct FzTextOptions {
223 pub flags: libc::c_int,
224 pub scale: libc::c_float,
225 pub clip: FzRect,
226}
227
228#[repr(C)]
229pub struct FzLinkDest {
230 pub loc: FzLocation,
231 kind: libc::c_int,
232 x: libc::c_float,
233 y: libc::c_float,
234 w: libc::c_float,
235 h: libc::c_float,
236 zoom: libc::c_float,
237}
238
239#[repr(C)]
240pub struct FzPixmap {
241 storable: FzStorable,
242 x: libc::c_int,
243 y: libc::c_int,
244 pub w: libc::c_int,
245 pub h: libc::c_int,
246 n: libc::c_uchar,
247 s: libc::c_uchar,
248 alpha: libc::c_uchar,
249 flags: libc::c_uchar,
250 stride: libc::ptrdiff_t,
251 seps: *mut FzSeparations,
252 xres: libc::c_int,
253 yres: libc::c_int,
254 colorspace: *mut FzColorspace,
255 pub samples: *mut libc::c_uchar,
256 underlying: *mut FzPixmap,
257}
258
259impl Default for FzMatrix {
260 fn default() -> FzMatrix {
261 unsafe { mem::zeroed() }
262 }
263}
264
265#[repr(C)]
266pub struct FzLink {
267 refs: libc::c_int,
268 pub next: *mut FzLink,
269 pub rect: FzRect,
270 pub uri: *mut libc::c_char,
271 set_rect_fn: *mut FzLinkSetRectFn,
272 set_uri_fn: *mut FzLinkSetUriFn,
273 drop: *mut FzLinkDropLinkFn,
274}
275
276#[repr(C)]
277pub struct FzTextPage {
278 refs: libc::c_int,
279 pool: *mut FzPool,
280 mediabox: FzRect,
281 pub first_block: *mut FzTextBlock,
282 last_block: *mut FzTextBlock,
283 last_struct: *mut FzTextStruct,
284 id_list: *mut FzPoolArray,
285}
286
287#[repr(C)]
288pub struct FzTextBlock {
289 pub kind: libc::c_int,
290 id: libc::c_int,
291 pub bbox: FzRect,
292 pub u: FzTextBlockTextImage,
293 prev: *mut FzTextBlock,
294 pub next: *mut FzTextBlock,
295}
296
297#[derive(Copy, Clone)]
298#[repr(C)]
299pub struct FzTextBlockText {
300 pub first_line: *mut FzTextLine,
301 last_line: *mut FzTextLine,
302 flags: libc::c_int,
303}
304
305#[derive(Copy, Clone)]
306#[repr(C)]
307pub struct FzTextBlockImage {
308 transform: FzMatrix,
309 image: *mut FzImage,
310}
311
312#[derive(Copy, Clone)]
313#[repr(C)]
314pub struct FzTextBlockStruct {
315 down: *mut FzTextStruct,
316 index: libc::c_int,
317}
318
319#[derive(Copy, Clone)]
320#[repr(C)]
321pub struct FzTextBlockVector {
322 flags: u32,
323 argb: u32,
324}
325
326#[derive(Copy, Clone)]
327#[repr(C)]
328pub struct FzTextBlockGrid {
329 xs: *mut FzGridPositions,
330 ys: *mut FzGridPositions,
331 info: *mut FzGridInfo,
332}
333
334#[repr(C)]
335pub union FzTextBlockTextImage {
336 pub text: FzTextBlockText,
337 pub image: FzTextBlockImage,
338 pub stru: FzTextBlockStruct,
339 pub vector: FzTextBlockVector,
340 pub grid: FzTextBlockGrid,
341}
342
343#[repr(C)]
344pub struct FzTextLine {
345 wmode: u8,
346 flags: u8,
347 dir: FzPoint,
348 pub bbox: FzRect,
349 pub first_char: *mut FzTextChar,
350 last_char: *mut FzTextChar,
351 prev: *mut FzTextLine,
352 pub next: *mut FzTextLine,
353}
354
355#[repr(C)]
356pub struct FzTextChar {
357 pub c: libc::c_int,
358 bidi: u16,
359 flags: u16,
360 argb: u32,
361 origin: FzPoint,
362 pub quad: FzQuad,
363 size: libc::c_float,
364 font: *mut FzFont,
365 pub next: *mut FzTextChar,
366}
367
368#[derive(Copy, Clone)]
369#[repr(C)]
370pub struct FzLocation {
371 pub chapter: libc::c_int,
372 pub page: libc::c_int,
373}
374
375#[repr(C)]
376pub struct FzOutline {
377 refs: libc::c_int,
378 pub title: *mut libc::c_char,
379 pub uri: *mut libc::c_char,
380 pub page: FzLocation,
381 x: libc::c_float,
382 y: libc::c_float,
383 pub next: *mut FzOutline,
384 pub down: *mut FzOutline,
385 is_open: libc::c_uint,
386 flags: libc::c_uint,
387 r: libc::c_uint,
388 g: libc::c_uint,
389 b: libc::c_uint,
390}
391
392impl Default for FzOutline {
393 fn default() -> Self {
394 unsafe { mem::zeroed() }
395 }
396}