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_PAGE_H |
21 | #define _JBIG2_PAGE_H |
22 | |
23 | /* the page structure handles decoded page |
24 | results. it's allocated by a 'page info' |
25 | segment and marked complete by an 'end of page' |
26 | segment. |
27 | */ |
28 | typedef enum { |
29 | JBIG2_PAGE_FREE, |
30 | JBIG2_PAGE_NEW, |
31 | JBIG2_PAGE_COMPLETE, |
32 | JBIG2_PAGE_RETURNED, |
33 | JBIG2_PAGE_RELEASED |
34 | } Jbig2PageState; |
35 | |
36 | struct _Jbig2Page { |
37 | Jbig2PageState state; |
38 | uint32_t number; |
39 | uint32_t height, width; /* in pixels */ |
40 | uint32_t x_resolution, y_resolution; /* in pixels per meter */ |
41 | uint16_t stripe_size; |
42 | bool striped; |
43 | uint32_t end_row; |
44 | uint8_t flags; |
45 | Jbig2Image *image; |
46 | }; |
47 | |
48 | int jbig2_page_info(Jbig2Ctx *ctx, Jbig2Segment *segment, const uint8_t *segment_data); |
49 | int jbig2_end_of_stripe(Jbig2Ctx *ctx, Jbig2Segment *segment, const uint8_t *segment_data); |
50 | int jbig2_end_of_page(Jbig2Ctx *ctx, Jbig2Segment *segment, const uint8_t *segment_data); |
51 | int jbig2_page_add_result(Jbig2Ctx *ctx, Jbig2Page *page, Jbig2Image *src, uint32_t x, uint32_t y, Jbig2ComposeOp op); |
52 | |
53 | #endif /* _JBIG2_PAGE_H */ |
54 | |