// 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 |