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 #include "PublicMethods.h" | 7 #include "PublicMethods.h" |
8 | 8 |
9 #include "../../include/fsdk_mgr.h" // For CPDFDoc_Environment. | 9 #include "../../include/fsdk_mgr.h" // For CPDFDoc_Environment. |
10 #include "../../include/javascript/IJavaScript.h" | 10 #include "../../include/javascript/IJavaScript.h" |
11 #include "Field.h" | 11 #include "Field.h" |
12 #include "JS_Context.h" | 12 #include "JS_Context.h" |
13 #include "JS_Define.h" | 13 #include "JS_Define.h" |
14 #include "JS_EventHandler.h" | 14 #include "JS_EventHandler.h" |
15 #include "JS_Object.h" | 15 #include "JS_Object.h" |
16 #include "JS_Runtime.h" | 16 #include "JS_Runtime.h" |
17 #include "JS_Value.h" | 17 #include "JS_Value.h" |
18 #include "color.h" | 18 #include "color.h" |
19 #include "resource.h" | 19 #include "resource.h" |
20 #include "util.h" | 20 #include "util.h" |
21 | 21 |
22 static v8::Isolate* GetIsolate(IJS_Context* cc) { | |
23 CJS_Context* pContext = (CJS_Context*)cc; | |
24 ASSERT(pContext != NULL); | |
25 | |
26 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | |
27 ASSERT(pRuntime != NULL); | |
28 | |
29 return pRuntime->GetIsolate(); | |
30 } | |
31 | |
32 /* -------------------------------- CJS_PublicMethods | |
33 * -------------------------------- */ | |
34 | |
35 #define DOUBLE_CORRECT 0.000000000000001 | 22 #define DOUBLE_CORRECT 0.000000000000001 |
36 | 23 |
37 BEGIN_JS_STATIC_GLOBAL_FUN(CJS_PublicMethods) | 24 BEGIN_JS_STATIC_GLOBAL_FUN(CJS_PublicMethods) |
38 JS_STATIC_GLOBAL_FUN_ENTRY(AFNumber_Format) | 25 JS_STATIC_GLOBAL_FUN_ENTRY(AFNumber_Format) |
39 JS_STATIC_GLOBAL_FUN_ENTRY(AFNumber_Keystroke) | 26 JS_STATIC_GLOBAL_FUN_ENTRY(AFNumber_Keystroke) |
40 JS_STATIC_GLOBAL_FUN_ENTRY(AFPercent_Format) | 27 JS_STATIC_GLOBAL_FUN_ENTRY(AFPercent_Format) |
41 JS_STATIC_GLOBAL_FUN_ENTRY(AFPercent_Keystroke) | 28 JS_STATIC_GLOBAL_FUN_ENTRY(AFPercent_Keystroke) |
42 JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_FormatEx) | 29 JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_FormatEx) |
43 JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_KeystrokeEx) | 30 JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_KeystrokeEx) |
44 JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_Format) | 31 JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_Format) |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 FX_BOOL& bDot) { | 326 FX_BOOL& bDot) { |
340 FX_BOOL bAllDigits = FALSE; | 327 FX_BOOL bAllDigits = FALSE; |
341 FX_BOOL bSign = FALSE; | 328 FX_BOOL bSign = FALSE; |
342 FX_BOOL bKXJS = FALSE; | 329 FX_BOOL bKXJS = FALSE; |
343 | 330 |
344 dRet = ParseNumber(swSource, bAllDigits, bDot, bSign, bKXJS); | 331 dRet = ParseNumber(swSource, bAllDigits, bDot, bSign, bKXJS); |
345 | 332 |
346 return bAllDigits; | 333 return bAllDigits; |
347 } | 334 } |
348 | 335 |
349 CJS_Array CJS_PublicMethods::AF_MakeArrayFromList(v8::Isolate* isolate, | 336 CJS_Array CJS_PublicMethods::AF_MakeArrayFromList(CJS_Runtime* pRuntime, |
350 CJS_Value val) { | 337 CJS_Value val) { |
351 CJS_Array StrArray(isolate); | 338 CJS_Array StrArray(pRuntime); |
352 if (val.IsArrayObject()) { | 339 if (val.IsArrayObject()) { |
353 val.ConvertToArray(StrArray); | 340 val.ConvertToArray(StrArray); |
354 return StrArray; | 341 return StrArray; |
355 } | 342 } |
356 CFX_WideString wsStr = val.ToCFXWideString(); | 343 CFX_WideString wsStr = val.ToCFXWideString(); |
357 CFX_ByteString t = CFX_ByteString::FromUnicode(wsStr); | 344 CFX_ByteString t = CFX_ByteString::FromUnicode(wsStr); |
358 const char* p = (const char*)t; | 345 const char* p = (const char*)t; |
359 | 346 |
360 int ch = ','; | 347 int ch = ','; |
361 int nIndex = 0; | 348 int nIndex = 0; |
362 | 349 |
363 while (*p) { | 350 while (*p) { |
364 const char* pTemp = strchr(p, ch); | 351 const char* pTemp = strchr(p, ch); |
365 if (pTemp == NULL) { | 352 if (pTemp == NULL) { |
366 StrArray.SetElement(nIndex, CJS_Value(isolate, StrTrim(p).c_str())); | 353 StrArray.SetElement(nIndex, CJS_Value(pRuntime, StrTrim(p).c_str())); |
367 break; | 354 break; |
368 } else { | 355 } else { |
369 char* pSub = new char[pTemp - p + 1]; | 356 char* pSub = new char[pTemp - p + 1]; |
370 strncpy(pSub, p, pTemp - p); | 357 strncpy(pSub, p, pTemp - p); |
371 *(pSub + (pTemp - p)) = '\0'; | 358 *(pSub + (pTemp - p)) = '\0'; |
372 | 359 |
373 StrArray.SetElement(nIndex, CJS_Value(isolate, StrTrim(pSub).c_str())); | 360 StrArray.SetElement(nIndex, CJS_Value(pRuntime, StrTrim(pSub).c_str())); |
374 delete[] pSub; | 361 delete[] pSub; |
375 | 362 |
376 nIndex++; | 363 nIndex++; |
377 p = ++pTemp; | 364 p = ++pTemp; |
378 } | 365 } |
379 } | 366 } |
380 return StrArray; | 367 return StrArray; |
381 } | 368 } |
382 | 369 |
383 int CJS_PublicMethods::ParseStringInteger(const CFX_WideString& string, | 370 int CJS_PublicMethods::ParseStringInteger(const CFX_WideString& string, |
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
904 | 891 |
905 /* -------------------------------------------------------------------------- */ | 892 /* -------------------------------------------------------------------------- */ |
906 | 893 |
907 // function AFNumber_Format(nDec, sepStyle, negStyle, currStyle, strCurrency, | 894 // function AFNumber_Format(nDec, sepStyle, negStyle, currStyle, strCurrency, |
908 // bCurrencyPrepend) | 895 // bCurrencyPrepend) |
909 FX_BOOL CJS_PublicMethods::AFNumber_Format(IJS_Context* cc, | 896 FX_BOOL CJS_PublicMethods::AFNumber_Format(IJS_Context* cc, |
910 const CJS_Parameters& params, | 897 const CJS_Parameters& params, |
911 CJS_Value& vRet, | 898 CJS_Value& vRet, |
912 CFX_WideString& sError) { | 899 CFX_WideString& sError) { |
913 #if _FX_OS_ != _FX_ANDROID_ | 900 #if _FX_OS_ != _FX_ANDROID_ |
914 v8::Isolate* isolate = ::GetIsolate(cc); | |
915 CJS_Context* pContext = (CJS_Context*)cc; | 901 CJS_Context* pContext = (CJS_Context*)cc; |
916 ASSERT(pContext != NULL); | |
917 CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
918 ASSERT(pEvent != NULL); | |
919 | |
920 if (params.size() != 6) { | 902 if (params.size() != 6) { |
921 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 903 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
922 return FALSE; | 904 return FALSE; |
923 } | 905 } |
| 906 |
| 907 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
| 908 CJS_EventHandler* pEvent = pContext->GetEventHandler(); |
924 if (!pEvent->m_pValue) | 909 if (!pEvent->m_pValue) |
925 return FALSE; | 910 return FALSE; |
| 911 |
926 CFX_WideString& Value = pEvent->Value(); | 912 CFX_WideString& Value = pEvent->Value(); |
927 CFX_ByteString strValue = StrTrim(CFX_ByteString::FromUnicode(Value)); | 913 CFX_ByteString strValue = StrTrim(CFX_ByteString::FromUnicode(Value)); |
928 | |
929 if (strValue.IsEmpty()) | 914 if (strValue.IsEmpty()) |
930 return TRUE; | 915 return TRUE; |
931 | 916 |
932 int iDec = params[0].ToInt(); | 917 int iDec = params[0].ToInt(); |
933 int iSepStyle = params[1].ToInt(); | 918 int iSepStyle = params[1].ToInt(); |
934 int iNegStyle = params[2].ToInt(); | 919 int iNegStyle = params[2].ToInt(); |
935 // params[3] is iCurrStyle, it's not used. | 920 // params[3] is iCurrStyle, it's not used. |
936 std::wstring wstrCurrency(params[4].ToCFXWideString().c_str()); | 921 std::wstring wstrCurrency(params[4].ToCFXWideString().c_str()); |
937 FX_BOOL bCurrencyPrepend = params[5].ToBool(); | 922 FX_BOOL bCurrencyPrepend = params[5].ToBool(); |
938 | 923 |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1024 if (iNegative) { | 1009 if (iNegative) { |
1025 if (iNegStyle == 0) { | 1010 if (iNegStyle == 0) { |
1026 strValue2.insert(0, L"-"); | 1011 strValue2.insert(0, L"-"); |
1027 } | 1012 } |
1028 if (iNegStyle == 2 || iNegStyle == 3) { | 1013 if (iNegStyle == 2 || iNegStyle == 3) { |
1029 strValue2.insert(0, L"("); | 1014 strValue2.insert(0, L"("); |
1030 strValue2.insert(strValue2.length(), L")"); | 1015 strValue2.insert(strValue2.length(), L")"); |
1031 } | 1016 } |
1032 if (iNegStyle == 1 || iNegStyle == 3) { | 1017 if (iNegStyle == 1 || iNegStyle == 3) { |
1033 if (Field* fTarget = pEvent->Target_Field()) { | 1018 if (Field* fTarget = pEvent->Target_Field()) { |
1034 CJS_Array arColor(isolate); | 1019 CJS_Array arColor(pRuntime); |
1035 CJS_Value vColElm(isolate); | 1020 CJS_Value vColElm(pRuntime); |
1036 vColElm = L"RGB"; | 1021 vColElm = L"RGB"; |
1037 arColor.SetElement(0, vColElm); | 1022 arColor.SetElement(0, vColElm); |
1038 vColElm = 1; | 1023 vColElm = 1; |
1039 arColor.SetElement(1, vColElm); | 1024 arColor.SetElement(1, vColElm); |
1040 vColElm = 0; | 1025 vColElm = 0; |
1041 arColor.SetElement(2, vColElm); | 1026 arColor.SetElement(2, vColElm); |
1042 | 1027 |
1043 arColor.SetElement(3, vColElm); | 1028 arColor.SetElement(3, vColElm); |
1044 | 1029 |
1045 CJS_PropValue vProp(isolate); | 1030 CJS_PropValue vProp(pRuntime); |
1046 vProp.StartGetting(); | 1031 vProp.StartGetting(); |
1047 vProp << arColor; | 1032 vProp << arColor; |
1048 vProp.StartSetting(); | 1033 vProp.StartSetting(); |
1049 fTarget->textColor(cc, vProp, sError); // red | 1034 fTarget->textColor(cc, vProp, sError); // red |
1050 } | 1035 } |
1051 } | 1036 } |
1052 } else { | 1037 } else { |
1053 if (iNegStyle == 1 || iNegStyle == 3) { | 1038 if (iNegStyle == 1 || iNegStyle == 3) { |
1054 if (Field* fTarget = pEvent->Target_Field()) { | 1039 if (Field* fTarget = pEvent->Target_Field()) { |
1055 CJS_Array arColor(isolate); | 1040 CJS_Array arColor(pRuntime); |
1056 CJS_Value vColElm(isolate); | 1041 CJS_Value vColElm(pRuntime); |
1057 vColElm = L"RGB"; | 1042 vColElm = L"RGB"; |
1058 arColor.SetElement(0, vColElm); | 1043 arColor.SetElement(0, vColElm); |
1059 vColElm = 0; | 1044 vColElm = 0; |
1060 arColor.SetElement(1, vColElm); | 1045 arColor.SetElement(1, vColElm); |
1061 arColor.SetElement(2, vColElm); | 1046 arColor.SetElement(2, vColElm); |
1062 arColor.SetElement(3, vColElm); | 1047 arColor.SetElement(3, vColElm); |
1063 | 1048 |
1064 CJS_PropValue vProp(isolate); | 1049 CJS_PropValue vProp(pRuntime); |
1065 vProp.StartGetting(); | 1050 vProp.StartGetting(); |
1066 fTarget->textColor(cc, vProp, sError); | 1051 fTarget->textColor(cc, vProp, sError); |
1067 | 1052 |
1068 CJS_Array aProp(isolate); | 1053 CJS_Array aProp(pRuntime); |
1069 vProp.ConvertToArray(aProp); | 1054 vProp.ConvertToArray(aProp); |
1070 | 1055 |
1071 CPWL_Color crProp; | 1056 CPWL_Color crProp; |
1072 CPWL_Color crColor; | 1057 CPWL_Color crColor; |
1073 color::ConvertArrayToPWLColor(aProp, crProp); | 1058 color::ConvertArrayToPWLColor(aProp, crProp); |
1074 color::ConvertArrayToPWLColor(arColor, crColor); | 1059 color::ConvertArrayToPWLColor(arColor, crColor); |
1075 | 1060 |
1076 if (crColor != crProp) { | 1061 if (crColor != crProp) { |
1077 CJS_PropValue vProp2(isolate); | 1062 CJS_PropValue vProp2(pRuntime); |
1078 vProp2.StartGetting(); | 1063 vProp2.StartGetting(); |
1079 vProp2 << arColor; | 1064 vProp2 << arColor; |
1080 vProp2.StartSetting(); | 1065 vProp2.StartSetting(); |
1081 fTarget->textColor(cc, vProp2, sError); | 1066 fTarget->textColor(cc, vProp2, sError); |
1082 } | 1067 } |
1083 } | 1068 } |
1084 } | 1069 } |
1085 } | 1070 } |
1086 Value = strValue2.c_str(); | 1071 Value = strValue2.c_str(); |
1087 #endif | 1072 #endif |
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1463 return TRUE; | 1448 return TRUE; |
1464 } | 1449 } |
1465 } | 1450 } |
1466 return TRUE; | 1451 return TRUE; |
1467 } | 1452 } |
1468 | 1453 |
1469 FX_BOOL CJS_PublicMethods::AFDate_Format(IJS_Context* cc, | 1454 FX_BOOL CJS_PublicMethods::AFDate_Format(IJS_Context* cc, |
1470 const CJS_Parameters& params, | 1455 const CJS_Parameters& params, |
1471 CJS_Value& vRet, | 1456 CJS_Value& vRet, |
1472 CFX_WideString& sError) { | 1457 CFX_WideString& sError) { |
1473 v8::Isolate* isolate = ::GetIsolate(cc); | 1458 CJS_Context* pContext = (CJS_Context*)cc; |
1474 | |
1475 if (params.size() != 1) { | 1459 if (params.size() != 1) { |
1476 CJS_Context* pContext = (CJS_Context*)cc; | |
1477 ASSERT(pContext != NULL); | |
1478 | |
1479 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 1460 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
1480 return FALSE; | 1461 return FALSE; |
1481 } | 1462 } |
1482 | 1463 |
1483 int iIndex = params[0].ToInt(); | 1464 int iIndex = params[0].ToInt(); |
1484 const FX_WCHAR* cFormats[] = {L"m/d", | 1465 const FX_WCHAR* cFormats[] = {L"m/d", |
1485 L"m/d/yy", | 1466 L"m/d/yy", |
1486 L"mm/dd/yy", | 1467 L"mm/dd/yy", |
1487 L"mm/yy", | 1468 L"mm/yy", |
1488 L"d-mmm", | 1469 L"d-mmm", |
1489 L"d-mmm-yy", | 1470 L"d-mmm-yy", |
1490 L"dd-mmm-yy", | 1471 L"dd-mmm-yy", |
1491 L"yy-mm-dd", | 1472 L"yy-mm-dd", |
1492 L"mmm-yy", | 1473 L"mmm-yy", |
1493 L"mmmm-yy", | 1474 L"mmmm-yy", |
1494 L"mmm d, yyyy", | 1475 L"mmm d, yyyy", |
1495 L"mmmm d, yyyy", | 1476 L"mmmm d, yyyy", |
1496 L"m/d/yy h:MM tt", | 1477 L"m/d/yy h:MM tt", |
1497 L"m/d/yy HH:MM"}; | 1478 L"m/d/yy HH:MM"}; |
1498 | 1479 |
1499 if (iIndex < 0 || (static_cast<size_t>(iIndex) >= FX_ArraySize(cFormats))) | 1480 if (iIndex < 0 || (static_cast<size_t>(iIndex) >= FX_ArraySize(cFormats))) |
1500 iIndex = 0; | 1481 iIndex = 0; |
1501 | 1482 |
1502 CJS_Parameters newParams; | 1483 CJS_Parameters newParams; |
1503 CJS_Value val(isolate, cFormats[iIndex]); | 1484 newParams.push_back( |
1504 newParams.push_back(val); | 1485 CJS_Value(CJS_Runtime::FromContext(cc), cFormats[iIndex])); |
1505 return AFDate_FormatEx(cc, newParams, vRet, sError); | 1486 return AFDate_FormatEx(cc, newParams, vRet, sError); |
1506 } | 1487 } |
1507 | 1488 |
1508 // AFDate_KeystrokeEx(cFormat) | 1489 // AFDate_KeystrokeEx(cFormat) |
1509 FX_BOOL CJS_PublicMethods::AFDate_Keystroke(IJS_Context* cc, | 1490 FX_BOOL CJS_PublicMethods::AFDate_Keystroke(IJS_Context* cc, |
1510 const CJS_Parameters& params, | 1491 const CJS_Parameters& params, |
1511 CJS_Value& vRet, | 1492 CJS_Value& vRet, |
1512 CFX_WideString& sError) { | 1493 CFX_WideString& sError) { |
1513 v8::Isolate* isolate = ::GetIsolate(cc); | 1494 CJS_Context* pContext = (CJS_Context*)cc; |
1514 | |
1515 if (params.size() != 1) { | 1495 if (params.size() != 1) { |
1516 CJS_Context* pContext = (CJS_Context*)cc; | |
1517 ASSERT(pContext != NULL); | |
1518 | |
1519 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 1496 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
1520 return FALSE; | 1497 return FALSE; |
1521 } | 1498 } |
1522 | 1499 |
1523 int iIndex = params[0].ToInt(); | 1500 int iIndex = params[0].ToInt(); |
1524 const FX_WCHAR* cFormats[] = {L"m/d", | 1501 const FX_WCHAR* cFormats[] = {L"m/d", |
1525 L"m/d/yy", | 1502 L"m/d/yy", |
1526 L"mm/dd/yy", | 1503 L"mm/dd/yy", |
1527 L"mm/yy", | 1504 L"mm/yy", |
1528 L"d-mmm", | 1505 L"d-mmm", |
1529 L"d-mmm-yy", | 1506 L"d-mmm-yy", |
1530 L"dd-mmm-yy", | 1507 L"dd-mmm-yy", |
1531 L"yy-mm-dd", | 1508 L"yy-mm-dd", |
1532 L"mmm-yy", | 1509 L"mmm-yy", |
1533 L"mmmm-yy", | 1510 L"mmmm-yy", |
1534 L"mmm d, yyyy", | 1511 L"mmm d, yyyy", |
1535 L"mmmm d, yyyy", | 1512 L"mmmm d, yyyy", |
1536 L"m/d/yy h:MM tt", | 1513 L"m/d/yy h:MM tt", |
1537 L"m/d/yy HH:MM"}; | 1514 L"m/d/yy HH:MM"}; |
1538 | 1515 |
1539 if (iIndex < 0 || (static_cast<size_t>(iIndex) >= FX_ArraySize(cFormats))) | 1516 if (iIndex < 0 || (static_cast<size_t>(iIndex) >= FX_ArraySize(cFormats))) |
1540 iIndex = 0; | 1517 iIndex = 0; |
1541 | 1518 |
1542 CJS_Parameters newParams; | 1519 CJS_Parameters newParams; |
1543 CJS_Value val(isolate, cFormats[iIndex]); | 1520 newParams.push_back( |
1544 newParams.push_back(val); | 1521 CJS_Value(CJS_Runtime::FromContext(cc), cFormats[iIndex])); |
1545 return AFDate_KeystrokeEx(cc, newParams, vRet, sError); | 1522 return AFDate_KeystrokeEx(cc, newParams, vRet, sError); |
1546 } | 1523 } |
1547 | 1524 |
1548 // function AFTime_Format(ptf) | 1525 // function AFTime_Format(ptf) |
1549 FX_BOOL CJS_PublicMethods::AFTime_Format(IJS_Context* cc, | 1526 FX_BOOL CJS_PublicMethods::AFTime_Format(IJS_Context* cc, |
1550 const CJS_Parameters& params, | 1527 const CJS_Parameters& params, |
1551 CJS_Value& vRet, | 1528 CJS_Value& vRet, |
1552 CFX_WideString& sError) { | 1529 CFX_WideString& sError) { |
1553 v8::Isolate* isolate = ::GetIsolate(cc); | 1530 CJS_Context* pContext = (CJS_Context*)cc; |
1554 | |
1555 if (params.size() != 1) { | 1531 if (params.size() != 1) { |
1556 CJS_Context* pContext = (CJS_Context*)cc; | |
1557 ASSERT(pContext != NULL); | |
1558 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 1532 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
1559 return FALSE; | 1533 return FALSE; |
1560 } | 1534 } |
1561 | 1535 |
1562 int iIndex = params[0].ToInt(); | 1536 int iIndex = params[0].ToInt(); |
1563 const FX_WCHAR* cFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss", | 1537 const FX_WCHAR* cFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss", |
1564 L"h:MM:ss tt"}; | 1538 L"h:MM:ss tt"}; |
1565 | 1539 |
1566 if (iIndex < 0 || (static_cast<size_t>(iIndex) >= FX_ArraySize(cFormats))) | 1540 if (iIndex < 0 || (static_cast<size_t>(iIndex) >= FX_ArraySize(cFormats))) |
1567 iIndex = 0; | 1541 iIndex = 0; |
1568 | 1542 |
1569 CJS_Parameters newParams; | 1543 CJS_Parameters newParams; |
1570 CJS_Value val(isolate, cFormats[iIndex]); | 1544 newParams.push_back( |
1571 newParams.push_back(val); | 1545 CJS_Value(CJS_Runtime::FromContext(cc), cFormats[iIndex])); |
1572 return AFDate_FormatEx(cc, newParams, vRet, sError); | 1546 return AFDate_FormatEx(cc, newParams, vRet, sError); |
1573 } | 1547 } |
1574 | 1548 |
1575 FX_BOOL CJS_PublicMethods::AFTime_Keystroke(IJS_Context* cc, | 1549 FX_BOOL CJS_PublicMethods::AFTime_Keystroke(IJS_Context* cc, |
1576 const CJS_Parameters& params, | 1550 const CJS_Parameters& params, |
1577 CJS_Value& vRet, | 1551 CJS_Value& vRet, |
1578 CFX_WideString& sError) { | 1552 CFX_WideString& sError) { |
1579 v8::Isolate* isolate = ::GetIsolate(cc); | 1553 CJS_Context* pContext = (CJS_Context*)cc; |
1580 if (params.size() != 1) { | 1554 if (params.size() != 1) { |
1581 CJS_Context* pContext = (CJS_Context*)cc; | |
1582 ASSERT(pContext != NULL); | |
1583 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 1555 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
1584 return FALSE; | 1556 return FALSE; |
1585 } | 1557 } |
1586 | 1558 |
1587 int iIndex = params[0].ToInt(); | 1559 int iIndex = params[0].ToInt(); |
1588 const FX_WCHAR* cFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss", | 1560 const FX_WCHAR* cFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss", |
1589 L"h:MM:ss tt"}; | 1561 L"h:MM:ss tt"}; |
1590 | 1562 |
1591 if (iIndex < 0 || (static_cast<size_t>(iIndex) >= FX_ArraySize(cFormats))) | 1563 if (iIndex < 0 || (static_cast<size_t>(iIndex) >= FX_ArraySize(cFormats))) |
1592 iIndex = 0; | 1564 iIndex = 0; |
1593 | 1565 |
1594 CJS_Parameters newParams; | 1566 CJS_Parameters newParams; |
1595 CJS_Value val(isolate, cFormats[iIndex]); | 1567 newParams.push_back( |
1596 newParams.push_back(val); | 1568 CJS_Value(CJS_Runtime::FromContext(cc), cFormats[iIndex])); |
1597 return AFDate_KeystrokeEx(cc, newParams, vRet, sError); | 1569 return AFDate_KeystrokeEx(cc, newParams, vRet, sError); |
1598 } | 1570 } |
1599 | 1571 |
1600 FX_BOOL CJS_PublicMethods::AFTime_FormatEx(IJS_Context* cc, | 1572 FX_BOOL CJS_PublicMethods::AFTime_FormatEx(IJS_Context* cc, |
1601 const CJS_Parameters& params, | 1573 const CJS_Parameters& params, |
1602 CJS_Value& vRet, | 1574 CJS_Value& vRet, |
1603 CFX_WideString& sError) { | 1575 CFX_WideString& sError) { |
1604 return AFDate_FormatEx(cc, params, vRet, sError); | 1576 return AFDate_FormatEx(cc, params, vRet, sError); |
1605 } | 1577 } |
1606 | 1578 |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1753 | 1725 |
1754 wideChange = wChange.c_str(); | 1726 wideChange = wChange.c_str(); |
1755 return TRUE; | 1727 return TRUE; |
1756 } | 1728 } |
1757 | 1729 |
1758 // function AFSpecial_Keystroke(psf) | 1730 // function AFSpecial_Keystroke(psf) |
1759 FX_BOOL CJS_PublicMethods::AFSpecial_Keystroke(IJS_Context* cc, | 1731 FX_BOOL CJS_PublicMethods::AFSpecial_Keystroke(IJS_Context* cc, |
1760 const CJS_Parameters& params, | 1732 const CJS_Parameters& params, |
1761 CJS_Value& vRet, | 1733 CJS_Value& vRet, |
1762 CFX_WideString& sError) { | 1734 CFX_WideString& sError) { |
1763 v8::Isolate* isolate = ::GetIsolate(cc); | |
1764 | |
1765 CJS_Context* pContext = (CJS_Context*)cc; | 1735 CJS_Context* pContext = (CJS_Context*)cc; |
1766 ASSERT(pContext != NULL); | |
1767 CJS_EventHandler* pEvent = pContext->GetEventHandler(); | |
1768 ASSERT(pEvent != NULL); | |
1769 | |
1770 if (params.size() != 1) { | 1736 if (params.size() != 1) { |
1771 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 1737 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
1772 return FALSE; | 1738 return FALSE; |
1773 } | 1739 } |
1774 | 1740 |
| 1741 CJS_EventHandler* pEvent = pContext->GetEventHandler(); |
| 1742 if (!pEvent->m_pValue) |
| 1743 return FALSE; |
| 1744 |
1775 std::string cFormat; | 1745 std::string cFormat; |
1776 int iIndex = params[0].ToInt(); | 1746 int iIndex = params[0].ToInt(); |
1777 | |
1778 if (!pEvent->m_pValue) | |
1779 return FALSE; | |
1780 // CJS_Value val = pEvent->Value(); | |
1781 CFX_WideString& val = pEvent->Value(); | 1747 CFX_WideString& val = pEvent->Value(); |
1782 std::string strSrc = CFX_ByteString::FromUnicode(val).c_str(); | 1748 std::string strSrc = CFX_ByteString::FromUnicode(val).c_str(); |
1783 std::wstring wstrChange = pEvent->Change().c_str(); | 1749 std::wstring wstrChange = pEvent->Change().c_str(); |
1784 | 1750 |
1785 switch (iIndex) { | 1751 switch (iIndex) { |
1786 case 0: | 1752 case 0: |
1787 cFormat = "99999"; | 1753 cFormat = "99999"; |
1788 break; | 1754 break; |
1789 case 1: | 1755 case 1: |
1790 // cFormat = "99999-9999"; | 1756 // cFormat = "99999-9999"; |
(...skipping 10 matching lines...) Expand all Loading... |
1801 cFormat = "9999999"; | 1767 cFormat = "9999999"; |
1802 break; | 1768 break; |
1803 } | 1769 } |
1804 case 3: | 1770 case 3: |
1805 // cFormat = "999-99-9999"; | 1771 // cFormat = "999-99-9999"; |
1806 cFormat = "999999999"; | 1772 cFormat = "999999999"; |
1807 break; | 1773 break; |
1808 } | 1774 } |
1809 | 1775 |
1810 CJS_Parameters params2; | 1776 CJS_Parameters params2; |
1811 CJS_Value vMask(isolate, cFormat.c_str()); | 1777 params2.push_back(CJS_Value(CJS_Runtime::FromContext(cc), cFormat.c_str())); |
1812 params2.push_back(vMask); | |
1813 | |
1814 return AFSpecial_KeystrokeEx(cc, params2, vRet, sError); | 1778 return AFSpecial_KeystrokeEx(cc, params2, vRet, sError); |
1815 } | 1779 } |
1816 | 1780 |
1817 FX_BOOL CJS_PublicMethods::AFMergeChange(IJS_Context* cc, | 1781 FX_BOOL CJS_PublicMethods::AFMergeChange(IJS_Context* cc, |
1818 const CJS_Parameters& params, | 1782 const CJS_Parameters& params, |
1819 CJS_Value& vRet, | 1783 CJS_Value& vRet, |
1820 CFX_WideString& sError) { | 1784 CFX_WideString& sError) { |
1821 CJS_Context* pContext = (CJS_Context*)cc; | 1785 CJS_Context* pContext = (CJS_Context*)cc; |
1822 ASSERT(pContext != NULL); | 1786 ASSERT(pContext != NULL); |
1823 CJS_EventHandler* pEventHandler = pContext->GetEventHandler(); | 1787 CJS_EventHandler* pEventHandler = pContext->GetEventHandler(); |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1915 return FALSE; | 1879 return FALSE; |
1916 } | 1880 } |
1917 vRet = ParseStringToNumber(params[0].ToCFXWideString().c_str()); | 1881 vRet = ParseStringToNumber(params[0].ToCFXWideString().c_str()); |
1918 return TRUE; | 1882 return TRUE; |
1919 } | 1883 } |
1920 | 1884 |
1921 FX_BOOL CJS_PublicMethods::AFSimple_Calculate(IJS_Context* cc, | 1885 FX_BOOL CJS_PublicMethods::AFSimple_Calculate(IJS_Context* cc, |
1922 const CJS_Parameters& params, | 1886 const CJS_Parameters& params, |
1923 CJS_Value& vRet, | 1887 CJS_Value& vRet, |
1924 CFX_WideString& sError) { | 1888 CFX_WideString& sError) { |
1925 v8::Isolate* isolate = ::GetIsolate(cc); | |
1926 | |
1927 CJS_Context* pContext = (CJS_Context*)cc; | 1889 CJS_Context* pContext = (CJS_Context*)cc; |
1928 ASSERT(pContext != NULL); | |
1929 | |
1930 if (params.size() != 2) { | 1890 if (params.size() != 2) { |
1931 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 1891 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
1932 return FALSE; | 1892 return FALSE; |
1933 } | 1893 } |
1934 | 1894 |
1935 CJS_Value params1 = params[1]; | 1895 CJS_Value params1 = params[1]; |
1936 | |
1937 if (!params1.IsArrayObject() && params1.GetType() != CJS_Value::VT_string) { | 1896 if (!params1.IsArrayObject() && params1.GetType() != CJS_Value::VT_string) { |
1938 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 1897 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
1939 return FALSE; | 1898 return FALSE; |
1940 } | 1899 } |
1941 | 1900 |
1942 CPDFSDK_Document* pReaderDoc = pContext->GetReaderDocument(); | 1901 CPDFSDK_Document* pReaderDoc = pContext->GetReaderDocument(); |
1943 ASSERT(pReaderDoc != NULL); | 1902 CPDFSDK_InterForm* pReaderInterForm = pReaderDoc->GetInterForm(); |
| 1903 CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm(); |
1944 | 1904 |
1945 CPDFSDK_InterForm* pReaderInterForm = pReaderDoc->GetInterForm(); | 1905 CFX_WideString sFunction = params[0].ToCFXWideString(); |
1946 ASSERT(pReaderInterForm != NULL); | 1906 double dValue = wcscmp(sFunction.c_str(), L"PRD") == 0 ? 1.0 : 0.0; |
1947 | 1907 |
1948 CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm(); | 1908 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
1949 ASSERT(pInterForm != NULL); | 1909 CJS_Array FieldNameArray = AF_MakeArrayFromList(pRuntime, params1); |
1950 | |
1951 double dValue; | |
1952 CFX_WideString sFunction = params[0].ToCFXWideString(); | |
1953 if (wcscmp(sFunction.c_str(), L"PRD") == 0) | |
1954 dValue = 1.0; | |
1955 else | |
1956 dValue = 0.0; | |
1957 | |
1958 CJS_Array FieldNameArray = AF_MakeArrayFromList(isolate, params1); | |
1959 | |
1960 int nFieldsCount = 0; | 1910 int nFieldsCount = 0; |
1961 | 1911 |
1962 for (int i = 0, isz = FieldNameArray.GetLength(); i < isz; i++) { | 1912 for (int i = 0, isz = FieldNameArray.GetLength(); i < isz; i++) { |
1963 CJS_Value jsValue(isolate); | 1913 CJS_Value jsValue(pRuntime); |
1964 FieldNameArray.GetElement(i, jsValue); | 1914 FieldNameArray.GetElement(i, jsValue); |
1965 CFX_WideString wsFieldName = jsValue.ToCFXWideString(); | 1915 CFX_WideString wsFieldName = jsValue.ToCFXWideString(); |
1966 | 1916 |
1967 for (int j = 0, jsz = pInterForm->CountFields(wsFieldName); j < jsz; j++) { | 1917 for (int j = 0, jsz = pInterForm->CountFields(wsFieldName); j < jsz; j++) { |
1968 if (CPDF_FormField* pFormField = pInterForm->GetField(j, wsFieldName)) { | 1918 if (CPDF_FormField* pFormField = pInterForm->GetField(j, wsFieldName)) { |
1969 double dTemp = 0.0; | 1919 double dTemp = 0.0; |
1970 | 1920 |
1971 switch (pFormField->GetFieldType()) { | 1921 switch (pFormField->GetFieldType()) { |
1972 case FIELDTYPE_TEXTFIELD: | 1922 case FIELDTYPE_TEXTFIELD: |
1973 case FIELDTYPE_COMBOBOX: { | 1923 case FIELDTYPE_COMBOBOX: { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2015 nFieldsCount++; | 1965 nFieldsCount++; |
2016 } | 1966 } |
2017 } | 1967 } |
2018 } | 1968 } |
2019 | 1969 |
2020 if (wcscmp(sFunction.c_str(), L"AVG") == 0 && nFieldsCount > 0) | 1970 if (wcscmp(sFunction.c_str(), L"AVG") == 0 && nFieldsCount > 0) |
2021 dValue /= nFieldsCount; | 1971 dValue /= nFieldsCount; |
2022 | 1972 |
2023 dValue = (double)floor(dValue * FXSYS_pow((double)10, (double)6) + 0.49) / | 1973 dValue = (double)floor(dValue * FXSYS_pow((double)10, (double)6) + 0.49) / |
2024 FXSYS_pow((double)10, (double)6); | 1974 FXSYS_pow((double)10, (double)6); |
2025 CJS_Value jsValue(isolate, dValue); | 1975 CJS_Value jsValue(pRuntime, dValue); |
2026 if (pContext->GetEventHandler()->m_pValue) | 1976 if (pContext->GetEventHandler()->m_pValue) |
2027 pContext->GetEventHandler()->Value() = jsValue.ToCFXWideString(); | 1977 pContext->GetEventHandler()->Value() = jsValue.ToCFXWideString(); |
2028 | 1978 |
2029 return TRUE; | 1979 return TRUE; |
2030 } | 1980 } |
2031 | 1981 |
2032 /* This function validates the current event to ensure that its value is | 1982 /* This function validates the current event to ensure that its value is |
2033 ** within the specified range. */ | 1983 ** within the specified range. */ |
2034 | 1984 |
2035 FX_BOOL CJS_PublicMethods::AFRange_Validate(IJS_Context* cc, | 1985 FX_BOOL CJS_PublicMethods::AFRange_Validate(IJS_Context* cc, |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2076 Alert(pContext, swMsg.c_str()); | 2026 Alert(pContext, swMsg.c_str()); |
2077 pEvent->Rc() = FALSE; | 2027 pEvent->Rc() = FALSE; |
2078 } | 2028 } |
2079 return TRUE; | 2029 return TRUE; |
2080 } | 2030 } |
2081 | 2031 |
2082 FX_BOOL CJS_PublicMethods::AFExtractNums(IJS_Context* cc, | 2032 FX_BOOL CJS_PublicMethods::AFExtractNums(IJS_Context* cc, |
2083 const CJS_Parameters& params, | 2033 const CJS_Parameters& params, |
2084 CJS_Value& vRet, | 2034 CJS_Value& vRet, |
2085 CFX_WideString& sError) { | 2035 CFX_WideString& sError) { |
2086 v8::Isolate* isolate = ::GetIsolate(cc); | |
2087 CJS_Context* pContext = (CJS_Context*)cc; | 2036 CJS_Context* pContext = (CJS_Context*)cc; |
2088 ASSERT(pContext != NULL); | |
2089 | |
2090 if (params.size() != 1) { | 2037 if (params.size() != 1) { |
2091 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 2038 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
2092 return FALSE; | 2039 return FALSE; |
2093 } | 2040 } |
2094 | 2041 |
2095 CJS_Array nums(isolate); | 2042 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
| 2043 CJS_Array nums(pRuntime); |
2096 | 2044 |
2097 CFX_WideString str = params[0].ToCFXWideString(); | 2045 CFX_WideString str = params[0].ToCFXWideString(); |
2098 CFX_WideString sPart; | 2046 CFX_WideString sPart; |
2099 | 2047 |
2100 if (str.GetAt(0) == L'.' || str.GetAt(0) == L',') | 2048 if (str.GetAt(0) == L'.' || str.GetAt(0) == L',') |
2101 str = L"0" + str; | 2049 str = L"0" + str; |
2102 | 2050 |
2103 int nIndex = 0; | 2051 int nIndex = 0; |
2104 for (int i = 0, sz = str.GetLength(); i < sz; i++) { | 2052 for (int i = 0, sz = str.GetLength(); i < sz; i++) { |
2105 FX_WCHAR wc = str.GetAt(i); | 2053 FX_WCHAR wc = str.GetAt(i); |
2106 if (IsDigit((wchar_t)wc)) { | 2054 if (IsDigit((wchar_t)wc)) { |
2107 sPart += wc; | 2055 sPart += wc; |
2108 } else { | 2056 } else { |
2109 if (sPart.GetLength() > 0) { | 2057 if (sPart.GetLength() > 0) { |
2110 nums.SetElement(nIndex, CJS_Value(isolate, sPart.c_str())); | 2058 nums.SetElement(nIndex, CJS_Value(pRuntime, sPart.c_str())); |
2111 sPart = L""; | 2059 sPart = L""; |
2112 nIndex++; | 2060 nIndex++; |
2113 } | 2061 } |
2114 } | 2062 } |
2115 } | 2063 } |
2116 | 2064 |
2117 if (sPart.GetLength() > 0) { | 2065 if (sPart.GetLength() > 0) { |
2118 nums.SetElement(nIndex, CJS_Value(isolate, sPart.c_str())); | 2066 nums.SetElement(nIndex, CJS_Value(pRuntime, sPart.c_str())); |
2119 } | 2067 } |
2120 | 2068 |
2121 if (nums.GetLength() > 0) | 2069 if (nums.GetLength() > 0) |
2122 vRet = nums; | 2070 vRet = nums; |
2123 else | 2071 else |
2124 vRet.SetNull(); | 2072 vRet.SetNull(); |
2125 | 2073 |
2126 return TRUE; | 2074 return TRUE; |
2127 } | 2075 } |
OLD | NEW |