7#ifndef CORE_FPDFAPI_PAGE_CPDF_DIB_H_
8#define CORE_FPDFAPI_PAGE_CPDF_DIB_H_
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"
71 struct JpxSMaskInlineData {
73 ~JpxSMaskInlineData();
77 DataVector<uint8_t> data;
82 bool ContinueInternal();
85 bool ContinueToLoadMask();
89 bool GetDecodeAndMaskArray();
90 RetainPtr<CFX_DIBitmap> LoadJpxBitmap(uint8_t resolution_levels_to_skip);
92 LoadState CreateDecoder(uint8_t resolution_levels_to_skip);
93 bool CreateDCTDecoder(pdfium::span<
const uint8_t> src_span,
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();
104 uint32_t Get1BitSetValue()
const;
105 uint32_t Get1BitResetValue()
const;
108 RetainPtr<
const CPDF_Stream>
const m_pStream;
113 uint32_t m_bpc_orig = 0;
114 uint32_t m_nComponents = 0;
117 uint32_t m_MatteColor = 0;
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;
133 std::unique_ptr<fxcodec::ScanlineDecoder> m_pDecoder;
134 JpxSMaskInlineData m_JpxInlineData;
137 std::unique_ptr<fxcodec::Jbig2Context> m_pJbig2Context;
fxcrt::ByteString ByteString
void SetHeight(int height)
void SetFormat(FXDIB_Format format)
void SetPaletteArgb(int index, uint32_t color)
void SetPitch(uint32_t pitch)
std::vector< RetainPtr< CPDF_Object > >::const_iterator const_iterator
static uint32_t ComponentsForFamily(Family family)
uint32_t ComponentCount() const
static RetainPtr< CPDF_ColorSpace > GetStockCS(Family family)
RetainPtr< CPDF_DIB > DetachMask()
size_t GetEstimatedImageMemoryBurden() const override
uint32_t GetMatteColor() const
bool SkipToScanline(int line, PauseIndicatorIface *pPause) const override
RetainPtr< CPDF_ColorSpace > GetColorSpace() const
LoadState ContinueLoadDIBBase(PauseIndicatorIface *pPause)
pdfium::span< const uint8_t > GetScanline(int line) const override
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)
std::map< ByteString, RetainPtr< CPDF_Object >, std::less<> > DictMap
static bool IsValidJpegBitsPerComponent(int32_t bpc)
static bool IsValidJpegComponent(int32_t comps)
bool operator==(const char *ptr) const
bool operator!=(const char *ptr) const
constexpr size_t kHugeImageSize
CFX_STemplate< int32_t > CFX_Size
pdfium::CheckedNumeric< uint32_t > FX_SAFE_UINT32
fxcodec::JpegModule JpegModule
std::optional< uint32_t > CalculatePitch32(int bits_per_pixel, int width_in_pixels)
#define CONSTRUCT_VIA_MAKE_RETAIN