Home | History | Annotate | Download | only in localization
      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_FGAS_LOCALIZATION_FGAS_LOCALEIMP_H_
      8 #define XFA_FGAS_LOCALIZATION_FGAS_LOCALEIMP_H_
      9 
     10 #include <vector>
     11 
     12 #include "xfa/fgas/localization/fgas_locale.h"
     13 
     14 class CFX_LCNumeric;
     15 
     16 class CFX_FormatString {
     17  public:
     18   CFX_FormatString(IFX_LocaleMgr* pLocaleMgr, bool bUseLCID);
     19   ~CFX_FormatString();
     20 
     21   void SplitFormatString(const CFX_WideString& wsFormatString,
     22                          std::vector<CFX_WideString>& wsPatterns);
     23   FX_LOCALECATEGORY GetCategory(const CFX_WideString& wsPattern);
     24   uint16_t GetLCID(const CFX_WideString& wsPattern);
     25   CFX_WideString GetLocaleName(const CFX_WideString& wsPattern);
     26   bool ParseText(const CFX_WideString& wsSrcText,
     27                  const CFX_WideString& wsPattern,
     28                  CFX_WideString& wsValue);
     29   bool ParseNum(const CFX_WideString& wsSrcNum,
     30                 const CFX_WideString& wsPattern,
     31                 FX_FLOAT& fValue);
     32   bool ParseNum(const CFX_WideString& wsSrcNum,
     33                 const CFX_WideString& wsPattern,
     34                 CFX_WideString& wsValue);
     35   bool ParseDateTime(const CFX_WideString& wsSrcDateTime,
     36                      const CFX_WideString& wsPattern,
     37                      FX_DATETIMETYPE eDateTimeType,
     38                      CFX_Unitime& dtValue);
     39   bool ParseZero(const CFX_WideString& wsSrcText,
     40                  const CFX_WideString& wsPattern);
     41   bool ParseNull(const CFX_WideString& wsSrcText,
     42                  const CFX_WideString& wsPattern);
     43   bool FormatText(const CFX_WideString& wsSrcText,
     44                   const CFX_WideString& wsPattern,
     45                   CFX_WideString& wsOutput);
     46   bool FormatNum(const CFX_WideString& wsSrcNum,
     47                  const CFX_WideString& wsPattern,
     48                  CFX_WideString& wsOutput);
     49   bool FormatNum(FX_FLOAT fNum,
     50                  const CFX_WideString& wsPattern,
     51                  CFX_WideString& wsOutput);
     52   bool FormatDateTime(const CFX_WideString& wsSrcDateTime,
     53                       const CFX_WideString& wsPattern,
     54                       CFX_WideString& wsOutput);
     55   bool FormatDateTime(const CFX_WideString& wsSrcDateTime,
     56                       const CFX_WideString& wsPattern,
     57                       CFX_WideString& wsOutput,
     58                       FX_DATETIMETYPE eDateTimeType);
     59   bool FormatDateTime(const CFX_Unitime& dt,
     60                       const CFX_WideString& wsPattern,
     61                       CFX_WideString& wsOutput);
     62   bool FormatZero(const CFX_WideString& wsPattern, CFX_WideString& wsOutput);
     63   bool FormatNull(const CFX_WideString& wsPattern, CFX_WideString& wsOutput);
     64 
     65  protected:
     66   IFX_Locale* GetTextFormat(const CFX_WideString& wsPattern,
     67                             const CFX_WideStringC& wsCategory,
     68                             CFX_WideString& wsPurgePattern);
     69   IFX_Locale* GetNumericFormat(const CFX_WideString& wsPattern,
     70                                int32_t& iDotIndex,
     71                                uint32_t& dwStyle,
     72                                CFX_WideString& wsPurgePattern);
     73   bool FormatStrNum(const CFX_WideStringC& wsInputNum,
     74                     const CFX_WideString& wsPattern,
     75                     CFX_WideString& wsOutput);
     76   bool FormatLCNumeric(CFX_LCNumeric& lcNum,
     77                        const CFX_WideString& wsPattern,
     78                        CFX_WideString& wsOutput);
     79   FX_DATETIMETYPE GetDateTimeFormat(const CFX_WideString& wsPattern,
     80                                     IFX_Locale*& pLocale,
     81                                     CFX_WideString& wsDatePattern,
     82                                     CFX_WideString& wsTimePattern);
     83   IFX_Locale* GetPatternLocale(const CFX_WideString& wsLocale);
     84 
     85   IFX_LocaleMgr* m_pLocaleMgr;
     86   bool m_bUseLCID;
     87 };
     88 
     89 #endif  // XFA_FGAS_LOCALIZATION_FGAS_LOCALEIMP_H_
     90