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 "../../include/fpdfdoc/fpdf_doc.h" | 7 #include "../../include/fpdfdoc/fpdf_doc.h" |
8 CPDF_FormControl::CPDF_FormControl(CPDF_FormField* pField, | 8 CPDF_FormControl::CPDF_FormControl(CPDF_FormField* pField, |
9 CPDF_Dictionary* pWidgetDict) { | 9 CPDF_Dictionary* pWidgetDict) { |
10 m_pField = pField; | 10 m_pField = pField; |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 } | 78 } |
79 } | 79 } |
80 } | 80 } |
81 } | 81 } |
82 CFX_ByteString CPDF_FormControl::GetCheckedAPState() { | 82 CFX_ByteString CPDF_FormControl::GetCheckedAPState() { |
83 ASSERT(GetType() == CPDF_FormField::CheckBox || | 83 ASSERT(GetType() == CPDF_FormField::CheckBox || |
84 GetType() == CPDF_FormField::RadioButton); | 84 GetType() == CPDF_FormField::RadioButton); |
85 CFX_ByteString csOn = GetOnStateName(); | 85 CFX_ByteString csOn = GetOnStateName(); |
86 if (GetType() == CPDF_FormField::RadioButton || | 86 if (GetType() == CPDF_FormField::RadioButton || |
87 GetType() == CPDF_FormField::CheckBox) { | 87 GetType() == CPDF_FormField::CheckBox) { |
88 CPDF_Object* pOpt = FPDF_GetFieldAttr(m_pField->m_pDict, "Opt"); | 88 if (ToArray(FPDF_GetFieldAttr(m_pField->m_pDict, "Opt"))) { |
89 if (pOpt != NULL && pOpt->GetType() == PDFOBJ_ARRAY) { | |
90 int iIndex = m_pField->GetControlIndex(this); | 89 int iIndex = m_pField->GetControlIndex(this); |
91 csOn.Format("%d", iIndex); | 90 csOn.Format("%d", iIndex); |
92 } | 91 } |
93 } | 92 } |
94 if (csOn.IsEmpty()) { | 93 if (csOn.IsEmpty()) |
95 csOn = "Yes"; | 94 csOn = "Yes"; |
96 } | |
97 return csOn; | 95 return csOn; |
98 } | 96 } |
99 CFX_WideString CPDF_FormControl::GetExportValue() { | 97 CFX_WideString CPDF_FormControl::GetExportValue() { |
100 ASSERT(GetType() == CPDF_FormField::CheckBox || | 98 ASSERT(GetType() == CPDF_FormField::CheckBox || |
101 GetType() == CPDF_FormField::RadioButton); | 99 GetType() == CPDF_FormField::RadioButton); |
102 CFX_ByteString csOn = GetOnStateName(); | 100 CFX_ByteString csOn = GetOnStateName(); |
103 if (GetType() == CPDF_FormField::RadioButton || | 101 if (GetType() == CPDF_FormField::RadioButton || |
104 GetType() == CPDF_FormField::CheckBox) { | 102 GetType() == CPDF_FormField::CheckBox) { |
105 CPDF_Object* pOpt = FPDF_GetFieldAttr(m_pField->m_pDict, "Opt"); | 103 if (CPDF_Array* pArray = |
106 if (pOpt != NULL && pOpt->GetType() == PDFOBJ_ARRAY) { | 104 ToArray(FPDF_GetFieldAttr(m_pField->m_pDict, "Opt"))) { |
107 int iIndex = m_pField->GetControlIndex(this); | 105 int iIndex = m_pField->GetControlIndex(this); |
108 csOn = ((CPDF_Array*)pOpt)->GetString(iIndex); | 106 csOn = pArray->GetString(iIndex); |
109 } | 107 } |
110 } | 108 } |
111 if (csOn.IsEmpty()) { | 109 if (csOn.IsEmpty()) { |
112 csOn = "Yes"; | 110 csOn = "Yes"; |
113 } | 111 } |
114 CFX_WideString csWOn = PDF_DecodeText(csOn); | 112 CFX_WideString csWOn = PDF_DecodeText(csOn); |
115 return csWOn; | 113 return csWOn; |
116 } | 114 } |
117 FX_BOOL CPDF_FormControl::IsChecked() { | 115 FX_BOOL CPDF_FormControl::IsChecked() { |
118 ASSERT(GetType() == CPDF_FormField::CheckBox || | 116 ASSERT(GetType() == CPDF_FormField::CheckBox || |
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 return NULL; | 437 return NULL; |
440 } | 438 } |
441 return m_pDict->GetDict(FX_BSTRC("IF")); | 439 return m_pDict->GetDict(FX_BSTRC("IF")); |
442 } | 440 } |
443 int CPDF_ApSettings::GetTextPosition() { | 441 int CPDF_ApSettings::GetTextPosition() { |
444 if (m_pDict == NULL) { | 442 if (m_pDict == NULL) { |
445 return TEXTPOS_CAPTION; | 443 return TEXTPOS_CAPTION; |
446 } | 444 } |
447 return m_pDict->GetInteger(FX_BSTRC("TP"), TEXTPOS_CAPTION); | 445 return m_pDict->GetInteger(FX_BSTRC("TP"), TEXTPOS_CAPTION); |
448 } | 446 } |
OLD | NEW |