1 // Copyright 2014 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef _FDE_TEXTOUT 8 #define _FDE_TEXTOUT 9 class IFDE_TextOut; 10 #define FDE_TTOSTYLE_Underline 0x0001 11 #define FDE_TTOSTYLE_Strikeout 0x0002 12 #define FDE_TTOSTYLE_VerticalLayout 0x0004 13 #define FDE_TTOSTYLE_SingleLine 0x0010 14 #define FDE_TTOSTYLE_ExpandTab 0x0020 15 #define FDE_TTOSTYLE_HotKey 0x0040 16 #define FDE_TTOSTYLE_Ellipsis 0x0080 17 #define FDE_TTOSTYLE_LineWrap 0x0100 18 #define FDE_TTOSTYLE_ArabicShapes 0x0200 19 #define FDE_TTOSTYLE_RTL 0x0400 20 #define FDE_TTOSTYLE_ArabicContext 0x0800 21 #define FDE_TTOSTYLE_LastLineHeight 0x1000 22 #define FDE_TTOALIGNMENT_TopLeft 0 23 #define FDE_TTOALIGNMENT_TopCenter 1 24 #define FDE_TTOALIGNMENT_TopRight 2 25 #define FDE_TTOALIGNMENT_TopAuto 3 26 #define FDE_TTOALIGNMENT_CenterLeft 4 27 #define FDE_TTOALIGNMENT_Center 5 28 #define FDE_TTOALIGNMENT_CenterRight 6 29 #define FDE_TTOALIGNMENT_CenterAuto 7 30 #define FDE_TTOALIGNMENT_BottomLeft 8 31 #define FDE_TTOALIGNMENT_BottomCenter 9 32 #define FDE_TTOALIGNMENT_BottomRight 10 33 #define FDE_TTOALIGNMENT_BottomAuto 11 34 35 class IFDE_TextOut { 36 public: 37 static IFDE_TextOut* Create(); 38 virtual ~IFDE_TextOut() {} 39 virtual void Release() = 0; 40 virtual void SetFont(IFX_Font* pFont) = 0; 41 virtual void SetFontSize(FX_FLOAT fFontSize) = 0; 42 virtual void SetTextColor(FX_ARGB color) = 0; 43 virtual void SetStyles(FX_DWORD dwStyles) = 0; 44 virtual void SetTabWidth(FX_FLOAT fTabWidth) = 0; 45 virtual void SetEllipsisString(const CFX_WideString& wsEllipsis) = 0; 46 virtual void SetParagraphBreakChar(FX_WCHAR wch) = 0; 47 virtual void SetAlignment(int32_t iAlignment) = 0; 48 virtual void SetLineSpace(FX_FLOAT fLineSpace) = 0; 49 virtual void SetDIBitmap(CFX_DIBitmap* pDIB) = 0; 50 virtual void SetRenderDevice(CFX_RenderDevice* pDevice) = 0; 51 virtual void SetClipRect(const CFX_Rect& rtClip) = 0; 52 virtual void SetClipRect(const CFX_RectF& rtClip) = 0; 53 virtual void SetMatrix(const CFX_Matrix& matrix) = 0; 54 virtual void SetLineBreakTolerance(FX_FLOAT fTolerance) = 0; 55 virtual void CalcSize(const FX_WCHAR* pwsStr, 56 int32_t iLength, 57 CFX_Size& size) = 0; 58 virtual void CalcSize(const FX_WCHAR* pwsStr, 59 int32_t iLength, 60 CFX_SizeF& size) = 0; 61 virtual void CalcSize(const FX_WCHAR* pwsStr, 62 int32_t iLength, 63 CFX_Rect& rect) = 0; 64 virtual void CalcSize(const FX_WCHAR* pwsStr, 65 int32_t iLength, 66 CFX_RectF& rect) = 0; 67 virtual void DrawText(const FX_WCHAR* pwsStr, 68 int32_t iLength, 69 int32_t x, 70 int32_t y) = 0; 71 virtual void DrawText(const FX_WCHAR* pwsStr, 72 int32_t iLength, 73 FX_FLOAT x, 74 FX_FLOAT y) = 0; 75 virtual void DrawText(const FX_WCHAR* pwsStr, 76 int32_t iLength, 77 const CFX_Rect& rect) = 0; 78 virtual void DrawText(const FX_WCHAR* pwsStr, 79 int32_t iLength, 80 const CFX_RectF& rect) = 0; 81 virtual void SetLogicClipRect(const CFX_RectF& rtClip) = 0; 82 virtual void CalcLogicSize(const FX_WCHAR* pwsStr, 83 int32_t iLength, 84 CFX_SizeF& size) = 0; 85 virtual void CalcLogicSize(const FX_WCHAR* pwsStr, 86 int32_t iLength, 87 CFX_RectF& rect) = 0; 88 virtual void DrawLogicText(const FX_WCHAR* pwsStr, 89 int32_t iLength, 90 FX_FLOAT x, 91 FX_FLOAT y) = 0; 92 virtual void DrawLogicText(const FX_WCHAR* pwsStr, 93 int32_t iLength, 94 const CFX_RectF& rect) = 0; 95 virtual int32_t GetTotalLines() = 0; 96 }; 97 #endif 98