• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2015 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 
7 #ifndef CORE_FXCODEC_JBIG2_JBIG2_TRDPROC_H_
8 #define CORE_FXCODEC_JBIG2_JBIG2_TRDPROC_H_
9 
10 #include <memory>
11 #include <vector>
12 
13 #include "core/fxcodec/jbig2/JBig2_Image.h"
14 #include "core/fxcrt/fx_system.h"
15 
16 class CJBig2_ArithDecoder;
17 class CJBig2_ArithIaidDecoder;
18 class CJBig2_ArithIntDecoder;
19 class CJBig2_BitStream;
20 class CJBig2_HuffmanTable;
21 struct JBig2ArithCtx;
22 struct JBig2HuffmanCode;
23 
24 struct JBig2IntDecoderState {
25   CJBig2_ArithIntDecoder* IADT;
26   CJBig2_ArithIntDecoder* IAFS;
27   CJBig2_ArithIntDecoder* IADS;
28   CJBig2_ArithIntDecoder* IAIT;
29   CJBig2_ArithIntDecoder* IARI;
30   CJBig2_ArithIntDecoder* IARDW;
31   CJBig2_ArithIntDecoder* IARDH;
32   CJBig2_ArithIntDecoder* IARDX;
33   CJBig2_ArithIntDecoder* IARDY;
34   CJBig2_ArithIaidDecoder* IAID;
35 };
36 
37 enum JBig2Corner {
38   JBIG2_CORNER_BOTTOMLEFT = 0,
39   JBIG2_CORNER_TOPLEFT = 1,
40   JBIG2_CORNER_BOTTOMRIGHT = 2,
41   JBIG2_CORNER_TOPRIGHT = 3
42 };
43 
44 class CJBig2_TRDProc {
45  public:
46   CJBig2_TRDProc();
47   ~CJBig2_TRDProc();
48 
49   std::unique_ptr<CJBig2_Image> decode_Huffman(CJBig2_BitStream* pStream,
50                                                JBig2ArithCtx* grContext);
51 
52   std::unique_ptr<CJBig2_Image> decode_Arith(CJBig2_ArithDecoder* pArithDecoder,
53                                              JBig2ArithCtx* grContext,
54                                              JBig2IntDecoderState* pIDS);
55 
56   bool SBHUFF;
57   bool SBREFINE;
58   uint32_t SBW;
59   uint32_t SBH;
60   uint32_t SBNUMINSTANCES;
61   uint32_t SBSTRIPS;
62   uint32_t SBNUMSYMS;
63 
64   std::vector<JBig2HuffmanCode> SBSYMCODES;
65   uint8_t SBSYMCODELEN;
66 
67   CJBig2_Image** SBSYMS;
68   bool SBDEFPIXEL;
69 
70   JBig2ComposeOp SBCOMBOP;
71   bool TRANSPOSED;
72 
73   JBig2Corner REFCORNER;
74   int8_t SBDSOFFSET;
75   CJBig2_HuffmanTable* SBHUFFFS;
76   CJBig2_HuffmanTable* SBHUFFDS;
77   CJBig2_HuffmanTable* SBHUFFDT;
78   CJBig2_HuffmanTable* SBHUFFRDW;
79   CJBig2_HuffmanTable* SBHUFFRDH;
80   CJBig2_HuffmanTable* SBHUFFRDX;
81   CJBig2_HuffmanTable* SBHUFFRDY;
82   CJBig2_HuffmanTable* SBHUFFRSIZE;
83   bool SBRTEMPLATE;
84   int8_t SBRAT[4];
85 };
86 
87 #endif  // CORE_FXCODEC_JBIG2_JBIG2_TRDPROC_H_
88