| 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 "core/include/fpdfdoc/fpdf_doc.h" | 7 #include "core/include/fpdfdoc/fpdf_doc.h" |
| 8 #include "doc_utils.h" | 8 #include "doc_utils.h" |
| 9 | 9 |
| 10 FX_BOOL PDF_FormField_IsUnison(CPDF_FormField* pField) { | 10 FX_BOOL PDF_FormField_IsUnison(CPDF_FormField* pField) { |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 m_Type = Sign; | 95 m_Type = Sign; |
| 96 } | 96 } |
| 97 } | 97 } |
| 98 CFX_WideString CPDF_FormField::GetFullName() { | 98 CFX_WideString CPDF_FormField::GetFullName() { |
| 99 return ::GetFullName(m_pDict); | 99 return ::GetFullName(m_pDict); |
| 100 } | 100 } |
| 101 FX_BOOL CPDF_FormField::ResetField(FX_BOOL bNotify) { | 101 FX_BOOL CPDF_FormField::ResetField(FX_BOOL bNotify) { |
| 102 switch (m_Type) { | 102 switch (m_Type) { |
| 103 case CPDF_FormField::CheckBox: | 103 case CPDF_FormField::CheckBox: |
| 104 case CPDF_FormField::RadioButton: { | 104 case CPDF_FormField::RadioButton: { |
| 105 CFX_ByteArray statusArray; | |
| 106 if (bNotify && m_pForm->m_pFormNotify) { | |
| 107 SaveCheckedFieldStatus(this, statusArray); | |
| 108 } | |
| 109 int iCount = CountControls(); | 105 int iCount = CountControls(); |
| 110 if (iCount) { | 106 if (iCount) { |
| 111 if (PDF_FormField_IsUnison(this)) { | 107 if (PDF_FormField_IsUnison(this)) { |
| 112 for (int i = 0; i < iCount; i++) { | 108 for (int i = 0; i < iCount; i++) { |
| 113 CheckControl(i, GetControl(i)->IsDefaultChecked(), FALSE); | 109 CheckControl(i, GetControl(i)->IsDefaultChecked(), FALSE); |
| 114 } | 110 } |
| 115 } else { | 111 } else { |
| 116 for (int i = 0; i < iCount; i++) { | 112 for (int i = 0; i < iCount; i++) { |
| 117 CPDF_FormControl* pControl = GetControl(i); | 113 CPDF_FormControl* pControl = GetControl(i); |
| 118 FX_BOOL bChecked = pControl->IsDefaultChecked(); | 114 FX_BOOL bChecked = pControl->IsDefaultChecked(); |
| 119 CheckControl(i, bChecked, FALSE); | 115 CheckControl(i, bChecked, FALSE); |
| 120 } | 116 } |
| 121 } | 117 } |
| 122 } | 118 } |
| 123 if (bNotify && m_pForm->m_pFormNotify) { | 119 if (bNotify && m_pForm->m_pFormNotify) { |
| 124 m_pForm->m_pFormNotify->AfterCheckedStatusChange(this, statusArray); | 120 m_pForm->m_pFormNotify->AfterCheckedStatusChange(this); |
| 125 } | 121 } |
| 126 } break; | 122 } break; |
| 127 case CPDF_FormField::ComboBox: { | 123 case CPDF_FormField::ComboBox: { |
| 128 CFX_WideString csValue; | 124 CFX_WideString csValue; |
| 129 ClearSelection(); | 125 ClearSelection(); |
| 130 int iIndex = GetDefaultSelectedItem(); | 126 int iIndex = GetDefaultSelectedItem(); |
| 131 if (iIndex >= 0) { | 127 if (iIndex >= 0) { |
| 132 csValue = GetOptionLabel(iIndex); | 128 csValue = GetOptionLabel(iIndex); |
| 133 } | 129 } |
| 134 if (bNotify && m_pForm->m_pFormNotify) { | 130 if (bNotify && m_pForm->m_pFormNotify) { |
| (...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 733 FX_BOOL bChecked, | 729 FX_BOOL bChecked, |
| 734 FX_BOOL bNotify) { | 730 FX_BOOL bNotify) { |
| 735 ASSERT(GetType() == CheckBox || GetType() == RadioButton); | 731 ASSERT(GetType() == CheckBox || GetType() == RadioButton); |
| 736 CPDF_FormControl* pControl = GetControl(iControlIndex); | 732 CPDF_FormControl* pControl = GetControl(iControlIndex); |
| 737 if (!pControl) { | 733 if (!pControl) { |
| 738 return FALSE; | 734 return FALSE; |
| 739 } | 735 } |
| 740 if (!bChecked && pControl->IsChecked() == bChecked) { | 736 if (!bChecked && pControl->IsChecked() == bChecked) { |
| 741 return FALSE; | 737 return FALSE; |
| 742 } | 738 } |
| 743 CFX_ByteArray statusArray; | |
| 744 if (bNotify && m_pForm->m_pFormNotify) { | |
| 745 SaveCheckedFieldStatus(this, statusArray); | |
| 746 } | |
| 747 CFX_WideString csWExport = pControl->GetExportValue(); | 739 CFX_WideString csWExport = pControl->GetExportValue(); |
| 748 CFX_ByteString csBExport = PDF_EncodeText(csWExport); | 740 CFX_ByteString csBExport = PDF_EncodeText(csWExport); |
| 749 int iCount = CountControls(); | 741 int iCount = CountControls(); |
| 750 FX_BOOL bUnison = PDF_FormField_IsUnison(this); | 742 FX_BOOL bUnison = PDF_FormField_IsUnison(this); |
| 751 for (int i = 0; i < iCount; i++) { | 743 for (int i = 0; i < iCount; i++) { |
| 752 CPDF_FormControl* pCtrl = GetControl(i); | 744 CPDF_FormControl* pCtrl = GetControl(i); |
| 753 if (bUnison) { | 745 if (bUnison) { |
| 754 CFX_WideString csEValue = pCtrl->GetExportValue(); | 746 CFX_WideString csEValue = pCtrl->GetExportValue(); |
| 755 if (csEValue == csWExport) { | 747 if (csEValue == csWExport) { |
| 756 if (pCtrl->GetOnStateName() == pControl->GetOnStateName()) { | 748 if (pCtrl->GetOnStateName() == pControl->GetOnStateName()) { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 782 if (csV == csBExport) { | 774 if (csV == csBExport) { |
| 783 m_pDict->SetAtName("V", "Off"); | 775 m_pDict->SetAtName("V", "Off"); |
| 784 } | 776 } |
| 785 } | 777 } |
| 786 } else if (bChecked) { | 778 } else if (bChecked) { |
| 787 CFX_ByteString csIndex; | 779 CFX_ByteString csIndex; |
| 788 csIndex.Format("%d", iControlIndex); | 780 csIndex.Format("%d", iControlIndex); |
| 789 m_pDict->SetAtName("V", csIndex); | 781 m_pDict->SetAtName("V", csIndex); |
| 790 } | 782 } |
| 791 if (bNotify && m_pForm->m_pFormNotify) { | 783 if (bNotify && m_pForm->m_pFormNotify) { |
| 792 m_pForm->m_pFormNotify->AfterCheckedStatusChange(this, statusArray); | 784 m_pForm->m_pFormNotify->AfterCheckedStatusChange(this); |
| 793 } | 785 } |
| 794 m_pForm->m_bUpdated = TRUE; | 786 m_pForm->m_bUpdated = TRUE; |
| 795 return TRUE; | 787 return TRUE; |
| 796 } | 788 } |
| 797 CFX_WideString CPDF_FormField::GetCheckValue(FX_BOOL bDefault) { | 789 CFX_WideString CPDF_FormField::GetCheckValue(FX_BOOL bDefault) { |
| 798 ASSERT(GetType() == CheckBox || GetType() == RadioButton); | 790 ASSERT(GetType() == CheckBox || GetType() == RadioButton); |
| 799 CFX_WideString csExport = L"Off"; | 791 CFX_WideString csExport = L"Off"; |
| 800 FX_BOOL bChecked; | 792 FX_BOOL bChecked; |
| 801 int iCount = CountControls(); | 793 int iCount = CountControls(); |
| 802 for (int i = 0; i < iCount; i++) { | 794 for (int i = 0; i < iCount; i++) { |
| 803 CPDF_FormControl* pControl = GetControl(i); | 795 CPDF_FormControl* pControl = GetControl(i); |
| 804 if (bDefault) { | 796 if (bDefault) { |
| 805 bChecked = pControl->IsDefaultChecked(); | 797 bChecked = pControl->IsDefaultChecked(); |
| 806 } else { | 798 } else { |
| 807 bChecked = pControl->IsChecked(); | 799 bChecked = pControl->IsChecked(); |
| 808 } | 800 } |
| 809 if (bChecked) { | 801 if (bChecked) { |
| 810 csExport = pControl->GetExportValue(); | 802 csExport = pControl->GetExportValue(); |
| 811 break; | 803 break; |
| 812 } | 804 } |
| 813 } | 805 } |
| 814 return csExport; | 806 return csExport; |
| 815 } | 807 } |
| 816 FX_BOOL CPDF_FormField::SetCheckValue(const CFX_WideString& value, | 808 FX_BOOL CPDF_FormField::SetCheckValue(const CFX_WideString& value, |
| 817 FX_BOOL bDefault, | 809 FX_BOOL bDefault, |
| 818 FX_BOOL bNotify) { | 810 FX_BOOL bNotify) { |
| 819 ASSERT(GetType() == CheckBox || GetType() == RadioButton); | 811 ASSERT(GetType() == CheckBox || GetType() == RadioButton); |
| 820 CFX_ByteArray statusArray; | |
| 821 if (bNotify && m_pForm->m_pFormNotify) { | |
| 822 SaveCheckedFieldStatus(this, statusArray); | |
| 823 } | |
| 824 int iCount = CountControls(); | 812 int iCount = CountControls(); |
| 825 for (int i = 0; i < iCount; i++) { | 813 for (int i = 0; i < iCount; i++) { |
| 826 CPDF_FormControl* pControl = GetControl(i); | 814 CPDF_FormControl* pControl = GetControl(i); |
| 827 CFX_WideString csExport = pControl->GetExportValue(); | 815 CFX_WideString csExport = pControl->GetExportValue(); |
| 828 if (csExport == value) { | 816 if (csExport == value) { |
| 829 if (bDefault) { | 817 if (bDefault) { |
| 830 } else { | 818 } else { |
| 831 CheckControl(GetControlIndex(pControl), TRUE); | 819 CheckControl(GetControlIndex(pControl), TRUE); |
| 832 } | 820 } |
| 833 break; | 821 break; |
| 834 } else { | 822 } else { |
| 835 if (bDefault) { | 823 if (bDefault) { |
| 836 } else { | 824 } else { |
| 837 CheckControl(GetControlIndex(pControl), FALSE); | 825 CheckControl(GetControlIndex(pControl), FALSE); |
| 838 } | 826 } |
| 839 } | 827 } |
| 840 } | 828 } |
| 841 if (bNotify && m_pForm->m_pFormNotify) { | 829 if (bNotify && m_pForm->m_pFormNotify) { |
| 842 m_pForm->m_pFormNotify->AfterCheckedStatusChange(this, statusArray); | 830 m_pForm->m_pFormNotify->AfterCheckedStatusChange(this); |
| 843 } | 831 } |
| 844 m_pForm->m_bUpdated = TRUE; | 832 m_pForm->m_bUpdated = TRUE; |
| 845 return TRUE; | 833 return TRUE; |
| 846 } | 834 } |
| 847 int CPDF_FormField::GetTopVisibleIndex() { | 835 int CPDF_FormField::GetTopVisibleIndex() { |
| 848 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TI"); | 836 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TI"); |
| 849 if (!pObj) { | 837 if (!pObj) { |
| 850 return 0; | 838 return 0; |
| 851 } | 839 } |
| 852 return pObj->GetInteger(); | 840 return pObj->GetInteger(); |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1020 pFontDict = m_pForm->m_pFormDict->GetDictBy("DR") | 1008 pFontDict = m_pForm->m_pFormDict->GetDictBy("DR") |
| 1021 ->GetDictBy("Font") | 1009 ->GetDictBy("Font") |
| 1022 ->GetDictBy(font_name); | 1010 ->GetDictBy(font_name); |
| 1023 | 1011 |
| 1024 if (!pFontDict) { | 1012 if (!pFontDict) { |
| 1025 return; | 1013 return; |
| 1026 } | 1014 } |
| 1027 m_pFont = m_pForm->m_pDocument->LoadFont(pFontDict); | 1015 m_pFont = m_pForm->m_pDocument->LoadFont(pFontDict); |
| 1028 m_FontSize = FX_atof(syntax.GetWord()); | 1016 m_FontSize = FX_atof(syntax.GetWord()); |
| 1029 } | 1017 } |
| OLD | NEW |