| Index: core/fpdfapi/fpdf_page/include/cpdf_generalstate.h
|
| diff --git a/core/fpdfapi/fpdf_page/include/cpdf_generalstate.h b/core/fpdfapi/fpdf_page/include/cpdf_generalstate.h
|
| index 6d5606431851f501555e840b0154c733e49569f0..c8f65f8927947eee917063e10597dc1c825407bd 100644
|
| --- a/core/fpdfapi/fpdf_page/include/cpdf_generalstate.h
|
| +++ b/core/fpdfapi/fpdf_page/include/cpdf_generalstate.h
|
| @@ -7,8 +7,12 @@
|
| #ifndef CORE_FPDFAPI_FPDF_PAGE_INCLUDE_CPDF_GENERALSTATE_H_
|
| #define CORE_FPDFAPI_FPDF_PAGE_INCLUDE_CPDF_GENERALSTATE_H_
|
|
|
| -#include "core/fpdfapi/fpdf_page/include/cpdf_generalstatedata.h"
|
| +#include "core/fxcrt/include/cfx_count_ref.h"
|
| #include "core/fxcrt/include/fx_basic.h"
|
| +#include "core/fxcrt/include/fx_coordinates.h"
|
| +
|
| +class CPDF_TransferFunc;
|
| +class CPDF_Object;
|
|
|
| class CPDF_GeneralState {
|
| public:
|
| @@ -18,122 +22,95 @@ class CPDF_GeneralState {
|
|
|
| void Emplace() { m_Ref.Emplace(); }
|
|
|
| - void SetRenderIntent(const CFX_ByteString& ri);
|
| -
|
| - int GetBlendType() const {
|
| - const CPDF_GeneralStateData* pData = m_Ref.GetObject();
|
| - return pData ? pData->m_BlendType : FXDIB_BLEND_NORMAL;
|
| - }
|
| -
|
| - void SetBlendType(int type) { m_Ref.GetPrivateCopy()->m_BlendType = type; }
|
| + int GetBlendType() const;
|
| + void SetBlendType(int type);
|
|
|
| int GetAlpha(FX_BOOL bStroke) const {
|
| return bStroke ? GetStrokeAlpha() : GetFillAlpha();
|
| }
|
|
|
| - int GetFillAlpha() const {
|
| - const CPDF_GeneralStateData* pData = m_Ref.GetObject();
|
| - return pData ? FXSYS_round(255 * pData->m_FillAlpha) : 255;
|
| - }
|
| -
|
| - int GetStrokeAlpha() const {
|
| - const CPDF_GeneralStateData* pData = m_Ref.GetObject();
|
| - return pData ? FXSYS_round(255 * pData->m_StrokeAlpha) : 255;
|
| - }
|
| -
|
| - void SetSoftMask(CPDF_Object* pObject) {
|
| - m_Ref.GetPrivateCopy()->m_pSoftMask = pObject;
|
| - }
|
| -
|
| - CPDF_Object* GetSoftMask() const {
|
| - const CPDF_GeneralStateData* pData = m_Ref.GetObject();
|
| - return pData ? pData->m_pSoftMask : nullptr;
|
| - }
|
| -
|
| - void SetTR(CPDF_Object* pObject) { m_Ref.GetPrivateCopy()->m_pTR = pObject; }
|
| -
|
| - CPDF_Object* GetTR() const { return m_Ref.GetObject()->m_pTR; }
|
| -
|
| - void SetTransferFunc(CPDF_TransferFunc* pFunc) {
|
| - m_Ref.GetPrivateCopy()->m_pTransferFunc = pFunc;
|
| - }
|
| -
|
| - CPDF_TransferFunc* GetTransferFunc() const {
|
| - return m_Ref.GetObject()->m_pTransferFunc;
|
| - }
|
| -
|
| - void SetBlendMode(const CFX_ByteStringC& mode) {
|
| - m_Ref.GetPrivateCopy()->SetBlendMode(mode);
|
| - }
|
| + int GetFillAlpha() const;
|
| + void SetFillAlpha(FX_FLOAT alpha);
|
|
|
| - const FX_FLOAT* GetSMaskMatrix() const {
|
| - return m_Ref.GetObject()->m_SMaskMatrix;
|
| - }
|
| + int GetStrokeAlpha() const;
|
| + void SetStrokeAlpha(FX_FLOAT alpha);
|
|
|
| - FX_FLOAT* GetMutableSMaskMatrix() {
|
| - return m_Ref.GetPrivateCopy()->m_SMaskMatrix;
|
| - }
|
| -
|
| - void SetStrokeAlpha(FX_FLOAT alpha) {
|
| - m_Ref.GetPrivateCopy()->m_StrokeAlpha = alpha;
|
| - }
|
| + CPDF_Object* GetSoftMask() const;
|
| + void SetSoftMask(CPDF_Object* pObject);
|
|
|
| - void SetFillAlpha(FX_FLOAT alpha) {
|
| - m_Ref.GetPrivateCopy()->m_FillAlpha = alpha;
|
| - }
|
| + CPDF_Object* GetTR() const;
|
| + void SetTR(CPDF_Object* pObject);
|
|
|
| - void SetFillOP(int op) { m_Ref.GetPrivateCopy()->m_FillOP = op; }
|
| + CPDF_TransferFunc* GetTransferFunc() const;
|
| + void SetTransferFunc(CPDF_TransferFunc* pFunc);
|
|
|
| - int GetFillOP() const { return m_Ref.GetObject()->m_FillOP; }
|
| + void SetBlendMode(const CFX_ByteStringC& mode);
|
|
|
| - void SetStrokeOP(int op) { m_Ref.GetPrivateCopy()->m_StrokeOP = op; }
|
| + const FX_FLOAT* GetSMaskMatrix() const;
|
| + FX_FLOAT* GetMutableSMaskMatrix();
|
|
|
| - int GetStrokeOP() const { return m_Ref.GetObject()->m_StrokeOP; }
|
| + int GetFillOP() const;
|
| + void SetFillOP(int op);
|
|
|
| - void SetOPMode(int mode) { m_Ref.GetPrivateCopy()->m_OPMode = mode; }
|
| + int GetStrokeOP() const;
|
| + void SetStrokeOP(int op);
|
|
|
| - int GetOPMode() const { return m_Ref.GetObject()->m_OPMode; }
|
| + int GetOPMode() const;
|
| + void SetOPMode(int mode);
|
|
|
| - void SetBG(CPDF_Object* pObject) { m_Ref.GetPrivateCopy()->m_pBG = pObject; }
|
| + void SetBG(CPDF_Object* pObject);
|
| + void SetUCR(CPDF_Object* pObject);
|
| + void SetHT(CPDF_Object* pObject);
|
|
|
| - void SetUCR(CPDF_Object* pObject) {
|
| - m_Ref.GetPrivateCopy()->m_pUCR = pObject;
|
| - }
|
| + void SetFlatness(FX_FLOAT flatness);
|
| + void SetSmoothness(FX_FLOAT smoothness);
|
|
|
| - void SetHT(CPDF_Object* pObject) { m_Ref.GetPrivateCopy()->m_pHT = pObject; }
|
| + void SetStrokeAdjust(FX_FLOAT adjust);
|
| + FX_FLOAT GetStrokeAdjust() const;
|
|
|
| - void SetFlatness(FX_FLOAT flatness) {
|
| - m_Ref.GetPrivateCopy()->m_Flatness = flatness;
|
| - }
|
| + void SetAlphaSource(int source);
|
| + void SetTextKnockout(int knockout);
|
|
|
| - void SetSmoothness(FX_FLOAT smoothness) {
|
| - m_Ref.GetPrivateCopy()->m_Smoothness = smoothness;
|
| - }
|
| + CFX_Matrix* GetMutableMatrix();
|
| + void SetMatrix(const CFX_Matrix& matrix);
|
|
|
| - void SetStrokeAdjust(FX_FLOAT adjust) {
|
| - m_Ref.GetPrivateCopy()->m_StrokeAdjust = adjust;
|
| - }
|
| -
|
| - FX_FLOAT GetStrokeAdjust() const { return m_Ref.GetObject()->m_StrokeAdjust; }
|
| -
|
| - void SetAlphaSource(int source) {
|
| - m_Ref.GetPrivateCopy()->m_AlphaSource = source;
|
| - }
|
| -
|
| - void SetTextKnockout(int knockout) {
|
| - m_Ref.GetPrivateCopy()->m_TextKnockout = knockout;
|
| - }
|
| -
|
| - void SetMatrix(const CFX_Matrix& matrix) {
|
| - m_Ref.GetPrivateCopy()->m_Matrix = matrix;
|
| - }
|
| -
|
| - CFX_Matrix* GetMutableMatrix() { return &m_Ref.GetPrivateCopy()->m_Matrix; }
|
| + void SetRenderIntent(const CFX_ByteString& ri);
|
|
|
| operator bool() const { return !!m_Ref; }
|
|
|
| private:
|
| - CFX_CountRef<CPDF_GeneralStateData> m_Ref;
|
| + class StateData {
|
| + public:
|
| + StateData();
|
| + StateData(const StateData& that);
|
| + ~StateData();
|
| +
|
| + void SetBlendMode(const CFX_ByteStringC& blend_mode);
|
| +
|
| + char m_BlendMode[16];
|
| + int m_BlendType;
|
| + CPDF_Object* m_pSoftMask;
|
| + FX_FLOAT m_SMaskMatrix[6];
|
| + FX_FLOAT m_StrokeAlpha;
|
| + FX_FLOAT m_FillAlpha;
|
| + CPDF_Object* m_pTR;
|
| + CPDF_TransferFunc* m_pTransferFunc;
|
| + CFX_Matrix m_Matrix;
|
| + int m_RenderIntent;
|
| + FX_BOOL m_StrokeAdjust;
|
| + FX_BOOL m_AlphaSource;
|
| + FX_BOOL m_TextKnockout;
|
| + FX_BOOL m_StrokeOP;
|
| + FX_BOOL m_FillOP;
|
| + int m_OPMode;
|
| + CPDF_Object* m_pBG;
|
| + CPDF_Object* m_pUCR;
|
| + CPDF_Object* m_pHT;
|
| + FX_FLOAT m_Flatness;
|
| + FX_FLOAT m_Smoothness;
|
| + };
|
| +
|
| + CFX_CountRef<StateData> m_Ref;
|
| };
|
|
|
| #endif // CORE_FPDFAPI_FPDF_PAGE_INCLUDE_CPDF_GENERALSTATE_H_
|
|
|