14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file. 44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#ifndef XFA_FGAS_LOCALIZATION_FGAS_LOCALEIMP_H_ 84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define XFA_FGAS_LOCALIZATION_FGAS_LOCALEIMP_H_ 94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <vector> 114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fgas/localization/fgas_locale.h" 134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CFX_LCNumeric; 154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CFX_FormatString { 174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public: 184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_FormatString(IFX_LocaleMgr* pLocaleMgr, bool bUseLCID); 194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ~CFX_FormatString(); 204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void SplitFormatString(const CFX_WideString& wsFormatString, 224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::vector<CFX_WideString>& wsPatterns); 234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_LOCALECATEGORY GetCategory(const CFX_WideString& wsPattern); 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint16_t GetLCID(const CFX_WideString& wsPattern); 254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString GetLocaleName(const CFX_WideString& wsPattern); 264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool ParseText(const CFX_WideString& wsSrcText, 274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsPattern, 284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsValue); 294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool ParseNum(const CFX_WideString& wsSrcNum, 304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsPattern, 314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_FLOAT& fValue); 324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool ParseNum(const CFX_WideString& wsSrcNum, 334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsPattern, 344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsValue); 354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool ParseDateTime(const CFX_WideString& wsSrcDateTime, 364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsPattern, 374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_DATETIMETYPE eDateTimeType, 384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_Unitime& dtValue); 394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool ParseZero(const CFX_WideString& wsSrcText, 404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsPattern); 414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool ParseNull(const CFX_WideString& wsSrcText, 424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsPattern); 434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool FormatText(const CFX_WideString& wsSrcText, 444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsPattern, 454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsOutput); 464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool FormatNum(const CFX_WideString& wsSrcNum, 474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsPattern, 484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsOutput); 494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool FormatNum(FX_FLOAT fNum, 504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsPattern, 514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsOutput); 524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool FormatDateTime(const CFX_WideString& wsSrcDateTime, 534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsPattern, 544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsOutput); 554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool FormatDateTime(const CFX_WideString& wsSrcDateTime, 564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsPattern, 574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsOutput, 584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_DATETIMETYPE eDateTimeType); 594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool FormatDateTime(const CFX_Unitime& dt, 604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsPattern, 614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsOutput); 624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool FormatZero(const CFX_WideString& wsPattern, CFX_WideString& wsOutput); 634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool FormatNull(const CFX_WideString& wsPattern, CFX_WideString& wsOutput); 644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann protected: 664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann IFX_Locale* GetTextFormat(const CFX_WideString& wsPattern, 674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideStringC& wsCategory, 684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsPurgePattern); 694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann IFX_Locale* GetNumericFormat(const CFX_WideString& wsPattern, 704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t& iDotIndex, 714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t& dwStyle, 724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsPurgePattern); 734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool FormatStrNum(const CFX_WideStringC& wsInputNum, 744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsPattern, 754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsOutput); 764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool FormatLCNumeric(CFX_LCNumeric& lcNum, 774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsPattern, 784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsOutput); 794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_DATETIMETYPE GetDateTimeFormat(const CFX_WideString& wsPattern, 804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann IFX_Locale*& pLocale, 814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsDatePattern, 824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsTimePattern); 834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann IFX_Locale* GetPatternLocale(const CFX_WideString& wsLocale); 844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann IFX_LocaleMgr* m_pLocaleMgr; 864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool m_bUseLCID; 874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}; 884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#endif // XFA_FGAS_LOCALIZATION_FGAS_LOCALEIMP_H_ 90