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

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

Issue 2001783003: Get rid of CPDF_Object::GetArray(). (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: Created 4 years, 7 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/fpdfdoc/cpvt_generateap.cpp ('k') | fpdfsdk/fpdfsave.cpp » ('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/fpdfapi/fpdf_parser/include/cfdf_document.h" 7 #include "core/fpdfapi/fpdf_parser/include/cfdf_document.h"
8 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h" 8 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h"
9 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" 9 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h"
10 #include "core/fpdfapi/fpdf_parser/include/cpdf_number.h" 10 #include "core/fpdfapi/fpdf_parser/include/cpdf_number.h"
(...skipping 875 matching lines...) Expand 10 before | Expand all | Expand 10 after
886 } 886 }
887 if (bNotify && m_pForm->m_pFormNotify) { 887 if (bNotify && m_pForm->m_pFormNotify) {
888 m_pForm->m_pFormNotify->AfterCheckedStatusChange(this); 888 m_pForm->m_pFormNotify->AfterCheckedStatusChange(this);
889 } 889 }
890 m_pForm->m_bUpdated = TRUE; 890 m_pForm->m_bUpdated = TRUE;
891 return TRUE; 891 return TRUE;
892 } 892 }
893 893
894 int CPDF_FormField::GetTopVisibleIndex() { 894 int CPDF_FormField::GetTopVisibleIndex() {
895 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TI"); 895 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TI");
896 if (!pObj) { 896 return pObj ? pObj->GetInteger() : 0;
897 return 0;
898 }
899 return pObj->GetInteger();
900 } 897 }
901 898
902 int CPDF_FormField::CountSelectedOptions() { 899 int CPDF_FormField::CountSelectedOptions() {
903 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); 900 CPDF_Array* pArray = ToArray(FPDF_GetFieldAttr(m_pDict, "I"));
904 if (!pObj) { 901 return pArray ? pArray->GetCount() : 0;
905 return 0;
906 }
907 CPDF_Array* pArray = pObj->GetArray();
908 if (!pArray) {
909 return 0;
910 }
911 return static_cast<int>(pArray->GetCount());
912 } 902 }
913 903
914 int CPDF_FormField::GetSelectedOptionIndex(int index) { 904 int CPDF_FormField::GetSelectedOptionIndex(int index) {
915 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); 905 CPDF_Array* pArray = ToArray(FPDF_GetFieldAttr(m_pDict, "I"));
916 if (!pObj) { 906 if (!pArray)
917 return -1; 907 return -1;
918 } 908
919 CPDF_Array* pArray = pObj->GetArray(); 909 int iCount = pArray->GetCount();
920 if (!pArray) { 910 if (iCount < 0 || index >= iCount)
921 return -1; 911 return -1;
922 } 912 return pArray->GetIntegerAt(index);
923 int iCount = static_cast<int>(pArray->GetCount());
924 if (iCount > 0 && index < iCount) {
925 return pArray->GetIntegerAt(index);
926 }
927 return -1;
928 } 913 }
914
929 FX_BOOL CPDF_FormField::IsOptionSelected(int iOptIndex) { 915 FX_BOOL CPDF_FormField::IsOptionSelected(int iOptIndex) {
930 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); 916 CPDF_Array* pArray = ToArray(FPDF_GetFieldAttr(m_pDict, "I"));
931 if (!pObj) { 917 if (!pArray)
932 return FALSE; 918 return FALSE;
933 } 919
934 CPDF_Array* pArray = pObj->GetArray(); 920 for (CPDF_Object* pObj : *pArray) {
935 if (!pArray) { 921 if (pObj->GetInteger() == iOptIndex)
936 return FALSE;
937 }
938 size_t iCount = pArray->GetCount();
939 for (size_t i = 0; i < iCount; i++) {
940 if (pArray->GetIntegerAt(i) == iOptIndex) {
941 return TRUE; 922 return TRUE;
942 }
943 } 923 }
944 return FALSE; 924 return FALSE;
945 } 925 }
926
946 FX_BOOL CPDF_FormField::SelectOption(int iOptIndex, 927 FX_BOOL CPDF_FormField::SelectOption(int iOptIndex,
947 FX_BOOL bSelected, 928 FX_BOOL bSelected,
948 FX_BOOL bNotify) { 929 FX_BOOL bNotify) {
949 CPDF_Array* pArray = m_pDict->GetArrayBy("I"); 930 CPDF_Array* pArray = m_pDict->GetArrayBy("I");
950 if (!pArray) { 931 if (!pArray) {
951 if (!bSelected) { 932 if (!bSelected) {
952 return TRUE; 933 return TRUE;
953 } 934 }
954 pArray = new CPDF_Array; 935 pArray = new CPDF_Array;
955 m_pDict->SetAt("I", pArray); 936 m_pDict->SetAt("I", pArray);
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
1069 pFontDict = m_pForm->m_pFormDict->GetDictBy("DR") 1050 pFontDict = m_pForm->m_pFormDict->GetDictBy("DR")
1070 ->GetDictBy("Font") 1051 ->GetDictBy("Font")
1071 ->GetDictBy(font_name); 1052 ->GetDictBy(font_name);
1072 } 1053 }
1073 if (!pFontDict) { 1054 if (!pFontDict) {
1074 return; 1055 return;
1075 } 1056 }
1076 m_pFont = m_pForm->m_pDocument->LoadFont(pFontDict); 1057 m_pFont = m_pForm->m_pDocument->LoadFont(pFontDict);
1077 m_FontSize = FX_atof(syntax.GetWord()); 1058 m_FontSize = FX_atof(syntax.GetWord());
1078 } 1059 }
OLDNEW
« no previous file with comments | « core/fpdfdoc/cpvt_generateap.cpp ('k') | fpdfsdk/fpdfsave.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698