Home | History | Annotate | Download | only in jbig2
      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