Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
JBig2_Context.h
Go to the documentation of this file.
1
// Copyright 2014 The PDFium Authors
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
CORE_FXCODEC_JBIG2_JBIG2_CONTEXT_H_
8
#
define
CORE_FXCODEC_JBIG2_JBIG2_CONTEXT_H_
9
10
#
include
<
stddef
.
h
>
11
#
include
<
stdint
.
h
>
12
13
#
include
<
list
>
14
#
include
<
memory
>
15
#
include
<
utility
>
16
#
include
<
vector
>
17
18
#
include
"core/fxcodec/fx_codec_def.h"
19
#
include
"core/fxcodec/jbig2/JBig2_DocumentContext.h"
20
#
include
"core/fxcodec/jbig2/JBig2_Page.h"
21
#
include
"core/fxcodec/jbig2/JBig2_Segment.h"
22
#
include
"core/fxcrt/span.h"
23
#
include
"core/fxcrt/unowned_ptr.h"
24
25
class
CJBig2_ArithDecoder
;
26
class
CJBig2_GRDProc
;
27
class
PauseIndicatorIface
;
28
29
#
define
JBIG2_MIN_SEGMENT_SIZE
11
30
31
enum
class
JBig2_Result
{
kSuccess
,
kFailure
,
kEndReached
};
32
33
class
CJBig2_Context
{
34
public
:
35
static
std
::
unique_ptr
<
CJBig2_Context
>
Create
(
36
pdfium::span<
const
uint8_t> pGlobalSpan,
37
uint64_t global_key,
38
pdfium::span<
const
uint8_t> pSrcSpan,
39
uint64_t src_key,
40
std::list<CJBig2_CachePair>* pSymbolDictCache);
41
42
~
CJBig2_Context
();
43
44
static
bool
HuffmanAssignCode
(pdfium::span<JBig2HuffmanCode> symcodes);
45
46
bool
GetFirstPage
(pdfium::span<uint8_t> pBuf,
47
int32_t width,
48
int32_t height,
49
int32_t stride,
50
PauseIndicatorIface
* pPause);
51
52
bool
Continue
(
PauseIndicatorIface
* pPause);
53
FXCODEC_STATUS
GetProcessingStatus
()
const
{
return
m_ProcessingStatus; }
54
55
private
:
56
CJBig2_Context(pdfium::span<
const
uint8_t> pSrcSpan,
57
uint64_t src_key,
58
std::list<CJBig2_CachePair>* pSymbolDictCache,
59
bool
bIsGlobal);
60
61
JBig2_Result
DecodeSequential(
PauseIndicatorIface
* pPause);
62
63
CJBig2_Segment
* FindSegmentByNumber(uint32_t dwNumber);
64
CJBig2_Segment
* FindReferredTableSegmentByIndex(
CJBig2_Segment
* pSegment,
65
int32_t nIndex);
66
67
JBig2_Result
ParseSegmentHeader(
CJBig2_Segment
* pSegment);
68
JBig2_Result
ParseSegmentData(
CJBig2_Segment
* pSegment,
69
PauseIndicatorIface
* pPause);
70
JBig2_Result
ProcessingParseSegmentData(
CJBig2_Segment
* pSegment,
71
PauseIndicatorIface
* pPause);
72
JBig2_Result
ParseSymbolDict(
CJBig2_Segment
* pSegment);
73
JBig2_Result
ParseTextRegion(
CJBig2_Segment
* pSegment);
74
JBig2_Result
ParsePatternDict(
CJBig2_Segment
* pSegment,
75
PauseIndicatorIface
* pPause);
76
JBig2_Result
ParseHalftoneRegion(
CJBig2_Segment
* pSegment,
77
PauseIndicatorIface
* pPause);
78
JBig2_Result
ParseGenericRegion(
CJBig2_Segment
* pSegment,
79
PauseIndicatorIface
* pPause);
80
JBig2_Result
ParseGenericRefinementRegion(
CJBig2_Segment
* pSegment);
81
JBig2_Result
ParseTable(
CJBig2_Segment
* pSegment);
82
JBig2_Result
ParseRegionInfo(
JBig2RegionInfo
* pRI);
83
84
std::vector<JBig2HuffmanCode> DecodeSymbolIDHuffmanTable(uint32_t SBNUMSYMS);
85
const
CJBig2_HuffmanTable
* GetHuffmanTable(size_t idx);
86
87
std::unique_ptr<CJBig2_Context> m_pGlobalContext;
88
std::unique_ptr<CJBig2_BitStream> m_pStream;
89
std::vector<std::unique_ptr<CJBig2_Segment>> m_SegmentList;
90
std::vector<std::unique_ptr<JBig2PageInfo>> m_PageInfoList;
91
std::unique_ptr<CJBig2_Image> m_pPage;
92
std::vector<std::unique_ptr<CJBig2_HuffmanTable>> m_HuffmanTables;
93
const
bool
m_bIsGlobal;
94
bool
m_bInPage =
false
;
95
bool
m_bBufSpecified =
false
;
96
int32_t m_PauseStep = 10;
97
FXCODEC_STATUS
m_ProcessingStatus =
FXCODEC_STATUS
::
kFrameReady
;
98
std::vector<JBig2ArithCtx> m_gbContexts;
99
std::unique_ptr<CJBig2_ArithDecoder> m_pArithDecoder;
100
std::unique_ptr<CJBig2_GRDProc> m_pGRD;
101
std::unique_ptr<CJBig2_Segment> m_pSegment;
102
uint32_t m_nOffset = 0;
103
JBig2RegionInfo
m_ri = {};
104
UnownedPtr<std::list<CJBig2_CachePair>>
const
m_pSymbolDictCache;
105
};
106
107
#
endif
// CORE_FXCODEC_JBIG2_JBIG2_CONTEXT_H_
kSymbolDictCacheMaxSize
static const size_t kSymbolDictCacheMaxSize
Definition
JBig2_Context.cpp:49
JBig2_Result
JBig2_Result
Definition
JBig2_Context.h:31
JBig2_Result::kFailure
@ kFailure
Definition
JBig2_Context.h:31
JBig2_Result::kSuccess
@ kSuccess
Definition
JBig2_Context.h:31
JBig2_Result::kEndReached
@ kEndReached
Definition
JBig2_Context.h:31
JBIG2_MIN_SEGMENT_SIZE
#define JBIG2_MIN_SEGMENT_SIZE
Definition
JBig2_Context.h:29
kJBig2MaxNewSymbols
constexpr uint32_t kJBig2MaxNewSymbols
Definition
JBig2_Define.h:29
kJBig2MaxReferredSegmentCount
constexpr int32_t kJBig2MaxReferredSegmentCount
Definition
JBig2_Define.h:27
kJBig2MaxExportSymbols
constexpr uint32_t kJBig2MaxExportSymbols
Definition
JBig2_Define.h:28
kJBig2MaxPatternIndex
constexpr uint32_t kJBig2MaxPatternIndex
Definition
JBig2_Define.h:30
CJBig2_CompoundKey
std::pair< uint64_t, uint32_t > CJBig2_CompoundKey
Definition
JBig2_DocumentContext.h:17
JBig2ComposeOp
JBig2ComposeOp
Definition
JBig2_Image.h:22
JBIG2_IMAGE_POINTER
@ JBIG2_IMAGE_POINTER
Definition
JBig2_Segment.h:28
JBIG2_HUFFMAN_TABLE_POINTER
@ JBIG2_HUFFMAN_TABLE_POINTER
Definition
JBig2_Segment.h:31
JBIG2_SYMBOL_DICT_POINTER
@ JBIG2_SYMBOL_DICT_POINTER
Definition
JBig2_Segment.h:29
JBIG2_PATTERN_DICT_POINTER
@ JBIG2_PATTERN_DICT_POINTER
Definition
JBig2_Segment.h:30
JBIG2_SEGMENT_DATA_UNPARSED
@ JBIG2_SEGMENT_DATA_UNPARSED
Definition
JBig2_Segment.h:20
JBig2Corner
JBig2Corner
Definition
JBig2_TrdProc.h:44
DCHECK
#define DCHECK
Definition
check.h:33
CJBig2_ArithDecoder
Definition
JBig2_ArithDecoder.h:41
CJBig2_Context
Definition
JBig2_Context.h:33
CJBig2_Context::Create
static std::unique_ptr< CJBig2_Context > Create(pdfium::span< const uint8_t > pGlobalSpan, uint64_t global_key, pdfium::span< const uint8_t > pSrcSpan, uint64_t src_key, std::list< CJBig2_CachePair > *pSymbolDictCache)
Definition
JBig2_Context.cpp:54
CJBig2_Context::~CJBig2_Context
~CJBig2_Context()
CJBig2_Context::HuffmanAssignCode
static bool HuffmanAssignCode(pdfium::span< JBig2HuffmanCode > symcodes)
Definition
JBig2_Context.cpp:1202
CJBig2_Context::GetFirstPage
bool GetFirstPage(pdfium::span< uint8_t > pBuf, int32_t width, int32_t height, int32_t stride, PauseIndicatorIface *pPause)
Definition
JBig2_Context.cpp:129
CJBig2_Context::Continue
bool Continue(PauseIndicatorIface *pPause)
Definition
JBig2_Context.cpp:152
CJBig2_Context::GetProcessingStatus
FXCODEC_STATUS GetProcessingStatus() const
Definition
JBig2_Context.h:53
CJBig2_GRDProc::ProgressiveArithDecodeState
Definition
JBig2_GrdProc.h:29
CJBig2_GRDProc
Definition
JBig2_GrdProc.h:27
CJBig2_GRRDProc
Definition
JBig2_GrrdProc.h:22
CJBig2_HTRDProc
Definition
JBig2_HtrdProc.h:24
CJBig2_HuffmanTable
Definition
JBig2_HuffmanTable.h:19
CJBig2_Image
Definition
JBig2_Image.h:30
CJBig2_Image::IsValidImageSize
static bool IsValidImageSize(int32_t w, int32_t h)
Definition
JBig2_Image.cpp:100
CJBig2_PDDProc
Definition
JBig2_PddProc.h:23
CJBig2_PatternDict
Definition
JBig2_PatternDict.h:16
CJBig2_PatternDict::NUMPATS
uint32_t NUMPATS
Definition
JBig2_PatternDict.h:21
CJBig2_SDDProc
Definition
JBig2_SddProc.h:25
CJBig2_Segment
Definition
JBig2_Segment.h:34
CJBig2_Segment::m_Key
uint64_t m_Key
Definition
JBig2_Segment.h:54
CJBig2_Segment::m_State
JBig2_SegmentState m_State
Definition
JBig2_Segment.h:55
CJBig2_Segment::m_nResultType
JBig2_ResultType m_nResultType
Definition
JBig2_Segment.h:56
CJBig2_Segment::m_dwDataOffset
uint32_t m_dwDataOffset
Definition
JBig2_Segment.h:53
CJBig2_Segment::m_nReferred_to_segment_count
int32_t m_nReferred_to_segment_count
Definition
JBig2_Segment.h:48
CJBig2_Segment::m_dwPage_association
uint32_t m_dwPage_association
Definition
JBig2_Segment.h:50
CJBig2_Segment::m_dwNumber
uint32_t m_dwNumber
Definition
JBig2_Segment.h:39
CJBig2_SymbolDict
Definition
JBig2_SymbolDict.h:18
CJBig2_TRDProc
Definition
JBig2_TrdProc.h:51
PauseIndicatorIface
Definition
pauseindicator_iface.h:10
PauseIndicatorIface::NeedToPauseNow
virtual bool NeedToPauseNow()=0
pdfium::CFDETextOutLargeBitmapTest
Definition
cfde_textout_unittest.cpp:117
FXCODEC_STATUS
FXCODEC_STATUS
Definition
fx_codec_def.h:10
FXCODEC_STATUS::kFrameReady
@ kFrameReady
Definition
fx_codec_def.h:12
FXCODEC_STATUS::kDecodeFinished
@ kDecodeFinished
Definition
fx_codec_def.h:16
FXCODEC_STATUS::kDecodeReady
@ kDecodeReady
Definition
fx_codec_def.h:14
FXCODEC_STATUS::kError
@ kError
Definition
fx_codec_def.h:11
FXCODEC_STATUS::kDecodeToBeContinued
@ kDecodeToBeContinued
Definition
fx_codec_def.h:15
FX_SAFE_UINT32
pdfium::CheckedNumeric< uint32_t > FX_SAFE_UINT32
Definition
fx_safe_types.h:14
FX_SAFE_INT32
pdfium::CheckedNumeric< int32_t > FX_SAFE_INT32
Definition
fx_safe_types.h:15
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
FX_RECT
Definition
fx_coordinates.h:144
JBig2HuffmanCode
Definition
JBig2_Define.h:20
JBig2PageInfo
Definition
JBig2_Page.h:12
JBig2RegionInfo
Definition
JBig2_Define.h:12
JBig2RegionInfo::height
int32_t height
Definition
JBig2_Define.h:14
JBig2RegionInfo::width
int32_t width
Definition
JBig2_Define.h:13
qtwebengine
src
3rdparty
chromium
third_party
pdfium
core
fxcodec
jbig2
JBig2_Context.h
Generated on
for Qt by
1.18.0