diff options
author | yzrh <yzrh@noema.org> | 2022-12-22 19:47:40 +0000 |
---|---|---|
committer | yzrh <yzrh@noema.org> | 2022-12-24 23:29:56 +0000 |
commit | 9c1f1d0b75de0d2ed299842d3025941f3e681c16 (patch) | |
tree | 302f6d4a2235acfe8872a3c0c1c216fecc323b95 /src/jbig2.c | |
parent | ac3b1dda63944f2cc8caaa52344774255e1956c8 (diff) | |
download | melon-9c1f1d0b75de0d2ed299842d3025941f3e681c16.tar.gz melon-9c1f1d0b75de0d2ed299842d3025941f3e681c16.tar.zst |
Fix HN conversion and add JBIG2 support.
Signed-off-by: yzrh <yzrh@noema.org>
Diffstat (limited to 'src/jbig2.c')
-rw-r--r-- | src/jbig2.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/jbig2.c b/src/jbig2.c new file mode 100644 index 0000000..9b3a9be --- /dev/null +++ b/src/jbig2.c @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2022, yzrh <yzrh@noema.org> + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include <stdint.h> +#include <stdlib.h> +#include <string.h> + +#include <jbig2.h> + +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); + return 0; +} |