Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(168)

Side by Side Diff: fpdfsdk/pdfwindow/PWL_Edit.cpp

Issue 2453683011: Remove FX_BOOL from fpdfsdk. (Closed)
Patch Set: Regenerate patch after rebase. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fpdfsdk/pdfwindow/PWL_Edit.h ('k') | fpdfsdk/pdfwindow/PWL_EditCtrl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "fpdfsdk/pdfwindow/PWL_Edit.h" 7 #include "fpdfsdk/pdfwindow/PWL_Edit.h"
8 8
9 #include <vector> 9 #include <vector>
10 10
11 #include "core/fpdfapi/font/cpdf_font.h" 11 #include "core/fpdfapi/font/cpdf_font.h"
12 #include "core/fpdfdoc/cpvt_word.h" 12 #include "core/fpdfdoc/cpvt_word.h"
13 #include "core/fxcrt/fx_safe_types.h" 13 #include "core/fxcrt/fx_safe_types.h"
14 #include "core/fxcrt/fx_xml.h" 14 #include "core/fxcrt/fx_xml.h"
15 #include "core/fxge/cfx_graphstatedata.h" 15 #include "core/fxge/cfx_graphstatedata.h"
16 #include "core/fxge/cfx_pathdata.h" 16 #include "core/fxge/cfx_pathdata.h"
17 #include "core/fxge/cfx_renderdevice.h" 17 #include "core/fxge/cfx_renderdevice.h"
18 #include "core/fxge/fx_font.h" 18 #include "core/fxge/fx_font.h"
19 #include "fpdfsdk/fxedit/fxet_edit.h" 19 #include "fpdfsdk/fxedit/fxet_edit.h"
20 #include "fpdfsdk/pdfwindow/PWL_Caret.h" 20 #include "fpdfsdk/pdfwindow/PWL_Caret.h"
21 #include "fpdfsdk/pdfwindow/PWL_EditCtrl.h" 21 #include "fpdfsdk/pdfwindow/PWL_EditCtrl.h"
22 #include "fpdfsdk/pdfwindow/PWL_FontMap.h" 22 #include "fpdfsdk/pdfwindow/PWL_FontMap.h"
23 #include "fpdfsdk/pdfwindow/PWL_ScrollBar.h" 23 #include "fpdfsdk/pdfwindow/PWL_ScrollBar.h"
24 #include "fpdfsdk/pdfwindow/PWL_Utils.h" 24 #include "fpdfsdk/pdfwindow/PWL_Utils.h"
25 #include "fpdfsdk/pdfwindow/PWL_Wnd.h" 25 #include "fpdfsdk/pdfwindow/PWL_Wnd.h"
26 #include "public/fpdf_fwlevent.h" 26 #include "public/fpdf_fwlevent.h"
27 #include "third_party/base/stl_util.h" 27 #include "third_party/base/stl_util.h"
28 28
29 CPWL_Edit::CPWL_Edit() 29 CPWL_Edit::CPWL_Edit()
30 : m_pFillerNotify(nullptr), m_bFocus(FALSE), m_pFormFiller(nullptr) {} 30 : m_pFillerNotify(nullptr), m_bFocus(false), m_pFormFiller(nullptr) {}
31 31
32 CPWL_Edit::~CPWL_Edit() { 32 CPWL_Edit::~CPWL_Edit() {
33 ASSERT(m_bFocus == FALSE); 33 ASSERT(m_bFocus == false);
34 } 34 }
35 35
36 CFX_ByteString CPWL_Edit::GetClassName() const { 36 CFX_ByteString CPWL_Edit::GetClassName() const {
37 return PWL_CLASSNAME_EDIT; 37 return PWL_CLASSNAME_EDIT;
38 } 38 }
39 39
40 void CPWL_Edit::OnDestroy() {} 40 void CPWL_Edit::OnDestroy() {}
41 41
42 void CPWL_Edit::SetText(const CFX_WideString& csText) { 42 void CPWL_Edit::SetText(const CFX_WideString& csText) {
43 CFX_WideString swText = csText; 43 CFX_WideString swText = csText;
44 if (HasFlag(PES_RICH)) { 44 if (HasFlag(PES_RICH)) {
45 CFX_ByteString sValue = CFX_ByteString::FromUnicode(swText); 45 CFX_ByteString sValue = CFX_ByteString::FromUnicode(swText);
46 if (CXML_Element* pXML = 46 if (CXML_Element* pXML =
47 CXML_Element::Parse(sValue.c_str(), sValue.GetLength())) { 47 CXML_Element::Parse(sValue.c_str(), sValue.GetLength())) {
48 int32_t nCount = pXML->CountChildren(); 48 int32_t nCount = pXML->CountChildren();
49 FX_BOOL bFirst = TRUE; 49 bool bFirst = true;
50 50
51 swText.clear(); 51 swText.clear();
52 52
53 for (int32_t i = 0; i < nCount; i++) { 53 for (int32_t i = 0; i < nCount; i++) {
54 if (CXML_Element* pSubElement = pXML->GetElement(i)) { 54 if (CXML_Element* pSubElement = pXML->GetElement(i)) {
55 CFX_ByteString tag = pSubElement->GetTagName(); 55 CFX_ByteString tag = pSubElement->GetTagName();
56 if (tag.EqualNoCase("p")) { 56 if (tag.EqualNoCase("p")) {
57 int nChild = pSubElement->CountChildren(); 57 int nChild = pSubElement->CountChildren();
58 CFX_WideString swSection; 58 CFX_WideString swSection;
59 for (int32_t j = 0; j < nChild; j++) { 59 for (int32_t j = 0; j < nChild; j++) {
60 swSection += pSubElement->GetContent(j); 60 swSection += pSubElement->GetContent(j);
61 } 61 }
62 62
63 if (bFirst) 63 if (bFirst)
64 bFirst = FALSE; 64 bFirst = false;
65 else 65 else
66 swText += FWL_VKEY_Return; 66 swText += FWL_VKEY_Return;
67 swText += swSection; 67 swText += swSection;
68 } 68 }
69 } 69 }
70 } 70 }
71 71
72 delete pXML; 72 delete pXML;
73 } 73 }
74 } 74 }
75 75
76 m_pEdit->SetText(swText); 76 m_pEdit->SetText(swText);
77 } 77 }
78 78
79 void CPWL_Edit::RePosChildWnd() { 79 void CPWL_Edit::RePosChildWnd() {
80 if (CPWL_ScrollBar* pVSB = GetVScrollBar()) { 80 if (CPWL_ScrollBar* pVSB = GetVScrollBar()) {
81 CFX_FloatRect rcWindow = m_rcOldWindow; 81 CFX_FloatRect rcWindow = m_rcOldWindow;
82 CFX_FloatRect rcVScroll = 82 CFX_FloatRect rcVScroll =
83 CFX_FloatRect(rcWindow.right, rcWindow.bottom, 83 CFX_FloatRect(rcWindow.right, rcWindow.bottom,
84 rcWindow.right + PWL_SCROLLBAR_WIDTH, rcWindow.top); 84 rcWindow.right + PWL_SCROLLBAR_WIDTH, rcWindow.top);
85 pVSB->Move(rcVScroll, TRUE, FALSE); 85 pVSB->Move(rcVScroll, true, false);
86 } 86 }
87 87
88 if (m_pEditCaret && !HasFlag(PES_TEXTOVERFLOW)) 88 if (m_pEditCaret && !HasFlag(PES_TEXTOVERFLOW))
89 m_pEditCaret->SetClipRect(CPWL_Utils::InflateRect( 89 m_pEditCaret->SetClipRect(CPWL_Utils::InflateRect(
90 GetClientRect(), 1.0f)); // +1 for caret beside border 90 GetClientRect(), 1.0f)); // +1 for caret beside border
91 91
92 CPWL_EditCtrl::RePosChildWnd(); 92 CPWL_EditCtrl::RePosChildWnd();
93 } 93 }
94 94
95 CFX_FloatRect CPWL_Edit::GetClientRect() const { 95 CFX_FloatRect CPWL_Edit::GetClientRect() const {
96 CFX_FloatRect rcClient = CPWL_Utils::DeflateRect( 96 CFX_FloatRect rcClient = CPWL_Utils::DeflateRect(
97 GetWindowRect(), (FX_FLOAT)(GetBorderWidth() + GetInnerBorderWidth())); 97 GetWindowRect(), (FX_FLOAT)(GetBorderWidth() + GetInnerBorderWidth()));
98 98
99 if (CPWL_ScrollBar* pVSB = GetVScrollBar()) { 99 if (CPWL_ScrollBar* pVSB = GetVScrollBar()) {
100 if (pVSB->IsVisible()) { 100 if (pVSB->IsVisible()) {
101 rcClient.right -= PWL_SCROLLBAR_WIDTH; 101 rcClient.right -= PWL_SCROLLBAR_WIDTH;
102 } 102 }
103 } 103 }
104 104
105 return rcClient; 105 return rcClient;
106 } 106 }
107 107
108 void CPWL_Edit::SetAlignFormatV(PWL_EDIT_ALIGNFORMAT_V nFormat, 108 void CPWL_Edit::SetAlignFormatV(PWL_EDIT_ALIGNFORMAT_V nFormat, bool bPaint) {
109 FX_BOOL bPaint) {
110 m_pEdit->SetAlignmentV((int32_t)nFormat, bPaint); 109 m_pEdit->SetAlignmentV((int32_t)nFormat, bPaint);
111 } 110 }
112 111
113 FX_BOOL CPWL_Edit::CanSelectAll() const { 112 bool CPWL_Edit::CanSelectAll() const {
114 return GetSelectWordRange() != m_pEdit->GetWholeWordRange(); 113 return GetSelectWordRange() != m_pEdit->GetWholeWordRange();
115 } 114 }
116 115
117 FX_BOOL CPWL_Edit::CanClear() const { 116 bool CPWL_Edit::CanClear() const {
118 return !IsReadOnly() && m_pEdit->IsSelected(); 117 return !IsReadOnly() && m_pEdit->IsSelected();
119 } 118 }
120 119
121 FX_BOOL CPWL_Edit::CanCopy() const { 120 bool CPWL_Edit::CanCopy() const {
122 return !HasFlag(PES_PASSWORD) && !HasFlag(PES_NOREAD) && 121 return !HasFlag(PES_PASSWORD) && !HasFlag(PES_NOREAD) &&
123 m_pEdit->IsSelected(); 122 m_pEdit->IsSelected();
124 } 123 }
125 124
126 FX_BOOL CPWL_Edit::CanCut() const { 125 bool CPWL_Edit::CanCut() const {
127 return CanCopy() && !IsReadOnly(); 126 return CanCopy() && !IsReadOnly();
128 } 127 }
129 void CPWL_Edit::CutText() { 128 void CPWL_Edit::CutText() {
130 if (!CanCut()) 129 if (!CanCut())
131 return; 130 return;
132 m_pEdit->Clear(); 131 m_pEdit->Clear();
133 } 132 }
134 133
135 void CPWL_Edit::OnCreated() { 134 void CPWL_Edit::OnCreated() {
136 CPWL_EditCtrl::OnCreated(); 135 CPWL_EditCtrl::OnCreated();
137 136
138 if (CPWL_ScrollBar* pScroll = GetVScrollBar()) { 137 if (CPWL_ScrollBar* pScroll = GetVScrollBar()) {
139 pScroll->RemoveFlag(PWS_AUTOTRANSPARENT); 138 pScroll->RemoveFlag(PWS_AUTOTRANSPARENT);
140 pScroll->SetTransparency(255); 139 pScroll->SetTransparency(255);
141 } 140 }
142 141
143 SetParamByFlag(); 142 SetParamByFlag();
144 143
145 m_rcOldWindow = GetWindowRect(); 144 m_rcOldWindow = GetWindowRect();
146 145
147 m_pEdit->SetOprNotify(this); 146 m_pEdit->SetOprNotify(this);
148 m_pEdit->EnableOprNotify(TRUE); 147 m_pEdit->EnableOprNotify(true);
149 } 148 }
150 149
151 void CPWL_Edit::SetParamByFlag() { 150 void CPWL_Edit::SetParamByFlag() {
152 if (HasFlag(PES_RIGHT)) { 151 if (HasFlag(PES_RIGHT)) {
153 m_pEdit->SetAlignmentH(2, FALSE); 152 m_pEdit->SetAlignmentH(2, false);
154 } else if (HasFlag(PES_MIDDLE)) { 153 } else if (HasFlag(PES_MIDDLE)) {
155 m_pEdit->SetAlignmentH(1, FALSE); 154 m_pEdit->SetAlignmentH(1, false);
156 } else { 155 } else {
157 m_pEdit->SetAlignmentH(0, FALSE); 156 m_pEdit->SetAlignmentH(0, false);
158 } 157 }
159 158
160 if (HasFlag(PES_BOTTOM)) { 159 if (HasFlag(PES_BOTTOM)) {
161 m_pEdit->SetAlignmentV(2, FALSE); 160 m_pEdit->SetAlignmentV(2, false);
162 } else if (HasFlag(PES_CENTER)) { 161 } else if (HasFlag(PES_CENTER)) {
163 m_pEdit->SetAlignmentV(1, FALSE); 162 m_pEdit->SetAlignmentV(1, false);
164 } else { 163 } else {
165 m_pEdit->SetAlignmentV(0, FALSE); 164 m_pEdit->SetAlignmentV(0, false);
166 } 165 }
167 166
168 if (HasFlag(PES_PASSWORD)) { 167 if (HasFlag(PES_PASSWORD)) {
169 m_pEdit->SetPasswordChar('*', FALSE); 168 m_pEdit->SetPasswordChar('*', false);
170 } 169 }
171 170
172 m_pEdit->SetMultiLine(HasFlag(PES_MULTILINE), FALSE); 171 m_pEdit->SetMultiLine(HasFlag(PES_MULTILINE), false);
173 m_pEdit->SetAutoReturn(HasFlag(PES_AUTORETURN), FALSE); 172 m_pEdit->SetAutoReturn(HasFlag(PES_AUTORETURN), false);
174 m_pEdit->SetAutoFontSize(HasFlag(PWS_AUTOFONTSIZE), FALSE); 173 m_pEdit->SetAutoFontSize(HasFlag(PWS_AUTOFONTSIZE), false);
175 m_pEdit->SetAutoScroll(HasFlag(PES_AUTOSCROLL), FALSE); 174 m_pEdit->SetAutoScroll(HasFlag(PES_AUTOSCROLL), false);
176 m_pEdit->EnableUndo(HasFlag(PES_UNDO)); 175 m_pEdit->EnableUndo(HasFlag(PES_UNDO));
177 176
178 if (HasFlag(PES_TEXTOVERFLOW)) { 177 if (HasFlag(PES_TEXTOVERFLOW)) {
179 SetClipRect(CFX_FloatRect(0.0f, 0.0f, 0.0f, 0.0f)); 178 SetClipRect(CFX_FloatRect(0.0f, 0.0f, 0.0f, 0.0f));
180 m_pEdit->SetTextOverflow(TRUE, FALSE); 179 m_pEdit->SetTextOverflow(true, false);
181 } else { 180 } else {
182 if (m_pEditCaret) { 181 if (m_pEditCaret) {
183 m_pEditCaret->SetClipRect(CPWL_Utils::InflateRect( 182 m_pEditCaret->SetClipRect(CPWL_Utils::InflateRect(
184 GetClientRect(), 1.0f)); // +1 for caret beside border 183 GetClientRect(), 1.0f)); // +1 for caret beside border
185 } 184 }
186 } 185 }
187 } 186 }
188 187
189 void CPWL_Edit::GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) { 188 void CPWL_Edit::GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) {
190 CPWL_Wnd::GetThisAppearanceStream(sAppStream); 189 CPWL_Wnd::GetThisAppearanceStream(sAppStream);
191 190
192 CFX_FloatRect rcClient = GetClientRect(); 191 CFX_FloatRect rcClient = GetClientRect();
193 CFX_ByteTextBuf sLine; 192 CFX_ByteTextBuf sLine;
194 193
195 int32_t nCharArray = m_pEdit->GetCharArray(); 194 int32_t nCharArray = m_pEdit->GetCharArray();
196 195
197 if (nCharArray > 0) { 196 if (nCharArray > 0) {
198 switch (GetBorderStyle()) { 197 switch (GetBorderStyle()) {
199 case BorderStyle::SOLID: { 198 case BorderStyle::SOLID: {
200 sLine << "q\n" << GetBorderWidth() << " w\n" 199 sLine << "q\n"
201 << CPWL_Utils::GetColorAppStream(GetBorderColor(), FALSE) 200 << GetBorderWidth() << " w\n"
201 << CPWL_Utils::GetColorAppStream(GetBorderColor(), false)
202 .AsStringC() 202 .AsStringC()
203 << " 2 J 0 j\n"; 203 << " 2 J 0 j\n";
204 204
205 for (int32_t i = 1; i < nCharArray; i++) { 205 for (int32_t i = 1; i < nCharArray; i++) {
206 sLine << rcClient.left + 206 sLine << rcClient.left +
207 ((rcClient.right - rcClient.left) / nCharArray) * i 207 ((rcClient.right - rcClient.left) / nCharArray) * i
208 << " " << rcClient.bottom << " m\n" 208 << " " << rcClient.bottom << " m\n"
209 << rcClient.left + 209 << rcClient.left +
210 ((rcClient.right - rcClient.left) / nCharArray) * i 210 ((rcClient.right - rcClient.left) / nCharArray) * i
211 << " " << rcClient.top << " l S\n"; 211 << " " << rcClient.top << " l S\n";
212 } 212 }
213 213
214 sLine << "Q\n"; 214 sLine << "Q\n";
215 break; 215 break;
216 } 216 }
217 case BorderStyle::DASH: { 217 case BorderStyle::DASH: {
218 sLine << "q\n" << GetBorderWidth() << " w\n" 218 sLine << "q\n"
219 << CPWL_Utils::GetColorAppStream(GetBorderColor(), FALSE) 219 << GetBorderWidth() << " w\n"
220 << CPWL_Utils::GetColorAppStream(GetBorderColor(), false)
220 .AsStringC() 221 .AsStringC()
221 << " 2 J 0 j\n" 222 << " 2 J 0 j\n"
222 << "[" << GetBorderDash().nDash << " " << GetBorderDash().nGap 223 << "[" << GetBorderDash().nDash << " " << GetBorderDash().nGap
223 << "] " << GetBorderDash().nPhase << " d\n"; 224 << "] " << GetBorderDash().nPhase << " d\n";
224 225
225 for (int32_t i = 1; i < nCharArray; i++) { 226 for (int32_t i = 1; i < nCharArray; i++) {
226 sLine << rcClient.left + 227 sLine << rcClient.left +
227 ((rcClient.right - rcClient.left) / nCharArray) * i 228 ((rcClient.right - rcClient.left) / nCharArray) * i
228 << " " << rcClient.bottom << " m\n" 229 << " " << rcClient.bottom << " m\n"
229 << rcClient.left + 230 << rcClient.left +
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 } 391 }
391 392
392 CFX_SystemHandler* pSysHandler = GetSystemHandler(); 393 CFX_SystemHandler* pSysHandler = GetSystemHandler();
393 CFX_Edit::DrawEdit( 394 CFX_Edit::DrawEdit(
394 pDevice, pUser2Device, m_pEdit.get(), 395 pDevice, pUser2Device, m_pEdit.get(),
395 CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()), 396 CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()),
396 CPWL_Utils::PWLColorToFXColor(GetTextStrokeColor(), GetTransparency()), 397 CPWL_Utils::PWLColorToFXColor(GetTextStrokeColor(), GetTransparency()),
397 rcClip, CFX_FloatPoint(), pRange, pSysHandler, m_pFormFiller); 398 rcClip, CFX_FloatPoint(), pRange, pSysHandler, m_pFormFiller);
398 } 399 }
399 400
400 FX_BOOL CPWL_Edit::OnLButtonDown(const CFX_FloatPoint& point, uint32_t nFlag) { 401 bool CPWL_Edit::OnLButtonDown(const CFX_FloatPoint& point, uint32_t nFlag) {
401 CPWL_Wnd::OnLButtonDown(point, nFlag); 402 CPWL_Wnd::OnLButtonDown(point, nFlag);
402 403
403 if (HasFlag(PES_TEXTOVERFLOW) || ClientHitTest(point)) { 404 if (HasFlag(PES_TEXTOVERFLOW) || ClientHitTest(point)) {
404 if (m_bMouseDown) 405 if (m_bMouseDown)
405 InvalidateRect(); 406 InvalidateRect();
406 407
407 m_bMouseDown = TRUE; 408 m_bMouseDown = true;
408 SetCapture(); 409 SetCapture();
409 410
410 m_pEdit->OnMouseDown(point, IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag)); 411 m_pEdit->OnMouseDown(point, IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
411 } 412 }
412 413
413 return TRUE; 414 return true;
414 } 415 }
415 416
416 FX_BOOL CPWL_Edit::OnLButtonDblClk(const CFX_FloatPoint& point, 417 bool CPWL_Edit::OnLButtonDblClk(const CFX_FloatPoint& point, uint32_t nFlag) {
417 uint32_t nFlag) {
418 CPWL_Wnd::OnLButtonDblClk(point, nFlag); 418 CPWL_Wnd::OnLButtonDblClk(point, nFlag);
419 419
420 if (HasFlag(PES_TEXTOVERFLOW) || ClientHitTest(point)) { 420 if (HasFlag(PES_TEXTOVERFLOW) || ClientHitTest(point)) {
421 m_pEdit->SelectAll(); 421 m_pEdit->SelectAll();
422 } 422 }
423 423
424 return TRUE; 424 return true;
425 } 425 }
426 426
427 FX_BOOL CPWL_Edit::OnRButtonUp(const CFX_FloatPoint& point, uint32_t nFlag) { 427 bool CPWL_Edit::OnRButtonUp(const CFX_FloatPoint& point, uint32_t nFlag) {
428 if (m_bMouseDown) 428 if (m_bMouseDown)
429 return FALSE; 429 return false;
430 430
431 CPWL_Wnd::OnRButtonUp(point, nFlag); 431 CPWL_Wnd::OnRButtonUp(point, nFlag);
432 432
433 if (!HasFlag(PES_TEXTOVERFLOW) && !ClientHitTest(point)) 433 if (!HasFlag(PES_TEXTOVERFLOW) && !ClientHitTest(point))
434 return TRUE; 434 return true;
435 435
436 CFX_SystemHandler* pSH = GetSystemHandler(); 436 CFX_SystemHandler* pSH = GetSystemHandler();
437 if (!pSH) 437 if (!pSH)
438 return FALSE; 438 return false;
439 439
440 SetFocus(); 440 SetFocus();
441 441
442 return FALSE; 442 return false;
443 } 443 }
444 444
445 void CPWL_Edit::OnSetFocus() { 445 void CPWL_Edit::OnSetFocus() {
446 SetEditCaret(TRUE); 446 SetEditCaret(true);
447 if (!IsReadOnly()) { 447 if (!IsReadOnly()) {
448 if (IPWL_FocusHandler* pFocusHandler = GetFocusHandler()) 448 if (IPWL_FocusHandler* pFocusHandler = GetFocusHandler())
449 pFocusHandler->OnSetFocus(this); 449 pFocusHandler->OnSetFocus(this);
450 } 450 }
451 m_bFocus = TRUE; 451 m_bFocus = true;
452 } 452 }
453 453
454 void CPWL_Edit::OnKillFocus() { 454 void CPWL_Edit::OnKillFocus() {
455 ShowVScrollBar(FALSE); 455 ShowVScrollBar(false);
456 m_pEdit->SelectNone(); 456 m_pEdit->SelectNone();
457 SetCaret(FALSE, CFX_FloatPoint(), CFX_FloatPoint()); 457 SetCaret(false, CFX_FloatPoint(), CFX_FloatPoint());
458 SetCharSet(FXFONT_ANSI_CHARSET); 458 SetCharSet(FXFONT_ANSI_CHARSET);
459 m_bFocus = FALSE; 459 m_bFocus = false;
460 } 460 }
461 461
462 void CPWL_Edit::SetCharSpace(FX_FLOAT fCharSpace) { 462 void CPWL_Edit::SetCharSpace(FX_FLOAT fCharSpace) {
463 m_pEdit->SetCharSpace(fCharSpace); 463 m_pEdit->SetCharSpace(fCharSpace);
464 } 464 }
465 465
466 CFX_ByteString CPWL_Edit::GetSelectAppearanceStream( 466 CFX_ByteString CPWL_Edit::GetSelectAppearanceStream(
467 const CFX_FloatPoint& ptOffset) const { 467 const CFX_FloatPoint& ptOffset) const {
468 CPVT_WordRange wr = GetSelectWordRange(); 468 CPVT_WordRange wr = GetSelectWordRange();
469 return CPWL_Utils::GetEditSelAppStream(m_pEdit.get(), ptOffset, &wr); 469 return CPWL_Utils::GetEditSelAppStream(m_pEdit.get(), ptOffset, &wr);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 CFX_FloatPoint pt; 513 CFX_FloatPoint pt;
514 CPVT_Word word; 514 CPVT_Word word;
515 if (pIterator->GetWord(word)) { 515 if (pIterator->GetWord(word)) {
516 pt = CFX_FloatPoint(word.ptWord.x + word.fWidth, 516 pt = CFX_FloatPoint(word.ptWord.x + word.fWidth,
517 word.ptWord.y + word.fDescent); 517 word.ptWord.y + word.fDescent);
518 } 518 }
519 pIterator->SetAt(wpOld); 519 pIterator->SetAt(wpOld);
520 return pt; 520 return pt;
521 } 521 }
522 522
523 FX_BOOL CPWL_Edit::IsTextFull() const { 523 bool CPWL_Edit::IsTextFull() const {
524 return m_pEdit->IsTextFull(); 524 return m_pEdit->IsTextFull();
525 } 525 }
526 526
527 FX_FLOAT CPWL_Edit::GetCharArrayAutoFontSize(CPDF_Font* pFont, 527 FX_FLOAT CPWL_Edit::GetCharArrayAutoFontSize(CPDF_Font* pFont,
528 const CFX_FloatRect& rcPlate, 528 const CFX_FloatRect& rcPlate,
529 int32_t nCharArray) { 529 int32_t nCharArray) {
530 if (pFont && !pFont->IsStandardFont()) { 530 if (pFont && !pFont->IsStandardFont()) {
531 FX_RECT rcBBox; 531 FX_RECT rcBBox;
532 pFont->GetFontBBox(rcBBox); 532 pFont->GetFontBBox(rcBBox);
533 533
534 CFX_FloatRect rcCell = rcPlate; 534 CFX_FloatRect rcCell = rcPlate;
535 FX_FLOAT xdiv = rcCell.Width() / nCharArray * 1000.0f / rcBBox.Width(); 535 FX_FLOAT xdiv = rcCell.Width() / nCharArray * 1000.0f / rcBBox.Width();
536 FX_FLOAT ydiv = -rcCell.Height() * 1000.0f / rcBBox.Height(); 536 FX_FLOAT ydiv = -rcCell.Height() * 1000.0f / rcBBox.Height();
537 537
538 return xdiv < ydiv ? xdiv : ydiv; 538 return xdiv < ydiv ? xdiv : ydiv;
539 } 539 }
540 540
541 return 0.0f; 541 return 0.0f;
542 } 542 }
543 543
544 void CPWL_Edit::SetCharArray(int32_t nCharArray) { 544 void CPWL_Edit::SetCharArray(int32_t nCharArray) {
545 if (HasFlag(PES_CHARARRAY) && nCharArray > 0) { 545 if (HasFlag(PES_CHARARRAY) && nCharArray > 0) {
546 m_pEdit->SetCharArray(nCharArray); 546 m_pEdit->SetCharArray(nCharArray);
547 m_pEdit->SetTextOverflow(TRUE, TRUE); 547 m_pEdit->SetTextOverflow(true, true);
548 548
549 if (HasFlag(PWS_AUTOFONTSIZE)) { 549 if (HasFlag(PWS_AUTOFONTSIZE)) {
550 if (IPVT_FontMap* pFontMap = GetFontMap()) { 550 if (IPVT_FontMap* pFontMap = GetFontMap()) {
551 FX_FLOAT fFontSize = GetCharArrayAutoFontSize( 551 FX_FLOAT fFontSize = GetCharArrayAutoFontSize(
552 pFontMap->GetPDFFont(0), GetClientRect(), nCharArray); 552 pFontMap->GetPDFFont(0), GetClientRect(), nCharArray);
553 if (fFontSize > 0.0f) { 553 if (fFontSize > 0.0f) {
554 m_pEdit->SetAutoFontSize(FALSE, TRUE); 554 m_pEdit->SetAutoFontSize(false, true);
555 m_pEdit->SetFontSize(fFontSize); 555 m_pEdit->SetFontSize(fFontSize);
556 } 556 }
557 } 557 }
558 } 558 }
559 } 559 }
560 } 560 }
561 561
562 void CPWL_Edit::SetLimitChar(int32_t nLimitChar) { 562 void CPWL_Edit::SetLimitChar(int32_t nLimitChar) {
563 m_pEdit->SetLimitChar(nLimitChar); 563 m_pEdit->SetLimitChar(nLimitChar);
564 } 564 }
565 565
566 void CPWL_Edit::ReplaceSel(const CFX_WideString& wsText) { 566 void CPWL_Edit::ReplaceSel(const CFX_WideString& wsText) {
567 m_pEdit->Clear(); 567 m_pEdit->Clear();
568 m_pEdit->InsertText(wsText, FXFONT_DEFAULT_CHARSET); 568 m_pEdit->InsertText(wsText, FXFONT_DEFAULT_CHARSET);
569 } 569 }
570 570
571 CFX_FloatRect CPWL_Edit::GetFocusRect() const { 571 CFX_FloatRect CPWL_Edit::GetFocusRect() const {
572 return CFX_FloatRect(); 572 return CFX_FloatRect();
573 } 573 }
574 574
575 void CPWL_Edit::ShowVScrollBar(FX_BOOL bShow) { 575 void CPWL_Edit::ShowVScrollBar(bool bShow) {
576 if (CPWL_ScrollBar* pScroll = GetVScrollBar()) { 576 if (CPWL_ScrollBar* pScroll = GetVScrollBar()) {
577 if (bShow) { 577 if (bShow) {
578 if (!pScroll->IsVisible()) { 578 if (!pScroll->IsVisible()) {
579 pScroll->SetVisible(TRUE); 579 pScroll->SetVisible(true);
580 CFX_FloatRect rcWindow = GetWindowRect(); 580 CFX_FloatRect rcWindow = GetWindowRect();
581 m_rcOldWindow = rcWindow; 581 m_rcOldWindow = rcWindow;
582 rcWindow.right += PWL_SCROLLBAR_WIDTH; 582 rcWindow.right += PWL_SCROLLBAR_WIDTH;
583 Move(rcWindow, TRUE, TRUE); 583 Move(rcWindow, true, true);
584 } 584 }
585 } else { 585 } else {
586 if (pScroll->IsVisible()) { 586 if (pScroll->IsVisible()) {
587 pScroll->SetVisible(FALSE); 587 pScroll->SetVisible(false);
588 Move(m_rcOldWindow, TRUE, TRUE); 588 Move(m_rcOldWindow, true, true);
589 } 589 }
590 } 590 }
591 } 591 }
592 } 592 }
593 593
594 FX_BOOL CPWL_Edit::IsVScrollBarVisible() const { 594 bool CPWL_Edit::IsVScrollBarVisible() const {
595 if (CPWL_ScrollBar* pScroll = GetVScrollBar()) { 595 if (CPWL_ScrollBar* pScroll = GetVScrollBar()) {
596 return pScroll->IsVisible(); 596 return pScroll->IsVisible();
597 } 597 }
598 598
599 return FALSE; 599 return false;
600 } 600 }
601 601
602 FX_BOOL CPWL_Edit::OnKeyDown(uint16_t nChar, uint32_t nFlag) { 602 bool CPWL_Edit::OnKeyDown(uint16_t nChar, uint32_t nFlag) {
603 if (m_bMouseDown) 603 if (m_bMouseDown)
604 return TRUE; 604 return true;
605 605
606 if (nChar == FWL_VKEY_Delete) { 606 if (nChar == FWL_VKEY_Delete) {
607 if (m_pFillerNotify) { 607 if (m_pFillerNotify) {
608 FX_BOOL bRC = TRUE; 608 bool bRC = true;
609 FX_BOOL bExit = FALSE; 609 bool bExit = false;
610 CFX_WideString strChange; 610 CFX_WideString strChange;
611 CFX_WideString strChangeEx; 611 CFX_WideString strChangeEx;
612 612
613 int nSelStart = 0; 613 int nSelStart = 0;
614 int nSelEnd = 0; 614 int nSelEnd = 0;
615 GetSel(nSelStart, nSelEnd); 615 GetSel(nSelStart, nSelEnd);
616 616
617 if (nSelStart == nSelEnd) 617 if (nSelStart == nSelEnd)
618 nSelEnd = nSelStart + 1; 618 nSelEnd = nSelStart + 1;
619 m_pFillerNotify->OnBeforeKeyStroke(GetAttachedData(), strChange, 619 m_pFillerNotify->OnBeforeKeyStroke(GetAttachedData(), strChange,
620 strChangeEx, nSelStart, nSelEnd, TRUE, 620 strChangeEx, nSelStart, nSelEnd, true,
621 bRC, bExit, nFlag); 621 bRC, bExit, nFlag);
622 if (!bRC) 622 if (!bRC)
623 return FALSE; 623 return false;
624 if (bExit) 624 if (bExit)
625 return FALSE; 625 return false;
626 } 626 }
627 } 627 }
628 628
629 FX_BOOL bRet = CPWL_EditCtrl::OnKeyDown(nChar, nFlag); 629 bool bRet = CPWL_EditCtrl::OnKeyDown(nChar, nFlag);
630 630
631 // In case of implementation swallow the OnKeyDown event. 631 // In case of implementation swallow the OnKeyDown event.
632 if (IsProceedtoOnChar(nChar, nFlag)) 632 if (IsProceedtoOnChar(nChar, nFlag))
633 return TRUE; 633 return true;
634 634
635 return bRet; 635 return bRet;
636 } 636 }
637 637
638 /** 638 /**
639 *In case of implementation swallow the OnKeyDown event. 639 *In case of implementation swallow the OnKeyDown event.
640 *If the event is swallowed, implementation may do other unexpected things, which 640 *If the event is swallowed, implementation may do other unexpected things, which
641 *is not the control means to do. 641 *is not the control means to do.
642 */ 642 */
643 FX_BOOL CPWL_Edit::IsProceedtoOnChar(uint16_t nKeyCode, uint32_t nFlag) { 643 bool CPWL_Edit::IsProceedtoOnChar(uint16_t nKeyCode, uint32_t nFlag) {
644 FX_BOOL bCtrl = IsCTRLpressed(nFlag); 644 bool bCtrl = IsCTRLpressed(nFlag);
645 FX_BOOL bAlt = IsALTpressed(nFlag); 645 bool bAlt = IsALTpressed(nFlag);
646 if (bCtrl && !bAlt) { 646 if (bCtrl && !bAlt) {
647 // hot keys for edit control. 647 // hot keys for edit control.
648 switch (nKeyCode) { 648 switch (nKeyCode) {
649 case 'C': 649 case 'C':
650 case 'V': 650 case 'V':
651 case 'X': 651 case 'X':
652 case 'A': 652 case 'A':
653 case 'Z': 653 case 'Z':
654 return TRUE; 654 return true;
655 default: 655 default:
656 break; 656 break;
657 } 657 }
658 } 658 }
659 // control characters. 659 // control characters.
660 switch (nKeyCode) { 660 switch (nKeyCode) {
661 case FWL_VKEY_Escape: 661 case FWL_VKEY_Escape:
662 case FWL_VKEY_Back: 662 case FWL_VKEY_Back:
663 case FWL_VKEY_Return: 663 case FWL_VKEY_Return:
664 case FWL_VKEY_Space: 664 case FWL_VKEY_Space:
665 return TRUE; 665 return true;
666 default: 666 default:
667 return FALSE; 667 return false;
668 } 668 }
669 } 669 }
670 670
671 FX_BOOL CPWL_Edit::OnChar(uint16_t nChar, uint32_t nFlag) { 671 bool CPWL_Edit::OnChar(uint16_t nChar, uint32_t nFlag) {
672 if (m_bMouseDown) 672 if (m_bMouseDown)
673 return TRUE; 673 return true;
674 674
675 FX_BOOL bRC = TRUE; 675 bool bRC = true;
676 FX_BOOL bExit = FALSE; 676 bool bExit = false;
677 677
678 if (!IsCTRLpressed(nFlag)) { 678 if (!IsCTRLpressed(nFlag)) {
679 if (m_pFillerNotify) { 679 if (m_pFillerNotify) {
680 CFX_WideString swChange; 680 CFX_WideString swChange;
681 681
682 int nSelStart = 0; 682 int nSelStart = 0;
683 int nSelEnd = 0; 683 int nSelEnd = 0;
684 GetSel(nSelStart, nSelEnd); 684 GetSel(nSelStart, nSelEnd);
685 685
686 switch (nChar) { 686 switch (nChar) {
687 case FWL_VKEY_Back: 687 case FWL_VKEY_Back:
688 if (nSelStart == nSelEnd) 688 if (nSelStart == nSelEnd)
689 nSelStart = nSelEnd - 1; 689 nSelStart = nSelEnd - 1;
690 break; 690 break;
691 case FWL_VKEY_Return: 691 case FWL_VKEY_Return:
692 break; 692 break;
693 default: 693 default:
694 swChange += nChar; 694 swChange += nChar;
695 break; 695 break;
696 } 696 }
697 697
698 CFX_WideString strChangeEx; 698 CFX_WideString strChangeEx;
699 m_pFillerNotify->OnBeforeKeyStroke(GetAttachedData(), swChange, 699 m_pFillerNotify->OnBeforeKeyStroke(GetAttachedData(), swChange,
700 strChangeEx, nSelStart, nSelEnd, TRUE, 700 strChangeEx, nSelStart, nSelEnd, true,
701 bRC, bExit, nFlag); 701 bRC, bExit, nFlag);
702 } 702 }
703 } 703 }
704 704
705 if (!bRC) 705 if (!bRC)
706 return TRUE; 706 return true;
707 if (bExit) 707 if (bExit)
708 return FALSE; 708 return false;
709 709
710 if (IPVT_FontMap* pFontMap = GetFontMap()) { 710 if (IPVT_FontMap* pFontMap = GetFontMap()) {
711 int32_t nOldCharSet = GetCharSet(); 711 int32_t nOldCharSet = GetCharSet();
712 int32_t nNewCharSet = 712 int32_t nNewCharSet =
713 pFontMap->CharSetFromUnicode(nChar, FXFONT_DEFAULT_CHARSET); 713 pFontMap->CharSetFromUnicode(nChar, FXFONT_DEFAULT_CHARSET);
714 if (nOldCharSet != nNewCharSet) { 714 if (nOldCharSet != nNewCharSet) {
715 SetCharSet(nNewCharSet); 715 SetCharSet(nNewCharSet);
716 } 716 }
717 } 717 }
718 718
719 return CPWL_EditCtrl::OnChar(nChar, nFlag); 719 return CPWL_EditCtrl::OnChar(nChar, nFlag);
720 } 720 }
721 721
722 FX_BOOL CPWL_Edit::OnMouseWheel(short zDelta, 722 bool CPWL_Edit::OnMouseWheel(short zDelta,
723 const CFX_FloatPoint& point, 723 const CFX_FloatPoint& point,
724 uint32_t nFlag) { 724 uint32_t nFlag) {
725 if (HasFlag(PES_MULTILINE)) { 725 if (HasFlag(PES_MULTILINE)) {
726 CFX_FloatPoint ptScroll = GetScrollPos(); 726 CFX_FloatPoint ptScroll = GetScrollPos();
727 727
728 if (zDelta > 0) { 728 if (zDelta > 0) {
729 ptScroll.y += GetFontSize(); 729 ptScroll.y += GetFontSize();
730 } else { 730 } else {
731 ptScroll.y -= GetFontSize(); 731 ptScroll.y -= GetFontSize();
732 } 732 }
733 SetScrollPos(ptScroll); 733 SetScrollPos(ptScroll);
734 734
735 return TRUE; 735 return true;
736 } 736 }
737 737
738 return FALSE; 738 return false;
739 } 739 }
740 740
741 void CPWL_Edit::OnInsertReturn(const CPVT_WordPlace& place, 741 void CPWL_Edit::OnInsertReturn(const CPVT_WordPlace& place,
742 const CPVT_WordPlace& oldplace) { 742 const CPVT_WordPlace& oldplace) {
743 if (HasFlag(PES_SPELLCHECK)) { 743 if (HasFlag(PES_SPELLCHECK)) {
744 m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace), 744 m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),
745 GetLatinWordsRange(place))); 745 GetLatinWordsRange(place)));
746 } 746 }
747 } 747 }
748 748
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
800 wrRet.EndPos = wr2.EndPos; 800 wrRet.EndPos = wr2.EndPos;
801 } else { 801 } else {
802 wrRet.EndPos = wr1.EndPos; 802 wrRet.EndPos = wr1.EndPos;
803 } 803 }
804 804
805 return wrRet; 805 return wrRet;
806 } 806 }
807 807
808 CPVT_WordRange CPWL_Edit::GetLatinWordsRange( 808 CPVT_WordRange CPWL_Edit::GetLatinWordsRange(
809 const CFX_FloatPoint& point) const { 809 const CFX_FloatPoint& point) const {
810 return GetSameWordsRange(m_pEdit->SearchWordPlace(point), TRUE, FALSE); 810 return GetSameWordsRange(m_pEdit->SearchWordPlace(point), true, false);
811 } 811 }
812 812
813 CPVT_WordRange CPWL_Edit::GetLatinWordsRange( 813 CPVT_WordRange CPWL_Edit::GetLatinWordsRange(
814 const CPVT_WordPlace& place) const { 814 const CPVT_WordPlace& place) const {
815 return GetSameWordsRange(place, TRUE, FALSE); 815 return GetSameWordsRange(place, true, false);
816 } 816 }
817 817
818 CPVT_WordRange CPWL_Edit::GetArabicWordsRange( 818 CPVT_WordRange CPWL_Edit::GetArabicWordsRange(
819 const CPVT_WordPlace& place) const { 819 const CPVT_WordPlace& place) const {
820 return GetSameWordsRange(place, FALSE, TRUE); 820 return GetSameWordsRange(place, false, true);
821 } 821 }
822 822
823 #define PWL_ISARABICWORD(word) \ 823 #define PWL_ISARABICWORD(word) \
824 ((word >= 0x0600 && word <= 0x06FF) || (word >= 0xFB50 && word <= 0xFEFC)) 824 ((word >= 0x0600 && word <= 0x06FF) || (word >= 0xFB50 && word <= 0xFEFC))
825 825
826 CPVT_WordRange CPWL_Edit::GetSameWordsRange(const CPVT_WordPlace& place, 826 CPVT_WordRange CPWL_Edit::GetSameWordsRange(const CPVT_WordPlace& place,
827 FX_BOOL bLatin, 827 bool bLatin,
828 FX_BOOL bArabic) const { 828 bool bArabic) const {
829 CPVT_WordRange range; 829 CPVT_WordRange range;
830 830
831 CFX_Edit_Iterator* pIterator = m_pEdit->GetIterator(); 831 CFX_Edit_Iterator* pIterator = m_pEdit->GetIterator();
832 CPVT_Word wordinfo; 832 CPVT_Word wordinfo;
833 CPVT_WordPlace wpStart(place), wpEnd(place); 833 CPVT_WordPlace wpStart(place), wpEnd(place);
834 pIterator->SetAt(place); 834 pIterator->SetAt(place);
835 835
836 if (bLatin) { 836 if (bLatin) {
837 while (pIterator->NextWord()) { 837 while (pIterator->NextWord()) {
838 if (!pIterator->GetWord(wordinfo) || 838 if (!pIterator->GetWord(wordinfo) ||
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
886 } 886 }
887 887
888 void CPWL_Edit::GeneratePageObjects(CPDF_PageObjectHolder* pObjectHolder, 888 void CPWL_Edit::GeneratePageObjects(CPDF_PageObjectHolder* pObjectHolder,
889 const CFX_FloatPoint& ptOffset) { 889 const CFX_FloatPoint& ptOffset) {
890 CFX_ArrayTemplate<CPDF_TextObject*> ObjArray; 890 CFX_ArrayTemplate<CPDF_TextObject*> ObjArray;
891 CFX_Edit::GeneratePageObjects( 891 CFX_Edit::GeneratePageObjects(
892 pObjectHolder, m_pEdit.get(), ptOffset, nullptr, 892 pObjectHolder, m_pEdit.get(), ptOffset, nullptr,
893 CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()), 893 CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()),
894 ObjArray); 894 ObjArray);
895 } 895 }
OLDNEW
« no previous file with comments | « fpdfsdk/pdfwindow/PWL_Edit.h ('k') | fpdfsdk/pdfwindow/PWL_EditCtrl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698