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"
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 std::vector<ByteString> names) {
265 m_Ref.GetPrivateCopy()->m_GraphicsResourceNames = std::move(names);
269 m_Ref.GetPrivateCopy()->m_GraphicsResourceNames.push_back(std::move(name));
274 const StateData* data = m_Ref.GetObject();
278 return data->m_GraphicsResourceNames;
284 : m_BlendMode(that.m_BlendMode),
285 m_BlendType(that.m_BlendType),
286 m_pSoftMask(that.m_pSoftMask),
287 m_SMaskMatrix
(that.m_SMaskMatrix
),
288 m_StrokeAlpha(that.m_StrokeAlpha),
289 m_FillAlpha(that.m_FillAlpha),
291 m_pTransferFunc(that.m_pTransferFunc),
292 m_RenderIntent(that.m_RenderIntent),
293 m_StrokeAdjust(that.m_StrokeAdjust),
294 m_AlphaSource(that.m_AlphaSource),
295 m_TextKnockout(that.m_TextKnockout),
296 m_StrokeOP(that.m_StrokeOP),
297 m_FillOP(that.m_FillOP),
298 m_OPMode(that.m_OPMode),
302 m_Flatness(that.m_Flatness),
303 m_Smoothness(that.m_Smoothness) {}
fxcrt::ByteString ByteString
CFX_Matrix(const CFX_Matrix &other)=default
std::map< ByteString, RetainPtr< CPDF_Object >, std::less<> > DictMap
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
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)
ByteString(const char *ptr)
constexpr uint32_t FXBSTR_ID(uint8_t c1, uint8_t c2, uint8_t c3, uint8_t c4)