summaryrefslogtreecommitdiff
path: root/core/fxcodec/jbig2/JBig2_Segment.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcodec/jbig2/JBig2_Segment.h')
-rw-r--r--core/fxcodec/jbig2/JBig2_Segment.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/core/fxcodec/jbig2/JBig2_Segment.h b/core/fxcodec/jbig2/JBig2_Segment.h
new file mode 100644
index 0000000000..61550ada09
--- /dev/null
+++ b/core/fxcodec/jbig2/JBig2_Segment.h
@@ -0,0 +1,66 @@
+// 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 CORE_FXCODEC_JBIG2_JBIG2_SEGMENT_H_
+#define CORE_FXCODEC_JBIG2_JBIG2_SEGMENT_H_
+
+#include "core/fxcodec/jbig2/JBig2_Define.h"
+#include "core/fxcodec/jbig2/JBig2_HuffmanTable.h"
+#include "core/fxcodec/jbig2/JBig2_PatternDict.h"
+#include "core/fxcodec/jbig2/JBig2_SymbolDict.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_Segment();
+
+ ~CJBig2_Segment();
+
+ FX_DWORD m_dwNumber;
+ union {
+ struct {
+ uint8_t type : 6;
+ uint8_t page_association_size : 1;
+ uint8_t deferred_non_retain : 1;
+ } s;
+ uint8_t c;
+ } m_cFlags;
+ int32_t 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_DWORD m_dwObjNum;
+ FX_DWORD m_dwDataOffset;
+ JBig2_SegmentState m_State;
+ JBig2_ResultType m_nResultType;
+ union {
+ CJBig2_SymbolDict* sd;
+ CJBig2_PatternDict* pd;
+ CJBig2_Image* im;
+ CJBig2_HuffmanTable* ht;
+ void* vd;
+ } m_Result;
+};
+
+#endif // CORE_FXCODEC_JBIG2_JBIG2_SEGMENT_H_