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
9class 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
35class 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