1/* Copyright (C) 2001-2019 Artifex Software, Inc.
2 All Rights Reserved.
3
4 This software is provided AS-IS with no warranty, either express or
5 implied.
6
7 This software is distributed under license and may not be copied,
8 modified or distributed except as expressly authorized under the terms
9 of the license contained in the file LICENSE in this distribution.
10
11 Refer to licensing information at http://www.artifex.com or contact
12 Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato,
13 CA 94945, U.S.A., +1(415)492-9861, for further information.
14*/
15
16/*
17 jbig2dec
18*/
19
20#ifndef _JBIG2_SYMBOL_DICT_H
21#define _JBIG2_SYMBOL_DICT_H
22
23/* symbol dictionary header */
24
25/* the results of decoding a symbol dictionary */
26typedef struct {
27 uint32_t n_symbols;
28 Jbig2Image **glyphs;
29} Jbig2SymbolDict;
30
31/* decode a symbol dictionary segment and store the results */
32int jbig2_symbol_dictionary(Jbig2Ctx *ctx, Jbig2Segment *segment, const byte *segment_data);
33
34/* get a particular glyph by index */
35Jbig2Image *jbig2_sd_glyph(Jbig2SymbolDict *dict, unsigned int id);
36
37/* return a new empty symbol dict */
38Jbig2SymbolDict *jbig2_sd_new(Jbig2Ctx *ctx, uint32_t n_symbols);
39
40/* release the memory associated with a symbol dict */
41void jbig2_sd_release(Jbig2Ctx *ctx, Jbig2SymbolDict *dict);
42
43/* generate a new symbol dictionary by concatenating a list of
44 existing dictionaries */
45Jbig2SymbolDict *jbig2_sd_cat(Jbig2Ctx *ctx, uint32_t n_dicts, Jbig2SymbolDict **dicts);
46
47/* count the number of dictionary segments referred
48 to by the given segment */
49uint32_t jbig2_sd_count_referred(Jbig2Ctx *ctx, Jbig2Segment *segment);
50
51/* return an array of pointers to symbol dictionaries referred
52 to by a segment */
53Jbig2SymbolDict **jbig2_sd_list_referred(Jbig2Ctx *ctx, Jbig2Segment *segment);
54
55#endif /* _JBIG2_SYMBOL_DICT_H */
56