7#include "core/fpdfapi/page/cpdf_generalstate.h"
11#include "core/fpdfapi/page/cpdf_transferfunc.h"
12#include "core/fpdfapi/parser/cpdf_dictionary.h"
13#include "core/fpdfapi/parser/cpdf_object.h"
17int RI_StringToId(
const ByteString& ri) {
31BlendMode GetBlendTypeInternal(
const ByteString& mode) {
47 if (mode.GetLength() == 10)
49 if (mode.GetLength() == 9)
79 m_Ref.GetPrivateCopy()->m_RenderIntent = RI_StringToId(ri);
121 const StateData* pData = m_Ref.GetObject();
127 m_Ref.GetPrivateCopy()->m_BlendType = type;
132 const StateData* pData = m_Ref.GetObject();
133 return pData ? pData->m_FillAlpha : 1.0f;
138 m_Ref.GetPrivateCopy()->m_FillAlpha = alpha;
143 const StateData* pData = m_Ref.GetObject();
144 return pData ? pData->m_StrokeAlpha : 1.0f;
149 m_Ref.GetPrivateCopy()->m_StrokeAlpha = alpha;
154 const StateData* pData = m_Ref.GetObject();
155 return pData ? pData->m_pSoftMask :
nullptr;
159 const StateData* pData = m_Ref.GetObject();
160 return pData ? pData->m_pSoftMask :
nullptr;
164 m_Ref.GetPrivateCopy()->m_pSoftMask = std::move(pDict);
168 const StateData* pData = m_Ref.GetObject();
169 return pData ? pData->m_pTR :
nullptr;
173 m_Ref.GetPrivateCopy()->m_pTR = std::move(pObject);
177 const StateData* pData = m_Ref.GetObject();
178 return pData ? pData->m_pTransferFunc :
nullptr;
182 m_Ref.GetPrivateCopy()->m_pTransferFunc = std::move(pFunc);
186 StateData* pData = m_Ref.GetPrivateCopy();
187 pData->m_BlendMode = mode;
188 pData->m_BlendType = GetBlendTypeInternal(mode);
192 const StateData* pData = m_Ref.GetObject();
193 return pData ? &pData->m_SMaskMatrix :
nullptr;
197 m_Ref.GetPrivateCopy()->m_SMaskMatrix = matrix;
201 const StateData* pData = m_Ref.GetObject();
202 return pData && pData->m_FillOP;
206 m_Ref.GetPrivateCopy()->m_FillOP = op;
210 m_Ref.GetPrivateCopy()->m_StrokeOP = op;
214 const StateData* pData = m_Ref.GetObject();
215 return pData && pData->m_StrokeOP;
219 return m_Ref.GetObject()->m_OPMode;
223 m_Ref.GetPrivateCopy()->m_OPMode = mode;
227 m_Ref.GetPrivateCopy()->m_pBG = std::move(pObject);
231 m_Ref.GetPrivateCopy()->m_pUCR = std::move(pObject);
235 m_Ref.GetPrivateCopy()->m_pHT = std::move(pObject);
239 m_Ref.GetPrivateCopy()->m_Flatness = flatness;
243 m_Ref.GetPrivateCopy()->m_Smoothness = smoothness;
247 const StateData* pData = m_Ref.GetObject();
248 return pData && pData->m_StrokeAdjust;
252 m_Ref.GetPrivateCopy()->m_StrokeAdjust = adjust;
256 m_Ref.GetPrivateCopy()->m_AlphaSource = source;
260 m_Ref.GetPrivateCopy()->m_TextKnockout = knockout;
264 m_Ref.GetPrivateCopy()->m_Matrix = matrix;
268 return &m_Ref.GetPrivateCopy()->m_Matrix;
272 std::vector<ByteString> names) {
273 m_Ref.GetPrivateCopy()->m_GraphicsResourceNames = std::move(names);
277 m_Ref.GetPrivateCopy()->m_GraphicsResourceNames.push_back(std::move(name));
282 const StateData* data = m_Ref.GetObject();
286 return data->m_GraphicsResourceNames;
292 : m_BlendMode(that.m_BlendMode),
293 m_BlendType(that.m_BlendType),
294 m_pSoftMask(that.m_pSoftMask),
295 m_SMaskMatrix
(that.m_SMaskMatrix
),
296 m_StrokeAlpha(that.m_StrokeAlpha),
297 m_FillAlpha(that.m_FillAlpha),
299 m_pTransferFunc(that.m_pTransferFunc),
300 m_Matrix
(that.m_Matrix
),
301 m_RenderIntent(that.m_RenderIntent),
302 m_StrokeAdjust(that.m_StrokeAdjust),
303 m_AlphaSource(that.m_AlphaSource),
304 m_TextKnockout(that.m_TextKnockout),
305 m_StrokeOP(that.m_StrokeOP),
306 m_FillOP(that.m_FillOP),
307 m_OPMode(that.m_OPMode),
311 m_Flatness(that.m_Flatness),
312 m_Smoothness(that.m_Smoothness) {}
CFX_Matrix(const CFX_Matrix &other)=default
void AppendGraphicsResourceName(ByteString name)
void SetRenderIntent(const ByteString &ri)
void SetHT(RetainPtr< const CPDF_Object > pObject)
void SetBlendType(BlendMode type)
void SetUCR(RetainPtr< const CPDF_Object > pObject)
float GetStrokeAlpha() const
CPDF_GeneralState(const CPDF_GeneralState &that)
void SetTransferFunc(RetainPtr< CPDF_TransferFunc > pFunc)
float GetFillAlpha() const
RetainPtr< CPDF_TransferFunc > GetTransferFunc() const
void SetFillAlpha(float alpha)
void SetStrokeAlpha(float alpha)
void SetSmoothness(float smoothness)
void SetTR(RetainPtr< const CPDF_Object > pObject)
BlendMode GetBlendType() const
void SetStrokeAdjust(bool adjust)
RetainPtr< const CPDF_Object > GetTR() const
void SetBlendMode(const ByteString &mode)
pdfium::span< const ByteString > GetGraphicsResourceNames() const
void SetSMaskMatrix(const CFX_Matrix &matrix)
void SetGraphicsResourceNames(std::vector< ByteString > names)
const CFX_Matrix * GetSMaskMatrix() const
void SetSoftMask(RetainPtr< CPDF_Dictionary > pDict)
void SetBG(RetainPtr< const CPDF_Object > pObject)
ByteString GetBlendMode() const
CFX_Matrix * GetMutableMatrix()
void SetAlphaSource(bool source)
bool GetStrokeAdjust() const
void SetStrokeOP(bool op)
void SetTextKnockout(bool knockout)
RetainPtr< CPDF_Dictionary > GetMutableSoftMask()
RetainPtr< const CPDF_Dictionary > GetSoftMask() const
void SetFlatness(float flatness)
void SetMatrix(const CFX_Matrix &matrix)
ByteString(const char *ptr)
constexpr uint32_t FXBSTR_ID(uint8_t c1, uint8_t c2, uint8_t c3, uint8_t c4)