Home | History | Annotate | Download | only in jbig2
      1 // Copyright 2014 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 _JBIG2_SEGMENT_H_
      8 #define _JBIG2_SEGMENT_H_
      9 #include "JBig2_Define.h"
     10 #include "JBig2_SymbolDict.h"
     11 #include "JBig2_PatternDict.h"
     12 #include "JBig2_Module.h"
     13 #include "JBig2_HuffmanTable.h"
     14 #define JBIG2_GET_INT32(buf) (((buf)[0]<<24) | ((buf)[1]<<16) | ((buf)[2]<<8) | (buf)[3])
     15 #define JBIG2_GET_INT16(buf) (((buf)[0]<<8) | (buf)[1])
     16 typedef enum {
     17     JBIG2_SEGMENT_HEADER_UNPARSED,
     18     JBIG2_SEGMENT_DATA_UNPARSED,
     19     JBIG2_SEGMENT_PARSE_COMPLETE,
     20     JBIG2_SEGMENT_PAUSED,
     21     JBIG2_SEGMENT_ERROR
     22 } JBig2_SegmentState;
     23 typedef enum {
     24     JBIG2_VOID_POINTER	= 0,
     25     JBIG2_IMAGE_POINTER,
     26     JBIG2_SYMBOL_DICT_POINTER,
     27     JBIG2_PATTERN_DICT_POINTER,
     28     JBIG2_HUFFMAN_TABLE_POINTER
     29 } JBig2_ResultType;
     30 class CJBig2_Segment : public CJBig2_Object
     31 {
     32 public:
     33 
     34     CJBig2_Segment();
     35 
     36     ~CJBig2_Segment();
     37 
     38     void init();
     39 
     40     void clean();
     41 public:
     42     FX_DWORD m_dwNumber;
     43     union {
     44         struct {
     45             FX_BYTE type					:	6;
     46             FX_BYTE page_association_size	:	1;
     47             FX_BYTE deferred_non_retain		:	1;
     48         } s;
     49         FX_BYTE c;
     50     } m_cFlags;
     51     FX_INT32 m_nReferred_to_segment_count;
     52     FX_DWORD * m_pReferred_to_segment_numbers;
     53     FX_DWORD m_dwPage_association;
     54     FX_DWORD m_dwData_length;
     55 
     56     FX_DWORD m_dwHeader_Length;
     57     FX_BYTE  *m_pData;
     58     JBig2_SegmentState m_State;
     59     JBig2_ResultType m_nResultType;
     60     union {
     61         CJBig2_SymbolDict	*sd;
     62         CJBig2_PatternDict	*pd;
     63         CJBig2_Image		*im;
     64         CJBig2_HuffmanTable	*ht;
     65         FX_LPVOID			 vd;
     66     } m_Result;
     67 };
     68 #endif
     69