#include "core/fxge/dib/cfx_dibbase.h"
#include <algorithm>
#include <array>
#include <utility>
#include "core/fxcrt/check.h"
#include "core/fxcrt/check_op.h"
#include "core/fxcrt/data_vector.h"
#include "core/fxcrt/fx_2d_size.h"
#include "core/fxcrt/fx_coordinates.h"
#include "core/fxcrt/fx_memcpy_wrappers.h"
#include "core/fxcrt/fx_memory.h"
#include "core/fxcrt/fx_safe_types.h"
#include "core/fxcrt/notreached.h"
#include "core/fxcrt/span.h"
#include "core/fxcrt/span_util.h"
#include "core/fxcrt/stl_util.h"
#include "core/fxcrt/zip.h"
#include "core/fxge/agg/cfx_agg_cliprgn.h"
#include "core/fxge/calculate_pitch.h"
#include "core/fxge/dib/cfx_bitmapstorer.h"
#include "core/fxge/dib/cfx_dibitmap.h"
#include "core/fxge/dib/cfx_imagestretcher.h"
#include "core/fxge/dib/cfx_imagetransformer.h"
namespace {
#if defined(PDF_USE_SKIA)
void ConvertBuffer_Rgb2ArgbPremul(
pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& src_bitmap,
int src_left,
int src_top) { … }
void ConvertBuffer_ArgbPremulToRgb(
pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& src_bitmap,
int src_left,
int src_top) { … }
void ConvertBuffer_ArgbPremul(pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& src_bitmap,
int src_left,
int src_top) { … }
#endif
void ConvertBuffer_1bppMask2Gray(pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& pSrcBitmap,
int src_left,
int src_top) { … }
void ConvertBuffer_8bppMask2Gray(pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& pSrcBitmap,
int src_left,
int src_top) { … }
void ConvertBuffer_8bppPlt2Gray(pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& src,
int src_left,
int src_top) { … }
void ConvertBuffer_Rgb2Gray(pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& pSrcBitmap,
int src_left,
int src_top) { … }
void ConvertBuffer_IndexCopy(pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& pSrcBitmap,
int src_left,
int src_top) { … }
DataVector<uint32_t> ConvertBuffer_Plt2PltRgb8(
pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& pSrcBitmap,
int src_left,
int src_top) { … }
void ConvertBuffer_1bppMask2Rgb(pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& pSrcBitmap,
int src_left,
int src_top) { … }
void ConvertBuffer_8bppMask2Rgb(FXDIB_Format dest_format,
pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& pSrcBitmap,
int src_left,
int src_top) { … }
void ConvertBuffer_1bppPlt2Rgb(pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& pSrcBitmap,
int src_left,
int src_top) { … }
void ConvertBuffer_8bppPlt2Rgb(FXDIB_Format dest_format,
pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& pSrcBitmap,
int src_left,
int src_top) { … }
void ConvertBuffer_24bppRgb2Rgb24(
pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& pSrcBitmap,
int src_left,
int src_top) { … }
void ConvertBuffer_32bppRgb2Rgb24(
pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& pSrcBitmap,
int src_left,
int src_top) { … }
void ConvertBuffer_Rgb2Rgb32(pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& pSrcBitmap,
int src_left,
int src_top) { … }
void ConvertBuffer_8bppMask(pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& pSrcBitmap,
int src_left,
int src_top) { … }
void ConvertBuffer_Rgb(FXDIB_Format dest_format,
pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& pSrcBitmap,
int src_left,
int src_top) { … }
void ConvertBuffer_Argb(FXDIB_Format dest_format,
pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& pSrcBitmap,
int src_left,
int src_top) { … }
}
CFX_DIBBase::CFX_DIBBase() = default;
CFX_DIBBase::~CFX_DIBBase() = default;
bool CFX_DIBBase::SkipToScanline(int line, PauseIndicatorIface* pPause) const { … }
size_t CFX_DIBBase::GetEstimatedImageMemoryBurden() const { … }
#if BUILDFLAG(IS_WIN) || defined(PDF_USE_SKIA)
RetainPtr<const CFX_DIBitmap> CFX_DIBBase::RealizeIfNeeded() const { … }
#endif
RetainPtr<CFX_DIBitmap> CFX_DIBBase::Realize() const { … }
RetainPtr<CFX_DIBitmap> CFX_DIBBase::ClipTo(const FX_RECT& rect) const { … }
RetainPtr<CFX_DIBitmap> CFX_DIBBase::ClipToInternal(
const FX_RECT* pClip) const { … }
void CFX_DIBBase::BuildPalette() { … }
size_t CFX_DIBBase::GetRequiredPaletteSize() const { … }
uint32_t CFX_DIBBase::GetPaletteArgb(int index) const { … }
void CFX_DIBBase::SetPaletteArgb(int index, uint32_t color) { … }
int CFX_DIBBase::FindPalette(uint32_t color) const { … }
bool CFX_DIBBase::GetOverlapRect(int& dest_left,
int& dest_top,
int& width,
int& height,
int src_width,
int src_height,
int& src_left,
int& src_top,
const CFX_AggClipRgn* pClipRgn) const { … }
void CFX_DIBBase::SetPalette(pdfium::span<const uint32_t> src_palette) { … }
void CFX_DIBBase::TakePalette(DataVector<uint32_t> src_palette) { … }
RetainPtr<CFX_DIBitmap> CFX_DIBBase::CloneAlphaMask() const { … }
RetainPtr<CFX_DIBitmap> CFX_DIBBase::FlipImage(bool bXFlip, bool bYFlip) const { … }
RetainPtr<CFX_DIBitmap> CFX_DIBBase::ConvertTo(FXDIB_Format dest_format) const { … }
RetainPtr<CFX_DIBitmap> CFX_DIBBase::SwapXY(bool bXFlip, bool bYFlip) const { … }
RetainPtr<CFX_DIBitmap> CFX_DIBBase::TransformTo(const CFX_Matrix& mtDest,
int* result_left,
int* result_top) const { … }
RetainPtr<CFX_DIBitmap> CFX_DIBBase::StretchTo(
int dest_width,
int dest_height,
const FXDIB_ResampleOptions& options,
const FX_RECT* pClip) const { … }
DataVector<uint32_t> CFX_DIBBase::ConvertBuffer(
FXDIB_Format dest_format,
pdfium::span<uint8_t> dest_buf,
int dest_pitch,
int width,
int height,
const RetainPtr<const CFX_DIBBase>& pSrcBitmap,
int src_left,
int src_top) { … }