| 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 "xfa/fxfa/parser/xfa_localevalue.h" | 7 #include "xfa/fxfa/parser/xfa_localevalue.h" |
| 8 | 8 |
| 9 #include "xfa/fgas/localization/fgas_localeimp.h" |
| 9 #include "xfa/fxfa/fm2js/xfa_fm2jsapi.h" | 10 #include "xfa/fxfa/fm2js/xfa_fm2jsapi.h" |
| 10 #include "xfa/fxfa/parser/xfa_docdata.h" | 11 #include "xfa/fxfa/parser/xfa_docdata.h" |
| 11 #include "xfa/fxfa/parser/xfa_doclayout.h" | 12 #include "xfa/fxfa/parser/xfa_doclayout.h" |
| 12 #include "xfa/fxfa/parser/xfa_document.h" | 13 #include "xfa/fxfa/parser/xfa_document.h" |
| 13 #include "xfa/fxfa/parser/xfa_localemgr.h" | 14 #include "xfa/fxfa/parser/xfa_localemgr.h" |
| 14 #include "xfa/fxfa/parser/xfa_object.h" | 15 #include "xfa/fxfa/parser/xfa_object.h" |
| 15 #include "xfa/fxfa/parser/xfa_parser.h" | 16 #include "xfa/fxfa/parser/xfa_parser.h" |
| 16 #include "xfa/fxfa/parser/xfa_script.h" | 17 #include "xfa/fxfa/parser/xfa_script.h" |
| 17 #include "xfa/fxfa/parser/xfa_utils.h" | 18 #include "xfa/fxfa/parser/xfa_utils.h" |
| 18 | 19 |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 } | 99 } |
| 99 FX_BOOL CXFA_LocaleValue::ValidateValue(const CFX_WideString& wsValue, | 100 FX_BOOL CXFA_LocaleValue::ValidateValue(const CFX_WideString& wsValue, |
| 100 const CFX_WideString& wsPattern, | 101 const CFX_WideString& wsPattern, |
| 101 IFX_Locale* pLocale, | 102 IFX_Locale* pLocale, |
| 102 CFX_WideString* pMatchFormat) { | 103 CFX_WideString* pMatchFormat) { |
| 103 CFX_WideString wsOutput; | 104 CFX_WideString wsOutput; |
| 104 IFX_Locale* locale = m_pLocaleMgr->GetDefLocale(); | 105 IFX_Locale* locale = m_pLocaleMgr->GetDefLocale(); |
| 105 if (pLocale) { | 106 if (pLocale) { |
| 106 m_pLocaleMgr->SetDefLocale(pLocale); | 107 m_pLocaleMgr->SetDefLocale(pLocale); |
| 107 } | 108 } |
| 108 IFX_FormatString* pFormat = IFX_FormatString::Create(m_pLocaleMgr, FALSE); | 109 CFX_FormatString* pFormat = nullptr; |
| 110 if (m_pLocaleMgr) |
| 111 pFormat = new CFX_FormatString(m_pLocaleMgr, FALSE); |
| 112 |
| 109 CFX_WideStringArray wsPatterns; | 113 CFX_WideStringArray wsPatterns; |
| 110 pFormat->SplitFormatString(wsPattern, wsPatterns); | 114 pFormat->SplitFormatString(wsPattern, wsPatterns); |
| 111 FX_BOOL bRet = FALSE; | 115 FX_BOOL bRet = FALSE; |
| 112 int32_t iCount = wsPatterns.GetSize(); | 116 int32_t iCount = wsPatterns.GetSize(); |
| 113 int32_t i = 0; | 117 int32_t i = 0; |
| 114 for (; i < iCount && !bRet; i++) { | 118 for (; i < iCount && !bRet; i++) { |
| 115 CFX_WideString wsFormat = wsPatterns[i]; | 119 CFX_WideString wsFormat = wsPatterns[i]; |
| 116 FX_LOCALECATEGORY eCategory = pFormat->GetCategory(wsFormat); | 120 FX_LOCALECATEGORY eCategory = pFormat->GetCategory(wsFormat); |
| 117 eCategory = XFA_ValugeCategory(eCategory, m_dwType); | 121 eCategory = XFA_ValugeCategory(eCategory, m_dwType); |
| 118 switch (eCategory) { | 122 switch (eCategory) { |
| (...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 455 IFX_Locale* pLocale) { | 459 IFX_Locale* pLocale) { |
| 456 m_dwType = XFA_VT_DATETIME; | 460 m_dwType = XFA_VT_DATETIME; |
| 457 return m_bValid = ParsePatternValue(wsDateTime, wsFormat, pLocale); | 461 return m_bValid = ParsePatternValue(wsDateTime, wsFormat, pLocale); |
| 458 } | 462 } |
| 459 FX_BOOL CXFA_LocaleValue::FormatPatterns(CFX_WideString& wsResult, | 463 FX_BOOL CXFA_LocaleValue::FormatPatterns(CFX_WideString& wsResult, |
| 460 const CFX_WideString& wsFormat, | 464 const CFX_WideString& wsFormat, |
| 461 IFX_Locale* pLocale, | 465 IFX_Locale* pLocale, |
| 462 XFA_VALUEPICTURE eValueType) const { | 466 XFA_VALUEPICTURE eValueType) const { |
| 463 wsResult.Empty(); | 467 wsResult.Empty(); |
| 464 FX_BOOL bRet = FALSE; | 468 FX_BOOL bRet = FALSE; |
| 465 IFX_FormatString* pFormat = IFX_FormatString::Create(m_pLocaleMgr, FALSE); | 469 |
| 470 CFX_FormatString* pFormat = nullptr; |
| 471 if (m_pLocaleMgr) |
| 472 pFormat = new CFX_FormatString(m_pLocaleMgr, FALSE); |
| 473 |
| 466 CFX_WideStringArray wsPatterns; | 474 CFX_WideStringArray wsPatterns; |
| 467 pFormat->SplitFormatString(wsFormat, wsPatterns); | 475 pFormat->SplitFormatString(wsFormat, wsPatterns); |
| 468 int32_t iCount = wsPatterns.GetSize(); | 476 int32_t iCount = wsPatterns.GetSize(); |
| 469 for (int32_t i = 0; i < iCount; i++) { | 477 for (int32_t i = 0; i < iCount; i++) { |
| 470 bRet = FormatSinglePattern(wsResult, wsPatterns[i], pLocale, eValueType); | 478 bRet = FormatSinglePattern(wsResult, wsPatterns[i], pLocale, eValueType); |
| 471 if (bRet) { | 479 if (bRet) { |
| 472 break; | 480 break; |
| 473 } | 481 } |
| 474 } | 482 } |
| 475 pFormat->Release(); | 483 pFormat->Release(); |
| 476 return bRet; | 484 return bRet; |
| 477 } | 485 } |
| 478 FX_BOOL CXFA_LocaleValue::FormatSinglePattern( | 486 FX_BOOL CXFA_LocaleValue::FormatSinglePattern( |
| 479 CFX_WideString& wsResult, | 487 CFX_WideString& wsResult, |
| 480 const CFX_WideString& wsFormat, | 488 const CFX_WideString& wsFormat, |
| 481 IFX_Locale* pLocale, | 489 IFX_Locale* pLocale, |
| 482 XFA_VALUEPICTURE eValueType) const { | 490 XFA_VALUEPICTURE eValueType) const { |
| 483 IFX_Locale* locale = m_pLocaleMgr->GetDefLocale(); | 491 IFX_Locale* locale = m_pLocaleMgr->GetDefLocale(); |
| 484 if (pLocale) { | 492 if (pLocale) { |
| 485 m_pLocaleMgr->SetDefLocale(pLocale); | 493 m_pLocaleMgr->SetDefLocale(pLocale); |
| 486 } | 494 } |
| 487 wsResult.Empty(); | 495 wsResult.Empty(); |
| 488 FX_BOOL bRet = FALSE; | 496 FX_BOOL bRet = FALSE; |
| 489 IFX_FormatString* pFormat = IFX_FormatString::Create(m_pLocaleMgr, FALSE); | 497 |
| 498 CFX_FormatString* pFormat = nullptr; |
| 499 if (m_pLocaleMgr) |
| 500 pFormat = new CFX_FormatString(m_pLocaleMgr, FALSE); |
| 501 |
| 490 FX_LOCALECATEGORY eCategory = pFormat->GetCategory(wsFormat); | 502 FX_LOCALECATEGORY eCategory = pFormat->GetCategory(wsFormat); |
| 491 eCategory = XFA_ValugeCategory(eCategory, m_dwType); | 503 eCategory = XFA_ValugeCategory(eCategory, m_dwType); |
| 492 switch (eCategory) { | 504 switch (eCategory) { |
| 493 case FX_LOCALECATEGORY_Null: | 505 case FX_LOCALECATEGORY_Null: |
| 494 if (m_wsValue.IsEmpty()) { | 506 if (m_wsValue.IsEmpty()) { |
| 495 bRet = pFormat->FormatNull(wsFormat, wsResult); | 507 bRet = pFormat->FormatNull(wsFormat, wsResult); |
| 496 } | 508 } |
| 497 break; | 509 break; |
| 498 case FX_LOCALECATEGORY_Zero: | 510 case FX_LOCALECATEGORY_Zero: |
| 499 if (m_wsValue == FX_WSTRC(L"0")) { | 511 if (m_wsValue == FX_WSTRC(L"0")) { |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 786 CFX_Unitime dt; | 798 CFX_Unitime dt; |
| 787 return ValidateCanonicalDate(wsDate, dt) && ValidateCanonicalTime(wsTime); | 799 return ValidateCanonicalDate(wsDate, dt) && ValidateCanonicalTime(wsTime); |
| 788 } | 800 } |
| 789 FX_BOOL CXFA_LocaleValue::ParsePatternValue(const CFX_WideString& wsValue, | 801 FX_BOOL CXFA_LocaleValue::ParsePatternValue(const CFX_WideString& wsValue, |
| 790 const CFX_WideString& wsPattern, | 802 const CFX_WideString& wsPattern, |
| 791 IFX_Locale* pLocale) { | 803 IFX_Locale* pLocale) { |
| 792 IFX_Locale* locale = m_pLocaleMgr->GetDefLocale(); | 804 IFX_Locale* locale = m_pLocaleMgr->GetDefLocale(); |
| 793 if (pLocale) { | 805 if (pLocale) { |
| 794 m_pLocaleMgr->SetDefLocale(pLocale); | 806 m_pLocaleMgr->SetDefLocale(pLocale); |
| 795 } | 807 } |
| 796 IFX_FormatString* pFormat = IFX_FormatString::Create(m_pLocaleMgr, FALSE); | 808 |
| 809 CFX_FormatString* pFormat = nullptr; |
| 810 if (m_pLocaleMgr) |
| 811 pFormat = new CFX_FormatString(m_pLocaleMgr, FALSE); |
| 812 |
| 797 CFX_WideStringArray wsPatterns; | 813 CFX_WideStringArray wsPatterns; |
| 798 pFormat->SplitFormatString(wsPattern, wsPatterns); | 814 pFormat->SplitFormatString(wsPattern, wsPatterns); |
| 799 FX_BOOL bRet = FALSE; | 815 FX_BOOL bRet = FALSE; |
| 800 int32_t iCount = wsPatterns.GetSize(); | 816 int32_t iCount = wsPatterns.GetSize(); |
| 801 for (int32_t i = 0; i < iCount && !bRet; i++) { | 817 for (int32_t i = 0; i < iCount && !bRet; i++) { |
| 802 CFX_WideString wsFormat = wsPatterns[i]; | 818 CFX_WideString wsFormat = wsPatterns[i]; |
| 803 FX_LOCALECATEGORY eCategory = pFormat->GetCategory(wsFormat); | 819 FX_LOCALECATEGORY eCategory = pFormat->GetCategory(wsFormat); |
| 804 eCategory = XFA_ValugeCategory(eCategory, m_dwType); | 820 eCategory = XFA_ValugeCategory(eCategory, m_dwType); |
| 805 switch (eCategory) { | 821 switch (eCategory) { |
| 806 case FX_LOCALECATEGORY_Null: | 822 case FX_LOCALECATEGORY_Null: |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 974 } else if (cf == L'z') { | 990 } else if (cf == L'z') { |
| 975 nf++; | 991 nf++; |
| 976 } else { | 992 } else { |
| 977 return FALSE; | 993 return FALSE; |
| 978 } | 994 } |
| 979 } | 995 } |
| 980 n++; | 996 n++; |
| 981 } | 997 } |
| 982 return n == nCount; | 998 return n == nCount; |
| 983 } | 999 } |
| OLD | NEW |