Index: core/fpdfapi/fpdf_page/include/cpdf_textstate.h |
diff --git a/core/fpdfapi/fpdf_page/include/cpdf_textstate.h b/core/fpdfapi/fpdf_page/include/cpdf_textstate.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b457026bc8a7fb44638191c0d083ae13db504b18 |
--- /dev/null |
+++ b/core/fpdfapi/fpdf_page/include/cpdf_textstate.h |
@@ -0,0 +1,91 @@ |
+// 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_FPDF_PAGE_INCLUDE_CPDF_TEXTSTATE_H_ |
+#define CORE_FPDFAPI_FPDF_PAGE_INCLUDE_CPDF_TEXTSTATE_H_ |
+ |
+#include "core/fxcrt/include/cfx_count_ref.h" |
+#include "core/fxcrt/include/fx_basic.h" |
+ |
+class CPDF_Document; |
+class CPDF_Font; |
+ |
+// See PDF Reference 1.7, page 402, table 5.3. |
+enum class TextRenderingMode { |
+ MODE_FILL = 0, |
+ MODE_STROKE = 1, |
+ MODE_FILL_STROKE = 2, |
+ MODE_INVISIBLE = 3, |
+ MODE_FILL_CLIP = 4, |
+ MODE_STROKE_CLIP = 5, |
+ MODE_FILL_STROKE_CLIP = 6, |
+ MODE_CLIP = 7, |
+}; |
+ |
+class CPDF_TextState { |
+ public: |
+ CPDF_TextState(); |
+ ~CPDF_TextState(); |
+ |
+ void Emplace(); |
+ |
+ CPDF_Font* GetFont() const; |
+ void SetFont(CPDF_Font* pFont); |
+ |
+ FX_FLOAT GetFontSize() const; |
+ void SetFontSize(FX_FLOAT size); |
+ |
+ const FX_FLOAT* GetMatrix() const; |
+ FX_FLOAT* GetMutableMatrix(); |
+ |
+ FX_FLOAT GetCharSpace() const; |
+ void SetCharSpace(FX_FLOAT sp); |
+ |
+ FX_FLOAT GetWordSpace() const; |
+ void SetWordSpace(FX_FLOAT sp); |
+ |
+ FX_FLOAT GetFontSizeV() const; |
+ FX_FLOAT GetFontSizeH() const; |
+ FX_FLOAT GetBaselineAngle() const; |
+ FX_FLOAT GetShearAngle() const; |
+ |
+ TextRenderingMode GetTextMode() const; |
+ void SetTextMode(TextRenderingMode mode); |
+ |
+ const FX_FLOAT* GetCTM() const; |
+ FX_FLOAT* GetMutableCTM(); |
+ |
+ private: |
+ class TextData { |
+ public: |
+ TextData(); |
+ TextData(const TextData& src); |
+ ~TextData(); |
+ |
+ void SetFont(CPDF_Font* pFont); |
+ FX_FLOAT GetFontSizeV() const; |
+ FX_FLOAT GetFontSizeH() const; |
+ FX_FLOAT GetBaselineAngle() const; |
+ FX_FLOAT GetShearAngle() const; |
+ |
+ CPDF_Font* m_pFont; |
+ CPDF_Document* m_pDocument; |
+ FX_FLOAT m_FontSize; |
+ FX_FLOAT m_CharSpace; |
+ FX_FLOAT m_WordSpace; |
+ TextRenderingMode m_TextMode; |
+ FX_FLOAT m_Matrix[4]; |
+ FX_FLOAT m_CTM[4]; |
+ }; |
+ |
+ CFX_CountRef<TextData> m_Ref; |
+}; |
+ |
+bool SetTextRenderingModeFromInt(int iMode, TextRenderingMode* mode); |
+bool TextRenderingModeIsClipMode(const TextRenderingMode& mode); |
+bool TextRenderingModeIsStrokeMode(const TextRenderingMode& mode); |
+ |
+#endif // CORE_FPDFAPI_FPDF_PAGE_INCLUDE_CPDF_TEXTSTATE_H_ |