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 "fpdfsdk/javascript/Field.h" | 7 #include "fpdfsdk/javascript/Field.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <memory> | 10 #include <memory> |
(...skipping 942 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
953 if (vp.IsSetting()) { | 953 if (vp.IsSetting()) { |
954 if (!m_bCanSet) | 954 if (!m_bCanSet) |
955 return FALSE; | 955 return FALSE; |
956 | 956 |
957 std::vector<uint32_t> array; | 957 std::vector<uint32_t> array; |
958 if (vp.GetType() == CJS_Value::VT_number) { | 958 if (vp.GetType() == CJS_Value::VT_number) { |
959 int iSelecting = 0; | 959 int iSelecting = 0; |
960 vp >> iSelecting; | 960 vp >> iSelecting; |
961 array.push_back(iSelecting); | 961 array.push_back(iSelecting); |
962 } else if (vp.IsArrayObject()) { | 962 } else if (vp.IsArrayObject()) { |
963 CJS_Array SelArray(pRuntime); | 963 CJS_Array SelArray; |
964 CJS_Value SelValue(pRuntime); | 964 CJS_Value SelValue(pRuntime); |
965 int iSelecting; | 965 int iSelecting; |
966 vp >> SelArray; | 966 vp >> SelArray; |
967 for (int i = 0, sz = SelArray.GetLength(); i < sz; i++) { | 967 for (int i = 0, sz = SelArray.GetLength(); i < sz; i++) { |
968 SelArray.GetElement(i, SelValue); | 968 SelArray.GetElement(pRuntime->GetIsolate(), i, SelValue); |
969 iSelecting = SelValue.ToInt(); | 969 iSelecting = SelValue.ToInt(); |
970 array.push_back(iSelecting); | 970 array.push_back(iSelecting); |
971 } | 971 } |
972 } | 972 } |
973 | 973 |
974 if (m_bDelay) { | 974 if (m_bDelay) { |
975 AddDelay_WordArray(FP_CURRENTVALUEINDICES, array); | 975 AddDelay_WordArray(FP_CURRENTVALUEINDICES, array); |
976 } else { | 976 } else { |
977 Field::SetCurrentValueIndices(m_pDocument, m_FieldName, | 977 Field::SetCurrentValueIndices(m_pDocument, m_FieldName, |
978 m_nFormControlIndex, array); | 978 m_nFormControlIndex, array); |
979 } | 979 } |
980 } else { | 980 } else { |
981 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 981 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
982 if (FieldArray.empty()) | 982 if (FieldArray.empty()) |
983 return FALSE; | 983 return FALSE; |
984 | 984 |
985 CPDF_FormField* pFormField = FieldArray[0]; | 985 CPDF_FormField* pFormField = FieldArray[0]; |
986 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && | 986 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && |
987 pFormField->GetFieldType() != FIELDTYPE_LISTBOX) { | 987 pFormField->GetFieldType() != FIELDTYPE_LISTBOX) { |
988 return FALSE; | 988 return FALSE; |
989 } | 989 } |
990 | 990 |
991 if (pFormField->CountSelectedItems() == 1) { | 991 if (pFormField->CountSelectedItems() == 1) { |
992 vp << pFormField->GetSelectedIndex(0); | 992 vp << pFormField->GetSelectedIndex(0); |
993 } else if (pFormField->CountSelectedItems() > 1) { | 993 } else if (pFormField->CountSelectedItems() > 1) { |
994 CJS_Array SelArray(pRuntime); | 994 CJS_Array SelArray; |
995 for (int i = 0, sz = pFormField->CountSelectedItems(); i < sz; i++) { | 995 for (int i = 0, sz = pFormField->CountSelectedItems(); i < sz; i++) { |
996 SelArray.SetElement( | 996 SelArray.SetElement( |
997 i, CJS_Value(pRuntime, pFormField->GetSelectedIndex(i))); | 997 pRuntime->GetIsolate(), i, |
| 998 CJS_Value(pRuntime, pFormField->GetSelectedIndex(i))); |
998 } | 999 } |
999 vp << SelArray; | 1000 vp << SelArray; |
1000 } else { | 1001 } else { |
1001 vp << -1; | 1002 vp << -1; |
1002 } | 1003 } |
1003 } | 1004 } |
1004 | 1005 |
1005 return TRUE; | 1006 return TRUE; |
1006 } | 1007 } |
1007 | 1008 |
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1371 } | 1372 } |
1372 | 1373 |
1373 if (vp.IsSetting()) { | 1374 if (vp.IsSetting()) { |
1374 if (!m_bCanSet) | 1375 if (!m_bCanSet) |
1375 return FALSE; | 1376 return FALSE; |
1376 | 1377 |
1377 if (!vp.IsArrayObject()) | 1378 if (!vp.IsArrayObject()) |
1378 return FALSE; | 1379 return FALSE; |
1379 } else { | 1380 } else { |
1380 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); | 1381 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
1381 CJS_Array ExportValusArray(pRuntime); | 1382 CJS_Array ExportValusArray; |
1382 if (m_nFormControlIndex < 0) { | 1383 if (m_nFormControlIndex < 0) { |
1383 for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) { | 1384 for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) { |
1384 CPDF_FormControl* pFormControl = pFormField->GetControl(i); | 1385 CPDF_FormControl* pFormControl = pFormField->GetControl(i); |
1385 ExportValusArray.SetElement( | 1386 ExportValusArray.SetElement( |
1386 i, CJS_Value(pRuntime, pFormControl->GetExportValue().c_str())); | 1387 pRuntime->GetIsolate(), i, |
| 1388 CJS_Value(pRuntime, pFormControl->GetExportValue().c_str())); |
1387 } | 1389 } |
1388 } else { | 1390 } else { |
1389 if (m_nFormControlIndex >= pFormField->CountControls()) | 1391 if (m_nFormControlIndex >= pFormField->CountControls()) |
1390 return FALSE; | 1392 return FALSE; |
1391 | 1393 |
1392 CPDF_FormControl* pFormControl = | 1394 CPDF_FormControl* pFormControl = |
1393 pFormField->GetControl(m_nFormControlIndex); | 1395 pFormField->GetControl(m_nFormControlIndex); |
1394 if (!pFormControl) | 1396 if (!pFormControl) |
1395 return FALSE; | 1397 return FALSE; |
1396 | 1398 |
1397 ExportValusArray.SetElement( | 1399 ExportValusArray.SetElement( |
1398 0, CJS_Value(pRuntime, pFormControl->GetExportValue().c_str())); | 1400 pRuntime->GetIsolate(), 0, |
| 1401 CJS_Value(pRuntime, pFormControl->GetExportValue().c_str())); |
1399 } | 1402 } |
1400 vp << ExportValusArray; | 1403 vp << ExportValusArray; |
1401 } | 1404 } |
1402 return TRUE; | 1405 return TRUE; |
1403 } | 1406 } |
1404 | 1407 |
1405 FX_BOOL Field::fileSelect(IJS_Context* cc, | 1408 FX_BOOL Field::fileSelect(IJS_Context* cc, |
1406 CJS_PropValue& vp, | 1409 CJS_PropValue& vp, |
1407 CFX_WideString& sError) { | 1410 CFX_WideString& sError) { |
1408 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 1411 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
(...skipping 16 matching lines...) Expand all Loading... |
1425 else | 1428 else |
1426 vp << false; | 1429 vp << false; |
1427 } | 1430 } |
1428 return TRUE; | 1431 return TRUE; |
1429 } | 1432 } |
1430 | 1433 |
1431 FX_BOOL Field::fillColor(IJS_Context* cc, | 1434 FX_BOOL Field::fillColor(IJS_Context* cc, |
1432 CJS_PropValue& vp, | 1435 CJS_PropValue& vp, |
1433 CFX_WideString& sError) { | 1436 CFX_WideString& sError) { |
1434 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); | 1437 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
1435 CJS_Array crArray(pRuntime); | 1438 CJS_Array crArray; |
1436 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 1439 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
1437 if (FieldArray.empty()) | 1440 if (FieldArray.empty()) |
1438 return FALSE; | 1441 return FALSE; |
1439 | 1442 |
1440 if (vp.IsSetting()) { | 1443 if (vp.IsSetting()) { |
1441 if (!m_bCanSet) | 1444 if (!m_bCanSet) |
1442 return FALSE; | 1445 return FALSE; |
1443 | 1446 |
1444 if (!vp.IsArrayObject()) | 1447 if (!vp.IsArrayObject()) |
1445 return FALSE; | 1448 return FALSE; |
1446 | 1449 |
1447 vp >> crArray; | 1450 vp >> crArray; |
1448 | 1451 |
1449 CPWL_Color color; | 1452 CPWL_Color color; |
1450 color::ConvertArrayToPWLColor(crArray, color); | 1453 color::ConvertArrayToPWLColor(pRuntime, crArray, &color); |
1451 if (m_bDelay) { | 1454 if (m_bDelay) { |
1452 AddDelay_Color(FP_FILLCOLOR, color); | 1455 AddDelay_Color(FP_FILLCOLOR, color); |
1453 } else { | 1456 } else { |
1454 Field::SetFillColor(m_pDocument, m_FieldName, m_nFormControlIndex, color); | 1457 Field::SetFillColor(m_pDocument, m_FieldName, m_nFormControlIndex, color); |
1455 } | 1458 } |
1456 } else { | 1459 } else { |
1457 CPDF_FormField* pFormField = FieldArray[0]; | 1460 CPDF_FormField* pFormField = FieldArray[0]; |
1458 ASSERT(pFormField); | 1461 ASSERT(pFormField); |
1459 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); | 1462 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField); |
1460 if (!pFormControl) | 1463 if (!pFormControl) |
(...skipping 16 matching lines...) Expand all Loading... |
1477 } else if (iColorType == COLORTYPE_CMYK) { | 1480 } else if (iColorType == COLORTYPE_CMYK) { |
1478 color = CPWL_Color(COLORTYPE_CMYK, | 1481 color = CPWL_Color(COLORTYPE_CMYK, |
1479 pFormControl->GetOriginalBackgroundColor(0), | 1482 pFormControl->GetOriginalBackgroundColor(0), |
1480 pFormControl->GetOriginalBackgroundColor(1), | 1483 pFormControl->GetOriginalBackgroundColor(1), |
1481 pFormControl->GetOriginalBackgroundColor(2), | 1484 pFormControl->GetOriginalBackgroundColor(2), |
1482 pFormControl->GetOriginalBackgroundColor(3)); | 1485 pFormControl->GetOriginalBackgroundColor(3)); |
1483 } else { | 1486 } else { |
1484 return FALSE; | 1487 return FALSE; |
1485 } | 1488 } |
1486 | 1489 |
1487 color::ConvertPWLColorToArray(color, crArray); | 1490 color::ConvertPWLColorToArray(pRuntime, color, &crArray); |
1488 vp << crArray; | 1491 vp << crArray; |
1489 } | 1492 } |
1490 | 1493 |
1491 return TRUE; | 1494 return TRUE; |
1492 } | 1495 } |
1493 | 1496 |
1494 void Field::SetFillColor(CPDFSDK_Document* pDocument, | 1497 void Field::SetFillColor(CPDFSDK_Document* pDocument, |
1495 const CFX_WideString& swFieldName, | 1498 const CFX_WideString& swFieldName, |
1496 int nControlIndex, | 1499 int nControlIndex, |
1497 const CPWL_Color& color) { | 1500 const CPWL_Color& color) { |
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1878 | 1881 |
1879 std::vector<CPDFSDK_Widget*> widgets; | 1882 std::vector<CPDFSDK_Widget*> widgets; |
1880 m_pDocument->GetInterForm()->GetWidgets(pFormField, &widgets); | 1883 m_pDocument->GetInterForm()->GetWidgets(pFormField, &widgets); |
1881 | 1884 |
1882 if (widgets.empty()) { | 1885 if (widgets.empty()) { |
1883 vp << (int32_t)-1; | 1886 vp << (int32_t)-1; |
1884 return TRUE; | 1887 return TRUE; |
1885 } | 1888 } |
1886 | 1889 |
1887 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); | 1890 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
1888 CJS_Array PageArray(pRuntime); | 1891 CJS_Array PageArray; |
1889 for (size_t i = 0; i < widgets.size(); ++i) { | 1892 for (size_t i = 0; i < widgets.size(); ++i) { |
1890 CPDFSDK_PageView* pPageView = widgets[i]->GetPageView(); | 1893 CPDFSDK_PageView* pPageView = widgets[i]->GetPageView(); |
1891 if (!pPageView) | 1894 if (!pPageView) |
1892 return FALSE; | 1895 return FALSE; |
1893 | 1896 |
1894 PageArray.SetElement( | 1897 PageArray.SetElement( |
1895 i, CJS_Value(pRuntime, (int32_t)pPageView->GetPageIndex())); | 1898 pRuntime->GetIsolate(), i, |
| 1899 CJS_Value(pRuntime, (int32_t)pPageView->GetPageIndex())); |
1896 } | 1900 } |
1897 | 1901 |
1898 vp << PageArray; | 1902 vp << PageArray; |
1899 return TRUE; | 1903 return TRUE; |
1900 } | 1904 } |
1901 | 1905 |
1902 FX_BOOL Field::password(IJS_Context* cc, | 1906 FX_BOOL Field::password(IJS_Context* cc, |
1903 CJS_PropValue& vp, | 1907 CJS_PropValue& vp, |
1904 CFX_WideString& sError) { | 1908 CFX_WideString& sError) { |
1905 ASSERT(m_pDocument); | 1909 ASSERT(m_pDocument); |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2076 CJS_Value Upper_Lefty(pRuntime); | 2080 CJS_Value Upper_Lefty(pRuntime); |
2077 CJS_Value Lower_Rightx(pRuntime); | 2081 CJS_Value Lower_Rightx(pRuntime); |
2078 CJS_Value Lower_Righty(pRuntime); | 2082 CJS_Value Lower_Righty(pRuntime); |
2079 | 2083 |
2080 if (vp.IsSetting()) { | 2084 if (vp.IsSetting()) { |
2081 if (!m_bCanSet) | 2085 if (!m_bCanSet) |
2082 return FALSE; | 2086 return FALSE; |
2083 if (!vp.IsArrayObject()) | 2087 if (!vp.IsArrayObject()) |
2084 return FALSE; | 2088 return FALSE; |
2085 | 2089 |
2086 CJS_Array rcArray(pRuntime); | 2090 CJS_Array rcArray; |
2087 vp >> rcArray; | 2091 vp >> rcArray; |
2088 rcArray.GetElement(0, Upper_Leftx); | 2092 rcArray.GetElement(pRuntime->GetIsolate(), 0, Upper_Leftx); |
2089 rcArray.GetElement(1, Upper_Lefty); | 2093 rcArray.GetElement(pRuntime->GetIsolate(), 1, Upper_Lefty); |
2090 rcArray.GetElement(2, Lower_Rightx); | 2094 rcArray.GetElement(pRuntime->GetIsolate(), 2, Lower_Rightx); |
2091 rcArray.GetElement(3, Lower_Righty); | 2095 rcArray.GetElement(pRuntime->GetIsolate(), 3, Lower_Righty); |
2092 | 2096 |
2093 FX_FLOAT pArray[4] = {0.0f, 0.0f, 0.0f, 0.0f}; | 2097 FX_FLOAT pArray[4] = {0.0f, 0.0f, 0.0f, 0.0f}; |
2094 pArray[0] = (FX_FLOAT)Upper_Leftx.ToInt(); | 2098 pArray[0] = (FX_FLOAT)Upper_Leftx.ToInt(); |
2095 pArray[1] = (FX_FLOAT)Lower_Righty.ToInt(); | 2099 pArray[1] = (FX_FLOAT)Lower_Righty.ToInt(); |
2096 pArray[2] = (FX_FLOAT)Lower_Rightx.ToInt(); | 2100 pArray[2] = (FX_FLOAT)Lower_Rightx.ToInt(); |
2097 pArray[3] = (FX_FLOAT)Upper_Lefty.ToInt(); | 2101 pArray[3] = (FX_FLOAT)Upper_Lefty.ToInt(); |
2098 | 2102 |
2099 CFX_FloatRect crRect(pArray); | 2103 CFX_FloatRect crRect(pArray); |
2100 if (m_bDelay) { | 2104 if (m_bDelay) { |
2101 AddDelay_Rect(FP_RECT, crRect); | 2105 AddDelay_Rect(FP_RECT, crRect); |
(...skipping 11 matching lines...) Expand all Loading... |
2113 pInterForm->GetWidget(GetSmartFieldControl(pFormField)); | 2117 pInterForm->GetWidget(GetSmartFieldControl(pFormField)); |
2114 if (!pWidget) | 2118 if (!pWidget) |
2115 return FALSE; | 2119 return FALSE; |
2116 | 2120 |
2117 CFX_FloatRect crRect = pWidget->GetRect(); | 2121 CFX_FloatRect crRect = pWidget->GetRect(); |
2118 Upper_Leftx = (int32_t)crRect.left; | 2122 Upper_Leftx = (int32_t)crRect.left; |
2119 Upper_Lefty = (int32_t)crRect.top; | 2123 Upper_Lefty = (int32_t)crRect.top; |
2120 Lower_Rightx = (int32_t)crRect.right; | 2124 Lower_Rightx = (int32_t)crRect.right; |
2121 Lower_Righty = (int32_t)crRect.bottom; | 2125 Lower_Righty = (int32_t)crRect.bottom; |
2122 | 2126 |
2123 CJS_Array rcArray(pRuntime); | 2127 CJS_Array rcArray; |
2124 rcArray.SetElement(0, Upper_Leftx); | 2128 rcArray.SetElement(pRuntime->GetIsolate(), 0, Upper_Leftx); |
2125 rcArray.SetElement(1, Upper_Lefty); | 2129 rcArray.SetElement(pRuntime->GetIsolate(), 1, Upper_Lefty); |
2126 rcArray.SetElement(2, Lower_Rightx); | 2130 rcArray.SetElement(pRuntime->GetIsolate(), 2, Lower_Rightx); |
2127 rcArray.SetElement(3, Lower_Righty); | 2131 rcArray.SetElement(pRuntime->GetIsolate(), 3, Lower_Righty); |
2128 vp << rcArray; | 2132 vp << rcArray; |
2129 } | 2133 } |
2130 return TRUE; | 2134 return TRUE; |
2131 } | 2135 } |
2132 | 2136 |
2133 void Field::SetRect(CPDFSDK_Document* pDocument, | 2137 void Field::SetRect(CPDFSDK_Document* pDocument, |
2134 const CFX_WideString& swFieldName, | 2138 const CFX_WideString& swFieldName, |
2135 int nControlIndex, | 2139 int nControlIndex, |
2136 const CFX_FloatRect& rect) { | 2140 const CFX_FloatRect& rect) { |
2137 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); | 2141 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2292 const CFX_WideString& swFieldName, | 2296 const CFX_WideString& swFieldName, |
2293 int nControlIndex, | 2297 int nControlIndex, |
2294 int number) { | 2298 int number) { |
2295 // Not supported. | 2299 // Not supported. |
2296 } | 2300 } |
2297 | 2301 |
2298 FX_BOOL Field::strokeColor(IJS_Context* cc, | 2302 FX_BOOL Field::strokeColor(IJS_Context* cc, |
2299 CJS_PropValue& vp, | 2303 CJS_PropValue& vp, |
2300 CFX_WideString& sError) { | 2304 CFX_WideString& sError) { |
2301 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); | 2305 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
2302 CJS_Array crArray(pRuntime); | 2306 CJS_Array crArray; |
2303 | 2307 |
2304 if (vp.IsSetting()) { | 2308 if (vp.IsSetting()) { |
2305 if (!m_bCanSet) | 2309 if (!m_bCanSet) |
2306 return FALSE; | 2310 return FALSE; |
2307 | 2311 |
2308 if (!vp.IsArrayObject()) | 2312 if (!vp.IsArrayObject()) |
2309 return FALSE; | 2313 return FALSE; |
2310 | 2314 |
2311 vp >> crArray; | 2315 vp >> crArray; |
2312 | 2316 |
2313 CPWL_Color color; | 2317 CPWL_Color color; |
2314 color::ConvertArrayToPWLColor(crArray, color); | 2318 color::ConvertArrayToPWLColor(pRuntime, crArray, &color); |
2315 | 2319 |
2316 if (m_bDelay) { | 2320 if (m_bDelay) { |
2317 AddDelay_Color(FP_STROKECOLOR, color); | 2321 AddDelay_Color(FP_STROKECOLOR, color); |
2318 } else { | 2322 } else { |
2319 Field::SetStrokeColor(m_pDocument, m_FieldName, m_nFormControlIndex, | 2323 Field::SetStrokeColor(m_pDocument, m_FieldName, m_nFormControlIndex, |
2320 color); | 2324 color); |
2321 } | 2325 } |
2322 } else { | 2326 } else { |
2323 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 2327 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
2324 if (FieldArray.empty()) | 2328 if (FieldArray.empty()) |
(...skipping 20 matching lines...) Expand all Loading... |
2345 } else if (iColorType == COLORTYPE_CMYK) { | 2349 } else if (iColorType == COLORTYPE_CMYK) { |
2346 color = | 2350 color = |
2347 CPWL_Color(COLORTYPE_CMYK, pFormControl->GetOriginalBorderColor(0), | 2351 CPWL_Color(COLORTYPE_CMYK, pFormControl->GetOriginalBorderColor(0), |
2348 pFormControl->GetOriginalBorderColor(1), | 2352 pFormControl->GetOriginalBorderColor(1), |
2349 pFormControl->GetOriginalBorderColor(2), | 2353 pFormControl->GetOriginalBorderColor(2), |
2350 pFormControl->GetOriginalBorderColor(3)); | 2354 pFormControl->GetOriginalBorderColor(3)); |
2351 } else { | 2355 } else { |
2352 return FALSE; | 2356 return FALSE; |
2353 } | 2357 } |
2354 | 2358 |
2355 color::ConvertPWLColorToArray(color, crArray); | 2359 color::ConvertPWLColorToArray(pRuntime, color, &crArray); |
2356 vp << crArray; | 2360 vp << crArray; |
2357 } | 2361 } |
2358 return TRUE; | 2362 return TRUE; |
2359 } | 2363 } |
2360 | 2364 |
2361 void Field::SetStrokeColor(CPDFSDK_Document* pDocument, | 2365 void Field::SetStrokeColor(CPDFSDK_Document* pDocument, |
2362 const CFX_WideString& swFieldName, | 2366 const CFX_WideString& swFieldName, |
2363 int nControlIndex, | 2367 int nControlIndex, |
2364 const CPWL_Color& color) { | 2368 const CPWL_Color& color) { |
2365 // Not supported. | 2369 // Not supported. |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2437 FX_BOOL Field::submitName(IJS_Context* cc, | 2441 FX_BOOL Field::submitName(IJS_Context* cc, |
2438 CJS_PropValue& vp, | 2442 CJS_PropValue& vp, |
2439 CFX_WideString& sError) { | 2443 CFX_WideString& sError) { |
2440 return TRUE; | 2444 return TRUE; |
2441 } | 2445 } |
2442 | 2446 |
2443 FX_BOOL Field::textColor(IJS_Context* cc, | 2447 FX_BOOL Field::textColor(IJS_Context* cc, |
2444 CJS_PropValue& vp, | 2448 CJS_PropValue& vp, |
2445 CFX_WideString& sError) { | 2449 CFX_WideString& sError) { |
2446 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); | 2450 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
2447 CJS_Array crArray(pRuntime); | 2451 CJS_Array crArray; |
2448 | 2452 |
2449 if (vp.IsSetting()) { | 2453 if (vp.IsSetting()) { |
2450 if (!m_bCanSet) | 2454 if (!m_bCanSet) |
2451 return FALSE; | 2455 return FALSE; |
2452 | 2456 |
2453 if (!vp.IsArrayObject()) | 2457 if (!vp.IsArrayObject()) |
2454 return FALSE; | 2458 return FALSE; |
2455 | 2459 |
2456 vp >> crArray; | 2460 vp >> crArray; |
2457 | 2461 |
2458 CPWL_Color color; | 2462 CPWL_Color color; |
2459 color::ConvertArrayToPWLColor(crArray, color); | 2463 color::ConvertArrayToPWLColor(pRuntime, crArray, &color); |
2460 | 2464 |
2461 if (m_bDelay) { | 2465 if (m_bDelay) { |
2462 AddDelay_Color(FP_TEXTCOLOR, color); | 2466 AddDelay_Color(FP_TEXTCOLOR, color); |
2463 } else { | 2467 } else { |
2464 Field::SetTextColor(m_pDocument, m_FieldName, m_nFormControlIndex, color); | 2468 Field::SetTextColor(m_pDocument, m_FieldName, m_nFormControlIndex, color); |
2465 } | 2469 } |
2466 } else { | 2470 } else { |
2467 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 2471 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
2468 if (FieldArray.empty()) | 2472 if (FieldArray.empty()) |
2469 return FALSE; | 2473 return FALSE; |
(...skipping 10 matching lines...) Expand all Loading... |
2480 FieldAppearance.GetColor(color, iColorType); | 2484 FieldAppearance.GetColor(color, iColorType); |
2481 int32_t a, r, g, b; | 2485 int32_t a, r, g, b; |
2482 ArgbDecode(color, a, r, g, b); | 2486 ArgbDecode(color, a, r, g, b); |
2483 | 2487 |
2484 CPWL_Color crRet = | 2488 CPWL_Color crRet = |
2485 CPWL_Color(COLORTYPE_RGB, r / 255.0f, g / 255.0f, b / 255.0f); | 2489 CPWL_Color(COLORTYPE_RGB, r / 255.0f, g / 255.0f, b / 255.0f); |
2486 | 2490 |
2487 if (iColorType == COLORTYPE_TRANSPARENT) | 2491 if (iColorType == COLORTYPE_TRANSPARENT) |
2488 crRet = CPWL_Color(COLORTYPE_TRANSPARENT); | 2492 crRet = CPWL_Color(COLORTYPE_TRANSPARENT); |
2489 | 2493 |
2490 color::ConvertPWLColorToArray(crRet, crArray); | 2494 color::ConvertPWLColorToArray(pRuntime, crRet, &crArray); |
2491 vp << crArray; | 2495 vp << crArray; |
2492 } | 2496 } |
2493 return TRUE; | 2497 return TRUE; |
2494 } | 2498 } |
2495 | 2499 |
2496 void Field::SetTextColor(CPDFSDK_Document* pDocument, | 2500 void Field::SetTextColor(CPDFSDK_Document* pDocument, |
2497 const CFX_WideString& swFieldName, | 2501 const CFX_WideString& swFieldName, |
2498 int nControlIndex, | 2502 int nControlIndex, |
2499 const CPWL_Color& color) { | 2503 const CPWL_Color& color) { |
2500 // Not supported. | 2504 // Not supported. |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2688 CJS_PropValue& vp, | 2692 CJS_PropValue& vp, |
2689 CFX_WideString& sError) { | 2693 CFX_WideString& sError) { |
2690 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); | 2694 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
2691 | 2695 |
2692 if (vp.IsSetting()) { | 2696 if (vp.IsSetting()) { |
2693 if (!m_bCanSet) | 2697 if (!m_bCanSet) |
2694 return FALSE; | 2698 return FALSE; |
2695 | 2699 |
2696 std::vector<CFX_WideString> strArray; | 2700 std::vector<CFX_WideString> strArray; |
2697 if (vp.IsArrayObject()) { | 2701 if (vp.IsArrayObject()) { |
2698 CJS_Array ValueArray(pRuntime); | 2702 CJS_Array ValueArray; |
2699 vp.ConvertToArray(ValueArray); | 2703 vp.ConvertToArray(ValueArray); |
2700 for (int i = 0, sz = ValueArray.GetLength(); i < sz; i++) { | 2704 for (int i = 0, sz = ValueArray.GetLength(); i < sz; i++) { |
2701 CJS_Value ElementValue(pRuntime); | 2705 CJS_Value ElementValue(pRuntime); |
2702 ValueArray.GetElement(i, ElementValue); | 2706 ValueArray.GetElement(pRuntime->GetIsolate(), i, ElementValue); |
2703 strArray.push_back(ElementValue.ToCFXWideString()); | 2707 strArray.push_back(ElementValue.ToCFXWideString()); |
2704 } | 2708 } |
2705 } else { | 2709 } else { |
2706 CFX_WideString swValue; | 2710 CFX_WideString swValue; |
2707 vp >> swValue; | 2711 vp >> swValue; |
2708 strArray.push_back(swValue); | 2712 strArray.push_back(swValue); |
2709 } | 2713 } |
2710 | 2714 |
2711 if (m_bDelay) { | 2715 if (m_bDelay) { |
2712 AddDelay_WideStringArray(FP_VALUE, strArray); | 2716 AddDelay_WideStringArray(FP_VALUE, strArray); |
2713 } else { | 2717 } else { |
2714 Field::SetValue(m_pDocument, m_FieldName, m_nFormControlIndex, strArray); | 2718 Field::SetValue(m_pDocument, m_FieldName, m_nFormControlIndex, strArray); |
2715 } | 2719 } |
2716 } else { | 2720 } else { |
2717 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 2721 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
2718 if (FieldArray.empty()) | 2722 if (FieldArray.empty()) |
2719 return FALSE; | 2723 return FALSE; |
2720 | 2724 |
2721 CPDF_FormField* pFormField = FieldArray[0]; | 2725 CPDF_FormField* pFormField = FieldArray[0]; |
2722 switch (pFormField->GetFieldType()) { | 2726 switch (pFormField->GetFieldType()) { |
2723 case FIELDTYPE_PUSHBUTTON: | 2727 case FIELDTYPE_PUSHBUTTON: |
2724 return FALSE; | 2728 return FALSE; |
2725 case FIELDTYPE_COMBOBOX: | 2729 case FIELDTYPE_COMBOBOX: |
2726 case FIELDTYPE_TEXTFIELD: { | 2730 case FIELDTYPE_TEXTFIELD: { |
2727 vp << pFormField->GetValue(); | 2731 vp << pFormField->GetValue(); |
2728 } break; | 2732 } break; |
2729 case FIELDTYPE_LISTBOX: { | 2733 case FIELDTYPE_LISTBOX: { |
2730 if (pFormField->CountSelectedItems() > 1) { | 2734 if (pFormField->CountSelectedItems() > 1) { |
2731 CJS_Array ValueArray(pRuntime); | 2735 CJS_Array ValueArray; |
2732 CJS_Value ElementValue(pRuntime); | 2736 CJS_Value ElementValue(pRuntime); |
2733 int iIndex; | 2737 int iIndex; |
2734 for (int i = 0, sz = pFormField->CountSelectedItems(); i < sz; i++) { | 2738 for (int i = 0, sz = pFormField->CountSelectedItems(); i < sz; i++) { |
2735 iIndex = pFormField->GetSelectedIndex(i); | 2739 iIndex = pFormField->GetSelectedIndex(i); |
2736 ElementValue = pFormField->GetOptionValue(iIndex).c_str(); | 2740 ElementValue = pFormField->GetOptionValue(iIndex).c_str(); |
2737 if (FXSYS_wcslen(ElementValue.ToCFXWideString().c_str()) == 0) | 2741 if (FXSYS_wcslen(ElementValue.ToCFXWideString().c_str()) == 0) |
2738 ElementValue = pFormField->GetOptionLabel(iIndex).c_str(); | 2742 ElementValue = pFormField->GetOptionLabel(iIndex).c_str(); |
2739 ValueArray.SetElement(i, ElementValue); | 2743 ValueArray.SetElement(pRuntime->GetIsolate(), i, ElementValue); |
2740 } | 2744 } |
2741 vp << ValueArray; | 2745 vp << ValueArray; |
2742 } else { | 2746 } else { |
2743 vp << pFormField->GetValue(); | 2747 vp << pFormField->GetValue(); |
2744 } | 2748 } |
2745 } break; | 2749 } break; |
2746 case FIELDTYPE_CHECKBOX: | 2750 case FIELDTYPE_CHECKBOX: |
2747 case FIELDTYPE_RADIOBUTTON: { | 2751 case FIELDTYPE_RADIOBUTTON: { |
2748 bool bFind = false; | 2752 bool bFind = false; |
2749 for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) { | 2753 for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) { |
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3079 new CFX_WideString(pFormField->GetFullName()))); | 3083 new CFX_WideString(pFormField->GetFullName()))); |
3080 } | 3084 } |
3081 | 3085 |
3082 std::sort( | 3086 std::sort( |
3083 swSort.begin(), swSort.end(), | 3087 swSort.begin(), swSort.end(), |
3084 [](const std::unique_ptr<CFX_WideString>& p1, | 3088 [](const std::unique_ptr<CFX_WideString>& p1, |
3085 const std::unique_ptr<CFX_WideString>& p2) { return *p1 < *p2; }); | 3089 const std::unique_ptr<CFX_WideString>& p2) { return *p1 < *p2; }); |
3086 | 3090 |
3087 CJS_Context* pContext = (CJS_Context*)cc; | 3091 CJS_Context* pContext = (CJS_Context*)cc; |
3088 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 3092 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
3089 CJS_Array FormFieldArray(pRuntime); | 3093 CJS_Array FormFieldArray; |
3090 | 3094 |
3091 int j = 0; | 3095 int j = 0; |
3092 for (const auto& pStr : swSort) { | 3096 for (const auto& pStr : swSort) { |
3093 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj( | 3097 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj( |
3094 pRuntime->GetIsolate(), pRuntime, CJS_Field::g_nObjDefnID); | 3098 pRuntime->GetIsolate(), pRuntime, CJS_Field::g_nObjDefnID); |
3095 ASSERT(!pObj.IsEmpty()); | 3099 ASSERT(!pObj.IsEmpty()); |
3096 | 3100 |
3097 CJS_Field* pJSField = | 3101 CJS_Field* pJSField = |
3098 static_cast<CJS_Field*>(FXJS_GetPrivate(pRuntime->GetIsolate(), pObj)); | 3102 static_cast<CJS_Field*>(FXJS_GetPrivate(pRuntime->GetIsolate(), pObj)); |
3099 Field* pField = static_cast<Field*>(pJSField->GetEmbedObject()); | 3103 Field* pField = static_cast<Field*>(pJSField->GetEmbedObject()); |
3100 pField->AttachField(m_pJSDoc, *pStr); | 3104 pField->AttachField(m_pJSDoc, *pStr); |
3101 | 3105 |
3102 CJS_Value FormFieldValue(pRuntime); | 3106 CJS_Value FormFieldValue(pRuntime); |
3103 FormFieldValue = pJSField; | 3107 FormFieldValue = pJSField; |
3104 FormFieldArray.SetElement(j++, FormFieldValue); | 3108 FormFieldArray.SetElement(pRuntime->GetIsolate(), j++, FormFieldValue); |
3105 } | 3109 } |
3106 | 3110 |
3107 vRet = FormFieldArray; | 3111 vRet = CJS_Value(pRuntime, FormFieldArray); |
3108 return TRUE; | 3112 return TRUE; |
3109 } | 3113 } |
3110 | 3114 |
3111 FX_BOOL Field::getItemAt(IJS_Context* cc, | 3115 FX_BOOL Field::getItemAt(IJS_Context* cc, |
3112 const std::vector<CJS_Value>& params, | 3116 const std::vector<CJS_Value>& params, |
3113 CJS_Value& vRet, | 3117 CJS_Value& vRet, |
3114 CFX_WideString& sError) { | 3118 CFX_WideString& sError) { |
3115 int iSize = params.size(); | 3119 int iSize = params.size(); |
3116 | 3120 |
3117 int nIdx = -1; | 3121 int nIdx = -1; |
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3536 } | 3540 } |
3537 } | 3541 } |
3538 | 3542 |
3539 void Field::AddField(CPDFSDK_Document* pDocument, | 3543 void Field::AddField(CPDFSDK_Document* pDocument, |
3540 int nPageIndex, | 3544 int nPageIndex, |
3541 int nFieldType, | 3545 int nFieldType, |
3542 const CFX_WideString& sName, | 3546 const CFX_WideString& sName, |
3543 const CFX_FloatRect& rcCoords) { | 3547 const CFX_FloatRect& rcCoords) { |
3544 // Not supported. | 3548 // Not supported. |
3545 } | 3549 } |
OLD | NEW |