| 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, CPDF_Dictionary* pWid
getDict) | 8 CPDF_FormControl::CPDF_FormControl(CPDF_FormField* pField, CPDF_Dictionary* pWid
getDict) |
| 9 { | 9 { |
| 10 m_pField = pField; | 10 m_pField = pField; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 void CPDF_FormControl::SetOnStateName(const CFX_ByteString& csOn) | 39 void CPDF_FormControl::SetOnStateName(const CFX_ByteString& csOn) |
| 40 { | 40 { |
| 41 ASSERT(GetType() == CPDF_FormField::CheckBox || GetType() == CPDF_FormField:
:RadioButton); | 41 ASSERT(GetType() == CPDF_FormField::CheckBox || GetType() == CPDF_FormField:
:RadioButton); |
| 42 CFX_ByteString csValue = csOn; | 42 CFX_ByteString csValue = csOn; |
| 43 if (csValue.IsEmpty()) { | 43 if (csValue.IsEmpty()) { |
| 44 csValue = "Yes"; | 44 csValue = "Yes"; |
| 45 } | 45 } |
| 46 if (csValue == "Off") { | 46 if (csValue == "Off") { |
| 47 csValue = "Yes"; | 47 csValue = "Yes"; |
| 48 } | 48 } |
| 49 CFX_ByteString csAS = m_pWidgetDict->GetString("AS", "Off"); | 49 CFX_ByteString csAS = m_pWidgetDict->GetStringAt("AS", "Off"); |
| 50 if (csAS != "Off") { | 50 if (csAS != "Off") { |
| 51 m_pWidgetDict->SetAtName("AS", csValue); | 51 m_pWidgetDict->SetAtName("AS", csValue); |
| 52 } | 52 } |
| 53 CPDF_Dictionary* pAP = m_pWidgetDict->GetDict("AP"); | 53 CPDF_Dictionary* pAP = m_pWidgetDict->GetDict("AP"); |
| 54 if (pAP == NULL) { | 54 if (pAP == NULL) { |
| 55 return; | 55 return; |
| 56 } | 56 } |
| 57 FX_POSITION pos1 = pAP->GetStartPos(); | 57 FX_POSITION pos1 = pAP->GetStartPos(); |
| 58 while (pos1) { | 58 while (pos1) { |
| 59 CFX_ByteString csKey1; | 59 CFX_ByteString csKey1; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 97 return csOn; | 97 return csOn; |
| 98 } | 98 } |
| 99 CFX_WideString CPDF_FormControl::GetExportValue() | 99 CFX_WideString CPDF_FormControl::GetExportValue() |
| 100 { | 100 { |
| 101 ASSERT(GetType() == CPDF_FormField::CheckBox || GetType() == CPDF_FormField:
:RadioButton); | 101 ASSERT(GetType() == CPDF_FormField::CheckBox || GetType() == CPDF_FormField:
:RadioButton); |
| 102 CFX_ByteString csOn = GetOnStateName(); | 102 CFX_ByteString csOn = GetOnStateName(); |
| 103 if (GetType() == CPDF_FormField::RadioButton || GetType() == CPDF_FormField:
:CheckBox) { | 103 if (GetType() == CPDF_FormField::RadioButton || GetType() == CPDF_FormField:
:CheckBox) { |
| 104 CPDF_Object* pOpt = FPDF_GetFieldAttr(m_pField->m_pDict, "Opt"); | 104 CPDF_Object* pOpt = FPDF_GetFieldAttr(m_pField->m_pDict, "Opt"); |
| 105 if (pOpt != NULL && pOpt->GetType() == PDFOBJ_ARRAY) { | 105 if (pOpt != NULL && pOpt->GetType() == PDFOBJ_ARRAY) { |
| 106 int iIndex = m_pField->GetControlIndex(this); | 106 int iIndex = m_pField->GetControlIndex(this); |
| 107 csOn = ((CPDF_Array*)pOpt)->GetString(iIndex); | 107 csOn = ((CPDF_Array*)pOpt)->GetStringAt(iIndex); |
| 108 } | 108 } |
| 109 } | 109 } |
| 110 if (csOn.IsEmpty()) { | 110 if (csOn.IsEmpty()) { |
| 111 csOn = "Yes"; | 111 csOn = "Yes"; |
| 112 } | 112 } |
| 113 CFX_WideString csWOn = PDF_DecodeText(csOn); | 113 CFX_WideString csWOn = PDF_DecodeText(csOn); |
| 114 return csWOn; | 114 return csWOn; |
| 115 } | 115 } |
| 116 FX_BOOL CPDF_FormControl::IsChecked() | 116 FX_BOOL CPDF_FormControl::IsChecked() |
| 117 { | 117 { |
| 118 ASSERT(GetType() == CPDF_FormField::CheckBox || GetType() == CPDF_FormField:
:RadioButton); | 118 ASSERT(GetType() == CPDF_FormField::CheckBox || GetType() == CPDF_FormField:
:RadioButton); |
| 119 CFX_ByteString csOn = GetOnStateName(); | 119 CFX_ByteString csOn = GetOnStateName(); |
| 120 CFX_ByteString csAS = m_pWidgetDict->GetString("AS"); | 120 CFX_ByteString csAS = m_pWidgetDict->GetStringAt("AS"); |
| 121 return csAS == csOn; | 121 return csAS == csOn; |
| 122 } | 122 } |
| 123 FX_BOOL CPDF_FormControl::IsDefaultChecked() | 123 FX_BOOL CPDF_FormControl::IsDefaultChecked() |
| 124 { | 124 { |
| 125 ASSERT(GetType() == CPDF_FormField::CheckBox || GetType() == CPDF_FormField:
:RadioButton); | 125 ASSERT(GetType() == CPDF_FormField::CheckBox || GetType() == CPDF_FormField:
:RadioButton); |
| 126 CPDF_Object* pDV = FPDF_GetFieldAttr(m_pField->m_pDict, "DV"); | 126 CPDF_Object* pDV = FPDF_GetFieldAttr(m_pField->m_pDict, "DV"); |
| 127 if (pDV == NULL) { | 127 if (pDV == NULL) { |
| 128 return FALSE; | 128 return FALSE; |
| 129 } | 129 } |
| 130 CFX_ByteString csDV = pDV->GetString(); | 130 CFX_ByteString csDV = pDV->GetString(); |
| 131 CFX_ByteString csOn = GetOnStateName(); | 131 CFX_ByteString csOn = GetOnStateName(); |
| 132 return (csDV == csOn); | 132 return (csDV == csOn); |
| 133 } | 133 } |
| 134 void CPDF_FormControl::CheckControl(FX_BOOL bChecked) | 134 void CPDF_FormControl::CheckControl(FX_BOOL bChecked) |
| 135 { | 135 { |
| 136 ASSERT(GetType() == CPDF_FormField::CheckBox || GetType() == CPDF_FormField:
:RadioButton); | 136 ASSERT(GetType() == CPDF_FormField::CheckBox || GetType() == CPDF_FormField:
:RadioButton); |
| 137 CFX_ByteString csOn = GetOnStateName(); | 137 CFX_ByteString csOn = GetOnStateName(); |
| 138 CFX_ByteString csOldAS = m_pWidgetDict->GetString("AS", "Off"); | 138 CFX_ByteString csOldAS = m_pWidgetDict->GetStringAt("AS", "Off"); |
| 139 CFX_ByteString csAS = "Off"; | 139 CFX_ByteString csAS = "Off"; |
| 140 if (bChecked) { | 140 if (bChecked) { |
| 141 csAS = csOn; | 141 csAS = csOn; |
| 142 } | 142 } |
| 143 if (csOldAS == csAS) { | 143 if (csOldAS == csAS) { |
| 144 return; | 144 return; |
| 145 } | 145 } |
| 146 m_pWidgetDict->SetAtName("AS", csAS); | 146 m_pWidgetDict->SetAtName("AS", csAS); |
| 147 m_pForm->m_bUpdated = TRUE; | 147 m_pForm->m_bUpdated = TRUE; |
| 148 } | 148 } |
| (...skipping 20 matching lines...) Expand all Loading... |
| 169 CPDF_RenderContext context; | 169 CPDF_RenderContext context; |
| 170 context.Create(pPage); | 170 context.Create(pPage); |
| 171 context.DrawObjectList(pDevice, &form, &matrix, pOptions); | 171 context.DrawObjectList(pDevice, &form, &matrix, pOptions); |
| 172 } | 172 } |
| 173 const FX_CHAR* g_sHighlightingMode[] = {"N", "I", "O", "P", "T", ""}; | 173 const FX_CHAR* g_sHighlightingMode[] = {"N", "I", "O", "P", "T", ""}; |
| 174 CPDF_FormControl::HighlightingMode CPDF_FormControl::GetHighlightingMode() | 174 CPDF_FormControl::HighlightingMode CPDF_FormControl::GetHighlightingMode() |
| 175 { | 175 { |
| 176 if (m_pWidgetDict == NULL) { | 176 if (m_pWidgetDict == NULL) { |
| 177 return Invert; | 177 return Invert; |
| 178 } | 178 } |
| 179 CFX_ByteString csH = m_pWidgetDict->GetString("H", "I"); | 179 CFX_ByteString csH = m_pWidgetDict->GetStringAt("H", "I"); |
| 180 int i = 0; | 180 int i = 0; |
| 181 while (g_sHighlightingMode[i][0] != '\0') { | 181 while (g_sHighlightingMode[i][0] != '\0') { |
| 182 if (csH.Equal(g_sHighlightingMode[i])) { | 182 if (csH.Equal(g_sHighlightingMode[i])) { |
| 183 return (HighlightingMode)i; | 183 return (HighlightingMode)i; |
| 184 } | 184 } |
| 185 i ++; | 185 i ++; |
| 186 } | 186 } |
| 187 return Invert; | 187 return Invert; |
| 188 } | 188 } |
| 189 CPDF_ApSettings CPDF_FormControl::GetMK(FX_BOOL bCreate) | 189 CPDF_ApSettings CPDF_FormControl::GetMK(FX_BOOL bCreate) |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 } else { | 270 } else { |
| 271 return m_pField->GetAdditionalAction(); | 271 return m_pField->GetAdditionalAction(); |
| 272 } | 272 } |
| 273 } | 273 } |
| 274 CPDF_DefaultAppearance CPDF_FormControl::GetDefaultAppearance() | 274 CPDF_DefaultAppearance CPDF_FormControl::GetDefaultAppearance() |
| 275 { | 275 { |
| 276 if (m_pWidgetDict == NULL) { | 276 if (m_pWidgetDict == NULL) { |
| 277 return CFX_ByteString(); | 277 return CFX_ByteString(); |
| 278 } | 278 } |
| 279 if (m_pWidgetDict->KeyExist("DA")) { | 279 if (m_pWidgetDict->KeyExist("DA")) { |
| 280 return m_pWidgetDict->GetString("DA"); | 280 return m_pWidgetDict->GetStringAt("DA"); |
| 281 } else { | 281 } else { |
| 282 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pField->m_pDict, "DA"); | 282 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pField->m_pDict, "DA"); |
| 283 if (pObj == NULL) { | 283 if (pObj == NULL) { |
| 284 return m_pField->m_pForm->GetDefaultAppearance(); | 284 return m_pField->m_pForm->GetDefaultAppearance(); |
| 285 } | 285 } |
| 286 return pObj->GetString(); | 286 return pObj->GetString(); |
| 287 } | 287 } |
| 288 } | 288 } |
| 289 | 289 |
| 290 CPDF_Font* CPDF_FormControl::GetDefaultControlFont() | 290 CPDF_Font* CPDF_FormControl::GetDefaultControlFont() |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 458 } | 458 } |
| 459 return m_pDict->GetDict(FX_BSTRC("IF")); | 459 return m_pDict->GetDict(FX_BSTRC("IF")); |
| 460 } | 460 } |
| 461 int CPDF_ApSettings::GetTextPosition() | 461 int CPDF_ApSettings::GetTextPosition() |
| 462 { | 462 { |
| 463 if (m_pDict == NULL) { | 463 if (m_pDict == NULL) { |
| 464 return TEXTPOS_CAPTION; | 464 return TEXTPOS_CAPTION; |
| 465 } | 465 } |
| 466 return m_pDict->GetInteger(FX_BSTRC("TP"), TEXTPOS_CAPTION); | 466 return m_pDict->GetInteger(FX_BSTRC("TP"), TEXTPOS_CAPTION); |
| 467 } | 467 } |
| OLD | NEW |