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

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

Issue 2334323005: Rename dictionary set and get methods (Closed)
Patch Set: Created 4 years, 3 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/cpdf_iconfit.cpp ('k') | core/fpdfdoc/cpdf_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 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/fpdf_font/include/cpdf_font.h" 9 #include "core/fpdfapi/fpdf_font/include/cpdf_font.h"
10 #include "core/fpdfapi/fpdf_font/include/cpdf_fontencoding.h" 10 #include "core/fpdfapi/fpdf_font/include/cpdf_fontencoding.h"
(...skipping 18 matching lines...) Expand all
29 uint16_t m_codePage; 29 uint16_t m_codePage;
30 } g_fieldEncoding[] = { 30 } g_fieldEncoding[] = {
31 {"BigFive", 950}, 31 {"BigFive", 950},
32 {"GBK", 936}, 32 {"GBK", 936},
33 {"Shift-JIS", 932}, 33 {"Shift-JIS", 932},
34 {"UHC", 949}, 34 {"UHC", 949},
35 }; 35 };
36 36
37 CFX_WideString GetFieldValue(const CPDF_Dictionary& pFieldDict, 37 CFX_WideString GetFieldValue(const CPDF_Dictionary& pFieldDict,
38 const CFX_ByteString& bsEncoding) { 38 const CFX_ByteString& bsEncoding) {
39 const CFX_ByteString csBValue = pFieldDict.GetStringBy("V"); 39 const CFX_ByteString csBValue = pFieldDict.GetStringFor("V");
40 for (const auto& encoding : g_fieldEncoding) { 40 for (const auto& encoding : g_fieldEncoding) {
41 if (bsEncoding == encoding.m_name) 41 if (bsEncoding == encoding.m_name)
42 return CFX_WideString::FromCodePage(csBValue.AsStringC(), 42 return CFX_WideString::FromCodePage(csBValue.AsStringC(),
43 encoding.m_codePage); 43 encoding.m_codePage);
44 } 44 }
45 CFX_ByteString csTemp = csBValue.Left(2); 45 CFX_ByteString csTemp = csBValue.Left(2);
46 if (csTemp == "\xFF\xFE" || csTemp == "\xFE\xFF") 46 if (csTemp == "\xFF\xFE" || csTemp == "\xFE\xFF")
47 return PDF_DecodeText(csBValue); 47 return PDF_DecodeText(csBValue);
48 return CFX_WideString::FromLocal(csBValue.AsStringC()); 48 return CFX_WideString::FromLocal(csBValue.AsStringC());
49 } 49 }
50 50
51 void AddFont(CPDF_Dictionary*& pFormDict, 51 void AddFont(CPDF_Dictionary*& pFormDict,
52 CPDF_Document* pDocument, 52 CPDF_Document* pDocument,
53 const CPDF_Font* pFont, 53 const CPDF_Font* pFont,
54 CFX_ByteString& csNameTag); 54 CFX_ByteString& csNameTag);
55 55
56 void InitDict(CPDF_Dictionary*& pFormDict, CPDF_Document* pDocument) { 56 void InitDict(CPDF_Dictionary*& pFormDict, CPDF_Document* pDocument) {
57 if (!pDocument) 57 if (!pDocument)
58 return; 58 return;
59 59
60 if (!pFormDict) { 60 if (!pFormDict) {
61 pFormDict = new CPDF_Dictionary; 61 pFormDict = new CPDF_Dictionary;
62 uint32_t dwObjNum = pDocument->AddIndirectObject(pFormDict); 62 uint32_t dwObjNum = pDocument->AddIndirectObject(pFormDict);
63 CPDF_Dictionary* pRoot = pDocument->GetRoot(); 63 CPDF_Dictionary* pRoot = pDocument->GetRoot();
64 pRoot->SetAtReference("AcroForm", pDocument, dwObjNum); 64 pRoot->SetReferenceFor("AcroForm", pDocument, dwObjNum);
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 12 matching lines...) Expand all
87 } 87 }
88 } 88 }
89 if (pFont) 89 if (pFont)
90 csDA = "/" + PDF_NameEncode(csDefault) + " 0 Tf"; 90 csDA = "/" + PDF_NameEncode(csDefault) + " 0 Tf";
91 } 91 }
92 if (!csDA.IsEmpty()) 92 if (!csDA.IsEmpty())
93 csDA += " "; 93 csDA += " ";
94 94
95 csDA += "0 g"; 95 csDA += "0 g";
96 if (!pFormDict->KeyExist("DA")) 96 if (!pFormDict->KeyExist("DA"))
97 pFormDict->SetAtString("DA", csDA); 97 pFormDict->SetStringFor("DA", csDA);
98 } 98 }
99 99
100 uint32_t CountFonts(CPDF_Dictionary* pFormDict) { 100 uint32_t CountFonts(CPDF_Dictionary* pFormDict) {
101 if (!pFormDict) 101 if (!pFormDict)
102 return 0; 102 return 0;
103 103
104 CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); 104 CPDF_Dictionary* pDR = pFormDict->GetDictFor("DR");
105 if (!pDR) 105 if (!pDR)
106 return 0; 106 return 0;
107 107
108 CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); 108 CPDF_Dictionary* pFonts = pDR->GetDictFor("Font");
109 if (!pFonts) 109 if (!pFonts)
110 return 0; 110 return 0;
111 111
112 uint32_t dwCount = 0; 112 uint32_t dwCount = 0;
113 for (const auto& it : *pFonts) { 113 for (const auto& it : *pFonts) {
114 CPDF_Object* pObj = it.second; 114 CPDF_Object* pObj = it.second;
115 if (!pObj) 115 if (!pObj)
116 continue; 116 continue;
117 117
118 if (CPDF_Dictionary* pDirect = ToDictionary(pObj->GetDirect())) { 118 if (CPDF_Dictionary* pDirect = ToDictionary(pObj->GetDirect())) {
119 if (pDirect->GetStringBy("Type") == "Font") 119 if (pDirect->GetStringFor("Type") == "Font")
120 dwCount++; 120 dwCount++;
121 } 121 }
122 } 122 }
123 return dwCount; 123 return dwCount;
124 } 124 }
125 125
126 CPDF_Font* GetFont(CPDF_Dictionary* pFormDict, 126 CPDF_Font* GetFont(CPDF_Dictionary* pFormDict,
127 CPDF_Document* pDocument, 127 CPDF_Document* pDocument,
128 uint32_t index, 128 uint32_t index,
129 CFX_ByteString& csNameTag) { 129 CFX_ByteString& csNameTag) {
130 if (!pFormDict) 130 if (!pFormDict)
131 return nullptr; 131 return nullptr;
132 132
133 CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); 133 CPDF_Dictionary* pDR = pFormDict->GetDictFor("DR");
134 if (!pDR) 134 if (!pDR)
135 return nullptr; 135 return nullptr;
136 136
137 CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); 137 CPDF_Dictionary* pFonts = pDR->GetDictFor("Font");
138 if (!pFonts) 138 if (!pFonts)
139 return nullptr; 139 return nullptr;
140 140
141 uint32_t dwCount = 0; 141 uint32_t dwCount = 0;
142 for (const auto& it : *pFonts) { 142 for (const auto& it : *pFonts) {
143 const CFX_ByteString& csKey = it.first; 143 const CFX_ByteString& csKey = it.first;
144 CPDF_Object* pObj = it.second; 144 CPDF_Object* pObj = it.second;
145 if (!pObj) 145 if (!pObj)
146 continue; 146 continue;
147 147
148 CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect()); 148 CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect());
149 if (!pElement) 149 if (!pElement)
150 continue; 150 continue;
151 if (pElement->GetStringBy("Type") != "Font") 151 if (pElement->GetStringFor("Type") != "Font")
152 continue; 152 continue;
153 if (dwCount == index) { 153 if (dwCount == index) {
154 csNameTag = csKey; 154 csNameTag = csKey;
155 return pDocument->LoadFont(pElement); 155 return pDocument->LoadFont(pElement);
156 } 156 }
157 dwCount++; 157 dwCount++;
158 } 158 }
159 return nullptr; 159 return nullptr;
160 } 160 }
161 161
162 CPDF_Font* GetFont(CPDF_Dictionary* pFormDict, 162 CPDF_Font* GetFont(CPDF_Dictionary* pFormDict,
163 CPDF_Document* pDocument, 163 CPDF_Document* pDocument,
164 CFX_ByteString csNameTag) { 164 CFX_ByteString csNameTag) {
165 CFX_ByteString csAlias = PDF_NameDecode(csNameTag); 165 CFX_ByteString csAlias = PDF_NameDecode(csNameTag);
166 if (!pFormDict || csAlias.IsEmpty()) 166 if (!pFormDict || csAlias.IsEmpty())
167 return nullptr; 167 return nullptr;
168 168
169 CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); 169 CPDF_Dictionary* pDR = pFormDict->GetDictFor("DR");
170 if (!pDR) 170 if (!pDR)
171 return nullptr; 171 return nullptr;
172 172
173 CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); 173 CPDF_Dictionary* pFonts = pDR->GetDictFor("Font");
174 if (!pFonts) 174 if (!pFonts)
175 return nullptr; 175 return nullptr;
176 176
177 CPDF_Dictionary* pElement = pFonts->GetDictBy(csAlias); 177 CPDF_Dictionary* pElement = pFonts->GetDictFor(csAlias);
178 if (!pElement) 178 if (!pElement)
179 return nullptr; 179 return nullptr;
180 180
181 if (pElement->GetStringBy("Type") == "Font") 181 if (pElement->GetStringFor("Type") == "Font")
182 return pDocument->LoadFont(pElement); 182 return pDocument->LoadFont(pElement);
183 return nullptr; 183 return nullptr;
184 } 184 }
185 185
186 CPDF_Font* GetFont(CPDF_Dictionary* pFormDict, 186 CPDF_Font* GetFont(CPDF_Dictionary* pFormDict,
187 CPDF_Document* pDocument, 187 CPDF_Document* pDocument,
188 CFX_ByteString csFontName, 188 CFX_ByteString csFontName,
189 CFX_ByteString& csNameTag) { 189 CFX_ByteString& csNameTag) {
190 if (!pFormDict || csFontName.IsEmpty()) 190 if (!pFormDict || csFontName.IsEmpty())
191 return nullptr; 191 return nullptr;
192 192
193 CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); 193 CPDF_Dictionary* pDR = pFormDict->GetDictFor("DR");
194 if (!pDR) 194 if (!pDR)
195 return nullptr; 195 return nullptr;
196 196
197 CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); 197 CPDF_Dictionary* pFonts = pDR->GetDictFor("Font");
198 if (!pFonts) 198 if (!pFonts)
199 return nullptr; 199 return nullptr;
200 200
201 for (const auto& it : *pFonts) { 201 for (const auto& it : *pFonts) {
202 const CFX_ByteString& csKey = it.first; 202 const CFX_ByteString& csKey = it.first;
203 CPDF_Object* pObj = it.second; 203 CPDF_Object* pObj = it.second;
204 if (!pObj) 204 if (!pObj)
205 continue; 205 continue;
206 206
207 CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect()); 207 CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect());
208 if (!pElement) 208 if (!pElement)
209 continue; 209 continue;
210 if (pElement->GetStringBy("Type") != "Font") 210 if (pElement->GetStringFor("Type") != "Font")
211 continue; 211 continue;
212 212
213 CPDF_Font* pFind = pDocument->LoadFont(pElement); 213 CPDF_Font* pFind = pDocument->LoadFont(pElement);
214 if (!pFind) 214 if (!pFind)
215 continue; 215 continue;
216 216
217 CFX_ByteString csBaseFont; 217 CFX_ByteString csBaseFont;
218 csBaseFont = pFind->GetBaseFont(); 218 csBaseFont = pFind->GetBaseFont();
219 csBaseFont.Remove(' '); 219 csBaseFont.Remove(' ');
220 if (csBaseFont == csFontName) { 220 if (csBaseFont == csFontName) {
221 csNameTag = csKey; 221 csNameTag = csKey;
222 return pFind; 222 return pFind;
223 } 223 }
224 } 224 }
225 return nullptr; 225 return nullptr;
226 } 226 }
227 227
228 CPDF_Font* GetNativeFont(CPDF_Dictionary* pFormDict, 228 CPDF_Font* GetNativeFont(CPDF_Dictionary* pFormDict,
229 CPDF_Document* pDocument, 229 CPDF_Document* pDocument,
230 uint8_t charSet, 230 uint8_t charSet,
231 CFX_ByteString& csNameTag) { 231 CFX_ByteString& csNameTag) {
232 if (!pFormDict) 232 if (!pFormDict)
233 return nullptr; 233 return nullptr;
234 234
235 CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); 235 CPDF_Dictionary* pDR = pFormDict->GetDictFor("DR");
236 if (!pDR) 236 if (!pDR)
237 return nullptr; 237 return nullptr;
238 238
239 CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); 239 CPDF_Dictionary* pFonts = pDR->GetDictFor("Font");
240 if (!pFonts) 240 if (!pFonts)
241 return nullptr; 241 return nullptr;
242 242
243 for (const auto& it : *pFonts) { 243 for (const auto& it : *pFonts) {
244 const CFX_ByteString& csKey = it.first; 244 const CFX_ByteString& csKey = it.first;
245 CPDF_Object* pObj = it.second; 245 CPDF_Object* pObj = it.second;
246 if (!pObj) 246 if (!pObj)
247 continue; 247 continue;
248 248
249 CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect()); 249 CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect());
250 if (!pElement) 250 if (!pElement)
251 continue; 251 continue;
252 if (pElement->GetStringBy("Type") != "Font") 252 if (pElement->GetStringFor("Type") != "Font")
253 continue; 253 continue;
254 CPDF_Font* pFind = pDocument->LoadFont(pElement); 254 CPDF_Font* pFind = pDocument->LoadFont(pElement);
255 if (!pFind) 255 if (!pFind)
256 continue; 256 continue;
257 257
258 CFX_SubstFont* pSubst = pFind->GetSubstFont(); 258 CFX_SubstFont* pSubst = pFind->GetSubstFont();
259 if (!pSubst) 259 if (!pSubst)
260 continue; 260 continue;
261 261
262 if (pSubst->m_Charset == (int)charSet) { 262 if (pSubst->m_Charset == (int)charSet) {
263 csNameTag = csKey; 263 csNameTag = csKey;
264 return pFind; 264 return pFind;
265 } 265 }
266 } 266 }
267 return nullptr; 267 return nullptr;
268 } 268 }
269 269
270 CPDF_Font* GetDefaultFont(CPDF_Dictionary* pFormDict, 270 CPDF_Font* GetDefaultFont(CPDF_Dictionary* pFormDict,
271 CPDF_Document* pDocument) { 271 CPDF_Document* pDocument) {
272 if (!pFormDict) 272 if (!pFormDict)
273 return nullptr; 273 return nullptr;
274 274
275 CPDF_DefaultAppearance cDA(pFormDict->GetStringBy("DA")); 275 CPDF_DefaultAppearance cDA(pFormDict->GetStringFor("DA"));
276 CFX_ByteString csFontNameTag; 276 CFX_ByteString csFontNameTag;
277 FX_FLOAT fFontSize; 277 FX_FLOAT fFontSize;
278 cDA.GetFont(csFontNameTag, fFontSize); 278 cDA.GetFont(csFontNameTag, fFontSize);
279 return GetFont(pFormDict, pDocument, csFontNameTag); 279 return GetFont(pFormDict, pDocument, csFontNameTag);
280 } 280 }
281 281
282 FX_BOOL FindFont(CPDF_Dictionary* pFormDict, 282 FX_BOOL FindFont(CPDF_Dictionary* pFormDict,
283 const CPDF_Font* pFont, 283 const CPDF_Font* pFont,
284 CFX_ByteString& csNameTag) { 284 CFX_ByteString& csNameTag) {
285 if (!pFormDict || !pFont) 285 if (!pFormDict || !pFont)
286 return FALSE; 286 return FALSE;
287 287
288 CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); 288 CPDF_Dictionary* pDR = pFormDict->GetDictFor("DR");
289 if (!pDR) 289 if (!pDR)
290 return FALSE; 290 return FALSE;
291 291
292 CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); 292 CPDF_Dictionary* pFonts = pDR->GetDictFor("Font");
293 if (!pFonts) 293 if (!pFonts)
294 return FALSE; 294 return FALSE;
295 295
296 for (const auto& it : *pFonts) { 296 for (const auto& it : *pFonts) {
297 const CFX_ByteString& csKey = it.first; 297 const CFX_ByteString& csKey = it.first;
298 CPDF_Object* pObj = it.second; 298 CPDF_Object* pObj = it.second;
299 if (!pObj) 299 if (!pObj)
300 continue; 300 continue;
301 301
302 CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect()); 302 CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect());
303 if (!pElement) 303 if (!pElement)
304 continue; 304 continue;
305 if (pElement->GetStringBy("Type") != "Font") 305 if (pElement->GetStringFor("Type") != "Font")
306 continue; 306 continue;
307 if (pFont->GetFontDict() == pElement) { 307 if (pFont->GetFontDict() == pElement) {
308 csNameTag = csKey; 308 csNameTag = csKey;
309 return TRUE; 309 return TRUE;
310 } 310 }
311 } 311 }
312 return FALSE; 312 return FALSE;
313 } 313 }
314 314
315 CPDF_Font* GetNativeFont(CPDF_Dictionary* pFormDict, 315 CPDF_Font* GetNativeFont(CPDF_Dictionary* pFormDict,
(...skipping 13 matching lines...) Expand all
329 } 329 }
330 330
331 FX_BOOL FindFont(CPDF_Dictionary* pFormDict, 331 FX_BOOL FindFont(CPDF_Dictionary* pFormDict,
332 CPDF_Document* pDocument, 332 CPDF_Document* pDocument,
333 CFX_ByteString csFontName, 333 CFX_ByteString csFontName,
334 CPDF_Font*& pFont, 334 CPDF_Font*& pFont,
335 CFX_ByteString& csNameTag) { 335 CFX_ByteString& csNameTag) {
336 if (!pFormDict) 336 if (!pFormDict)
337 return FALSE; 337 return FALSE;
338 338
339 CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); 339 CPDF_Dictionary* pDR = pFormDict->GetDictFor("DR");
340 if (!pDR) 340 if (!pDR)
341 return FALSE; 341 return FALSE;
342 342
343 CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); 343 CPDF_Dictionary* pFonts = pDR->GetDictFor("Font");
344 if (!pFonts) 344 if (!pFonts)
345 return FALSE; 345 return FALSE;
346 if (csFontName.GetLength() > 0) 346 if (csFontName.GetLength() > 0)
347 csFontName.Remove(' '); 347 csFontName.Remove(' ');
348 348
349 for (const auto& it : *pFonts) { 349 for (const auto& it : *pFonts) {
350 const CFX_ByteString& csKey = it.first; 350 const CFX_ByteString& csKey = it.first;
351 CPDF_Object* pObj = it.second; 351 CPDF_Object* pObj = it.second;
352 if (!pObj) 352 if (!pObj)
353 continue; 353 continue;
354 354
355 CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect()); 355 CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect());
356 if (!pElement) 356 if (!pElement)
357 continue; 357 continue;
358 if (pElement->GetStringBy("Type") != "Font") 358 if (pElement->GetStringFor("Type") != "Font")
359 continue; 359 continue;
360 360
361 pFont = pDocument->LoadFont(pElement); 361 pFont = pDocument->LoadFont(pElement);
362 if (!pFont) 362 if (!pFont)
363 continue; 363 continue;
364 364
365 CFX_ByteString csBaseFont; 365 CFX_ByteString csBaseFont;
366 csBaseFont = pFont->GetBaseFont(); 366 csBaseFont = pFont->GetBaseFont();
367 csBaseFont.Remove(' '); 367 csBaseFont.Remove(' ');
368 if (csBaseFont == csFontName) { 368 if (csBaseFont == csFontName) {
(...skipping 14 matching lines...) Expand all
383 InitDict(pFormDict, pDocument); 383 InitDict(pFormDict, pDocument);
384 384
385 CFX_ByteString csTag; 385 CFX_ByteString csTag;
386 if (FindFont(pFormDict, pFont, csTag)) { 386 if (FindFont(pFormDict, pFont, csTag)) {
387 csNameTag = csTag; 387 csNameTag = csTag;
388 return; 388 return;
389 } 389 }
390 if (!pFormDict) 390 if (!pFormDict)
391 InitDict(pFormDict, pDocument); 391 InitDict(pFormDict, pDocument);
392 392
393 CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); 393 CPDF_Dictionary* pDR = pFormDict->GetDictFor("DR");
394 if (!pDR) { 394 if (!pDR) {
395 pDR = new CPDF_Dictionary; 395 pDR = new CPDF_Dictionary;
396 pFormDict->SetAt("DR", pDR); 396 pFormDict->SetFor("DR", pDR);
397 } 397 }
398 CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); 398 CPDF_Dictionary* pFonts = pDR->GetDictFor("Font");
399 if (!pFonts) { 399 if (!pFonts) {
400 pFonts = new CPDF_Dictionary; 400 pFonts = new CPDF_Dictionary;
401 pDR->SetAt("Font", pFonts); 401 pDR->SetFor("Font", pFonts);
402 } 402 }
403 if (csNameTag.IsEmpty()) 403 if (csNameTag.IsEmpty())
404 csNameTag = pFont->GetBaseFont(); 404 csNameTag = pFont->GetBaseFont();
405 405
406 csNameTag.Remove(' '); 406 csNameTag.Remove(' ');
407 csNameTag = CPDF_InterForm::GenerateNewResourceName(pDR, "Font", 4, 407 csNameTag = CPDF_InterForm::GenerateNewResourceName(pDR, "Font", 4,
408 csNameTag.c_str()); 408 csNameTag.c_str());
409 pFonts->SetAtReference(csNameTag, pDocument, pFont->GetFontDict()); 409 pFonts->SetReferenceFor(csNameTag, pDocument, pFont->GetFontDict());
410 } 410 }
411 411
412 CPDF_Font* AddNativeFont(CPDF_Dictionary*& pFormDict, 412 CPDF_Font* AddNativeFont(CPDF_Dictionary*& pFormDict,
413 CPDF_Document* pDocument, 413 CPDF_Document* pDocument,
414 uint8_t charSet, 414 uint8_t charSet,
415 CFX_ByteString& csNameTag) { 415 CFX_ByteString& csNameTag) {
416 if (!pFormDict) 416 if (!pFormDict)
417 InitDict(pFormDict, pDocument); 417 InitDict(pFormDict, pDocument);
418 418
419 CFX_ByteString csTemp; 419 CFX_ByteString csTemp;
(...skipping 15 matching lines...) Expand all
435 } 435 }
436 436
437 void RemoveFont(CPDF_Dictionary* pFormDict, const CPDF_Font* pFont) { 437 void RemoveFont(CPDF_Dictionary* pFormDict, const CPDF_Font* pFont) {
438 if (!pFormDict || !pFont) 438 if (!pFormDict || !pFont)
439 return; 439 return;
440 440
441 CFX_ByteString csTag; 441 CFX_ByteString csTag;
442 if (!FindFont(pFormDict, pFont, csTag)) 442 if (!FindFont(pFormDict, pFont, csTag))
443 return; 443 return;
444 444
445 CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); 445 CPDF_Dictionary* pDR = pFormDict->GetDictFor("DR");
446 CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); 446 CPDF_Dictionary* pFonts = pDR->GetDictFor("Font");
447 pFonts->RemoveAt(csTag); 447 pFonts->RemoveFor(csTag);
448 } 448 }
449 449
450 void RemoveFont(CPDF_Dictionary* pFormDict, CFX_ByteString csNameTag) { 450 void RemoveFont(CPDF_Dictionary* pFormDict, CFX_ByteString csNameTag) {
451 if (!pFormDict || csNameTag.IsEmpty()) 451 if (!pFormDict || csNameTag.IsEmpty())
452 return; 452 return;
453 453
454 CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); 454 CPDF_Dictionary* pDR = pFormDict->GetDictFor("DR");
455 if (!pDR) 455 if (!pDR)
456 return; 456 return;
457 457
458 CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); 458 CPDF_Dictionary* pFonts = pDR->GetDictFor("Font");
459 if (!pFonts) 459 if (!pFonts)
460 return; 460 return;
461 461
462 pFonts->RemoveAt(csNameTag); 462 pFonts->RemoveFor(csNameTag);
463 } 463 }
464 464
465 class CFieldNameExtractor { 465 class CFieldNameExtractor {
466 public: 466 public:
467 explicit CFieldNameExtractor(const CFX_WideString& full_name) 467 explicit CFieldNameExtractor(const CFX_WideString& full_name)
468 : m_FullName(full_name) { 468 : m_FullName(full_name) {
469 m_pCur = m_FullName.c_str(); 469 m_pCur = m_FullName.c_str();
470 m_pEnd = m_pCur + m_FullName.GetLength(); 470 m_pEnd = m_pCur + m_FullName.GetLength();
471 } 471 }
472 472
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
808 808
809 CPDF_InterForm::CPDF_InterForm(CPDF_Document* pDocument) 809 CPDF_InterForm::CPDF_InterForm(CPDF_Document* pDocument)
810 : m_pDocument(pDocument), 810 : m_pDocument(pDocument),
811 m_pFormDict(nullptr), 811 m_pFormDict(nullptr),
812 m_pFieldTree(new CFieldTree), 812 m_pFieldTree(new CFieldTree),
813 m_pFormNotify(nullptr) { 813 m_pFormNotify(nullptr) {
814 CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); 814 CPDF_Dictionary* pRoot = m_pDocument->GetRoot();
815 if (!pRoot) 815 if (!pRoot)
816 return; 816 return;
817 817
818 m_pFormDict = pRoot->GetDictBy("AcroForm"); 818 m_pFormDict = pRoot->GetDictFor("AcroForm");
819 if (!m_pFormDict) 819 if (!m_pFormDict)
820 return; 820 return;
821 821
822 CPDF_Array* pFields = m_pFormDict->GetArrayBy("Fields"); 822 CPDF_Array* pFields = m_pFormDict->GetArrayFor("Fields");
823 if (!pFields) 823 if (!pFields)
824 return; 824 return;
825 825
826 for (size_t i = 0; i < pFields->GetCount(); i++) 826 for (size_t i = 0; i < pFields->GetCount(); i++)
827 LoadField(pFields->GetDictAt(i)); 827 LoadField(pFields->GetDictAt(i));
828 } 828 }
829 829
830 CPDF_InterForm::~CPDF_InterForm() { 830 CPDF_InterForm::~CPDF_InterForm() {
831 for (auto it : m_ControlMap) 831 for (auto it : m_ControlMap)
832 delete it.second; 832 delete it.second;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
873 while (m < iMinLen) { 873 while (m < iMinLen) {
874 csTmp += '0' + m % 10; 874 csTmp += '0' + m % 10;
875 m++; 875 m++;
876 } 876 }
877 } else { 877 } else {
878 m = iCount; 878 m = iCount;
879 } 879 }
880 if (!pResDict) 880 if (!pResDict)
881 return csTmp; 881 return csTmp;
882 882
883 CPDF_Dictionary* pDict = pResDict->GetDictBy(csType); 883 CPDF_Dictionary* pDict = pResDict->GetDictFor(csType);
884 if (!pDict) 884 if (!pDict)
885 return csTmp; 885 return csTmp;
886 886
887 int num = 0; 887 int num = 0;
888 CFX_ByteString bsNum; 888 CFX_ByteString bsNum;
889 while (TRUE) { 889 while (TRUE) {
890 CFX_ByteString csKey = csTmp + bsNum; 890 CFX_ByteString csKey = csTmp + bsNum;
891 if (!pDict->KeyExist(csKey)) 891 if (!pDict->KeyExist(csKey))
892 return csKey; 892 return csKey;
893 if (m < iCount) 893 if (m < iCount)
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
1124 return nullptr; 1124 return nullptr;
1125 1125
1126 CFX_WideString csWName = FPDF_GetFullName(pFieldDict); 1126 CFX_WideString csWName = FPDF_GetFullName(pFieldDict);
1127 return m_pFieldTree->GetField(csWName); 1127 return m_pFieldTree->GetField(csWName);
1128 } 1128 }
1129 1129
1130 CPDF_FormControl* CPDF_InterForm::GetControlAtPoint(CPDF_Page* pPage, 1130 CPDF_FormControl* CPDF_InterForm::GetControlAtPoint(CPDF_Page* pPage,
1131 FX_FLOAT pdf_x, 1131 FX_FLOAT pdf_x,
1132 FX_FLOAT pdf_y, 1132 FX_FLOAT pdf_y,
1133 int* z_order) const { 1133 int* z_order) const {
1134 CPDF_Array* pAnnotList = pPage->m_pFormDict->GetArrayBy("Annots"); 1134 CPDF_Array* pAnnotList = pPage->m_pFormDict->GetArrayFor("Annots");
1135 if (!pAnnotList) 1135 if (!pAnnotList)
1136 return nullptr; 1136 return nullptr;
1137 1137
1138 for (size_t i = pAnnotList->GetCount(); i > 0; --i) { 1138 for (size_t i = pAnnotList->GetCount(); i > 0; --i) {
1139 size_t annot_index = i - 1; 1139 size_t annot_index = i - 1;
1140 CPDF_Dictionary* pAnnot = pAnnotList->GetDictAt(annot_index); 1140 CPDF_Dictionary* pAnnot = pAnnotList->GetDictAt(annot_index);
1141 if (!pAnnot) 1141 if (!pAnnot)
1142 continue; 1142 continue;
1143 1143
1144 const auto it = m_ControlMap.find(pAnnot); 1144 const auto it = m_ControlMap.find(pAnnot);
(...skipping 12 matching lines...) Expand all
1157 return nullptr; 1157 return nullptr;
1158 } 1158 }
1159 1159
1160 CPDF_FormControl* CPDF_InterForm::GetControlByDict( 1160 CPDF_FormControl* CPDF_InterForm::GetControlByDict(
1161 const CPDF_Dictionary* pWidgetDict) const { 1161 const CPDF_Dictionary* pWidgetDict) const {
1162 const auto it = m_ControlMap.find(pWidgetDict); 1162 const auto it = m_ControlMap.find(pWidgetDict);
1163 return it != m_ControlMap.end() ? it->second : nullptr; 1163 return it != m_ControlMap.end() ? it->second : nullptr;
1164 } 1164 }
1165 1165
1166 FX_BOOL CPDF_InterForm::NeedConstructAP() const { 1166 FX_BOOL CPDF_InterForm::NeedConstructAP() const {
1167 return m_pFormDict && m_pFormDict->GetBooleanBy("NeedAppearances"); 1167 return m_pFormDict && m_pFormDict->GetBooleanFor("NeedAppearances");
1168 } 1168 }
1169 1169
1170 int CPDF_InterForm::CountFieldsInCalculationOrder() { 1170 int CPDF_InterForm::CountFieldsInCalculationOrder() {
1171 if (!m_pFormDict) 1171 if (!m_pFormDict)
1172 return 0; 1172 return 0;
1173 1173
1174 CPDF_Array* pArray = m_pFormDict->GetArrayBy("CO"); 1174 CPDF_Array* pArray = m_pFormDict->GetArrayFor("CO");
1175 return pArray ? pArray->GetCount() : 0; 1175 return pArray ? pArray->GetCount() : 0;
1176 } 1176 }
1177 1177
1178 CPDF_FormField* CPDF_InterForm::GetFieldInCalculationOrder(int index) { 1178 CPDF_FormField* CPDF_InterForm::GetFieldInCalculationOrder(int index) {
1179 if (!m_pFormDict || index < 0) 1179 if (!m_pFormDict || index < 0)
1180 return nullptr; 1180 return nullptr;
1181 1181
1182 CPDF_Array* pArray = m_pFormDict->GetArrayBy("CO"); 1182 CPDF_Array* pArray = m_pFormDict->GetArrayFor("CO");
1183 if (!pArray) 1183 if (!pArray)
1184 return nullptr; 1184 return nullptr;
1185 1185
1186 CPDF_Dictionary* pElement = ToDictionary(pArray->GetDirectObjectAt(index)); 1186 CPDF_Dictionary* pElement = ToDictionary(pArray->GetDirectObjectAt(index));
1187 return pElement ? GetFieldByDict(pElement) : nullptr; 1187 return pElement ? GetFieldByDict(pElement) : nullptr;
1188 } 1188 }
1189 1189
1190 int CPDF_InterForm::FindFieldInCalculationOrder(const CPDF_FormField* pField) { 1190 int CPDF_InterForm::FindFieldInCalculationOrder(const CPDF_FormField* pField) {
1191 if (!m_pFormDict || !pField) 1191 if (!m_pFormDict || !pField)
1192 return -1; 1192 return -1;
1193 1193
1194 CPDF_Array* pArray = m_pFormDict->GetArrayBy("CO"); 1194 CPDF_Array* pArray = m_pFormDict->GetArrayFor("CO");
1195 if (!pArray) 1195 if (!pArray)
1196 return -1; 1196 return -1;
1197 1197
1198 for (size_t i = 0; i < pArray->GetCount(); i++) { 1198 for (size_t i = 0; i < pArray->GetCount(); i++) {
1199 CPDF_Object* pElement = pArray->GetDirectObjectAt(i); 1199 CPDF_Object* pElement = pArray->GetDirectObjectAt(i);
1200 if (pElement == pField->m_pDict) 1200 if (pElement == pField->m_pDict)
1201 return i; 1201 return i;
1202 } 1202 }
1203 return -1; 1203 return -1;
1204 } 1204 }
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1259 RemoveFont(m_pFormDict, pFont); 1259 RemoveFont(m_pFormDict, pFont);
1260 } 1260 }
1261 1261
1262 void CPDF_InterForm::RemoveFormFont(CFX_ByteString csNameTag) { 1262 void CPDF_InterForm::RemoveFormFont(CFX_ByteString csNameTag) {
1263 RemoveFont(m_pFormDict, csNameTag); 1263 RemoveFont(m_pFormDict, csNameTag);
1264 } 1264 }
1265 1265
1266 CPDF_DefaultAppearance CPDF_InterForm::GetDefaultAppearance() { 1266 CPDF_DefaultAppearance CPDF_InterForm::GetDefaultAppearance() {
1267 if (!m_pFormDict) 1267 if (!m_pFormDict)
1268 return CPDF_DefaultAppearance(); 1268 return CPDF_DefaultAppearance();
1269 return CPDF_DefaultAppearance(m_pFormDict->GetStringBy("DA")); 1269 return CPDF_DefaultAppearance(m_pFormDict->GetStringFor("DA"));
1270 } 1270 }
1271 1271
1272 CPDF_Font* CPDF_InterForm::GetDefaultFormFont() { 1272 CPDF_Font* CPDF_InterForm::GetDefaultFormFont() {
1273 return GetDefaultFont(m_pFormDict, m_pDocument); 1273 return GetDefaultFont(m_pFormDict, m_pDocument);
1274 } 1274 }
1275 1275
1276 int CPDF_InterForm::GetFormAlignment() { 1276 int CPDF_InterForm::GetFormAlignment() {
1277 return m_pFormDict ? m_pFormDict->GetIntegerBy("Q", 0) : 0; 1277 return m_pFormDict ? m_pFormDict->GetIntegerFor("Q", 0) : 0;
1278 } 1278 }
1279 1279
1280 bool CPDF_InterForm::ResetForm(const std::vector<CPDF_FormField*>& fields, 1280 bool CPDF_InterForm::ResetForm(const std::vector<CPDF_FormField*>& fields,
1281 bool bIncludeOrExclude, 1281 bool bIncludeOrExclude,
1282 bool bNotify) { 1282 bool bNotify) {
1283 if (bNotify && m_pFormNotify && m_pFormNotify->BeforeFormReset(this) < 0) 1283 if (bNotify && m_pFormNotify && m_pFormNotify->BeforeFormReset(this) < 0)
1284 return false; 1284 return false;
1285 1285
1286 int nCount = m_pFieldTree->m_Root.CountFields(); 1286 int nCount = m_pFieldTree->m_Root.CountFields();
1287 for (int i = 0; i < nCount; ++i) { 1287 for (int i = 0; i < nCount; ++i) {
(...skipping 26 matching lines...) Expand all
1314 return true; 1314 return true;
1315 } 1315 }
1316 1316
1317 void CPDF_InterForm::LoadField(CPDF_Dictionary* pFieldDict, int nLevel) { 1317 void CPDF_InterForm::LoadField(CPDF_Dictionary* pFieldDict, int nLevel) {
1318 if (nLevel > nMaxRecursion) 1318 if (nLevel > nMaxRecursion)
1319 return; 1319 return;
1320 if (!pFieldDict) 1320 if (!pFieldDict)
1321 return; 1321 return;
1322 1322
1323 uint32_t dwParentObjNum = pFieldDict->GetObjNum(); 1323 uint32_t dwParentObjNum = pFieldDict->GetObjNum();
1324 CPDF_Array* pKids = pFieldDict->GetArrayBy("Kids"); 1324 CPDF_Array* pKids = pFieldDict->GetArrayFor("Kids");
1325 if (!pKids) { 1325 if (!pKids) {
1326 AddTerminalField(pFieldDict); 1326 AddTerminalField(pFieldDict);
1327 return; 1327 return;
1328 } 1328 }
1329 1329
1330 CPDF_Dictionary* pFirstKid = pKids->GetDictAt(0); 1330 CPDF_Dictionary* pFirstKid = pKids->GetDictAt(0);
1331 if (!pFirstKid) 1331 if (!pFirstKid)
1332 return; 1332 return;
1333 1333
1334 if (pFirstKid->KeyExist("T") || pFirstKid->KeyExist("Kids")) { 1334 if (pFirstKid->KeyExist("T") || pFirstKid->KeyExist("Kids")) {
1335 for (size_t i = 0; i < pKids->GetCount(); i++) { 1335 for (size_t i = 0; i < pKids->GetCount(); i++) {
1336 CPDF_Dictionary* pChildDict = pKids->GetDictAt(i); 1336 CPDF_Dictionary* pChildDict = pKids->GetDictAt(i);
1337 if (pChildDict) { 1337 if (pChildDict) {
1338 if (pChildDict->GetObjNum() != dwParentObjNum) 1338 if (pChildDict->GetObjNum() != dwParentObjNum)
1339 LoadField(pChildDict, nLevel + 1); 1339 LoadField(pChildDict, nLevel + 1);
1340 } 1340 }
1341 } 1341 }
1342 } else { 1342 } else {
1343 AddTerminalField(pFieldDict); 1343 AddTerminalField(pFieldDict);
1344 } 1344 }
1345 } 1345 }
1346 1346
1347 FX_BOOL CPDF_InterForm::HasXFAForm() const { 1347 FX_BOOL CPDF_InterForm::HasXFAForm() const {
1348 return m_pFormDict && m_pFormDict->GetArrayBy("XFA"); 1348 return m_pFormDict && m_pFormDict->GetArrayFor("XFA");
1349 } 1349 }
1350 1350
1351 void CPDF_InterForm::FixPageFields(const CPDF_Page* pPage) { 1351 void CPDF_InterForm::FixPageFields(const CPDF_Page* pPage) {
1352 CPDF_Dictionary* pPageDict = pPage->m_pFormDict; 1352 CPDF_Dictionary* pPageDict = pPage->m_pFormDict;
1353 if (!pPageDict) 1353 if (!pPageDict)
1354 return; 1354 return;
1355 1355
1356 CPDF_Array* pAnnots = pPageDict->GetArrayBy("Annots"); 1356 CPDF_Array* pAnnots = pPageDict->GetArrayFor("Annots");
1357 if (!pAnnots) 1357 if (!pAnnots)
1358 return; 1358 return;
1359 1359
1360 for (size_t i = 0; i < pAnnots->GetCount(); i++) { 1360 for (size_t i = 0; i < pAnnots->GetCount(); i++) {
1361 CPDF_Dictionary* pAnnot = pAnnots->GetDictAt(i); 1361 CPDF_Dictionary* pAnnot = pAnnots->GetDictAt(i);
1362 if (pAnnot && pAnnot->GetStringBy("Subtype") == "Widget") 1362 if (pAnnot && pAnnot->GetStringFor("Subtype") == "Widget")
1363 LoadField(pAnnot); 1363 LoadField(pAnnot);
1364 } 1364 }
1365 } 1365 }
1366 1366
1367 CPDF_FormField* CPDF_InterForm::AddTerminalField(CPDF_Dictionary* pFieldDict) { 1367 CPDF_FormField* CPDF_InterForm::AddTerminalField(CPDF_Dictionary* pFieldDict) {
1368 if (!pFieldDict->KeyExist("T")) 1368 if (!pFieldDict->KeyExist("T"))
1369 return nullptr; 1369 return nullptr;
1370 1370
1371 CPDF_Dictionary* pDict = pFieldDict; 1371 CPDF_Dictionary* pDict = pFieldDict;
1372 CFX_WideString csWName = FPDF_GetFullName(pFieldDict); 1372 CFX_WideString csWName = FPDF_GetFullName(pFieldDict);
1373 if (csWName.IsEmpty()) 1373 if (csWName.IsEmpty())
1374 return nullptr; 1374 return nullptr;
1375 1375
1376 CPDF_FormField* pField = nullptr; 1376 CPDF_FormField* pField = nullptr;
1377 pField = m_pFieldTree->GetField(csWName); 1377 pField = m_pFieldTree->GetField(csWName);
1378 if (!pField) { 1378 if (!pField) {
1379 CPDF_Dictionary* pParent = pFieldDict; 1379 CPDF_Dictionary* pParent = pFieldDict;
1380 if (!pFieldDict->KeyExist("T") && 1380 if (!pFieldDict->KeyExist("T") &&
1381 pFieldDict->GetStringBy("Subtype") == "Widget") { 1381 pFieldDict->GetStringFor("Subtype") == "Widget") {
1382 pParent = pFieldDict->GetDictBy("Parent"); 1382 pParent = pFieldDict->GetDictFor("Parent");
1383 if (!pParent) 1383 if (!pParent)
1384 pParent = pFieldDict; 1384 pParent = pFieldDict;
1385 } 1385 }
1386 1386
1387 if (pParent && pParent != pFieldDict && !pParent->KeyExist("FT")) { 1387 if (pParent && pParent != pFieldDict && !pParent->KeyExist("FT")) {
1388 if (pFieldDict->KeyExist("FT")) { 1388 if (pFieldDict->KeyExist("FT")) {
1389 CPDF_Object* pFTValue = pFieldDict->GetDirectObjectBy("FT"); 1389 CPDF_Object* pFTValue = pFieldDict->GetDirectObjectFor("FT");
1390 if (pFTValue) 1390 if (pFTValue)
1391 pParent->SetAt("FT", pFTValue->Clone()); 1391 pParent->SetFor("FT", pFTValue->Clone());
1392 } 1392 }
1393 1393
1394 if (pFieldDict->KeyExist("Ff")) { 1394 if (pFieldDict->KeyExist("Ff")) {
1395 CPDF_Object* pFfValue = pFieldDict->GetDirectObjectBy("Ff"); 1395 CPDF_Object* pFfValue = pFieldDict->GetDirectObjectFor("Ff");
1396 if (pFfValue) 1396 if (pFfValue)
1397 pParent->SetAt("Ff", pFfValue->Clone()); 1397 pParent->SetFor("Ff", pFfValue->Clone());
1398 } 1398 }
1399 } 1399 }
1400 1400
1401 pField = new CPDF_FormField(this, pParent); 1401 pField = new CPDF_FormField(this, pParent);
1402 CPDF_Object* pTObj = pDict->GetObjectBy("T"); 1402 CPDF_Object* pTObj = pDict->GetObjectFor("T");
1403 if (ToReference(pTObj)) { 1403 if (ToReference(pTObj)) {
1404 CPDF_Object* pClone = pTObj->CloneDirectObject(); 1404 CPDF_Object* pClone = pTObj->CloneDirectObject();
1405 if (pClone) 1405 if (pClone)
1406 pDict->SetAt("T", pClone); 1406 pDict->SetFor("T", pClone);
1407 else 1407 else
1408 pDict->SetAtName("T", ""); 1408 pDict->SetNameFor("T", "");
1409 } 1409 }
1410 m_pFieldTree->SetField(csWName, pField); 1410 m_pFieldTree->SetField(csWName, pField);
1411 } 1411 }
1412 1412
1413 CPDF_Array* pKids = pFieldDict->GetArrayBy("Kids"); 1413 CPDF_Array* pKids = pFieldDict->GetArrayFor("Kids");
1414 if (!pKids) { 1414 if (!pKids) {
1415 if (pFieldDict->GetStringBy("Subtype") == "Widget") 1415 if (pFieldDict->GetStringFor("Subtype") == "Widget")
1416 AddControl(pField, pFieldDict); 1416 AddControl(pField, pFieldDict);
1417 } else { 1417 } else {
1418 for (size_t i = 0; i < pKids->GetCount(); i++) { 1418 for (size_t i = 0; i < pKids->GetCount(); i++) {
1419 CPDF_Dictionary* pKid = pKids->GetDictAt(i); 1419 CPDF_Dictionary* pKid = pKids->GetDictAt(i);
1420 if (!pKid) 1420 if (!pKid)
1421 continue; 1421 continue;
1422 if (pKid->GetStringBy("Subtype") != "Widget") 1422 if (pKid->GetStringFor("Subtype") != "Widget")
1423 continue; 1423 continue;
1424 1424
1425 AddControl(pField, pKid); 1425 AddControl(pField, pKid);
1426 } 1426 }
1427 } 1427 }
1428 return pField; 1428 return pField;
1429 } 1429 }
1430 1430
1431 CPDF_FormControl* CPDF_InterForm::AddControl(CPDF_FormField* pField, 1431 CPDF_FormControl* CPDF_InterForm::AddControl(CPDF_FormField* pField,
1432 CPDF_Dictionary* pWidgetDict) { 1432 CPDF_Dictionary* pWidgetDict) {
(...skipping 24 matching lines...) Expand all
1457 uint32_t dwFlags = pField->GetFieldFlags(); 1457 uint32_t dwFlags = pField->GetFieldFlags();
1458 // TODO(thestig): Look up these magic numbers and add constants for them. 1458 // TODO(thestig): Look up these magic numbers and add constants for them.
1459 if (dwFlags & 0x04) 1459 if (dwFlags & 0x04)
1460 continue; 1460 continue;
1461 1461
1462 bool bFind = true; 1462 bool bFind = true;
1463 if (fields) 1463 if (fields)
1464 bFind = pdfium::ContainsValue(*fields, pField); 1464 bFind = pdfium::ContainsValue(*fields, pField);
1465 if (bIncludeOrExclude == bFind) { 1465 if (bIncludeOrExclude == bFind) {
1466 CPDF_Dictionary* pFieldDict = pField->m_pDict; 1466 CPDF_Dictionary* pFieldDict = pField->m_pDict;
1467 if ((dwFlags & 0x02) != 0 && pFieldDict->GetStringBy("V").IsEmpty()) 1467 if ((dwFlags & 0x02) != 0 && pFieldDict->GetStringFor("V").IsEmpty())
1468 return pField; 1468 return pField;
1469 } 1469 }
1470 } 1470 }
1471 return nullptr; 1471 return nullptr;
1472 } 1472 }
1473 1473
1474 CFDF_Document* CPDF_InterForm::ExportToFDF(const CFX_WideStringC& pdf_path, 1474 CFDF_Document* CPDF_InterForm::ExportToFDF(const CFX_WideStringC& pdf_path,
1475 bool bSimpleFileSpec) const { 1475 bool bSimpleFileSpec) const {
1476 std::vector<CPDF_FormField*> fields; 1476 std::vector<CPDF_FormField*> fields;
1477 int nCount = m_pFieldTree->m_Root.CountFields(); 1477 int nCount = m_pFieldTree->m_Root.CountFields();
1478 for (int i = 0; i < nCount; ++i) 1478 for (int i = 0; i < nCount; ++i)
1479 fields.push_back(m_pFieldTree->m_Root.GetField(i)); 1479 fields.push_back(m_pFieldTree->m_Root.GetField(i));
1480 return ExportToFDF(pdf_path, fields, true, bSimpleFileSpec); 1480 return ExportToFDF(pdf_path, fields, true, bSimpleFileSpec);
1481 } 1481 }
1482 1482
1483 CFDF_Document* CPDF_InterForm::ExportToFDF( 1483 CFDF_Document* CPDF_InterForm::ExportToFDF(
1484 const CFX_WideStringC& pdf_path, 1484 const CFX_WideStringC& pdf_path,
1485 const std::vector<CPDF_FormField*>& fields, 1485 const std::vector<CPDF_FormField*>& fields,
1486 bool bIncludeOrExclude, 1486 bool bIncludeOrExclude,
1487 bool bSimpleFileSpec) const { 1487 bool bSimpleFileSpec) const {
1488 CFDF_Document* pDoc = CFDF_Document::CreateNewDoc(); 1488 CFDF_Document* pDoc = CFDF_Document::CreateNewDoc();
1489 if (!pDoc) 1489 if (!pDoc)
1490 return nullptr; 1490 return nullptr;
1491 1491
1492 CPDF_Dictionary* pMainDict = pDoc->GetRoot()->GetDictBy("FDF"); 1492 CPDF_Dictionary* pMainDict = pDoc->GetRoot()->GetDictFor("FDF");
1493 if (!pdf_path.IsEmpty()) { 1493 if (!pdf_path.IsEmpty()) {
1494 if (bSimpleFileSpec) { 1494 if (bSimpleFileSpec) {
1495 CFX_WideString wsFilePath = CPDF_FileSpec::EncodeFileName(pdf_path); 1495 CFX_WideString wsFilePath = CPDF_FileSpec::EncodeFileName(pdf_path);
1496 pMainDict->SetAtString("F", CFX_ByteString::FromUnicode(wsFilePath)); 1496 pMainDict->SetStringFor("F", CFX_ByteString::FromUnicode(wsFilePath));
1497 pMainDict->SetAtString("UF", PDF_EncodeText(wsFilePath)); 1497 pMainDict->SetStringFor("UF", PDF_EncodeText(wsFilePath));
1498 } else { 1498 } else {
1499 CPDF_FileSpec filespec; 1499 CPDF_FileSpec filespec;
1500 filespec.SetFileName(pdf_path); 1500 filespec.SetFileName(pdf_path);
1501 pMainDict->SetAt("F", filespec.GetObj()); 1501 pMainDict->SetFor("F", filespec.GetObj());
1502 } 1502 }
1503 } 1503 }
1504 1504
1505 CPDF_Array* pFields = new CPDF_Array; 1505 CPDF_Array* pFields = new CPDF_Array;
1506 pMainDict->SetAt("Fields", pFields); 1506 pMainDict->SetFor("Fields", pFields);
1507 int nCount = m_pFieldTree->m_Root.CountFields(); 1507 int nCount = m_pFieldTree->m_Root.CountFields();
1508 for (int i = 0; i < nCount; i++) { 1508 for (int i = 0; i < nCount; i++) {
1509 CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); 1509 CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i);
1510 if (!pField || pField->GetType() == CPDF_FormField::PushButton) 1510 if (!pField || pField->GetType() == CPDF_FormField::PushButton)
1511 continue; 1511 continue;
1512 1512
1513 uint32_t dwFlags = pField->GetFieldFlags(); 1513 uint32_t dwFlags = pField->GetFieldFlags();
1514 if (dwFlags & 0x04) 1514 if (dwFlags & 0x04)
1515 continue; 1515 continue;
1516 1516
1517 if (bIncludeOrExclude == pdfium::ContainsValue(fields, pField)) { 1517 if (bIncludeOrExclude == pdfium::ContainsValue(fields, pField)) {
1518 if ((dwFlags & 0x02) != 0 && pField->m_pDict->GetStringBy("V").IsEmpty()) 1518 if ((dwFlags & 0x02) != 0 && pField->m_pDict->GetStringFor("V").IsEmpty())
1519 continue; 1519 continue;
1520 1520
1521 CFX_WideString fullname = FPDF_GetFullName(pField->GetFieldDict()); 1521 CFX_WideString fullname = FPDF_GetFullName(pField->GetFieldDict());
1522 CPDF_Dictionary* pFieldDict = new CPDF_Dictionary; 1522 CPDF_Dictionary* pFieldDict = new CPDF_Dictionary;
1523 pFieldDict->SetAt("T", new CPDF_String(fullname)); 1523 pFieldDict->SetFor("T", new CPDF_String(fullname));
1524 if (pField->GetType() == CPDF_FormField::CheckBox || 1524 if (pField->GetType() == CPDF_FormField::CheckBox ||
1525 pField->GetType() == CPDF_FormField::RadioButton) { 1525 pField->GetType() == CPDF_FormField::RadioButton) {
1526 CFX_WideString csExport = pField->GetCheckValue(FALSE); 1526 CFX_WideString csExport = pField->GetCheckValue(FALSE);
1527 CFX_ByteString csBExport = PDF_EncodeText(csExport); 1527 CFX_ByteString csBExport = PDF_EncodeText(csExport);
1528 CPDF_Object* pOpt = FPDF_GetFieldAttr(pField->m_pDict, "Opt"); 1528 CPDF_Object* pOpt = FPDF_GetFieldAttr(pField->m_pDict, "Opt");
1529 if (pOpt) 1529 if (pOpt)
1530 pFieldDict->SetAtString("V", csBExport); 1530 pFieldDict->SetStringFor("V", csBExport);
1531 else 1531 else
1532 pFieldDict->SetAtName("V", csBExport); 1532 pFieldDict->SetNameFor("V", csBExport);
1533 } else { 1533 } else {
1534 CPDF_Object* pV = FPDF_GetFieldAttr(pField->m_pDict, "V"); 1534 CPDF_Object* pV = FPDF_GetFieldAttr(pField->m_pDict, "V");
1535 if (pV) 1535 if (pV)
1536 pFieldDict->SetAt("V", pV->CloneDirectObject()); 1536 pFieldDict->SetFor("V", pV->CloneDirectObject());
1537 } 1537 }
1538 pFields->Add(pFieldDict); 1538 pFields->Add(pFieldDict);
1539 } 1539 }
1540 } 1540 }
1541 return pDoc; 1541 return pDoc;
1542 } 1542 }
1543 1543
1544 void CPDF_InterForm::FDF_ImportField(CPDF_Dictionary* pFieldDict, 1544 void CPDF_InterForm::FDF_ImportField(CPDF_Dictionary* pFieldDict,
1545 const CFX_WideString& parent_name, 1545 const CFX_WideString& parent_name,
1546 FX_BOOL bNotify, 1546 FX_BOOL bNotify,
1547 int nLevel) { 1547 int nLevel) {
1548 CFX_WideString name; 1548 CFX_WideString name;
1549 if (!parent_name.IsEmpty()) 1549 if (!parent_name.IsEmpty())
1550 name = parent_name + L"."; 1550 name = parent_name + L".";
1551 1551
1552 name += pFieldDict->GetUnicodeTextBy("T"); 1552 name += pFieldDict->GetUnicodeTextFor("T");
1553 CPDF_Array* pKids = pFieldDict->GetArrayBy("Kids"); 1553 CPDF_Array* pKids = pFieldDict->GetArrayFor("Kids");
1554 if (pKids) { 1554 if (pKids) {
1555 for (size_t i = 0; i < pKids->GetCount(); i++) { 1555 for (size_t i = 0; i < pKids->GetCount(); i++) {
1556 CPDF_Dictionary* pKid = pKids->GetDictAt(i); 1556 CPDF_Dictionary* pKid = pKids->GetDictAt(i);
1557 if (!pKid) 1557 if (!pKid)
1558 continue; 1558 continue;
1559 if (nLevel <= nMaxRecursion) 1559 if (nLevel <= nMaxRecursion)
1560 FDF_ImportField(pKid, name, bNotify, nLevel + 1); 1560 FDF_ImportField(pKid, name, bNotify, nLevel + 1);
1561 } 1561 }
1562 return; 1562 return;
1563 } 1563 }
(...skipping 14 matching lines...) Expand all
1578 iRet = m_pFormNotify->BeforeValueChange(pField, csWValue); 1578 iRet = m_pFormNotify->BeforeValueChange(pField, csWValue);
1579 1579
1580 if (iRet < 0) 1580 if (iRet < 0)
1581 return; 1581 return;
1582 } 1582 }
1583 1583
1584 pField->SetValue(csWValue); 1584 pField->SetValue(csWValue);
1585 CPDF_FormField::Type eType = pField->GetType(); 1585 CPDF_FormField::Type eType = pField->GetType();
1586 if ((eType == CPDF_FormField::ListBox || eType == CPDF_FormField::ComboBox) && 1586 if ((eType == CPDF_FormField::ListBox || eType == CPDF_FormField::ComboBox) &&
1587 pFieldDict->KeyExist("Opt")) { 1587 pFieldDict->KeyExist("Opt")) {
1588 pField->m_pDict->SetAt( 1588 pField->m_pDict->SetFor(
1589 "Opt", pFieldDict->GetDirectObjectBy("Opt")->CloneDirectObject()); 1589 "Opt", pFieldDict->GetDirectObjectFor("Opt")->CloneDirectObject());
1590 } 1590 }
1591 1591
1592 if (bNotify && m_pFormNotify) { 1592 if (bNotify && m_pFormNotify) {
1593 if (iType == FIELDTYPE_CHECKBOX || iType == FIELDTYPE_RADIOBUTTON) 1593 if (iType == FIELDTYPE_CHECKBOX || iType == FIELDTYPE_RADIOBUTTON)
1594 m_pFormNotify->AfterCheckedStatusChange(pField); 1594 m_pFormNotify->AfterCheckedStatusChange(pField);
1595 else if (iType == FIELDTYPE_LISTBOX) 1595 else if (iType == FIELDTYPE_LISTBOX)
1596 m_pFormNotify->AfterSelectionChange(pField); 1596 m_pFormNotify->AfterSelectionChange(pField);
1597 else if (iType == FIELDTYPE_COMBOBOX || iType == FIELDTYPE_TEXTFIELD) 1597 else if (iType == FIELDTYPE_COMBOBOX || iType == FIELDTYPE_TEXTFIELD)
1598 m_pFormNotify->AfterValueChange(pField); 1598 m_pFormNotify->AfterValueChange(pField);
1599 } 1599 }
1600 } 1600 }
1601 1601
1602 FX_BOOL CPDF_InterForm::ImportFromFDF(const CFDF_Document* pFDF, 1602 FX_BOOL CPDF_InterForm::ImportFromFDF(const CFDF_Document* pFDF,
1603 FX_BOOL bNotify) { 1603 FX_BOOL bNotify) {
1604 if (!pFDF) 1604 if (!pFDF)
1605 return FALSE; 1605 return FALSE;
1606 1606
1607 CPDF_Dictionary* pMainDict = pFDF->GetRoot()->GetDictBy("FDF"); 1607 CPDF_Dictionary* pMainDict = pFDF->GetRoot()->GetDictFor("FDF");
1608 if (!pMainDict) 1608 if (!pMainDict)
1609 return FALSE; 1609 return FALSE;
1610 1610
1611 CPDF_Array* pFields = pMainDict->GetArrayBy("Fields"); 1611 CPDF_Array* pFields = pMainDict->GetArrayFor("Fields");
1612 if (!pFields) 1612 if (!pFields)
1613 return FALSE; 1613 return FALSE;
1614 1614
1615 m_bsEncoding = pMainDict->GetStringBy("Encoding"); 1615 m_bsEncoding = pMainDict->GetStringFor("Encoding");
1616 if (bNotify && m_pFormNotify && m_pFormNotify->BeforeFormImportData(this) < 0) 1616 if (bNotify && m_pFormNotify && m_pFormNotify->BeforeFormImportData(this) < 0)
1617 return FALSE; 1617 return FALSE;
1618 1618
1619 for (size_t i = 0; i < pFields->GetCount(); i++) { 1619 for (size_t i = 0; i < pFields->GetCount(); i++) {
1620 CPDF_Dictionary* pField = pFields->GetDictAt(i); 1620 CPDF_Dictionary* pField = pFields->GetDictAt(i);
1621 if (!pField) 1621 if (!pField)
1622 continue; 1622 continue;
1623 1623
1624 FDF_ImportField(pField, L"", bNotify); 1624 FDF_ImportField(pField, L"", bNotify);
1625 } 1625 }
1626 if (bNotify && m_pFormNotify) 1626 if (bNotify && m_pFormNotify)
1627 m_pFormNotify->AfterFormImportData(this); 1627 m_pFormNotify->AfterFormImportData(this);
1628 return TRUE; 1628 return TRUE;
1629 } 1629 }
1630 1630
1631 void CPDF_InterForm::SetFormNotify(IPDF_FormNotify* pNotify) { 1631 void CPDF_InterForm::SetFormNotify(IPDF_FormNotify* pNotify) {
1632 m_pFormNotify = pNotify; 1632 m_pFormNotify = pNotify;
1633 } 1633 }
OLDNEW
« no previous file with comments | « core/fpdfdoc/cpdf_iconfit.cpp ('k') | core/fpdfdoc/cpdf_link.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698