Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(336)

Side by Side Diff: core/src/fpdfdoc/doc_formfield.cpp

Issue 1655423002: Merge to XFA: Kill CFX_ByteArray in master. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Still wonked. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/src/fpdfdoc/doc_formcontrol.cpp ('k') | core/src/fpdfdoc/doc_utils.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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 663 matching lines...) Expand 10 before | Expand all | Expand 10 after
798 m_pForm->m_pFormNotify->AfterSelectionChange(this); 794 m_pForm->m_pFormNotify->AfterSelectionChange(this);
799 if (GetType() == ComboBox) 795 if (GetType() == ComboBox)
800 m_pForm->m_pFormNotify->AfterValueChange(this); 796 m_pForm->m_pFormNotify->AfterValueChange(this);
801 } 797 }
802 798
803 m_pForm->m_bUpdated = TRUE; 799 m_pForm->m_bUpdated = TRUE;
804 return TRUE; 800 return TRUE;
805 } 801 }
806 #endif // PDF_ENABLE_XFA 802 #endif // PDF_ENABLE_XFA
807 FX_BOOL CPDF_FormField::CheckControl(int iControlIndex, 803 FX_BOOL CPDF_FormField::CheckControl(int iControlIndex,
808 FX_BOOL bChecked, 804 bool bChecked,
809 FX_BOOL bNotify) { 805 bool bNotify) {
810 ASSERT(GetType() == CheckBox || GetType() == RadioButton); 806 ASSERT(GetType() == CheckBox || GetType() == RadioButton);
811 CPDF_FormControl* pControl = GetControl(iControlIndex); 807 CPDF_FormControl* pControl = GetControl(iControlIndex);
812 if (!pControl) { 808 if (!pControl) {
813 return FALSE; 809 return FALSE;
814 } 810 }
815 if (!bChecked && pControl->IsChecked() == bChecked) { 811 if (!bChecked && pControl->IsChecked() == bChecked) {
816 return FALSE; 812 return FALSE;
817 } 813 }
818 CFX_ByteArray statusArray;
819 if (bNotify && m_pForm->m_pFormNotify) {
820 SaveCheckedFieldStatus(this, statusArray);
821 }
822 CFX_WideString csWExport = pControl->GetExportValue(); 814 CFX_WideString csWExport = pControl->GetExportValue();
823 CFX_ByteString csBExport = PDF_EncodeText(csWExport); 815 CFX_ByteString csBExport = PDF_EncodeText(csWExport);
824 int iCount = CountControls(); 816 int iCount = CountControls();
825 FX_BOOL bUnison = PDF_FormField_IsUnison(this); 817 FX_BOOL bUnison = PDF_FormField_IsUnison(this);
826 for (int i = 0; i < iCount; i++) { 818 for (int i = 0; i < iCount; i++) {
827 CPDF_FormControl* pCtrl = GetControl(i); 819 CPDF_FormControl* pCtrl = GetControl(i);
828 if (bUnison) { 820 if (bUnison) {
829 CFX_WideString csEValue = pCtrl->GetExportValue(); 821 CFX_WideString csEValue = pCtrl->GetExportValue();
830 if (csEValue == csWExport) { 822 if (csEValue == csWExport) {
831 if (pCtrl->GetOnStateName() == pControl->GetOnStateName()) { 823 if (pCtrl->GetOnStateName() == pControl->GetOnStateName()) {
(...skipping 25 matching lines...) Expand all
857 if (csV == csBExport) { 849 if (csV == csBExport) {
858 m_pDict->SetAtName("V", "Off"); 850 m_pDict->SetAtName("V", "Off");
859 } 851 }
860 } 852 }
861 } else if (bChecked) { 853 } else if (bChecked) {
862 CFX_ByteString csIndex; 854 CFX_ByteString csIndex;
863 csIndex.Format("%d", iControlIndex); 855 csIndex.Format("%d", iControlIndex);
864 m_pDict->SetAtName("V", csIndex); 856 m_pDict->SetAtName("V", csIndex);
865 } 857 }
866 if (bNotify && m_pForm->m_pFormNotify) { 858 if (bNotify && m_pForm->m_pFormNotify) {
867 m_pForm->m_pFormNotify->AfterCheckedStatusChange(this, statusArray); 859 m_pForm->m_pFormNotify->AfterCheckedStatusChange(this);
868 } 860 }
869 m_pForm->m_bUpdated = TRUE; 861 m_pForm->m_bUpdated = TRUE;
870 return TRUE; 862 return TRUE;
871 } 863 }
872 CFX_WideString CPDF_FormField::GetCheckValue(FX_BOOL bDefault) { 864 CFX_WideString CPDF_FormField::GetCheckValue(FX_BOOL bDefault) {
873 ASSERT(GetType() == CheckBox || GetType() == RadioButton); 865 ASSERT(GetType() == CheckBox || GetType() == RadioButton);
874 CFX_WideString csExport = L"Off"; 866 CFX_WideString csExport = L"Off";
875 FX_BOOL bChecked; 867 FX_BOOL bChecked;
876 int iCount = CountControls(); 868 int iCount = CountControls();
877 for (int i = 0; i < iCount; i++) { 869 for (int i = 0; i < iCount; i++) {
878 CPDF_FormControl* pControl = GetControl(i); 870 CPDF_FormControl* pControl = GetControl(i);
879 if (bDefault) { 871 if (bDefault) {
880 bChecked = pControl->IsDefaultChecked(); 872 bChecked = pControl->IsDefaultChecked();
881 } else { 873 } else {
882 bChecked = pControl->IsChecked(); 874 bChecked = pControl->IsChecked();
883 } 875 }
884 if (bChecked) { 876 if (bChecked) {
885 csExport = pControl->GetExportValue(); 877 csExport = pControl->GetExportValue();
886 break; 878 break;
887 } 879 }
888 } 880 }
889 return csExport; 881 return csExport;
890 } 882 }
891 FX_BOOL CPDF_FormField::SetCheckValue(const CFX_WideString& value, 883 FX_BOOL CPDF_FormField::SetCheckValue(const CFX_WideString& value,
892 FX_BOOL bDefault, 884 FX_BOOL bDefault,
893 FX_BOOL bNotify) { 885 FX_BOOL bNotify) {
894 ASSERT(GetType() == CheckBox || GetType() == RadioButton); 886 ASSERT(GetType() == CheckBox || GetType() == RadioButton);
895 CFX_ByteArray statusArray;
896 if (bNotify && m_pForm->m_pFormNotify) {
897 SaveCheckedFieldStatus(this, statusArray);
898 }
899 int iCount = CountControls(); 887 int iCount = CountControls();
900 for (int i = 0; i < iCount; i++) { 888 for (int i = 0; i < iCount; i++) {
901 CPDF_FormControl* pControl = GetControl(i); 889 CPDF_FormControl* pControl = GetControl(i);
902 CFX_WideString csExport = pControl->GetExportValue(); 890 CFX_WideString csExport = pControl->GetExportValue();
903 if (csExport == value) { 891 if (csExport == value) {
904 if (bDefault) { 892 if (bDefault) {
905 } else { 893 } else {
906 CheckControl(GetControlIndex(pControl), TRUE); 894 CheckControl(GetControlIndex(pControl), TRUE);
907 } 895 }
908 break; 896 break;
909 } else { 897 } else {
910 if (bDefault) { 898 if (bDefault) {
911 } else { 899 } else {
912 CheckControl(GetControlIndex(pControl), FALSE); 900 CheckControl(GetControlIndex(pControl), FALSE);
913 } 901 }
914 } 902 }
915 } 903 }
916 if (bNotify && m_pForm->m_pFormNotify) { 904 if (bNotify && m_pForm->m_pFormNotify) {
917 m_pForm->m_pFormNotify->AfterCheckedStatusChange(this, statusArray); 905 m_pForm->m_pFormNotify->AfterCheckedStatusChange(this);
918 } 906 }
919 m_pForm->m_bUpdated = TRUE; 907 m_pForm->m_bUpdated = TRUE;
920 return TRUE; 908 return TRUE;
921 } 909 }
922 int CPDF_FormField::GetTopVisibleIndex() { 910 int CPDF_FormField::GetTopVisibleIndex() {
923 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TI"); 911 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TI");
924 if (!pObj) { 912 if (!pObj) {
925 return 0; 913 return 0;
926 } 914 }
927 return pObj->GetInteger(); 915 return pObj->GetInteger();
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
1095 pFontDict = m_pForm->m_pFormDict->GetDictBy("DR") 1083 pFontDict = m_pForm->m_pFormDict->GetDictBy("DR")
1096 ->GetDictBy("Font") 1084 ->GetDictBy("Font")
1097 ->GetDictBy(font_name); 1085 ->GetDictBy(font_name);
1098 1086
1099 if (!pFontDict) { 1087 if (!pFontDict) {
1100 return; 1088 return;
1101 } 1089 }
1102 m_pFont = m_pForm->m_pDocument->LoadFont(pFontDict); 1090 m_pFont = m_pForm->m_pDocument->LoadFont(pFontDict);
1103 m_FontSize = FX_atof(syntax.GetWord()); 1091 m_FontSize = FX_atof(syntax.GetWord());
1104 } 1092 }
OLDNEW
« no previous file with comments | « core/src/fpdfdoc/doc_formcontrol.cpp ('k') | core/src/fpdfdoc/doc_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698