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