1 // Copyright 2014 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef XFA_FXFA_PARSER_CXFA_XMLLOCALE_H_ 8 #define XFA_FXFA_PARSER_CXFA_XMLLOCALE_H_ 9 10 #include <memory> 11 12 #include "third_party/base/span.h" 13 #include "xfa/fgas/crt/locale_iface.h" 14 15 class CFX_XMLDocument; 16 class CFX_XMLElement; 17 18 class CXFA_XMLLocale final : public LocaleIface { 19 public: 20 static std::unique_ptr<CXFA_XMLLocale> Create(pdfium::span<uint8_t> data); 21 22 explicit CXFA_XMLLocale(std::unique_ptr<CFX_XMLDocument> root, 23 CFX_XMLElement* locale); 24 ~CXFA_XMLLocale() override; 25 26 // LocaleIface 27 WideString GetName() const override; 28 WideString GetDecimalSymbol() const override; 29 WideString GetGroupingSymbol() const override; 30 WideString GetPercentSymbol() const override; 31 WideString GetMinusSymbol() const override; 32 WideString GetCurrencySymbol() const override; 33 WideString GetDateTimeSymbols() const override; 34 WideString GetMonthName(int32_t nMonth, bool bAbbr) const override; 35 WideString GetDayName(int32_t nWeek, bool bAbbr) const override; 36 WideString GetMeridiemName(bool bAM) const override; 37 FX_TIMEZONE GetTimeZone() const override; 38 WideString GetEraName(bool bAD) const override; 39 40 WideString GetDatePattern(FX_LOCALEDATETIMESUBCATEGORY eType) const override; 41 WideString GetTimePattern(FX_LOCALEDATETIMESUBCATEGORY eType) const override; 42 WideString GetNumPattern(FX_LOCALENUMSUBCATEGORY eType) const override; 43 44 private: 45 WideString GetPattern(CFX_XMLElement* pElement, 46 WideStringView bsTag, 47 WideStringView wsName) const; 48 WideString GetCalendarSymbol(WideStringView symbol, 49 size_t index, 50 bool bAbbr) const; 51 52 std::unique_ptr<CFX_XMLDocument> xml_doc_; 53 UnownedPtr<CFX_XMLElement> locale_; 54 }; 55 56 #endif // XFA_FXFA_PARSER_CXFA_XMLLOCALE_H_ 57