summaryrefslogtreecommitdiff
path: root/core/fpdfapi/page/cpdf_colorstate.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi/page/cpdf_colorstate.h')
-rw-r--r--core/fpdfapi/page/cpdf_colorstate.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/core/fpdfapi/page/cpdf_colorstate.h b/core/fpdfapi/page/cpdf_colorstate.h
new file mode 100644
index 0000000000..916abed7ee
--- /dev/null
+++ b/core/fpdfapi/page/cpdf_colorstate.h
@@ -0,0 +1,77 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFAPI_PAGE_CPDF_COLORSTATE_H_
+#define CORE_FPDFAPI_PAGE_CPDF_COLORSTATE_H_
+
+#include "core/fpdfapi/page/cpdf_color.h"
+#include "core/fxcrt/cfx_count_ref.h"
+#include "core/fxcrt/fx_basic.h"
+#include "core/fxcrt/fx_system.h"
+
+class CPDF_Color;
+class CPDF_ColorSpace;
+class CPDF_Pattern;
+
+class CPDF_ColorState {
+ public:
+ CPDF_ColorState();
+ CPDF_ColorState(const CPDF_ColorState& that);
+ ~CPDF_ColorState();
+
+ 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);
+ void SetFillPattern(CPDF_Pattern* pattern,
+ FX_FLOAT* pValue,
+ uint32_t nValues);
+ void SetStrokePattern(CPDF_Pattern* pattern,
+ FX_FLOAT* pValue,
+ uint32_t nValues);
+
+ explicit operator bool() const { return !!m_Ref; }
+
+ private:
+ class ColorData {
+ public:
+ ColorData();
+ ColorData(const ColorData& src);
+ ~ColorData();
+
+ void SetDefault();
+
+ uint32_t m_FillRGB;
+ uint32_t m_StrokeRGB;
+ CPDF_Color m_FillColor;
+ CPDF_Color m_StrokeColor;
+ };
+
+ void SetColor(CPDF_Color& color,
+ uint32_t& rgb,
+ CPDF_ColorSpace* pCS,
+ FX_FLOAT* pValue,
+ uint32_t nValues);
+
+ CFX_CountRef<ColorData> m_Ref;
+};
+
+#endif // CORE_FPDFAPI_PAGE_CPDF_COLORSTATE_H_