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

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

Issue 1867183002: Use std::vector as internal storage for CPDF_Array (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 8 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
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 396 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 CPDF_FormControl* pControl = m_ControlList.GetAt(i); 407 CPDF_FormControl* pControl = m_ControlList.GetAt(i);
408 if (!pControl) 408 if (!pControl)
409 continue; 409 continue;
410 410
411 CPDF_Dictionary* pWidgetDict = pControl->m_pWidgetDict; 411 CPDF_Dictionary* pWidgetDict = pControl->m_pWidgetDict;
412 if (pWidgetDict->KeyExist("MaxLen")) 412 if (pWidgetDict->KeyExist("MaxLen"))
413 return pWidgetDict->GetIntegerBy("MaxLen"); 413 return pWidgetDict->GetIntegerBy("MaxLen");
414 } 414 }
415 return 0; 415 return 0;
416 } 416 }
417
417 int CPDF_FormField::CountSelectedItems() { 418 int CPDF_FormField::CountSelectedItems() {
418 CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); 419 CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V");
419 if (!pValue) { 420 if (!pValue) {
420 pValue = FPDF_GetFieldAttr(m_pDict, "I"); 421 pValue = FPDF_GetFieldAttr(m_pDict, "I");
421 if (!pValue) 422 if (!pValue)
422 return 0; 423 return 0;
423 } 424 }
424 425
425 if (pValue->IsString() || pValue->IsNumber()) 426 if (pValue->IsString() || pValue->IsNumber())
426 return pValue->GetString().IsEmpty() ? 0 : 1; 427 return pValue->GetString().IsEmpty() ? 0 : 1;
427 if (CPDF_Array* pArray = pValue->AsArray()) 428 if (CPDF_Array* pArray = pValue->AsArray())
428 return pArray->GetCount(); 429 return pArray->GetCount();
429 return 0; 430 return 0;
430 } 431 }
432
431 int CPDF_FormField::GetSelectedIndex(int index) { 433 int CPDF_FormField::GetSelectedIndex(int index) {
432 CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); 434 CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V");
433 if (!pValue) { 435 if (!pValue) {
434 pValue = FPDF_GetFieldAttr(m_pDict, "I"); 436 pValue = FPDF_GetFieldAttr(m_pDict, "I");
435 if (!pValue) 437 if (!pValue)
436 return -1; 438 return -1;
437 } 439 }
438 if (pValue->IsNumber()) 440 if (pValue->IsNumber())
439 return pValue->GetInteger(); 441 return pValue->GetInteger();
440 442
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 if (!pArray) 532 if (!pArray)
531 return FALSE; 533 return FALSE;
532 534
533 int iPos = -1; 535 int iPos = -1;
534 for (int j = 0; j < CountSelectedOptions(); j++) { 536 for (int j = 0; j < CountSelectedOptions(); j++) {
535 if (GetSelectedOptionIndex(j) == index) { 537 if (GetSelectedOptionIndex(j) == index) {
536 iPos = j; 538 iPos = j;
537 break; 539 break;
538 } 540 }
539 } 541 }
540 for (uint32_t i = 0; i < pArray->GetCount(); i++) 542 for (int i = 0; i < static_cast<int>(pArray->GetCount()); i++)
541 if (pArray->GetDirectObjectAt(i)->GetUnicodeText() == opt_value && 543 if (pArray->GetDirectObjectAt(i)->GetUnicodeText() == opt_value &&
542 (int)i == iPos) { 544 i == iPos) {
543 return TRUE; 545 return TRUE;
544 } 546 }
545 return FALSE; 547 return FALSE;
546 } 548 }
547 549
548 FX_BOOL CPDF_FormField::SetItemSelection(int index, 550 FX_BOOL CPDF_FormField::SetItemSelection(int index,
549 FX_BOOL bSelected, 551 FX_BOOL bSelected,
550 FX_BOOL bNotify) { 552 FX_BOOL bNotify) {
551 ASSERT(GetType() == ComboBox || GetType() == ListBox); 553 ASSERT(GetType() == ComboBox || GetType() == ListBox);
552 if (index < 0 || index >= CountOptions()) { 554 if (index < 0 || index >= CountOptions()) {
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
880 CheckControl(GetControlIndex(pControl), FALSE); 882 CheckControl(GetControlIndex(pControl), FALSE);
881 } 883 }
882 } 884 }
883 } 885 }
884 if (bNotify && m_pForm->m_pFormNotify) { 886 if (bNotify && m_pForm->m_pFormNotify) {
885 m_pForm->m_pFormNotify->AfterCheckedStatusChange(this); 887 m_pForm->m_pFormNotify->AfterCheckedStatusChange(this);
886 } 888 }
887 m_pForm->m_bUpdated = TRUE; 889 m_pForm->m_bUpdated = TRUE;
888 return TRUE; 890 return TRUE;
889 } 891 }
892
890 int CPDF_FormField::GetTopVisibleIndex() { 893 int CPDF_FormField::GetTopVisibleIndex() {
891 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TI"); 894 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TI");
892 if (!pObj) { 895 if (!pObj) {
893 return 0; 896 return 0;
894 } 897 }
895 return pObj->GetInteger(); 898 return pObj->GetInteger();
896 } 899 }
900
897 int CPDF_FormField::CountSelectedOptions() { 901 int CPDF_FormField::CountSelectedOptions() {
898 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); 902 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I");
899 if (!pObj) { 903 if (!pObj) {
900 return 0; 904 return 0;
901 } 905 }
902 CPDF_Array* pArray = pObj->GetArray(); 906 CPDF_Array* pArray = pObj->GetArray();
903 if (!pArray) { 907 if (!pArray) {
904 return 0; 908 return 0;
905 } 909 }
906 return (int)pArray->GetCount(); 910 return static_cast<int>(pArray->GetCount());
907 } 911 }
912
908 int CPDF_FormField::GetSelectedOptionIndex(int index) { 913 int CPDF_FormField::GetSelectedOptionIndex(int index) {
909 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); 914 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I");
910 if (!pObj) { 915 if (!pObj) {
911 return -1; 916 return -1;
912 } 917 }
913 CPDF_Array* pArray = pObj->GetArray(); 918 CPDF_Array* pArray = pObj->GetArray();
914 if (!pArray) { 919 if (!pArray) {
915 return -1; 920 return -1;
916 } 921 }
917 int iCount = (int)pArray->GetCount(); 922 int iCount = static_cast<int>(pArray->GetCount());
918 if (iCount > 0 && index < iCount) { 923 if (iCount > 0 && index < iCount) {
919 return pArray->GetIntegerAt(index); 924 return pArray->GetIntegerAt(index);
920 } 925 }
921 return -1; 926 return -1;
922 } 927 }
923 FX_BOOL CPDF_FormField::IsOptionSelected(int iOptIndex) { 928 FX_BOOL CPDF_FormField::IsOptionSelected(int iOptIndex) {
924 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); 929 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I");
925 if (!pObj) { 930 if (!pObj) {
926 return FALSE; 931 return FALSE;
927 } 932 }
928 CPDF_Array* pArray = pObj->GetArray(); 933 CPDF_Array* pArray = pObj->GetArray();
929 if (!pArray) { 934 if (!pArray) {
930 return FALSE; 935 return FALSE;
931 } 936 }
932 int iCount = (int)pArray->GetCount(); 937 size_t iCount = pArray->GetCount();
933 for (int i = 0; i < iCount; i++) { 938 for (size_t i = 0; i < iCount; i++) {
934 if (pArray->GetIntegerAt(i) == iOptIndex) { 939 if (pArray->GetIntegerAt(i) == iOptIndex) {
935 return TRUE; 940 return TRUE;
936 } 941 }
937 } 942 }
938 return FALSE; 943 return FALSE;
939 } 944 }
940 FX_BOOL CPDF_FormField::SelectOption(int iOptIndex, 945 FX_BOOL CPDF_FormField::SelectOption(int iOptIndex,
941 FX_BOOL bSelected, 946 FX_BOOL bSelected,
942 FX_BOOL bNotify) { 947 FX_BOOL bNotify) {
943 CPDF_Array* pArray = m_pDict->GetArrayBy("I"); 948 CPDF_Array* pArray = m_pDict->GetArrayBy("I");
944 if (!pArray) { 949 if (!pArray) {
945 if (!bSelected) { 950 if (!bSelected) {
946 return TRUE; 951 return TRUE;
947 } 952 }
948 pArray = new CPDF_Array; 953 pArray = new CPDF_Array;
949 m_pDict->SetAt("I", pArray); 954 m_pDict->SetAt("I", pArray);
950 } 955 }
951 FX_BOOL bReturn = FALSE; 956 FX_BOOL bReturn = FALSE;
952 for (int i = 0; i < (int)pArray->GetCount(); i++) { 957 for (size_t i = 0; i < pArray->GetCount(); i++) {
953 int iFind = pArray->GetIntegerAt(i); 958 int iFind = pArray->GetIntegerAt(i);
954 if (iFind == iOptIndex) { 959 if (iFind == iOptIndex) {
955 if (bSelected) { 960 if (bSelected) {
956 return TRUE; 961 return TRUE;
957 } 962 }
958 if (bNotify && m_pForm->m_pFormNotify) { 963 if (bNotify && m_pForm->m_pFormNotify) {
959 int iRet = 0; 964 int iRet = 0;
960 CFX_WideString csValue = GetOptionLabel(iOptIndex); 965 CFX_WideString csValue = GetOptionLabel(iOptIndex);
961 if (GetType() == ListBox) { 966 if (GetType() == ListBox) {
962 iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); 967 iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue);
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1063 pFontDict = m_pForm->m_pFormDict->GetDictBy("DR") 1068 pFontDict = m_pForm->m_pFormDict->GetDictBy("DR")
1064 ->GetDictBy("Font") 1069 ->GetDictBy("Font")
1065 ->GetDictBy(font_name.AsByteStringC()); 1070 ->GetDictBy(font_name.AsByteStringC());
1066 1071
1067 if (!pFontDict) { 1072 if (!pFontDict) {
1068 return; 1073 return;
1069 } 1074 }
1070 m_pFont = m_pForm->m_pDocument->LoadFont(pFontDict); 1075 m_pFont = m_pForm->m_pDocument->LoadFont(pFontDict);
1071 m_FontSize = FX_atof(syntax.GetWord()); 1076 m_FontSize = FX_atof(syntax.GetWord());
1072 } 1077 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698