OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #ifndef _PWL_EDITCTRL_H_ | 7 #ifndef _PWL_EDITCTRL_H_ |
8 #define _PWL_EDITCTRL_H_ | 8 #define _PWL_EDITCTRL_H_ |
9 | 9 |
10 enum PWL_EDIT_ALIGNFORMAT_H | 10 enum PWL_EDIT_ALIGNFORMAT_H { PEAH_LEFT = 0, PEAH_MIDDLE, PEAH_RIGHT }; |
11 { | |
12 » PEAH_LEFT = 0, | |
13 » PEAH_MIDDLE, | |
14 » PEAH_RIGHT | |
15 }; | |
16 | 11 |
17 enum PWL_EDIT_ALIGNFORMAT_V | 12 enum PWL_EDIT_ALIGNFORMAT_V { PEAV_TOP = 0, PEAV_CENTER, PEAV_BOTTOM }; |
18 { | |
19 » PEAV_TOP = 0,» | |
20 » PEAV_CENTER, | |
21 » PEAV_BOTTOM | |
22 }; | |
23 | 13 |
24 class IPWL_Edit_Notify; | 14 class IPWL_Edit_Notify; |
25 class CPWL_EditCtrl; | 15 class CPWL_EditCtrl; |
26 class CPWL_Caret; | 16 class CPWL_Caret; |
27 class IFX_Edit; | 17 class IFX_Edit; |
28 class CPWL_Edit; | 18 class CPWL_Edit; |
29 | 19 |
30 class IPWL_Edit_Notify | 20 class IPWL_Edit_Notify { |
31 { | 21 public: |
32 public: | 22 // when the position of caret is changed in edit |
33 » //when the position of caret is changed in edit | 23 virtual void OnCaretMove(FX_INT32 x1, FX_INT32 y1, FX_INT32 x2, FX_INT32 y2) { |
34 » virtual void» » » » » OnCaretMove(FX_INT32 x1,
FX_INT32 y1, FX_INT32 x2, FX_INT32 y2) {} | 24 } |
35 » virtual void» » » » » OnContentChange(const CP
DF_Rect& rcContent){} | 25 virtual void OnContentChange(const CPDF_Rect& rcContent) {} |
36 » //OprType: 0 InsertWord | 26 // OprType: 0 InsertWord |
37 » //1 InsertReturn | 27 // 1 InsertReturn |
38 » //2 BackSpace | 28 // 2 BackSpace |
39 » //3 Delete | 29 // 3 Delete |
40 » //4 Clear | 30 // 4 Clear |
41 » //5 InsertText | 31 // 5 InsertText |
42 » //6 SetText | 32 // 6 SetText |
43 » virtual void» » » » » OnInsertWord(const CPVT_
WordPlace& place, const CPVT_WordPlace& oldplace){} | 33 virtual void OnInsertWord(const CPVT_WordPlace& place, |
44 » virtual void» » » » » OnInsertReturn(const CPV
T_WordPlace& place, const CPVT_WordPlace& oldplace){} | 34 const CPVT_WordPlace& oldplace) {} |
45 » virtual void» » » » » OnBackSpace(const CPVT_W
ordPlace& place, const CPVT_WordPlace& oldplace){} | 35 virtual void OnInsertReturn(const CPVT_WordPlace& place, |
46 » virtual void» » » » » OnDelete(const CPVT_Word
Place& place, const CPVT_WordPlace& oldplace){} | 36 const CPVT_WordPlace& oldplace) {} |
47 » virtual void» » » » » OnClear(const CPVT_WordP
lace& place, const CPVT_WordPlace& oldplace){} | 37 virtual void OnBackSpace(const CPVT_WordPlace& place, |
48 » virtual void» » » » » OnInsertText(const CPVT_
WordPlace& place, const CPVT_WordPlace& oldplace){} | 38 const CPVT_WordPlace& oldplace) {} |
49 » virtual void» » » » » OnSetText(const CPVT_Wor
dPlace& place, const CPVT_WordPlace& oldplace){} | 39 virtual void OnDelete(const CPVT_WordPlace& place, |
50 » virtual void» » » » » OnAddUndo(CPWL_Edit* pEd
it) {} | 40 const CPVT_WordPlace& oldplace) {} |
| 41 virtual void OnClear(const CPVT_WordPlace& place, |
| 42 const CPVT_WordPlace& oldplace) {} |
| 43 virtual void OnInsertText(const CPVT_WordPlace& place, |
| 44 const CPVT_WordPlace& oldplace) {} |
| 45 virtual void OnSetText(const CPVT_WordPlace& place, |
| 46 const CPVT_WordPlace& oldplace) {} |
| 47 virtual void OnAddUndo(CPWL_Edit* pEdit) {} |
51 }; | 48 }; |
52 | 49 |
53 class PWL_CLASS CPWL_EditCtrl : public CPWL_Wnd, public IFX_Edit_Notify | 50 class PWL_CLASS CPWL_EditCtrl : public CPWL_Wnd, public IFX_Edit_Notify { |
54 { | 51 friend class CPWL_Edit_Notify; |
55 » friend class CPWL_Edit_Notify; | |
56 | 52 |
57 public: | 53 public: |
58 » CPWL_EditCtrl(); | 54 CPWL_EditCtrl(); |
59 » virtual ~CPWL_EditCtrl(); | 55 virtual ~CPWL_EditCtrl(); |
60 | 56 |
61 public: | 57 public: |
62 » virtual void» » » » » OnCreate(PWL_CREATEPARAM
& cp); | 58 virtual void OnCreate(PWL_CREATEPARAM& cp); |
63 » virtual void» » » » » OnCreated(); | 59 virtual void OnCreated(); |
64 | 60 |
65 » virtual FX_BOOL»» » » » OnKeyDown(FX_WORD nChar,
FX_DWORD nFlag); | 61 virtual FX_BOOL OnKeyDown(FX_WORD nChar, FX_DWORD nFlag); |
66 » virtual FX_BOOL»» » » » OnChar(FX_WORD nChar, FX
_DWORD nFlag); | 62 virtual FX_BOOL OnChar(FX_WORD nChar, FX_DWORD nFlag); |
67 » virtual FX_BOOL»» » » » OnLButtonDown(const CPDF
_Point & point, FX_DWORD nFlag);» | 63 virtual FX_BOOL OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag); |
68 » virtual FX_BOOL»» » » » OnLButtonUp(const CPDF_P
oint & point, FX_DWORD nFlag);» | 64 virtual FX_BOOL OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag); |
69 » virtual FX_BOOL»» » » » OnMouseMove(const CPDF_P
oint & point, FX_DWORD nFlag); | 65 virtual FX_BOOL OnMouseMove(const CPDF_Point& point, FX_DWORD nFlag); |
70 » virtual void» » » » » OnNotify(CPWL_Wnd* pWnd,
FX_DWORD msg, FX_INTPTR wParam = 0, FX_INTPTR lParam = 0); | 66 virtual void OnNotify(CPWL_Wnd* pWnd, |
| 67 FX_DWORD msg, |
| 68 FX_INTPTR wParam = 0, |
| 69 FX_INTPTR lParam = 0); |
71 | 70 |
72 » virtual void» » » » » CreateChildWnd(const PWL
_CREATEPARAM & cp); | 71 virtual void CreateChildWnd(const PWL_CREATEPARAM& cp); |
73 » virtual void» » » » » RePosChildWnd();» | 72 virtual void RePosChildWnd(); |
74 » virtual void» » » » » SetFontSize(FX_FLOAT fFo
ntSize); | 73 virtual void SetFontSize(FX_FLOAT fFontSize); |
75 » virtual FX_FLOAT» » » » GetFontSize() const; | 74 virtual FX_FLOAT GetFontSize() const; |
76 » | |
77 public: | |
78 » virtual void» » » » » SetText(FX_LPCWSTR csTex
t); | |
79 | 75 |
80 » virtual void» » » » » CopyText(); | 76 public: |
81 » virtual void» » » » » PasteText(); | 77 virtual void SetText(FX_LPCWSTR csText); |
82 » virtual void » » » » » CutText(); | |
83 | 78 |
84 » CPDF_Rect» » » » » » GetContentRect()
const; | 79 virtual void CopyText(); |
85 » void» » » » » » » GetCaretPos(FX_I
NT32& x, FX_INT32& y) const; | 80 virtual void PasteText(); |
86 » FX_BOOL»» » » » » » IsModified() con
st; | 81 virtual void CutText(); |
87 | 82 |
88 » CFX_WideString» » » » » GetText() const; | 83 CPDF_Rect GetContentRect() const; |
89 » void» » » » » » » SetSel(FX_INT32
nStartChar,FX_INT32 nEndChar); | 84 void GetCaretPos(FX_INT32& x, FX_INT32& y) const; |
90 » void» » » » » » » GetSel(FX_INT32
& nStartChar, FX_INT32 & nEndChar ) const; | 85 FX_BOOL IsModified() const; |
91 » void» » » » » » » GetTextRange(con
st CPDF_Rect& rect, FX_INT32 & nStartChar, FX_INT32 & nEndChar) const; | |
92 » CFX_WideString» » » » » GetText(FX_INT32 & nStar
tChar, FX_INT32 & nEndChar) const; | |
93 » void» » » » » » » Clear(); | |
94 » void» » » » » » » SelectAll(); | |
95 | 86 |
96 » FX_INT32» » » » » » GetCaret() const
; | 87 CFX_WideString GetText() const; |
97 » void» » » » » » » SetCaret(FX_INT3
2 nPos); | 88 void SetSel(FX_INT32 nStartChar, FX_INT32 nEndChar); |
98 » FX_INT32» » » » » » GetTotalWords()
const; | 89 void GetSel(FX_INT32& nStartChar, FX_INT32& nEndChar) const; |
| 90 void GetTextRange(const CPDF_Rect& rect, |
| 91 FX_INT32& nStartChar, |
| 92 FX_INT32& nEndChar) const; |
| 93 CFX_WideString GetText(FX_INT32& nStartChar, FX_INT32& nEndChar) const; |
| 94 void Clear(); |
| 95 void SelectAll(); |
99 | 96 |
100 » void» » » » » » » Paint(); | 97 FX_INT32 GetCaret() const; |
| 98 void SetCaret(FX_INT32 nPos); |
| 99 FX_INT32 GetTotalWords() const; |
101 | 100 |
102 » void» » » » » » » EnableRefresh(FX
_BOOL bRefresh);» | 101 void Paint(); |
103 » CPDF_Point» » » » » » GetScrollPos() c
onst; | |
104 » void» » » » » » » SetScrollPos(con
st CPDF_Point& point); | |
105 | 102 |
106 » void» » » » » » » SetEditNotify(IP
WL_Edit_Notify* pNotify) {m_pEditNotify = pNotify;}» | 103 void EnableRefresh(FX_BOOL bRefresh); |
| 104 CPDF_Point GetScrollPos() const; |
| 105 void SetScrollPos(const CPDF_Point& point); |
107 | 106 |
108 » void» » » » » » » SetCharSet(FX_BY
TE nCharSet){m_nCharSet = nCharSet;} | 107 void SetEditNotify(IPWL_Edit_Notify* pNotify) { m_pEditNotify = pNotify; } |
109 » FX_INT32» » » » » » GetCharSet() con
st; | |
110 | 108 |
111 » void» » » » » » » SetCodePage(FX_I
NT32 nCodePage){m_nCodePage = nCodePage;} | 109 void SetCharSet(FX_BYTE nCharSet) { m_nCharSet = nCharSet; } |
112 » FX_INT32» » » » » » GetCodePage() co
nst {return m_nCodePage;} | 110 FX_INT32 GetCharSet() const; |
113 | 111 |
114 » CPDF_Font *» » » » » » GetCaretFont() c
onst; | 112 void SetCodePage(FX_INT32 nCodePage) { m_nCodePage = nCodePage; } |
115 » FX_FLOAT» » » » » » GetCaretFontSize
() const; | 113 FX_INT32 GetCodePage() const { return m_nCodePage; } |
116 | 114 |
117 » FX_BOOL»» » » » » » CanUndo() const; | 115 CPDF_Font* GetCaretFont() const; |
118 » FX_BOOL»» » » » » » CanRedo() const; | 116 FX_FLOAT GetCaretFontSize() const; |
119 » void» » » » » » » Redo(); | |
120 » void» » » » » » » Undo(); | |
121 | 117 |
122 » void» » » » » » » SetReadyToInput(
); | 118 FX_BOOL CanUndo() const; |
123 protected: | 119 FX_BOOL CanRedo() const; |
124 » virtual void» » » » » ShowVScrollBar(FX_BOOL b
Show); | 120 void Redo(); |
| 121 void Undo(); |
125 | 122 |
126 » virtual void» » » » » InsertWord(FX_WORD word,
FX_INT32 nCharset); | 123 void SetReadyToInput(); |
127 » virtual void» » » » » InsertReturn(); | |
128 » virtual void» » » » » InsertText(FX_LPCWSTR cs
Text); | |
129 | 124 |
130 » virtual void» » » » » SetCursor(); | 125 protected: |
131 » FX_BOOL»» » » » » » IsWndHorV(); | 126 virtual void ShowVScrollBar(FX_BOOL bShow); |
132 | 127 |
133 » void» » » » » » » Delete(); | 128 virtual void InsertWord(FX_WORD word, FX_INT32 nCharset); |
134 » void» » » » » » » Backspace(); | 129 virtual void InsertReturn(); |
| 130 virtual void InsertText(FX_LPCWSTR csText); |
135 | 131 |
136 protected: | 132 virtual void SetCursor(); |
137 » void» » » » » » » GetCaretInfo(CPD
F_Point & ptHead, CPDF_Point & ptFoot) const; | 133 FX_BOOL IsWndHorV(); |
138 » void» » » » » » » SetCaret(FX_BOOL
bVisible, const CPDF_Point & ptHead, const CPDF_Point & ptFoot); | |
139 » | |
140 » void» » » » » » » SetEditCaret(FX_
BOOL bVisible); | |
141 | 134 |
142 protected: | 135 void Delete(); |
143 » virtual void» » » » » IOnSetScrollInfoX(FX_FLO
AT fPlateMin, FX_FLOAT fPlateMax, | 136 void Backspace(); |
144 » » » » » » » » » »
» » FX_FLOAT fContentMin, FX_FLOAT fContentMax, | |
145 » » » » » » » » » »
» » FX_FLOAT fSmallStep, FX_FLOAT fBigStep){} | |
146 » virtual void» » » » » IOnSetScrollInfoY(FX_FLO
AT fPlateMin, FX_FLOAT fPlateMax, | |
147 » » » » » » » » » »
» » FX_FLOAT fContentMin, FX_FLOAT fContentMax, | |
148 » » » » » » » » » »
» » FX_FLOAT fSmallStep, FX_FLOAT fBigStep); | |
149 » virtual void» » » » » IOnSetScrollPosX(FX_FLOA
T fx){} | |
150 » virtual void» » » » » IOnSetScrollPosY(FX_FLOA
T fy); | |
151 » virtual void» » » » » IOnSetCaret(FX_BOOL bVis
ible,const CPDF_Point & ptHead,const CPDF_Point & ptFoot, const CPVT_WordPlace&
place); | |
152 » virtual void» » » » » IOnCaretChange(const CPV
T_SecProps & secProps, const CPVT_WordProps & wordProps); | |
153 » virtual void» » » » » IOnContentChange(const C
PDF_Rect& rcContent); | |
154 » virtual void» » » » » IOnInvalidateRect(CPDF_R
ect * pRect); | |
155 | 137 |
156 private: | 138 protected: |
157 » void» » » » » » » CreateEditCaret(
const PWL_CREATEPARAM & cp); | 139 void GetCaretInfo(CPDF_Point& ptHead, CPDF_Point& ptFoot) const; |
| 140 void SetCaret(FX_BOOL bVisible, |
| 141 const CPDF_Point& ptHead, |
| 142 const CPDF_Point& ptFoot); |
158 | 143 |
159 protected: | 144 void SetEditCaret(FX_BOOL bVisible); |
160 » IFX_Edit*» » » » » » m_pEdit; | |
161 » CPWL_Caret*» » » » » » m_pEditCaret; | |
162 » FX_BOOL»» » » » » » m_bMouseDown; | |
163 » IPWL_Edit_Notify*» » » » m_pEditNotify;» | |
164 | 145 |
165 private: | 146 protected: |
166 » FX_INT32» » » » » » m_nCharSet; | 147 virtual void IOnSetScrollInfoX(FX_FLOAT fPlateMin, |
167 » FX_INT32» » » » » » m_nCodePage; | 148 FX_FLOAT fPlateMax, |
| 149 FX_FLOAT fContentMin, |
| 150 FX_FLOAT fContentMax, |
| 151 FX_FLOAT fSmallStep, |
| 152 FX_FLOAT fBigStep) {} |
| 153 virtual void IOnSetScrollInfoY(FX_FLOAT fPlateMin, |
| 154 FX_FLOAT fPlateMax, |
| 155 FX_FLOAT fContentMin, |
| 156 FX_FLOAT fContentMax, |
| 157 FX_FLOAT fSmallStep, |
| 158 FX_FLOAT fBigStep); |
| 159 virtual void IOnSetScrollPosX(FX_FLOAT fx) {} |
| 160 virtual void IOnSetScrollPosY(FX_FLOAT fy); |
| 161 virtual void IOnSetCaret(FX_BOOL bVisible, |
| 162 const CPDF_Point& ptHead, |
| 163 const CPDF_Point& ptFoot, |
| 164 const CPVT_WordPlace& place); |
| 165 virtual void IOnCaretChange(const CPVT_SecProps& secProps, |
| 166 const CPVT_WordProps& wordProps); |
| 167 virtual void IOnContentChange(const CPDF_Rect& rcContent); |
| 168 virtual void IOnInvalidateRect(CPDF_Rect* pRect); |
| 169 |
| 170 private: |
| 171 void CreateEditCaret(const PWL_CREATEPARAM& cp); |
| 172 |
| 173 protected: |
| 174 IFX_Edit* m_pEdit; |
| 175 CPWL_Caret* m_pEditCaret; |
| 176 FX_BOOL m_bMouseDown; |
| 177 IPWL_Edit_Notify* m_pEditNotify; |
| 178 |
| 179 private: |
| 180 FX_INT32 m_nCharSet; |
| 181 FX_INT32 m_nCodePage; |
168 }; | 182 }; |
169 | 183 |
170 #endif | 184 #endif |
171 | |
OLD | NEW |