7#ifndef CORE_FPDFAPI_RENDER_CPDF_RENDERSTATUS_H_
8#define CORE_FPDFAPI_RENDER_CPDF_RENDERSTATUS_H_
14#include "build/build_config.h"
15#include "core/fpdfapi/page/cpdf_clippath.h"
16#include "core/fpdfapi/page/cpdf_colorspace.h"
17#include "core/fpdfapi/page/cpdf_graphicstates.h"
18#include "core/fpdfapi/page/cpdf_transparency.h"
19#include "core/fpdfapi/parser/cpdf_dictionary.h"
20#include "core/fpdfapi/render/cpdf_renderoptions.h"
21#include "core/fxcrt/retain_ptr.h"
22#include "core/fxcrt/unowned_ptr.h"
23#include "core/fxge/dib/fx_dib.h"
31class CPDF_ImageObject;
38class CPDF_ShadingObject;
39class CPDF_ShadingPattern;
40class CPDF_TilingPattern;
41class CPDF_TransferFunc;
56 m_pFormResource = std::move(pRes);
62 void SetStdCS(
bool bStdCS) { m_bStdCS = bStdCS; }
64 m_GroupFamily = family;
67 m_Transparency
= transparency;
69 void SetInGroup(
bool bInGroup) { m_bInGroup = bInGroup; }
97 return m_pFormResource.Get();
100 return m_pPageResource.Get();
144 bool ProcessPath(CPDF_PathObject* path_obj,
const CFX_Matrix& mtObj2Device);
145 void ProcessPathPattern(CPDF_PathObject* path_obj,
149 void DrawPathWithPattern(CPDF_PathObject* path_obj,
156 bool SelectClipPath(
const CPDF_PathObject* path_obj,
159 bool ProcessImage(CPDF_ImageObject* pImageObj,
161 void ProcessShading(
const CPDF_ShadingObject* pShadingObj,
163 bool ProcessType3Text(CPDF_TextObject* textobj,
165 bool ProcessText(CPDF_TextObject* textobj,
168 void DrawTextPathWithPattern(
const CPDF_TextObject* textobj,
175 bool ProcessForm(
const CPDF_FormObject* pFormObj,
180 bool bBackAlphaRequired);
197 std::vector<UnownedPtr<
const CPDF_Type3Font>> m_Type3FontCache;
205 std::unique_ptr<CPDF_ImageRenderer> m_pImageRenderer;
208 bool m_bStopped =
false;
212 bool m_bDropObjects =
false;
213 bool m_bStdCS =
false;
214 bool m_bLoadMask =
false;
215 bool m_bInGroup =
false;
bool Attach(RetainPtr< CFX_DIBitmap > pBitmap)
bool Create(int width, int height, FXDIB_Format format)
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 Transform(const CFX_Matrix &matrix)
void AppendRect(float left, float bottom, float right, float top)
std::map< ByteString, RetainPtr< CPDF_Object >, std::less<> > DictMap
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 Start(CPDF_ImageObject *pImageObject, const CFX_Matrix &mtObj2Device, bool bStdCS)
bool Continue(PauseIndicatorIface *pPause)
CPDF_Document * GetDocument() const override
const CFX_Matrix & GetMatrix() const
CPDF_PageObjectHolder * GetObjectHolder()
Layer(CPDF_PageObjectHolder *pHolder, const CFX_Matrix &matrix)
void AppendLayer(CPDF_PageObjectHolder *pObjectHolder, const CFX_Matrix &mtObject2Device)
CPDF_PageImageCache * GetPageCache() const
const CPDF_Dictionary * GetPageResources() const
CPDF_RenderContext(CPDF_Document *pDoc, RetainPtr< CPDF_Dictionary > pPageResources, CPDF_PageImageCache *pPageCache)
void GetBackgroundToDevice(CFX_RenderDevice *device, const CPDF_PageObject *object, const CPDF_RenderOptions *options, const CFX_Matrix &matrix)
CPDF_Document * GetDocument() const
Layer * GetLayer(uint32_t index)
RetainPtr< CPDF_Dictionary > GetMutablePageResources()
size_t CountLayers() const
void Render(CFX_RenderDevice *pDevice, const CPDF_PageObject *pStopObj, const CPDF_RenderOptions *pOptions, const CFX_Matrix *pLastMatrix)
const Options & GetOptions() const
bool CheckOCGDictVisible(const CPDF_Dictionary *pOC) const
bool ColorModeIs(Type mode) const
void SetDropObjects(bool bDropObjects)
const CPDF_RenderOptions & GetRenderOptions() const
void SetType3Char(CPDF_Type3Char *pType3Char)
RetainPtr< CPDF_TransferFunc > GetTransferFunc(RetainPtr< const CPDF_Object > pObject) const
void SetDeviceMatrix(const CFX_Matrix &matrix)
CPDF_RenderStatus(CPDF_RenderContext *pContext, CFX_RenderDevice *pDevice)
void SetFillColor(FX_ARGB color)
CPDF_RenderContext * GetContext() const
void SetOptions(const CPDF_RenderOptions &options)
void RenderSingleObject(CPDF_PageObject *pObj, const CFX_Matrix &mtObj2Device)
const CPDF_Dictionary * GetPageResource() const
bool ContinueSingleObject(CPDF_PageObject *pObj, const CFX_Matrix &mtObj2Device, PauseIndicatorIface *pPause)
CPDF_ColorSpace::Family GetGroupFamily() const
void SetTransparency(const CPDF_Transparency &transparency)
void RenderObjectList(const CPDF_PageObjectHolder *pObjectHolder, const CFX_Matrix &mtObj2Device)
void SetStdCS(bool bStdCS)
FX_ARGB GetFillArgbForType3(CPDF_PageObject *pObj) const
CFX_RenderDevice * GetRenderDevice() const
void SetGroupFamily(CPDF_ColorSpace::Family family)
void DrawShadingPattern(CPDF_ShadingPattern *pattern, const CPDF_PageObject *pPageObj, const CFX_Matrix &mtObj2Device, bool stroke)
void Initialize(const CPDF_RenderStatus *pParentStatus, const CPDF_GraphicStates *pInitialStates)
void DrawTilingPattern(CPDF_TilingPattern *pattern, CPDF_PageObject *pPageObj, const CFX_Matrix &mtObj2Device, bool stroke)
void SetInGroup(bool bInGroup)
static std::unique_ptr< CPDF_GraphicStates > CloneObjStates(const CPDF_GraphicStates *pSrcStates, bool stroke)
void SetFormResource(RetainPtr< const CPDF_Dictionary > pRes)
FX_ARGB GetFillArgb(CPDF_PageObject *pObj) const
void CompositeDIBitmap(RetainPtr< CFX_DIBitmap > bitmap, int left, int top, FX_ARGB mask_argb, float alpha, BlendMode blend_mode, const CPDF_Transparency &transparency)
void SetLoadMask(bool bLoadMask)
bool GetDropObjects() const
const CPDF_Dictionary * GetFormResource() const
void SetStopObject(const CPDF_PageObject *pStopObj)
void ProcessClipPath(const CPDF_ClipPath &ClipPath, const CFX_Matrix &mtObj2Device)
CPDF_Transparency & operator=(const CPDF_Transparency &other)
constexpr FX_ARGB ArgbEncode(uint32_t a, uint32_t r, uint32_t g, uint32_t b)
pdfium::CheckedNumeric< int32_t > FX_SAFE_INT32
int FXSYS_roundf(float f)
bool bInterpolateBilinear