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
cpdf_dib.h
Go to the documentation of this file.
1
// Copyright 2017 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_FPDFAPI_PAGE_CPDF_DIB_H_
8
#
define
CORE_FPDFAPI_PAGE_CPDF_DIB_H_
9
10
#
include
<
stdint
.
h
>
11
12
#
include
<
memory
>
13
#
include
<
vector
>
14
15
#
include
"core/fpdfapi/page/cpdf_colorspace.h"
16
#
include
"core/fxcrt/data_vector.h"
17
#
include
"core/fxcrt/retain_ptr.h"
18
#
include
"core/fxcrt/span.h"
19
#
include
"core/fxcrt/unowned_ptr.h"
20
#
include
"core/fxge/dib/cfx_dibbase.h"
21
22
class
CPDF_Dictionary
;
23
class
CPDF_Document
;
24
class
CPDF_Stream;
25
class
CPDF_StreamAcc;
26
27
struct
DIB_COMP_DATA
{
28
float
m_DecodeMin
;
29
float
m_DecodeStep
;
30
int
m_ColorKeyMin
;
31
int
m_ColorKeyMax
;
32
};
33
34
namespace
fxcodec
{
35
class
Jbig2Context
;
36
class
ScanlineDecoder
;
37
}
// namespace fxcodec
38
39
constexpr
size_t
kHugeImageSize
= 60000000;
40
41
class
CPDF_DIB
final
:
public
CFX_DIBBase
{
42
public
:
43
enum
class
LoadState
:
uint8_t
{
kFail
,
kSuccess
,
kContinue
};
44
45
CONSTRUCT_VIA_MAKE_RETAIN
;
46
47
// CFX_DIBBase:
48
pdfium
::
span
<
const
uint8_t
>
GetScanline
(
int
line)
const
override
;
49
bool
SkipToScanline
(
int
line,
PauseIndicatorIface
* pPause)
const
override
;
50
size_t
GetEstimatedImageMemoryBurden
()
const
override
;
51
52
RetainPtr
<
CPDF_ColorSpace
>
GetColorSpace
()
const
{
return
m_pColorSpace; }
53
uint32_t
GetMatteColor
()
const
{
return
m_MatteColor; }
54
bool
IsJBigImage
()
const
;
55
56
bool
Load
();
57
LoadState
StartLoadDIBBase
(
bool
bHasMask,
58
const
CPDF_Dictionary
* pFormResources,
59
const
CPDF_Dictionary
* pPageResources,
60
bool
bStdCS,
61
CPDF_ColorSpace
::
Family
GroupFamily,
62
bool
bLoadMask,
63
const
CFX_Size
& max_size_required);
64
LoadState
ContinueLoadDIBBase
(
PauseIndicatorIface
* pPause);
65
RetainPtr
<CPDF_DIB>
DetachMask
();
66
67
private
:
68
CPDF_DIB(
CPDF_Document
* pDoc,
RetainPtr
<
const
CPDF_Stream> pStream);
69
~
CPDF_DIB
()
override
;
70
71
struct
JpxSMaskInlineData {
72
JpxSMaskInlineData();
73
~JpxSMaskInlineData();
74
75
int
width = 0;
76
int
height = 0;
77
DataVector<uint8_t> data;
78
};
79
80
bool
LoadInternal(
const
CPDF_Dictionary
* pFormResources,
81
const
CPDF_Dictionary
* pPageResources);
82
bool
ContinueInternal();
83
LoadState
StartLoadMask();
84
LoadState
StartLoadMaskDIB(
RetainPtr
<
const
CPDF_Stream> mask_stream);
85
bool
ContinueToLoadMask();
86
LoadState
ContinueLoadMaskDIB(
PauseIndicatorIface
* pPause);
87
bool
LoadColorInfo(
const
CPDF_Dictionary
* pFormResources,
88
const
CPDF_Dictionary
* pPageResources);
89
bool
GetDecodeAndMaskArray();
90
RetainPtr
<CFX_DIBitmap> LoadJpxBitmap(uint8_t resolution_levels_to_skip);
91
void
LoadPalette();
92
LoadState
CreateDecoder(uint8_t resolution_levels_to_skip);
93
bool
CreateDCTDecoder(pdfium::span<
const
uint8_t> src_span,
94
const
CPDF_Dictionary
* pParams);
95
void
TranslateScanline24bpp(pdfium::span<uint8_t> dest_scan,
96
pdfium::span<
const
uint8_t> src_scan)
const
;
97
bool
TranslateScanline24bppDefaultDecode(
98
pdfium::span<uint8_t> dest_scan,
99
pdfium::span<
const
uint8_t> src_scan)
const
;
100
bool
ValidateDictParam(
const
ByteString
& filter);
101
bool
TransMask()
const
;
102
void
SetMaskProperties();
103
104
uint32_t Get1BitSetValue()
const
;
105
uint32_t Get1BitResetValue()
const
;
106
107
UnownedPtr
<
CPDF_Document
>
const
m_pDocument;
108
RetainPtr
<
const
CPDF_Stream>
const
m_pStream;
109
RetainPtr
<
const
CPDF_Dictionary
> m_pDict;
110
RetainPtr
<CPDF_StreamAcc> m_pStreamAcc;
111
RetainPtr
<
CPDF_ColorSpace
> m_pColorSpace;
112
uint32_t m_bpc = 0;
113
uint32_t m_bpc_orig = 0;
114
uint32_t m_nComponents = 0;
115
CPDF_ColorSpace
::
Family
m_Family =
CPDF_ColorSpace
::
Family
::
kUnknown
;
116
CPDF_ColorSpace
::
Family
m_GroupFamily =
CPDF_ColorSpace
::
Family
::
kUnknown
;
117
uint32_t m_MatteColor = 0;
118
LoadState
m_Status =
LoadState
::
kFail
;
119
bool
m_bLoadMask =
false
;
120
bool
m_bDefaultDecode =
true
;
121
bool
m_bImageMask =
false
;
122
bool
m_bDoBpcCheck =
true
;
123
bool
m_bColorKey =
false
;
124
bool
m_bHasMask =
false
;
125
bool
m_bStdCS =
false
;
126
std::vector<DIB_COMP_DATA> m_CompData;
127
mutable
DataVector<uint8_t> m_LineBuf;
128
mutable
DataVector<uint8_t> m_MaskBuf;
129
RetainPtr
<CFX_DIBitmap> m_pCachedBitmap;
130
// Note: Must not create a cycle between CPDF_DIB instances.
131
RetainPtr
<CPDF_DIB> m_pMask;
132
RetainPtr
<CPDF_StreamAcc> m_pGlobalAcc;
133
std::unique_ptr<fxcodec::ScanlineDecoder> m_pDecoder;
134
JpxSMaskInlineData m_JpxInlineData;
135
136
// Must come after |m_pCachedBitmap|.
137
std::unique_ptr<fxcodec::Jbig2Context> m_pJbig2Context;
138
};
139
140
#
endif
// CORE_FPDFAPI_PAGE_CPDF_DIB_H_
ByteString
fxcrt::ByteString ByteString
Definition
bytestring.h:180
DCHECK
#define DCHECK
Definition
check.h:33
DCHECK_NE
#define DCHECK_NE(x, y)
Definition
check_op.h:18
CHECK_GE
#define CHECK_GE(x, y)
Definition
check_op.h:15
DCHECK_EQ
#define DCHECK_EQ(x, y)
Definition
check_op.h:17
CFX_DIBBase
Definition
cfx_dibbase.h:35
CFX_DIBBase::SetWidth
void SetWidth(int width)
Definition
cfx_dibbase.h:153
CFX_DIBBase::HasPalette
bool HasPalette() const
Definition
cfx_dibbase.h:78
CFX_DIBBase::GetBPP
int GetBPP() const
Definition
cfx_dibbase.h:72
CFX_DIBBase::SetHeight
void SetHeight(int height)
Definition
cfx_dibbase.h:154
CFX_DIBBase::SetFormat
void SetFormat(FXDIB_Format format)
Definition
cfx_dibbase.h:152
CFX_DIBBase::SetPaletteArgb
void SetPaletteArgb(int index, uint32_t color)
Definition
cfx_dibbase.cpp:659
CFX_DIBBase::GetHeight
int GetHeight() const
Definition
cfx_dibbase.h:66
CFX_DIBBase::GetWidth
int GetWidth() const
Definition
cfx_dibbase.h:65
CFX_DIBBase::SetPitch
void SetPitch(uint32_t pitch)
Definition
cfx_dibbase.h:155
CPDF_Array::const_iterator
std::vector< RetainPtr< CPDF_Object > >::const_iterator const_iterator
Definition
cpdf_array.h:29
CPDF_ColorSpace
Definition
cpdf_colorspace.h:53
CPDF_ColorSpace::GetFamily
Family GetFamily() const
Definition
cpdf_colorspace.h:95
CPDF_ColorSpace::Family
Family
Definition
cpdf_colorspace.h:55
CPDF_ColorSpace::Family::kUnknown
@ kUnknown
Definition
cpdf_colorspace.h:56
CPDF_ColorSpace::Family::kLab
@ kLab
Definition
cpdf_colorspace.h:62
CPDF_ColorSpace::Family::kCalRGB
@ kCalRGB
Definition
cpdf_colorspace.h:61
CPDF_ColorSpace::Family::kICCBased
@ kICCBased
Definition
cpdf_colorspace.h:63
CPDF_ColorSpace::Family::kDeviceRGB
@ kDeviceRGB
Definition
cpdf_colorspace.h:58
CPDF_ColorSpace::Family::kIndexed
@ kIndexed
Definition
cpdf_colorspace.h:66
CPDF_ColorSpace::Family::kDeviceCMYK
@ kDeviceCMYK
Definition
cpdf_colorspace.h:59
CPDF_ColorSpace::Family::kDeviceGray
@ kDeviceGray
Definition
cpdf_colorspace.h:57
CPDF_ColorSpace::Family::kPattern
@ kPattern
Definition
cpdf_colorspace.h:67
CPDF_ColorSpace::ComponentsForFamily
static uint32_t ComponentsForFamily(Family family)
Definition
cpdf_colorspace.cpp:576
CPDF_ColorSpace::ComponentCount
uint32_t ComponentCount() const
Definition
cpdf_colorspace.cpp:601
CPDF_ColorSpace::GetStockCS
static RetainPtr< CPDF_ColorSpace > GetStockCS(Family family)
Definition
cpdf_colorspace.cpp:475
CPDF_DIB::LoadState
LoadState
Definition
cpdf_dib.h:43
CPDF_DIB::LoadState::kContinue
@ kContinue
Definition
cpdf_dib.h:43
CPDF_DIB::LoadState::kFail
@ kFail
Definition
cpdf_dib.h:43
CPDF_DIB::LoadState::kSuccess
@ kSuccess
Definition
cpdf_dib.h:43
CPDF_DIB::~CPDF_DIB
~CPDF_DIB() override
CPDF_DIB::DetachMask
RetainPtr< CPDF_DIB > DetachMask()
Definition
cpdf_dib.cpp:903
CPDF_DIB::GetEstimatedImageMemoryBurden
size_t GetEstimatedImageMemoryBurden() const override
Definition
cpdf_dib.cpp:1302
CPDF_DIB::GetMatteColor
uint32_t GetMatteColor() const
Definition
cpdf_dib.h:53
CPDF_DIB::SkipToScanline
bool SkipToScanline(int line, PauseIndicatorIface *pPause) const override
Definition
cpdf_dib.cpp:1298
CPDF_DIB::IsJBigImage
bool IsJBigImage() const
Definition
cpdf_dib.cpp:907
CPDF_DIB::GetColorSpace
RetainPtr< CPDF_ColorSpace > GetColorSpace() const
Definition
cpdf_dib.h:52
CPDF_DIB::ContinueLoadDIBBase
LoadState ContinueLoadDIBBase(PauseIndicatorIface *pPause)
Definition
cpdf_dib.cpp:341
CPDF_DIB::Load
bool Load()
Definition
cpdf_dib.cpp:241
CPDF_DIB::GetScanline
pdfium::span< const uint8_t > GetScanline(int line) const override
Definition
cpdf_dib.cpp:1155
CPDF_DIB::StartLoadDIBBase
LoadState StartLoadDIBBase(bool bHasMask, const CPDF_Dictionary *pFormResources, const CPDF_Dictionary *pPageResources, bool bStdCS, CPDF_ColorSpace::Family GroupFamily, bool bLoadMask, const CFX_Size &max_size_required)
Definition
cpdf_dib.cpp:295
CPDF_Dictionary::DictMap
std::map< ByteString, RetainPtr< CPDF_Object >, std::less<> > DictMap
Definition
cpdf_dictionary.h:31
CPDF_DocPageData::FromDocument
static CPDF_DocPageData * FromDocument(const CPDF_Document *pDoc)
Definition
cpdf_docpagedata.cpp:166
CPDF_Document
Definition
cpdf_document.h:29
CPDF_Image::IsValidJpegBitsPerComponent
static bool IsValidJpegBitsPerComponent(int32_t bpc)
Definition
cpdf_image.cpp:47
CPDF_Image::IsValidJpegComponent
static bool IsValidJpegComponent(int32_t comps)
Definition
cpdf_image.cpp:42
CPDF_IndexedCS::GetMaxIndex
int GetMaxIndex() const
Definition
cpdf_indexedcs.h:38
CPDF_Object
Definition
cpdf_object.h:50
PauseIndicatorIface
Definition
pauseindicator_iface.h:10
fxcodec::CJPX_Decoder
Definition
cjpx_decoder.h:27
fxcodec::CJPX_Decoder::ColorSpaceOption
ColorSpaceOption
Definition
cjpx_decoder.h:33
fxcodec::CJPX_Decoder::ColorSpaceOption::kNormal
@ kNormal
Definition
cjpx_decoder.h:35
fxcodec::CJPX_Decoder::ColorSpaceOption::kNone
@ kNone
Definition
cjpx_decoder.h:34
fxcodec::CJPX_Decoder::ColorSpaceOption::kIndexed
@ kIndexed
Definition
cjpx_decoder.h:36
fxcodec::IccTransform
Definition
icc_transform.h:25
fxcodec::IccTransform::IsValidIccComponents
static bool IsValidIccComponents(int components)
Definition
icc_transform.cpp:146
fxcodec::Jbig2Context
Definition
jbig2_decoder.h:24
fxcodec::Jbig2Decoder::ContinueDecode
static FXCODEC_STATUS ContinueDecode(Jbig2Context *pJbig2Context, PauseIndicatorIface *pPause)
Definition
jbig2_decoder.cpp:74
fxcodec::ScanlineDecoder
Definition
scanlinedecoder.h:19
fxcrt::ByteString::operator==
bool operator==(const char *ptr) const
Definition
bytestring.cpp:208
fxcrt::ByteString::operator!=
bool operator!=(const char *ptr) const
Definition
bytestring.h:65
fxcrt::RetainPtr
Definition
retain_ptr.h:28
fxcrt::UnownedPtr
Definition
unowned_ptr.h:76
pdfium::CFDETextOutLargeBitmapTest
Definition
cfde_textout_unittest.cpp:117
UNSAFE_TODO
#define UNSAFE_TODO(...)
Definition
compiler_specific.h:102
kHugeImageSize
constexpr size_t kHugeImageSize
Definition
cpdf_dib.h:39
FXCODEC_STATUS
FXCODEC_STATUS
Definition
fx_codec_def.h:10
FXCODEC_STATUS::kError
@ kError
Definition
fx_codec_def.h:11
FXCODEC_STATUS::kDecodeToBeContinued
@ kDecodeToBeContinued
Definition
fx_codec_def.h:15
CFX_Size
CFX_STemplate< int32_t > CFX_Size
Definition
fx_coordinates.h:114
FX_ARGB
uint32_t FX_ARGB
Definition
fx_dib.h:36
FXARGB_B
#define FXARGB_B(argb)
Definition
fx_dib.h:199
FXARGB_G
#define FXARGB_G(argb)
Definition
fx_dib.h:198
FXARGB_R
#define FXARGB_R(argb)
Definition
fx_dib.h:197
FXDIB_Format
FXDIB_Format
Definition
fx_dib.h:21
FXDIB_Format::kBgrx
@ kBgrx
Definition
fx_dib.h:26
FXDIB_Format::k1bppRgb
@ k1bppRgb
Definition
fx_dib.h:23
FXDIB_Format::k8bppRgb
@ k8bppRgb
Definition
fx_dib.h:24
FXDIB_Format::kBgr
@ kBgr
Definition
fx_dib.h:25
FXDIB_Format::k1bppMask
@ k1bppMask
Definition
fx_dib.h:27
FXDIB_Format::kBgra
@ kBgra
Definition
fx_dib.h:29
FX_SAFE_UINT32
pdfium::CheckedNumeric< uint32_t > FX_SAFE_UINT32
Definition
fx_safe_types.h:14
Jbig2Decoder
fxcodec::Jbig2Decoder Jbig2Decoder
Definition
jbig2_decoder.h:66
JpegModule
fxcodec::JpegModule JpegModule
Definition
jpegmodule.h:64
fxcodec
Definition
fpdf_parser_decode.h:28
fxcrt
Definition
stl_util.h:17
fxge
Definition
cfx_face.h:23
fxge::CalculatePitch32
std::optional< uint32_t > CalculatePitch32(int bits_per_pixel, int width_in_pixels)
Definition
calculate_pitch.cpp:57
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
CONSTRUCT_VIA_MAKE_RETAIN
#define CONSTRUCT_VIA_MAKE_RETAIN
Definition
retain_ptr.h:222
DIB_COMP_DATA
Definition
cpdf_dib.h:27
DIB_COMP_DATA::m_DecodeStep
float m_DecodeStep
Definition
cpdf_dib.h:29
DIB_COMP_DATA::m_ColorKeyMin
int m_ColorKeyMin
Definition
cpdf_dib.h:30
DIB_COMP_DATA::m_ColorKeyMax
int m_ColorKeyMax
Definition
cpdf_dib.h:31
DIB_COMP_DATA::m_DecodeMin
float m_DecodeMin
Definition
cpdf_dib.h:28
FX_BGRA_STRUCT
Definition
fx_dib.h:84
FX_BGR_STRUCT
Definition
fx_dib.h:53
FX_RGB_STRUCT
Definition
fx_dib.h:46
fxcodec::CJPX_Decoder::JpxImageInfo
Definition
cjpx_decoder.h:39
fxcodec::CJPX_Decoder::JpxImageInfo::colorspace
COLOR_SPACE colorspace
Definition
cjpx_decoder.h:43
fxcodec::CJPX_Decoder::JpxImageInfo::width
uint32_t width
Definition
cjpx_decoder.h:40
fxcodec::CJPX_Decoder::JpxImageInfo::channels
uint32_t channels
Definition
cjpx_decoder.h:42
fxcodec::CJPX_Decoder::JpxImageInfo::height
uint32_t height
Definition
cjpx_decoder.h:41
fxcodec::JpegModule::ImageInfo
Definition
jpegmodule.h:32
fxcodec::JpegModule::ImageInfo::width
uint32_t width
Definition
jpegmodule.h:33
fxcodec::JpegModule::ImageInfo::bits_per_components
int bits_per_components
Definition
jpegmodule.h:36
fxcodec::JpegModule::ImageInfo::num_components
int num_components
Definition
jpegmodule.h:35
fxcodec::JpegModule::ImageInfo::height
uint32_t height
Definition
jpegmodule.h:34
qtwebengine
src
3rdparty
chromium
third_party
pdfium
core
fpdfapi
page
cpdf_dib.h
Generated on
for Qt by
1.18.0