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 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
309 } | 309 } |
310 | 310 |
311 void Field::UpdateFormControl(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 311 void Field::UpdateFormControl(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
312 CPDF_FormControl* pFormControl, | 312 CPDF_FormControl* pFormControl, |
313 bool bChangeMark, | 313 bool bChangeMark, |
314 bool bResetAP, | 314 bool bResetAP, |
315 bool bRefresh) { | 315 bool bRefresh) { |
316 ASSERT(pFormControl); | 316 ASSERT(pFormControl); |
317 | 317 |
318 CPDFSDK_InterForm* pForm = pFormFillEnv->GetInterForm(); | 318 CPDFSDK_InterForm* pForm = pFormFillEnv->GetInterForm(); |
319 CPDFSDK_Widget* pWidget = pForm->GetWidget(pFormControl, false); | 319 CPDFSDK_Widget* pWidget = pForm->GetWidget(pFormControl); |
320 | 320 |
321 if (pWidget) { | 321 if (pWidget) { |
322 if (bResetAP) { | 322 if (bResetAP) { |
323 int nFieldType = pWidget->GetFieldType(); | 323 int nFieldType = pWidget->GetFieldType(); |
324 if (nFieldType == FIELDTYPE_COMBOBOX || | 324 if (nFieldType == FIELDTYPE_COMBOBOX || |
325 nFieldType == FIELDTYPE_TEXTFIELD) { | 325 nFieldType == FIELDTYPE_TEXTFIELD) { |
326 bool bFormatted = false; | 326 bool bFormatted = false; |
327 CFX_WideString sValue = pWidget->OnFormat(bFormatted); | 327 CFX_WideString sValue = pWidget->OnFormat(bFormatted); |
328 pWidget->ResetAppearance(bFormatted ? &sValue : nullptr, false); | 328 pWidget->ResetAppearance(bFormatted ? &sValue : nullptr, false); |
329 } else { | 329 } else { |
330 pWidget->ResetAppearance(nullptr, false); | 330 pWidget->ResetAppearance(nullptr, false); |
331 } | 331 } |
332 } | 332 } |
333 | 333 |
334 if (bRefresh) { | 334 if (bRefresh) { |
335 CPDFSDK_InterForm* pInterForm = pWidget->GetInterForm(); | 335 CPDFSDK_InterForm* pInterForm = pWidget->GetInterForm(); |
336 pInterForm->GetFormFillEnv()->UpdateAllViews(nullptr, pWidget); | 336 pInterForm->GetFormFillEnv()->UpdateAllViews(nullptr, pWidget); |
337 } | 337 } |
338 } | 338 } |
339 | 339 |
340 if (bChangeMark) | 340 if (bChangeMark) |
341 pFormFillEnv->SetChangeMark(); | 341 pFormFillEnv->SetChangeMark(); |
342 } | 342 } |
343 | 343 |
344 CPDFSDK_Widget* Field::GetWidget(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 344 CPDFSDK_Widget* Field::GetWidget(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
345 CPDF_FormControl* pFormControl, | 345 CPDF_FormControl* pFormControl) { |
346 bool createIfNeeded) { | |
347 CPDFSDK_InterForm* pInterForm = | 346 CPDFSDK_InterForm* pInterForm = |
348 static_cast<CPDFSDK_InterForm*>(pFormFillEnv->GetInterForm()); | 347 static_cast<CPDFSDK_InterForm*>(pFormFillEnv->GetInterForm()); |
349 return pInterForm ? pInterForm->GetWidget(pFormControl, createIfNeeded) | 348 return pInterForm ? pInterForm->GetWidget(pFormControl) : nullptr; |
350 : nullptr; | |
351 } | 349 } |
352 | 350 |
353 bool Field::ValueIsOccur(CPDF_FormField* pFormField, | 351 bool Field::ValueIsOccur(CPDF_FormField* pFormField, |
354 CFX_WideString csOptLabel) { | 352 CFX_WideString csOptLabel) { |
355 for (int i = 0, sz = pFormField->CountOptions(); i < sz; i++) { | 353 for (int i = 0, sz = pFormField->CountOptions(); i < sz; i++) { |
356 if (csOptLabel.Compare(pFormField->GetOptionLabel(i)) == 0) | 354 if (csOptLabel.Compare(pFormField->GetOptionLabel(i)) == 0) |
357 return true; | 355 return true; |
358 } | 356 } |
359 | 357 |
360 return false; | 358 return false; |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
447 } | 445 } |
448 } else { | 446 } else { |
449 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 447 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
450 if (FieldArray.empty()) | 448 if (FieldArray.empty()) |
451 return false; | 449 return false; |
452 | 450 |
453 CPDF_FormField* pFormField = FieldArray[0]; | 451 CPDF_FormField* pFormField = FieldArray[0]; |
454 if (!pFormField) | 452 if (!pFormField) |
455 return false; | 453 return false; |
456 | 454 |
457 CPDFSDK_Widget* pWidget = GetWidget( | 455 CPDFSDK_Widget* pWidget = |
458 m_pFormFillEnv.Get(), GetSmartFieldControl(pFormField), false); | 456 GetWidget(m_pFormFillEnv.Get(), GetSmartFieldControl(pFormField)); |
459 if (!pWidget) | 457 if (!pWidget) |
460 return false; | 458 return false; |
461 | 459 |
462 switch (pWidget->GetBorderStyle()) { | 460 switch (pWidget->GetBorderStyle()) { |
463 case BorderStyle::SOLID: | 461 case BorderStyle::SOLID: |
464 vp << L"solid"; | 462 vp << L"solid"; |
465 break; | 463 break; |
466 case BorderStyle::DASH: | 464 case BorderStyle::DASH: |
467 vp << L"dashed"; | 465 vp << L"dashed"; |
468 break; | 466 break; |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
504 else | 502 else |
505 return; | 503 return; |
506 | 504 |
507 std::vector<CPDF_FormField*> FieldArray = | 505 std::vector<CPDF_FormField*> FieldArray = |
508 GetFormFields(pFormFillEnv, swFieldName); | 506 GetFormFields(pFormFillEnv, swFieldName); |
509 for (CPDF_FormField* pFormField : FieldArray) { | 507 for (CPDF_FormField* pFormField : FieldArray) { |
510 if (nControlIndex < 0) { | 508 if (nControlIndex < 0) { |
511 bool bSet = false; | 509 bool bSet = false; |
512 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { | 510 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { |
513 if (CPDFSDK_Widget* pWidget = | 511 if (CPDFSDK_Widget* pWidget = |
514 GetWidget(pFormFillEnv, pFormField->GetControl(i), false)) { | 512 GetWidget(pFormFillEnv, pFormField->GetControl(i))) { |
515 if (pWidget->GetBorderStyle() != nBorderStyle) { | 513 if (pWidget->GetBorderStyle() != nBorderStyle) { |
516 pWidget->SetBorderStyle(nBorderStyle); | 514 pWidget->SetBorderStyle(nBorderStyle); |
517 bSet = true; | 515 bSet = true; |
518 } | 516 } |
519 } | 517 } |
520 } | 518 } |
521 if (bSet) | 519 if (bSet) |
522 UpdateFormField(pFormFillEnv, pFormField, true, true, true); | 520 UpdateFormField(pFormFillEnv, pFormField, true, true, true); |
523 } else { | 521 } else { |
524 if (nControlIndex >= pFormField->CountControls()) | 522 if (nControlIndex >= pFormField->CountControls()) |
525 return; | 523 return; |
526 if (CPDF_FormControl* pFormControl = | 524 if (CPDF_FormControl* pFormControl = |
527 pFormField->GetControl(nControlIndex)) { | 525 pFormField->GetControl(nControlIndex)) { |
528 if (CPDFSDK_Widget* pWidget = | 526 if (CPDFSDK_Widget* pWidget = GetWidget(pFormFillEnv, pFormControl)) { |
529 GetWidget(pFormFillEnv, pFormControl, false)) { | |
530 if (pWidget->GetBorderStyle() != nBorderStyle) { | 527 if (pWidget->GetBorderStyle() != nBorderStyle) { |
531 pWidget->SetBorderStyle(nBorderStyle); | 528 pWidget->SetBorderStyle(nBorderStyle); |
532 UpdateFormControl(pFormFillEnv, pFormControl, true, true, true); | 529 UpdateFormControl(pFormFillEnv, pFormControl, true, true, true); |
533 } | 530 } |
534 } | 531 } |
535 } | 532 } |
536 } | 533 } |
537 } | 534 } |
538 } | 535 } |
539 | 536 |
(...skipping 713 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1253 } | 1250 } |
1254 } else { | 1251 } else { |
1255 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 1252 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
1256 if (FieldArray.empty()) | 1253 if (FieldArray.empty()) |
1257 return false; | 1254 return false; |
1258 | 1255 |
1259 CPDF_FormField* pFormField = FieldArray[0]; | 1256 CPDF_FormField* pFormField = FieldArray[0]; |
1260 ASSERT(pFormField); | 1257 ASSERT(pFormField); |
1261 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); | 1258 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); |
1262 CPDFSDK_Widget* pWidget = | 1259 CPDFSDK_Widget* pWidget = |
1263 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true); | 1260 pInterForm->GetWidget(GetSmartFieldControl(pFormField)); |
1264 if (!pWidget) | 1261 if (!pWidget) |
1265 return false; | 1262 return false; |
1266 | 1263 |
1267 uint32_t dwFlag = pWidget->GetFlags(); | 1264 uint32_t dwFlag = pWidget->GetFlags(); |
1268 | 1265 |
1269 if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag) { | 1266 if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag) { |
1270 vp << (int32_t)1; | 1267 vp << (int32_t)1; |
1271 } else { | 1268 } else { |
1272 if (ANNOTFLAG_PRINT & dwFlag) { | 1269 if (ANNOTFLAG_PRINT & dwFlag) { |
1273 if (ANNOTFLAG_NOVIEW & dwFlag) { | 1270 if (ANNOTFLAG_NOVIEW & dwFlag) { |
(...skipping 17 matching lines...) Expand all Loading... |
1291 CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm(); | 1288 CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm(); |
1292 std::vector<CPDF_FormField*> FieldArray = | 1289 std::vector<CPDF_FormField*> FieldArray = |
1293 GetFormFields(pFormFillEnv, swFieldName); | 1290 GetFormFields(pFormFillEnv, swFieldName); |
1294 for (CPDF_FormField* pFormField : FieldArray) { | 1291 for (CPDF_FormField* pFormField : FieldArray) { |
1295 if (nControlIndex < 0) { | 1292 if (nControlIndex < 0) { |
1296 bool bAnySet = false; | 1293 bool bAnySet = false; |
1297 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { | 1294 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { |
1298 CPDF_FormControl* pFormControl = pFormField->GetControl(i); | 1295 CPDF_FormControl* pFormControl = pFormField->GetControl(i); |
1299 ASSERT(pFormControl); | 1296 ASSERT(pFormControl); |
1300 | 1297 |
1301 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl, true); | 1298 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl); |
1302 if (SetWidgetDisplayStatus(pWidget, number)) | 1299 if (SetWidgetDisplayStatus(pWidget, number)) |
1303 bAnySet = true; | 1300 bAnySet = true; |
1304 } | 1301 } |
1305 | 1302 |
1306 if (bAnySet) | 1303 if (bAnySet) |
1307 UpdateFormField(pFormFillEnv, pFormField, true, false, true); | 1304 UpdateFormField(pFormFillEnv, pFormField, true, false, true); |
1308 } else { | 1305 } else { |
1309 if (nControlIndex >= pFormField->CountControls()) | 1306 if (nControlIndex >= pFormField->CountControls()) |
1310 return; | 1307 return; |
1311 | 1308 |
1312 CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex); | 1309 CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex); |
1313 if (!pFormControl) | 1310 if (!pFormControl) |
1314 return; | 1311 return; |
1315 | 1312 |
1316 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl, true); | 1313 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl); |
1317 if (SetWidgetDisplayStatus(pWidget, number)) | 1314 if (SetWidgetDisplayStatus(pWidget, number)) |
1318 UpdateFormControl(pFormFillEnv, pFormControl, true, false, true); | 1315 UpdateFormControl(pFormFillEnv, pFormControl, true, false, true); |
1319 } | 1316 } |
1320 } | 1317 } |
1321 } | 1318 } |
1322 | 1319 |
1323 bool Field::doc(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) { | 1320 bool Field::doc(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) { |
1324 if (!vp.IsGetting()) { | 1321 if (!vp.IsGetting()) { |
1325 return false; | 1322 return false; |
1326 } | 1323 } |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1515 } | 1512 } |
1516 } else { | 1513 } else { |
1517 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 1514 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
1518 if (FieldArray.empty()) | 1515 if (FieldArray.empty()) |
1519 return false; | 1516 return false; |
1520 | 1517 |
1521 CPDF_FormField* pFormField = FieldArray[0]; | 1518 CPDF_FormField* pFormField = FieldArray[0]; |
1522 ASSERT(pFormField); | 1519 ASSERT(pFormField); |
1523 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); | 1520 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); |
1524 CPDFSDK_Widget* pWidget = | 1521 CPDFSDK_Widget* pWidget = |
1525 pInterForm->GetWidget(GetSmartFieldControl(pFormField), false); | 1522 pInterForm->GetWidget(GetSmartFieldControl(pFormField)); |
1526 if (!pWidget) | 1523 if (!pWidget) |
1527 return false; | 1524 return false; |
1528 | 1525 |
1529 uint32_t dwFlags = pWidget->GetFlags(); | 1526 uint32_t dwFlags = pWidget->GetFlags(); |
1530 | 1527 |
1531 if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags) | 1528 if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags) |
1532 vp << true; | 1529 vp << true; |
1533 else | 1530 else |
1534 vp << false; | 1531 vp << false; |
1535 } | 1532 } |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1630 CPDF_FormField* pFormField = FieldArray[0]; | 1627 CPDF_FormField* pFormField = FieldArray[0]; |
1631 ASSERT(pFormField); | 1628 ASSERT(pFormField); |
1632 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); | 1629 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); |
1633 if (!pFormControl) | 1630 if (!pFormControl) |
1634 return false; | 1631 return false; |
1635 | 1632 |
1636 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); | 1633 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); |
1637 if (!pFormField->CountControls()) | 1634 if (!pFormField->CountControls()) |
1638 return false; | 1635 return false; |
1639 | 1636 |
1640 CPDFSDK_Widget* pWidget = | 1637 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(0)); |
1641 pInterForm->GetWidget(pFormField->GetControl(0), false); | |
1642 if (!pWidget) | 1638 if (!pWidget) |
1643 return false; | 1639 return false; |
1644 | 1640 |
1645 vp << (int32_t)pWidget->GetBorderWidth(); | 1641 vp << (int32_t)pWidget->GetBorderWidth(); |
1646 } | 1642 } |
1647 | 1643 |
1648 return true; | 1644 return true; |
1649 } | 1645 } |
1650 | 1646 |
1651 void Field::SetLineWidth(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 1647 void Field::SetLineWidth(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
1652 const CFX_WideString& swFieldName, | 1648 const CFX_WideString& swFieldName, |
1653 int nControlIndex, | 1649 int nControlIndex, |
1654 int number) { | 1650 int number) { |
1655 CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm(); | 1651 CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm(); |
1656 std::vector<CPDF_FormField*> FieldArray = | 1652 std::vector<CPDF_FormField*> FieldArray = |
1657 GetFormFields(pFormFillEnv, swFieldName); | 1653 GetFormFields(pFormFillEnv, swFieldName); |
1658 for (CPDF_FormField* pFormField : FieldArray) { | 1654 for (CPDF_FormField* pFormField : FieldArray) { |
1659 if (nControlIndex < 0) { | 1655 if (nControlIndex < 0) { |
1660 bool bSet = false; | 1656 bool bSet = false; |
1661 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { | 1657 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { |
1662 CPDF_FormControl* pFormControl = pFormField->GetControl(i); | 1658 CPDF_FormControl* pFormControl = pFormField->GetControl(i); |
1663 ASSERT(pFormControl); | 1659 ASSERT(pFormControl); |
1664 | 1660 |
1665 if (CPDFSDK_Widget* pWidget = | 1661 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) { |
1666 pInterForm->GetWidget(pFormControl, false)) { | |
1667 if (number != pWidget->GetBorderWidth()) { | 1662 if (number != pWidget->GetBorderWidth()) { |
1668 pWidget->SetBorderWidth(number); | 1663 pWidget->SetBorderWidth(number); |
1669 bSet = true; | 1664 bSet = true; |
1670 } | 1665 } |
1671 } | 1666 } |
1672 } | 1667 } |
1673 if (bSet) | 1668 if (bSet) |
1674 UpdateFormField(pFormFillEnv, pFormField, true, true, true); | 1669 UpdateFormField(pFormFillEnv, pFormField, true, true, true); |
1675 } else { | 1670 } else { |
1676 if (nControlIndex >= pFormField->CountControls()) | 1671 if (nControlIndex >= pFormField->CountControls()) |
1677 return; | 1672 return; |
1678 if (CPDF_FormControl* pFormControl = | 1673 if (CPDF_FormControl* pFormControl = |
1679 pFormField->GetControl(nControlIndex)) { | 1674 pFormField->GetControl(nControlIndex)) { |
1680 if (CPDFSDK_Widget* pWidget = | 1675 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) { |
1681 pInterForm->GetWidget(pFormControl, false)) { | |
1682 if (number != pWidget->GetBorderWidth()) { | 1676 if (number != pWidget->GetBorderWidth()) { |
1683 pWidget->SetBorderWidth(number); | 1677 pWidget->SetBorderWidth(number); |
1684 UpdateFormControl(pFormFillEnv, pFormControl, true, true, true); | 1678 UpdateFormControl(pFormFillEnv, pFormControl, true, true, true); |
1685 } | 1679 } |
1686 } | 1680 } |
1687 } | 1681 } |
1688 } | 1682 } |
1689 } | 1683 } |
1690 } | 1684 } |
1691 | 1685 |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1897 return false; | 1891 return false; |
1898 | 1892 |
1899 bool bVP; | 1893 bool bVP; |
1900 vp >> bVP; | 1894 vp >> bVP; |
1901 | 1895 |
1902 for (CPDF_FormField* pFormField : FieldArray) { | 1896 for (CPDF_FormField* pFormField : FieldArray) { |
1903 if (m_nFormControlIndex < 0) { | 1897 if (m_nFormControlIndex < 0) { |
1904 bool bSet = false; | 1898 bool bSet = false; |
1905 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { | 1899 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { |
1906 if (CPDFSDK_Widget* pWidget = | 1900 if (CPDFSDK_Widget* pWidget = |
1907 pInterForm->GetWidget(pFormField->GetControl(i), false)) { | 1901 pInterForm->GetWidget(pFormField->GetControl(i))) { |
1908 uint32_t dwFlags = pWidget->GetFlags(); | 1902 uint32_t dwFlags = pWidget->GetFlags(); |
1909 if (bVP) | 1903 if (bVP) |
1910 dwFlags |= ANNOTFLAG_PRINT; | 1904 dwFlags |= ANNOTFLAG_PRINT; |
1911 else | 1905 else |
1912 dwFlags &= ~ANNOTFLAG_PRINT; | 1906 dwFlags &= ~ANNOTFLAG_PRINT; |
1913 | 1907 |
1914 if (dwFlags != pWidget->GetFlags()) { | 1908 if (dwFlags != pWidget->GetFlags()) { |
1915 pWidget->SetFlags(dwFlags); | 1909 pWidget->SetFlags(dwFlags); |
1916 bSet = true; | 1910 bSet = true; |
1917 } | 1911 } |
1918 } | 1912 } |
1919 } | 1913 } |
1920 | 1914 |
1921 if (bSet) | 1915 if (bSet) |
1922 UpdateFormField(m_pFormFillEnv.Get(), pFormField, true, false, true); | 1916 UpdateFormField(m_pFormFillEnv.Get(), pFormField, true, false, true); |
1923 } else { | 1917 } else { |
1924 if (m_nFormControlIndex >= pFormField->CountControls()) | 1918 if (m_nFormControlIndex >= pFormField->CountControls()) |
1925 return false; | 1919 return false; |
1926 if (CPDF_FormControl* pFormControl = | 1920 if (CPDF_FormControl* pFormControl = |
1927 pFormField->GetControl(m_nFormControlIndex)) { | 1921 pFormField->GetControl(m_nFormControlIndex)) { |
1928 if (CPDFSDK_Widget* pWidget = | 1922 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) { |
1929 pInterForm->GetWidget(pFormControl, true)) { | |
1930 uint32_t dwFlags = pWidget->GetFlags(); | 1923 uint32_t dwFlags = pWidget->GetFlags(); |
1931 if (bVP) | 1924 if (bVP) |
1932 dwFlags |= ANNOTFLAG_PRINT; | 1925 dwFlags |= ANNOTFLAG_PRINT; |
1933 else | 1926 else |
1934 dwFlags &= ~ANNOTFLAG_PRINT; | 1927 dwFlags &= ~ANNOTFLAG_PRINT; |
1935 | 1928 |
1936 if (dwFlags != pWidget->GetFlags()) { | 1929 if (dwFlags != pWidget->GetFlags()) { |
1937 pWidget->SetFlags(dwFlags); | 1930 pWidget->SetFlags(dwFlags); |
1938 UpdateFormControl(m_pFormFillEnv.Get(), | 1931 UpdateFormControl(m_pFormFillEnv.Get(), |
1939 pFormField->GetControl(m_nFormControlIndex), | 1932 pFormField->GetControl(m_nFormControlIndex), |
1940 true, false, true); | 1933 true, false, true); |
1941 } | 1934 } |
1942 } | 1935 } |
1943 } | 1936 } |
1944 } | 1937 } |
1945 } | 1938 } |
1946 } else { | 1939 } else { |
1947 CPDF_FormField* pFormField = FieldArray[0]; | 1940 CPDF_FormField* pFormField = FieldArray[0]; |
1948 CPDFSDK_Widget* pWidget = | 1941 CPDFSDK_Widget* pWidget = |
1949 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true); | 1942 pInterForm->GetWidget(GetSmartFieldControl(pFormField)); |
1950 if (!pWidget) | 1943 if (!pWidget) |
1951 return false; | 1944 return false; |
1952 | 1945 |
1953 if (pWidget->GetFlags() & ANNOTFLAG_PRINT) | 1946 if (pWidget->GetFlags() & ANNOTFLAG_PRINT) |
1954 vp << true; | 1947 vp << true; |
1955 else | 1948 else |
1956 vp << false; | 1949 vp << false; |
1957 } | 1950 } |
1958 | 1951 |
1959 return true; | 1952 return true; |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2046 crRect); | 2039 crRect); |
2047 } | 2040 } |
2048 } else { | 2041 } else { |
2049 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 2042 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
2050 if (FieldArray.empty()) | 2043 if (FieldArray.empty()) |
2051 return false; | 2044 return false; |
2052 | 2045 |
2053 CPDF_FormField* pFormField = FieldArray[0]; | 2046 CPDF_FormField* pFormField = FieldArray[0]; |
2054 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); | 2047 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); |
2055 CPDFSDK_Widget* pWidget = | 2048 CPDFSDK_Widget* pWidget = |
2056 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true); | 2049 pInterForm->GetWidget(GetSmartFieldControl(pFormField)); |
2057 if (!pWidget) | 2050 if (!pWidget) |
2058 return false; | 2051 return false; |
2059 | 2052 |
2060 CFX_FloatRect crRect = pWidget->GetRect(); | 2053 CFX_FloatRect crRect = pWidget->GetRect(); |
2061 Upper_Leftx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.left)); | 2054 Upper_Leftx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.left)); |
2062 Upper_Lefty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.top)); | 2055 Upper_Lefty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.top)); |
2063 Lower_Rightx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.right)); | 2056 Lower_Rightx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.right)); |
2064 Lower_Righty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.bottom)); | 2057 Lower_Righty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.bottom)); |
2065 | 2058 |
2066 CJS_Array rcArray; | 2059 CJS_Array rcArray; |
(...skipping 13 matching lines...) Expand all Loading... |
2080 CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm(); | 2073 CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm(); |
2081 std::vector<CPDF_FormField*> FieldArray = | 2074 std::vector<CPDF_FormField*> FieldArray = |
2082 GetFormFields(pFormFillEnv, swFieldName); | 2075 GetFormFields(pFormFillEnv, swFieldName); |
2083 for (CPDF_FormField* pFormField : FieldArray) { | 2076 for (CPDF_FormField* pFormField : FieldArray) { |
2084 if (nControlIndex < 0) { | 2077 if (nControlIndex < 0) { |
2085 bool bSet = false; | 2078 bool bSet = false; |
2086 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { | 2079 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { |
2087 CPDF_FormControl* pFormControl = pFormField->GetControl(i); | 2080 CPDF_FormControl* pFormControl = pFormField->GetControl(i); |
2088 ASSERT(pFormControl); | 2081 ASSERT(pFormControl); |
2089 | 2082 |
2090 if (CPDFSDK_Widget* pWidget = | 2083 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) { |
2091 pInterForm->GetWidget(pFormControl, false)) { | |
2092 CFX_FloatRect crRect = rect; | 2084 CFX_FloatRect crRect = rect; |
2093 | 2085 |
2094 CPDF_Page* pPDFPage = pWidget->GetPDFPage(); | 2086 CPDF_Page* pPDFPage = pWidget->GetPDFPage(); |
2095 crRect.Intersect(pPDFPage->GetPageBBox()); | 2087 crRect.Intersect(pPDFPage->GetPageBBox()); |
2096 | 2088 |
2097 if (!crRect.IsEmpty()) { | 2089 if (!crRect.IsEmpty()) { |
2098 CFX_FloatRect rcOld = pWidget->GetRect(); | 2090 CFX_FloatRect rcOld = pWidget->GetRect(); |
2099 if (crRect.left != rcOld.left || crRect.right != rcOld.right || | 2091 if (crRect.left != rcOld.left || crRect.right != rcOld.right || |
2100 crRect.top != rcOld.top || crRect.bottom != rcOld.bottom) { | 2092 crRect.top != rcOld.top || crRect.bottom != rcOld.bottom) { |
2101 pWidget->SetRect(crRect); | 2093 pWidget->SetRect(crRect); |
2102 bSet = true; | 2094 bSet = true; |
2103 } | 2095 } |
2104 } | 2096 } |
2105 } | 2097 } |
2106 } | 2098 } |
2107 | 2099 |
2108 if (bSet) | 2100 if (bSet) |
2109 UpdateFormField(pFormFillEnv, pFormField, true, true, true); | 2101 UpdateFormField(pFormFillEnv, pFormField, true, true, true); |
2110 } else { | 2102 } else { |
2111 if (nControlIndex >= pFormField->CountControls()) | 2103 if (nControlIndex >= pFormField->CountControls()) |
2112 return; | 2104 return; |
2113 if (CPDF_FormControl* pFormControl = | 2105 if (CPDF_FormControl* pFormControl = |
2114 pFormField->GetControl(nControlIndex)) { | 2106 pFormField->GetControl(nControlIndex)) { |
2115 if (CPDFSDK_Widget* pWidget = | 2107 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) { |
2116 pInterForm->GetWidget(pFormControl, false)) { | |
2117 CFX_FloatRect crRect = rect; | 2108 CFX_FloatRect crRect = rect; |
2118 | 2109 |
2119 CPDF_Page* pPDFPage = pWidget->GetPDFPage(); | 2110 CPDF_Page* pPDFPage = pWidget->GetPDFPage(); |
2120 crRect.Intersect(pPDFPage->GetPageBBox()); | 2111 crRect.Intersect(pPDFPage->GetPageBBox()); |
2121 | 2112 |
2122 if (!crRect.IsEmpty()) { | 2113 if (!crRect.IsEmpty()) { |
2123 CFX_FloatRect rcOld = pWidget->GetRect(); | 2114 CFX_FloatRect rcOld = pWidget->GetRect(); |
2124 if (crRect.left != rcOld.left || crRect.right != rcOld.right || | 2115 if (crRect.left != rcOld.left || crRect.right != rcOld.right || |
2125 crRect.top != rcOld.top || crRect.bottom != rcOld.bottom) { | 2116 crRect.top != rcOld.top || crRect.bottom != rcOld.bottom) { |
2126 pWidget->SetRect(crRect); | 2117 pWidget->SetRect(crRect); |
(...skipping 1048 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3175 return false; | 3166 return false; |
3176 | 3167 |
3177 CPDF_FormField* pFormField = FieldArray[0]; | 3168 CPDF_FormField* pFormField = FieldArray[0]; |
3178 int32_t nCount = pFormField->CountControls(); | 3169 int32_t nCount = pFormField->CountControls(); |
3179 if (nCount < 1) | 3170 if (nCount < 1) |
3180 return false; | 3171 return false; |
3181 | 3172 |
3182 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); | 3173 CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); |
3183 CPDFSDK_Widget* pWidget = nullptr; | 3174 CPDFSDK_Widget* pWidget = nullptr; |
3184 if (nCount == 1) { | 3175 if (nCount == 1) { |
3185 pWidget = pInterForm->GetWidget(pFormField->GetControl(0), false); | 3176 pWidget = pInterForm->GetWidget(pFormField->GetControl(0)); |
3186 } else { | 3177 } else { |
3187 UnderlyingPageType* pPage = | 3178 UnderlyingPageType* pPage = |
3188 UnderlyingFromFPDFPage(m_pFormFillEnv->GetCurrentPage( | 3179 UnderlyingFromFPDFPage(m_pFormFillEnv->GetCurrentPage( |
3189 m_pFormFillEnv->GetUnderlyingDocument())); | 3180 m_pFormFillEnv->GetUnderlyingDocument())); |
3190 if (!pPage) | 3181 if (!pPage) |
3191 return false; | 3182 return false; |
3192 if (CPDFSDK_PageView* pCurPageView = | 3183 if (CPDFSDK_PageView* pCurPageView = |
3193 m_pFormFillEnv->GetPageView(pPage, true)) { | 3184 m_pFormFillEnv->GetPageView(pPage, true)) { |
3194 for (int32_t i = 0; i < nCount; i++) { | 3185 for (int32_t i = 0; i < nCount; i++) { |
3195 if (CPDFSDK_Widget* pTempWidget = | 3186 if (CPDFSDK_Widget* pTempWidget = |
3196 pInterForm->GetWidget(pFormField->GetControl(i), false)) { | 3187 pInterForm->GetWidget(pFormField->GetControl(i))) { |
3197 if (pTempWidget->GetPDFPage() == pCurPageView->GetPDFPage()) { | 3188 if (pTempWidget->GetPDFPage() == pCurPageView->GetPDFPage()) { |
3198 pWidget = pTempWidget; | 3189 pWidget = pTempWidget; |
3199 break; | 3190 break; |
3200 } | 3191 } |
3201 } | 3192 } |
3202 } | 3193 } |
3203 } | 3194 } |
3204 } | 3195 } |
3205 | 3196 |
3206 if (pWidget) { | 3197 if (pWidget) { |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3473 } | 3464 } |
3474 } | 3465 } |
3475 | 3466 |
3476 void Field::AddField(CPDFSDK_FormFillEnvironment* pFormFillEnv, | 3467 void Field::AddField(CPDFSDK_FormFillEnvironment* pFormFillEnv, |
3477 int nPageIndex, | 3468 int nPageIndex, |
3478 int nFieldType, | 3469 int nFieldType, |
3479 const CFX_WideString& sName, | 3470 const CFX_WideString& sName, |
3480 const CFX_FloatRect& rcCoords) { | 3471 const CFX_FloatRect& rcCoords) { |
3481 // Not supported. | 3472 // Not supported. |
3482 } | 3473 } |
OLD | NEW |