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();
~IFDE_TextOut()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