Mercurial > hgrepos > Python2 > PyMuPDF
diff mupdf-source/thirdparty/jbig2dec/jbig2.h @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mupdf-source/thirdparty/jbig2dec/jbig2.h Mon Sep 15 11:43:07 2025 +0200 @@ -0,0 +1,112 @@ +/* Copyright (C) 2001-2023 Artifex Software, Inc. + All Rights Reserved. + + This software is provided AS-IS with no warranty, either express or + implied. + + This software is distributed under license and may not be copied, + modified or distributed except as expressly authorized under the terms + of the license contained in the file LICENSE in this distribution. + + Refer to licensing information at http://www.artifex.com or contact + Artifex Software, Inc., 39 Mesa Street, Suite 108A, San Francisco, + CA 94129, USA, for further information. +*/ + +/* + jbig2dec +*/ + +#ifndef _JBIG2_H +#define _JBIG2_H + +#ifdef __cplusplus +extern "C" +{ +#endif + +#define JBIG2_VERSION_MAJOR (0) +#define JBIG2_VERSION_MINOR (20) + +/* warning levels */ +typedef enum { + JBIG2_SEVERITY_DEBUG, + JBIG2_SEVERITY_INFO, + JBIG2_SEVERITY_WARNING, + JBIG2_SEVERITY_FATAL +} Jbig2Severity; + +typedef enum { + JBIG2_OPTIONS_EMBEDDED = 1 +} Jbig2Options; + +/* forward public structure declarations */ +typedef struct _Jbig2Allocator Jbig2Allocator; +typedef struct _Jbig2Ctx Jbig2Ctx; +typedef struct _Jbig2GlobalCtx Jbig2GlobalCtx; + +/* + this is the general image structure used by the jbig2dec library + images are 1 bpp, packed into rows a byte at a time. stride gives + the byte offset to the next row, while width and height define + the size of the image area in pixels. +*/ +typedef struct _Jbig2Image Jbig2Image; +struct _Jbig2Image { + uint32_t width; + uint32_t height; + uint32_t stride; + uint8_t *data; + int refcount; +}; + +/* errors are returned from the library via a callback. If no callback + is provided (a NULL argument is passed to jbig2_ctx_new) a default + handler is used which prints fatal errors to the stderr stream. */ + +/* error callback */ +#define JBIG2_UNKNOWN_SEGMENT_NUMBER ~0U +typedef void (*Jbig2ErrorCallback)(void *data, const char *msg, Jbig2Severity severity, uint32_t seg_idx); + +/* memory allocation is likewise done via a set of callbacks so that + clients can better control memory usage. If a NULL is passed for + this argument of jbig2_ctx_new, a default allocator based on malloc() + is used. */ + +/* dynamic memory callbacks */ +struct _Jbig2Allocator { + void *(*alloc)(Jbig2Allocator *allocator, size_t size); + void (*free)(Jbig2Allocator *allocator, void *p); + void *(*realloc)(Jbig2Allocator *allocator, void *p, size_t size); +}; + +/* decoder context */ +#define jbig2_ctx_new(allocator, options, global_ctx, error_callback, error_callback_data) jbig2_ctx_new_imp((allocator), (options), (global_ctx), (error_callback), (error_callback_data), JBIG2_VERSION_MAJOR, JBIG2_VERSION_MINOR) +Jbig2Ctx *jbig2_ctx_new_imp(Jbig2Allocator *allocator, + Jbig2Options options, + Jbig2GlobalCtx *global_ctx, + Jbig2ErrorCallback error_callback, + void *error_callback_data, + int jbig2_version_major, + int jbig2_version_minor); +Jbig2Allocator *jbig2_ctx_free(Jbig2Ctx *ctx); + +/* global context for embedded streams */ +Jbig2GlobalCtx *jbig2_make_global_ctx(Jbig2Ctx *ctx); +Jbig2Allocator *jbig2_global_ctx_free(Jbig2GlobalCtx *global_ctx); + +/* submit data to the decoder */ +int jbig2_data_in(Jbig2Ctx *ctx, const unsigned char *data, size_t size); + +/* get the next available decoded page image. NULL means there isn't one. */ +Jbig2Image *jbig2_page_out(Jbig2Ctx *ctx); +/* mark a returned page image as no longer needed. */ +void jbig2_release_page(Jbig2Ctx *ctx, Jbig2Image *image); +/* mark the current page as complete, simulating an end-of-page segment (for broken streams) */ +int jbig2_complete_page(Jbig2Ctx *ctx); + +#ifdef __cplusplus +} +#endif + +#endif /* _JBIG2_H */
