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 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 } | 255 } |
256 | 256 |
257 void Field::UpdateFormControl(CPDFSDK_Document* pDocument, | 257 void Field::UpdateFormControl(CPDFSDK_Document* pDocument, |
258 CPDF_FormControl* pFormControl, | 258 CPDF_FormControl* pFormControl, |
259 FX_BOOL bChangeMark, | 259 FX_BOOL bChangeMark, |
260 FX_BOOL bResetAP, | 260 FX_BOOL bResetAP, |
261 FX_BOOL bRefresh) { | 261 FX_BOOL bRefresh) { |
262 ASSERT(pFormControl); | 262 ASSERT(pFormControl); |
263 | 263 |
264 CPDFSDK_InterForm* pForm = pDocument->GetInterForm(); | 264 CPDFSDK_InterForm* pForm = pDocument->GetInterForm(); |
265 CPDFSDK_Widget* pWidget = pForm->GetWidget(pFormControl); | 265 CPDFSDK_Widget* pWidget = pForm->GetWidget(pFormControl, false); |
266 | 266 |
267 if (pWidget) { | 267 if (pWidget) { |
268 if (bResetAP) { | 268 if (bResetAP) { |
269 int nFieldType = pWidget->GetFieldType(); | 269 int nFieldType = pWidget->GetFieldType(); |
270 if (nFieldType == FIELDTYPE_COMBOBOX || | 270 if (nFieldType == FIELDTYPE_COMBOBOX || |
271 nFieldType == FIELDTYPE_TEXTFIELD) { | 271 nFieldType == FIELDTYPE_TEXTFIELD) { |
272 FX_BOOL bFormated = FALSE; | 272 FX_BOOL bFormated = FALSE; |
273 CFX_WideString sValue = pWidget->OnFormat(bFormated); | 273 CFX_WideString sValue = pWidget->OnFormat(bFormated); |
274 if (bFormated) | 274 if (bFormated) |
275 pWidget->ResetAppearance(sValue.c_str(), FALSE); | 275 pWidget->ResetAppearance(sValue.c_str(), FALSE); |
276 else | 276 else |
277 pWidget->ResetAppearance(nullptr, FALSE); | 277 pWidget->ResetAppearance(nullptr, FALSE); |
278 } else { | 278 } else { |
279 pWidget->ResetAppearance(nullptr, FALSE); | 279 pWidget->ResetAppearance(nullptr, FALSE); |
280 } | 280 } |
281 } | 281 } |
282 | 282 |
283 if (bRefresh) { | 283 if (bRefresh) { |
284 CPDFSDK_InterForm* pInterForm = pWidget->GetInterForm(); | 284 CPDFSDK_InterForm* pInterForm = pWidget->GetInterForm(); |
285 CPDFSDK_Document* pDoc = pInterForm->GetDocument(); | 285 CPDFSDK_Document* pDoc = pInterForm->GetDocument(); |
286 pDoc->UpdateAllViews(nullptr, pWidget); | 286 pDoc->UpdateAllViews(nullptr, pWidget); |
287 } | 287 } |
288 } | 288 } |
289 | 289 |
290 if (bChangeMark) | 290 if (bChangeMark) |
291 pDocument->SetChangeMark(); | 291 pDocument->SetChangeMark(); |
292 } | 292 } |
293 | 293 |
294 CPDFSDK_Widget* Field::GetWidget(CPDFSDK_Document* pDocument, | 294 CPDFSDK_Widget* Field::GetWidget(CPDFSDK_Document* pDocument, |
295 CPDF_FormControl* pFormControl) { | 295 CPDF_FormControl* pFormControl, |
| 296 bool createIfNeeded) { |
296 CPDFSDK_InterForm* pInterForm = | 297 CPDFSDK_InterForm* pInterForm = |
297 static_cast<CPDFSDK_InterForm*>(pDocument->GetInterForm()); | 298 static_cast<CPDFSDK_InterForm*>(pDocument->GetInterForm()); |
298 return pInterForm ? pInterForm->GetWidget(pFormControl) : nullptr; | 299 return pInterForm ? pInterForm->GetWidget(pFormControl, createIfNeeded) |
| 300 : nullptr; |
299 } | 301 } |
300 | 302 |
301 FX_BOOL Field::ValueIsOccur(CPDF_FormField* pFormField, | 303 FX_BOOL Field::ValueIsOccur(CPDF_FormField* pFormField, |
302 CFX_WideString csOptLabel) { | 304 CFX_WideString csOptLabel) { |
303 for (int i = 0, sz = pFormField->CountOptions(); i < sz; i++) { | 305 for (int i = 0, sz = pFormField->CountOptions(); i < sz; i++) { |
304 if (csOptLabel.Compare(pFormField->GetOptionLabel(i)) == 0) | 306 if (csOptLabel.Compare(pFormField->GetOptionLabel(i)) == 0) |
305 return TRUE; | 307 return TRUE; |
306 } | 308 } |
307 | 309 |
308 return FALSE; | 310 return FALSE; |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
396 } else { | 398 } else { |
397 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 399 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
398 if (FieldArray.empty()) | 400 if (FieldArray.empty()) |
399 return FALSE; | 401 return FALSE; |
400 | 402 |
401 CPDF_FormField* pFormField = FieldArray[0]; | 403 CPDF_FormField* pFormField = FieldArray[0]; |
402 if (!pFormField) | 404 if (!pFormField) |
403 return FALSE; | 405 return FALSE; |
404 | 406 |
405 CPDFSDK_Widget* pWidget = | 407 CPDFSDK_Widget* pWidget = |
406 GetWidget(m_pDocument, GetSmartFieldControl(pFormField)); | 408 GetWidget(m_pDocument, GetSmartFieldControl(pFormField), false); |
407 if (!pWidget) | 409 if (!pWidget) |
408 return FALSE; | 410 return FALSE; |
409 | 411 |
410 switch (pWidget->GetBorderStyle()) { | 412 switch (pWidget->GetBorderStyle()) { |
411 case BorderStyle::SOLID: | 413 case BorderStyle::SOLID: |
412 vp << L"solid"; | 414 vp << L"solid"; |
413 break; | 415 break; |
414 case BorderStyle::DASH: | 416 case BorderStyle::DASH: |
415 vp << L"dashed"; | 417 vp << L"dashed"; |
416 break; | 418 break; |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
452 else | 454 else |
453 return; | 455 return; |
454 | 456 |
455 std::vector<CPDF_FormField*> FieldArray = | 457 std::vector<CPDF_FormField*> FieldArray = |
456 GetFormFields(pDocument, swFieldName); | 458 GetFormFields(pDocument, swFieldName); |
457 for (CPDF_FormField* pFormField : FieldArray) { | 459 for (CPDF_FormField* pFormField : FieldArray) { |
458 if (nControlIndex < 0) { | 460 if (nControlIndex < 0) { |
459 FX_BOOL bSet = FALSE; | 461 FX_BOOL bSet = FALSE; |
460 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { | 462 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { |
461 if (CPDFSDK_Widget* pWidget = | 463 if (CPDFSDK_Widget* pWidget = |
462 GetWidget(pDocument, pFormField->GetControl(i))) { | 464 GetWidget(pDocument, pFormField->GetControl(i), false)) { |
463 if (pWidget->GetBorderStyle() != nBorderStyle) { | 465 if (pWidget->GetBorderStyle() != nBorderStyle) { |
464 pWidget->SetBorderStyle(nBorderStyle); | 466 pWidget->SetBorderStyle(nBorderStyle); |
465 bSet = TRUE; | 467 bSet = TRUE; |
466 } | 468 } |
467 } | 469 } |
468 } | 470 } |
469 if (bSet) | 471 if (bSet) |
470 UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE); | 472 UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE); |
471 } else { | 473 } else { |
472 if (nControlIndex >= pFormField->CountControls()) | 474 if (nControlIndex >= pFormField->CountControls()) |
473 return; | 475 return; |
474 if (CPDF_FormControl* pFormControl = | 476 if (CPDF_FormControl* pFormControl = |
475 pFormField->GetControl(nControlIndex)) { | 477 pFormField->GetControl(nControlIndex)) { |
476 if (CPDFSDK_Widget* pWidget = GetWidget(pDocument, pFormControl)) { | 478 if (CPDFSDK_Widget* pWidget = |
| 479 GetWidget(pDocument, pFormControl, false)) { |
477 if (pWidget->GetBorderStyle() != nBorderStyle) { | 480 if (pWidget->GetBorderStyle() != nBorderStyle) { |
478 pWidget->SetBorderStyle(nBorderStyle); | 481 pWidget->SetBorderStyle(nBorderStyle); |
479 UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE); | 482 UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE); |
480 } | 483 } |
481 } | 484 } |
482 } | 485 } |
483 } | 486 } |
484 } | 487 } |
485 } | 488 } |
486 | 489 |
(...skipping 714 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1201 } | 1204 } |
1202 } else { | 1205 } else { |
1203 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 1206 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
1204 if (FieldArray.empty()) | 1207 if (FieldArray.empty()) |
1205 return FALSE; | 1208 return FALSE; |
1206 | 1209 |
1207 CPDF_FormField* pFormField = FieldArray[0]; | 1210 CPDF_FormField* pFormField = FieldArray[0]; |
1208 ASSERT(pFormField); | 1211 ASSERT(pFormField); |
1209 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 1212 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); |
1210 CPDFSDK_Widget* pWidget = | 1213 CPDFSDK_Widget* pWidget = |
1211 pInterForm->GetWidget(GetSmartFieldControl(pFormField)); | 1214 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true); |
1212 if (!pWidget) | 1215 if (!pWidget) |
1213 return FALSE; | 1216 return FALSE; |
1214 | 1217 |
1215 uint32_t dwFlag = pWidget->GetFlags(); | 1218 uint32_t dwFlag = pWidget->GetFlags(); |
1216 | 1219 |
1217 if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag) { | 1220 if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag) { |
1218 vp << (int32_t)1; | 1221 vp << (int32_t)1; |
1219 } else { | 1222 } else { |
1220 if (ANNOTFLAG_PRINT & dwFlag) { | 1223 if (ANNOTFLAG_PRINT & dwFlag) { |
1221 if (ANNOTFLAG_NOVIEW & dwFlag) { | 1224 if (ANNOTFLAG_NOVIEW & dwFlag) { |
(...skipping 17 matching lines...) Expand all Loading... |
1239 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); | 1242 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); |
1240 std::vector<CPDF_FormField*> FieldArray = | 1243 std::vector<CPDF_FormField*> FieldArray = |
1241 GetFormFields(pDocument, swFieldName); | 1244 GetFormFields(pDocument, swFieldName); |
1242 for (CPDF_FormField* pFormField : FieldArray) { | 1245 for (CPDF_FormField* pFormField : FieldArray) { |
1243 if (nControlIndex < 0) { | 1246 if (nControlIndex < 0) { |
1244 FX_BOOL bSet = FALSE; | 1247 FX_BOOL bSet = FALSE; |
1245 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { | 1248 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { |
1246 CPDF_FormControl* pFormControl = pFormField->GetControl(i); | 1249 CPDF_FormControl* pFormControl = pFormField->GetControl(i); |
1247 ASSERT(pFormControl); | 1250 ASSERT(pFormControl); |
1248 | 1251 |
1249 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) { | 1252 if (CPDFSDK_Widget* pWidget = |
| 1253 pInterForm->GetWidget(pFormControl, true)) { |
1250 uint32_t dwFlag = pWidget->GetFlags(); | 1254 uint32_t dwFlag = pWidget->GetFlags(); |
1251 switch (number) { | 1255 switch (number) { |
1252 case 0: | 1256 case 0: |
1253 dwFlag &= (~ANNOTFLAG_INVISIBLE); | 1257 dwFlag &= (~ANNOTFLAG_INVISIBLE); |
1254 dwFlag &= (~ANNOTFLAG_HIDDEN); | 1258 dwFlag &= (~ANNOTFLAG_HIDDEN); |
1255 dwFlag &= (~ANNOTFLAG_NOVIEW); | 1259 dwFlag &= (~ANNOTFLAG_NOVIEW); |
1256 dwFlag |= ANNOTFLAG_PRINT; | 1260 dwFlag |= ANNOTFLAG_PRINT; |
1257 break; | 1261 break; |
1258 case 1: | 1262 case 1: |
1259 dwFlag &= (~ANNOTFLAG_INVISIBLE); | 1263 dwFlag &= (~ANNOTFLAG_INVISIBLE); |
(...skipping 20 matching lines...) Expand all Loading... |
1280 } | 1284 } |
1281 } | 1285 } |
1282 | 1286 |
1283 if (bSet) | 1287 if (bSet) |
1284 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE); | 1288 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE); |
1285 } else { | 1289 } else { |
1286 if (nControlIndex >= pFormField->CountControls()) | 1290 if (nControlIndex >= pFormField->CountControls()) |
1287 return; | 1291 return; |
1288 if (CPDF_FormControl* pFormControl = | 1292 if (CPDF_FormControl* pFormControl = |
1289 pFormField->GetControl(nControlIndex)) { | 1293 pFormField->GetControl(nControlIndex)) { |
1290 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) { | 1294 if (CPDFSDK_Widget* pWidget = |
| 1295 pInterForm->GetWidget(pFormControl, true)) { |
1291 uint32_t dwFlag = pWidget->GetFlags(); | 1296 uint32_t dwFlag = pWidget->GetFlags(); |
1292 switch (number) { | 1297 switch (number) { |
1293 case 0: | 1298 case 0: |
1294 dwFlag &= (~ANNOTFLAG_INVISIBLE); | 1299 dwFlag &= (~ANNOTFLAG_INVISIBLE); |
1295 dwFlag &= (~ANNOTFLAG_HIDDEN); | 1300 dwFlag &= (~ANNOTFLAG_HIDDEN); |
1296 dwFlag &= (~ANNOTFLAG_NOVIEW); | 1301 dwFlag &= (~ANNOTFLAG_NOVIEW); |
1297 dwFlag |= ANNOTFLAG_PRINT; | 1302 dwFlag |= ANNOTFLAG_PRINT; |
1298 break; | 1303 break; |
1299 case 1: | 1304 case 1: |
1300 dwFlag &= (~ANNOTFLAG_INVISIBLE); | 1305 dwFlag &= (~ANNOTFLAG_INVISIBLE); |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1518 } | 1523 } |
1519 } else { | 1524 } else { |
1520 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 1525 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
1521 if (FieldArray.empty()) | 1526 if (FieldArray.empty()) |
1522 return FALSE; | 1527 return FALSE; |
1523 | 1528 |
1524 CPDF_FormField* pFormField = FieldArray[0]; | 1529 CPDF_FormField* pFormField = FieldArray[0]; |
1525 ASSERT(pFormField); | 1530 ASSERT(pFormField); |
1526 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 1531 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); |
1527 CPDFSDK_Widget* pWidget = | 1532 CPDFSDK_Widget* pWidget = |
1528 pInterForm->GetWidget(GetSmartFieldControl(pFormField)); | 1533 pInterForm->GetWidget(GetSmartFieldControl(pFormField), false); |
1529 if (!pWidget) | 1534 if (!pWidget) |
1530 return FALSE; | 1535 return FALSE; |
1531 | 1536 |
1532 uint32_t dwFlags = pWidget->GetFlags(); | 1537 uint32_t dwFlags = pWidget->GetFlags(); |
1533 | 1538 |
1534 if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags) | 1539 if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags) |
1535 vp << true; | 1540 vp << true; |
1536 else | 1541 else |
1537 vp << false; | 1542 vp << false; |
1538 } | 1543 } |
1539 | 1544 |
1540 return TRUE; | 1545 return TRUE; |
1541 } | 1546 } |
1542 | 1547 |
1543 void Field::SetHidden(CPDFSDK_Document* pDocument, | 1548 void Field::SetHidden(CPDFSDK_Document* pDocument, |
1544 const CFX_WideString& swFieldName, | 1549 const CFX_WideString& swFieldName, |
1545 int nControlIndex, | 1550 int nControlIndex, |
1546 bool b) { | 1551 bool b) { |
1547 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); | 1552 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); |
1548 std::vector<CPDF_FormField*> FieldArray = | 1553 std::vector<CPDF_FormField*> FieldArray = |
1549 GetFormFields(pDocument, swFieldName); | 1554 GetFormFields(pDocument, swFieldName); |
1550 for (CPDF_FormField* pFormField : FieldArray) { | 1555 for (CPDF_FormField* pFormField : FieldArray) { |
1551 if (nControlIndex < 0) { | 1556 if (nControlIndex < 0) { |
1552 FX_BOOL bSet = FALSE; | 1557 FX_BOOL bSet = FALSE; |
1553 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { | 1558 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { |
1554 if (CPDFSDK_Widget* pWidget = | 1559 if (CPDFSDK_Widget* pWidget = |
1555 pInterForm->GetWidget(pFormField->GetControl(i))) { | 1560 pInterForm->GetWidget(pFormField->GetControl(i), false)) { |
1556 uint32_t dwFlags = pWidget->GetFlags(); | 1561 uint32_t dwFlags = pWidget->GetFlags(); |
1557 | 1562 |
1558 if (b) { | 1563 if (b) { |
1559 dwFlags &= (~ANNOTFLAG_INVISIBLE); | 1564 dwFlags &= (~ANNOTFLAG_INVISIBLE); |
1560 dwFlags &= (~ANNOTFLAG_NOVIEW); | 1565 dwFlags &= (~ANNOTFLAG_NOVIEW); |
1561 dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT); | 1566 dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT); |
1562 } else { | 1567 } else { |
1563 dwFlags &= (~ANNOTFLAG_INVISIBLE); | 1568 dwFlags &= (~ANNOTFLAG_INVISIBLE); |
1564 dwFlags &= (~ANNOTFLAG_HIDDEN); | 1569 dwFlags &= (~ANNOTFLAG_HIDDEN); |
1565 dwFlags &= (~ANNOTFLAG_NOVIEW); | 1570 dwFlags &= (~ANNOTFLAG_NOVIEW); |
1566 dwFlags |= ANNOTFLAG_PRINT; | 1571 dwFlags |= ANNOTFLAG_PRINT; |
1567 } | 1572 } |
1568 | 1573 |
1569 if (dwFlags != pWidget->GetFlags()) { | 1574 if (dwFlags != pWidget->GetFlags()) { |
1570 pWidget->SetFlags(dwFlags); | 1575 pWidget->SetFlags(dwFlags); |
1571 bSet = TRUE; | 1576 bSet = TRUE; |
1572 } | 1577 } |
1573 } | 1578 } |
1574 } | 1579 } |
1575 | 1580 |
1576 if (bSet) | 1581 if (bSet) |
1577 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE); | 1582 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE); |
1578 } else { | 1583 } else { |
1579 if (nControlIndex >= pFormField->CountControls()) | 1584 if (nControlIndex >= pFormField->CountControls()) |
1580 return; | 1585 return; |
1581 if (CPDF_FormControl* pFormControl = | 1586 if (CPDF_FormControl* pFormControl = |
1582 pFormField->GetControl(nControlIndex)) { | 1587 pFormField->GetControl(nControlIndex)) { |
1583 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) { | 1588 if (CPDFSDK_Widget* pWidget = |
| 1589 pInterForm->GetWidget(pFormControl, false)) { |
1584 uint32_t dwFlags = pWidget->GetFlags(); | 1590 uint32_t dwFlags = pWidget->GetFlags(); |
1585 | 1591 |
1586 if (b) { | 1592 if (b) { |
1587 dwFlags &= (~ANNOTFLAG_INVISIBLE); | 1593 dwFlags &= (~ANNOTFLAG_INVISIBLE); |
1588 dwFlags &= (~ANNOTFLAG_NOVIEW); | 1594 dwFlags &= (~ANNOTFLAG_NOVIEW); |
1589 dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT); | 1595 dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT); |
1590 } else { | 1596 } else { |
1591 dwFlags &= (~ANNOTFLAG_INVISIBLE); | 1597 dwFlags &= (~ANNOTFLAG_INVISIBLE); |
1592 dwFlags &= (~ANNOTFLAG_HIDDEN); | 1598 dwFlags &= (~ANNOTFLAG_HIDDEN); |
1593 dwFlags &= (~ANNOTFLAG_NOVIEW); | 1599 dwFlags &= (~ANNOTFLAG_NOVIEW); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1689 CPDF_FormField* pFormField = FieldArray[0]; | 1695 CPDF_FormField* pFormField = FieldArray[0]; |
1690 ASSERT(pFormField); | 1696 ASSERT(pFormField); |
1691 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); | 1697 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); |
1692 if (!pFormControl) | 1698 if (!pFormControl) |
1693 return FALSE; | 1699 return FALSE; |
1694 | 1700 |
1695 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 1701 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); |
1696 if (!pFormField->CountControls()) | 1702 if (!pFormField->CountControls()) |
1697 return FALSE; | 1703 return FALSE; |
1698 | 1704 |
1699 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(0)); | 1705 CPDFSDK_Widget* pWidget = |
| 1706 pInterForm->GetWidget(pFormField->GetControl(0), false); |
1700 if (!pWidget) | 1707 if (!pWidget) |
1701 return FALSE; | 1708 return FALSE; |
1702 | 1709 |
1703 vp << (int32_t)pWidget->GetBorderWidth(); | 1710 vp << (int32_t)pWidget->GetBorderWidth(); |
1704 } | 1711 } |
1705 | 1712 |
1706 return TRUE; | 1713 return TRUE; |
1707 } | 1714 } |
1708 | 1715 |
1709 void Field::SetLineWidth(CPDFSDK_Document* pDocument, | 1716 void Field::SetLineWidth(CPDFSDK_Document* pDocument, |
1710 const CFX_WideString& swFieldName, | 1717 const CFX_WideString& swFieldName, |
1711 int nControlIndex, | 1718 int nControlIndex, |
1712 int number) { | 1719 int number) { |
1713 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); | 1720 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); |
1714 std::vector<CPDF_FormField*> FieldArray = | 1721 std::vector<CPDF_FormField*> FieldArray = |
1715 GetFormFields(pDocument, swFieldName); | 1722 GetFormFields(pDocument, swFieldName); |
1716 for (CPDF_FormField* pFormField : FieldArray) { | 1723 for (CPDF_FormField* pFormField : FieldArray) { |
1717 if (nControlIndex < 0) { | 1724 if (nControlIndex < 0) { |
1718 FX_BOOL bSet = FALSE; | 1725 FX_BOOL bSet = FALSE; |
1719 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { | 1726 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { |
1720 CPDF_FormControl* pFormControl = pFormField->GetControl(i); | 1727 CPDF_FormControl* pFormControl = pFormField->GetControl(i); |
1721 ASSERT(pFormControl); | 1728 ASSERT(pFormControl); |
1722 | 1729 |
1723 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) { | 1730 if (CPDFSDK_Widget* pWidget = |
| 1731 pInterForm->GetWidget(pFormControl, false)) { |
1724 if (number != pWidget->GetBorderWidth()) { | 1732 if (number != pWidget->GetBorderWidth()) { |
1725 pWidget->SetBorderWidth(number); | 1733 pWidget->SetBorderWidth(number); |
1726 bSet = TRUE; | 1734 bSet = TRUE; |
1727 } | 1735 } |
1728 } | 1736 } |
1729 } | 1737 } |
1730 if (bSet) | 1738 if (bSet) |
1731 UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE); | 1739 UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE); |
1732 } else { | 1740 } else { |
1733 if (nControlIndex >= pFormField->CountControls()) | 1741 if (nControlIndex >= pFormField->CountControls()) |
1734 return; | 1742 return; |
1735 if (CPDF_FormControl* pFormControl = | 1743 if (CPDF_FormControl* pFormControl = |
1736 pFormField->GetControl(nControlIndex)) { | 1744 pFormField->GetControl(nControlIndex)) { |
1737 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) { | 1745 if (CPDFSDK_Widget* pWidget = |
| 1746 pInterForm->GetWidget(pFormControl, false)) { |
1738 if (number != pWidget->GetBorderWidth()) { | 1747 if (number != pWidget->GetBorderWidth()) { |
1739 pWidget->SetBorderWidth(number); | 1748 pWidget->SetBorderWidth(number); |
1740 UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE); | 1749 UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE); |
1741 } | 1750 } |
1742 } | 1751 } |
1743 } | 1752 } |
1744 } | 1753 } |
1745 } | 1754 } |
1746 } | 1755 } |
1747 | 1756 |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1958 return FALSE; | 1967 return FALSE; |
1959 | 1968 |
1960 bool bVP; | 1969 bool bVP; |
1961 vp >> bVP; | 1970 vp >> bVP; |
1962 | 1971 |
1963 for (CPDF_FormField* pFormField : FieldArray) { | 1972 for (CPDF_FormField* pFormField : FieldArray) { |
1964 if (m_nFormControlIndex < 0) { | 1973 if (m_nFormControlIndex < 0) { |
1965 FX_BOOL bSet = FALSE; | 1974 FX_BOOL bSet = FALSE; |
1966 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { | 1975 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { |
1967 if (CPDFSDK_Widget* pWidget = | 1976 if (CPDFSDK_Widget* pWidget = |
1968 pInterForm->GetWidget(pFormField->GetControl(i))) { | 1977 pInterForm->GetWidget(pFormField->GetControl(i), false)) { |
1969 uint32_t dwFlags = pWidget->GetFlags(); | 1978 uint32_t dwFlags = pWidget->GetFlags(); |
1970 if (bVP) | 1979 if (bVP) |
1971 dwFlags |= ANNOTFLAG_PRINT; | 1980 dwFlags |= ANNOTFLAG_PRINT; |
1972 else | 1981 else |
1973 dwFlags &= ~ANNOTFLAG_PRINT; | 1982 dwFlags &= ~ANNOTFLAG_PRINT; |
1974 | 1983 |
1975 if (dwFlags != pWidget->GetFlags()) { | 1984 if (dwFlags != pWidget->GetFlags()) { |
1976 pWidget->SetFlags(dwFlags); | 1985 pWidget->SetFlags(dwFlags); |
1977 bSet = TRUE; | 1986 bSet = TRUE; |
1978 } | 1987 } |
1979 } | 1988 } |
1980 } | 1989 } |
1981 | 1990 |
1982 if (bSet) | 1991 if (bSet) |
1983 UpdateFormField(m_pDocument, pFormField, TRUE, FALSE, TRUE); | 1992 UpdateFormField(m_pDocument, pFormField, TRUE, FALSE, TRUE); |
1984 } else { | 1993 } else { |
1985 if (m_nFormControlIndex >= pFormField->CountControls()) | 1994 if (m_nFormControlIndex >= pFormField->CountControls()) |
1986 return FALSE; | 1995 return FALSE; |
1987 if (CPDF_FormControl* pFormControl = | 1996 if (CPDF_FormControl* pFormControl = |
1988 pFormField->GetControl(m_nFormControlIndex)) { | 1997 pFormField->GetControl(m_nFormControlIndex)) { |
1989 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) { | 1998 if (CPDFSDK_Widget* pWidget = |
| 1999 pInterForm->GetWidget(pFormControl, true)) { |
1990 uint32_t dwFlags = pWidget->GetFlags(); | 2000 uint32_t dwFlags = pWidget->GetFlags(); |
1991 if (bVP) | 2001 if (bVP) |
1992 dwFlags |= ANNOTFLAG_PRINT; | 2002 dwFlags |= ANNOTFLAG_PRINT; |
1993 else | 2003 else |
1994 dwFlags &= ~ANNOTFLAG_PRINT; | 2004 dwFlags &= ~ANNOTFLAG_PRINT; |
1995 | 2005 |
1996 if (dwFlags != pWidget->GetFlags()) { | 2006 if (dwFlags != pWidget->GetFlags()) { |
1997 pWidget->SetFlags(dwFlags); | 2007 pWidget->SetFlags(dwFlags); |
1998 UpdateFormControl(m_pDocument, | 2008 UpdateFormControl(m_pDocument, |
1999 pFormField->GetControl(m_nFormControlIndex), | 2009 pFormField->GetControl(m_nFormControlIndex), |
2000 TRUE, FALSE, TRUE); | 2010 TRUE, FALSE, TRUE); |
2001 } | 2011 } |
2002 } | 2012 } |
2003 } | 2013 } |
2004 } | 2014 } |
2005 } | 2015 } |
2006 } else { | 2016 } else { |
2007 CPDF_FormField* pFormField = FieldArray[0]; | 2017 CPDF_FormField* pFormField = FieldArray[0]; |
2008 CPDFSDK_Widget* pWidget = | 2018 CPDFSDK_Widget* pWidget = |
2009 pInterForm->GetWidget(GetSmartFieldControl(pFormField)); | 2019 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true); |
2010 if (!pWidget) | 2020 if (!pWidget) |
2011 return FALSE; | 2021 return FALSE; |
2012 | 2022 |
2013 if (pWidget->GetFlags() & ANNOTFLAG_PRINT) | 2023 if (pWidget->GetFlags() & ANNOTFLAG_PRINT) |
2014 vp << true; | 2024 vp << true; |
2015 else | 2025 else |
2016 vp << false; | 2026 vp << false; |
2017 } | 2027 } |
2018 | 2028 |
2019 return TRUE; | 2029 return TRUE; |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2111 Field::SetRect(m_pDocument, m_FieldName, m_nFormControlIndex, crRect); | 2121 Field::SetRect(m_pDocument, m_FieldName, m_nFormControlIndex, crRect); |
2112 } | 2122 } |
2113 } else { | 2123 } else { |
2114 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 2124 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
2115 if (FieldArray.empty()) | 2125 if (FieldArray.empty()) |
2116 return FALSE; | 2126 return FALSE; |
2117 | 2127 |
2118 CPDF_FormField* pFormField = FieldArray[0]; | 2128 CPDF_FormField* pFormField = FieldArray[0]; |
2119 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 2129 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); |
2120 CPDFSDK_Widget* pWidget = | 2130 CPDFSDK_Widget* pWidget = |
2121 pInterForm->GetWidget(GetSmartFieldControl(pFormField)); | 2131 pInterForm->GetWidget(GetSmartFieldControl(pFormField), true); |
2122 if (!pWidget) | 2132 if (!pWidget) |
2123 return FALSE; | 2133 return FALSE; |
2124 | 2134 |
2125 CFX_FloatRect crRect = pWidget->GetRect(); | 2135 CFX_FloatRect crRect = pWidget->GetRect(); |
2126 Upper_Leftx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.left)); | 2136 Upper_Leftx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.left)); |
2127 Upper_Lefty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.top)); | 2137 Upper_Lefty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.top)); |
2128 Lower_Rightx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.right)); | 2138 Lower_Rightx = CJS_Value(pRuntime, static_cast<int32_t>(crRect.right)); |
2129 Lower_Righty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.bottom)); | 2139 Lower_Righty = CJS_Value(pRuntime, static_cast<int32_t>(crRect.bottom)); |
2130 | 2140 |
2131 CJS_Array rcArray; | 2141 CJS_Array rcArray; |
(...skipping 13 matching lines...) Expand all Loading... |
2145 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); | 2155 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); |
2146 std::vector<CPDF_FormField*> FieldArray = | 2156 std::vector<CPDF_FormField*> FieldArray = |
2147 GetFormFields(pDocument, swFieldName); | 2157 GetFormFields(pDocument, swFieldName); |
2148 for (CPDF_FormField* pFormField : FieldArray) { | 2158 for (CPDF_FormField* pFormField : FieldArray) { |
2149 if (nControlIndex < 0) { | 2159 if (nControlIndex < 0) { |
2150 FX_BOOL bSet = FALSE; | 2160 FX_BOOL bSet = FALSE; |
2151 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { | 2161 for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { |
2152 CPDF_FormControl* pFormControl = pFormField->GetControl(i); | 2162 CPDF_FormControl* pFormControl = pFormField->GetControl(i); |
2153 ASSERT(pFormControl); | 2163 ASSERT(pFormControl); |
2154 | 2164 |
2155 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) { | 2165 if (CPDFSDK_Widget* pWidget = |
| 2166 pInterForm->GetWidget(pFormControl, false)) { |
2156 CFX_FloatRect crRect = rect; | 2167 CFX_FloatRect crRect = rect; |
2157 | 2168 |
2158 CPDF_Page* pPDFPage = pWidget->GetPDFPage(); | 2169 CPDF_Page* pPDFPage = pWidget->GetPDFPage(); |
2159 crRect.Intersect(pPDFPage->GetPageBBox()); | 2170 crRect.Intersect(pPDFPage->GetPageBBox()); |
2160 | 2171 |
2161 if (!crRect.IsEmpty()) { | 2172 if (!crRect.IsEmpty()) { |
2162 CFX_FloatRect rcOld = pWidget->GetRect(); | 2173 CFX_FloatRect rcOld = pWidget->GetRect(); |
2163 if (crRect.left != rcOld.left || crRect.right != rcOld.right || | 2174 if (crRect.left != rcOld.left || crRect.right != rcOld.right || |
2164 crRect.top != rcOld.top || crRect.bottom != rcOld.bottom) { | 2175 crRect.top != rcOld.top || crRect.bottom != rcOld.bottom) { |
2165 pWidget->SetRect(crRect); | 2176 pWidget->SetRect(crRect); |
2166 bSet = TRUE; | 2177 bSet = TRUE; |
2167 } | 2178 } |
2168 } | 2179 } |
2169 } | 2180 } |
2170 } | 2181 } |
2171 | 2182 |
2172 if (bSet) | 2183 if (bSet) |
2173 UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE); | 2184 UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE); |
2174 } else { | 2185 } else { |
2175 if (nControlIndex >= pFormField->CountControls()) | 2186 if (nControlIndex >= pFormField->CountControls()) |
2176 return; | 2187 return; |
2177 if (CPDF_FormControl* pFormControl = | 2188 if (CPDF_FormControl* pFormControl = |
2178 pFormField->GetControl(nControlIndex)) { | 2189 pFormField->GetControl(nControlIndex)) { |
2179 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl)) { | 2190 if (CPDFSDK_Widget* pWidget = |
| 2191 pInterForm->GetWidget(pFormControl, false)) { |
2180 CFX_FloatRect crRect = rect; | 2192 CFX_FloatRect crRect = rect; |
2181 | 2193 |
2182 CPDF_Page* pPDFPage = pWidget->GetPDFPage(); | 2194 CPDF_Page* pPDFPage = pWidget->GetPDFPage(); |
2183 crRect.Intersect(pPDFPage->GetPageBBox()); | 2195 crRect.Intersect(pPDFPage->GetPageBBox()); |
2184 | 2196 |
2185 if (!crRect.IsEmpty()) { | 2197 if (!crRect.IsEmpty()) { |
2186 CFX_FloatRect rcOld = pWidget->GetRect(); | 2198 CFX_FloatRect rcOld = pWidget->GetRect(); |
2187 if (crRect.left != rcOld.left || crRect.right != rcOld.right || | 2199 if (crRect.left != rcOld.left || crRect.right != rcOld.right || |
2188 crRect.top != rcOld.top || crRect.bottom != rcOld.bottom) { | 2200 crRect.top != rcOld.top || crRect.bottom != rcOld.bottom) { |
2189 pWidget->SetRect(crRect); | 2201 pWidget->SetRect(crRect); |
(...skipping 1053 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3243 return FALSE; | 3255 return FALSE; |
3244 | 3256 |
3245 CPDF_FormField* pFormField = FieldArray[0]; | 3257 CPDF_FormField* pFormField = FieldArray[0]; |
3246 int32_t nCount = pFormField->CountControls(); | 3258 int32_t nCount = pFormField->CountControls(); |
3247 if (nCount < 1) | 3259 if (nCount < 1) |
3248 return FALSE; | 3260 return FALSE; |
3249 | 3261 |
3250 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); | 3262 CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm(); |
3251 CPDFSDK_Widget* pWidget = nullptr; | 3263 CPDFSDK_Widget* pWidget = nullptr; |
3252 if (nCount == 1) { | 3264 if (nCount == 1) { |
3253 pWidget = pInterForm->GetWidget(pFormField->GetControl(0)); | 3265 pWidget = pInterForm->GetWidget(pFormField->GetControl(0), false); |
3254 } else { | 3266 } else { |
3255 CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); | 3267 CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); |
3256 UnderlyingPageType* pPage = UnderlyingFromFPDFPage( | 3268 UnderlyingPageType* pPage = UnderlyingFromFPDFPage( |
3257 pEnv->FFI_GetCurrentPage(m_pDocument->GetUnderlyingDocument())); | 3269 pEnv->FFI_GetCurrentPage(m_pDocument->GetUnderlyingDocument())); |
3258 if (!pPage) | 3270 if (!pPage) |
3259 return FALSE; | 3271 return FALSE; |
3260 if (CPDFSDK_PageView* pCurPageView = | 3272 if (CPDFSDK_PageView* pCurPageView = |
3261 m_pDocument->GetPageView(pPage, true)) { | 3273 m_pDocument->GetPageView(pPage, true)) { |
3262 for (int32_t i = 0; i < nCount; i++) { | 3274 for (int32_t i = 0; i < nCount; i++) { |
3263 if (CPDFSDK_Widget* pTempWidget = | 3275 if (CPDFSDK_Widget* pTempWidget = |
3264 pInterForm->GetWidget(pFormField->GetControl(i))) { | 3276 pInterForm->GetWidget(pFormField->GetControl(i), false)) { |
3265 if (pTempWidget->GetPDFPage() == pCurPageView->GetPDFPage()) { | 3277 if (pTempWidget->GetPDFPage() == pCurPageView->GetPDFPage()) { |
3266 pWidget = pTempWidget; | 3278 pWidget = pTempWidget; |
3267 break; | 3279 break; |
3268 } | 3280 } |
3269 } | 3281 } |
3270 } | 3282 } |
3271 } | 3283 } |
3272 } | 3284 } |
3273 | 3285 |
3274 if (pWidget) { | 3286 if (pWidget) { |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3541 } | 3553 } |
3542 } | 3554 } |
3543 | 3555 |
3544 void Field::AddField(CPDFSDK_Document* pDocument, | 3556 void Field::AddField(CPDFSDK_Document* pDocument, |
3545 int nPageIndex, | 3557 int nPageIndex, |
3546 int nFieldType, | 3558 int nFieldType, |
3547 const CFX_WideString& sName, | 3559 const CFX_WideString& sName, |
3548 const CFX_FloatRect& rcCoords) { | 3560 const CFX_FloatRect& rcCoords) { |
3549 // Not supported. | 3561 // Not supported. |
3550 } | 3562 } |
OLD | NEW |