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 XFA_FDE_IFDE_TXTEDTENGINE_H_
8 #define XFA_FDE_IFDE_TXTEDTENGINE_H_
9 
10 #include "core/fxge/include/fx_dib.h"
11 #include "xfa/fgas/font/fgas_font.h"
12 
13 class CFDE_TxtEdtEngine;
14 class CFWL_EditImp;
15 class IFDE_TxtEdtPage;
16 
17 #define FDE_TEXTEDITMODE_MultiLines (1L << 0)
18 #define FDE_TEXTEDITMODE_AutoLineWrap (1L << 1)
19 #define FDE_TEXTEDITMODE_ReadOnly (1L << 2)
20 #define FDE_TEXTEDITMODE_LimitArea_Vert (1L << 3)
21 #define FDE_TEXTEDITMODE_LimitArea_Horz (1L << 4)
22 #define FDE_TEXTEDITMODE_NoRedoUndo (1L << 5)
23 #define FDE_TEXTEDITMODE_FIELD_TAB (1L << 6)
24 #define FDE_TEXTEDITMODE_FIELD_AUTO (1L << 7)
25 #define FDE_TEXTEDITMODE_Validate (1L << 8)
26 #define FDE_TEXTEDITMODE_Password (1L << 9)
27 
28 #define FDE_TEXTEDITALIGN_Left (0L << 0)
29 #define FDE_TEXTEDITALIGN_Center (1L << 0)
30 #define FDE_TEXTEDITALIGN_Right (2L << 0)
31 #define FDE_TEXTEDITALIGN_Normal (1L << 3)
32 #define FDE_TEXTEDITALIGN_Justified (1L << 4)
33 #define FDE_TEXTEDITALIGN_Distributed (1L << 5)
34 
35 #define FDE_TEXTEDITLAYOUT_DocVertical (1L << 0)
36 #define FDE_TEXTEDITLAYOUT_CharVertial (1L << 1)
37 #define FDE_TEXTEDITLAYOUT_LineReserve (1L << 2)
38 #define FDE_TEXTEDITLAYOUT_RTL (1L << 3)
39 #define FDE_TEXTEDITLAYOUT_CombText (1L << 4)
40 #define FDE_TEXTEDITLAYOUT_ExpandTab (1L << 5)
41 #define FDE_TEXTEDITLAYOUT_ArabicContext (1L << 6)
42 #define FDE_TEXTEDITLAYOUT_ArabicShapes (1L << 7)
43 #define FDE_TEXTEDITLAYOUT_LastLineHeight (1L << 8)
44 
45 enum FDE_TXTEDTMOVECARET {
46   MC_MoveNone = 0,
47   MC_Left,
48   MC_Right,
49   MC_Up,
50   MC_Down,
51   MC_WordBackward,
52   MC_WordForward,
53   MC_LineStart,
54   MC_LineEnd,
55   MC_ParagStart,
56   MC_ParagEnd,
57   MC_PageUp,
58   MC_PageDown,
59   MC_Home,
60   MC_End,
61 };
62 
63 enum FDE_TXTEDT_MODIFY_RET {
64   FDE_TXTEDT_MODIFY_RET_F_Tab = -6,
65   FDE_TXTEDT_MODIFY_RET_F_Locked = -5,
66   FDE_TXTEDT_MODIFY_RET_F_Invalidate = -4,
67   FDE_TXTEDT_MODIFY_RET_F_Boundary = -3,
68   FDE_TXTEDT_MODIFY_RET_F_Full = -2,
69   FDE_TXTEDT_MODIFY_RET_F_Normal = -1,
70   FDE_TXTEDT_MODIFY_RET_S_Normal = 0,
71   FDE_TXTEDT_MODIFY_RET_S_Full = 1,
72   FDE_TXTEDT_MODIFY_RET_S_Part = 2,
73   FDE_TXTEDT_MODIFY_RET_S_Empty = 3,
74   FDE_TXTEDT_MODIFY_RET_T_Tab = 4,
75 };
76 
77 enum FDE_TXTEDIT_LINEEND {
78   FDE_TXTEDIT_LINEEND_Auto,
79   FDE_TXTEDIT_LINEEND_CRLF,
80   FDE_TXTEDIT_LINEEND_CR,
81   FDE_TXTEDIT_LINEEND_LF,
82 };
83 
84 struct FDE_TXTEDTPARAMS {
85   FDE_TXTEDTPARAMS();
86 
87   FX_FLOAT fPlateWidth;
88   FX_FLOAT fPlateHeight;
89   int32_t nLineCount;
90   uint32_t dwLayoutStyles;
91   uint32_t dwAlignment;
92   uint32_t dwMode;
93   CFGAS_GEFont* pFont;
94   FX_FLOAT fFontSize;
95   FX_ARGB dwFontColor;
96   FX_FLOAT fLineSpace;
97   FX_FLOAT fTabWidth;
98   FX_BOOL bTabEquidistant;
99   FX_WCHAR wDefChar;
100   FX_WCHAR wLineBreakChar;
101   int32_t nCharRotation;
102   int32_t nLineEnd;
103   int32_t nHorzScale;
104   FX_FLOAT fCharSpace;
105   CFWL_EditImp* pEventSink;
106 };
107 
108 enum FDE_TXTEDT_TEXTCHANGE_TYPE {
109   FDE_TXTEDT_TEXTCHANGE_TYPE_Insert = 0,
110   FDE_TXTEDT_TEXTCHANGE_TYPE_Delete,
111   FDE_TXTEDT_TEXTCHANGE_TYPE_Replace,
112 };
113 
114 struct FDE_TXTEDT_TEXTCHANGE_INFO {
115   FDE_TXTEDT_TEXTCHANGE_INFO();
116   ~FDE_TXTEDT_TEXTCHANGE_INFO();
117 
118   int32_t nChangeType;
119   CFX_WideString wsInsert;
120   CFX_WideString wsDelete;
121   CFX_WideString wsPrevText;
122 };
123 
124 #endif  // XFA_FDE_IFDE_TXTEDTENGINE_H_
125