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

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

Issue 2183313004: Split fpdfdoc/include/fpdf_doc.h into individual classes. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: review feedback Created 4 years, 4 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/doc_formcontrol.cpp ('k') | core/fpdfdoc/doc_link.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/fpdfdoc/include/cpdf_formfield.h"
8
7 #include "core/fpdfapi/fpdf_parser/include/cfdf_document.h" 9 #include "core/fpdfapi/fpdf_parser/include/cfdf_document.h"
8 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h" 10 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h"
9 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" 11 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h"
10 #include "core/fpdfapi/fpdf_parser/include/cpdf_number.h" 12 #include "core/fpdfapi/fpdf_parser/include/cpdf_number.h"
11 #include "core/fpdfapi/fpdf_parser/include/cpdf_simple_parser.h" 13 #include "core/fpdfapi/fpdf_parser/include/cpdf_simple_parser.h"
12 #include "core/fpdfapi/fpdf_parser/include/cpdf_string.h" 14 #include "core/fpdfapi/fpdf_parser/include/cpdf_string.h"
15 #include "core/fpdfapi/fpdf_parser/include/fpdf_parser_decode.h"
13 #include "core/fpdfdoc/cpvt_generateap.h" 16 #include "core/fpdfdoc/cpvt_generateap.h"
14 #include "core/fpdfdoc/doc_utils.h" 17 #include "core/fpdfdoc/doc_utils.h"
15 #include "core/fpdfdoc/include/fpdf_doc.h" 18 #include "core/fpdfdoc/include/cpdf_formcontrol.h"
19 #include "core/fpdfdoc/include/cpdf_interform.h"
16 20
17 namespace { 21 namespace {
18 22
23 const int kFormListMultiSelect = 0x100;
24
25 const int kFormComboEdit = 0x100;
26
27 const int kFormFieldReadOnly = 0x01;
28 const int kFormFieldRequired = 0x02;
29 const int kFormFieldNoExport = 0x04;
30
31 const int kFormRadioNoToggleOff = 0x100;
32 const int kFormRadioUnison = 0x200;
33
34 const int kFormTextMultiLine = 0x100;
35 const int kFormTextPassword = 0x200;
36 const int kFormTextNoScroll = 0x400;
37 const int kFormTextComb = 0x800;
38
19 bool PDF_FormField_IsUnison(CPDF_FormField* pField) { 39 bool PDF_FormField_IsUnison(CPDF_FormField* pField) {
20 if (pField->GetType() == CPDF_FormField::CheckBox) 40 if (pField->GetType() == CPDF_FormField::CheckBox)
21 return true; 41 return true;
22 42
23 return (pField->GetFieldFlags() & 0x2000000) != 0; 43 return (pField->GetFieldFlags() & 0x2000000) != 0;
24 } 44 }
25 45
26 } // namespace 46 } // namespace
27 47
28 CPDF_FormField::CPDF_FormField(CPDF_InterForm* pForm, CPDF_Dictionary* pDict) 48 CPDF_FormField::CPDF_FormField(CPDF_InterForm* pForm, CPDF_Dictionary* pDict)
29 : m_Type(Unknown), 49 : m_Type(Unknown),
30 m_pForm(pForm), 50 m_pForm(pForm),
31 m_pDict(pDict), 51 m_pDict(pDict),
32 m_FontSize(0), 52 m_FontSize(0),
33 m_pFont(nullptr) { 53 m_pFont(nullptr) {
34 SyncFieldFlags(); 54 SyncFieldFlags();
35 } 55 }
36 56
37 CPDF_FormField::~CPDF_FormField() {} 57 CPDF_FormField::~CPDF_FormField() {}
38 58
39 void CPDF_FormField::SyncFieldFlags() { 59 void CPDF_FormField::SyncFieldFlags() {
40 CFX_ByteString type_name = FPDF_GetFieldAttr(m_pDict, "FT") 60 CFX_ByteString type_name = FPDF_GetFieldAttr(m_pDict, "FT")
41 ? FPDF_GetFieldAttr(m_pDict, "FT")->GetString() 61 ? FPDF_GetFieldAttr(m_pDict, "FT")->GetString()
42 : CFX_ByteString(); 62 : CFX_ByteString();
43 uint32_t flags = FPDF_GetFieldAttr(m_pDict, "Ff") 63 uint32_t flags = FPDF_GetFieldAttr(m_pDict, "Ff")
44 ? FPDF_GetFieldAttr(m_pDict, "Ff")->GetInteger() 64 ? FPDF_GetFieldAttr(m_pDict, "Ff")->GetInteger()
45 : 0; 65 : 0;
46 m_Flags = 0; 66 m_Flags = 0;
47 if (flags & 1) { 67 if (flags & 1) {
48 m_Flags |= FORMFIELD_READONLY; 68 m_Flags |= kFormFieldReadOnly;
49 } 69 }
50 if (flags & 2) { 70 if (flags & 2) {
51 m_Flags |= FORMFIELD_REQUIRED; 71 m_Flags |= kFormFieldRequired;
52 } 72 }
53 if (flags & 4) { 73 if (flags & 4) {
54 m_Flags |= FORMFIELD_NOEXPORT; 74 m_Flags |= kFormFieldNoExport;
55 } 75 }
56 if (type_name == "Btn") { 76 if (type_name == "Btn") {
57 if (flags & 0x8000) { 77 if (flags & 0x8000) {
58 m_Type = RadioButton; 78 m_Type = RadioButton;
59 if (flags & 0x4000) { 79 if (flags & 0x4000) {
60 m_Flags |= FORMRADIO_NOTOGGLEOFF; 80 m_Flags |= kFormRadioNoToggleOff;
61 } 81 }
62 if (flags & 0x2000000) { 82 if (flags & 0x2000000) {
63 m_Flags |= FORMRADIO_UNISON; 83 m_Flags |= kFormRadioUnison;
64 } 84 }
65 } else if (flags & 0x10000) { 85 } else if (flags & 0x10000) {
66 m_Type = PushButton; 86 m_Type = PushButton;
67 } else { 87 } else {
68 m_Type = CheckBox; 88 m_Type = CheckBox;
69 } 89 }
70 } else if (type_name == "Tx") { 90 } else if (type_name == "Tx") {
71 if (flags & 0x100000) { 91 if (flags & 0x100000) {
72 m_Type = File; 92 m_Type = File;
73 } else if (flags & 0x2000000) { 93 } else if (flags & 0x2000000) {
74 m_Type = RichText; 94 m_Type = RichText;
75 } else { 95 } else {
76 m_Type = Text; 96 m_Type = Text;
77 if (flags & 0x1000) { 97 if (flags & 0x1000) {
78 m_Flags |= FORMTEXT_MULTILINE; 98 m_Flags |= kFormTextMultiLine;
79 } 99 }
80 if (flags & 0x2000) { 100 if (flags & 0x2000) {
81 m_Flags |= FORMTEXT_PASSWORD; 101 m_Flags |= kFormTextPassword;
82 } 102 }
83 if (flags & 0x800000) { 103 if (flags & 0x800000) {
84 m_Flags |= FORMTEXT_NOSCROLL; 104 m_Flags |= kFormTextNoScroll;
85 } 105 }
86 if (flags & 0x100000) { 106 if (flags & 0x100000) {
87 m_Flags |= FORMTEXT_COMB; 107 m_Flags |= kFormTextComb;
88 } 108 }
89 } 109 }
90 LoadDA(); 110 LoadDA();
91 } else if (type_name == "Ch") { 111 } else if (type_name == "Ch") {
92 if (flags & 0x20000) { 112 if (flags & 0x20000) {
93 m_Type = ComboBox; 113 m_Type = ComboBox;
94 if (flags & 0x40000) { 114 if (flags & 0x40000) {
95 m_Flags |= FORMCOMBO_EDIT; 115 m_Flags |= kFormComboEdit;
96 } 116 }
97 } else { 117 } else {
98 m_Type = ListBox; 118 m_Type = ListBox;
99 if (flags & 0x200000) { 119 if (flags & 0x200000) {
100 m_Flags |= FORMLIST_MULTISELECT; 120 m_Flags |= kFormListMultiSelect;
101 } 121 }
102 } 122 }
103 LoadDA(); 123 LoadDA();
104 } else if (type_name == "Sig") { 124 } else if (type_name == "Sig") {
105 m_Type = Sign; 125 m_Type = Sign;
106 } 126 }
107 } 127 }
108 CFX_WideString CPDF_FormField::GetFullName() const { 128 CFX_WideString CPDF_FormField::GetFullName() const {
109 return ::GetFullName(m_pDict); 129 return ::GetFullName(m_pDict);
110 } 130 }
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 if (index < 0 || index >= CountOptions()) 524 if (index < 0 || index >= CountOptions())
505 return FALSE; 525 return FALSE;
506 526
507 CFX_WideString opt_value = GetOptionValue(index); 527 CFX_WideString opt_value = GetOptionValue(index);
508 if (bNotify && !NotifyListOrComboBoxBeforeChange(opt_value)) 528 if (bNotify && !NotifyListOrComboBoxBeforeChange(opt_value))
509 return FALSE; 529 return FALSE;
510 530
511 if (bSelected) { 531 if (bSelected) {
512 if (GetType() == ListBox) { 532 if (GetType() == ListBox) {
513 SelectOption(index, TRUE); 533 SelectOption(index, TRUE);
514 if (!(m_Flags & FORMLIST_MULTISELECT)) { 534 if (!(m_Flags & kFormListMultiSelect)) {
515 m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); 535 m_pDict->SetAtString("V", PDF_EncodeText(opt_value));
516 } else { 536 } else {
517 CPDF_Array* pArray = new CPDF_Array; 537 CPDF_Array* pArray = new CPDF_Array;
518 for (int i = 0; i < CountOptions(); i++) { 538 for (int i = 0; i < CountOptions(); i++) {
519 if (i == index || IsItemSelected(i)) { 539 if (i == index || IsItemSelected(i)) {
520 opt_value = GetOptionValue(i); 540 opt_value = GetOptionValue(i);
521 pArray->AddString(PDF_EncodeText(opt_value)); 541 pArray->AddString(PDF_EncodeText(opt_value));
522 } 542 }
523 } 543 }
524 m_pDict->SetAt("V", pArray); 544 m_pDict->SetAt("V", pArray);
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
958 case ListBox: 978 case ListBox:
959 NotifyAfterSelectionChange(); 979 NotifyAfterSelectionChange();
960 break; 980 break;
961 case ComboBox: 981 case ComboBox:
962 NotifyAfterValueChange(); 982 NotifyAfterValueChange();
963 break; 983 break;
964 default: 984 default:
965 break; 985 break;
966 } 986 }
967 } 987 }
OLDNEW
« no previous file with comments | « core/fpdfdoc/doc_formcontrol.cpp ('k') | core/fpdfdoc/doc_link.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698