7#ifndef CORE_FPDFAPI_RENDER_CPDF_IMAGERENDERER_H_
8#define CORE_FPDFAPI_RENDER_CPDF_IMAGERENDERER_H_
12#include "core/fxcrt/fx_coordinates.h"
13#include "core/fxcrt/retain_ptr.h"
14#include "core/fxcrt/unowned_ptr.h"
15#include "core/fxge/dib/cfx_imagerenderer.h"
16#include "core/fxge/dib/fx_dib.h"
17#include "third_party/abseil-cpp/absl/types/optional.h"
20class CFX_DefaultRenderDevice;
23class CPDF_ImageObject;
33 bool Start(CPDF_ImageObject* pImageObject,
55 bool StartBitmapAlpha();
57 bool StartRenderDIBBase();
58 bool StartLoadDIBBase();
62 bool DrawMaskedImage();
63 bool DrawPatternImage();
64 bool NotDrawing()
const;
67 void CalculateDrawImage(CFX_DefaultRenderDevice* pBitmapDevice1,
68 CFX_DefaultRenderDevice* pBitmapDevice2,
74 absl::optional<FX_RECT> GetUnitRect()
const;
75 bool GetDimensionsFromUnitRect(
const FX_RECT& rect,
87 std::unique_ptr<CPDF_ImageLoader>
const m_pLoader;
88 std::unique_ptr<CFX_ImageTransformer> m_pTransformer;
89 std::unique_ptr<CFX_ImageRenderer> m_DeviceHandle;
90 Mode m_Mode = Mode::kNone;
93 FX_ARGB m_FillArgb = 0;
95 bool m_bPatternColor =
false;
96 bool m_bStdCS =
false;
bool Create(int width, int height, FXDIB_Format format, RetainPtr< CFX_DIBitmap > pBackdropBitmap)
void Clear(uint32_t color)
FX_RECT GetOuterRect() const
CFX_Matrix & operator=(const CFX_Matrix &other)=default
void Translate(int32_t x, int32_t y)
CFX_FloatRect GetUnitRect() const
void Translate(float x, float y)
void Transform(const CFX_Matrix &matrix)
void AppendRect(float left, float bottom, float right, float top)
static CPDF_DocPageData * FromDocument(const CPDF_Document *pDoc)
float GetStrokeAlpha() const
float GetFillAlpha() const
BlendMode GetBlendType() const
CPDF_ImageRenderer(CPDF_RenderStatus *pStatus)
bool Start(RetainPtr< CFX_DIBBase > pDIBBase, FX_ARGB bitmap_argb, const CFX_Matrix &mtImage2Device, const FXDIB_ResampleOptions &options, bool bStdCS)
bool Continue(PauseIndicatorIface *pPause)
bool Start(CPDF_ImageObject *pImageObject, const CFX_Matrix &mtObj2Device, bool bStdCS, BlendMode blendType)
CPDF_Document * GetDocument() const override
const Options & GetOptions() const
bool CheckOCGDictVisible(const CPDF_Dictionary *pOC) const
bool ColorModeIs(Type mode) const
void SetOptions(const CPDF_RenderOptions &options)
void SetStdCS(bool bStdCS)
void Initialize(const CPDF_RenderStatus *pParentStatus, const CPDF_GraphicStates *pInitialStates)
#define FXARGB_MUL_ALPHA(argb, alpha)
constexpr FX_ARGB ArgbEncode(uint32_t a, uint32_t r, uint32_t g, uint32_t b)
int FXSYS_roundf(float f)
bool bInterpolateBilinear