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 #include "fpdfsdk/formfiller/cffl_textfield.h" | 7 #include "fpdfsdk/formfiller/cffl_textfield.h" |
8 | 8 |
9 #include "fpdfsdk/cpdfsdk_formfillenvironment.h" | 9 #include "fpdfsdk/cpdfsdk_formfillenvironment.h" |
10 #include "fpdfsdk/cpdfsdk_widget.h" | 10 #include "fpdfsdk/cpdfsdk_widget.h" |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 break; | 66 break; |
67 case BF_ALIGN_MIDDLE: | 67 case BF_ALIGN_MIDDLE: |
68 cp.dwFlags |= PES_MIDDLE; | 68 cp.dwFlags |= PES_MIDDLE; |
69 break; | 69 break; |
70 case BF_ALIGN_RIGHT: | 70 case BF_ALIGN_RIGHT: |
71 cp.dwFlags |= PES_RIGHT; | 71 cp.dwFlags |= PES_RIGHT; |
72 break; | 72 break; |
73 } | 73 } |
74 | 74 |
75 if (!m_pFontMap) { | 75 if (!m_pFontMap) { |
76 m_pFontMap = | 76 m_pFontMap = pdfium::MakeUnique<CBA_FontMap>( |
77 pdfium::MakeUnique<CBA_FontMap>(m_pWidget, m_pEnv->GetSysHandler()); | 77 m_pWidget, m_pFormFillEnv->GetSysHandler()); |
78 } | 78 } |
79 cp.pFontMap = m_pFontMap.get(); | 79 cp.pFontMap = m_pFontMap.get(); |
80 cp.pFocusHandler = this; | 80 cp.pFocusHandler = this; |
81 | 81 |
82 return cp; | 82 return cp; |
83 } | 83 } |
84 | 84 |
85 CPWL_Wnd* CFFL_TextField::NewPDFWindow(const PWL_CREATEPARAM& cp, | 85 CPWL_Wnd* CFFL_TextField::NewPDFWindow(const PWL_CREATEPARAM& cp, |
86 CPDFSDK_PageView* pPageView) { | 86 CPDFSDK_PageView* pPageView) { |
87 CPWL_Edit* pWnd = new CPWL_Edit(); | 87 CPWL_Edit* pWnd = new CPWL_Edit(); |
88 pWnd->AttachFFLData(this); | 88 pWnd->AttachFFLData(this); |
89 pWnd->Create(cp); | 89 pWnd->Create(cp); |
90 pWnd->SetFillerNotify(m_pEnv->GetInteractiveFormFiller()); | 90 pWnd->SetFillerNotify(m_pFormFillEnv->GetInteractiveFormFiller()); |
91 | 91 |
92 int32_t nMaxLen = m_pWidget->GetMaxLen(); | 92 int32_t nMaxLen = m_pWidget->GetMaxLen(); |
93 CFX_WideString swValue = m_pWidget->GetValue(); | 93 CFX_WideString swValue = m_pWidget->GetValue(); |
94 | 94 |
95 if (nMaxLen > 0) { | 95 if (nMaxLen > 0) { |
96 if (pWnd->HasFlag(PES_CHARARRAY)) { | 96 if (pWnd->HasFlag(PES_CHARARRAY)) { |
97 pWnd->SetCharArray(nMaxLen); | 97 pWnd->SetCharArray(nMaxLen); |
98 pWnd->SetAlignFormatV(PEAV_CENTER); | 98 pWnd->SetAlignFormatV(PEAV_CENTER); |
99 } else { | 99 } else { |
100 pWnd->SetLimitChar(nMaxLen); | 100 pWnd->SetLimitChar(nMaxLen); |
101 } | 101 } |
102 } | 102 } |
103 | 103 |
104 pWnd->SetText(swValue); | 104 pWnd->SetText(swValue); |
105 return pWnd; | 105 return pWnd; |
106 } | 106 } |
107 | 107 |
108 FX_BOOL CFFL_TextField::OnChar(CPDFSDK_Annot* pAnnot, | 108 FX_BOOL CFFL_TextField::OnChar(CPDFSDK_Annot* pAnnot, |
109 uint32_t nChar, | 109 uint32_t nChar, |
110 uint32_t nFlags) { | 110 uint32_t nFlags) { |
111 switch (nChar) { | 111 switch (nChar) { |
112 case FWL_VKEY_Return: | 112 case FWL_VKEY_Return: |
113 if (!(m_pWidget->GetFieldFlags() & FIELDFLAG_MULTILINE)) { | 113 if (!(m_pWidget->GetFieldFlags() & FIELDFLAG_MULTILINE)) { |
114 CPDFSDK_PageView* pPageView = GetCurPageView(true); | 114 CPDFSDK_PageView* pPageView = GetCurPageView(true); |
115 ASSERT(pPageView); | 115 ASSERT(pPageView); |
116 m_bValid = !m_bValid; | 116 m_bValid = !m_bValid; |
117 CFX_FloatRect rcAnnot = pAnnot->GetRect(); | 117 CFX_FloatRect rcAnnot = pAnnot->GetRect(); |
118 m_pEnv->Invalidate(pAnnot->GetUnderlyingPage(), rcAnnot.left, | 118 m_pFormFillEnv->Invalidate(pAnnot->GetUnderlyingPage(), rcAnnot.left, |
119 rcAnnot.top, rcAnnot.right, rcAnnot.bottom); | 119 rcAnnot.top, rcAnnot.right, rcAnnot.bottom); |
120 | 120 |
121 if (m_bValid) { | 121 if (m_bValid) { |
122 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, TRUE)) | 122 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, TRUE)) |
123 pWnd->SetFocus(); | 123 pWnd->SetFocus(); |
124 } else { | 124 } else { |
125 if (CommitData(pPageView, nFlags)) { | 125 if (CommitData(pPageView, nFlags)) { |
126 DestroyPDFWindow(pPageView); | 126 DestroyPDFWindow(pPageView); |
127 return TRUE; | 127 return TRUE; |
128 } | 128 } |
129 return FALSE; | 129 return FALSE; |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 FX_BOOL CFFL_TextField::IsFieldFull(CPDFSDK_PageView* pPageView) { | 264 FX_BOOL CFFL_TextField::IsFieldFull(CPDFSDK_PageView* pPageView) { |
265 if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE)) { | 265 if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE)) { |
266 return pWnd->IsTextFull(); | 266 return pWnd->IsTextFull(); |
267 } | 267 } |
268 | 268 |
269 return FALSE; | 269 return FALSE; |
270 } | 270 } |
271 #endif // PDF_ENABLE_XFA | 271 #endif // PDF_ENABLE_XFA |
272 | 272 |
273 void CFFL_TextField::OnSetFocus(CPWL_Wnd* pWnd) { | 273 void CFFL_TextField::OnSetFocus(CPWL_Wnd* pWnd) { |
274 ASSERT(m_pEnv); | 274 ASSERT(m_pFormFillEnv); |
275 if (pWnd->GetClassName() == PWL_CLASSNAME_EDIT) { | 275 if (pWnd->GetClassName() == PWL_CLASSNAME_EDIT) { |
276 CPWL_Edit* pEdit = (CPWL_Edit*)pWnd; | 276 CPWL_Edit* pEdit = (CPWL_Edit*)pWnd; |
277 pEdit->SetCharSet(FXFONT_GB2312_CHARSET); | 277 pEdit->SetCharSet(FXFONT_GB2312_CHARSET); |
278 pEdit->SetCodePage(936); | 278 pEdit->SetCodePage(936); |
279 | 279 |
280 pEdit->SetReadyToInput(); | 280 pEdit->SetReadyToInput(); |
281 CFX_WideString wsText = pEdit->GetText(); | 281 CFX_WideString wsText = pEdit->GetText(); |
282 int nCharacters = wsText.GetLength(); | 282 int nCharacters = wsText.GetLength(); |
283 CFX_ByteString bsUTFText = wsText.UTF16LE_Encode(); | 283 CFX_ByteString bsUTFText = wsText.UTF16LE_Encode(); |
284 unsigned short* pBuffer = (unsigned short*)bsUTFText.c_str(); | 284 unsigned short* pBuffer = (unsigned short*)bsUTFText.c_str(); |
285 m_pEnv->OnSetFieldInputFocus(pBuffer, nCharacters, TRUE); | 285 m_pFormFillEnv->OnSetFieldInputFocus(pBuffer, nCharacters, TRUE); |
286 } | 286 } |
287 } | 287 } |
OLD | NEW |