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
|