cadmus_core/document/
mupdf_sys.rs

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        // Returns an empty rectangle.
184        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}