| 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 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 void AddFont(CPDF_Dictionary*& pFormDict, | 52 void AddFont(CPDF_Dictionary*& pFormDict, |
| 53 CPDF_Document* pDocument, | 53 CPDF_Document* pDocument, |
| 54 const CPDF_Font* pFont, | 54 const CPDF_Font* pFont, |
| 55 CFX_ByteString& csNameTag); | 55 CFX_ByteString& csNameTag); |
| 56 | 56 |
| 57 void InitDict(CPDF_Dictionary*& pFormDict, CPDF_Document* pDocument) { | 57 void InitDict(CPDF_Dictionary*& pFormDict, CPDF_Document* pDocument) { |
| 58 if (!pDocument) | 58 if (!pDocument) |
| 59 return; | 59 return; |
| 60 | 60 |
| 61 if (!pFormDict) { | 61 if (!pFormDict) { |
| 62 pFormDict = new CPDF_Dictionary(pDocument->GetByteStringPool()); | 62 pFormDict = |
| 63 pDocument->GetRoot()->SetReferenceFor( | 63 pDocument->AddIndirectDictionary(pDocument->GetByteStringPool()); |
| 64 "AcroForm", pDocument, pDocument->AddIndirectObject(pFormDict)); | 64 pDocument->GetRoot()->SetReferenceFor("AcroForm", pDocument, pFormDict); |
| 65 } | 65 } |
| 66 | 66 |
| 67 CFX_ByteString csDA; | 67 CFX_ByteString csDA; |
| 68 if (!pFormDict->KeyExist("DR")) { | 68 if (!pFormDict->KeyExist("DR")) { |
| 69 CFX_ByteString csBaseName; | 69 CFX_ByteString csBaseName; |
| 70 CFX_ByteString csDefault; | 70 CFX_ByteString csDefault; |
| 71 uint8_t charSet = CPDF_InterForm::GetNativeCharSet(); | 71 uint8_t charSet = CPDF_InterForm::GetNativeCharSet(); |
| 72 CPDF_Font* pFont = CPDF_InterForm::AddStandardFont(pDocument, "Helvetica"); | 72 CPDF_Font* pFont = CPDF_InterForm::AddStandardFont(pDocument, "Helvetica"); |
| 73 if (pFont) { | 73 if (pFont) { |
| 74 AddFont(pFormDict, pDocument, pFont, csBaseName); | 74 AddFont(pFormDict, pDocument, pFont, csBaseName); |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 if (!pFonts) { | 267 if (!pFonts) { |
| 268 pFonts = new CPDF_Dictionary(pDocument->GetByteStringPool()); | 268 pFonts = new CPDF_Dictionary(pDocument->GetByteStringPool()); |
| 269 pDR->SetFor("Font", pFonts); | 269 pDR->SetFor("Font", pFonts); |
| 270 } | 270 } |
| 271 if (csNameTag.IsEmpty()) | 271 if (csNameTag.IsEmpty()) |
| 272 csNameTag = pFont->GetBaseFont(); | 272 csNameTag = pFont->GetBaseFont(); |
| 273 | 273 |
| 274 csNameTag.Remove(' '); | 274 csNameTag.Remove(' '); |
| 275 csNameTag = CPDF_InterForm::GenerateNewResourceName(pDR, "Font", 4, | 275 csNameTag = CPDF_InterForm::GenerateNewResourceName(pDR, "Font", 4, |
| 276 csNameTag.c_str()); | 276 csNameTag.c_str()); |
| 277 pFonts->SetReferenceFor(csNameTag, pDocument, | 277 pFonts->SetReferenceFor(csNameTag, pDocument, pFont->GetFontDict()); |
| 278 pFont->GetFontDict()->GetObjNum()); | |
| 279 } | 278 } |
| 280 | 279 |
| 281 CPDF_Font* AddNativeFont(CPDF_Dictionary*& pFormDict, | 280 CPDF_Font* AddNativeFont(CPDF_Dictionary*& pFormDict, |
| 282 CPDF_Document* pDocument, | 281 CPDF_Document* pDocument, |
| 283 uint8_t charSet, | 282 uint8_t charSet, |
| 284 CFX_ByteString& csNameTag) { | 283 CFX_ByteString& csNameTag) { |
| 285 if (!pFormDict) | 284 if (!pFormDict) |
| 286 InitDict(pFormDict, pDocument); | 285 InitDict(pFormDict, pDocument); |
| 287 | 286 |
| 288 CFX_ByteString csTemp; | 287 CFX_ByteString csTemp; |
| (...skipping 1024 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1313 else if (iType == FIELDTYPE_LISTBOX) | 1312 else if (iType == FIELDTYPE_LISTBOX) |
| 1314 m_pFormNotify->AfterSelectionChange(pField); | 1313 m_pFormNotify->AfterSelectionChange(pField); |
| 1315 else if (iType == FIELDTYPE_COMBOBOX || iType == FIELDTYPE_TEXTFIELD) | 1314 else if (iType == FIELDTYPE_COMBOBOX || iType == FIELDTYPE_TEXTFIELD) |
| 1316 m_pFormNotify->AfterValueChange(pField); | 1315 m_pFormNotify->AfterValueChange(pField); |
| 1317 } | 1316 } |
| 1318 } | 1317 } |
| 1319 | 1318 |
| 1320 void CPDF_InterForm::SetFormNotify(IPDF_FormNotify* pNotify) { | 1319 void CPDF_InterForm::SetFormNotify(IPDF_FormNotify* pNotify) { |
| 1321 m_pFormNotify = pNotify; | 1320 m_pFormNotify = pNotify; |
| 1322 } | 1321 } |
| OLD | NEW |