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/javascript/Field.h" | 7 #include "fpdfsdk/javascript/Field.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <memory> | 10 #include <memory> |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 return; | 205 return; |
206 } | 206 } |
207 } | 207 } |
208 strFieldName = strFieldNameParsed.substr(0, iStart); | 208 strFieldName = strFieldNameParsed.substr(0, iStart); |
209 } | 209 } |
210 | 210 |
211 FX_BOOL Field::AttachField(Document* pDocument, | 211 FX_BOOL Field::AttachField(Document* pDocument, |
212 const CFX_WideString& csFieldName) { | 212 const CFX_WideString& csFieldName) { |
213 m_pJSDoc = pDocument; | 213 m_pJSDoc = pDocument; |
214 m_pFormFillEnv.Reset(pDocument->GetFormFillEnv()); | 214 m_pFormFillEnv.Reset(pDocument->GetFormFillEnv()); |
215 m_bCanSet = | 215 m_bCanSet = m_pFormFillEnv->GetPermissions(FPDFPERM_FILL_FORM) || |
216 m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_FILL_FORM) || | 216 m_pFormFillEnv->GetPermissions(FPDFPERM_ANNOT_FORM) || |
217 m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_ANNOT_FORM) || | 217 m_pFormFillEnv->GetPermissions(FPDFPERM_MODIFY); |
218 m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_MODIFY); | |
219 | 218 |
220 CPDFSDK_InterForm* pRDInterForm = | 219 CPDFSDK_InterForm* pRDInterForm = m_pFormFillEnv->GetInterForm(); |
221 m_pFormFillEnv->GetSDKDocument()->GetInterForm(); | |
222 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm(); | 220 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm(); |
223 CFX_WideString swFieldNameTemp = csFieldName; | 221 CFX_WideString swFieldNameTemp = csFieldName; |
224 swFieldNameTemp.Replace(L"..", L"."); | 222 swFieldNameTemp.Replace(L"..", L"."); |
225 | 223 |
226 if (pInterForm->CountFields(swFieldNameTemp) <= 0) { | 224 if (pInterForm->CountFields(swFieldNameTemp) <= 0) { |
227 std::wstring strFieldName; | 225 std::wstring strFieldName; |
228 int iControlNo = -1; | 226 int iControlNo = -1; |
229 ParseFieldName(swFieldNameTemp.c_str(), strFieldName, iControlNo); | 227 ParseFieldName(swFieldNameTemp.c_str(), strFieldName, iControlNo); |
230 if (iControlNo == -1) | 228 if (iControlNo == -1) |
231 return FALSE; | 229 return FALSE; |
232 | 230 |
233 m_FieldName = strFieldName.c_str(); | 231 m_FieldName = strFieldName.c_str(); |
234 m_nFormControlIndex = iControlNo; | 232 m_nFormControlIndex = iControlNo; |
235 return TRUE; | 233 return TRUE; |
236 } | 234 } |
237 | 235 |
238 m_FieldName = swFieldNameTemp; | 236 m_FieldName = swFieldNameTemp; |
239 m_nFormControlIndex = -1; | 237 m_nFormControlIndex = -1; |
240 | 238 |
241 return TRUE; | 239 return TRUE; |
242 } | 240 } |
243 | 241 |
244 std::vector<CPDF_FormField*> Field::GetFormFields( | 242 std::vector<CPDF_FormField*> Field::GetFormFields( |
245 CPDFSDK_FormFillEnvironment* pFormFillEnv, | 243 CPDFSDK_FormFillEnvironment* pFormFillEnv, |
246 const CFX_WideString& csFieldName) { | 244 const CFX_WideString& csFieldName) { |
247 std::vector<CPDF_FormField*> fields; | 245 std::vector<CPDF_FormField*> fields; |
248 CPDFSDK_InterForm* pReaderInterForm = | 246 CPDFSDK_InterForm* pReaderInterForm = pFormFillEnv->GetInterForm(); |
249 pFormFillEnv->GetSDKDocument()->GetInterForm(); | |
250 CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm(); | 247 CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm(); |
251 for (int i = 0, sz = pInterForm->CountFields(csFieldName); i < sz; ++i) { | 248 for (int i = 0, sz = pInterForm->CountFields(csFieldName); i < sz; ++i) { |
252 if (CPDF_FormField* pFormField = pInterForm->GetField(i, csFieldName)) | 249 if (CPDF_FormField* pFormField = pInterForm->GetField(i, csFieldName)) |
253 fields.push_back(pFormField); | 250 fields.push_back(pFormField); |
254 } | 251 } |
255 return fields; | 252 return fields; |
256 } | 253 } |
257 | 254 |
258 std::vector<CPDF_FormField*> Field::GetFormFields( | 255 std::vector<CPDF_FormField*> Field::GetFormFields( |
259 const CFX_WideString& csFieldName) const { | 256 const CFX_WideString& csFieldName) const { |
260 return Field::GetFormFields(m_pFormFillEnv.Get(), csFieldName); | 257 return Field::GetFormFields(m_pFormFillEnv.Get(), csFieldName); |
261 } | 258 } |
262 | 259 |
263 void Field::UpdateFormField(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 260 void Field::UpdateFormField(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
264 CPDF_FormField* pFormField, | 261 CPDF_FormField* pFormField, |
265 FX_BOOL bChangeMark, | 262 FX_BOOL bChangeMark, |
266 FX_BOOL bResetAP, | 263 FX_BOOL bResetAP, |
267 FX_BOOL bRefresh) { | 264 FX_BOOL bRefresh) { |
268 CPDFSDK_InterForm* pInterForm = | 265 CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm(); |
269 pFormFillEnv->GetSDKDocument()->GetInterForm(); | |
270 | 266 |
271 if (bResetAP) { | 267 if (bResetAP) { |
272 std::vector<CPDFSDK_Widget*> widgets; | 268 std::vector<CPDFSDK_Widget*> widgets; |
273 pInterForm->GetWidgets(pFormField, &widgets); | 269 pInterForm->GetWidgets(pFormField, &widgets); |
274 | 270 |
275 int nFieldType = pFormField->GetFieldType(); | 271 int nFieldType = pFormField->GetFieldType(); |
276 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD) { | 272 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD) { |
277 for (CPDFSDK_Annot* pAnnot : widgets) { | 273 for (CPDFSDK_Annot* pAnnot : widgets) { |
278 FX_BOOL bFormatted = FALSE; | 274 FX_BOOL bFormatted = FALSE; |
279 CPDFSDK_Annot::ObservedPtr pObserved(pAnnot); | 275 CPDFSDK_Annot::ObservedPtr pObserved(pAnnot); |
(...skipping 13 matching lines...) Expand all Loading... |
293 | 289 |
294 if (bRefresh) { | 290 if (bRefresh) { |
295 // Refresh the widget list. The calls in |bResetAP| may have caused widgets | 291 // Refresh the widget list. The calls in |bResetAP| may have caused widgets |
296 // to be removed from the list. We need to call |GetWidgets| again to be | 292 // to be removed from the list. We need to call |GetWidgets| again to be |
297 // sure none of the widgets have been deleted. | 293 // sure none of the widgets have been deleted. |
298 std::vector<CPDFSDK_Widget*> widgets; | 294 std::vector<CPDFSDK_Widget*> widgets; |
299 pInterForm->GetWidgets(pFormField, &widgets); | 295 pInterForm->GetWidgets(pFormField, &widgets); |
300 | 296 |
301 // TODO(dsinclair): Determine if all widgets share the same | 297 // TODO(dsinclair): Determine if all widgets share the same |
302 // CPDFSDK_InterForm. If that's the case, we can move the code to | 298 // CPDFSDK_InterForm. If that's the case, we can move the code to |
303 // |GetSDKDocument| out of the loop. | 299 // |GetFormFillEnv| out of the loop. |
304 for (CPDFSDK_Widget* pWidget : widgets) { | 300 for (CPDFSDK_Widget* pWidget : widgets) { |
305 pWidget->GetInterForm() | 301 pWidget->GetInterForm() |
306 ->GetFormFillEnv() | 302 ->GetFormFillEnv() |
307 ->GetSDKDocument() | |
308 ->UpdateAllViews(nullptr, pWidget); | 303 ->UpdateAllViews(nullptr, pWidget); |
309 } | 304 } |
310 } | 305 } |
311 | 306 |
312 if (bChangeMark) | 307 if (bChangeMark) |
313 pFormFillEnv->GetSDKDocument()->SetChangeMark(); | 308 pFormFillEnv->SetChangeMark(); |
314 } | 309 } |
315 | 310 |
316 void Field::UpdateFormControl(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 311 void Field::UpdateFormControl(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
317 CPDF_FormControl* pFormControl, | 312 CPDF_FormControl* pFormControl, |
318 FX_BOOL bChangeMark, | 313 FX_BOOL bChangeMark, |
319 FX_BOOL bResetAP, | 314 FX_BOOL bResetAP, |
320 FX_BOOL bRefresh) { | 315 FX_BOOL bRefresh) { |
321 ASSERT(pFormControl); | 316 ASSERT(pFormControl); |
322 | 317 |
323 CPDFSDK_InterForm* pForm = pFormFillEnv->GetSDKDocument()->GetInterForm(); | 318 CPDFSDK_InterForm* pForm = pFormFillEnv->GetInterForm(); |
324 CPDFSDK_Widget* pWidget = pForm->GetWidget(pFormControl, false); | 319 CPDFSDK_Widget* pWidget = pForm->GetWidget(pFormControl, false); |
325 | 320 |
326 if (pWidget) { | 321 if (pWidget) { |
327 if (bResetAP) { | 322 if (bResetAP) { |
328 int nFieldType = pWidget->GetFieldType(); | 323 int nFieldType = pWidget->GetFieldType(); |
329 if (nFieldType == FIELDTYPE_COMBOBOX || | 324 if (nFieldType == FIELDTYPE_COMBOBOX || |
330 nFieldType == FIELDTYPE_TEXTFIELD) { | 325 nFieldType == FIELDTYPE_TEXTFIELD) { |
331 FX_BOOL bFormatted = FALSE; | 326 FX_BOOL bFormatted = FALSE; |
332 CFX_WideString sValue = pWidget->OnFormat(bFormatted); | 327 CFX_WideString sValue = pWidget->OnFormat(bFormatted); |
333 pWidget->ResetAppearance(bFormatted ? &sValue : nullptr, FALSE); | 328 pWidget->ResetAppearance(bFormatted ? &sValue : nullptr, FALSE); |
334 } else { | 329 } else { |
335 pWidget->ResetAppearance(nullptr, FALSE); | 330 pWidget->ResetAppearance(nullptr, FALSE); |
336 } | 331 } |
337 } | 332 } |
338 | 333 |
339 if (bRefresh) { | 334 if (bRefresh) { |
340 CPDFSDK_InterForm* pInterForm = pWidget->GetInterForm(); | 335 CPDFSDK_InterForm* pInterForm = pWidget->GetInterForm(); |
341 pInterForm->GetFormFillEnv()->GetSDKDocument()->UpdateAllViews(nullptr, | 336 pInterForm->GetFormFillEnv()->UpdateAllViews(nullptr, pWidget); |
342 pWidget); | |
343 } | 337 } |
344 } | 338 } |
345 | 339 |
346 if (bChangeMark) | 340 if (bChangeMark) |
347 pFormFillEnv->GetSDKDocument()->SetChangeMark(); | 341 pFormFillEnv->SetChangeMark(); |
348 } | 342 } |
349 | 343 |
350 CPDFSDK_Widget* Field::GetWidget(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 344 CPDFSDK_Widget* Field::GetWidget(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
351 CPDF_FormControl* pFormControl, | 345 CPDF_FormControl* pFormControl, |
352 bool createIfNeeded) { | 346 bool createIfNeeded) { |
353 CPDFSDK_InterForm* pInterForm = static_cast<CPDFSDK_InterForm*>( | 347 CPDFSDK_InterForm* pInterForm = |
354 pFormFillEnv->GetSDKDocument()->GetInterForm()); | 348 static_cast<CPDFSDK_InterForm*>(pFormFillEnv->GetInterForm()); |
355 return pInterForm ? pInterForm->GetWidget(pFormControl, createIfNeeded) | 349 return pInterForm ? pInterForm->GetWidget(pFormControl, createIfNeeded) |
356 : nullptr; | 350 : nullptr; |
357 } | 351 } |
358 | 352 |
359 FX_BOOL Field::ValueIsOccur(CPDF_FormField* pFormField, | 353 FX_BOOL Field::ValueIsOccur(CPDF_FormField* pFormField, |
360 CFX_WideString csOptLabel) { | 354 CFX_WideString csOptLabel) { |
361 for (int i = 0, sz = pFormField->CountOptions(); i < sz; i++) { | 355 for (int i = 0, sz = pFormField->CountOptions(); i < sz; i++) { |
362 if (csOptLabel.Compare(pFormField->GetOptionLabel(i)) == 0) | 356 if (csOptLabel.Compare(pFormField->GetOptionLabel(i)) == 0) |
363 return TRUE; | 357 return TRUE; |
364 } | 358 } |
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
857 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 851 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
858 if (FieldArray.empty()) | 852 if (FieldArray.empty()) |
859 return FALSE; | 853 return FALSE; |
860 | 854 |
861 CPDF_FormField* pFormField = FieldArray[0]; | 855 CPDF_FormField* pFormField = FieldArray[0]; |
862 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && | 856 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && |
863 pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) { | 857 pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD) { |
864 return FALSE; | 858 return FALSE; |
865 } | 859 } |
866 | 860 |
867 CPDFSDK_InterForm* pRDInterForm = | 861 CPDFSDK_InterForm* pRDInterForm = m_pFormFillEnv->GetInterForm(); |
868 m_pFormFillEnv->GetSDKDocument()->GetInterForm(); | |
869 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm(); | 862 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm(); |
870 vp << (int32_t)pInterForm->FindFieldInCalculationOrder(pFormField); | 863 vp << (int32_t)pInterForm->FindFieldInCalculationOrder(pFormField); |
871 } | 864 } |
872 | 865 |
873 return TRUE; | 866 return TRUE; |
874 } | 867 } |
875 | 868 |
876 void Field::SetCalcOrderIndex(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 869 void Field::SetCalcOrderIndex(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
877 const CFX_WideString& swFieldName, | 870 const CFX_WideString& swFieldName, |
878 int nControlIndex, | 871 int nControlIndex, |
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1262 Field::SetDisplay(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex, | 1255 Field::SetDisplay(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex, |
1263 nVP); | 1256 nVP); |
1264 } | 1257 } |
1265 } else { | 1258 } else { |
1266 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 1259 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
1267 if (FieldArray.empty()) | 1260 if (FieldArray.empty()) |
1268 return FALSE; | 1261 return FALSE; |
1269 | 1262 |
1270 CPDF_FormField* pFormField = FieldArray[0]; | 1263 CPDF_FormField* pFormField = FieldArray[0]; |
1271 ASSERT(pFormField); | 1264 ASSERT(pFormField); |
1272 CPDFSDK_InterForm* pInterForm = | 1265 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); |
1273 m_pFormFillEnv->GetSDKDocument()->GetInterForm(); | |
1274 CPDFSDK_Widget* pWidget = | 1266 CPDFSDK_Widget* pWidget = |
1275 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true); | 1267 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true); |
1276 if (!pWidget) | 1268 if (!pWidget) |
1277 return FALSE; | 1269 return FALSE; |
1278 | 1270 |
1279 uint32_t dwFlag = pWidget->GetFlags(); | 1271 uint32_t dwFlag = pWidget->GetFlags(); |
1280 | 1272 |
1281 if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag) { | 1273 if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag) { |
1282 vp << (int32_t)1; | 1274 vp << (int32_t)1; |
1283 } else { | 1275 } else { |
1284 if (ANNOTFLAG_PRINT & dwFlag) { | 1276 if (ANNOTFLAG_PRINT & dwFlag) { |
1285 if (ANNOTFLAG_NOVIEW & dwFlag) { | 1277 if (ANNOTFLAG_NOVIEW & dwFlag) { |
1286 vp << (int32_t)3; | 1278 vp << (int32_t)3; |
1287 } else { | 1279 } else { |
1288 vp << (int32_t)0; | 1280 vp << (int32_t)0; |
1289 } | 1281 } |
1290 } else { | 1282 } else { |
1291 vp << (int32_t)2; | 1283 vp << (int32_t)2; |
1292 } | 1284 } |
1293 } | 1285 } |
1294 } | 1286 } |
1295 | 1287 |
1296 return TRUE; | 1288 return TRUE; |
1297 } | 1289 } |
1298 | 1290 |
1299 void Field::SetDisplay(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 1291 void Field::SetDisplay(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
1300 const CFX_WideString& swFieldName, | 1292 const CFX_WideString& swFieldName, |
1301 int nControlIndex, | 1293 int nControlIndex, |
1302 int number) { | 1294 int number) { |
1303 CPDFSDK_InterForm* pInterForm = | 1295 CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm(); |
1304 pFormFillEnv->GetSDKDocument()->GetInterForm(); | |
1305 std::vector<CPDF_FormField*> FieldArray = | 1296 std::vector<CPDF_FormField*> FieldArray = |
1306 GetFormFields(pFormFillEnv, swFieldName); | 1297 GetFormFields(pFormFillEnv, swFieldName); |
1307 for (CPDF_FormField* pFormField : FieldArray) { | 1298 for (CPDF_FormField* pFormField : FieldArray) { |
1308 if (nControlIndex < 0) { | 1299 if (nControlIndex < 0) { |
1309 bool bAnySet = false; | 1300 bool bAnySet = false; |
1310 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { | 1301 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { |
1311 CPDF_FormControl* pFormControl = pFormField->GetControl(i); | 1302 CPDF_FormControl* pFormControl = pFormField->GetControl(i); |
1312 ASSERT(pFormControl); | 1303 ASSERT(pFormControl); |
1313 | 1304 |
1314 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl, true); | 1305 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl, true); |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1528 Field::SetHidden(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex, | 1519 Field::SetHidden(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex, |
1529 bVP); | 1520 bVP); |
1530 } | 1521 } |
1531 } else { | 1522 } else { |
1532 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 1523 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
1533 if (FieldArray.empty()) | 1524 if (FieldArray.empty()) |
1534 return FALSE; | 1525 return FALSE; |
1535 | 1526 |
1536 CPDF_FormField* pFormField = FieldArray[0]; | 1527 CPDF_FormField* pFormField = FieldArray[0]; |
1537 ASSERT(pFormField); | 1528 ASSERT(pFormField); |
1538 CPDFSDK_InterForm* pInterForm = | 1529 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); |
1539 m_pFormFillEnv->GetSDKDocument()->GetInterForm(); | |
1540 CPDFSDK_Widget* pWidget = | 1530 CPDFSDK_Widget* pWidget = |
1541 pInterForm->GetWidget(GetSmartFieldControl(pFormField), false); | 1531 pInterForm->GetWidget(GetSmartFieldControl(pFormField), false); |
1542 if (!pWidget) | 1532 if (!pWidget) |
1543 return FALSE; | 1533 return FALSE; |
1544 | 1534 |
1545 uint32_t dwFlags = pWidget->GetFlags(); | 1535 uint32_t dwFlags = pWidget->GetFlags(); |
1546 | 1536 |
1547 if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags) | 1537 if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags) |
1548 vp << true; | 1538 vp << true; |
1549 else | 1539 else |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1642 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 1632 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
1643 if (FieldArray.empty()) | 1633 if (FieldArray.empty()) |
1644 return FALSE; | 1634 return FALSE; |
1645 | 1635 |
1646 CPDF_FormField* pFormField = FieldArray[0]; | 1636 CPDF_FormField* pFormField = FieldArray[0]; |
1647 ASSERT(pFormField); | 1637 ASSERT(pFormField); |
1648 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); | 1638 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); |
1649 if (!pFormControl) | 1639 if (!pFormControl) |
1650 return FALSE; | 1640 return FALSE; |
1651 | 1641 |
1652 CPDFSDK_InterForm* pInterForm = | 1642 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); |
1653 m_pFormFillEnv->GetSDKDocument()->GetInterForm(); | |
1654 if (!pFormField->CountControls()) | 1643 if (!pFormField->CountControls()) |
1655 return FALSE; | 1644 return FALSE; |
1656 | 1645 |
1657 CPDFSDK_Widget* pWidget = | 1646 CPDFSDK_Widget* pWidget = |
1658 pInterForm->GetWidget(pFormField->GetControl(0), false); | 1647 pInterForm->GetWidget(pFormField->GetControl(0), false); |
1659 if (!pWidget) | 1648 if (!pWidget) |
1660 return FALSE; | 1649 return FALSE; |
1661 | 1650 |
1662 vp << (int32_t)pWidget->GetBorderWidth(); | 1651 vp << (int32_t)pWidget->GetBorderWidth(); |
1663 } | 1652 } |
1664 | 1653 |
1665 return TRUE; | 1654 return TRUE; |
1666 } | 1655 } |
1667 | 1656 |
1668 void Field::SetLineWidth(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 1657 void Field::SetLineWidth(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
1669 const CFX_WideString& swFieldName, | 1658 const CFX_WideString& swFieldName, |
1670 int nControlIndex, | 1659 int nControlIndex, |
1671 int number) { | 1660 int number) { |
1672 CPDFSDK_InterForm* pInterForm = | 1661 CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm(); |
1673 pFormFillEnv->GetSDKDocument()->GetInterForm(); | |
1674 std::vector<CPDF_FormField*> FieldArray = | 1662 std::vector<CPDF_FormField*> FieldArray = |
1675 GetFormFields(pFormFillEnv, swFieldName); | 1663 GetFormFields(pFormFillEnv, swFieldName); |
1676 for (CPDF_FormField* pFormField : FieldArray) { | 1664 for (CPDF_FormField* pFormField : FieldArray) { |
1677 if (nControlIndex < 0) { | 1665 if (nControlIndex < 0) { |
1678 FX_BOOL bSet = FALSE; | 1666 FX_BOOL bSet = FALSE; |
1679 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { | 1667 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { |
1680 CPDF_FormControl* pFormControl = pFormField->GetControl(i); | 1668 CPDF_FormControl* pFormControl = pFormField->GetControl(i); |
1681 ASSERT(pFormControl); | 1669 ASSERT(pFormControl); |
1682 | 1670 |
1683 if (CPDFSDK_Widget* pWidget = | 1671 if (CPDFSDK_Widget* pWidget = |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1836 | 1824 |
1837 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 1825 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
1838 if (FieldArray.empty()) | 1826 if (FieldArray.empty()) |
1839 return FALSE; | 1827 return FALSE; |
1840 | 1828 |
1841 CPDF_FormField* pFormField = FieldArray[0]; | 1829 CPDF_FormField* pFormField = FieldArray[0]; |
1842 if (!pFormField) | 1830 if (!pFormField) |
1843 return FALSE; | 1831 return FALSE; |
1844 | 1832 |
1845 std::vector<CPDFSDK_Widget*> widgets; | 1833 std::vector<CPDFSDK_Widget*> widgets; |
1846 m_pFormFillEnv->GetSDKDocument()->GetInterForm()->GetWidgets(pFormField, | 1834 m_pFormFillEnv->GetInterForm()->GetWidgets(pFormField, &widgets); |
1847 &widgets); | |
1848 | 1835 |
1849 if (widgets.empty()) { | 1836 if (widgets.empty()) { |
1850 vp << (int32_t)-1; | 1837 vp << (int32_t)-1; |
1851 return TRUE; | 1838 return TRUE; |
1852 } | 1839 } |
1853 | 1840 |
1854 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); | 1841 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
1855 CJS_Array PageArray; | 1842 CJS_Array PageArray; |
1856 for (size_t i = 0; i < widgets.size(); ++i) { | 1843 for (size_t i = 0; i < widgets.size(); ++i) { |
1857 CPDFSDK_PageView* pPageView = widgets[i]->GetPageView(); | 1844 CPDFSDK_PageView* pPageView = widgets[i]->GetPageView(); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1905 void Field::SetPassword(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 1892 void Field::SetPassword(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
1906 const CFX_WideString& swFieldName, | 1893 const CFX_WideString& swFieldName, |
1907 int nControlIndex, | 1894 int nControlIndex, |
1908 bool b) { | 1895 bool b) { |
1909 // Not supported. | 1896 // Not supported. |
1910 } | 1897 } |
1911 | 1898 |
1912 FX_BOOL Field::print(IJS_Context* cc, | 1899 FX_BOOL Field::print(IJS_Context* cc, |
1913 CJS_PropValue& vp, | 1900 CJS_PropValue& vp, |
1914 CFX_WideString& sError) { | 1901 CFX_WideString& sError) { |
1915 CPDFSDK_InterForm* pInterForm = | 1902 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); |
1916 m_pFormFillEnv->GetSDKDocument()->GetInterForm(); | |
1917 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 1903 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
1918 if (FieldArray.empty()) | 1904 if (FieldArray.empty()) |
1919 return FALSE; | 1905 return FALSE; |
1920 | 1906 |
1921 if (vp.IsSetting()) { | 1907 if (vp.IsSetting()) { |
1922 if (!m_bCanSet) | 1908 if (!m_bCanSet) |
1923 return FALSE; | 1909 return FALSE; |
1924 | 1910 |
1925 bool bVP; | 1911 bool bVP; |
1926 vp >> bVP; | 1912 vp >> bVP; |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2072 } else { | 2058 } else { |
2073 Field::SetRect(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex, | 2059 Field::SetRect(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex, |
2074 crRect); | 2060 crRect); |
2075 } | 2061 } |
2076 } else { | 2062 } else { |
2077 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 2063 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
2078 if (FieldArray.empty()) | 2064 if (FieldArray.empty()) |
2079 return FALSE; | 2065 return FALSE; |
2080 | 2066 |
2081 CPDF_FormField* pFormField = FieldArray[0]; | 2067 CPDF_FormField* pFormField = FieldArray[0]; |
2082 CPDFSDK_InterForm* pInterForm = | 2068 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); |
2083 m_pFormFillEnv->GetSDKDocument()->GetInterForm(); | |
2084 CPDFSDK_Widget* pWidget = | 2069 CPDFSDK_Widget* pWidget = |
2085 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true); | 2070 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true); |
2086 if (!pWidget) | 2071 if (!pWidget) |
2087 return FALSE; | 2072 return FALSE; |
2088 | 2073 |
2089 CFX_FloatRect crRect = pWidget->GetRect(); | 2074 CFX_FloatRect crRect = pWidget->GetRect(); |
2090 Upper_Leftx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.left)); | 2075 Upper_Leftx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.left)); |
2091 Upper_Lefty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.top)); | 2076 Upper_Lefty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.top)); |
2092 Lower_Rightx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.right)); | 2077 Lower_Rightx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.right)); |
2093 Lower_Righty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.bottom)); | 2078 Lower_Righty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.bottom)); |
2094 | 2079 |
2095 CJS_Array rcArray; | 2080 CJS_Array rcArray; |
2096 rcArray.SetElement(pRuntime, 0, Upper_Leftx); | 2081 rcArray.SetElement(pRuntime, 0, Upper_Leftx); |
2097 rcArray.SetElement(pRuntime, 1, Upper_Lefty); | 2082 rcArray.SetElement(pRuntime, 1, Upper_Lefty); |
2098 rcArray.SetElement(pRuntime, 2, Lower_Rightx); | 2083 rcArray.SetElement(pRuntime, 2, Lower_Rightx); |
2099 rcArray.SetElement(pRuntime, 3, Lower_Righty); | 2084 rcArray.SetElement(pRuntime, 3, Lower_Righty); |
2100 vp << rcArray; | 2085 vp << rcArray; |
2101 } | 2086 } |
2102 return TRUE; | 2087 return TRUE; |
2103 } | 2088 } |
2104 | 2089 |
2105 void Field::SetRect(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 2090 void Field::SetRect(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
2106 const CFX_WideString& swFieldName, | 2091 const CFX_WideString& swFieldName, |
2107 int nControlIndex, | 2092 int nControlIndex, |
2108 const CFX_FloatRect& rect) { | 2093 const CFX_FloatRect& rect) { |
2109 CPDFSDK_InterForm* pInterForm = | 2094 CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm(); |
2110 pFormFillEnv->GetSDKDocument()->GetInterForm(); | |
2111 std::vector<CPDF_FormField*> FieldArray = | 2095 std::vector<CPDF_FormField*> FieldArray = |
2112 GetFormFields(pFormFillEnv, swFieldName); | 2096 GetFormFields(pFormFillEnv, swFieldName); |
2113 for (CPDF_FormField* pFormField : FieldArray) { | 2097 for (CPDF_FormField* pFormField : FieldArray) { |
2114 if (nControlIndex < 0) { | 2098 if (nControlIndex < 0) { |
2115 FX_BOOL bSet = FALSE; | 2099 FX_BOOL bSet = FALSE; |
2116 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { | 2100 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { |
2117 CPDF_FormControl* pFormControl = pFormField->GetControl(i); | 2101 CPDF_FormControl* pFormControl = pFormField->GetControl(i); |
2118 ASSERT(pFormControl); | 2102 ASSERT(pFormControl); |
2119 | 2103 |
2120 if (CPDFSDK_Widget* pWidget = | 2104 if (CPDFSDK_Widget* pWidget = |
(...skipping 1087 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3208 CFX_WideString& sError) { | 3192 CFX_WideString& sError) { |
3209 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 3193 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
3210 if (FieldArray.empty()) | 3194 if (FieldArray.empty()) |
3211 return FALSE; | 3195 return FALSE; |
3212 | 3196 |
3213 CPDF_FormField* pFormField = FieldArray[0]; | 3197 CPDF_FormField* pFormField = FieldArray[0]; |
3214 int32_t nCount = pFormField->CountControls(); | 3198 int32_t nCount = pFormField->CountControls(); |
3215 if (nCount < 1) | 3199 if (nCount < 1) |
3216 return FALSE; | 3200 return FALSE; |
3217 | 3201 |
3218 CPDFSDK_InterForm* pInterForm = | 3202 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); |
3219 m_pFormFillEnv->GetSDKDocument()->GetInterForm(); | |
3220 CPDFSDK_Widget* pWidget = nullptr; | 3203 CPDFSDK_Widget* pWidget = nullptr; |
3221 if (nCount == 1) { | 3204 if (nCount == 1) { |
3222 pWidget = pInterForm->GetWidget(pFormField->GetControl(0), false); | 3205 pWidget = pInterForm->GetWidget(pFormField->GetControl(0), false); |
3223 } else { | 3206 } else { |
3224 UnderlyingPageType* pPage = | 3207 UnderlyingPageType* pPage = |
3225 UnderlyingFromFPDFPage(m_pFormFillEnv->GetCurrentPage( | 3208 UnderlyingFromFPDFPage(m_pFormFillEnv->GetCurrentPage( |
3226 m_pFormFillEnv->GetUnderlyingDocument())); | 3209 m_pFormFillEnv->GetUnderlyingDocument())); |
3227 if (!pPage) | 3210 if (!pPage) |
3228 return FALSE; | 3211 return FALSE; |
3229 if (CPDFSDK_PageView* pCurPageView = | 3212 if (CPDFSDK_PageView* pCurPageView = |
3230 m_pFormFillEnv->GetSDKDocument()->GetPageView(pPage, true)) { | 3213 m_pFormFillEnv->GetPageView(pPage, true)) { |
3231 for (int32_t i = 0; i < nCount; i++) { | 3214 for (int32_t i = 0; i < nCount; i++) { |
3232 if (CPDFSDK_Widget* pTempWidget = | 3215 if (CPDFSDK_Widget* pTempWidget = |
3233 pInterForm->GetWidget(pFormField->GetControl(i), false)) { | 3216 pInterForm->GetWidget(pFormField->GetControl(i), false)) { |
3234 if (pTempWidget->GetPDFPage() == pCurPageView->GetPDFPage()) { | 3217 if (pTempWidget->GetPDFPage() == pCurPageView->GetPDFPage()) { |
3235 pWidget = pTempWidget; | 3218 pWidget = pTempWidget; |
3236 break; | 3219 break; |
3237 } | 3220 } |
3238 } | 3221 } |
3239 } | 3222 } |
3240 } | 3223 } |
3241 } | 3224 } |
3242 | 3225 |
3243 if (pWidget) { | 3226 if (pWidget) { |
3244 CPDFSDK_Annot::ObservedPtr pObserved(pWidget); | 3227 CPDFSDK_Annot::ObservedPtr pObserved(pWidget); |
3245 m_pFormFillEnv->GetSDKDocument()->SetFocusAnnot(&pObserved); | 3228 m_pFormFillEnv->SetFocusAnnot(&pObserved); |
3246 } | 3229 } |
3247 | 3230 |
3248 return TRUE; | 3231 return TRUE; |
3249 } | 3232 } |
3250 | 3233 |
3251 FX_BOOL Field::setItems(IJS_Context* cc, | 3234 FX_BOOL Field::setItems(IJS_Context* cc, |
3252 const std::vector<CJS_Value>& params, | 3235 const std::vector<CJS_Value>& params, |
3253 CJS_Value& vRet, | 3236 CJS_Value& vRet, |
3254 CFX_WideString& sError) { | 3237 CFX_WideString& sError) { |
3255 return TRUE; | 3238 return TRUE; |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3512 } | 3495 } |
3513 } | 3496 } |
3514 | 3497 |
3515 void Field::AddField(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 3498 void Field::AddField(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
3516 int nPageIndex, | 3499 int nPageIndex, |
3517 int nFieldType, | 3500 int nFieldType, |
3518 const CFX_WideString& sName, | 3501 const CFX_WideString& sName, |
3519 const CFX_FloatRect& rcCoords) { | 3502 const CFX_FloatRect& rcCoords) { |
3520 // Not supported. | 3503 // Not supported. |
3521 } | 3504 } |
OLD | NEW |