cadmus_core/document/
djvulibre_sys.rs1#![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}