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