| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 // PDFium wrapper around V8 APIs. PDFium code should include this file rather | 7 // PDFium wrapper around V8 APIs. PDFium code should include this file rather |
| 8 // than including V8 headers directly. | 8 // than including V8 headers directly. |
| 9 | 9 |
| 10 #ifndef FPDFSDK_INCLUDE_JSAPI_FXJS_V8_H_ | 10 #ifndef FPDFSDK_INCLUDE_JSAPI_FXJS_V8_H_ |
| 11 #define FPDFSDK_INCLUDE_JSAPI_FXJS_V8_H_ | 11 #define FPDFSDK_INCLUDE_JSAPI_FXJS_V8_H_ |
| 12 | 12 |
| 13 #include <v8.h> | 13 #include <v8.h> |
| 14 #include "../../../core/include/fxcrt/fx_string.h" // For CFX_WideString | 14 #include "../../../core/include/fxcrt/fx_string.h" // For CFX_WideString |
| 15 | 15 |
| 16 enum FXJSOBJTYPE { | 16 enum FXJSOBJTYPE { |
| 17 JS_DYNAMIC = 0, | 17 FXJS_DYNAMIC = 0, |
| 18 JS_STATIC = 1, | 18 FXJS_STATIC = 1, |
| 19 }; | |
| 20 | |
| 21 enum FXJSVALUETYPE { | |
| 22 VT_unknown, | |
| 23 VT_string, | |
| 24 VT_number, | |
| 25 VT_boolean, | |
| 26 VT_date, | |
| 27 VT_object, | |
| 28 VT_fxobject, | |
| 29 VT_null, | |
| 30 VT_undefined | |
| 31 }; | 19 }; |
| 32 | 20 |
| 33 struct FXJSErr { | 21 struct FXJSErr { |
| 34 const wchar_t* message; | 22 const wchar_t* message; |
| 35 const wchar_t* srcline; | 23 const wchar_t* srcline; |
| 36 unsigned linnum; | 24 unsigned linnum; |
| 37 }; | 25 }; |
| 38 | 26 |
| 39 extern const wchar_t kFXJSValueNameString[]; | 27 extern const wchar_t kFXJSValueNameString[]; |
| 40 extern const wchar_t kFXJSValueNameNumber[]; | 28 extern const wchar_t kFXJSValueNameNumber[]; |
| 41 extern const wchar_t kFXJSValueNameBoolean[]; | 29 extern const wchar_t kFXJSValueNameBoolean[]; |
| 42 extern const wchar_t kFXJSValueNameDate[]; | 30 extern const wchar_t kFXJSValueNameDate[]; |
| 43 extern const wchar_t kFXJSValueNameObject[]; | 31 extern const wchar_t kFXJSValueNameObject[]; |
| 44 extern const wchar_t kFXJSValueNameFxobj[]; | 32 extern const wchar_t kFXJSValueNameFxobj[]; |
| 45 extern const wchar_t kFXJSValueNameNull[]; | 33 extern const wchar_t kFXJSValueNameNull[]; |
| 46 extern const wchar_t kFXJSValueNameUndefined[]; | 34 extern const wchar_t kFXJSValueNameUndefined[]; |
| 47 | 35 |
| 48 // FXJS_V8 places no interpretation on these two classes; it merely | 36 // FXJS_V8 places no interpretation on these two classes; it merely |
| 49 // passes them on to the caller-provided LP_CONSTRUCTORs. | 37 // passes them on to the caller-provided FXJS_CONSTRUCTORs. |
| 50 class IFXJS_Context; | 38 class IFXJS_Context; |
| 51 class IFXJS_Runtime; | 39 class IFXJS_Runtime; |
| 52 | 40 |
| 53 class JS_ArrayBufferAllocator : public v8::ArrayBuffer::Allocator { | 41 class FXJS_ArrayBufferAllocator : public v8::ArrayBuffer::Allocator { |
| 54 void* Allocate(size_t length) override; | 42 void* Allocate(size_t length) override; |
| 55 void* AllocateUninitialized(size_t length) override; | 43 void* AllocateUninitialized(size_t length) override; |
| 56 void Free(void* data, size_t length) override; | 44 void Free(void* data, size_t length) override; |
| 57 }; | 45 }; |
| 58 | 46 |
| 59 typedef void (*LP_CONSTRUCTOR)(IFXJS_Context* cc, | 47 using FXJS_CONSTRUCTOR = void (*)(IFXJS_Context* cc, |
| 60 v8::Local<v8::Object> obj, | 48 v8::Local<v8::Object> obj, |
| 61 v8::Local<v8::Object> global); | 49 v8::Local<v8::Object> global); |
| 62 typedef void (*LP_DESTRUCTOR)(v8::Local<v8::Object> obj); | 50 using FXJS_DESTRUCTOR = void (*)(v8::Local<v8::Object> obj); |
| 51 |
| 52 // Call before making FXJS_PrepareIsolate call. |
| 53 void FXJS_Initialize(unsigned int embedderDataSlot); |
| 54 void FXJS_Release(); |
| 55 |
| 56 // Call before making FXJS_Define* calls. Resources allocated here are cleared |
| 57 // as part of FXJS_ReleaseRuntime(). |
| 58 void FXJS_PrepareIsolate(v8::Isolate* pIsolate); |
| 63 | 59 |
| 64 // Call before making JS_PrepareIsolate call. | 60 // Call before making JS_PrepareIsolate call. |
| 65 void JS_Initialize(unsigned int embedderDataSlot); | 61 void JS_Initialize(unsigned int embedderDataSlot); |
| 66 void JS_Release(); | 62 void JS_Release(); |
| 67 | 63 |
| 68 // Call before making JS_Define* calls. Resources allocated here are cleared | 64 // Call before making JS_Define* calls. Resources allocated here are cleared |
| 69 // as part of JS_ReleaseRuntime(). | 65 // as part of JS_ReleaseRuntime(). |
| 70 void JS_PrepareIsolate(v8::Isolate* pIsolate); | 66 void JS_PrepareIsolate(v8::Isolate* pIsolate); |
| 71 | 67 |
| 72 // Always returns a valid, newly-created objDefnID. | 68 // Always returns a valid, newly-created objDefnID. |
| 73 int JS_DefineObj(v8::Isolate* pIsolate, | 69 int FXJS_DefineObj(v8::Isolate* pIsolate, |
| 74 const wchar_t* sObjName, | 70 const wchar_t* sObjName, |
| 75 FXJSOBJTYPE eObjType, | 71 FXJSOBJTYPE eObjType, |
| 76 LP_CONSTRUCTOR pConstructor, | 72 FXJS_CONSTRUCTOR pConstructor, |
| 77 LP_DESTRUCTOR pDestructor); | 73 FXJS_DESTRUCTOR pDestructor); |
| 78 | 74 |
| 79 void JS_DefineObjMethod(v8::Isolate* pIsolate, | 75 void FXJS_DefineObjMethod(v8::Isolate* pIsolate, |
| 80 int nObjDefnID, | |
| 81 const wchar_t* sMethodName, | |
| 82 v8::FunctionCallback pMethodCall); | |
| 83 void JS_DefineObjProperty(v8::Isolate* pIsolate, | |
| 84 int nObjDefnID, | 76 int nObjDefnID, |
| 85 const wchar_t* sPropName, | 77 const wchar_t* sMethodName, |
| 86 v8::AccessorGetterCallback pPropGet, | 78 v8::FunctionCallback pMethodCall); |
| 87 v8::AccessorSetterCallback pPropPut); | 79 void FXJS_DefineObjProperty(v8::Isolate* pIsolate, |
| 88 void JS_DefineObjAllProperties(v8::Isolate* pIsolate, | 80 int nObjDefnID, |
| 89 int nObjDefnID, | 81 const wchar_t* sPropName, |
| 90 v8::NamedPropertyQueryCallback pPropQurey, | 82 v8::AccessorGetterCallback pPropGet, |
| 91 v8::NamedPropertyGetterCallback pPropGet, | 83 v8::AccessorSetterCallback pPropPut); |
| 92 v8::NamedPropertySetterCallback pPropPut, | 84 void FXJS_DefineObjAllProperties(v8::Isolate* pIsolate, |
| 93 v8::NamedPropertyDeleterCallback pPropDel); | 85 int nObjDefnID, |
| 94 void JS_DefineObjConst(v8::Isolate* pIsolate, | 86 v8::NamedPropertyQueryCallback pPropQurey, |
| 95 int nObjDefnID, | 87 v8::NamedPropertyGetterCallback pPropGet, |
| 96 const wchar_t* sConstName, | 88 v8::NamedPropertySetterCallback pPropPut, |
| 97 v8::Local<v8::Value> pDefault); | 89 v8::NamedPropertyDeleterCallback pPropDel); |
| 98 void JS_DefineGlobalMethod(v8::Isolate* pIsolate, | 90 void FXJS_DefineObjConst(v8::Isolate* pIsolate, |
| 99 const wchar_t* sMethodName, | 91 int nObjDefnID, |
| 100 v8::FunctionCallback pMethodCall); | 92 const wchar_t* sConstName, |
| 101 void JS_DefineGlobalConst(v8::Isolate* pIsolate, | 93 v8::Local<v8::Value> pDefault); |
| 102 const wchar_t* sConstName, | 94 void FXJS_DefineGlobalMethod(v8::Isolate* pIsolate, |
| 103 v8::Local<v8::Value> pDefault); | 95 const wchar_t* sMethodName, |
| 96 v8::FunctionCallback pMethodCall); |
| 97 void FXJS_DefineGlobalConst(v8::Isolate* pIsolate, |
| 98 const wchar_t* sConstName, |
| 99 v8::Local<v8::Value> pDefault); |
| 104 | 100 |
| 105 // Called after JS_Define* calls made. | 101 // Called after FXJS_Define* calls made. |
| 106 void JS_InitializeRuntime(v8::Isolate* pIsolate, | 102 void FXJS_InitializeRuntime(v8::Isolate* pIsolate, |
| 107 IFXJS_Runtime* pFXRuntime, | 103 IFXJS_Runtime* pFXRuntime, |
| 108 IFXJS_Context* context, | 104 IFXJS_Context* context, |
| 109 v8::Global<v8::Context>& v8PersistentContext); | 105 v8::Global<v8::Context>& v8PersistentContext); |
| 110 void JS_ReleaseRuntime(v8::Isolate* pIsolate, | 106 void FXJS_ReleaseRuntime(v8::Isolate* pIsolate, |
| 111 v8::Global<v8::Context>& v8PersistentContext); | 107 v8::Global<v8::Context>& v8PersistentContext); |
| 112 | 108 |
| 113 // Called after JS_InitializeRuntime call made. | 109 // Called after FXJS_InitializeRuntime call made. |
| 114 int JS_Execute(v8::Isolate* pIsolate, | 110 int FXJS_Execute(v8::Isolate* pIsolate, |
| 115 IFXJS_Context* pJSContext, | 111 IFXJS_Context* pJSContext, |
| 116 const wchar_t* script, | 112 const wchar_t* script, |
| 117 long length, | 113 long length, |
| 118 FXJSErr* perror); | 114 FXJSErr* perror); |
| 119 | 115 |
| 120 v8::Local<v8::Object> JS_NewFxDynamicObj(v8::Isolate* pIsolate, | 116 v8::Local<v8::Object> FXJS_NewFxDynamicObj(v8::Isolate* pIsolate, |
| 121 IFXJS_Context* pJSContext, | 117 IFXJS_Context* pJSContext, |
| 122 int nObjDefnID); | 118 int nObjDefnID); |
| 123 v8::Local<v8::Object> JS_GetStaticObj(v8::Isolate* pIsolate, int nObjDefnID); | 119 v8::Local<v8::Object> FXJS_GetStaticObj(v8::Isolate* pIsolate, int nObjDefnID); |
| 124 v8::Local<v8::Object> JS_GetThisObj(v8::Isolate* pIsolate); | 120 v8::Local<v8::Object> FXJS_GetThisObj(v8::Isolate* pIsolate); |
| 125 int JS_GetObjDefnID(v8::Local<v8::Object> pObj); | 121 int FXJS_GetObjDefnID(v8::Local<v8::Object> pObj); |
| 126 v8::Isolate* JS_GetRuntime(v8::Local<v8::Object> pObj); | 122 v8::Isolate* FXJS_GetRuntime(v8::Local<v8::Object> pObj); |
| 127 int JS_GetObjDefnID(v8::Isolate* pIsolate, const wchar_t* pObjName); | 123 int FXJS_GetObjDefnID(v8::Isolate* pIsolate, const wchar_t* pObjName); |
| 128 void JS_Error(v8::Isolate* isolate, const CFX_WideString& message); | 124 void FXJS_Error(v8::Isolate* isolate, const CFX_WideString& message); |
| 129 unsigned JS_CalcHash(const wchar_t* main, unsigned nLen); | 125 const wchar_t* FXJS_GetTypeof(v8::Local<v8::Value> pObj); |
| 130 unsigned JS_CalcHash(const wchar_t* main); | 126 void FXJS_SetPrivate(v8::Isolate* pIsolate, |
| 131 const wchar_t* JS_GetTypeof(v8::Local<v8::Value> pObj); | 127 v8::Local<v8::Object> pObj, |
| 132 void JS_SetPrivate(v8::Isolate* pIsolate, v8::Local<v8::Object> pObj, void* p); | 128 void* p); |
| 133 void* JS_GetPrivate(v8::Isolate* pIsolate, v8::Local<v8::Object> pObj); | 129 void* FXJS_GetPrivate(v8::Isolate* pIsolate, v8::Local<v8::Object> pObj); |
| 134 void JS_SetPrivate(v8::Local<v8::Object> pObj, void* p); | 130 void FXJS_SetPrivate(v8::Local<v8::Object> pObj, void* p); |
| 135 void* JS_GetPrivate(v8::Local<v8::Object> pObj); | 131 void* FXJS_GetPrivate(v8::Local<v8::Object> pObj); |
| 136 void JS_FreePrivate(void* p); | 132 void FXJS_FreePrivate(void* p); |
| 137 void JS_FreePrivate(v8::Local<v8::Object> pObj); | 133 void FXJS_FreePrivate(v8::Local<v8::Object> pObj); |
| 138 v8::Local<v8::Value> JS_GetObjectValue(v8::Local<v8::Object> pObj); | 134 v8::Local<v8::String> FXJS_WSToJSString(v8::Isolate* pIsolate, |
| 139 v8::Local<v8::Value> JS_GetObjectElement(v8::Isolate* pIsolate, | 135 const wchar_t* PropertyName, |
| 140 v8::Local<v8::Object> pObj, | 136 int Len = -1); |
| 141 const wchar_t* PropertyName); | 137 v8::Local<v8::Value> FXJS_GetObjectValue(v8::Local<v8::Object> pObj); |
| 142 v8::Local<v8::Array> JS_GetObjectElementNames(v8::Isolate* pIsolate, | 138 v8::Local<v8::Value> FXJS_GetObjectElement(v8::Isolate* pIsolate, |
| 143 v8::Local<v8::Object> pObj); | 139 v8::Local<v8::Object> pObj, |
| 144 void JS_PutObjectString(v8::Isolate* pIsolate, | 140 const wchar_t* PropertyName); |
| 141 v8::Local<v8::Array> FXJS_GetObjectElementNames(v8::Isolate* pIsolate, |
| 142 v8::Local<v8::Object> pObj); |
| 143 void FXJS_PutObjectString(v8::Isolate* pIsolate, |
| 144 v8::Local<v8::Object> pObj, |
| 145 const wchar_t* PropertyName, |
| 146 const wchar_t* sValue); |
| 147 void FXJS_PutObjectNumber(v8::Isolate* pIsolate, |
| 148 v8::Local<v8::Object> pObj, |
| 149 const wchar_t* PropertyName, |
| 150 int nValue); |
| 151 void FXJS_PutObjectNumber(v8::Isolate* pIsolate, |
| 152 v8::Local<v8::Object> pObj, |
| 153 const wchar_t* PropertyName, |
| 154 float fValue); |
| 155 void FXJS_PutObjectNumber(v8::Isolate* pIsolate, |
| 156 v8::Local<v8::Object> pObj, |
| 157 const wchar_t* PropertyName, |
| 158 double dValue); |
| 159 void FXJS_PutObjectBoolean(v8::Isolate* pIsolate, |
| 160 v8::Local<v8::Object> pObj, |
| 161 const wchar_t* PropertyName, |
| 162 bool bValue); |
| 163 void FXJS_PutObjectObject(v8::Isolate* pIsolate, |
| 164 v8::Local<v8::Object> pObj, |
| 165 const wchar_t* PropertyName, |
| 166 v8::Local<v8::Object> pPut); |
| 167 void FXJS_PutObjectNull(v8::Isolate* pIsolate, |
| 145 v8::Local<v8::Object> pObj, | 168 v8::Local<v8::Object> pObj, |
| 146 const wchar_t* PropertyName, | 169 const wchar_t* PropertyName); |
| 147 const wchar_t* sValue); | 170 unsigned FXJS_PutArrayElement(v8::Isolate* pIsolate, |
| 148 void JS_PutObjectNumber(v8::Isolate* pIsolate, | 171 v8::Local<v8::Array> pArray, |
| 149 v8::Local<v8::Object> pObj, | 172 unsigned index, |
| 150 const wchar_t* PropertyName, | 173 v8::Local<v8::Value> pValue); |
| 151 int nValue); | 174 v8::Local<v8::Value> FXJS_GetArrayElement(v8::Isolate* pIsolate, |
| 152 void JS_PutObjectNumber(v8::Isolate* pIsolate, | 175 v8::Local<v8::Array> pArray, |
| 153 v8::Local<v8::Object> pObj, | 176 unsigned index); |
| 154 const wchar_t* PropertyName, | 177 unsigned FXJS_GetArrayLength(v8::Local<v8::Array> pArray); |
| 155 float fValue); | 178 v8::Local<v8::Value> FXJS_GetListValue(v8::Isolate* pIsolate, |
| 156 void JS_PutObjectNumber(v8::Isolate* pIsolate, | 179 v8::Local<v8::Value> pList, |
| 157 v8::Local<v8::Object> pObj, | 180 int index); |
| 158 const wchar_t* PropertyName, | |
| 159 double dValue); | |
| 160 void JS_PutObjectBoolean(v8::Isolate* pIsolate, | |
| 161 v8::Local<v8::Object> pObj, | |
| 162 const wchar_t* PropertyName, | |
| 163 bool bValue); | |
| 164 void JS_PutObjectObject(v8::Isolate* pIsolate, | |
| 165 v8::Local<v8::Object> pObj, | |
| 166 const wchar_t* PropertyName, | |
| 167 v8::Local<v8::Object> pPut); | |
| 168 void JS_PutObjectNull(v8::Isolate* pIsolate, | |
| 169 v8::Local<v8::Object> pObj, | |
| 170 const wchar_t* PropertyName); | |
| 171 unsigned JS_PutArrayElement(v8::Isolate* pIsolate, | |
| 172 v8::Local<v8::Array> pArray, | |
| 173 unsigned index, | |
| 174 v8::Local<v8::Value> pValue, | |
| 175 FXJSVALUETYPE eType); | |
| 176 v8::Local<v8::Value> JS_GetArrayElement(v8::Isolate* pIsolate, | |
| 177 v8::Local<v8::Array> pArray, | |
| 178 unsigned index); | |
| 179 unsigned JS_GetArrayLength(v8::Local<v8::Array> pArray); | |
| 180 v8::Local<v8::Value> JS_GetListValue(v8::Isolate* pIsolate, | |
| 181 v8::Local<v8::Value> pList, | |
| 182 int index); | |
| 183 | 181 |
| 184 v8::Local<v8::Array> JS_NewArray(v8::Isolate* pIsolate); | 182 v8::Local<v8::Array> FXJS_NewArray(v8::Isolate* pIsolate); |
| 185 v8::Local<v8::Value> JS_NewNumber(v8::Isolate* pIsolate, int number); | 183 v8::Local<v8::Value> FXJS_NewNumber(v8::Isolate* pIsolate, int number); |
| 186 v8::Local<v8::Value> JS_NewNumber(v8::Isolate* pIsolate, double number); | 184 v8::Local<v8::Value> FXJS_NewNumber(v8::Isolate* pIsolate, double number); |
| 187 v8::Local<v8::Value> JS_NewNumber(v8::Isolate* pIsolate, float number); | 185 v8::Local<v8::Value> FXJS_NewNumber(v8::Isolate* pIsolate, float number); |
| 188 v8::Local<v8::Value> JS_NewBoolean(v8::Isolate* pIsolate, bool b); | 186 v8::Local<v8::Value> FXJS_NewBoolean(v8::Isolate* pIsolate, bool b); |
| 189 v8::Local<v8::Value> JS_NewObject(v8::Isolate* pIsolate, | 187 v8::Local<v8::Value> FXJS_NewObject(v8::Isolate* pIsolate, |
| 190 v8::Local<v8::Object> pObj); | 188 v8::Local<v8::Object> pObj); |
| 191 v8::Local<v8::Value> JS_NewObject2(v8::Isolate* pIsolate, | 189 v8::Local<v8::Value> FXJS_NewObject2(v8::Isolate* pIsolate, |
| 192 v8::Local<v8::Array> pObj); | 190 v8::Local<v8::Array> pObj); |
| 193 v8::Local<v8::Value> JS_NewString(v8::Isolate* pIsolate, const wchar_t* string); | 191 v8::Local<v8::Value> FXJS_NewString(v8::Isolate* pIsolate, |
| 194 v8::Local<v8::Value> JS_NewString(v8::Isolate* pIsolate, | 192 const wchar_t* string); |
| 195 const wchar_t* string, | 193 v8::Local<v8::Value> FXJS_NewString(v8::Isolate* pIsolate, |
| 196 unsigned nLen); | 194 const wchar_t* string, |
| 197 v8::Local<v8::Value> JS_NewNull(); | 195 unsigned nLen); |
| 198 v8::Local<v8::Value> JS_NewDate(v8::Isolate* pIsolate, double d); | 196 v8::Local<v8::Value> FXJS_NewNull(); |
| 199 v8::Local<v8::Value> JS_NewValue(v8::Isolate* pIsolate); | 197 v8::Local<v8::Value> FXJS_NewDate(v8::Isolate* pIsolate, double d); |
| 198 v8::Local<v8::Value> FXJS_NewValue(v8::Isolate* pIsolate); |
| 200 | 199 |
| 201 int JS_ToInt32(v8::Isolate* pIsolate, v8::Local<v8::Value> pValue); | 200 int FXJS_ToInt32(v8::Isolate* pIsolate, v8::Local<v8::Value> pValue); |
| 202 bool JS_ToBoolean(v8::Isolate* pIsolate, v8::Local<v8::Value> pValue); | 201 bool FXJS_ToBoolean(v8::Isolate* pIsolate, v8::Local<v8::Value> pValue); |
| 203 double JS_ToNumber(v8::Isolate* pIsolate, v8::Local<v8::Value> pValue); | 202 double FXJS_ToNumber(v8::Isolate* pIsolate, v8::Local<v8::Value> pValue); |
| 204 v8::Local<v8::Object> JS_ToObject(v8::Isolate* pIsolate, | 203 v8::Local<v8::Object> FXJS_ToObject(v8::Isolate* pIsolate, |
| 204 v8::Local<v8::Value> pValue); |
| 205 CFX_WideString FXJS_ToString(v8::Isolate* pIsolate, |
| 206 v8::Local<v8::Value> pValue); |
| 207 v8::Local<v8::Array> FXJS_ToArray(v8::Isolate* pIsolate, |
| 205 v8::Local<v8::Value> pValue); | 208 v8::Local<v8::Value> pValue); |
| 206 CFX_WideString JS_ToString(v8::Isolate* pIsolate, v8::Local<v8::Value> pValue); | 209 void FXJS_ValueCopy(v8::Local<v8::Value>& pTo, v8::Local<v8::Value> pFrom); |
| 207 v8::Local<v8::Array> JS_ToArray(v8::Isolate* pIsolate, | |
| 208 v8::Local<v8::Value> pValue); | |
| 209 void JS_ValueCopy(v8::Local<v8::Value>& pTo, v8::Local<v8::Value> pFrom); | |
| 210 | |
| 211 double JS_GetDateTime(); | |
| 212 int JS_GetYearFromTime(double dt); | |
| 213 int JS_GetMonthFromTime(double dt); | |
| 214 int JS_GetDayFromTime(double dt); | |
| 215 int JS_GetHourFromTime(double dt); | |
| 216 int JS_GetMinFromTime(double dt); | |
| 217 int JS_GetSecFromTime(double dt); | |
| 218 double JS_DateParse(const wchar_t* string); | |
| 219 double JS_MakeDay(int nYear, int nMonth, int nDay); | |
| 220 double JS_MakeTime(int nHour, int nMin, int nSec, int nMs); | |
| 221 double JS_MakeDate(double day, double time); | |
| 222 bool JS_PortIsNan(double d); | |
| 223 double JS_LocalTime(double d); | |
| 224 | 210 |
| 225 #endif // FPDFSDK_INCLUDE_JSAPI_FXJS_V8_H_ | 211 #endif // FPDFSDK_INCLUDE_JSAPI_FXJS_V8_H_ |
| OLD | NEW |