Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / xfa / src / fgas / src / localization / fx_localeimp.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4 \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #ifndef _FX_LOCALE_IMP_H_\r
8 #define _FX_LOCALE_IMP_H_\r
9 class CFX_LCNumeric;\r
10 class CFX_Locale : public IFX_Locale, public CFX_Object\r
11 {\r
12 public:\r
13     CFX_Locale(CXML_Element* pLocaleData);\r
14     virtual void Release()\r
15     {\r
16         delete this;\r
17     }\r
18 \r
19     virtual CFX_WideString GetName();\r
20     virtual void GetNumbericSymbol(FX_LOCALENUMSYMBOL eType, CFX_WideString& wsNumSymbol) const;\r
21 \r
22     virtual void GetDateTimeSymbols(CFX_WideString& wsDtSymbol) const;\r
23     virtual void GetMonthName(FX_INT32 nMonth, CFX_WideString& wsMonthName, FX_BOOL bAbbr = TRUE) const;\r
24     virtual void GetDayName(FX_INT32 nWeek, CFX_WideString& wsDayName, FX_BOOL bAbbr = TRUE) const;\r
25     virtual void GetMeridiemName(CFX_WideString& wsMeridiemName, FX_BOOL bAM = TRUE) const;\r
26     virtual void GetTimeZone(FX_TIMEZONE& tz) const;\r
27     virtual void GetEraName(CFX_WideString& wsEraName, FX_BOOL bAD = TRUE) const;\r
28 \r
29     virtual void GetDatePattern(FX_LOCALEDATETIMESUBCATEGORY eType, CFX_WideString& wsPattern) const;\r
30     virtual void GetTimePattern(FX_LOCALEDATETIMESUBCATEGORY eType, CFX_WideString& wsPattern) const;\r
31     virtual void GetNumPattern(FX_LOCALENUMSUBCATEGORY eType, CFX_WideString& wsPattern) const;\r
32 protected:\r
33     virtual ~CFX_Locale();\r
34     CXML_Element* m_pElement;\r
35 };\r
36 class CFX_FormatString : public IFX_FormatString, public CFX_Object\r
37 {\r
38 public:\r
39     CFX_FormatString(IFX_LocaleMgr* pLocaleMgr, FX_BOOL bUseLCID);\r
40     virtual void Release()\r
41     {\r
42         delete this;\r
43     }\r
44 \r
45     virtual void SplitFormatString(const CFX_WideString& wsFormatString, CFX_WideStringArray& wsPatterns);\r
46     virtual FX_LOCALECATEGORY GetCategory(const CFX_WideString& wsPattern);\r
47     virtual FX_WORD     GetLCID(const CFX_WideString& wsPattern);\r
48     virtual CFX_WideString      GetLocaleName(const CFX_WideString& wsPattern);\r
49     virtual FX_BOOL     ParseText(const CFX_WideString& wsSrcText, const CFX_WideString& wsPattern, CFX_WideString& wsValue);\r
50     virtual FX_BOOL     ParseNum(const CFX_WideString& wsSrcNum, const CFX_WideString& wsPattern, FX_FLOAT &fValue);\r
51     virtual FX_BOOL     ParseNum(const CFX_WideString& wsSrcNum, const CFX_WideString& wsPattern, CFX_WideString &wsValue);\r
52     virtual FX_BOOL     ParseDateTime(const CFX_WideString& wsSrcDateTime, const CFX_WideString& wsPattern, FX_DATETIMETYPE eDateTimeType, CFX_Unitime& dtValue);\r
53     virtual FX_BOOL ParseZero(const CFX_WideString& wsSrcText, const CFX_WideString& wsPattern);\r
54     virtual FX_BOOL ParseNull(const CFX_WideString& wsSrcText, const CFX_WideString& wsPattern);\r
55     virtual FX_BOOL     FormatText(const CFX_WideString& wsSrcText, const CFX_WideString& wsPattern, CFX_WideString& wsOutput);\r
56     virtual FX_BOOL     FormatNum(const CFX_WideString& wsSrcNum, const CFX_WideString& wsPattern, CFX_WideString& wsOutput);\r
57     virtual FX_BOOL     FormatNum(FX_FLOAT fNum, const CFX_WideString& wsPattern, CFX_WideString& wsOutput);\r
58     virtual FX_BOOL     FormatDateTime(const CFX_WideString& wsSrcDateTime, const CFX_WideString& wsPattern, CFX_WideString& wsOutput);\r
59     virtual FX_BOOL     FormatDateTime(const CFX_WideString& wsSrcDateTime, const CFX_WideString& wsPattern, CFX_WideString& wsOutput, FX_DATETIMETYPE eDateTimeType);\r
60     virtual FX_BOOL     FormatDateTime(const CFX_Unitime& dt, const CFX_WideString& wsPattern, CFX_WideString& wsOutput);\r
61     virtual FX_BOOL FormatZero(const CFX_WideString& wsPattern, CFX_WideString& wsOutput);\r
62     virtual FX_BOOL FormatNull(const CFX_WideString& wsPattern, CFX_WideString& wsOutput);\r
63 protected:\r
64     virtual ~CFX_FormatString();\r
65     IFX_Locale* GetTextFormat(const CFX_WideString &wsPattern, FX_WSTR wsCategory, CFX_WideString& wsPurgePattern);\r
66     IFX_Locale* GetNumericFormat(const CFX_WideString& wsPattern, FX_INT32& iDotIndex, FX_DWORD& dwStyle, CFX_WideString& wsPurgePattern);\r
67     FX_BOOL     FormatStrNum(FX_WSTR wsInputNum, const CFX_WideString& wsPattern, CFX_WideString& wsOutput);\r
68     FX_BOOL             FormatLCNumeric(CFX_LCNumeric& lcNum, const CFX_WideString& wsPattern, CFX_WideString& wsOutput);\r
69     FX_DATETIMETYPE GetDateTimeFormat(const CFX_WideString& wsPattern, IFX_Locale*& pLocale, CFX_WideString &wsDatePattern, CFX_WideString &wsTimePattern);\r
70     IFX_Locale*         GetPatternLocale(FX_WSTR wsLocale);\r
71     IFX_LocaleMgr*      m_pLocaleMgr;\r
72     FX_BOOL                     m_bUseLCID;\r
73 };\r
74 #endif\r