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 "xfa/fxfa/fm2js/xfa_fm2jscontext.h" | 7 #include "xfa/fxfa/fm2js/xfa_fm2jscontext.h" |
8 | 8 |
9 #include <time.h> | 9 #include <time.h> |
10 | 10 |
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
640 return; | 640 return; |
641 } | 641 } |
642 | 642 |
643 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); | 643 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); |
644 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); | 644 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); |
645 std::unique_ptr<CFXJSE_Value> newPropertyValue( | 645 std::unique_ptr<CFXJSE_Value> newPropertyValue( |
646 new CFXJSE_Value(pIsolate)); | 646 new CFXJSE_Value(pIsolate)); |
647 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 1, propertyValue.get()); | 647 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 1, propertyValue.get()); |
648 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 2, jsObjectValue.get()); | 648 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 2, jsObjectValue.get()); |
649 if (FXJSE_Value_IsNull(propertyValue.get())) { | 649 if (FXJSE_Value_IsNull(propertyValue.get())) { |
650 for (int32_t i = 2; i < iLength; i++) { | 650 for (int32_t j = 2; j < iLength; j++) { |
651 FXJSE_Value_GetObjectPropByIdx(argValue.get(), i, | 651 FXJSE_Value_GetObjectPropByIdx(argValue.get(), j, |
652 jsObjectValue.get()); | 652 jsObjectValue.get()); |
653 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get()); | 653 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get()); |
654 if (!FXJSE_Value_IsNull(newPropertyValue.get())) | 654 if (!FXJSE_Value_IsNull(newPropertyValue.get())) |
655 iCount++; | 655 iCount++; |
656 } | 656 } |
657 } else { | 657 } else { |
658 CFX_ByteString propertyStr; | 658 CFX_ByteString propertyStr; |
659 FXJSE_Value_ToUTF8String(propertyValue.get(), propertyStr); | 659 FXJSE_Value_ToUTF8String(propertyValue.get(), propertyStr); |
660 for (int32_t i = 2; i < iLength; i++) { | 660 for (int32_t j = 2; j < iLength; j++) { |
661 FXJSE_Value_GetObjectPropByIdx(argValue.get(), i, | 661 FXJSE_Value_GetObjectPropByIdx(argValue.get(), j, |
662 jsObjectValue.get()); | 662 jsObjectValue.get()); |
663 FXJSE_Value_GetObjectProp(jsObjectValue.get(), | 663 FXJSE_Value_GetObjectProp(jsObjectValue.get(), |
664 propertyStr.AsStringC(), | 664 propertyStr.AsStringC(), |
665 newPropertyValue.get()); | 665 newPropertyValue.get()); |
666 iCount += (FXJSE_Value_IsNull(newPropertyValue.get()) ? 0 : 1); | 666 iCount += (FXJSE_Value_IsNull(newPropertyValue.get()) ? 0 : 1); |
667 } | 667 } |
668 } | 668 } |
669 } else if (FXJSE_Value_IsObject(argValue.get())) { | 669 } else if (FXJSE_Value_IsObject(argValue.get())) { |
670 std::unique_ptr<CFXJSE_Value> newPropertyValue( | 670 std::unique_ptr<CFXJSE_Value> newPropertyValue( |
671 new CFXJSE_Value(pIsolate)); | 671 new CFXJSE_Value(pIsolate)); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
723 return; | 723 return; |
724 } | 724 } |
725 | 725 |
726 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); | 726 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); |
727 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); | 727 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); |
728 std::unique_ptr<CFXJSE_Value> newPropertyValue( | 728 std::unique_ptr<CFXJSE_Value> newPropertyValue( |
729 new CFXJSE_Value(pIsolate)); | 729 new CFXJSE_Value(pIsolate)); |
730 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 1, propertyValue.get()); | 730 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 1, propertyValue.get()); |
731 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 2, jsObjectValue.get()); | 731 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 2, jsObjectValue.get()); |
732 if (FXJSE_Value_IsNull(propertyValue.get())) { | 732 if (FXJSE_Value_IsNull(propertyValue.get())) { |
733 for (int32_t i = 2; i < iLength; i++) { | 733 for (int32_t j = 2; j < iLength; j++) { |
734 FXJSE_Value_GetObjectPropByIdx(argValue.get(), i, | 734 FXJSE_Value_GetObjectPropByIdx(argValue.get(), j, |
735 jsObjectValue.get()); | 735 jsObjectValue.get()); |
736 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get()); | 736 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get()); |
737 if (FXJSE_Value_IsNull(newPropertyValue.get())) | 737 if (FXJSE_Value_IsNull(newPropertyValue.get())) |
738 continue; | 738 continue; |
739 | 739 |
740 uCount++; | 740 uCount++; |
741 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get()); | 741 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get()); |
742 dMaxValue = (uCount == 1) ? dValue : std::max(dMaxValue, dValue); | 742 dMaxValue = (uCount == 1) ? dValue : std::max(dMaxValue, dValue); |
743 } | 743 } |
744 } else { | 744 } else { |
745 CFX_ByteString propertyStr; | 745 CFX_ByteString propertyStr; |
746 FXJSE_Value_ToUTF8String(propertyValue.get(), propertyStr); | 746 FXJSE_Value_ToUTF8String(propertyValue.get(), propertyStr); |
747 for (int32_t i = 2; i < iLength; i++) { | 747 for (int32_t j = 2; j < iLength; j++) { |
748 FXJSE_Value_GetObjectPropByIdx(argValue.get(), i, | 748 FXJSE_Value_GetObjectPropByIdx(argValue.get(), j, |
749 jsObjectValue.get()); | 749 jsObjectValue.get()); |
750 FXJSE_Value_GetObjectProp(jsObjectValue.get(), | 750 FXJSE_Value_GetObjectProp(jsObjectValue.get(), |
751 propertyStr.AsStringC(), | 751 propertyStr.AsStringC(), |
752 newPropertyValue.get()); | 752 newPropertyValue.get()); |
753 if (FXJSE_Value_IsNull(newPropertyValue.get())) | 753 if (FXJSE_Value_IsNull(newPropertyValue.get())) |
754 continue; | 754 continue; |
755 | 755 |
756 uCount++; | 756 uCount++; |
757 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get()); | 757 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get()); |
758 dMaxValue = (uCount == 1) ? dValue : std::max(dMaxValue, dValue); | 758 dMaxValue = (uCount == 1) ? dValue : std::max(dMaxValue, dValue); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
805 return; | 805 return; |
806 } | 806 } |
807 | 807 |
808 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); | 808 std::unique_ptr<CFXJSE_Value> propertyValue(new CFXJSE_Value(pIsolate)); |
809 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); | 809 std::unique_ptr<CFXJSE_Value> jsObjectValue(new CFXJSE_Value(pIsolate)); |
810 std::unique_ptr<CFXJSE_Value> newPropertyValue( | 810 std::unique_ptr<CFXJSE_Value> newPropertyValue( |
811 new CFXJSE_Value(pIsolate)); | 811 new CFXJSE_Value(pIsolate)); |
812 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 1, propertyValue.get()); | 812 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 1, propertyValue.get()); |
813 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 2, jsObjectValue.get()); | 813 FXJSE_Value_GetObjectPropByIdx(argValue.get(), 2, jsObjectValue.get()); |
814 if (FXJSE_Value_IsNull(propertyValue.get())) { | 814 if (FXJSE_Value_IsNull(propertyValue.get())) { |
815 for (int32_t i = 2; i < iLength; i++) { | 815 for (int32_t j = 2; j < iLength; j++) { |
816 FXJSE_Value_GetObjectPropByIdx(argValue.get(), i, | 816 FXJSE_Value_GetObjectPropByIdx(argValue.get(), j, |
817 jsObjectValue.get()); | 817 jsObjectValue.get()); |
818 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get()); | 818 GetObjectDefaultValue(jsObjectValue.get(), newPropertyValue.get()); |
819 if (FXJSE_Value_IsNull(newPropertyValue.get())) | 819 if (FXJSE_Value_IsNull(newPropertyValue.get())) |
820 continue; | 820 continue; |
821 | 821 |
822 uCount++; | 822 uCount++; |
823 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get()); | 823 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get()); |
824 dMinValue = uCount == 1 ? dValue : std::min(dMinValue, dValue); | 824 dMinValue = uCount == 1 ? dValue : std::min(dMinValue, dValue); |
825 } | 825 } |
826 } else { | 826 } else { |
827 CFX_ByteString propertyStr; | 827 CFX_ByteString propertyStr; |
828 FXJSE_Value_ToUTF8String(propertyValue.get(), propertyStr); | 828 FXJSE_Value_ToUTF8String(propertyValue.get(), propertyStr); |
829 for (int32_t i = 2; i < iLength; i++) { | 829 for (int32_t j = 2; j < iLength; j++) { |
830 FXJSE_Value_GetObjectPropByIdx(argValue.get(), i, | 830 FXJSE_Value_GetObjectPropByIdx(argValue.get(), j, |
831 jsObjectValue.get()); | 831 jsObjectValue.get()); |
832 FXJSE_Value_GetObjectProp(jsObjectValue.get(), | 832 FXJSE_Value_GetObjectProp(jsObjectValue.get(), |
833 propertyStr.AsStringC(), | 833 propertyStr.AsStringC(), |
834 newPropertyValue.get()); | 834 newPropertyValue.get()); |
835 if (FXJSE_Value_IsNull(newPropertyValue.get())) | 835 if (FXJSE_Value_IsNull(newPropertyValue.get())) |
836 continue; | 836 continue; |
837 | 837 |
838 uCount++; | 838 uCount++; |
839 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get()); | 839 FX_DOUBLE dValue = ValueToDouble(pThis, newPropertyValue.get()); |
840 dMinValue = uCount == 1 ? dValue : std::min(dMinValue, dValue); | 840 dMinValue = uCount == 1 ? dValue : std::min(dMinValue, dValue); |
(...skipping 1095 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1936 ++iPos; | 1936 ++iPos; |
1937 } else if (iPos == 2) { | 1937 } else if (iPos == 2) { |
1938 iSecond = FXSYS_atoi(strTemp); | 1938 iSecond = FXSYS_atoi(strTemp); |
1939 ++iPos; | 1939 ++iPos; |
1940 } | 1940 } |
1941 iIndex += 2; | 1941 iIndex += 2; |
1942 } | 1942 } |
1943 } | 1943 } |
1944 if (*(pData + iIndex) == '.') { | 1944 if (*(pData + iIndex) == '.') { |
1945 ++iIndex; | 1945 ++iIndex; |
1946 FX_CHAR strTemp[4]; | 1946 FX_CHAR strSec[4]; |
1947 strTemp[3] = '\0'; | 1947 strSec[3] = '\0'; |
1948 if (*(pData + iIndex) > '9' || *(pData + iIndex) < '0') { | 1948 if (*(pData + iIndex) > '9' || *(pData + iIndex) < '0') { |
1949 return iRet; | 1949 return iRet; |
1950 } | 1950 } |
1951 strTemp[0] = *(pData + iIndex); | 1951 strSec[0] = *(pData + iIndex); |
1952 if (*(pData + iIndex + 1) > '9' || *(pData + iIndex + 1) < '0') { | 1952 if (*(pData + iIndex + 1) > '9' || *(pData + iIndex + 1) < '0') { |
1953 return iRet; | 1953 return iRet; |
1954 } | 1954 } |
1955 strTemp[1] = *(pData + iIndex + 1); | 1955 strSec[1] = *(pData + iIndex + 1); |
1956 if (*(pData + iIndex + 2) > '9' || *(pData + iIndex + 2) < '0') { | 1956 if (*(pData + iIndex + 2) > '9' || *(pData + iIndex + 2) < '0') { |
1957 return iRet; | 1957 return iRet; |
1958 } | 1958 } |
1959 strTemp[2] = *(pData + iIndex + 2); | 1959 strSec[2] = *(pData + iIndex + 2); |
1960 iMilliSecond = FXSYS_atoi(strTemp); | 1960 iMilliSecond = FXSYS_atoi(strSec); |
1961 if (iMilliSecond > 100) { | 1961 if (iMilliSecond > 100) { |
1962 iMilliSecond = 0; | 1962 iMilliSecond = 0; |
1963 return iRet; | 1963 return iRet; |
1964 } | 1964 } |
1965 iIndex += 3; | 1965 iIndex += 3; |
1966 } | 1966 } |
1967 int32_t iSign = 1; | 1967 int32_t iSign = 1; |
1968 if (*(pData + iIndex) == 'z' || *(pData + iIndex) == 'Z') { | 1968 if (*(pData + iIndex) == 'z' || *(pData + iIndex) == 'Z') { |
1969 iRet = 1; | 1969 iRet = 1; |
1970 return iRet; | 1970 return iRet; |
(...skipping 1055 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3026 pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Term"); | 3026 pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Term"); |
3027 } | 3027 } |
3028 } | 3028 } |
3029 | 3029 |
3030 // static | 3030 // static |
3031 void CXFA_FM2JSContext::Choose(CFXJSE_Value* pThis, | 3031 void CXFA_FM2JSContext::Choose(CFXJSE_Value* pThis, |
3032 const CFX_ByteStringC& szFuncName, | 3032 const CFX_ByteStringC& szFuncName, |
3033 CFXJSE_Arguments& args) { | 3033 CFXJSE_Arguments& args) { |
3034 CXFA_FM2JSContext* pContext = | 3034 CXFA_FM2JSContext* pContext = |
3035 static_cast<CXFA_FM2JSContext*>(FXJSE_Value_ToObject(pThis, nullptr)); | 3035 static_cast<CXFA_FM2JSContext*>(FXJSE_Value_ToObject(pThis, nullptr)); |
3036 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); | |
3037 int32_t argc = args.GetLength(); | 3036 int32_t argc = args.GetLength(); |
3038 if (argc > 1) { | 3037 if (argc > 1) { |
| 3038 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); |
3039 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); | 3039 std::unique_ptr<CFXJSE_Value> argOne = args.GetValue(0); |
3040 FX_BOOL argOneIsNull = FALSE; | 3040 FX_BOOL argOneIsNull = FALSE; |
3041 int32_t iIndex = 0; | 3041 int32_t iIndex = 0; |
3042 argOneIsNull = ValueIsNull(pThis, argOne.get()); | 3042 argOneIsNull = ValueIsNull(pThis, argOne.get()); |
3043 if (!argOneIsNull) { | 3043 if (!argOneIsNull) { |
3044 iIndex = (int32_t)ValueToFloat(pThis, argOne.get()); | 3044 iIndex = (int32_t)ValueToFloat(pThis, argOne.get()); |
3045 } | 3045 } |
3046 if (argOneIsNull) { | 3046 if (argOneIsNull) { |
3047 FXJSE_Value_SetNull(args.GetReturnValue()); | 3047 FXJSE_Value_SetNull(args.GetReturnValue()); |
3048 } else if (iIndex < 1) { | 3048 } else if (iIndex < 1) { |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3238 pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"If"); | 3238 pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"If"); |
3239 } | 3239 } |
3240 } | 3240 } |
3241 | 3241 |
3242 // static | 3242 // static |
3243 void CXFA_FM2JSContext::Eval(CFXJSE_Value* pThis, | 3243 void CXFA_FM2JSContext::Eval(CFXJSE_Value* pThis, |
3244 const CFX_ByteStringC& szFuncName, | 3244 const CFX_ByteStringC& szFuncName, |
3245 CFXJSE_Arguments& args) { | 3245 CFXJSE_Arguments& args) { |
3246 CXFA_FM2JSContext* pContext = | 3246 CXFA_FM2JSContext* pContext = |
3247 static_cast<CXFA_FM2JSContext*>(FXJSE_Value_ToObject(pThis, nullptr)); | 3247 static_cast<CXFA_FM2JSContext*>(FXJSE_Value_ToObject(pThis, nullptr)); |
3248 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); | |
3249 if (args.GetLength() == 1) { | 3248 if (args.GetLength() == 1) { |
| 3249 v8::Isolate* pIsolate = pContext->GetScriptRuntime(); |
3250 std::unique_ptr<CFXJSE_Value> scriptValue = GetSimpleValue(pThis, args, 0); | 3250 std::unique_ptr<CFXJSE_Value> scriptValue = GetSimpleValue(pThis, args, 0); |
3251 CFX_ByteString utf8ScriptString; | 3251 CFX_ByteString utf8ScriptString; |
3252 ValueToUTF8String(scriptValue.get(), utf8ScriptString); | 3252 ValueToUTF8String(scriptValue.get(), utf8ScriptString); |
3253 if (utf8ScriptString.IsEmpty()) { | 3253 if (utf8ScriptString.IsEmpty()) { |
3254 FXJSE_Value_SetNull(args.GetReturnValue()); | 3254 FXJSE_Value_SetNull(args.GetReturnValue()); |
3255 } else { | 3255 } else { |
3256 CFX_WideTextBuf wsJavaScriptBuf; | 3256 CFX_WideTextBuf wsJavaScriptBuf; |
3257 CFX_WideString javaScript; | 3257 CFX_WideString javaScript; |
3258 CFX_WideString wsError; | 3258 CFX_WideString wsError; |
3259 CXFA_FM2JSContext::Translate( | 3259 CXFA_FM2JSContext::Translate( |
3260 CFX_WideString::FromUTF8(utf8ScriptString.AsStringC()).AsStringC(), | 3260 CFX_WideString::FromUTF8(utf8ScriptString.AsStringC()).AsStringC(), |
3261 wsJavaScriptBuf, wsError); | 3261 wsJavaScriptBuf, wsError); |
3262 CFXJSE_Context* pContext = | 3262 CFXJSE_Context* pNewContext = |
3263 FXJSE_Context_Create(pIsolate, nullptr, nullptr); | 3263 FXJSE_Context_Create(pIsolate, nullptr, nullptr); |
3264 std::unique_ptr<CFXJSE_Value> returnValue(new CFXJSE_Value(pIsolate)); | 3264 std::unique_ptr<CFXJSE_Value> returnValue(new CFXJSE_Value(pIsolate)); |
3265 javaScript = wsJavaScriptBuf.AsStringC(); | 3265 javaScript = wsJavaScriptBuf.AsStringC(); |
3266 FXJSE_ExecuteScript( | 3266 FXJSE_ExecuteScript( |
3267 pContext, | 3267 pNewContext, |
3268 FX_UTF8Encode(javaScript.c_str(), javaScript.GetLength()).c_str(), | 3268 FX_UTF8Encode(javaScript.c_str(), javaScript.GetLength()).c_str(), |
3269 returnValue.get()); | 3269 returnValue.get()); |
3270 FXJSE_Value_Set(args.GetReturnValue(), returnValue.get()); | 3270 FXJSE_Value_Set(args.GetReturnValue(), returnValue.get()); |
3271 FXJSE_Context_Release(pContext); | 3271 FXJSE_Context_Release(pNewContext); |
3272 } | 3272 } |
3273 } else { | 3273 } else { |
3274 pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Eval"); | 3274 pContext->ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"Eval"); |
3275 } | 3275 } |
3276 } | 3276 } |
3277 | 3277 |
3278 // static | 3278 // static |
3279 void CXFA_FM2JSContext::Ref(CFXJSE_Value* pThis, | 3279 void CXFA_FM2JSContext::Ref(CFXJSE_Value* pThis, |
3280 const CFX_ByteStringC& szFuncName, | 3280 const CFX_ByteStringC& szFuncName, |
3281 CFXJSE_Arguments& args) { | 3281 CFXJSE_Arguments& args) { |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3510 } | 3510 } |
3511 strFirstUnit += (*(pData + u)); | 3511 strFirstUnit += (*(pData + u)); |
3512 ++u; | 3512 ++u; |
3513 } | 3513 } |
3514 strFirstUnit.MakeLower(); | 3514 strFirstUnit.MakeLower(); |
3515 if (argc == 2) { | 3515 if (argc == 2) { |
3516 std::unique_ptr<CFXJSE_Value> unitValue = | 3516 std::unique_ptr<CFXJSE_Value> unitValue = |
3517 GetSimpleValue(pThis, args, 1); | 3517 GetSimpleValue(pThis, args, 1); |
3518 CFX_ByteString unitTempString; | 3518 CFX_ByteString unitTempString; |
3519 ValueToUTF8String(unitValue.get(), unitTempString); | 3519 ValueToUTF8String(unitValue.get(), unitTempString); |
3520 const FX_CHAR* pData = unitTempString.c_str(); | 3520 const FX_CHAR* pChar = unitTempString.c_str(); |
3521 int32_t u = 0; | 3521 int32_t uVal = 0; |
3522 while (*(pData + u) == ' ' || *(pData + u) == 0x09 || | 3522 while (*(pChar + uVal) == ' ' || *(pChar + uVal) == 0x09 || |
3523 *(pData + u) == 0x0B || *(pData + u) == 0x0C || | 3523 *(pChar + uVal) == 0x0B || *(pChar + uVal) == 0x0C || |
3524 *(pData + u) == 0x0A || *(pData + u) == 0x0D) { | 3524 *(pChar + uVal) == 0x0A || *(pChar + uVal) == 0x0D) { |
3525 ++u; | 3525 ++uVal; |
3526 } | 3526 } |
3527 while (u < unitTempString.GetLength()) { | 3527 while (uVal < unitTempString.GetLength()) { |
3528 if ((*(pData + u) > '9' || *(pData + u) < '0') && | 3528 if ((*(pChar + uVal) > '9' || *(pChar + uVal) < '0') && |
3529 *(pData + u) != '.') { | 3529 *(pChar + uVal) != '.') { |
3530 break; | 3530 break; |
3531 } | 3531 } |
3532 ++u; | 3532 ++uVal; |
3533 } | 3533 } |
3534 while (*(pData + u) == ' ' || *(pData + u) == 0x09 || | 3534 while (*(pChar + uVal) == ' ' || *(pChar + uVal) == 0x09 || |
3535 *(pData + u) == 0x0B || *(pData + u) == 0x0C || | 3535 *(pChar + uVal) == 0x0B || *(pChar + uVal) == 0x0C || |
3536 *(pData + u) == 0x0A || *(pData + u) == 0x0D) { | 3536 *(pChar + uVal) == 0x0A || *(pChar + uVal) == 0x0D) { |
3537 ++u; | 3537 ++uVal; |
3538 } | 3538 } |
3539 int32_t uLen = unitTempString.GetLength(); | 3539 int32_t uValLen = unitTempString.GetLength(); |
3540 while (u < uLen) { | 3540 while (uVal < uValLen) { |
3541 if (*(pData + u) == ' ') { | 3541 if (*(pChar + uVal) == ' ') { |
3542 break; | 3542 break; |
3543 } | 3543 } |
3544 strUnit += (*(pData + u)); | 3544 strUnit += (*(pChar + uVal)); |
3545 ++u; | 3545 ++uVal; |
3546 } | 3546 } |
3547 strUnit.MakeLower(); | 3547 strUnit.MakeLower(); |
3548 } else { | 3548 } else { |
3549 strUnit = strFirstUnit; | 3549 strUnit = strFirstUnit; |
3550 } | 3550 } |
3551 FX_DOUBLE dResult = 0; | 3551 FX_DOUBLE dResult = 0; |
3552 if (strFirstUnit == "in" || strFirstUnit == "inches") { | 3552 if (strFirstUnit == "in" || strFirstUnit == "inches") { |
3553 if (strUnit == "mm" || strUnit == "millimeters") { | 3553 if (strUnit == "mm" || strUnit == "millimeters") { |
3554 dResult = dFirstNumber * 25.4; | 3554 dResult = dFirstNumber * 25.4; |
3555 } else if (strUnit == "cm" || strUnit == "centimeters") { | 3555 } else if (strUnit == "cm" || strUnit == "centimeters") { |
(...skipping 1051 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4607 wsTestPattern = FX_WSTRC(L"num{") + wsPattern; | 4607 wsTestPattern = FX_WSTRC(L"num{") + wsPattern; |
4608 wsTestPattern += FX_WSTRC(L"}"); | 4608 wsTestPattern += FX_WSTRC(L"}"); |
4609 CXFA_LocaleValue localeValue(XFA_VT_FLOAT, wsValue, wsTestPattern, | 4609 CXFA_LocaleValue localeValue(XFA_VT_FLOAT, wsValue, wsTestPattern, |
4610 pLocale, (CXFA_LocaleMgr*)pMgr); | 4610 pLocale, (CXFA_LocaleMgr*)pMgr); |
4611 if (localeValue.IsValid()) { | 4611 if (localeValue.IsValid()) { |
4612 FXJSE_Value_SetDouble(args.GetReturnValue(), | 4612 FXJSE_Value_SetDouble(args.GetReturnValue(), |
4613 localeValue.GetDoubleNum()); | 4613 localeValue.GetDoubleNum()); |
4614 } else { | 4614 } else { |
4615 wsTestPattern = FX_WSTRC(L"text{") + wsPattern; | 4615 wsTestPattern = FX_WSTRC(L"text{") + wsPattern; |
4616 wsTestPattern += FX_WSTRC(L"}"); | 4616 wsTestPattern += FX_WSTRC(L"}"); |
4617 CXFA_LocaleValue localeValue(XFA_VT_TEXT, wsValue, wsTestPattern, | 4617 CXFA_LocaleValue localeValue2(XFA_VT_TEXT, wsValue, wsTestPattern, |
4618 pLocale, (CXFA_LocaleMgr*)pMgr); | 4618 pLocale, (CXFA_LocaleMgr*)pMgr); |
4619 if (localeValue.IsValid()) { | 4619 if (localeValue2.IsValid()) { |
4620 szParsedValue = FX_UTF8Encode(localeValue.GetValue()); | 4620 szParsedValue = FX_UTF8Encode(localeValue2.GetValue()); |
4621 FXJSE_Value_SetUTF8String(args.GetReturnValue(), | 4621 FXJSE_Value_SetUTF8String(args.GetReturnValue(), |
4622 szParsedValue.AsStringC()); | 4622 szParsedValue.AsStringC()); |
4623 } else { | 4623 } else { |
4624 FXJSE_Value_SetUTF8String(args.GetReturnValue(), ""); | 4624 FXJSE_Value_SetUTF8String(args.GetReturnValue(), ""); |
4625 } | 4625 } |
4626 } | 4626 } |
4627 } break; | 4627 } break; |
4628 } | 4628 } |
4629 } | 4629 } |
4630 } | 4630 } |
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5289 TrillionUS(CFX_ByteStringC(pData + iIndex, iCount), strBuf); | 5289 TrillionUS(CFX_ByteStringC(pData + iIndex, iCount), strBuf); |
5290 iIndex += iCount; | 5290 iIndex += iCount; |
5291 if (iIndex < iInteger) { | 5291 if (iIndex < iInteger) { |
5292 strBuf << " Trillion "; | 5292 strBuf << " Trillion "; |
5293 } | 5293 } |
5294 } | 5294 } |
5295 strBuf << " Dollars"; | 5295 strBuf << " Dollars"; |
5296 if (iInteger < iLength) { | 5296 if (iInteger < iLength) { |
5297 strBuf << " And "; | 5297 strBuf << " And "; |
5298 iIndex = iInteger + 1; | 5298 iIndex = iInteger + 1; |
5299 int32_t iCount = 0; | |
5300 while (iIndex < iLength) { | 5299 while (iIndex < iLength) { |
5301 iCount = (iLength - iIndex) % 12; | 5300 int32_t iSize = (iLength - iIndex) % 12; |
5302 if (!iCount && iLength - iIndex > 0) { | 5301 if (!iSize && iLength - iIndex > 0) |
5303 iCount = 12; | 5302 iSize = 12; |
5304 } | 5303 TrillionUS(CFX_ByteStringC(pData + iIndex, iSize), strBuf); |
5305 TrillionUS(CFX_ByteStringC(pData + iIndex, iCount), strBuf); | 5304 iIndex += iSize; |
5306 iIndex += iCount; | |
5307 if (iIndex < iLength) { | 5305 if (iIndex < iLength) { |
5308 strBuf << " Trillion "; | 5306 strBuf << " Trillion "; |
5309 } | 5307 } |
5310 } | 5308 } |
5311 strBuf << " Cents"; | 5309 strBuf << " Cents"; |
5312 } | 5310 } |
5313 } break; | 5311 } break; |
5314 default: | 5312 default: |
5315 break; | 5313 break; |
5316 } | 5314 } |
(...skipping 1716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7033 CFX_WideString wsFormat; | 7031 CFX_WideString wsFormat; |
7034 pAppProvider->LoadString(iStringID, wsFormat); | 7032 pAppProvider->LoadString(iStringID, wsFormat); |
7035 CFX_WideString wsMessage; | 7033 CFX_WideString wsMessage; |
7036 va_list arg_ptr; | 7034 va_list arg_ptr; |
7037 va_start(arg_ptr, iStringID); | 7035 va_start(arg_ptr, iStringID); |
7038 wsMessage.FormatV(wsFormat.c_str(), arg_ptr); | 7036 wsMessage.FormatV(wsFormat.c_str(), arg_ptr); |
7039 va_end(arg_ptr); | 7037 va_end(arg_ptr); |
7040 FXJSE_ThrowMessage( | 7038 FXJSE_ThrowMessage( |
7041 "", FX_UTF8Encode(wsMessage.c_str(), wsMessage.GetLength()).AsStringC()); | 7039 "", FX_UTF8Encode(wsMessage.c_str(), wsMessage.GetLength()).AsStringC()); |
7042 } | 7040 } |
OLD | NEW |