diff options
author | yzrh <yzrh@tuta.io> | 2020-08-14 22:04:26 +0000 |
---|---|---|
committer | yzrh <yzrh@tuta.io> | 2020-08-14 22:04:26 +0000 |
commit | 12ecdd71592eccf7bdb6214edbc7318246469c1c (patch) | |
tree | fda27e41c37a2345702ad3e90480154d975e426f /src/cnki.h | |
download | melon-12ecdd71592eccf7bdb6214edbc7318246469c1c.tar.gz melon-12ecdd71592eccf7bdb6214edbc7318246469c1c.tar.zst |
Initial commit.
Diffstat (limited to 'src/cnki.h')
-rw-r--r-- | src/cnki.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/src/cnki.h b/src/cnki.h new file mode 100644 index 0000000..6e3565f --- /dev/null +++ b/src/cnki.h @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2020, yzrh <yzrh@tuta.io> + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include <stdint.h> +#include <stdio.h> + +#define ADDRESS_HEAD 0x0000 + +#define ADDRESS_CAJ_PAGE 0x0010 +#define ADDRESS_CAJ_OUTLINE 0x0110 +#define ADDRESS_CAJ_BODY 0x0014 + +#define ADDRESS_HN_PAGE 0x0090 +#define ADDRESS_HN_OUTLINE 0x0158 + +#define ADDRESS_KDH_BODY 0x00fe + +#define KEY_KDH "FZHMEI" +#define KEY_KDH_LENGTH 6 + +typedef struct _file_stat_t { + char type[4]; + int32_t page; + int32_t outline; +} file_stat_t; + +typedef struct _object_outline_t { + char title[256]; /* Starting at file_stat_t->outline + 4 */ + char hierarchy[24]; + char page[12]; + char text[12]; + int32_t depth; + struct _object_outline_t *next; +} object_outline_t; + +typedef struct _object_outline_tree_t { + int id; + struct _object_outline_t *item; + struct _object_outline_tree_t *up; + struct _object_outline_tree_t *left; + struct _object_outline_tree_t *right; +} object_outline_tree_t; + +typedef enum _nh_code { + CCITTFAX, + DCT_0, + DCT_1, + JBIG2, + JPX +} nh_code; + +typedef struct _object_nh_t { + int32_t address; /* Starting at end of object_outline_t */ + int32_t size; + int16_t page[2]; + int32_t zero[2]; + char *text; + int32_t image_format; /* nh_code */ + int32_t image_address; + int32_t image_size; + char *image; + struct _object_nh_t *next; +} object_nh_t; + +typedef struct _cnki_t { + int stat; + int size_buf; + FILE *fp_i; + FILE *fp_o; + file_stat_t *file_stat; + object_outline_t *object_outline; + object_nh_t *object_nh; +} cnki_t; + +/* cnki_pdf.c */ +int cnki_pdf(cnki_t **param); + +/* cnki_outline_tree.c */ +int cnki_outline_tree(object_outline_tree_t **outline_tree, + object_outline_t **outline, int *ids); + +/* cnki_xml.c */ +int cnki_xml(char **xml, FILE **fp); |