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