From 9c1f1d0b75de0d2ed299842d3025941f3e681c16 Mon Sep 17 00:00:00 2001 From: yzrh Date: Thu, 22 Dec 2022 19:47:40 +0000 Subject: Fix HN conversion and add JBIG2 support. Signed-off-by: yzrh --- src/cnki_jbig2.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/cnki_jbig2.c (limited to 'src/cnki_jbig2.c') diff --git a/src/cnki_jbig2.c b/src/cnki_jbig2.c new file mode 100644 index 0000000..69f4a5b --- /dev/null +++ b/src/cnki_jbig2.c @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2022, yzrh + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +#include "cnki_jbig.h" +#include "jbig2.h" + +int +cnki_jbig2(char **bitmap, int *bitmap_size, + int *bitmap_width, int *bitmap_height, + const char * restrict jbig, int jbig_size) +{ + dib_t *dib = malloc(sizeof(dib_t)); + + if (dib == NULL) + return 1; + + memcpy(dib, jbig, 40); + + int width_padded = (dib->width * dib->depth + 7) / 8; + + *bitmap_size = dib->height * width_padded; + *bitmap = malloc(*bitmap_size); + + if (*bitmap == NULL) { + free(dib); + return 1; + } + + strdec_jbig2(bitmap, jbig + 48, jbig_size - 48); + + *bitmap_width = dib->width; + *bitmap_height = dib->height; + + free(dib); + + return 0; +} -- cgit v1.2.3