Home | History | Annotate | Download | only in javascript
      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 FPDFSDK_SRC_JAVASCRIPT_PUBLICMETHODS_H_
      8 #define FPDFSDK_SRC_JAVASCRIPT_PUBLICMETHODS_H_
      9 
     10 #include "JS_Define.h"
     11 
     12 class CJS_PublicMethods : public CJS_Object {
     13  public:
     14   explicit CJS_PublicMethods(v8::Local<v8::Object> pObject)
     15       : CJS_Object(pObject) {}
     16   ~CJS_PublicMethods() override {}
     17 
     18  public:
     19   static FX_BOOL AFNumber_Format(IJS_Context* cc,
     20                                  const std::vector<CJS_Value>& params,
     21                                  CJS_Value& vRet,
     22                                  CFX_WideString& sError);
     23   static FX_BOOL AFNumber_Keystroke(IJS_Context* cc,
     24                                     const std::vector<CJS_Value>& params,
     25                                     CJS_Value& vRet,
     26                                     CFX_WideString& sError);
     27   static FX_BOOL AFPercent_Format(IJS_Context* cc,
     28                                   const std::vector<CJS_Value>& params,
     29                                   CJS_Value& vRet,
     30                                   CFX_WideString& sError);
     31   static FX_BOOL AFPercent_Keystroke(IJS_Context* cc,
     32                                      const std::vector<CJS_Value>& params,
     33                                      CJS_Value& vRet,
     34                                      CFX_WideString& sError);
     35   static FX_BOOL AFDate_FormatEx(IJS_Context* cc,
     36                                  const std::vector<CJS_Value>& params,
     37                                  CJS_Value& vRet,
     38                                  CFX_WideString& sError);
     39   static FX_BOOL AFDate_KeystrokeEx(IJS_Context* cc,
     40                                     const std::vector<CJS_Value>& params,
     41                                     CJS_Value& vRet,
     42                                     CFX_WideString& sError);
     43   static FX_BOOL AFDate_Format(IJS_Context* cc,
     44                                const std::vector<CJS_Value>& params,
     45                                CJS_Value& vRet,
     46                                CFX_WideString& sError);
     47   static FX_BOOL AFDate_Keystroke(IJS_Context* cc,
     48                                   const std::vector<CJS_Value>& params,
     49                                   CJS_Value& vRet,
     50                                   CFX_WideString& sError);
     51   static FX_BOOL AFTime_FormatEx(IJS_Context* cc,
     52                                  const std::vector<CJS_Value>& params,
     53                                  CJS_Value& vRet,
     54                                  CFX_WideString& sError);  //
     55   static FX_BOOL AFTime_KeystrokeEx(IJS_Context* cc,
     56                                     const std::vector<CJS_Value>& params,
     57                                     CJS_Value& vRet,
     58                                     CFX_WideString& sError);
     59   static FX_BOOL AFTime_Format(IJS_Context* cc,
     60                                const std::vector<CJS_Value>& params,
     61                                CJS_Value& vRet,
     62                                CFX_WideString& sError);
     63   static FX_BOOL AFTime_Keystroke(IJS_Context* cc,
     64                                   const std::vector<CJS_Value>& params,
     65                                   CJS_Value& vRet,
     66                                   CFX_WideString& sError);
     67   static FX_BOOL AFSpecial_Format(IJS_Context* cc,
     68                                   const std::vector<CJS_Value>& params,
     69                                   CJS_Value& vRet,
     70                                   CFX_WideString& sError);
     71   static FX_BOOL AFSpecial_Keystroke(IJS_Context* cc,
     72                                      const std::vector<CJS_Value>& params,
     73                                      CJS_Value& vRet,
     74                                      CFX_WideString& sError);
     75   static FX_BOOL AFSpecial_KeystrokeEx(IJS_Context* cc,
     76                                        const std::vector<CJS_Value>& params,
     77                                        CJS_Value& vRet,
     78                                        CFX_WideString& sError);  //
     79   static FX_BOOL AFSimple(IJS_Context* cc,
     80                           const std::vector<CJS_Value>& params,
     81                           CJS_Value& vRet,
     82                           CFX_WideString& sError);
     83   static FX_BOOL AFMakeNumber(IJS_Context* cc,
     84                               const std::vector<CJS_Value>& params,
     85                               CJS_Value& vRet,
     86                               CFX_WideString& sError);
     87   static FX_BOOL AFSimple_Calculate(IJS_Context* cc,
     88                                     const std::vector<CJS_Value>& params,
     89                                     CJS_Value& vRet,
     90                                     CFX_WideString& sError);
     91   static FX_BOOL AFRange_Validate(IJS_Context* cc,
     92                                   const std::vector<CJS_Value>& params,
     93                                   CJS_Value& vRet,
     94                                   CFX_WideString& sError);
     95   static FX_BOOL AFMergeChange(IJS_Context* cc,
     96                                const std::vector<CJS_Value>& params,
     97                                CJS_Value& vRet,
     98                                CFX_WideString& sError);
     99   static FX_BOOL AFParseDateEx(IJS_Context* cc,
    100                                const std::vector<CJS_Value>& params,
    101                                CJS_Value& vRet,
    102                                CFX_WideString& sError);
    103   static FX_BOOL AFExtractNums(IJS_Context* cc,
    104                                const std::vector<CJS_Value>& params,
    105                                CJS_Value& vRet,
    106                                CFX_WideString& sError);
    107 
    108  public:
    109   JS_STATIC_GLOBAL_FUN(AFNumber_Format);
    110   JS_STATIC_GLOBAL_FUN(AFNumber_Keystroke);
    111   JS_STATIC_GLOBAL_FUN(AFPercent_Format);
    112   JS_STATIC_GLOBAL_FUN(AFPercent_Keystroke);
    113   JS_STATIC_GLOBAL_FUN(AFDate_FormatEx);
    114   JS_STATIC_GLOBAL_FUN(AFDate_KeystrokeEx);
    115   JS_STATIC_GLOBAL_FUN(AFDate_Format);
    116   JS_STATIC_GLOBAL_FUN(AFDate_Keystroke);
    117   JS_STATIC_GLOBAL_FUN(AFTime_FormatEx);
    118   JS_STATIC_GLOBAL_FUN(AFTime_KeystrokeEx);
    119   JS_STATIC_GLOBAL_FUN(AFTime_Format);
    120   JS_STATIC_GLOBAL_FUN(AFTime_Keystroke);
    121   JS_STATIC_GLOBAL_FUN(AFSpecial_Format);
    122   JS_STATIC_GLOBAL_FUN(AFSpecial_Keystroke);
    123   JS_STATIC_GLOBAL_FUN(AFSpecial_KeystrokeEx);
    124   JS_STATIC_GLOBAL_FUN(AFSimple);
    125   JS_STATIC_GLOBAL_FUN(AFMakeNumber);
    126   JS_STATIC_GLOBAL_FUN(AFSimple_Calculate);
    127   JS_STATIC_GLOBAL_FUN(AFRange_Validate);
    128   JS_STATIC_GLOBAL_FUN(AFMergeChange);
    129   JS_STATIC_GLOBAL_FUN(AFParseDateEx);
    130   JS_STATIC_GLOBAL_FUN(AFExtractNums);
    131 
    132   JS_STATIC_DECLARE_GLOBAL_FUN();
    133 
    134  public:
    135   static int ParseStringInteger(const CFX_WideString& string,
    136                                 int nStart,
    137                                 int& nSkip,
    138                                 int nMaxStep);
    139   static CFX_WideString ParseStringString(const CFX_WideString& string,
    140                                           int nStart,
    141                                           int& nSkip);
    142   static double MakeRegularDate(const CFX_WideString& value,
    143                                 const CFX_WideString& format,
    144                                 bool* bWrongFormat);
    145   static CFX_WideString MakeFormatDate(double dDate,
    146                                        const CFX_WideString& format);
    147   static FX_BOOL ConvertStringToNumber(const FX_WCHAR* swSource,
    148                                        double& dRet,
    149                                        FX_BOOL& bDot);
    150   static double ParseStringToNumber(const FX_WCHAR* swSource);
    151   static double ParseNormalDate(const CFX_WideString& value,
    152                                 bool* bWrongFormat);
    153   static double MakeInterDate(CFX_WideString strValue);
    154   static double ParseNumber(const FX_WCHAR* swSource,
    155                             FX_BOOL& bAllDigits,
    156                             FX_BOOL& bDot,
    157                             FX_BOOL& bSign,
    158                             FX_BOOL& bKXJS);
    159 
    160  public:
    161   static CFX_WideString StrLTrim(const FX_WCHAR* pStr);
    162   static CFX_WideString StrRTrim(const FX_WCHAR* pStr);
    163   static CFX_WideString StrTrim(const FX_WCHAR* pStr);
    164 
    165   static CFX_ByteString StrLTrim(const FX_CHAR* pStr);
    166   static CFX_ByteString StrRTrim(const FX_CHAR* pStr);
    167   static CFX_ByteString StrTrim(const FX_CHAR* pStr);
    168 
    169   static FX_BOOL IsNumber(const FX_CHAR* string);
    170   static FX_BOOL IsNumber(const FX_WCHAR* string);
    171 
    172   static FX_BOOL maskSatisfied(wchar_t c_Change, wchar_t c_Mask);
    173   static FX_BOOL isReservedMaskChar(wchar_t ch);
    174 
    175   static double AF_Simple(const FX_WCHAR* sFuction,
    176                           double dValue1,
    177                           double dValue2);
    178   static CJS_Array AF_MakeArrayFromList(CJS_Runtime* pRuntime, CJS_Value val);
    179 };
    180 
    181 #endif  // FPDFSDK_SRC_JAVASCRIPT_PUBLICMETHODS_H_
    182