| OLD | NEW |
| 1 // Copyright 2016 PDFium Authors. All rights reserved. | 1 // Copyright 2016 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 <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "core/fpdfapi/font/cpdf_font.h" | 9 #include "core/fpdfapi/font/cpdf_font.h" |
| 10 #include "core/fpdfapi/font/cpdf_fontencoding.h" | 10 #include "core/fpdfapi/font/cpdf_fontencoding.h" |
| (...skipping 1087 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1098 pFieldDict->GetStringFor("Subtype") == "Widget") { | 1098 pFieldDict->GetStringFor("Subtype") == "Widget") { |
| 1099 pParent = pFieldDict->GetDictFor("Parent"); | 1099 pParent = pFieldDict->GetDictFor("Parent"); |
| 1100 if (!pParent) | 1100 if (!pParent) |
| 1101 pParent = pFieldDict; | 1101 pParent = pFieldDict; |
| 1102 } | 1102 } |
| 1103 | 1103 |
| 1104 if (pParent && pParent != pFieldDict && !pParent->KeyExist("FT")) { | 1104 if (pParent && pParent != pFieldDict && !pParent->KeyExist("FT")) { |
| 1105 if (pFieldDict->KeyExist("FT")) { | 1105 if (pFieldDict->KeyExist("FT")) { |
| 1106 CPDF_Object* pFTValue = pFieldDict->GetDirectObjectFor("FT"); | 1106 CPDF_Object* pFTValue = pFieldDict->GetDirectObjectFor("FT"); |
| 1107 if (pFTValue) | 1107 if (pFTValue) |
| 1108 pParent->SetFor("FT", pFTValue->Clone()); | 1108 pParent->SetFor("FT", pFTValue->Clone().release()); |
| 1109 } | 1109 } |
| 1110 | 1110 |
| 1111 if (pFieldDict->KeyExist("Ff")) { | 1111 if (pFieldDict->KeyExist("Ff")) { |
| 1112 CPDF_Object* pFfValue = pFieldDict->GetDirectObjectFor("Ff"); | 1112 CPDF_Object* pFfValue = pFieldDict->GetDirectObjectFor("Ff"); |
| 1113 if (pFfValue) | 1113 if (pFfValue) |
| 1114 pParent->SetFor("Ff", pFfValue->Clone()); | 1114 pParent->SetFor("Ff", pFfValue->Clone().release()); |
| 1115 } | 1115 } |
| 1116 } | 1116 } |
| 1117 | 1117 |
| 1118 pField = new CPDF_FormField(this, pParent); | 1118 pField = new CPDF_FormField(this, pParent); |
| 1119 CPDF_Object* pTObj = pDict->GetObjectFor("T"); | 1119 CPDF_Object* pTObj = pDict->GetObjectFor("T"); |
| 1120 if (ToReference(pTObj)) { | 1120 if (ToReference(pTObj)) { |
| 1121 CPDF_Object* pClone = pTObj->CloneDirectObject(); | 1121 std::unique_ptr<CPDF_Object> pClone = pTObj->CloneDirectObject(); |
| 1122 if (pClone) | 1122 if (pClone) |
| 1123 pDict->SetFor("T", pClone); | 1123 pDict->SetFor("T", pClone.release()); |
| 1124 else | 1124 else |
| 1125 pDict->SetNameFor("T", ""); | 1125 pDict->SetNameFor("T", ""); |
| 1126 } | 1126 } |
| 1127 m_pFieldTree->SetField(csWName, pField); | 1127 m_pFieldTree->SetField(csWName, pField); |
| 1128 } | 1128 } |
| 1129 | 1129 |
| 1130 CPDF_Array* pKids = pFieldDict->GetArrayFor("Kids"); | 1130 CPDF_Array* pKids = pFieldDict->GetArrayFor("Kids"); |
| 1131 if (pKids) { | 1131 if (pKids) { |
| 1132 for (size_t i = 0; i < pKids->GetCount(); i++) { | 1132 for (size_t i = 0; i < pKids->GetCount(); i++) { |
| 1133 CPDF_Dictionary* pKid = pKids->GetDictAt(i); | 1133 CPDF_Dictionary* pKid = pKids->GetDictAt(i); |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1244 CFX_WideString csExport = pField->GetCheckValue(false); | 1244 CFX_WideString csExport = pField->GetCheckValue(false); |
| 1245 CFX_ByteString csBExport = PDF_EncodeText(csExport); | 1245 CFX_ByteString csBExport = PDF_EncodeText(csExport); |
| 1246 CPDF_Object* pOpt = FPDF_GetFieldAttr(pField->m_pDict, "Opt"); | 1246 CPDF_Object* pOpt = FPDF_GetFieldAttr(pField->m_pDict, "Opt"); |
| 1247 if (pOpt) | 1247 if (pOpt) |
| 1248 pFieldDict->SetStringFor("V", csBExport); | 1248 pFieldDict->SetStringFor("V", csBExport); |
| 1249 else | 1249 else |
| 1250 pFieldDict->SetNameFor("V", csBExport); | 1250 pFieldDict->SetNameFor("V", csBExport); |
| 1251 } else { | 1251 } else { |
| 1252 CPDF_Object* pV = FPDF_GetFieldAttr(pField->m_pDict, "V"); | 1252 CPDF_Object* pV = FPDF_GetFieldAttr(pField->m_pDict, "V"); |
| 1253 if (pV) | 1253 if (pV) |
| 1254 pFieldDict->SetFor("V", pV->CloneDirectObject()); | 1254 pFieldDict->SetFor("V", pV->CloneDirectObject().release()); |
| 1255 } | 1255 } |
| 1256 pFields->Add(pFieldDict); | 1256 pFields->Add(pFieldDict); |
| 1257 } | 1257 } |
| 1258 } | 1258 } |
| 1259 return pDoc; | 1259 return pDoc; |
| 1260 } | 1260 } |
| 1261 | 1261 |
| 1262 void CPDF_InterForm::FDF_ImportField(CPDF_Dictionary* pFieldDict, | 1262 void CPDF_InterForm::FDF_ImportField(CPDF_Dictionary* pFieldDict, |
| 1263 const CFX_WideString& parent_name, | 1263 const CFX_WideString& parent_name, |
| 1264 bool bNotify, | 1264 bool bNotify, |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1297 | 1297 |
| 1298 if (iRet < 0) | 1298 if (iRet < 0) |
| 1299 return; | 1299 return; |
| 1300 } | 1300 } |
| 1301 | 1301 |
| 1302 pField->SetValue(csWValue); | 1302 pField->SetValue(csWValue); |
| 1303 CPDF_FormField::Type eType = pField->GetType(); | 1303 CPDF_FormField::Type eType = pField->GetType(); |
| 1304 if ((eType == CPDF_FormField::ListBox || eType == CPDF_FormField::ComboBox) && | 1304 if ((eType == CPDF_FormField::ListBox || eType == CPDF_FormField::ComboBox) && |
| 1305 pFieldDict->KeyExist("Opt")) { | 1305 pFieldDict->KeyExist("Opt")) { |
| 1306 pField->m_pDict->SetFor( | 1306 pField->m_pDict->SetFor( |
| 1307 "Opt", pFieldDict->GetDirectObjectFor("Opt")->CloneDirectObject()); | 1307 "Opt", |
| 1308 pFieldDict->GetDirectObjectFor("Opt")->CloneDirectObject().release()); |
| 1308 } | 1309 } |
| 1309 | 1310 |
| 1310 if (bNotify && m_pFormNotify) { | 1311 if (bNotify && m_pFormNotify) { |
| 1311 if (iType == FIELDTYPE_CHECKBOX || iType == FIELDTYPE_RADIOBUTTON) | 1312 if (iType == FIELDTYPE_CHECKBOX || iType == FIELDTYPE_RADIOBUTTON) |
| 1312 m_pFormNotify->AfterCheckedStatusChange(pField); | 1313 m_pFormNotify->AfterCheckedStatusChange(pField); |
| 1313 else if (iType == FIELDTYPE_LISTBOX) | 1314 else if (iType == FIELDTYPE_LISTBOX) |
| 1314 m_pFormNotify->AfterSelectionChange(pField); | 1315 m_pFormNotify->AfterSelectionChange(pField); |
| 1315 else if (iType == FIELDTYPE_COMBOBOX || iType == FIELDTYPE_TEXTFIELD) | 1316 else if (iType == FIELDTYPE_COMBOBOX || iType == FIELDTYPE_TEXTFIELD) |
| 1316 m_pFormNotify->AfterValueChange(pField); | 1317 m_pFormNotify->AfterValueChange(pField); |
| 1317 } | 1318 } |
| 1318 } | 1319 } |
| 1319 | 1320 |
| 1320 void CPDF_InterForm::SetFormNotify(IPDF_FormNotify* pNotify) { | 1321 void CPDF_InterForm::SetFormNotify(IPDF_FormNotify* pNotify) { |
| 1321 m_pFormNotify = pNotify; | 1322 m_pFormNotify = pNotify; |
| 1322 } | 1323 } |
| OLD | NEW |