14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2016 PDFium Authors. All rights reserved. 24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file. 44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#ifndef CORE_FPDFAPI_PAGE_CPDF_TEXTSTATE_H_ 84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define CORE_FPDFAPI_PAGE_CPDF_TEXTSTATE_H_ 94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/cfx_shared_copy_on_write.h" 114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/fx_basic.h" 124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDF_Document; 144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDF_Font; 154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// See PDF Reference 1.7, page 402, table 5.3. 174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannenum class TextRenderingMode { 184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann MODE_FILL = 0, 194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann MODE_STROKE = 1, 204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann MODE_FILL_STROKE = 2, 214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann MODE_INVISIBLE = 3, 224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann MODE_FILL_CLIP = 4, 234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann MODE_STROKE_CLIP = 5, 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann MODE_FILL_STROKE_CLIP = 6, 254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann MODE_CLIP = 7, 264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}; 274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDF_TextState { 294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public: 304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_TextState(); 314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ~CPDF_TextState(); 324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void Emplace(); 344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Font* GetFont() const; 364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void SetFont(CPDF_Font* pFont); 374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT GetFontSize() const; 394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void SetFontSize(FX_FLOAT size); 404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const FX_FLOAT* GetMatrix() const; 424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT* GetMutableMatrix(); 434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT GetCharSpace() const; 454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void SetCharSpace(FX_FLOAT sp); 464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT GetWordSpace() const; 484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void SetWordSpace(FX_FLOAT sp); 494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT GetFontSizeV() const; 514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT GetFontSizeH() const; 524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT GetBaselineAngle() const; 534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT GetShearAngle() const; 544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann TextRenderingMode GetTextMode() const; 564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void SetTextMode(TextRenderingMode mode); 574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const FX_FLOAT* GetCTM() const; 594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT* GetMutableCTM(); 604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann private: 624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann class TextData { 634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public: 644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann TextData(); 654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann TextData(const TextData& src); 664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ~TextData(); 674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void SetFont(CPDF_Font* pFont); 694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT GetFontSizeV() const; 704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT GetFontSizeH() const; 714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT GetBaselineAngle() const; 724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT GetShearAngle() const; 734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Font* m_pFont; 754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_Document* m_pDocument; 764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT m_FontSize; 774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT m_CharSpace; 784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT m_WordSpace; 794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann TextRenderingMode m_TextMode; 804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT m_Matrix[4]; 814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT m_CTM[4]; 824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann }; 834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_SharedCopyOnWrite<TextData> m_Ref; 854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}; 864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool SetTextRenderingModeFromInt(int iMode, TextRenderingMode* mode); 884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool TextRenderingModeIsClipMode(const TextRenderingMode& mode); 894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool TextRenderingModeIsStrokeMode(const TextRenderingMode& mode); 904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#endif // CORE_FPDFAPI_PAGE_CPDF_TEXTSTATE_H_ 92