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_ |