aboutsummaryrefslogblamecommitdiffstats
path: root/src/cnki_jbig.h
blob: 96e4ea84077c2c5701e16d84c0a0a12f8f5e8cae (plain) (tree)













































































                                                                          
/*
 * Copyright (c) 2020-2021, yzrh <yzrh@noema.org>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <stdint.h>

/*
 * order (MSB first):
 * 0
 * 0
 * 0
 * 0
 * HITOLO
 * SEQ
 * ILEAVE (default)
 * SMID (default)
 *
 * options (MSB first):
 * 0
 * LRLTWO
 * VLENGTH
 * TPDON (default)
 * TPBON (default)
 * DPON (default)
 * DPPRIV
 * DPLAST
 */
typedef struct _bih_t {
	char d_l; /* Initial resolution layer */
	char d; /* Final resolution layer */
	char p; /* Number of bit-planes, for bi-level image, always 1 */
	char fill; /* Always 0 */
	/* MSB first */
	int32_t x_d; /* Horizontal dimension at highestresolution */
	int32_t y_d; /* Vertical dimension at highest resolution */
	int32_t l_0; /* Number of lines per stripe at lowest resolution */
	char m_x; /* Maximum horizontal offsets (default: 8) */
	char m_y; /* Maximum vertical offsets (default: 0) */
	char order;
	char options;
	char *dptable; /* 0 or 1728 */
} bih_t;

typedef enum _dib_compression_code {
	BI_RGB,
	BI_RLE8,
	BI_RLE4,
	BI_BITFIELDS,
	BI_JPEG,
	BI_PNG,
	BI_ALPHABITFIELDS,
	BI_CMYK = 11,
	BI_CMYKRLE8 = 12,
	BI_CMYKRLE4 = 13
} dib_compression_code;

typedef struct _dib_t {
	uint32_t dib_size; /* Always 40 */
	int32_t width;
	int32_t height;
	uint16_t plane; /* Always 1 */
	uint16_t depth;
	uint32_t compression; /* dib_compression_code */
	uint32_t size;
	uint32_t resolution_h;
	uint32_t resolution_v;
	uint32_t colour;
	uint32_t colour_used;
} dib_t;

typedef struct _colour_table {
	uint16_t blue;
	uint16_t green;
	uint16_t red;
	uint16_t fill; /* Always 0 */
} colour_table;