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 929 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
940 | 940 |
941 FX_BOOL Field::currentValueIndices(IJS_Context* cc, | 941 FX_BOOL Field::currentValueIndices(IJS_Context* cc, |
942 CJS_PropValue& vp, | 942 CJS_PropValue& vp, |
943 CFX_WideString& sError) { | 943 CFX_WideString& sError) { |
944 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); | 944 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
945 | 945 |
946 if (vp.IsSetting()) { | 946 if (vp.IsSetting()) { |
947 if (!m_bCanSet) | 947 if (!m_bCanSet) |
948 return FALSE; | 948 return FALSE; |
949 | 949 |
950 CFX_ArrayTemplate<uint32_t> array; | 950 std::vector<uint32_t> array; |
951 | |
952 if (vp.GetType() == CJS_Value::VT_number) { | 951 if (vp.GetType() == CJS_Value::VT_number) { |
953 int iSelecting = 0; | 952 int iSelecting = 0; |
954 vp >> iSelecting; | 953 vp >> iSelecting; |
955 array.Add(iSelecting); | 954 array.push_back(iSelecting); |
956 } else if (vp.IsArrayObject()) { | 955 } else if (vp.IsArrayObject()) { |
957 CJS_Array SelArray(pRuntime); | 956 CJS_Array SelArray(pRuntime); |
958 CJS_Value SelValue(pRuntime); | 957 CJS_Value SelValue(pRuntime); |
959 int iSelecting; | 958 int iSelecting; |
960 vp >> SelArray; | 959 vp >> SelArray; |
961 for (int i = 0, sz = SelArray.GetLength(); i < sz; i++) { | 960 for (int i = 0, sz = SelArray.GetLength(); i < sz; i++) { |
962 SelArray.GetElement(i, SelValue); | 961 SelArray.GetElement(i, SelValue); |
963 iSelecting = SelValue.ToInt(); | 962 iSelecting = SelValue.ToInt(); |
964 array.Add(iSelecting); | 963 array.push_back(iSelecting); |
965 } | 964 } |
966 } | 965 } |
967 | 966 |
968 if (m_bDelay) { | 967 if (m_bDelay) { |
969 AddDelay_WordArray(FP_CURRENTVALUEINDICES, array); | 968 AddDelay_WordArray(FP_CURRENTVALUEINDICES, array); |
970 } else { | 969 } else { |
971 Field::SetCurrentValueIndices(m_pDocument, m_FieldName, | 970 Field::SetCurrentValueIndices(m_pDocument, m_FieldName, |
972 m_nFormControlIndex, array); | 971 m_nFormControlIndex, array); |
973 } | 972 } |
974 } else { | 973 } else { |
(...skipping 20 matching lines...) Expand all Loading... |
995 vp << -1; | 994 vp << -1; |
996 } | 995 } |
997 } | 996 } |
998 | 997 |
999 return TRUE; | 998 return TRUE; |
1000 } | 999 } |
1001 | 1000 |
1002 void Field::SetCurrentValueIndices(CPDFSDK_Document* pDocument, | 1001 void Field::SetCurrentValueIndices(CPDFSDK_Document* pDocument, |
1003 const CFX_WideString& swFieldName, | 1002 const CFX_WideString& swFieldName, |
1004 int nControlIndex, | 1003 int nControlIndex, |
1005 const CFX_ArrayTemplate<uint32_t>& array) { | 1004 const std::vector<uint32_t>& array) { |
1006 ASSERT(pDocument); | 1005 ASSERT(pDocument); |
1007 | |
1008 std::vector<CPDF_FormField*> FieldArray = | 1006 std::vector<CPDF_FormField*> FieldArray = |
1009 GetFormFields(pDocument, swFieldName); | 1007 GetFormFields(pDocument, swFieldName); |
| 1008 |
1010 for (CPDF_FormField* pFormField : FieldArray) { | 1009 for (CPDF_FormField* pFormField : FieldArray) { |
1011 int nFieldType = pFormField->GetFieldType(); | 1010 int nFieldType = pFormField->GetFieldType(); |
1012 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_LISTBOX) { | 1011 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_LISTBOX) { |
1013 uint32_t dwFieldFlags = pFormField->GetFieldFlags(); | 1012 uint32_t dwFieldFlags = pFormField->GetFieldFlags(); |
1014 pFormField->ClearSelection(TRUE); | 1013 pFormField->ClearSelection(TRUE); |
1015 | 1014 for (size_t i = 0; i < array.size(); ++i) { |
1016 for (int i = 0, sz = array.GetSize(); i < sz; i++) { | 1015 if (i != 0 && !(dwFieldFlags & (1 << 21))) |
1017 if (i > 0 && !(dwFieldFlags & (1 << 21))) { | |
1018 break; | 1016 break; |
| 1017 if (array[i] < pFormField->CountOptions() && |
| 1018 !pFormField->IsItemSelected(array[i])) { |
| 1019 pFormField->SetItemSelection(array[i], TRUE); |
1019 } | 1020 } |
1020 | |
1021 int iSelecting = (int32_t)array.GetAt(i); | |
1022 if (iSelecting < pFormField->CountOptions() && | |
1023 !pFormField->IsItemSelected(iSelecting)) | |
1024 pFormField->SetItemSelection(iSelecting, TRUE); | |
1025 } | 1021 } |
1026 UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE); | 1022 UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE); |
1027 } | 1023 } |
1028 } | 1024 } |
1029 } | 1025 } |
1030 | 1026 |
1031 FX_BOOL Field::defaultStyle(IJS_Context* cc, | 1027 FX_BOOL Field::defaultStyle(IJS_Context* cc, |
1032 CJS_PropValue& vp, | 1028 CJS_PropValue& vp, |
1033 CFX_WideString& sError) { | 1029 CFX_WideString& sError) { |
1034 return FALSE; | 1030 return FALSE; |
(...skipping 1670 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2705 | 2701 |
2706 FX_BOOL Field::value(IJS_Context* cc, | 2702 FX_BOOL Field::value(IJS_Context* cc, |
2707 CJS_PropValue& vp, | 2703 CJS_PropValue& vp, |
2708 CFX_WideString& sError) { | 2704 CFX_WideString& sError) { |
2709 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); | 2705 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
2710 | 2706 |
2711 if (vp.IsSetting()) { | 2707 if (vp.IsSetting()) { |
2712 if (!m_bCanSet) | 2708 if (!m_bCanSet) |
2713 return FALSE; | 2709 return FALSE; |
2714 | 2710 |
2715 CJS_WideStringArray strArray; | 2711 std::vector<CFX_WideString> strArray; |
2716 | |
2717 if (vp.IsArrayObject()) { | 2712 if (vp.IsArrayObject()) { |
2718 CJS_Array ValueArray(pRuntime); | 2713 CJS_Array ValueArray(pRuntime); |
2719 vp.ConvertToArray(ValueArray); | 2714 vp.ConvertToArray(ValueArray); |
2720 for (int i = 0, sz = ValueArray.GetLength(); i < sz; i++) { | 2715 for (int i = 0, sz = ValueArray.GetLength(); i < sz; i++) { |
2721 CJS_Value ElementValue(pRuntime); | 2716 CJS_Value ElementValue(pRuntime); |
2722 ValueArray.GetElement(i, ElementValue); | 2717 ValueArray.GetElement(i, ElementValue); |
2723 strArray.Add(ElementValue.ToCFXWideString()); | 2718 strArray.push_back(ElementValue.ToCFXWideString()); |
2724 } | 2719 } |
2725 } else { | 2720 } else { |
2726 CFX_WideString swValue; | 2721 CFX_WideString swValue; |
2727 vp >> swValue; | 2722 vp >> swValue; |
2728 strArray.Add(swValue); | 2723 strArray.push_back(swValue); |
2729 } | 2724 } |
2730 | 2725 |
2731 if (m_bDelay) { | 2726 if (m_bDelay) { |
2732 AddDelay_WideStringArray(FP_VALUE, strArray); | 2727 AddDelay_WideStringArray(FP_VALUE, strArray); |
2733 } else { | 2728 } else { |
2734 Field::SetValue(m_pDocument, m_FieldName, m_nFormControlIndex, strArray); | 2729 Field::SetValue(m_pDocument, m_FieldName, m_nFormControlIndex, strArray); |
2735 } | 2730 } |
2736 } else { | 2731 } else { |
2737 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); | 2732 std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName); |
2738 if (FieldArray.empty()) | 2733 if (FieldArray.empty()) |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2781 break; | 2776 break; |
2782 } | 2777 } |
2783 } | 2778 } |
2784 vp.MaybeCoerceToNumber(); | 2779 vp.MaybeCoerceToNumber(); |
2785 return TRUE; | 2780 return TRUE; |
2786 } | 2781 } |
2787 | 2782 |
2788 void Field::SetValue(CPDFSDK_Document* pDocument, | 2783 void Field::SetValue(CPDFSDK_Document* pDocument, |
2789 const CFX_WideString& swFieldName, | 2784 const CFX_WideString& swFieldName, |
2790 int nControlIndex, | 2785 int nControlIndex, |
2791 const CJS_WideStringArray& strArray) { | 2786 const std::vector<CFX_WideString>& strArray) { |
2792 ASSERT(pDocument); | 2787 ASSERT(pDocument); |
2793 | 2788 if (strArray.empty()) |
2794 if (strArray.GetSize() < 1) | |
2795 return; | 2789 return; |
2796 | 2790 |
2797 std::vector<CPDF_FormField*> FieldArray = | 2791 std::vector<CPDF_FormField*> FieldArray = |
2798 GetFormFields(pDocument, swFieldName); | 2792 GetFormFields(pDocument, swFieldName); |
2799 | 2793 |
2800 for (CPDF_FormField* pFormField : FieldArray) { | 2794 for (CPDF_FormField* pFormField : FieldArray) { |
2801 if (pFormField->GetFullName().Compare(swFieldName) != 0) | 2795 if (pFormField->GetFullName().Compare(swFieldName) != 0) |
2802 continue; | 2796 continue; |
2803 | 2797 |
2804 switch (pFormField->GetFieldType()) { | 2798 switch (pFormField->GetFieldType()) { |
2805 case FIELDTYPE_TEXTFIELD: | 2799 case FIELDTYPE_TEXTFIELD: |
2806 case FIELDTYPE_COMBOBOX: | 2800 case FIELDTYPE_COMBOBOX: |
2807 if (pFormField->GetValue() != strArray.GetAt(0)) { | 2801 if (pFormField->GetValue() != strArray[0]) { |
2808 CFX_WideString WideString = strArray.GetAt(0); | 2802 pFormField->SetValue(strArray[0], TRUE); |
2809 pFormField->SetValue(strArray.GetAt(0), TRUE); | |
2810 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE); | 2803 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE); |
2811 } | 2804 } |
2812 break; | 2805 break; |
2813 case FIELDTYPE_CHECKBOX: // mantis: 0004493 | 2806 case FIELDTYPE_CHECKBOX: |
2814 case FIELDTYPE_RADIOBUTTON: { | 2807 case FIELDTYPE_RADIOBUTTON: { |
2815 if (pFormField->GetValue() != strArray.GetAt(0)) { | 2808 if (pFormField->GetValue() != strArray[0]) { |
2816 pFormField->SetValue(strArray.GetAt(0), TRUE); | 2809 pFormField->SetValue(strArray[0], TRUE); |
2817 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE); | 2810 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE); |
2818 } | 2811 } |
2819 } break; | 2812 } break; |
2820 case FIELDTYPE_LISTBOX: { | 2813 case FIELDTYPE_LISTBOX: { |
2821 FX_BOOL bModified = FALSE; | 2814 FX_BOOL bModified = FALSE; |
2822 | 2815 for (const auto& str : strArray) { |
2823 for (int i = 0, sz = strArray.GetSize(); i < sz; i++) { | 2816 if (!pFormField->IsItemSelected(pFormField->FindOption(str))) { |
2824 int iIndex = pFormField->FindOption(strArray.GetAt(i)); | |
2825 | |
2826 if (!pFormField->IsItemSelected(iIndex)) { | |
2827 bModified = TRUE; | 2817 bModified = TRUE; |
2828 break; | 2818 break; |
2829 } | 2819 } |
2830 } | 2820 } |
2831 | |
2832 if (bModified) { | 2821 if (bModified) { |
2833 pFormField->ClearSelection(TRUE); | 2822 pFormField->ClearSelection(TRUE); |
2834 for (int i = 0, sz = strArray.GetSize(); i < sz; i++) { | 2823 for (const auto& str : strArray) { |
2835 int iIndex = pFormField->FindOption(strArray.GetAt(i)); | 2824 int index = pFormField->FindOption(str); |
2836 pFormField->SetItemSelection(iIndex, TRUE, TRUE); | 2825 if (!pFormField->IsItemSelected(index)) |
| 2826 pFormField->SetItemSelection(index, TRUE, TRUE); |
2837 } | 2827 } |
2838 | |
2839 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE); | 2828 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE); |
2840 } | 2829 } |
2841 } break; | 2830 } break; |
2842 default: | 2831 default: |
2843 break; | 2832 break; |
2844 } | 2833 } |
2845 } | 2834 } |
2846 } | 2835 } |
2847 | 2836 |
2848 FX_BOOL Field::valueAsString(IJS_Context* cc, | 2837 FX_BOOL Field::valueAsString(IJS_Context* cc, |
(...skipping 509 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3358 FX_BOOL Field::source(IJS_Context* cc, | 3347 FX_BOOL Field::source(IJS_Context* cc, |
3359 CJS_PropValue& vp, | 3348 CJS_PropValue& vp, |
3360 CFX_WideString& sError) { | 3349 CFX_WideString& sError) { |
3361 if (vp.IsGetting()) { | 3350 if (vp.IsGetting()) { |
3362 vp << (CJS_Object*)NULL; | 3351 vp << (CJS_Object*)NULL; |
3363 } | 3352 } |
3364 | 3353 |
3365 return TRUE; | 3354 return TRUE; |
3366 } | 3355 } |
3367 | 3356 |
3368 void Field::AddDelay_Int(enum FIELD_PROP prop, int32_t n) { | 3357 void Field::AddDelay_Int(FIELD_PROP prop, int32_t n) { |
3369 CJS_DelayData* pNewData = new CJS_DelayData; | 3358 CJS_DelayData* pNewData = |
3370 pNewData->sFieldName = m_FieldName; | 3359 new CJS_DelayData(prop, m_nFormControlIndex, m_FieldName); |
3371 pNewData->nControlIndex = m_nFormControlIndex; | |
3372 pNewData->eProp = prop; | |
3373 pNewData->num = n; | 3360 pNewData->num = n; |
3374 | |
3375 m_pJSDoc->AddDelayData(pNewData); | 3361 m_pJSDoc->AddDelayData(pNewData); |
3376 } | 3362 } |
3377 | 3363 |
3378 void Field::AddDelay_Bool(enum FIELD_PROP prop, bool b) { | 3364 void Field::AddDelay_Bool(FIELD_PROP prop, bool b) { |
3379 CJS_DelayData* pNewData = new CJS_DelayData; | 3365 CJS_DelayData* pNewData = |
3380 pNewData->sFieldName = m_FieldName; | 3366 new CJS_DelayData(prop, m_nFormControlIndex, m_FieldName); |
3381 pNewData->nControlIndex = m_nFormControlIndex; | |
3382 pNewData->eProp = prop; | |
3383 pNewData->b = b; | 3367 pNewData->b = b; |
3384 | |
3385 m_pJSDoc->AddDelayData(pNewData); | 3368 m_pJSDoc->AddDelayData(pNewData); |
3386 } | 3369 } |
3387 | 3370 |
3388 void Field::AddDelay_String(enum FIELD_PROP prop, | 3371 void Field::AddDelay_String(FIELD_PROP prop, const CFX_ByteString& string) { |
3389 const CFX_ByteString& string) { | 3372 CJS_DelayData* pNewData = |
3390 CJS_DelayData* pNewData = new CJS_DelayData; | 3373 new CJS_DelayData(prop, m_nFormControlIndex, m_FieldName); |
3391 pNewData->sFieldName = m_FieldName; | |
3392 pNewData->nControlIndex = m_nFormControlIndex; | |
3393 pNewData->eProp = prop; | |
3394 pNewData->string = string; | 3374 pNewData->string = string; |
3395 | |
3396 m_pJSDoc->AddDelayData(pNewData); | 3375 m_pJSDoc->AddDelayData(pNewData); |
3397 } | 3376 } |
3398 | 3377 |
3399 void Field::AddDelay_WideString(enum FIELD_PROP prop, | 3378 void Field::AddDelay_WideString(FIELD_PROP prop, const CFX_WideString& string) { |
3400 const CFX_WideString& string) { | 3379 CJS_DelayData* pNewData = |
3401 CJS_DelayData* pNewData = new CJS_DelayData; | 3380 new CJS_DelayData(prop, m_nFormControlIndex, m_FieldName); |
3402 pNewData->sFieldName = m_FieldName; | |
3403 pNewData->nControlIndex = m_nFormControlIndex; | |
3404 pNewData->eProp = prop; | |
3405 pNewData->widestring = string; | 3381 pNewData->widestring = string; |
3406 | |
3407 m_pJSDoc->AddDelayData(pNewData); | 3382 m_pJSDoc->AddDelayData(pNewData); |
3408 } | 3383 } |
3409 | 3384 |
3410 void Field::AddDelay_Rect(enum FIELD_PROP prop, const CFX_FloatRect& rect) { | 3385 void Field::AddDelay_Rect(FIELD_PROP prop, const CFX_FloatRect& rect) { |
3411 CJS_DelayData* pNewData = new CJS_DelayData; | 3386 CJS_DelayData* pNewData = |
3412 pNewData->sFieldName = m_FieldName; | 3387 new CJS_DelayData(prop, m_nFormControlIndex, m_FieldName); |
3413 pNewData->nControlIndex = m_nFormControlIndex; | |
3414 pNewData->eProp = prop; | |
3415 pNewData->rect = rect; | 3388 pNewData->rect = rect; |
3416 | |
3417 m_pJSDoc->AddDelayData(pNewData); | 3389 m_pJSDoc->AddDelayData(pNewData); |
3418 } | 3390 } |
3419 | 3391 |
3420 void Field::AddDelay_Color(enum FIELD_PROP prop, const CPWL_Color& color) { | 3392 void Field::AddDelay_Color(FIELD_PROP prop, const CPWL_Color& color) { |
3421 CJS_DelayData* pNewData = new CJS_DelayData; | 3393 CJS_DelayData* pNewData = |
3422 pNewData->sFieldName = m_FieldName; | 3394 new CJS_DelayData(prop, m_nFormControlIndex, m_FieldName); |
3423 pNewData->nControlIndex = m_nFormControlIndex; | |
3424 pNewData->eProp = prop; | |
3425 pNewData->color = color; | 3395 pNewData->color = color; |
3426 | |
3427 m_pJSDoc->AddDelayData(pNewData); | 3396 m_pJSDoc->AddDelayData(pNewData); |
3428 } | 3397 } |
3429 | 3398 |
3430 void Field::AddDelay_WordArray(enum FIELD_PROP prop, | 3399 void Field::AddDelay_WordArray(FIELD_PROP prop, |
3431 const CFX_ArrayTemplate<uint32_t>& array) { | 3400 const std::vector<uint32_t>& array) { |
3432 CJS_DelayData* pNewData = new CJS_DelayData; | 3401 CJS_DelayData* pNewData = |
3433 pNewData->sFieldName = m_FieldName; | 3402 new CJS_DelayData(prop, m_nFormControlIndex, m_FieldName); |
3434 pNewData->nControlIndex = m_nFormControlIndex; | 3403 pNewData->wordarray = array; |
3435 pNewData->eProp = prop; | |
3436 | |
3437 for (int i = 0, sz = array.GetSize(); i < sz; i++) | |
3438 pNewData->wordarray.Add(array.GetAt(i)); | |
3439 | |
3440 m_pJSDoc->AddDelayData(pNewData); | 3404 m_pJSDoc->AddDelayData(pNewData); |
3441 } | 3405 } |
3442 | 3406 |
3443 void Field::AddDelay_WideStringArray(enum FIELD_PROP prop, | 3407 void Field::AddDelay_WideStringArray(FIELD_PROP prop, |
3444 const CJS_WideStringArray& array) { | 3408 const std::vector<CFX_WideString>& array) { |
3445 CJS_DelayData* pNewData = new CJS_DelayData; | 3409 CJS_DelayData* pNewData = |
3446 pNewData->sFieldName = m_FieldName; | 3410 new CJS_DelayData(prop, m_nFormControlIndex, m_FieldName); |
3447 pNewData->nControlIndex = m_nFormControlIndex; | 3411 pNewData->widestringarray = array; |
3448 pNewData->eProp = prop; | |
3449 for (int i = 0, sz = array.GetSize(); i < sz; i++) | |
3450 pNewData->widestringarray.Add(array.GetAt(i)); | |
3451 | |
3452 m_pJSDoc->AddDelayData(pNewData); | 3412 m_pJSDoc->AddDelayData(pNewData); |
3453 } | 3413 } |
3454 | 3414 |
3455 void Field::DoDelay(CPDFSDK_Document* pDocument, CJS_DelayData* pData) { | 3415 void Field::DoDelay(CPDFSDK_Document* pDocument, CJS_DelayData* pData) { |
3456 ASSERT(pDocument); | 3416 ASSERT(pDocument); |
3457 | |
3458 switch (pData->eProp) { | 3417 switch (pData->eProp) { |
3459 case FP_ALIGNMENT: | 3418 case FP_ALIGNMENT: |
3460 Field::SetAlignment(pDocument, pData->sFieldName, pData->nControlIndex, | 3419 Field::SetAlignment(pDocument, pData->sFieldName, pData->nControlIndex, |
3461 pData->string); | 3420 pData->string); |
3462 break; | 3421 break; |
3463 case FP_BORDERSTYLE: | 3422 case FP_BORDERSTYLE: |
3464 Field::SetBorderStyle(pDocument, pData->sFieldName, pData->nControlIndex, | 3423 Field::SetBorderStyle(pDocument, pData->sFieldName, pData->nControlIndex, |
3465 pData->string); | 3424 pData->string); |
3466 break; | 3425 break; |
3467 case FP_BUTTONALIGNX: | 3426 case FP_BUTTONALIGNX: |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3593 } | 3552 } |
3594 } | 3553 } |
3595 | 3554 |
3596 void Field::AddField(CPDFSDK_Document* pDocument, | 3555 void Field::AddField(CPDFSDK_Document* pDocument, |
3597 int nPageIndex, | 3556 int nPageIndex, |
3598 int nFieldType, | 3557 int nFieldType, |
3599 const CFX_WideString& sName, | 3558 const CFX_WideString& sName, |
3600 const CFX_FloatRect& rcCoords) { | 3559 const CFX_FloatRect& rcCoords) { |
3601 // Not supported. | 3560 // Not supported. |
3602 } | 3561 } |
OLD | NEW |