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 #include "doc_utils.h" | 8 #include "doc_utils.h" |
9 | 9 |
10 const int nMaxRecursion = 32; | 10 const int nMaxRecursion = 32; |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 name_extractor.GetNext(pName, nLength); | 234 name_extractor.GetNext(pName, nLength); |
235 _Node *pNode = &m_Root, *pLast = NULL; | 235 _Node *pNode = &m_Root, *pLast = NULL; |
236 while (nLength > 0 && pNode) { | 236 while (nLength > 0 && pNode) { |
237 pLast = pNode; | 237 pLast = pNode; |
238 CFX_WideString name = CFX_WideString(pName, nLength); | 238 CFX_WideString name = CFX_WideString(pName, nLength); |
239 pNode = _Lookup(pLast, name); | 239 pNode = _Lookup(pLast, name); |
240 name_extractor.GetNext(pName, nLength); | 240 name_extractor.GetNext(pName, nLength); |
241 } | 241 } |
242 return pNode; | 242 return pNode; |
243 } | 243 } |
244 CPDF_InterForm::CPDF_InterForm(CPDF_Document* pDocument, FX_BOOL bGenerateAP) :
CFX_PrivateData() | 244 CPDF_InterForm::CPDF_InterForm(CPDF_Document* pDocument, bool bGenerateAP) : CFX
_PrivateData() |
245 { | 245 { |
246 m_pDocument = pDocument; | 246 m_pDocument = pDocument; |
247 m_bGenerateAP = bGenerateAP; | 247 m_bGenerateAP = bGenerateAP; |
248 m_pFormNotify = NULL; | 248 m_pFormNotify = NULL; |
249 m_bUpdated = FALSE; | 249 m_bUpdated = false; |
250 m_pFieldTree = new CFieldTree; | 250 m_pFieldTree = new CFieldTree; |
251 CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); | 251 CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); |
252 m_pFormDict = pRoot->GetDict("AcroForm"); | 252 m_pFormDict = pRoot->GetDict("AcroForm"); |
253 if (m_pFormDict == NULL) { | 253 if (m_pFormDict == NULL) { |
254 return; | 254 return; |
255 } | 255 } |
256 CPDF_Array* pFields = m_pFormDict->GetArray("Fields"); | 256 CPDF_Array* pFields = m_pFormDict->GetArray("Fields"); |
257 if (pFields == NULL) { | 257 if (pFields == NULL) { |
258 return; | 258 return; |
259 } | 259 } |
(...skipping 13 matching lines...) Expand all Loading... |
273 } | 273 } |
274 if (m_pFieldTree != NULL) { | 274 if (m_pFieldTree != NULL) { |
275 int nCount = m_pFieldTree->m_Root.CountFields(); | 275 int nCount = m_pFieldTree->m_Root.CountFields(); |
276 for (int i = 0; i < nCount; i++) { | 276 for (int i = 0; i < nCount; i++) { |
277 CPDF_FormField *pField = m_pFieldTree->m_Root.GetField(i); | 277 CPDF_FormField *pField = m_pFieldTree->m_Root.GetField(i); |
278 delete pField; | 278 delete pField; |
279 } | 279 } |
280 delete m_pFieldTree; | 280 delete m_pFieldTree; |
281 } | 281 } |
282 } | 282 } |
283 FX_BOOL»CPDF_InterForm::m_bUpdateAP = TRUE; | 283 bool» CPDF_InterForm::m_bUpdateAP = true; |
284 FX_BOOL CPDF_InterForm::UpdatingAPEnabled() | 284 bool CPDF_InterForm::UpdatingAPEnabled() |
285 { | 285 { |
286 return m_bUpdateAP; | 286 return m_bUpdateAP; |
287 } | 287 } |
288 void CPDF_InterForm::EnableUpdateAP(FX_BOOL bUpdateAP) | 288 void CPDF_InterForm::EnableUpdateAP(bool bUpdateAP) |
289 { | 289 { |
290 m_bUpdateAP = bUpdateAP; | 290 m_bUpdateAP = bUpdateAP; |
291 } | 291 } |
292 CFX_ByteString CPDF_InterForm::GenerateNewResourceName(const CPDF_Dictionary* pR
esDict, const FX_CHAR* csType, int iMinLen, const FX_CHAR* csPrefix) | 292 CFX_ByteString CPDF_InterForm::GenerateNewResourceName(const CPDF_Dictionary* pR
esDict, const FX_CHAR* csType, int iMinLen, const FX_CHAR* csPrefix) |
293 { | 293 { |
294 CFX_ByteString csStr = csPrefix; | 294 CFX_ByteString csStr = csPrefix; |
295 CFX_ByteString csBType = csType; | 295 CFX_ByteString csBType = csType; |
296 if (csStr.IsEmpty()) { | 296 if (csStr.IsEmpty()) { |
297 if (csBType == "ExtGState") { | 297 if (csBType == "ExtGState") { |
298 csStr = "GS"; | 298 csStr = "GS"; |
(...skipping 22 matching lines...) Expand all Loading... |
321 } | 321 } |
322 if (pResDict == NULL) { | 322 if (pResDict == NULL) { |
323 return csTmp; | 323 return csTmp; |
324 } | 324 } |
325 CPDF_Dictionary* pDict = pResDict->GetDict(csType); | 325 CPDF_Dictionary* pDict = pResDict->GetDict(csType); |
326 if (pDict == NULL) { | 326 if (pDict == NULL) { |
327 return csTmp; | 327 return csTmp; |
328 } | 328 } |
329 int num = 0; | 329 int num = 0; |
330 CFX_ByteString bsNum; | 330 CFX_ByteString bsNum; |
331 while (TRUE) { | 331 while (true) { |
332 if (!pDict->KeyExist(csTmp + bsNum)) { | 332 if (!pDict->KeyExist(csTmp + bsNum)) { |
333 return csTmp + bsNum; | 333 return csTmp + bsNum; |
334 } | 334 } |
335 if (m < iCount) { | 335 if (m < iCount) { |
336 csTmp += csStr[m ++]; | 336 csTmp += csStr[m ++]; |
337 } else { | 337 } else { |
338 bsNum.Format("%d", num++); | 338 bsNum.Format("%d", num++); |
339 } | 339 } |
340 m ++; | 340 m ++; |
341 } | 341 } |
342 return csTmp; | 342 return csTmp; |
343 } | 343 } |
344 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ | 344 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
345 typedef struct _PDF_FONTDATA { | 345 typedef struct _PDF_FONTDATA { |
346 FX_BOOL» » bFind; | 346 bool» » bFind; |
347 LOGFONTA lf; | 347 LOGFONTA lf; |
348 } PDF_FONTDATA, FAR* LPDF_FONTDATA; | 348 } PDF_FONTDATA, FAR* LPDF_FONTDATA; |
349 static int CALLBACK EnumFontFamExProc( ENUMLOGFONTEXA *lpelfe, | 349 static int CALLBACK EnumFontFamExProc( ENUMLOGFONTEXA *lpelfe, |
350 NEWTEXTMETRICEX *lpntme, | 350 NEWTEXTMETRICEX *lpntme, |
351 DWORD FontType, | 351 DWORD FontType, |
352 LPARAM lParam | 352 LPARAM lParam |
353 ) | 353 ) |
354 { | 354 { |
355 if (FontType != 0x004 || strchr(lpelfe->elfLogFont.lfFaceName, '@') != NULL)
{ | 355 if (FontType != 0x004 || strchr(lpelfe->elfLogFont.lfFaceName, '@') != NULL)
{ |
356 return 1; | 356 return 1; |
357 } else { | 357 } else { |
358 LPDF_FONTDATA pData = (LPDF_FONTDATA)lParam; | 358 LPDF_FONTDATA pData = (LPDF_FONTDATA)lParam; |
359 memcpy(&pData->lf, &lpelfe->elfLogFont, sizeof(LOGFONTA)); | 359 memcpy(&pData->lf, &lpelfe->elfLogFont, sizeof(LOGFONTA)); |
360 pData->bFind = TRUE; | 360 pData->bFind = true; |
361 return 0; | 361 return 0; |
362 } | 362 } |
363 } | 363 } |
364 static FX_BOOL RetrieveSpecificFont(LOGFONTA& lf) | 364 static bool RetrieveSpecificFont(LOGFONTA& lf) |
365 { | 365 { |
366 PDF_FONTDATA fd; | 366 PDF_FONTDATA fd; |
367 memset(&fd, 0, sizeof(PDF_FONTDATA)); | 367 memset(&fd, 0, sizeof(PDF_FONTDATA)); |
368 HDC hDC = ::GetDC(NULL); | 368 HDC hDC = ::GetDC(NULL); |
369 EnumFontFamiliesExA(hDC, &lf, (FONTENUMPROCA)EnumFontFamExProc, (LPARAM)&fd,
0); | 369 EnumFontFamiliesExA(hDC, &lf, (FONTENUMPROCA)EnumFontFamExProc, (LPARAM)&fd,
0); |
370 ::ReleaseDC(NULL, hDC); | 370 ::ReleaseDC(NULL, hDC); |
371 if (fd.bFind) { | 371 if (fd.bFind) { |
372 memcpy(&lf, &fd.lf, sizeof(LOGFONTA)); | 372 memcpy(&lf, &fd.lf, sizeof(LOGFONTA)); |
373 } | 373 } |
374 return fd.bFind; | 374 return fd.bFind; |
375 } | 375 } |
376 static FX_BOOL RetrieveSpecificFont(uint8_t charSet, uint8_t pitchAndFamily, LPC
STR pcsFontName, LOGFONTA& lf) | 376 static bool RetrieveSpecificFont(uint8_t charSet, uint8_t pitchAndFamily, LPCSTR
pcsFontName, LOGFONTA& lf) |
377 { | 377 { |
378 memset(&lf, 0, sizeof(LOGFONTA)); | 378 memset(&lf, 0, sizeof(LOGFONTA)); |
379 lf.lfCharSet = charSet; | 379 lf.lfCharSet = charSet; |
380 lf.lfPitchAndFamily = pitchAndFamily; | 380 lf.lfPitchAndFamily = pitchAndFamily; |
381 if (pcsFontName != NULL) { | 381 if (pcsFontName != NULL) { |
382 strcpy(lf.lfFaceName, pcsFontName); | 382 strcpy(lf.lfFaceName, pcsFontName); |
383 } | 383 } |
384 return RetrieveSpecificFont(lf); | 384 return RetrieveSpecificFont(lf); |
385 } | 385 } |
386 static FX_BOOL RetrieveStockFont(int iFontObject, uint8_t charSet, LOGFONTA& lf) | 386 static bool RetrieveStockFont(int iFontObject, uint8_t charSet, LOGFONTA& lf) |
387 { | 387 { |
388 HFONT hFont = (HFONT)::GetStockObject(iFontObject); | 388 HFONT hFont = (HFONT)::GetStockObject(iFontObject); |
389 if (hFont != NULL) { | 389 if (hFont != NULL) { |
390 memset(&lf, 0, sizeof(LOGFONTA)); | 390 memset(&lf, 0, sizeof(LOGFONTA)); |
391 int iRet = ::GetObject(hFont, sizeof(LOGFONTA), &lf); | 391 int iRet = ::GetObject(hFont, sizeof(LOGFONTA), &lf); |
392 if (iRet > 0 && (lf.lfCharSet == charSet || charSet == 255)) { | 392 if (iRet > 0 && (lf.lfCharSet == charSet || charSet == 255)) { |
393 return RetrieveSpecificFont(lf); | 393 return RetrieveSpecificFont(lf); |
394 } | 394 } |
395 } | 395 } |
396 return FALSE; | 396 return false; |
397 } | 397 } |
398 #endif | 398 #endif |
399 CPDF_Font* CPDF_InterForm::AddSystemDefaultFont(const CPDF_Document* pDocument) | 399 CPDF_Font* CPDF_InterForm::AddSystemDefaultFont(const CPDF_Document* pDocument) |
400 { | 400 { |
401 if (pDocument == NULL) { | 401 if (pDocument == NULL) { |
402 return NULL; | 402 return NULL; |
403 } | 403 } |
404 CPDF_Font* pFont = NULL; | 404 CPDF_Font* pFont = NULL; |
405 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ | 405 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
406 LOGFONTA lf; | 406 LOGFONTA lf; |
407 FX_BOOL bRet; | 407 bool bRet; |
408 bRet = RetrieveStockFont(DEFAULT_GUI_FONT, 255, lf); | 408 bRet = RetrieveStockFont(DEFAULT_GUI_FONT, 255, lf); |
409 if (!bRet) { | 409 if (!bRet) { |
410 bRet = RetrieveStockFont(SYSTEM_FONT, 255, lf); | 410 bRet = RetrieveStockFont(SYSTEM_FONT, 255, lf); |
411 } | 411 } |
412 if (bRet) { | 412 if (bRet) { |
413 pFont = ((CPDF_Document*)pDocument)->AddWindowsFont(&lf, FALSE, TRUE); | 413 pFont = ((CPDF_Document*)pDocument)->AddWindowsFont(&lf, false, true); |
414 } | 414 } |
415 #endif | 415 #endif |
416 return pFont; | 416 return pFont; |
417 } | 417 } |
418 CPDF_Font* CPDF_InterForm::AddSystemFont(const CPDF_Document* pDocument, CFX_Byt
eString csFontName, uint8_t iCharSet) | 418 CPDF_Font* CPDF_InterForm::AddSystemFont(const CPDF_Document* pDocument, CFX_Byt
eString csFontName, uint8_t iCharSet) |
419 { | 419 { |
420 if (pDocument == NULL || csFontName.IsEmpty()) { | 420 if (pDocument == NULL || csFontName.IsEmpty()) { |
421 return NULL; | 421 return NULL; |
422 } | 422 } |
423 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ | 423 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
424 if (iCharSet == 1) { | 424 if (iCharSet == 1) { |
425 iCharSet = GetNativeCharSet(); | 425 iCharSet = GetNativeCharSet(); |
426 } | 426 } |
427 HFONT hFont = ::CreateFontA(0, 0, 0, 0, 0, 0, 0, 0, iCharSet, OUT_DEFAULT_PR
ECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, csFontN
ame.c_str()); | 427 HFONT hFont = ::CreateFontA(0, 0, 0, 0, 0, 0, 0, 0, iCharSet, OUT_DEFAULT_PR
ECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, csFontN
ame.c_str()); |
428 if (hFont != NULL) { | 428 if (hFont != NULL) { |
429 LOGFONTA lf; | 429 LOGFONTA lf; |
430 memset(&lf, 0, sizeof(LOGFONTA)); | 430 memset(&lf, 0, sizeof(LOGFONTA)); |
431 ::GetObjectA(hFont, sizeof(LOGFONTA), &lf); | 431 ::GetObjectA(hFont, sizeof(LOGFONTA), &lf); |
432 ::DeleteObject(hFont); | 432 ::DeleteObject(hFont); |
433 if (strlen(lf.lfFaceName) > 0) { | 433 if (strlen(lf.lfFaceName) > 0) { |
434 return ((CPDF_Document*)pDocument)->AddWindowsFont(&lf, FALSE, TRUE)
; | 434 return ((CPDF_Document*)pDocument)->AddWindowsFont(&lf, false, true)
; |
435 } | 435 } |
436 } | 436 } |
437 #endif | 437 #endif |
438 return NULL; | 438 return NULL; |
439 } | 439 } |
440 CPDF_Font* CPDF_InterForm::AddSystemFont(const CPDF_Document* pDocument, CFX_Wid
eString csFontName, uint8_t iCharSet) | 440 CPDF_Font* CPDF_InterForm::AddSystemFont(const CPDF_Document* pDocument, CFX_Wid
eString csFontName, uint8_t iCharSet) |
441 { | 441 { |
442 if (pDocument == NULL || csFontName.IsEmpty()) { | 442 if (pDocument == NULL || csFontName.IsEmpty()) { |
443 return NULL; | 443 return NULL; |
444 } | 444 } |
445 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ | 445 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
446 if (iCharSet == 1) { | 446 if (iCharSet == 1) { |
447 iCharSet = GetNativeCharSet(); | 447 iCharSet = GetNativeCharSet(); |
448 } | 448 } |
449 HFONT hFont = ::CreateFontW(0, 0, 0, 0, 0, 0, 0, 0, iCharSet, OUT_DEFAULT_PR
ECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, csFontN
ame.c_str()); | 449 HFONT hFont = ::CreateFontW(0, 0, 0, 0, 0, 0, 0, 0, iCharSet, OUT_DEFAULT_PR
ECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, csFontN
ame.c_str()); |
450 if (hFont != NULL) { | 450 if (hFont != NULL) { |
451 LOGFONTA lf; | 451 LOGFONTA lf; |
452 memset(&lf, 0, sizeof(LOGFONTA)); | 452 memset(&lf, 0, sizeof(LOGFONTA)); |
453 ::GetObject(hFont, sizeof(LOGFONTA), &lf); | 453 ::GetObject(hFont, sizeof(LOGFONTA), &lf); |
454 ::DeleteObject(hFont); | 454 ::DeleteObject(hFont); |
455 if (strlen(lf.lfFaceName) > 0) { | 455 if (strlen(lf.lfFaceName) > 0) { |
456 return ((CPDF_Document*)pDocument)->AddWindowsFont(&lf, FALSE, TRUE)
; | 456 return ((CPDF_Document*)pDocument)->AddWindowsFont(&lf, false, true)
; |
457 } | 457 } |
458 } | 458 } |
459 #endif | 459 #endif |
460 return NULL; | 460 return NULL; |
461 } | 461 } |
462 CPDF_Font* CPDF_InterForm::AddStandardFont(const CPDF_Document* pDocument, CFX_B
yteString csFontName) | 462 CPDF_Font* CPDF_InterForm::AddStandardFont(const CPDF_Document* pDocument, CFX_B
yteString csFontName) |
463 { | 463 { |
464 if (pDocument == NULL || csFontName.IsEmpty()) { | 464 if (pDocument == NULL || csFontName.IsEmpty()) { |
465 return NULL; | 465 return NULL; |
466 } | 466 } |
467 CPDF_Font* pFont = NULL; | 467 CPDF_Font* pFont = NULL; |
468 if (csFontName == "ZapfDingbats") { | 468 if (csFontName == "ZapfDingbats") { |
469 pFont = ((CPDF_Document*)pDocument)->AddStandardFont(csFontName, NULL); | 469 pFont = ((CPDF_Document*)pDocument)->AddStandardFont(csFontName, NULL); |
470 } else { | 470 } else { |
471 CPDF_FontEncoding encoding(PDFFONT_ENCODING_WINANSI); | 471 CPDF_FontEncoding encoding(PDFFONT_ENCODING_WINANSI); |
472 pFont = ((CPDF_Document*)pDocument)->AddStandardFont(csFontName, &encodi
ng); | 472 pFont = ((CPDF_Document*)pDocument)->AddStandardFont(csFontName, &encodi
ng); |
473 } | 473 } |
474 return pFont; | 474 return pFont; |
475 } | 475 } |
476 CFX_ByteString CPDF_InterForm::GetNativeFont(uint8_t charSet, void* pLogFont) | 476 CFX_ByteString CPDF_InterForm::GetNativeFont(uint8_t charSet, void* pLogFont) |
477 { | 477 { |
478 CFX_ByteString csFontName; | 478 CFX_ByteString csFontName; |
479 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ | 479 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
480 LOGFONTA lf; | 480 LOGFONTA lf; |
481 FX_BOOL bRet; | 481 bool bRet; |
482 if (charSet == ANSI_CHARSET) { | 482 if (charSet == ANSI_CHARSET) { |
483 csFontName = "Helvetica"; | 483 csFontName = "Helvetica"; |
484 return csFontName; | 484 return csFontName; |
485 } | 485 } |
486 bRet = FALSE; | 486 bRet = false; |
487 if (charSet == SHIFTJIS_CHARSET) { | 487 if (charSet == SHIFTJIS_CHARSET) { |
488 bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, "MS Mi
ncho", lf); | 488 bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, "MS Mi
ncho", lf); |
489 } else if (charSet == GB2312_CHARSET) { | 489 } else if (charSet == GB2312_CHARSET) { |
490 bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, "SimSu
n", lf); | 490 bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, "SimSu
n", lf); |
491 } else if (charSet == CHINESEBIG5_CHARSET) { | 491 } else if (charSet == CHINESEBIG5_CHARSET) { |
492 bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, "MingL
iU", lf); | 492 bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, "MingL
iU", lf); |
493 } | 493 } |
494 if (!bRet) { | 494 if (!bRet) { |
495 bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, "Arial
Unicode MS", lf); | 495 bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, "Arial
Unicode MS", lf); |
496 } | 496 } |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
585 return NULL; | 585 return NULL; |
586 } | 586 } |
587 CPDF_Font* pFont = NULL; | 587 CPDF_Font* pFont = NULL; |
588 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ | 588 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
589 LOGFONTA lf; | 589 LOGFONTA lf; |
590 CFX_ByteString csFontName = GetNativeFont(charSet, &lf); | 590 CFX_ByteString csFontName = GetNativeFont(charSet, &lf); |
591 if (!csFontName.IsEmpty()) { | 591 if (!csFontName.IsEmpty()) { |
592 if (csFontName == "Helvetica") { | 592 if (csFontName == "Helvetica") { |
593 pFont = AddStandardFont(pDocument, csFontName); | 593 pFont = AddStandardFont(pDocument, csFontName); |
594 } else { | 594 } else { |
595 pFont = ((CPDF_Document*)pDocument)->AddWindowsFont(&lf, FALSE, TRUE
); | 595 pFont = ((CPDF_Document*)pDocument)->AddWindowsFont(&lf, false, true
); |
596 } | 596 } |
597 } | 597 } |
598 #endif | 598 #endif |
599 return pFont; | 599 return pFont; |
600 } | 600 } |
601 CPDF_Font* CPDF_InterForm::AddNativeFont(const CPDF_Document* pDocument) | 601 CPDF_Font* CPDF_InterForm::AddNativeFont(const CPDF_Document* pDocument) |
602 { | 602 { |
603 if (pDocument == NULL) { | 603 if (pDocument == NULL) { |
604 return NULL; | 604 return NULL; |
605 } | 605 } |
606 CPDF_Font* pFont = NULL; | 606 CPDF_Font* pFont = NULL; |
607 uint8_t charSet = GetNativeCharSet(); | 607 uint8_t charSet = GetNativeCharSet(); |
608 pFont = AddNativeFont(charSet, pDocument); | 608 pFont = AddNativeFont(charSet, pDocument); |
609 return pFont; | 609 return pFont; |
610 } | 610 } |
611 FX_BOOL CPDF_InterForm::ValidateFieldName(CFX_WideString& csNewFieldName, int iT
ype, const CPDF_FormField* pExcludedField, const CPDF_FormControl* pExcludedCont
rol) | 611 bool CPDF_InterForm::ValidateFieldName(CFX_WideString& csNewFieldName, int iType
, const CPDF_FormField* pExcludedField, const CPDF_FormControl* pExcludedControl
) |
612 { | 612 { |
613 if (csNewFieldName.IsEmpty()) { | 613 if (csNewFieldName.IsEmpty()) { |
614 return FALSE; | 614 return false; |
615 } | 615 } |
616 int iPos = 0; | 616 int iPos = 0; |
617 int iLength = csNewFieldName.GetLength(); | 617 int iLength = csNewFieldName.GetLength(); |
618 CFX_WideString csSub; | 618 CFX_WideString csSub; |
619 while (TRUE) { | 619 while (true) { |
620 while (iPos < iLength && (csNewFieldName[iPos] == L'.' || csNewFieldName
[iPos] == L' ')) { | 620 while (iPos < iLength && (csNewFieldName[iPos] == L'.' || csNewFieldName
[iPos] == L' ')) { |
621 iPos ++; | 621 iPos ++; |
622 } | 622 } |
623 if (iPos < iLength && !csSub.IsEmpty()) { | 623 if (iPos < iLength && !csSub.IsEmpty()) { |
624 csSub += L'.'; | 624 csSub += L'.'; |
625 } | 625 } |
626 while (iPos < iLength && csNewFieldName[iPos] != L'.') { | 626 while (iPos < iLength && csNewFieldName[iPos] != L'.') { |
627 csSub += csNewFieldName[iPos ++]; | 627 csSub += csNewFieldName[iPos ++]; |
628 } | 628 } |
629 for (int i = csSub.GetLength() - 1; i > -1; i --) { | 629 for (int i = csSub.GetLength() - 1; i > -1; i --) { |
(...skipping 15 matching lines...) Expand all Loading... |
645 continue; | 645 continue; |
646 } | 646 } |
647 } else { | 647 } else { |
648 continue; | 648 continue; |
649 } | 649 } |
650 } | 650 } |
651 CFX_WideString csFullName = pField->GetFullName(); | 651 CFX_WideString csFullName = pField->GetFullName(); |
652 int iRet = CompareFieldName(csSub, csFullName); | 652 int iRet = CompareFieldName(csSub, csFullName); |
653 if (iRet == 1) { | 653 if (iRet == 1) { |
654 if (pField->GetFieldType() != iType) { | 654 if (pField->GetFieldType() != iType) { |
655 return FALSE; | 655 return false; |
656 } | 656 } |
657 } else if (iRet == 2 && csSub == csNewFieldName) { | 657 } else if (iRet == 2 && csSub == csNewFieldName) { |
658 if (csFullName[iPos] == L'.') { | 658 if (csFullName[iPos] == L'.') { |
659 return FALSE; | 659 return false; |
660 } | 660 } |
661 } else if (iRet == 3 && csSub == csNewFieldName) { | 661 } else if (iRet == 3 && csSub == csNewFieldName) { |
662 if (csNewFieldName[csFullName.GetLength()] == L'.') { | 662 if (csNewFieldName[csFullName.GetLength()] == L'.') { |
663 return FALSE; | 663 return false; |
664 } | 664 } |
665 } | 665 } |
666 } | 666 } |
667 if (iPos >= iLength) { | 667 if (iPos >= iLength) { |
668 break; | 668 break; |
669 } | 669 } |
670 } | 670 } |
671 if (csSub.IsEmpty()) { | 671 if (csSub.IsEmpty()) { |
672 return FALSE; | 672 return false; |
673 } | 673 } |
674 csNewFieldName = csSub; | 674 csNewFieldName = csSub; |
675 return TRUE; | 675 return true; |
676 } | 676 } |
677 FX_BOOL CPDF_InterForm::ValidateFieldName(CFX_WideString& csNewFieldName, int iT
ype) | 677 bool CPDF_InterForm::ValidateFieldName(CFX_WideString& csNewFieldName, int iType
) |
678 { | 678 { |
679 return ValidateFieldName(csNewFieldName, iType, NULL, NULL); | 679 return ValidateFieldName(csNewFieldName, iType, NULL, NULL); |
680 } | 680 } |
681 FX_BOOL CPDF_InterForm::ValidateFieldName(const CPDF_FormField* pField, CFX_Wide
String& csNewFieldName) | 681 bool CPDF_InterForm::ValidateFieldName(const CPDF_FormField* pField, CFX_WideStr
ing& csNewFieldName) |
682 { | 682 { |
683 if (pField == NULL || csNewFieldName.IsEmpty()) { | 683 if (pField == NULL || csNewFieldName.IsEmpty()) { |
684 return FALSE; | 684 return false; |
685 } | 685 } |
686 return ValidateFieldName(csNewFieldName, ((CPDF_FormField*)pField)->GetField
Type(), pField, NULL); | 686 return ValidateFieldName(csNewFieldName, ((CPDF_FormField*)pField)->GetField
Type(), pField, NULL); |
687 } | 687 } |
688 FX_BOOL CPDF_InterForm::ValidateFieldName(const CPDF_FormControl* pControl, CFX_
WideString& csNewFieldName) | 688 bool CPDF_InterForm::ValidateFieldName(const CPDF_FormControl* pControl, CFX_Wid
eString& csNewFieldName) |
689 { | 689 { |
690 if (pControl == NULL || csNewFieldName.IsEmpty()) { | 690 if (pControl == NULL || csNewFieldName.IsEmpty()) { |
691 return FALSE; | 691 return false; |
692 } | 692 } |
693 CPDF_FormField* pField = ((CPDF_FormControl*)pControl)->GetField(); | 693 CPDF_FormField* pField = ((CPDF_FormControl*)pControl)->GetField(); |
694 return ValidateFieldName(csNewFieldName, pField->GetFieldType(), pField, pCo
ntrol); | 694 return ValidateFieldName(csNewFieldName, pField->GetFieldType(), pField, pCo
ntrol); |
695 } | 695 } |
696 int CPDF_InterForm::CompareFieldName(const CFX_ByteString& name1, const CFX_Byte
String& name2) | 696 int CPDF_InterForm::CompareFieldName(const CFX_ByteString& name1, const CFX_Byte
String& name2) |
697 { | 697 { |
698 const FX_CHAR* ptr1 = name1; | 698 const FX_CHAR* ptr1 = name1; |
699 const FX_CHAR* ptr2 = name2; | 699 const FX_CHAR* ptr2 = name2; |
700 if (name1.GetLength() != name2.GetLength()) { | 700 if (name1.GetLength() != name2.GetLength()) { |
701 int i = 0; | 701 int i = 0; |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
760 allFieldNames.RemoveAll(); | 760 allFieldNames.RemoveAll(); |
761 int nCount = m_pFieldTree->m_Root.CountFields(); | 761 int nCount = m_pFieldTree->m_Root.CountFields(); |
762 for (int i = 0; i < nCount; i ++) { | 762 for (int i = 0; i < nCount; i ++) { |
763 CPDF_FormField *pField = m_pFieldTree->m_Root.GetField(i); | 763 CPDF_FormField *pField = m_pFieldTree->m_Root.GetField(i); |
764 if (pField) { | 764 if (pField) { |
765 CFX_WideString full_name = GetFullName(pField->GetFieldDict()); | 765 CFX_WideString full_name = GetFullName(pField->GetFieldDict()); |
766 allFieldNames.Add(full_name); | 766 allFieldNames.Add(full_name); |
767 } | 767 } |
768 } | 768 } |
769 } | 769 } |
770 FX_BOOL CPDF_InterForm::IsValidFormField(const void* pField) | 770 bool CPDF_InterForm::IsValidFormField(const void* pField) |
771 { | 771 { |
772 if (pField == NULL) { | 772 if (pField == NULL) { |
773 return FALSE; | 773 return false; |
774 } | 774 } |
775 int nCount = m_pFieldTree->m_Root.CountFields(); | 775 int nCount = m_pFieldTree->m_Root.CountFields(); |
776 for (int i = 0; i < nCount; i++) { | 776 for (int i = 0; i < nCount; i++) { |
777 CPDF_FormField *pFormField = m_pFieldTree->m_Root.GetField(i); | 777 CPDF_FormField *pFormField = m_pFieldTree->m_Root.GetField(i); |
778 if (pField == pFormField) { | 778 if (pField == pFormField) { |
779 return TRUE; | 779 return true; |
780 } | 780 } |
781 } | 781 } |
782 return FALSE; | 782 return false; |
783 } | 783 } |
784 CPDF_FormField* CPDF_InterForm::GetFieldByDict(CPDF_Dictionary* pFieldDict) cons
t | 784 CPDF_FormField* CPDF_InterForm::GetFieldByDict(CPDF_Dictionary* pFieldDict) cons
t |
785 { | 785 { |
786 if (pFieldDict == NULL) { | 786 if (pFieldDict == NULL) { |
787 return NULL; | 787 return NULL; |
788 } | 788 } |
789 CFX_WideString csWName = GetFullName(pFieldDict); | 789 CFX_WideString csWName = GetFullName(pFieldDict); |
790 return m_pFieldTree->GetField(csWName); | 790 return m_pFieldTree->GetField(csWName); |
791 } | 791 } |
792 FX_DWORD CPDF_InterForm::CountControls(CFX_WideString csFieldName) | 792 FX_DWORD CPDF_InterForm::CountControls(CFX_WideString csFieldName) |
(...skipping 11 matching lines...) Expand all Loading... |
804 { | 804 { |
805 CPDF_FormField *pField = m_pFieldTree->GetField(csFieldName); | 805 CPDF_FormField *pField = m_pFieldTree->GetField(csFieldName); |
806 if (pField == NULL) { | 806 if (pField == NULL) { |
807 return NULL; | 807 return NULL; |
808 } | 808 } |
809 if (index < (FX_DWORD)pField->m_ControlList.GetSize()) { | 809 if (index < (FX_DWORD)pField->m_ControlList.GetSize()) { |
810 return (CPDF_FormControl *)pField->m_ControlList.GetAt(index); | 810 return (CPDF_FormControl *)pField->m_ControlList.GetAt(index); |
811 } | 811 } |
812 return NULL; | 812 return NULL; |
813 } | 813 } |
814 FX_BOOL CPDF_InterForm::IsValidFormControl(const void* pControl) | 814 bool CPDF_InterForm::IsValidFormControl(const void* pControl) |
815 { | 815 { |
816 if (pControl == NULL) { | 816 if (pControl == NULL) { |
817 return FALSE; | 817 return false; |
818 } | 818 } |
819 FX_POSITION pos = m_ControlMap.GetStartPosition(); | 819 FX_POSITION pos = m_ControlMap.GetStartPosition(); |
820 while (pos) { | 820 while (pos) { |
821 CPDF_Dictionary* pWidgetDict = NULL; | 821 CPDF_Dictionary* pWidgetDict = NULL; |
822 void* pFormControl = NULL; | 822 void* pFormControl = NULL; |
823 m_ControlMap.GetNextAssoc(pos, (void*&)pWidgetDict, pFormControl); | 823 m_ControlMap.GetNextAssoc(pos, (void*&)pWidgetDict, pFormControl); |
824 if (pControl == pFormControl) { | 824 if (pControl == pFormControl) { |
825 return TRUE; | 825 return true; |
826 } | 826 } |
827 } | 827 } |
828 return FALSE; | 828 return false; |
829 } | 829 } |
830 int CPDF_InterForm::CountPageControls(CPDF_Page* pPage) const | 830 int CPDF_InterForm::CountPageControls(CPDF_Page* pPage) const |
831 { | 831 { |
832 CPDF_Array* pAnnotList = pPage->m_pFormDict->GetArray("Annots"); | 832 CPDF_Array* pAnnotList = pPage->m_pFormDict->GetArray("Annots"); |
833 if (pAnnotList == NULL) { | 833 if (pAnnotList == NULL) { |
834 return 0; | 834 return 0; |
835 } | 835 } |
836 int count = 0; | 836 int count = 0; |
837 for (FX_DWORD i = 0; i < pAnnotList->GetCount(); i ++) { | 837 for (FX_DWORD i = 0; i < pAnnotList->GetCount(); i ++) { |
838 CPDF_Dictionary* pAnnot = pAnnotList->GetDict(i); | 838 CPDF_Dictionary* pAnnot = pAnnotList->GetDict(i); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
915 CPDF_Dictionary* pDict = NULL; | 915 CPDF_Dictionary* pDict = NULL; |
916 while (pArray != NULL) { | 916 while (pArray != NULL) { |
917 CFX_WideString csSub; | 917 CFX_WideString csSub; |
918 if (iPos < iLength && csFieldName[iPos] == L'.') { | 918 if (iPos < iLength && csFieldName[iPos] == L'.') { |
919 iPos ++; | 919 iPos ++; |
920 } | 920 } |
921 while (iPos < iLength && csFieldName[iPos] != L'.') { | 921 while (iPos < iLength && csFieldName[iPos] != L'.') { |
922 csSub += csFieldName[iPos ++]; | 922 csSub += csFieldName[iPos ++]; |
923 } | 923 } |
924 int iCount = pArray->GetCount(); | 924 int iCount = pArray->GetCount(); |
925 FX_BOOL bFind = FALSE; | 925 bool bFind = false; |
926 for (int i = 0; i < iCount; i ++) { | 926 for (int i = 0; i < iCount; i ++) { |
927 pDict = pArray->GetDict(i); | 927 pDict = pArray->GetDict(i); |
928 if (pDict == NULL) { | 928 if (pDict == NULL) { |
929 continue; | 929 continue; |
930 } | 930 } |
931 CFX_WideString csT = pDict->GetUnicodeText("T"); | 931 CFX_WideString csT = pDict->GetUnicodeText("T"); |
932 if (csT == csSub) { | 932 if (csT == csSub) { |
933 bFind = TRUE; | 933 bFind = true; |
934 break; | 934 break; |
935 } | 935 } |
936 } | 936 } |
937 if (!bFind) { | 937 if (!bFind) { |
938 return 0; | 938 return 0; |
939 } | 939 } |
940 if (iPos >= iLength) { | 940 if (iPos >= iLength) { |
941 break; | 941 break; |
942 } | 942 } |
943 pArray = pDict->GetArray("Kids"); | 943 pArray = pDict->GetArray("Kids"); |
(...skipping 27 matching lines...) Expand all Loading... |
971 CPDF_Dictionary* pDict = NULL; | 971 CPDF_Dictionary* pDict = NULL; |
972 while (pArray != NULL) { | 972 while (pArray != NULL) { |
973 CFX_WideString csSub; | 973 CFX_WideString csSub; |
974 if (iPos < iLength && csFieldName[iPos] == L'.') { | 974 if (iPos < iLength && csFieldName[iPos] == L'.') { |
975 iPos ++; | 975 iPos ++; |
976 } | 976 } |
977 while (iPos < iLength && csFieldName[iPos] != L'.') { | 977 while (iPos < iLength && csFieldName[iPos] != L'.') { |
978 csSub += csFieldName[iPos ++]; | 978 csSub += csFieldName[iPos ++]; |
979 } | 979 } |
980 int iCount = pArray->GetCount(); | 980 int iCount = pArray->GetCount(); |
981 FX_BOOL bFind = FALSE; | 981 bool bFind = false; |
982 for (int i = 0; i < iCount; i ++) { | 982 for (int i = 0; i < iCount; i ++) { |
983 pDict = pArray->GetDict(i); | 983 pDict = pArray->GetDict(i); |
984 if (pDict == NULL) { | 984 if (pDict == NULL) { |
985 continue; | 985 continue; |
986 } | 986 } |
987 CFX_WideString csT = pDict->GetUnicodeText("T"); | 987 CFX_WideString csT = pDict->GetUnicodeText("T"); |
988 if (csT == csSub) { | 988 if (csT == csSub) { |
989 bFind = TRUE; | 989 bFind = true; |
990 break; | 990 break; |
991 } | 991 } |
992 } | 992 } |
993 if (!bFind) { | 993 if (!bFind) { |
994 return NULL; | 994 return NULL; |
995 } | 995 } |
996 if (iPos >= iLength) { | 996 if (iPos >= iLength) { |
997 break; | 997 break; |
998 } | 998 } |
999 pArray = pDict->GetArray("Kids"); | 999 pArray = pDict->GetArray("Kids"); |
1000 } | 1000 } |
1001 if (pDict == NULL) { | 1001 if (pDict == NULL) { |
1002 return NULL; | 1002 return NULL; |
1003 } else { | 1003 } else { |
1004 pArray = pDict->GetArray("Kids"); | 1004 pArray = pDict->GetArray("Kids"); |
1005 if (pArray == NULL) { | 1005 if (pArray == NULL) { |
1006 return pDict; | 1006 return pDict; |
1007 } else { | 1007 } else { |
1008 return pArray->GetDict(index); | 1008 return pArray->GetDict(index); |
1009 } | 1009 } |
1010 } | 1010 } |
1011 } | 1011 } |
1012 } | 1012 } |
1013 FX_BOOL CPDF_InterForm::NeedConstructAP() | 1013 bool CPDF_InterForm::NeedConstructAP() |
1014 { | 1014 { |
1015 if (m_pFormDict == NULL) { | 1015 if (m_pFormDict == NULL) { |
1016 return FALSE; | 1016 return false; |
1017 } | 1017 } |
1018 return m_pFormDict->GetBoolean("NeedAppearances"); | 1018 return m_pFormDict->GetBoolean("NeedAppearances"); |
1019 } | 1019 } |
1020 void CPDF_InterForm::NeedConstructAP(FX_BOOL bNeedAP) | 1020 void CPDF_InterForm::NeedConstructAP(bool bNeedAP) |
1021 { | 1021 { |
1022 if (m_pFormDict == NULL) { | 1022 if (m_pFormDict == NULL) { |
1023 InitInterFormDict(m_pFormDict, m_pDocument); | 1023 InitInterFormDict(m_pFormDict, m_pDocument); |
1024 } | 1024 } |
1025 m_pFormDict->SetAtBoolean("NeedAppearances", bNeedAP); | 1025 m_pFormDict->SetAtBoolean("NeedAppearances", bNeedAP); |
1026 m_bGenerateAP = bNeedAP; | 1026 m_bGenerateAP = bNeedAP; |
1027 } | 1027 } |
1028 int CPDF_InterForm::CountFieldsInCalculationOrder() | 1028 int CPDF_InterForm::CountFieldsInCalculationOrder() |
1029 { | 1029 { |
1030 if (m_pFormDict == NULL) { | 1030 if (m_pFormDict == NULL) { |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1085 return GetInterFormFont(m_pFormDict, m_pDocument, csFontName, csNameTag); | 1085 return GetInterFormFont(m_pFormDict, m_pDocument, csFontName, csNameTag); |
1086 } | 1086 } |
1087 CPDF_Font* CPDF_InterForm::GetNativeFormFont(uint8_t charSet, CFX_ByteString& cs
NameTag) | 1087 CPDF_Font* CPDF_InterForm::GetNativeFormFont(uint8_t charSet, CFX_ByteString& cs
NameTag) |
1088 { | 1088 { |
1089 return GetNativeInterFormFont(m_pFormDict, m_pDocument, charSet, csNameTag); | 1089 return GetNativeInterFormFont(m_pFormDict, m_pDocument, charSet, csNameTag); |
1090 } | 1090 } |
1091 CPDF_Font* CPDF_InterForm::GetNativeFormFont(CFX_ByteString& csNameTag) | 1091 CPDF_Font* CPDF_InterForm::GetNativeFormFont(CFX_ByteString& csNameTag) |
1092 { | 1092 { |
1093 return GetNativeInterFormFont(m_pFormDict, m_pDocument, csNameTag); | 1093 return GetNativeInterFormFont(m_pFormDict, m_pDocument, csNameTag); |
1094 } | 1094 } |
1095 FX_BOOL CPDF_InterForm::FindFormFont(const CPDF_Font* pFont, CFX_ByteString& csN
ameTag) | 1095 bool CPDF_InterForm::FindFormFont(const CPDF_Font* pFont, CFX_ByteString& csName
Tag) |
1096 { | 1096 { |
1097 return FindInterFormFont(m_pFormDict, pFont, csNameTag); | 1097 return FindInterFormFont(m_pFormDict, pFont, csNameTag); |
1098 } | 1098 } |
1099 FX_BOOL CPDF_InterForm::FindFormFont(CFX_ByteString csFontName, CPDF_Font*& pFon
t, CFX_ByteString& csNameTag) | 1099 bool CPDF_InterForm::FindFormFont(CFX_ByteString csFontName, CPDF_Font*& pFont,
CFX_ByteString& csNameTag) |
1100 { | 1100 { |
1101 return FindInterFormFont(m_pFormDict, m_pDocument, csFontName, pFont, csName
Tag); | 1101 return FindInterFormFont(m_pFormDict, m_pDocument, csFontName, pFont, csName
Tag); |
1102 } | 1102 } |
1103 void CPDF_InterForm::AddFormFont(const CPDF_Font* pFont, CFX_ByteString& csNameT
ag) | 1103 void CPDF_InterForm::AddFormFont(const CPDF_Font* pFont, CFX_ByteString& csNameT
ag) |
1104 { | 1104 { |
1105 AddInterFormFont(m_pFormDict, m_pDocument, pFont, csNameTag); | 1105 AddInterFormFont(m_pFormDict, m_pDocument, pFont, csNameTag); |
1106 m_bUpdated = TRUE; | 1106 m_bUpdated = true; |
1107 } | 1107 } |
1108 CPDF_Font* CPDF_InterForm::AddNativeFormFont(uint8_t charSet, CFX_ByteString& cs
NameTag) | 1108 CPDF_Font* CPDF_InterForm::AddNativeFormFont(uint8_t charSet, CFX_ByteString& cs
NameTag) |
1109 { | 1109 { |
1110 m_bUpdated = TRUE; | 1110 m_bUpdated = true; |
1111 return AddNativeInterFormFont(m_pFormDict, m_pDocument, charSet, csNameTag); | 1111 return AddNativeInterFormFont(m_pFormDict, m_pDocument, charSet, csNameTag); |
1112 } | 1112 } |
1113 CPDF_Font* CPDF_InterForm::AddNativeFormFont(CFX_ByteString& csNameTag) | 1113 CPDF_Font* CPDF_InterForm::AddNativeFormFont(CFX_ByteString& csNameTag) |
1114 { | 1114 { |
1115 m_bUpdated = TRUE; | 1115 m_bUpdated = true; |
1116 return AddNativeInterFormFont(m_pFormDict, m_pDocument, csNameTag); | 1116 return AddNativeInterFormFont(m_pFormDict, m_pDocument, csNameTag); |
1117 } | 1117 } |
1118 void CPDF_InterForm::RemoveFormFont(const CPDF_Font* pFont) | 1118 void CPDF_InterForm::RemoveFormFont(const CPDF_Font* pFont) |
1119 { | 1119 { |
1120 m_bUpdated = TRUE; | 1120 m_bUpdated = true; |
1121 RemoveInterFormFont(m_pFormDict, pFont); | 1121 RemoveInterFormFont(m_pFormDict, pFont); |
1122 } | 1122 } |
1123 void CPDF_InterForm::RemoveFormFont(CFX_ByteString csNameTag) | 1123 void CPDF_InterForm::RemoveFormFont(CFX_ByteString csNameTag) |
1124 { | 1124 { |
1125 m_bUpdated = TRUE; | 1125 m_bUpdated = true; |
1126 RemoveInterFormFont(m_pFormDict, csNameTag); | 1126 RemoveInterFormFont(m_pFormDict, csNameTag); |
1127 } | 1127 } |
1128 CPDF_DefaultAppearance CPDF_InterForm::GetDefaultAppearance() | 1128 CPDF_DefaultAppearance CPDF_InterForm::GetDefaultAppearance() |
1129 { | 1129 { |
1130 CFX_ByteString csDA; | 1130 CFX_ByteString csDA; |
1131 if (m_pFormDict == NULL) { | 1131 if (m_pFormDict == NULL) { |
1132 return csDA; | 1132 return csDA; |
1133 } | 1133 } |
1134 csDA = m_pFormDict->GetString("DA"); | 1134 csDA = m_pFormDict->GetString("DA"); |
1135 return csDA; | 1135 return csDA; |
1136 } | 1136 } |
1137 CPDF_Font* CPDF_InterForm::GetDefaultFormFont() | 1137 CPDF_Font* CPDF_InterForm::GetDefaultFormFont() |
1138 { | 1138 { |
1139 return GetDefaultInterFormFont(m_pFormDict, m_pDocument); | 1139 return GetDefaultInterFormFont(m_pFormDict, m_pDocument); |
1140 } | 1140 } |
1141 int CPDF_InterForm::GetFormAlignment() | 1141 int CPDF_InterForm::GetFormAlignment() |
1142 { | 1142 { |
1143 if (m_pFormDict == NULL) { | 1143 if (m_pFormDict == NULL) { |
1144 return 0; | 1144 return 0; |
1145 } | 1145 } |
1146 return m_pFormDict->GetInteger("Q", 0); | 1146 return m_pFormDict->GetInteger("Q", 0); |
1147 } | 1147 } |
1148 FX_BOOL CPDF_InterForm::ResetForm(const CFX_PtrArray& fields, FX_BOOL bIncludeOr
Exclude, FX_BOOL bNotify) | 1148 bool CPDF_InterForm::ResetForm(const CFX_PtrArray& fields, bool bIncludeOrExclud
e, bool bNotify) |
1149 { | 1149 { |
1150 if (bNotify && m_pFormNotify != NULL) { | 1150 if (bNotify && m_pFormNotify != NULL) { |
1151 int iRet = m_pFormNotify->BeforeFormReset(this); | 1151 int iRet = m_pFormNotify->BeforeFormReset(this); |
1152 if (iRet < 0) { | 1152 if (iRet < 0) { |
1153 return FALSE; | 1153 return false; |
1154 } | 1154 } |
1155 } | 1155 } |
1156 int nCount = m_pFieldTree->m_Root.CountFields(); | 1156 int nCount = m_pFieldTree->m_Root.CountFields(); |
1157 for (int i = 0; i < nCount; i++) { | 1157 for (int i = 0; i < nCount; i++) { |
1158 CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); | 1158 CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); |
1159 if (pField == NULL) { | 1159 if (pField == NULL) { |
1160 continue; | 1160 continue; |
1161 } | 1161 } |
1162 FX_BOOL bFind = FALSE; | 1162 bool bFind = false; |
1163 int iCount = fields.GetSize(); | 1163 int iCount = fields.GetSize(); |
1164 for (int i = 0; i < iCount; i ++) { | 1164 for (int i = 0; i < iCount; i ++) { |
1165 if (pField == (CPDF_FormField*)fields[i]) { | 1165 if (pField == (CPDF_FormField*)fields[i]) { |
1166 bFind = TRUE; | 1166 bFind = true; |
1167 break; | 1167 break; |
1168 } | 1168 } |
1169 } | 1169 } |
1170 if ((bIncludeOrExclude && bFind) || (!bIncludeOrExclude && !bFind)) { | 1170 if ((bIncludeOrExclude && bFind) || (!bIncludeOrExclude && !bFind)) { |
1171 pField->ResetField(bNotify); | 1171 pField->ResetField(bNotify); |
1172 } | 1172 } |
1173 } | 1173 } |
1174 if (bNotify && m_pFormNotify != NULL) { | 1174 if (bNotify && m_pFormNotify != NULL) { |
1175 m_pFormNotify->AfterFormReset(this); | 1175 m_pFormNotify->AfterFormReset(this); |
1176 } | 1176 } |
1177 return TRUE; | 1177 return true; |
1178 } | 1178 } |
1179 FX_BOOL CPDF_InterForm::ResetForm(FX_BOOL bNotify) | 1179 bool CPDF_InterForm::ResetForm(bool bNotify) |
1180 { | 1180 { |
1181 if (bNotify && m_pFormNotify != NULL) { | 1181 if (bNotify && m_pFormNotify != NULL) { |
1182 int iRet = m_pFormNotify->BeforeFormReset(this); | 1182 int iRet = m_pFormNotify->BeforeFormReset(this); |
1183 if (iRet < 0) { | 1183 if (iRet < 0) { |
1184 return FALSE; | 1184 return false; |
1185 } | 1185 } |
1186 } | 1186 } |
1187 int nCount = m_pFieldTree->m_Root.CountFields(); | 1187 int nCount = m_pFieldTree->m_Root.CountFields(); |
1188 for (int i = 0; i < nCount; i++) { | 1188 for (int i = 0; i < nCount; i++) { |
1189 CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); | 1189 CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); |
1190 if (pField == NULL) { | 1190 if (pField == NULL) { |
1191 continue; | 1191 continue; |
1192 } | 1192 } |
1193 pField->ResetField(bNotify); | 1193 pField->ResetField(bNotify); |
1194 } | 1194 } |
1195 if (bNotify && m_pFormNotify != NULL) { | 1195 if (bNotify && m_pFormNotify != NULL) { |
1196 m_pFormNotify->AfterFormReset(this); | 1196 m_pFormNotify->AfterFormReset(this); |
1197 } | 1197 } |
1198 return TRUE; | 1198 return true; |
1199 } | 1199 } |
1200 void CPDF_InterForm::ReloadForm() | 1200 void CPDF_InterForm::ReloadForm() |
1201 { | 1201 { |
1202 FX_POSITION pos = m_ControlMap.GetStartPosition(); | 1202 FX_POSITION pos = m_ControlMap.GetStartPosition(); |
1203 while (pos) { | 1203 while (pos) { |
1204 CPDF_Dictionary* pWidgetDict; | 1204 CPDF_Dictionary* pWidgetDict; |
1205 CPDF_FormControl* pControl; | 1205 CPDF_FormControl* pControl; |
1206 m_ControlMap.GetNextAssoc(pos, (void*&)pWidgetDict, (void*&)pControl); | 1206 m_ControlMap.GetNextAssoc(pos, (void*&)pWidgetDict, (void*&)pControl); |
1207 delete pControl; | 1207 delete pControl; |
1208 } | 1208 } |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1249 if (pChildDict) { | 1249 if (pChildDict) { |
1250 if (pChildDict->GetObjNum() != dwParentObjNum) { | 1250 if (pChildDict->GetObjNum() != dwParentObjNum) { |
1251 LoadField(pChildDict, nLevel + 1); | 1251 LoadField(pChildDict, nLevel + 1); |
1252 } | 1252 } |
1253 } | 1253 } |
1254 } | 1254 } |
1255 } else { | 1255 } else { |
1256 AddTerminalField(pFieldDict); | 1256 AddTerminalField(pFieldDict); |
1257 } | 1257 } |
1258 } | 1258 } |
1259 FX_BOOL CPDF_InterForm::HasXFAForm() const | 1259 bool CPDF_InterForm::HasXFAForm() const |
1260 { | 1260 { |
1261 return m_pFormDict && m_pFormDict->GetArray(FX_BSTRC("XFA")) != NULL; | 1261 return m_pFormDict && m_pFormDict->GetArray(FX_BSTRC("XFA")) != NULL; |
1262 } | 1262 } |
1263 void CPDF_InterForm::FixPageFields(const CPDF_Page* pPage) | 1263 void CPDF_InterForm::FixPageFields(const CPDF_Page* pPage) |
1264 { | 1264 { |
1265 ASSERT(pPage != NULL); | 1265 ASSERT(pPage != NULL); |
1266 CPDF_Dictionary* pPageDict = pPage->m_pFormDict; | 1266 CPDF_Dictionary* pPageDict = pPage->m_pFormDict; |
1267 if (pPageDict == NULL) { | 1267 if (pPageDict == NULL) { |
1268 return; | 1268 return; |
1269 } | 1269 } |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1310 if (pFieldDict->KeyExist(FX_BSTRC("Ff"))) { | 1310 if (pFieldDict->KeyExist(FX_BSTRC("Ff"))) { |
1311 CPDF_Object *pFfValue = pFieldDict->GetElementValue(FX_BSTRC("Ff
")); | 1311 CPDF_Object *pFfValue = pFieldDict->GetElementValue(FX_BSTRC("Ff
")); |
1312 if (pFfValue) { | 1312 if (pFfValue) { |
1313 pParent->SetAt(FX_BSTRC("Ff"), pFfValue->Clone()); | 1313 pParent->SetAt(FX_BSTRC("Ff"), pFfValue->Clone()); |
1314 } | 1314 } |
1315 } | 1315 } |
1316 } | 1316 } |
1317 pField = new CPDF_FormField(this, pParent); | 1317 pField = new CPDF_FormField(this, pParent); |
1318 CPDF_Object* pTObj = pDict->GetElement("T"); | 1318 CPDF_Object* pTObj = pDict->GetElement("T"); |
1319 if (pTObj && pTObj->GetType() == PDFOBJ_REFERENCE) { | 1319 if (pTObj && pTObj->GetType() == PDFOBJ_REFERENCE) { |
1320 CPDF_Object* pClone = pTObj->Clone(TRUE); | 1320 CPDF_Object* pClone = pTObj->Clone(true); |
1321 if (pClone) { | 1321 if (pClone) { |
1322 pDict->SetAt("T", pClone); | 1322 pDict->SetAt("T", pClone); |
1323 } else { | 1323 } else { |
1324 pDict->SetAtName("T", ""); | 1324 pDict->SetAtName("T", ""); |
1325 } | 1325 } |
1326 } | 1326 } |
1327 m_pFieldTree->SetField(csWName, pField); | 1327 m_pFieldTree->SetField(csWName, pField); |
1328 } | 1328 } |
1329 CPDF_Array* pKids = pFieldDict->GetArray("Kids"); | 1329 CPDF_Array* pKids = pFieldDict->GetArray("Kids"); |
1330 if (pKids == NULL) { | 1330 if (pKids == NULL) { |
(...skipping 18 matching lines...) Expand all Loading... |
1349 { | 1349 { |
1350 void *rValue = NULL; | 1350 void *rValue = NULL; |
1351 if (m_ControlMap.Lookup((CPDF_Dictionary*)pWidgetDict, rValue)) { | 1351 if (m_ControlMap.Lookup((CPDF_Dictionary*)pWidgetDict, rValue)) { |
1352 return (CPDF_FormControl*)rValue; | 1352 return (CPDF_FormControl*)rValue; |
1353 } | 1353 } |
1354 CPDF_FormControl* pControl = new CPDF_FormControl((CPDF_FormField*)pField, (
CPDF_Dictionary*)pWidgetDict); | 1354 CPDF_FormControl* pControl = new CPDF_FormControl((CPDF_FormField*)pField, (
CPDF_Dictionary*)pWidgetDict); |
1355 m_ControlMap.SetAt((CPDF_Dictionary*)pWidgetDict, pControl); | 1355 m_ControlMap.SetAt((CPDF_Dictionary*)pWidgetDict, pControl); |
1356 ((CPDF_FormField*)pField)->m_ControlList.Add(pControl); | 1356 ((CPDF_FormField*)pField)->m_ControlList.Add(pControl); |
1357 return pControl; | 1357 return pControl; |
1358 } | 1358 } |
1359 CPDF_FormField* CPDF_InterForm::CheckRequiredFields(const CFX_PtrArray *fields,
FX_BOOL bIncludeOrExclude) const | 1359 CPDF_FormField* CPDF_InterForm::CheckRequiredFields(const CFX_PtrArray *fields,
bool bIncludeOrExclude) const |
1360 { | 1360 { |
1361 int nCount = m_pFieldTree->m_Root.CountFields(); | 1361 int nCount = m_pFieldTree->m_Root.CountFields(); |
1362 for (int i = 0; i < nCount; i++) { | 1362 for (int i = 0; i < nCount; i++) { |
1363 CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); | 1363 CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); |
1364 if (pField == NULL) { | 1364 if (pField == NULL) { |
1365 continue; | 1365 continue; |
1366 } | 1366 } |
1367 int32_t iType = pField->GetType(); | 1367 int32_t iType = pField->GetType(); |
1368 if (iType == CPDF_FormField::PushButton || iType == CPDF_FormField::Chec
kBox || iType == CPDF_FormField::ListBox) { | 1368 if (iType == CPDF_FormField::PushButton || iType == CPDF_FormField::Chec
kBox || iType == CPDF_FormField::ListBox) { |
1369 continue; | 1369 continue; |
1370 } | 1370 } |
1371 FX_DWORD dwFlags = pField->GetFieldFlags(); | 1371 FX_DWORD dwFlags = pField->GetFieldFlags(); |
1372 if (dwFlags & 0x04) { | 1372 if (dwFlags & 0x04) { |
1373 continue; | 1373 continue; |
1374 } | 1374 } |
1375 FX_BOOL bFind = TRUE; | 1375 bool bFind = true; |
1376 if (fields != NULL) { | 1376 if (fields != NULL) { |
1377 bFind = fields->Find(pField, 0) >= 0; | 1377 bFind = fields->Find(pField, 0) >= 0; |
1378 } | 1378 } |
1379 if ((bIncludeOrExclude && bFind) || (!bIncludeOrExclude && !bFind)) { | 1379 if ((bIncludeOrExclude && bFind) || (!bIncludeOrExclude && !bFind)) { |
1380 CPDF_Dictionary *pFieldDict = pField->m_pDict; | 1380 CPDF_Dictionary *pFieldDict = pField->m_pDict; |
1381 if ((dwFlags & 0x02) != 0 && pFieldDict->GetString("V").IsEmpty()) { | 1381 if ((dwFlags & 0x02) != 0 && pFieldDict->GetString("V").IsEmpty()) { |
1382 return pField; | 1382 return pField; |
1383 } | 1383 } |
1384 } | 1384 } |
1385 } | 1385 } |
1386 return NULL; | 1386 return NULL; |
1387 } | 1387 } |
1388 CFDF_Document* CPDF_InterForm::ExportToFDF(const CFX_WideStringC& pdf_path, FX_B
OOL bSimpleFileSpec) const | 1388 CFDF_Document* CPDF_InterForm::ExportToFDF(const CFX_WideStringC& pdf_path, bool
bSimpleFileSpec) const |
1389 { | 1389 { |
1390 CFX_PtrArray fields; | 1390 CFX_PtrArray fields; |
1391 int nCount = m_pFieldTree->m_Root.CountFields(); | 1391 int nCount = m_pFieldTree->m_Root.CountFields(); |
1392 for (int i = 0; i < nCount; i ++) { | 1392 for (int i = 0; i < nCount; i ++) { |
1393 CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); | 1393 CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); |
1394 fields.Add(pField); | 1394 fields.Add(pField); |
1395 } | 1395 } |
1396 return ExportToFDF(pdf_path, fields, TRUE, bSimpleFileSpec); | 1396 return ExportToFDF(pdf_path, fields, true, bSimpleFileSpec); |
1397 } | 1397 } |
1398 CFX_WideString FILESPEC_EncodeFileName(const CFX_WideStringC& filepath); | 1398 CFX_WideString FILESPEC_EncodeFileName(const CFX_WideStringC& filepath); |
1399 CFDF_Document* CPDF_InterForm::ExportToFDF(const CFX_WideStringC& pdf_path, CFX_
PtrArray& fields, FX_BOOL bIncludeOrExclude, FX_BOOL bSimpleFileSpec) const | 1399 CFDF_Document* CPDF_InterForm::ExportToFDF(const CFX_WideStringC& pdf_path, CFX_
PtrArray& fields, bool bIncludeOrExclude, bool bSimpleFileSpec) const |
1400 { | 1400 { |
1401 CFDF_Document* pDoc = CFDF_Document::CreateNewDoc(); | 1401 CFDF_Document* pDoc = CFDF_Document::CreateNewDoc(); |
1402 if (pDoc == NULL) { | 1402 if (pDoc == NULL) { |
1403 return NULL; | 1403 return NULL; |
1404 } | 1404 } |
1405 CPDF_Dictionary* pMainDict = pDoc->GetRoot()->GetDict("FDF"); | 1405 CPDF_Dictionary* pMainDict = pDoc->GetRoot()->GetDict("FDF"); |
1406 if (!pdf_path.IsEmpty()) { | 1406 if (!pdf_path.IsEmpty()) { |
1407 if (bSimpleFileSpec) { | 1407 if (bSimpleFileSpec) { |
1408 CFX_WideString wsFilePath = FILESPEC_EncodeFileName(pdf_path); | 1408 CFX_WideString wsFilePath = FILESPEC_EncodeFileName(pdf_path); |
1409 pMainDict->SetAtString(FX_BSTRC("F"), CFX_ByteString::FromUnicode(ws
FilePath)); | 1409 pMainDict->SetAtString(FX_BSTRC("F"), CFX_ByteString::FromUnicode(ws
FilePath)); |
(...skipping 12 matching lines...) Expand all Loading... |
1422 int nCount = m_pFieldTree->m_Root.CountFields(); | 1422 int nCount = m_pFieldTree->m_Root.CountFields(); |
1423 for (int i = 0; i < nCount; i ++) { | 1423 for (int i = 0; i < nCount; i ++) { |
1424 CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); | 1424 CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); |
1425 if (pField == NULL || pField->GetType() == CPDF_FormField::PushButton) { | 1425 if (pField == NULL || pField->GetType() == CPDF_FormField::PushButton) { |
1426 continue; | 1426 continue; |
1427 } | 1427 } |
1428 FX_DWORD dwFlags = pField->GetFieldFlags(); | 1428 FX_DWORD dwFlags = pField->GetFieldFlags(); |
1429 if (dwFlags & 0x04) { | 1429 if (dwFlags & 0x04) { |
1430 continue; | 1430 continue; |
1431 } | 1431 } |
1432 FX_BOOL bFind = fields.Find(pField, 0) >= 0; | 1432 bool bFind = fields.Find(pField, 0) >= 0; |
1433 if ((bIncludeOrExclude && bFind) || (!bIncludeOrExclude && !bFind)) { | 1433 if ((bIncludeOrExclude && bFind) || (!bIncludeOrExclude && !bFind)) { |
1434 if ((dwFlags & 0x02) != 0 && pField->m_pDict->GetString("V").IsEmpty
()) { | 1434 if ((dwFlags & 0x02) != 0 && pField->m_pDict->GetString("V").IsEmpty
()) { |
1435 continue; | 1435 continue; |
1436 } | 1436 } |
1437 CFX_WideString fullname = GetFullName(pField->GetFieldDict()); | 1437 CFX_WideString fullname = GetFullName(pField->GetFieldDict()); |
1438 CPDF_Dictionary* pFieldDict = CPDF_Dictionary::Create(); | 1438 CPDF_Dictionary* pFieldDict = CPDF_Dictionary::Create(); |
1439 if (pFieldDict == NULL) { | 1439 if (pFieldDict == NULL) { |
1440 return NULL; | 1440 return NULL; |
1441 } | 1441 } |
1442 CPDF_String* pString = CPDF_String::Create(fullname); | 1442 CPDF_String* pString = CPDF_String::Create(fullname); |
1443 if (pString == NULL) { | 1443 if (pString == NULL) { |
1444 pFieldDict->Release(); | 1444 pFieldDict->Release(); |
1445 return NULL; | 1445 return NULL; |
1446 } | 1446 } |
1447 pFieldDict->SetAt("T", pString); | 1447 pFieldDict->SetAt("T", pString); |
1448 if (pField->GetType() == CPDF_FormField::CheckBox || pField->GetType
() == CPDF_FormField::RadioButton) { | 1448 if (pField->GetType() == CPDF_FormField::CheckBox || pField->GetType
() == CPDF_FormField::RadioButton) { |
1449 CFX_WideString csExport = pField->GetCheckValue(FALSE); | 1449 CFX_WideString csExport = pField->GetCheckValue(false); |
1450 CFX_ByteString csBExport = PDF_EncodeText(csExport); | 1450 CFX_ByteString csBExport = PDF_EncodeText(csExport); |
1451 CPDF_Object* pOpt = FPDF_GetFieldAttr(pField->m_pDict, "Opt"); | 1451 CPDF_Object* pOpt = FPDF_GetFieldAttr(pField->m_pDict, "Opt"); |
1452 if (pOpt == NULL) { | 1452 if (pOpt == NULL) { |
1453 pFieldDict->SetAtName("V", csBExport); | 1453 pFieldDict->SetAtName("V", csBExport); |
1454 } else { | 1454 } else { |
1455 pFieldDict->SetAtString("V", csBExport); | 1455 pFieldDict->SetAtString("V", csBExport); |
1456 } | 1456 } |
1457 } else { | 1457 } else { |
1458 CPDF_Object* pV = FPDF_GetFieldAttr(pField->m_pDict, "V"); | 1458 CPDF_Object* pV = FPDF_GetFieldAttr(pField->m_pDict, "V"); |
1459 if (pV != NULL) { | 1459 if (pV != NULL) { |
1460 pFieldDict->SetAt("V", pV->Clone(TRUE)); | 1460 pFieldDict->SetAt("V", pV->Clone(true)); |
1461 } | 1461 } |
1462 } | 1462 } |
1463 pFields->Add(pFieldDict); | 1463 pFields->Add(pFieldDict); |
1464 } | 1464 } |
1465 } | 1465 } |
1466 return pDoc; | 1466 return pDoc; |
1467 } | 1467 } |
1468 const struct _SupportFieldEncoding { | 1468 const struct _SupportFieldEncoding { |
1469 const FX_CHAR* m_name; | 1469 const FX_CHAR* m_name; |
1470 int32_t m_codePage; | 1470 int32_t m_codePage; |
(...skipping 19 matching lines...) Expand all Loading... |
1490 csValue.ConvertFrom(csBValue, pCharMap); | 1490 csValue.ConvertFrom(csBValue, pCharMap); |
1491 return; | 1491 return; |
1492 } | 1492 } |
1493 CFX_ByteString csTemp = csBValue.Left(2); | 1493 CFX_ByteString csTemp = csBValue.Left(2); |
1494 if (csTemp == "\xFF\xFE" || csTemp == "\xFE\xFF") { | 1494 if (csTemp == "\xFF\xFE" || csTemp == "\xFE\xFF") { |
1495 csValue = PDF_DecodeText(csBValue); | 1495 csValue = PDF_DecodeText(csBValue); |
1496 } else { | 1496 } else { |
1497 csValue = CFX_WideString::FromLocal(csBValue); | 1497 csValue = CFX_WideString::FromLocal(csBValue); |
1498 } | 1498 } |
1499 } | 1499 } |
1500 void CPDF_InterForm::FDF_ImportField(CPDF_Dictionary* pFieldDict, const CFX_Wide
String& parent_name, FX_BOOL bNotify, int nLevel) | 1500 void CPDF_InterForm::FDF_ImportField(CPDF_Dictionary* pFieldDict, const CFX_Wide
String& parent_name, bool bNotify, int nLevel) |
1501 { | 1501 { |
1502 CFX_WideString name; | 1502 CFX_WideString name; |
1503 if (!parent_name.IsEmpty()) { | 1503 if (!parent_name.IsEmpty()) { |
1504 name = parent_name + L"."; | 1504 name = parent_name + L"."; |
1505 } | 1505 } |
1506 name += pFieldDict->GetUnicodeText("T"); | 1506 name += pFieldDict->GetUnicodeText("T"); |
1507 CPDF_Array* pKids = pFieldDict->GetArray("Kids"); | 1507 CPDF_Array* pKids = pFieldDict->GetArray("Kids"); |
1508 if (pKids) { | 1508 if (pKids) { |
1509 for (FX_DWORD i = 0; i < pKids->GetCount(); i ++) { | 1509 for (FX_DWORD i = 0; i < pKids->GetCount(); i ++) { |
1510 CPDF_Dictionary* pKid = pKids->GetDict(i); | 1510 CPDF_Dictionary* pKid = pKids->GetDict(i); |
(...skipping 27 matching lines...) Expand all Loading... |
1538 return; | 1538 return; |
1539 } | 1539 } |
1540 } | 1540 } |
1541 CFX_ByteArray statusArray; | 1541 CFX_ByteArray statusArray; |
1542 if (iType == FIELDTYPE_CHECKBOX || iType == FIELDTYPE_RADIOBUTTON) { | 1542 if (iType == FIELDTYPE_CHECKBOX || iType == FIELDTYPE_RADIOBUTTON) { |
1543 SaveCheckedFieldStatus(pField, statusArray); | 1543 SaveCheckedFieldStatus(pField, statusArray); |
1544 } | 1544 } |
1545 pField->SetValue(csWValue); | 1545 pField->SetValue(csWValue); |
1546 CPDF_FormField::Type eType = pField->GetType(); | 1546 CPDF_FormField::Type eType = pField->GetType(); |
1547 if ((eType == CPDF_FormField::ListBox || eType == CPDF_FormField::ComboBox)
&& pFieldDict->KeyExist("Opt")) { | 1547 if ((eType == CPDF_FormField::ListBox || eType == CPDF_FormField::ComboBox)
&& pFieldDict->KeyExist("Opt")) { |
1548 pField->m_pDict->SetAt("Opt", pFieldDict->GetElementValue("Opt")->Clone(
TRUE)); | 1548 pField->m_pDict->SetAt("Opt", pFieldDict->GetElementValue("Opt")->Clone(
true)); |
1549 } | 1549 } |
1550 if (bNotify && m_pFormNotify != NULL) { | 1550 if (bNotify && m_pFormNotify != NULL) { |
1551 if (iType == FIELDTYPE_CHECKBOX || iType == FIELDTYPE_RADIOBUTTON) { | 1551 if (iType == FIELDTYPE_CHECKBOX || iType == FIELDTYPE_RADIOBUTTON) { |
1552 m_pFormNotify->AfterCheckedStatusChange(pField, statusArray); | 1552 m_pFormNotify->AfterCheckedStatusChange(pField, statusArray); |
1553 } else if (iType == FIELDTYPE_LISTBOX) { | 1553 } else if (iType == FIELDTYPE_LISTBOX) { |
1554 m_pFormNotify->AfterSelectionChange(pField); | 1554 m_pFormNotify->AfterSelectionChange(pField); |
1555 } else if (iType == FIELDTYPE_COMBOBOX || iType == FIELDTYPE_TEXTFIELD)
{ | 1555 } else if (iType == FIELDTYPE_COMBOBOX || iType == FIELDTYPE_TEXTFIELD)
{ |
1556 m_pFormNotify->AfterValueChange(pField); | 1556 m_pFormNotify->AfterValueChange(pField); |
1557 } | 1557 } |
1558 } | 1558 } |
1559 if (CPDF_InterForm::m_bUpdateAP) { | 1559 if (CPDF_InterForm::m_bUpdateAP) { |
1560 pField->UpdateAP(NULL); | 1560 pField->UpdateAP(NULL); |
1561 } | 1561 } |
1562 } | 1562 } |
1563 FX_BOOL CPDF_InterForm::ImportFromFDF(const CFDF_Document* pFDF, FX_BOOL bNotify
) | 1563 bool CPDF_InterForm::ImportFromFDF(const CFDF_Document* pFDF, bool bNotify) |
1564 { | 1564 { |
1565 if (pFDF == NULL) { | 1565 if (pFDF == NULL) { |
1566 return FALSE; | 1566 return false; |
1567 } | 1567 } |
1568 CPDF_Dictionary* pMainDict = pFDF->GetRoot()->GetDict("FDF"); | 1568 CPDF_Dictionary* pMainDict = pFDF->GetRoot()->GetDict("FDF"); |
1569 if (pMainDict == NULL) { | 1569 if (pMainDict == NULL) { |
1570 return FALSE; | 1570 return false; |
1571 } | 1571 } |
1572 CPDF_Array* pFields = pMainDict->GetArray("Fields"); | 1572 CPDF_Array* pFields = pMainDict->GetArray("Fields"); |
1573 if (pFields == NULL) { | 1573 if (pFields == NULL) { |
1574 return FALSE; | 1574 return false; |
1575 } | 1575 } |
1576 m_bsEncoding = pMainDict->GetString(FX_BSTRC("Encoding")); | 1576 m_bsEncoding = pMainDict->GetString(FX_BSTRC("Encoding")); |
1577 if (bNotify && m_pFormNotify != NULL) { | 1577 if (bNotify && m_pFormNotify != NULL) { |
1578 int iRet = m_pFormNotify->BeforeFormImportData(this); | 1578 int iRet = m_pFormNotify->BeforeFormImportData(this); |
1579 if (iRet < 0) { | 1579 if (iRet < 0) { |
1580 return FALSE; | 1580 return false; |
1581 } | 1581 } |
1582 } | 1582 } |
1583 for (FX_DWORD i = 0; i < pFields->GetCount(); i ++) { | 1583 for (FX_DWORD i = 0; i < pFields->GetCount(); i ++) { |
1584 CPDF_Dictionary* pField = pFields->GetDict(i); | 1584 CPDF_Dictionary* pField = pFields->GetDict(i); |
1585 if (pField == NULL) { | 1585 if (pField == NULL) { |
1586 continue; | 1586 continue; |
1587 } | 1587 } |
1588 FDF_ImportField(pField, L"", bNotify); | 1588 FDF_ImportField(pField, L"", bNotify); |
1589 } | 1589 } |
1590 if (bNotify && m_pFormNotify != NULL) { | 1590 if (bNotify && m_pFormNotify != NULL) { |
1591 m_pFormNotify->AfterFormImportData(this); | 1591 m_pFormNotify->AfterFormImportData(this); |
1592 } | 1592 } |
1593 return TRUE; | 1593 return true; |
1594 } | 1594 } |
1595 void CPDF_InterForm::SetFormNotify(const CPDF_FormNotify* pNotify) | 1595 void CPDF_InterForm::SetFormNotify(const CPDF_FormNotify* pNotify) |
1596 { | 1596 { |
1597 m_pFormNotify = (CPDF_FormNotify*)pNotify; | 1597 m_pFormNotify = (CPDF_FormNotify*)pNotify; |
1598 } | 1598 } |
1599 int CPDF_InterForm::GetPageWithWidget(int iCurPage, FX_BOOL bNext) | 1599 int CPDF_InterForm::GetPageWithWidget(int iCurPage, bool bNext) |
1600 { | 1600 { |
1601 if (iCurPage < 0) { | 1601 if (iCurPage < 0) { |
1602 return -1; | 1602 return -1; |
1603 } | 1603 } |
1604 int iPageCount = m_pDocument->GetPageCount(); | 1604 int iPageCount = m_pDocument->GetPageCount(); |
1605 if (iCurPage >= iPageCount) { | 1605 if (iCurPage >= iPageCount) { |
1606 return -1; | 1606 return -1; |
1607 } | 1607 } |
1608 int iNewPage = iCurPage; | 1608 int iNewPage = iCurPage; |
1609 do { | 1609 do { |
(...skipping 19 matching lines...) Expand all Loading... |
1629 for (FX_DWORD i = 0; i < dwCount; i ++) { | 1629 for (FX_DWORD i = 0; i < dwCount; i ++) { |
1630 CPDF_Object* pAnnotDict = pAnnots->GetElementValue(i); | 1630 CPDF_Object* pAnnotDict = pAnnots->GetElementValue(i); |
1631 if (pAnnotDict == NULL) { | 1631 if (pAnnotDict == NULL) { |
1632 continue; | 1632 continue; |
1633 } | 1633 } |
1634 CPDF_FormControl* pControl = NULL; | 1634 CPDF_FormControl* pControl = NULL; |
1635 if (m_ControlMap.Lookup(pAnnotDict, (void*&)pControl)) { | 1635 if (m_ControlMap.Lookup(pAnnotDict, (void*&)pControl)) { |
1636 return iNewPage; | 1636 return iNewPage; |
1637 } | 1637 } |
1638 } | 1638 } |
1639 } while (TRUE); | 1639 } while (true); |
1640 return -1; | 1640 return -1; |
1641 } | 1641 } |
OLD | NEW |