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