Index: core/fpdfapi/fpdf_page/cpdf_colorstate.h |
diff --git a/core/fpdfapi/fpdf_page/cpdf_colorstate.h b/core/fpdfapi/fpdf_page/cpdf_colorstate.h |
index 128d67558d4b5c5e93f6786cb5a3e5f530f1547f..d928dbdb2ea47724a3788fd4526f72c81148e2ac 100644 |
--- a/core/fpdfapi/fpdf_page/cpdf_colorstate.h |
+++ b/core/fpdfapi/fpdf_page/cpdf_colorstate.h |
@@ -16,17 +16,28 @@ class CPDF_Color; |
class CPDF_ColorSpace; |
class CPDF_Pattern; |
-class CPDF_ColorState : public CFX_CountRef<CPDF_ColorStateData> { |
+class CPDF_ColorState { |
public: |
- const CPDF_Color* GetFillColor() const { |
- const CPDF_ColorStateData* pData = GetObject(); |
- return pData ? &pData->m_FillColor : nullptr; |
- } |
+ CPDF_ColorState(); |
+ CPDF_ColorState(const CPDF_ColorState& that); |
+ ~CPDF_ColorState(); |
- const CPDF_Color* GetStrokeColor() const { |
- const CPDF_ColorStateData* pData = GetObject(); |
- return pData ? &pData->m_StrokeColor : nullptr; |
- } |
+ void Emplace(); |
+ void SetDefault(); |
+ |
+ uint32_t GetFillRGB() const; |
+ void SetFillRGB(uint32_t rgb); |
+ |
+ uint32_t GetStrokeRGB() const; |
+ void SetStrokeRGB(uint32_t rgb); |
+ |
+ const CPDF_Color* GetFillColor() const; |
+ CPDF_Color* GetMutableFillColor(); |
+ bool HasFillColor() const; |
+ |
+ const CPDF_Color* GetStrokeColor() const; |
+ CPDF_Color* GetMutableStrokeColor(); |
+ bool HasStrokeColor() const; |
void SetFillColor(CPDF_ColorSpace* pCS, FX_FLOAT* pValue, uint32_t nValues); |
void SetStrokeColor(CPDF_ColorSpace* pCS, FX_FLOAT* pValue, uint32_t nValues); |
@@ -37,12 +48,19 @@ class CPDF_ColorState : public CFX_CountRef<CPDF_ColorStateData> { |
FX_FLOAT* pValue, |
uint32_t nValues); |
+ // TODO(tsepez): Stop leaking ColorStateData outside this class. |
+ const CPDF_ColorStateData* GetObject() const { return m_Ref.GetObject(); } |
+ |
+ operator bool() const { return !!m_Ref; } |
+ |
private: |
void SetColor(CPDF_Color& color, |
uint32_t& rgb, |
CPDF_ColorSpace* pCS, |
FX_FLOAT* pValue, |
uint32_t nValues); |
+ |
+ CFX_CountRef<CPDF_ColorStateData> m_Ref; |
}; |
#endif // CORE_FPDFAPI_FPDF_PAGE_CPDF_COLORSTATE_H_ |