Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
JBig2_SddProc.h
Go to the documentation of this file.
1// Copyright 2015 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_SDDPROC_H_
8#define CORE_FXCODEC_JBIG2_JBIG2_SDDPROC_H_
9
10#include <stdint.h>
11
12#include <array>
13#include <memory>
14#include <vector>
15
16#include "core/fxcodec/jbig2/JBig2_ArithDecoder.h"
17#include "core/fxcrt/span.h"
18#include "core/fxcrt/unowned_ptr.h"
19
22class CJBig2_Image;
24
26 public:
29
31 CJBig2_ArithDecoder* pArithDecoder,
32 pdfium::span<JBig2ArithCtx> gbContexts,
33 pdfium::span<JBig2ArithCtx> grContexts);
34
36 CJBig2_BitStream* pStream,
37 pdfium::span<JBig2ArithCtx> gbContexts,
38 pdfium::span<JBig2ArithCtx> grContexts);
39
40 bool SDHUFF;
43 uint8_t SDTEMPLATE;
44 uint32_t SDNUMINSYMS;
45 uint32_t SDNUMNEWSYMS;
46 uint32_t SDNUMEXSYMS;
52 std::array<int8_t, 8> SDAT;
53 std::array<int8_t, 4> SDRAT;
54
55 private:
56 // Reads from `SDINSYMS` if `i` is in-bounds. Otherwise, reduce `i` by
57 // `SDNUMINSYMS` and read from `new_syms` at the new index.
58 CJBig2_Image* GetImage(
59 uint32_t i,
60 pdfium::span<const std::unique_ptr<CJBig2_Image>> new_syms) const;
61};
62
63#endif // CORE_FXCODEC_JBIG2_JBIG2_SDDPROC_H_
static const size_t kSymbolDictCacheMaxSize
JBig2_Result
#define JBIG2_MIN_SEGMENT_SIZE
constexpr uint32_t kJBig2MaxNewSymbols
constexpr int32_t kJBig2MaxReferredSegmentCount
constexpr uint32_t kJBig2MaxExportSymbols
constexpr int32_t kJBig2OOB
constexpr int32_t kJBig2MaxImageSize
constexpr uint32_t kJBig2MaxPatternIndex
std::pair< uint64_t, uint32_t > CJBig2_CompoundKey
JBig2ComposeOp
Definition JBig2_Image.h:22
@ JBIG2_COMPOSE_REPLACE
Definition JBig2_Image.h:27
@ JBIG2_COMPOSE_AND
Definition JBig2_Image.h:24
@ JBIG2_COMPOSE_XOR
Definition JBig2_Image.h:25
@ JBIG2_COMPOSE_OR
Definition JBig2_Image.h:23
@ JBIG2_COMPOSE_XNOR
Definition JBig2_Image.h:26
JBig2_ResultType
@ JBIG2_IMAGE_POINTER
@ JBIG2_VOID_POINTER
@ JBIG2_HUFFMAN_TABLE_POINTER
@ JBIG2_SYMBOL_DICT_POINTER
@ JBIG2_PATTERN_DICT_POINTER
JBig2_SegmentState
@ JBIG2_SEGMENT_DATA_UNPARSED
@ JBIG2_SEGMENT_PARSE_COMPLETE
@ JBIG2_SEGMENT_ERROR
@ JBIG2_SEGMENT_HEADER_UNPARSED
@ JBIG2_SEGMENT_PAUSED
JBig2Corner
#define DCHECK
Definition check.h:33
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)
static bool HuffmanAssignCode(pdfium::span< JBig2HuffmanCode > symcodes)
bool GetFirstPage(pdfium::span< uint8_t > pBuf, int32_t width, int32_t height, int32_t stride, PauseIndicatorIface *pPause)
bool Continue(PauseIndicatorIface *pPause)
FXCODEC_STATUS GetProcessingStatus() const
UnownedPtr< PauseIndicatorIface > pPause
UnownedPtr< CJBig2_ArithDecoder > pArithDecoder
pdfium::span< JBig2ArithCtx > gbContexts
UnownedPtr< std::unique_ptr< CJBig2_Image > > pImage
FXCODEC_STATUS StartDecodeMMR(std::unique_ptr< CJBig2_Image > *pImage, CJBig2_BitStream *pStream)
UnownedPtr< CJBig2_Image > SKIP
std::unique_ptr< CJBig2_Image > DecodeArith(CJBig2_ArithDecoder *pArithDecoder, pdfium::span< JBig2ArithCtx > gbContexts)
std::array< int8_t, 8 > GBAT
const FX_RECT & GetReplaceRect() const
FXCODEC_STATUS ContinueDecode(ProgressiveArithDecodeState *pState)
FXCODEC_STATUS StartDecodeArith(ProgressiveArithDecodeState *pState)
std::unique_ptr< CJBig2_Image > Decode(CJBig2_ArithDecoder *pArithDecoder, pdfium::span< JBig2ArithCtx > grContexts)
UnownedPtr< CJBig2_Image > GRREFERENCE
std::array< int8_t, 4 > GRAT
JBig2ComposeOp HCOMBOP
std::unique_ptr< CJBig2_Image > DecodeMMR(CJBig2_BitStream *pStream)
std::unique_ptr< CJBig2_Image > DecodeArith(CJBig2_ArithDecoder *pArithDecoder, pdfium::span< JBig2ArithCtx > gbContexts, PauseIndicatorIface *pPause)
UnownedPtr< const std::vector< std::unique_ptr< CJBig2_Image > > > HPATS
static constexpr size_t kNumHuffmanTables
const std::vector< int > & GetRANGELEN() const
const std::vector< JBig2HuffmanCode > & GetCODES() const
CJBig2_HuffmanTable(CJBig2_BitStream *pStream)
uint32_t Size() const
const std::vector< int > & GetRANGELOW() const
CJBig2_Image(int32_t w, int32_t h, int32_t stride, pdfium::span< uint8_t > pBuf)
bool ComposeFrom(int32_t x, int32_t y, CJBig2_Image *pSrc, JBig2ComposeOp op)
void SetPixel(int32_t x, int32_t y, int v)
std::unique_ptr< CJBig2_Image > SubImage(int32_t x, int32_t y, int32_t w, int32_t h)
int32_t height() const
Definition JBig2_Image.h:43
CJBig2_Image(int32_t w, int32_t h)
uint8_t * GetLine(int32_t y) const
Definition JBig2_Image.h:56
void CopyLine(int32_t hTo, int32_t hFrom)
CJBig2_Image(const CJBig2_Image &other)
bool ComposeToWithRect(CJBig2_Image *pDst, int32_t x, int32_t y, const FX_RECT &rtSrc, JBig2ComposeOp op)
uint8_t * data() const
Definition JBig2_Image.h:46
static bool IsValidImageSize(int32_t w, int32_t h)
int GetPixel(int32_t x, int32_t y) const
int32_t stride() const
Definition JBig2_Image.h:44
bool ComposeTo(CJBig2_Image *pDst, int32_t x, int32_t y, JBig2ComposeOp op)
UNSAFE_BUFFER_USAGE uint8_t * GetLineUnsafe(int32_t y) const
Definition JBig2_Image.h:52
int32_t width() const
Definition JBig2_Image.h:42
void Fill(bool v)
void Expand(int32_t h, bool v)
bool ComposeFromWithRect(int32_t x, int32_t y, CJBig2_Image *pSrc, const FX_RECT &rtSrc, JBig2ComposeOp op)
std::unique_ptr< CJBig2_PatternDict > DecodeArith(CJBig2_ArithDecoder *pArithDecoder, pdfium::span< JBig2ArithCtx > gbContexts, PauseIndicatorIface *pPause)
std::unique_ptr< CJBig2_PatternDict > DecodeMMR(CJBig2_BitStream *pStream)
CJBig2_PatternDict(uint32_t dict_size)
std::vector< std::unique_ptr< CJBig2_Image > > HDPATS
std::array< int8_t, 8 > SDAT
UnownedPtr< const CJBig2_HuffmanTable > SDHUFFDW
std::array< int8_t, 4 > SDRAT
UnownedPtr< const CJBig2_HuffmanTable > SDHUFFDH
uint32_t SDNUMINSYMS
UnownedPtr< const CJBig2_HuffmanTable > SDHUFFBMSIZE
uint32_t SDNUMEXSYMS
std::unique_ptr< CJBig2_SymbolDict > DecodeHuffman(CJBig2_BitStream *pStream, pdfium::span< JBig2ArithCtx > gbContexts, pdfium::span< JBig2ArithCtx > grContexts)
uint32_t SDNUMNEWSYMS
std::unique_ptr< CJBig2_SymbolDict > DecodeArith(CJBig2_ArithDecoder *pArithDecoder, pdfium::span< JBig2ArithCtx > gbContexts, pdfium::span< JBig2ArithCtx > grContexts)
std::vector< UnownedPtr< CJBig2_Image > > SDINSYMS
UnownedPtr< const CJBig2_HuffmanTable > SDHUFFAGGINST
std::vector< uint32_t > m_Referred_to_segment_numbers
std::unique_ptr< CJBig2_SymbolDict > m_SymbolDict
std::unique_ptr< CJBig2_HuffmanTable > m_HuffmanTable
JBig2_SegmentState m_State
std::unique_ptr< CJBig2_PatternDict > m_PatternDict
JBig2_ResultType m_nResultType
uint8_t deferred_non_retain
uint8_t page_association_size
uint32_t m_dwData_length
uint32_t m_dwHeader_Length
uint32_t m_dwDataOffset
int32_t m_nReferred_to_segment_count
uint32_t m_dwPage_association
std::unique_ptr< CJBig2_Image > m_Image
uint32_t m_dwNumber
const std::vector< JBig2ArithCtx > & GrContexts() const
void SetGrContexts(std::vector< JBig2ArithCtx > grContexts)
void SetGbContexts(std::vector< JBig2ArithCtx > gbContexts)
std::unique_ptr< CJBig2_SymbolDict > DeepCopy() const
size_t NumImages() const
void AddImage(std::unique_ptr< CJBig2_Image > image)
const std::vector< JBig2ArithCtx > & GbContexts() const
CJBig2_Image * GetImage(size_t index) const
virtual bool NeedToPauseNow()=0
#define UNSAFE_BUFFERS(...)
#define UNSAFE_BUFFER_USAGE
FXCODEC_STATUS
pdfium::CheckedNumeric< uint32_t > FX_SAFE_UINT32
pdfium::CheckedNumeric< int32_t > FX_SAFE_INT32
bool m_bIsStriped
Definition JBig2_Page.h:19
uint16_t m_wMaxStripeSize
Definition JBig2_Page.h:20
uint32_t m_dwHeight
Definition JBig2_Page.h:14
bool m_bDefaultPixelValue
Definition JBig2_Page.h:18
uint32_t m_dwResolutionY
Definition JBig2_Page.h:16
uint32_t m_dwWidth
Definition JBig2_Page.h:13
uint32_t m_dwResolutionX
Definition JBig2_Page.h:15
#define UNOWNED_PTR_EXCLUSION