/* * Copyright (c) 2022-2023, yzrh * * SPDX-License-Identifier: Apache-2.0 */ #include #include #include #include int strdec_jbig2(char **bitmap, const char * restrict jbig2, int jbig2_size) { Jbig2Ctx *ctx = jbig2_ctx_new(NULL, JBIG2_OPTIONS_EMBEDDED, NULL, NULL, NULL); jbig2_data_in(ctx, (unsigned char *) jbig2, jbig2_size); jbig2_complete_page(ctx); Jbig2Image *image = jbig2_page_out(ctx); int width_padded = (image->width + 7) / 8; unsigned char *data = image->data; for (unsigned int i = 0; i < image->height; i++) { memcpy(*bitmap + i * width_padded, data, width_padded); data += image->stride; } jbig2_release_page(ctx, image); jbig2_ctx_free(ctx); return 0; }