// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef _JBIG2_SEGMENT_H_ #define _JBIG2_SEGMENT_H_ #include "JBig2_Define.h" #include "JBig2_SymbolDict.h" #include "JBig2_PatternDict.h" #include "JBig2_Module.h" #include "JBig2_HuffmanTable.h" #define JBIG2_GET_INT32(buf) (((buf)[0]<<24) | ((buf)[1]<<16) | ((buf)[2]<<8) | (buf)[3]) #define JBIG2_GET_INT16(buf) (((buf)[0]<<8) | (buf)[1]) typedef enum { JBIG2_SEGMENT_HEADER_UNPARSED, JBIG2_SEGMENT_DATA_UNPARSED, JBIG2_SEGMENT_PARSE_COMPLETE, JBIG2_SEGMENT_PAUSED, JBIG2_SEGMENT_ERROR } JBig2_SegmentState; typedef enum { JBIG2_VOID_POINTER = 0, JBIG2_IMAGE_POINTER, JBIG2_SYMBOL_DICT_POINTER, JBIG2_PATTERN_DICT_POINTER, JBIG2_HUFFMAN_TABLE_POINTER } JBig2_ResultType; class CJBig2_Segment : public CJBig2_Object { public: CJBig2_Segment(); ~CJBig2_Segment(); void init(); void clean(); public: FX_DWORD m_dwNumber; union { struct { FX_BYTE type : 6; FX_BYTE page_association_size : 1; FX_BYTE deferred_non_retain : 1; } s; FX_BYTE c; } m_cFlags; FX_INT32 m_nReferred_to_segment_count; FX_DWORD * m_pReferred_to_segment_numbers; FX_DWORD m_dwPage_association; FX_DWORD m_dwData_length; FX_DWORD m_dwHeader_Length; FX_BYTE *m_pData; JBig2_SegmentState m_State; JBig2_ResultType m_nResultType; union { CJBig2_SymbolDict *sd; CJBig2_PatternDict *pd; CJBig2_Image *im; CJBig2_HuffmanTable *ht; FX_LPVOID vd; } m_Result; }; #endif