cadmus_core/document/
djvulibre_sys.rs

1#![allow(unused)]
2
3use std::mem;
4
5pub const DDJVU_JOB_OK: JobStatus = 2;
6pub const DDJVU_JOB_FAILED: JobStatus = 3;
7
8pub const DDJVU_ERROR: MessageTag = 0;
9pub const DDJVU_INFO: MessageTag = 1;
10pub const DDJVU_NEWSTREAM: MessageTag = 2;
11pub const DDJVU_DOCINFO: MessageTag = 3;
12pub const DDJVU_PAGEINFO: MessageTag = 4;
13pub const DDJVU_RELAYOUT: MessageTag = 5;
14pub const DDJVU_REDISPLAY: MessageTag = 6;
15pub const DDJVU_CHUNK: MessageTag = 7;
16pub const DDJVU_THUMBNAIL: MessageTag = 8;
17pub const DDJVU_PROGRESS: MessageTag = 9;
18
19pub const DDJVU_FORMAT_BGR24: FormatStyle = 0;
20pub const DDJVU_FORMAT_RGB24: FormatStyle = 1;
21pub const DDJVU_FORMAT_RGBMASK16: FormatStyle = 2;
22pub const DDJVU_FORMAT_RGBMASK32: FormatStyle = 3;
23pub const DDJVU_FORMAT_GREY8: FormatStyle = 4;
24
25pub const DDJVU_RENDER_COLOR: RenderMode = 0;
26
27pub const MINIEXP_NIL: *mut MiniExp = 0 as *mut MiniExp;
28pub const MINIEXP_DUMMY: *mut MiniExp = 2 as *mut MiniExp;
29
30pub const CACHE_SIZE: libc::c_ulong = 32 * 1024 * 1024;
31
32pub enum ExoContext {}
33pub enum ExoDocument {}
34pub enum ExoFormat {}
35pub enum ExoJob {}
36pub enum ExoPage {}
37pub enum MiniExp {}
38
39pub type JobStatus = libc::c_uint;
40pub type MessageTag = libc::c_uint;
41pub type RenderMode = libc::c_uint;
42pub type FormatStyle = libc::c_uint;
43
44#[link(name = "djvulibre")]
45extern "C" {
46    pub fn ddjvu_context_create(name: *const libc::c_char) -> *mut ExoContext;
47    pub fn ddjvu_context_release(ctx: *mut ExoContext);
48    pub fn ddjvu_cache_set_size(ctx: *mut ExoContext, size: libc::c_ulong);
49    pub fn ddjvu_cache_clear(ctx: *mut ExoContext);
50    pub fn ddjvu_message_wait(ctx: *mut ExoContext) -> *mut Message;
51    pub fn ddjvu_message_pop(ctx: *mut ExoContext);
52    pub fn ddjvu_document_job(doc: *mut ExoDocument) -> *mut ExoJob;
53    pub fn ddjvu_page_job(page: *mut ExoPage) -> *mut ExoJob;
54    pub fn ddjvu_job_status(job: *mut ExoJob) -> JobStatus;
55    pub fn ddjvu_job_release(job: *mut ExoJob);
56    pub fn ddjvu_document_create_by_filename_utf8(
57        ctx: *mut ExoContext,
58        path: *const libc::c_char,
59        cache: libc::c_int,
60    ) -> *mut ExoDocument;
61    pub fn ddjvu_document_get_pagenum(doc: *mut ExoDocument) -> libc::c_int;
62    pub fn ddjvu_page_create_by_pageno(
63        doc: *mut ExoDocument,
64        page_idx: libc::c_int,
65    ) -> *mut ExoPage;
66    pub fn ddjvu_page_create_by_pageid(
67        doc: *mut ExoDocument,
68        pageid: *const libc::c_char,
69    ) -> *mut ExoPage;
70    pub fn ddjvu_page_get_width(page: *mut ExoPage) -> libc::c_int;
71    pub fn ddjvu_page_get_height(page: *mut ExoPage) -> libc::c_int;
72    pub fn ddjvu_page_get_resolution(page: *mut ExoPage) -> libc::c_int;
73    pub fn ddjvu_page_get_rotation(page: *mut ExoPage) -> libc::c_uint;
74    pub fn ddjvu_page_render(
75        page: *mut ExoPage,
76        mode: RenderMode,
77        p_rect: *const DjvuRect,
78        r_rect: *const DjvuRect,
79        fmt: *const ExoFormat,
80        row_size: libc::c_ulong,
81        buf: *mut u8,
82    ) -> libc::c_int;
83    pub fn ddjvu_format_create(
84        style: FormatStyle,
85        nargs: libc::c_int,
86        args: *const libc::c_uint,
87    ) -> *mut ExoFormat;
88    pub fn ddjvu_format_release(fmt: *mut ExoFormat);
89    pub fn ddjvu_format_set_row_order(fmt: *mut ExoFormat, top_to_bottom: libc::c_int);
90    pub fn ddjvu_format_set_y_direction(fmt: *mut ExoFormat, top_to_bottom: libc::c_int);
91    pub fn ddjvu_document_get_pagetext(
92        doc: *mut ExoDocument,
93        page_idx: libc::c_int,
94        max_detail: *const libc::c_char,
95    ) -> *mut MiniExp;
96    pub fn ddjvu_document_get_outline(doc: *mut ExoDocument) -> *mut MiniExp;
97    pub fn ddjvu_document_get_anno(doc: *mut ExoDocument, compat: libc::c_int) -> *mut MiniExp;
98    pub fn ddjvu_document_get_pageanno(
99        doc: *mut ExoDocument,
100        page_idx: libc::c_int,
101    ) -> *mut MiniExp;
102    pub fn ddjvu_anno_get_hyperlinks(annot: *mut MiniExp) -> *mut *mut MiniExp;
103    pub fn ddjvu_anno_get_metadata_keys(annot: *mut MiniExp) -> *mut *mut MiniExp;
104    pub fn ddjvu_anno_get_metadata(annot: *mut MiniExp, key: *const MiniExp)
105        -> *const libc::c_char;
106    pub fn ddjvu_miniexp_release(document: *mut ExoDocument, exp: *mut MiniExp);
107    pub fn miniexp_symbol(s: *const libc::c_char) -> *const MiniExp;
108    pub fn miniexp_length(exp: *mut MiniExp) -> libc::c_int;
109    pub fn miniexp_nth(n: libc::c_int, list: *mut MiniExp) -> *mut MiniExp;
110    pub fn miniexp_stringp(exp: *mut MiniExp) -> libc::c_int;
111    pub fn miniexp_to_str(exp: *mut MiniExp) -> *const libc::c_char;
112    pub fn miniexp_to_name(sym: *mut MiniExp) -> *const libc::c_char;
113}
114
115#[repr(C)]
116#[derive(Debug, Clone, Copy)]
117pub struct DjvuRect {
118    pub x: libc::c_int,
119    pub y: libc::c_int,
120    pub w: libc::c_uint,
121    pub h: libc::c_uint,
122}
123
124impl Default for DjvuRect {
125    fn default() -> Self {
126        unsafe { mem::zeroed() }
127    }
128}
129
130#[repr(C)]
131pub struct Message {
132    pub tag: MessageTag,
133    context: *mut ExoContext,
134    document: *mut ExoDocument,
135    page: *mut ExoPage,
136    job: *mut ExoJob,
137    pub u: MessageBlob,
138}
139
140#[repr(C)]
141pub union MessageBlob {
142    pub error: MessageError,
143    info: MessageInfo,
144    new_stream: MessageNewStream,
145    chunk: MessageChunk,
146    thumbnail: MessageThumbnail,
147    progress: MessageProgress,
148}
149
150#[derive(Copy, Clone)]
151#[repr(C)]
152pub struct MessageError {
153    pub message: *const libc::c_char,
154    function: *const libc::c_char,
155    pub filename: *const libc::c_char,
156    pub lineno: libc::c_int,
157}
158
159#[derive(Copy, Clone)]
160#[repr(C)]
161pub struct MessageInfo {
162    message: *const libc::c_char,
163}
164
165#[derive(Copy, Clone)]
166#[repr(C)]
167pub struct MessageNewStream {
168    streamid: libc::c_int,
169    name: *const libc::c_char,
170    url: *const libc::c_char,
171}
172
173#[derive(Copy, Clone)]
174#[repr(C)]
175pub struct MessageChunk {
176    chunkid: *const libc::c_char,
177}
178
179#[derive(Copy, Clone)]
180#[repr(C)]
181pub struct MessageThumbnail {
182    pagenum: libc::c_int,
183}
184
185#[derive(Copy, Clone)]
186#[repr(C)]
187pub struct MessageProgress {
188    status: JobStatus,
189    percent: libc::c_int,
190}