Initial commit.
[pdfium.git] / core / src / fxcodec / jbig2 / JBig2_Segment.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4  \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #ifndef _JBIG2_SEGMENT_H_\r
8 #define _JBIG2_SEGMENT_H_\r
9 #include "JBig2_Define.h"\r
10 #include "JBig2_SymbolDict.h"\r
11 #include "JBig2_PatternDict.h"\r
12 #include "JBig2_Module.h"\r
13 #include "JBig2_HuffmanTable.h"\r
14 #define JBIG2_GET_INT32(buf) (((buf)[0]<<24) | ((buf)[1]<<16) | ((buf)[2]<<8) | (buf)[3])\r
15 #define JBIG2_GET_INT16(buf) (((buf)[0]<<8) | (buf)[1])\r
16 typedef enum {\r
17     JBIG2_SEGMENT_HEADER_UNPARSED,\r
18     JBIG2_SEGMENT_DATA_UNPARSED,\r
19     JBIG2_SEGMENT_PARSE_COMPLETE,\r
20     JBIG2_SEGMENT_PAUSED,\r
21     JBIG2_SEGMENT_ERROR\r
22 } JBig2_SegmentState;\r
23 typedef enum {\r
24     JBIG2_VOID_POINTER  = 0,\r
25     JBIG2_IMAGE_POINTER,\r
26     JBIG2_SYMBOL_DICT_POINTER,\r
27     JBIG2_PATTERN_DICT_POINTER,\r
28     JBIG2_HUFFMAN_TABLE_POINTER\r
29 } JBig2_ResultType;\r
30 class CJBig2_Segment : public CJBig2_Object\r
31 {\r
32 public:\r
33 \r
34     CJBig2_Segment();\r
35 \r
36     ~CJBig2_Segment();\r
37 \r
38     void init();\r
39 \r
40     void clean();\r
41 public:\r
42     FX_DWORD m_dwNumber;\r
43     union {\r
44         struct {\r
45             FX_BYTE type                                        :       6;\r
46             FX_BYTE page_association_size       :       1;\r
47             FX_BYTE deferred_non_retain         :       1;\r
48         } s;\r
49         FX_BYTE c;\r
50     } m_cFlags;\r
51     FX_INT32 m_nReferred_to_segment_count;\r
52     FX_DWORD * m_pReferred_to_segment_numbers;\r
53     FX_DWORD m_dwPage_association;\r
54     FX_DWORD m_dwData_length;\r
55 \r
56     FX_DWORD m_dwHeader_Length;\r
57     FX_BYTE  *m_pData;\r
58     JBig2_SegmentState m_State;\r
59     JBig2_ResultType m_nResultType;\r
60     union {\r
61         CJBig2_SymbolDict       *sd;\r
62         CJBig2_PatternDict      *pd;\r
63         CJBig2_Image            *im;\r
64         CJBig2_HuffmanTable     *ht;\r
65         FX_LPVOID                        vd;\r
66     } m_Result;\r
67 };\r
68 #endif\r