File: decode.pxd

package info (click to toggle)
python-djvulibre 0.9.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 648 kB
  • sloc: python: 2,437; makefile: 38; sh: 25
file content (397 lines) | stat: -rw-r--r-- 8,852 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
# Copyright © 2007-2020 Jakub Wilk <jwilk@jwilk.net>
# Copyright © 2022-2024 FriedrichFroebel
#
# This file is part of djvulibre-python.
#
# djvulibre-python is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 as published by
# the Free Software Foundation.
#
# djvulibre-python is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details.

# cython: language_level=3

cdef extern from 'stdio.h':
    ctypedef struct FILE


from djvu.sexpr cimport cexpr_t, _WrappedCExpr
from djvu.sexpr cimport public_c2py as cexpr2py
from djvu.sexpr cimport public_py2c as py2cexpr


cdef extern from 'libdjvu/ddjvuapi.h':
    struct ddjvu_context_s
    union ddjvu_message_s
    struct ddjvu_job_s
    struct ddjvu_document_s
    struct ddjvu_page_s
    struct ddjvu_format_s
    struct ddjvu_rect_s
    struct ddjvu_rectmapper_s

    ctypedef ddjvu_context_s ddjvu_context_t
    ctypedef ddjvu_message_s ddjvu_message_t
    ctypedef ddjvu_job_s ddjvu_job_t
    ctypedef ddjvu_document_s ddjvu_document_t
    ctypedef ddjvu_page_s ddjvu_page_t
    ctypedef ddjvu_format_s ddjvu_format_t
    ctypedef ddjvu_rect_s ddjvu_rect_t
    ctypedef ddjvu_rectmapper_s ddjvu_rectmapper_t

    ctypedef void (*ddjvu_message_callback_t)(ddjvu_context_t* context, void* closure) nogil

    ctypedef enum ddjvu_status_t:
        DDJVU_JOB_NOTSTARTED
        DDJVU_JOB_STARTED
        DDJVU_JOB_OK
        DDJVU_JOB_FAILED
        DDJVU_JOB_STOPPED

    ctypedef enum ddjvu_message_tag_t:
        DDJVU_ERROR
        DDJVU_INFO
        DDJVU_NEWSTREAM
        DDJVU_DOCINFO
        DDJVU_PAGEINFO
        DDJVU_RELAYOUT
        DDJVU_REDISPLAY
        DDJVU_CHUNK
        DDJVU_THUMBNAIL
        DDJVU_PROGRESS

    cdef struct ddjvu_message_any_s:
        ddjvu_message_tag_t tag
        ddjvu_context_t* context
        ddjvu_document_t* document
        ddjvu_page_t* page
        ddjvu_job_t* job
    ctypedef ddjvu_message_any_s ddjvu_message_any_t

    cdef struct ddjvu_message_error_s:
        ddjvu_message_any_t any
        char* message
        char* function
        char* filename
        int lineno

    cdef struct ddjvu_message_info_s:
        ddjvu_message_any_t any
        char* message

    cdef struct ddjvu_message_newstream_s:
        ddjvu_message_any_t any
        int streamid
        char* name
        char* url

    cdef struct ddjvu_message_docinfo_s:
        ddjvu_message_any_t any

    ctypedef enum ddjvu_document_type_t:
        DDJVU_DOCTYPE_UNKNOWN
        DDJVU_DOCTYPE_SINGLEPAGE
        DDJVU_DOCTYPE_BUNDLED
        DDJVU_DOCTYPE_INDIRECT
        DDJVU_DOCTYPE_OLD_BUNDLED
        DDJVU_DOCTYPE_OLD_INDEXED

    cdef struct ddjvu_fileinfo_s:
        char type
        int pageno
        int size
        char* id
        char* name
        char* title
    ctypedef ddjvu_fileinfo_s ddjvu_fileinfo_t

    cdef struct ddjvu_pageinfo_s:
        int width
        int height
        int dpi
        int rotation
        int version
    ctypedef ddjvu_pageinfo_s ddjvu_pageinfo_t

    cdef struct ddjvu_message_pageinfo_s:
        ddjvu_message_any_t any

    cdef struct ddjvu_message_relayout_s:
        ddjvu_message_any_t any

    cdef struct ddjvu_message_redisplay_s:
        ddjvu_message_any_t any

    cdef struct ddjvu_message_chunk_s:
        ddjvu_message_any_t any
    char* chunkid

    ctypedef enum ddjvu_page_type_t:
        DDJVU_PAGETYPE_UNKNOWN
        DDJVU_PAGETYPE_BITONAL
        DDJVU_PAGETYPE_PHOTO
        DDJVU_PAGETYPE_COMPOUND

    ctypedef enum ddjvu_page_rotation_t:
        DDJVU_ROTATE_0
        DDJVU_ROTATE_90
        DDJVU_ROTATE_180
        DDJVU_ROTATE_270

    ctypedef enum ddjvu_render_mode_t:
        DDJVU_RENDER_COLOR
        DDJVU_RENDER_BLACK
        DDJVU_RENDER_COLORONLY
        DDJVU_RENDER_MASKONLY
        DDJVU_RENDER_BACKGROUND
        DDJVU_RENDER_FOREGROUND

    cdef struct ddjvu_rect_s:
        int x, y
        unsigned int w, h

    ctypedef enum ddjvu_format_style_t:
        DDJVU_FORMAT_BGR24
        DDJVU_FORMAT_RGB24
        DDJVU_FORMAT_RGBMASK16
        DDJVU_FORMAT_RGBMASK32
        DDJVU_FORMAT_GREY8
        DDJVU_FORMAT_PALETTE8
        DDJVU_FORMAT_MSBTOLSB
        DDJVU_FORMAT_LSBTOMSB

    cdef struct ddjvu_message_thumbnail_s:
        ddjvu_message_any_t any
        int pagenum

    cdef struct ddjvu_message_progress_s:
        ddjvu_message_any_t any
        ddjvu_status_t status
        int percent

    cdef union ddjvu_message_s:
        ddjvu_message_any_s m_any
        ddjvu_message_error_s m_error
        ddjvu_message_info_s m_info
        ddjvu_message_newstream_s m_newstream
        ddjvu_message_docinfo_s m_docinfo
        ddjvu_message_pageinfo_s m_pageinfo
        ddjvu_message_chunk_s m_chunk
        ddjvu_message_relayout_s m_relayout
        ddjvu_message_redisplay_s m_redisplay
        ddjvu_message_thumbnail_s m_thumbnail
        ddjvu_message_progress_s m_progress


cdef class Context


cdef class Document


cdef class DocumentExtension:
    cdef Document _document


cdef class DocumentPages(DocumentExtension):
    pass


cdef class DocumentFiles(DocumentExtension):
    cdef object _page_map


cdef class Document:
    cdef ddjvu_document_t* ddjvu_document
    cdef Context _context
    cdef DocumentPages _pages
    cdef DocumentFiles _files
    cdef object _queue
    cdef object _condition
    cdef object __weakref__
    cdef object _init(self, Context context, ddjvu_document_t* ddjvu_document)
    cdef object _clear(self)


cdef class _SexprWrapper:
    cdef object _document_weakref
    cdef cexpr_t _cexpr


cdef class DocumentOutline(DocumentExtension):
    cdef _SexprWrapper _sexpr
    cdef object _update_sexpr(self)


cdef class Annotations:
    cdef _SexprWrapper _sexpr
    cdef object _update_sexpr(self)
    cdef Document _document


cdef class DocumentAnnotations(Annotations):
    cdef int _compat


cdef class Hyperlinks:
    cdef object _sexpr


cdef class Metadata:
    cdef Annotations _annotations
    cdef object _keys


cdef class File:
    cdef int _n
    cdef int _have_info
    cdef ddjvu_fileinfo_t ddjvu_fileinfo
    cdef Document _document
    cdef object _get_info(self)


cdef class Page:
    cdef Document _document
    cdef ddjvu_pageinfo_t ddjvu_pageinfo
    cdef int _have_info
    cdef int _n
    cdef object _get_info(self)


cdef class PageAnnotations(Annotations):
    cdef Page _page


cdef class PageText:
    cdef Page _page
    cdef object _details
    cdef _SexprWrapper _sexpr
    cdef object _update_sexpr(self)


cdef class Context:
    cdef ddjvu_context_t* ddjvu_context
    cdef object _queue


cdef class PixelFormat:
    cdef ddjvu_format_t* ddjvu_format
    cdef int _bpp
    cdef int _dither_bpp
    cdef int _row_order
    cdef int _y_direction
    cdef double _gamma


cdef class PixelFormatRgb(PixelFormat):
    cdef int _rgb


cdef class PixelFormatRgbMask(PixelFormat):
    cdef unsigned int _params[4]


cdef class PixelFormatGrey(PixelFormat):
    pass


cdef class PixelFormatPalette(PixelFormat):
    cdef unsigned int _palette[216]


cdef class PixelFormatPackedBits(PixelFormat):
    cdef int _little_endian
    pass


cdef class Job:
    cdef Context _context
    cdef ddjvu_job_t* ddjvu_job
    cdef object _queue
    cdef object _condition
    cdef object _init(self, Context context, ddjvu_job_t *ddjvu_job)
    cdef object _clear(self)
    cdef object __weakref__


cdef class PageJob(Job):
    pass


cdef class SaveJob(Job):
    cdef object _file


cdef class DocumentDecodingJob(Job):
    cdef object _document
    cdef object _init_ddj(self, Document document)


cdef class AffineTransform:
    cdef ddjvu_rectmapper_t* ddjvu_rectmapper


cdef class Message:
    cdef ddjvu_message_t* ddjvu_message
    cdef Context _context
    cdef Document _document
    cdef PageJob _page_job
    cdef Job _job
    cdef object _init(self)


cdef class ErrorMessage(Message):
    cdef object _message
    cdef object _location


cdef class InfoMessage(Message):
    cdef object _message


cdef class Stream:
    cdef int _streamid
    cdef int _open
    cdef Document _document


cdef class NewStreamMessage(Message):
    cdef object _name
    cdef object _uri
    cdef Stream _stream


cdef class DocInfoMessage(Message):
    pass


cdef class PageInfoMessage(Message):
    pass


cdef class ChunkMessage(Message):
    pass


cdef class RelayoutMessage(ChunkMessage):
    pass


cdef class RedisplayMessage(ChunkMessage):
    pass


cdef class ThumbnailMessage(Message):
    cdef int _page_no


cdef class ProgressMessage(Message):
    cdef int _percent
    cdef ddjvu_status_t _status


cdef class Thumbnail:
    cdef Page _page