| Index: fpdfsdk/src/fpdfformfill.cpp
|
| diff --git a/fpdfsdk/src/fpdfformfill.cpp b/fpdfsdk/src/fpdfformfill.cpp
|
| index 0cc681a0b0c8959c46a8442f1d571235c81e8761..95defc5da4034d6940dc5939f3b03c6f246ebe74 100644
|
| --- a/fpdfsdk/src/fpdfformfill.cpp
|
| +++ b/fpdfsdk/src/fpdfformfill.cpp
|
| @@ -6,6 +6,11 @@
|
|
|
| #include "public/fpdf_formfill.h"
|
|
|
| +#ifdef PDF_ENABLE_XFA
|
| +#include "../include/fpdfxfa/fpdfxfa_app.h"
|
| +#include "../include/fpdfxfa/fpdfxfa_doc.h"
|
| +#include "../include/fpdfxfa/fpdfxfa_page.h"
|
| +#endif
|
| #include "fpdfsdk/include/fsdk_define.h"
|
| #include "fpdfsdk/include/fsdk_mgr.h"
|
| #include "public/fpdfview.h"
|
| @@ -42,6 +47,7 @@ DLLEXPORT int STDCALL FPDFPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle,
|
| if (!hHandle)
|
| return -1;
|
| CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
|
| +#ifndef PDF_ENABLE_XFA
|
| if (!pPage)
|
| return -1;
|
| CPDF_InterForm interform(pPage->m_pDocument, FALSE);
|
| @@ -49,9 +55,69 @@ DLLEXPORT int STDCALL FPDFPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle,
|
| pPage, (FX_FLOAT)page_x, (FX_FLOAT)page_y, nullptr);
|
| if (!pFormCtrl)
|
| return -1;
|
| +#else
|
| + if (pPage) {
|
| + CPDF_InterForm interform(pPage->m_pDocument, FALSE);
|
| + CPDF_FormControl* pFormCtrl = interform.GetControlAtPoint(
|
| + pPage, (FX_FLOAT)page_x, (FX_FLOAT)page_y, nullptr);
|
| + if (!pFormCtrl)
|
| + return -1;
|
| +
|
| + CPDF_FormField* pFormField = pFormCtrl->GetField();
|
| + if (!pFormField)
|
| + return -1;
|
| +
|
| + int nType = pFormField->GetFieldType();
|
| + return nType;
|
| + }
|
| +
|
| + IXFA_PageView* pPageView = ((CPDFXFA_Page*)page)->GetXFAPageView();
|
| + if (pPageView) {
|
| + IXFA_WidgetHandler* pWidgetHandler = NULL;
|
| + IXFA_DocView* pDocView = pPageView->GetDocView();
|
| + if (!pDocView)
|
| + return -1;
|
| +
|
| + pWidgetHandler = pDocView->GetWidgetHandler();
|
| + if (!pWidgetHandler)
|
| + return -1;
|
| +
|
| + IXFA_Widget* pXFAAnnot = NULL;
|
| + IXFA_WidgetIterator* pWidgetIterator = pPageView->CreateWidgetIterator(
|
| + XFA_TRAVERSEWAY_Form,
|
| + XFA_WIDGETFILTER_Viewable | XFA_WIDGETFILTER_AllType);
|
| + if (!pWidgetIterator)
|
| + return -1;
|
| + pXFAAnnot = pWidgetIterator->MoveToNext();
|
| + while (pXFAAnnot) {
|
| + CFX_RectF rcBBox;
|
| + pWidgetHandler->GetBBox(pXFAAnnot, rcBBox, 0);
|
| + CFX_FloatRect rcWidget(rcBBox.left, rcBBox.top,
|
| + rcBBox.left + rcBBox.width,
|
| + rcBBox.top + rcBBox.height);
|
| + rcWidget.left -= 1.0f;
|
| + rcWidget.right += 1.0f;
|
| + rcWidget.bottom -= 1.0f;
|
| + rcWidget.top += 1.0f;
|
| +
|
| + if (rcWidget.Contains(static_cast<FX_FLOAT>(page_x),
|
| + static_cast<FX_FLOAT>(page_y))) {
|
| + pWidgetIterator->Release();
|
| + return FPDF_FORMFIELD_XFA;
|
| + }
|
| + pXFAAnnot = pWidgetIterator->MoveToNext();
|
| + }
|
| +
|
| + pWidgetIterator->Release();
|
| + }
|
| +#endif
|
|
|
| +#ifndef PDF_ENABLE_XFA
|
| CPDF_FormField* pFormField = pFormCtrl->GetField();
|
| return pFormField ? pFormField->GetFieldType() : -1;
|
| +#else
|
| + return -1;
|
| +#endif
|
| }
|
|
|
| DLLEXPORT int STDCALL FPDPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle,
|
| @@ -80,7 +146,11 @@ DLLEXPORT int STDCALL FPDFPage_FormFieldZOrderAtPoint(FPDF_FORMHANDLE hHandle,
|
| DLLEXPORT FPDF_FORMHANDLE STDCALL
|
| FPDFDOC_InitFormFillEnvironment(FPDF_DOCUMENT document,
|
| FPDF_FORMFILLINFO* formInfo) {
|
| +#ifndef PDF_ENABLE_XFA
|
| const int kRequiredVersion = 1;
|
| +#else
|
| + const int kRequiredVersion = 2;
|
| +#endif
|
| if (!formInfo || formInfo->version != kRequiredVersion)
|
| return nullptr;
|
|
|
| @@ -89,7 +159,14 @@ FPDFDOC_InitFormFillEnvironment(FPDF_DOCUMENT document,
|
| return nullptr;
|
|
|
| CPDFDoc_Environment* pEnv = new CPDFDoc_Environment(pDocument, formInfo);
|
| +#ifndef PDF_ENABLE_XFA
|
| pEnv->SetSDKDocument(new CPDFSDK_Document(pDocument, pEnv));
|
| +#else
|
| + pEnv->SetSDKDocument(pDocument->GetSDKDocument(pEnv));
|
| +
|
| + CPDFXFA_App* pApp = CPDFXFA_App::GetInstance();
|
| + pApp->AddFormFillEnv(pEnv);
|
| +#endif
|
| return pEnv;
|
| }
|
|
|
| @@ -97,6 +174,7 @@ DLLEXPORT void STDCALL
|
| FPDFDOC_ExitFormFillEnvironment(FPDF_FORMHANDLE hHandle) {
|
| if (!hHandle)
|
| return;
|
| +#ifndef PDF_ENABLE_XFA
|
|
|
| CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle;
|
| if (CPDFSDK_Document* pSDKDoc = pEnv->GetSDKDocument()) {
|
| @@ -104,6 +182,11 @@ FPDFDOC_ExitFormFillEnvironment(FPDF_FORMHANDLE hHandle) {
|
| delete pSDKDoc;
|
| }
|
| delete pEnv;
|
| +#else
|
| + CPDFXFA_App* pApp = CPDFXFA_App::GetInstance();
|
| + pApp->RemoveFormFillEnv((CPDFDoc_Environment*)hHandle);
|
| + delete (CPDFDoc_Environment*)hHandle;
|
| +#endif
|
| }
|
|
|
| DLLEXPORT FPDF_BOOL STDCALL FORM_OnMouseMove(FPDF_FORMHANDLE hHandle,
|
| @@ -145,6 +228,34 @@ DLLEXPORT FPDF_BOOL STDCALL FORM_OnLButtonUp(FPDF_FORMHANDLE hHandle,
|
| return pPageView->OnLButtonUp(pt, modifier);
|
| }
|
|
|
| +#ifdef PDF_ENABLE_XFA
|
| +DLLEXPORT FPDF_BOOL STDCALL FORM_OnRButtonDown(FPDF_FORMHANDLE hHandle,
|
| + FPDF_PAGE page,
|
| + int modifier,
|
| + double page_x,
|
| + double page_y) {
|
| + CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page);
|
| + if (!pPageView)
|
| + return FALSE;
|
| +
|
| + CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y);
|
| + return pPageView->OnRButtonDown(pt, modifier);
|
| +}
|
| +
|
| +DLLEXPORT FPDF_BOOL STDCALL FORM_OnRButtonUp(FPDF_FORMHANDLE hHandle,
|
| + FPDF_PAGE page,
|
| + int modifier,
|
| + double page_x,
|
| + double page_y) {
|
| + CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page);
|
| + if (!pPageView)
|
| + return FALSE;
|
| +
|
| + CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y);
|
| + return pPageView->OnRButtonUp(pt, modifier);
|
| +}
|
| +
|
| +#endif
|
| DLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyDown(FPDF_FORMHANDLE hHandle,
|
| FPDF_PAGE page,
|
| int nKeyCode,
|
| @@ -202,21 +313,40 @@ DLLEXPORT void STDCALL FPDF_FFLDraw(FPDF_FORMHANDLE hHandle,
|
| if (!pPage)
|
| return;
|
|
|
| +#ifndef PDF_ENABLE_XFA
|
| CPDF_RenderOptions options;
|
| if (flags & FPDF_LCD_TEXT)
|
| options.m_Flags |= RENDER_CLEARTYPE;
|
| else
|
| options.m_Flags &= ~RENDER_CLEARTYPE;
|
| +#else
|
| + CPDFXFA_Document* pDocument = pPage->GetDocument();
|
| + if (!pDocument)
|
| + return;
|
| +#endif
|
|
|
| +#ifndef PDF_ENABLE_XFA
|
| // Grayscale output
|
| if (flags & FPDF_GRAYSCALE) {
|
| options.m_ColorMode = RENDER_COLOR_GRAY;
|
| options.m_ForeColor = 0;
|
| options.m_BackColor = 0xffffff;
|
| }
|
| +#else
|
| + CPDF_Document* pPDFDoc = pDocument->GetPDFDoc();
|
| + if (!pPDFDoc)
|
| + return;
|
| +#endif
|
|
|
| +#ifndef PDF_ENABLE_XFA
|
| options.m_AddFlags = flags >> 8;
|
| options.m_pOCContext = new CPDF_OCContext(pPage->m_pDocument);
|
| +#else
|
| + CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle;
|
| + CPDFSDK_Document* pFXDoc = pEnv->GetSDKDocument();
|
| + if (!pFXDoc)
|
| + return;
|
| +#endif
|
|
|
| CFX_AffineMatrix matrix;
|
| pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate);
|
| @@ -232,15 +362,292 @@ DLLEXPORT void STDCALL FPDF_FFLDraw(FPDF_FORMHANDLE hHandle,
|
| #else
|
| nonstd::unique_ptr<CFX_FxgeDevice> pDevice(new CFX_FxgeDevice);
|
| #endif
|
| +#ifdef PDF_ENABLE_XFA
|
| +
|
| + if (!pDevice)
|
| + return;
|
| +#endif
|
| pDevice->Attach((CFX_DIBitmap*)bitmap);
|
| pDevice->SaveState();
|
| pDevice->SetClip_Rect(&clip);
|
|
|
| +#ifndef PDF_ENABLE_XFA
|
| if (CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, pPage))
|
| pPageView->PageView_OnDraw(pDevice.get(), &matrix, &options);
|
| +#else
|
| + CPDF_RenderOptions options;
|
| + if (flags & FPDF_LCD_TEXT)
|
| + options.m_Flags |= RENDER_CLEARTYPE;
|
| + else
|
| + options.m_Flags &= ~RENDER_CLEARTYPE;
|
| +
|
| + // Grayscale output
|
| + if (flags & FPDF_GRAYSCALE) {
|
| + options.m_ColorMode = RENDER_COLOR_GRAY;
|
| + options.m_ForeColor = 0;
|
| + options.m_BackColor = 0xffffff;
|
| + }
|
| + options.m_AddFlags = flags >> 8;
|
| + options.m_pOCContext = new CPDF_OCContext(pPDFDoc);
|
| +
|
| + if (CPDFSDK_PageView* pPageView = pFXDoc->GetPageView(pPage))
|
| + pPageView->PageView_OnDraw(pDevice.get(), &matrix, &options, clip);
|
| +#endif
|
|
|
| pDevice->RestoreState();
|
| delete options.m_pOCContext;
|
| +#ifdef PDF_ENABLE_XFA
|
| + options.m_pOCContext = NULL;
|
| +}
|
| +DLLEXPORT void STDCALL FPDF_Widget_Undo(FPDF_DOCUMENT document,
|
| + FPDF_WIDGET hWidget) {
|
| + if (NULL == hWidget || NULL == document)
|
| + return;
|
| +
|
| + CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
|
| + if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic &&
|
| + pDocument->GetDocType() != XFA_DOCTYPE_Static)
|
| + return;
|
| +
|
| + IXFA_MenuHandler* pXFAMenuHander =
|
| + CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
|
| + if (pXFAMenuHander == NULL)
|
| + return;
|
| +
|
| + pXFAMenuHander->Undo((IXFA_Widget*)hWidget);
|
| +}
|
| +DLLEXPORT void STDCALL FPDF_Widget_Redo(FPDF_DOCUMENT document,
|
| + FPDF_WIDGET hWidget) {
|
| + if (NULL == hWidget || NULL == document)
|
| + return;
|
| +
|
| + CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
|
| + if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic &&
|
| + pDocument->GetDocType() != XFA_DOCTYPE_Static)
|
| + return;
|
| +
|
| + IXFA_MenuHandler* pXFAMenuHander =
|
| + CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
|
| + if (pXFAMenuHander == NULL)
|
| + return;
|
| +
|
| + pXFAMenuHander->Redo((IXFA_Widget*)hWidget);
|
| +}
|
| +
|
| +DLLEXPORT void STDCALL FPDF_Widget_SelectAll(FPDF_DOCUMENT document,
|
| + FPDF_WIDGET hWidget) {
|
| + if (NULL == hWidget || NULL == document)
|
| + return;
|
| +
|
| + CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
|
| + if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic &&
|
| + pDocument->GetDocType() != XFA_DOCTYPE_Static)
|
| + return;
|
| +
|
| + IXFA_MenuHandler* pXFAMenuHander =
|
| + CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
|
| + if (pXFAMenuHander == NULL)
|
| + return;
|
| +
|
| + pXFAMenuHander->SelectAll((IXFA_Widget*)hWidget);
|
| +}
|
| +DLLEXPORT void STDCALL FPDF_Widget_Copy(FPDF_DOCUMENT document,
|
| + FPDF_WIDGET hWidget,
|
| + FPDF_WIDESTRING wsText,
|
| + FPDF_DWORD* size) {
|
| + if (NULL == hWidget || NULL == document)
|
| + return;
|
| +
|
| + CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
|
| + if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic &&
|
| + pDocument->GetDocType() != XFA_DOCTYPE_Static)
|
| + return;
|
| +
|
| + IXFA_MenuHandler* pXFAMenuHander =
|
| + CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
|
| + if (pXFAMenuHander == NULL)
|
| + return;
|
| +
|
| + CFX_WideString wsCpText;
|
| + pXFAMenuHander->Copy((IXFA_Widget*)hWidget, wsCpText);
|
| +
|
| + CFX_ByteString bsCpText = wsCpText.UTF16LE_Encode();
|
| + int len = bsCpText.GetLength() / sizeof(unsigned short);
|
| + if (wsText == NULL) {
|
| + *size = len;
|
| + return;
|
| + }
|
| +
|
| + int real_size = len < *size ? len : *size;
|
| + if (real_size > 0) {
|
| + FXSYS_memcpy((void*)wsText,
|
| + bsCpText.GetBuffer(real_size * sizeof(unsigned short)),
|
| + real_size * sizeof(unsigned short));
|
| + bsCpText.ReleaseBuffer(real_size * sizeof(unsigned short));
|
| + }
|
| + *size = real_size;
|
| +}
|
| +DLLEXPORT void STDCALL FPDF_Widget_Cut(FPDF_DOCUMENT document,
|
| + FPDF_WIDGET hWidget,
|
| + FPDF_WIDESTRING wsText,
|
| + FPDF_DWORD* size) {
|
| + if (NULL == hWidget || NULL == document)
|
| + return;
|
| + CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
|
| + if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic &&
|
| + pDocument->GetDocType() != XFA_DOCTYPE_Static)
|
| + return;
|
| +
|
| + IXFA_MenuHandler* pXFAMenuHander =
|
| + CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
|
| + if (pXFAMenuHander == NULL)
|
| + return;
|
| +
|
| + CFX_WideString wsCpText;
|
| + pXFAMenuHander->Cut((IXFA_Widget*)hWidget, wsCpText);
|
| +
|
| + CFX_ByteString bsCpText = wsCpText.UTF16LE_Encode();
|
| + int len = bsCpText.GetLength() / sizeof(unsigned short);
|
| + if (wsText == NULL) {
|
| + *size = len;
|
| + return;
|
| + }
|
| +
|
| + int real_size = len < *size ? len : *size;
|
| + if (real_size > 0) {
|
| + FXSYS_memcpy((void*)wsText,
|
| + bsCpText.GetBuffer(real_size * sizeof(unsigned short)),
|
| + real_size * sizeof(unsigned short));
|
| + bsCpText.ReleaseBuffer(real_size * sizeof(unsigned short));
|
| + }
|
| + *size = real_size;
|
| +}
|
| +DLLEXPORT void STDCALL FPDF_Widget_Paste(FPDF_DOCUMENT document,
|
| + FPDF_WIDGET hWidget,
|
| + FPDF_WIDESTRING wsText,
|
| + FPDF_DWORD size) {
|
| + if (NULL == hWidget || NULL == document)
|
| + return;
|
| +
|
| + CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
|
| + if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic &&
|
| + pDocument->GetDocType() != XFA_DOCTYPE_Static)
|
| + return;
|
| +
|
| + IXFA_MenuHandler* pXFAMenuHander =
|
| + CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
|
| + if (pXFAMenuHander == NULL)
|
| + return;
|
| +
|
| + CFX_WideString wstr = CFX_WideString::FromUTF16LE(wsText, size);
|
| + pXFAMenuHander->Paste((IXFA_Widget*)hWidget, wstr);
|
| +}
|
| +DLLEXPORT void STDCALL
|
| +FPDF_Widget_ReplaceSpellCheckWord(FPDF_DOCUMENT document,
|
| + FPDF_WIDGET hWidget,
|
| + float x,
|
| + float y,
|
| + FPDF_BYTESTRING bsText) {
|
| + if (NULL == hWidget || NULL == document)
|
| + return;
|
| +
|
| + CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
|
| + if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic &&
|
| + pDocument->GetDocType() != XFA_DOCTYPE_Static)
|
| + return;
|
| +
|
| + IXFA_MenuHandler* pXFAMenuHander =
|
| + CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
|
| + if (pXFAMenuHander == NULL)
|
| + return;
|
| +
|
| + CFX_PointF ptPopup;
|
| + ptPopup.x = x;
|
| + ptPopup.y = y;
|
| + CFX_ByteStringC bs(bsText);
|
| + pXFAMenuHander->ReplaceSpellCheckWord((IXFA_Widget*)hWidget, ptPopup, bs);
|
| +}
|
| +DLLEXPORT void STDCALL
|
| +FPDF_Widget_GetSpellCheckWords(FPDF_DOCUMENT document,
|
| + FPDF_WIDGET hWidget,
|
| + float x,
|
| + float y,
|
| + FPDF_STRINGHANDLE* stringHandle) {
|
| + if (NULL == hWidget || NULL == document)
|
| + return;
|
| +
|
| + CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
|
| + if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic &&
|
| + pDocument->GetDocType() != XFA_DOCTYPE_Static)
|
| + return;
|
| +
|
| + IXFA_MenuHandler* pXFAMenuHander =
|
| + CPDFXFA_App::GetInstance()->GetXFAApp()->GetMenuHandler();
|
| + if (pXFAMenuHander == NULL)
|
| + return;
|
| +
|
| + CFX_ByteStringArray* sSuggestWords = new CFX_ByteStringArray;
|
| + CFX_PointF ptPopup;
|
| + ptPopup.x = x;
|
| + ptPopup.y = y;
|
| + pXFAMenuHander->GetSuggestWords((IXFA_Widget*)hWidget, ptPopup,
|
| + *sSuggestWords);
|
| + *stringHandle = (FPDF_STRINGHANDLE)sSuggestWords;
|
| +}
|
| +DLLEXPORT int STDCALL FPDF_StringHandleCounts(FPDF_STRINGHANDLE stringHandle) {
|
| + if (stringHandle == NULL)
|
| + return -1;
|
| + CFX_ByteStringArray* sSuggestWords = (CFX_ByteStringArray*)stringHandle;
|
| + return sSuggestWords->GetSize();
|
| +}
|
| +DLLEXPORT FPDF_BOOL STDCALL
|
| +FPDF_StringHandleGetStringByIndex(FPDF_STRINGHANDLE stringHandle,
|
| + int index,
|
| + FPDF_BYTESTRING bsText,
|
| + FPDF_DWORD* size) {
|
| + if (stringHandle == NULL || size == NULL)
|
| + return FALSE;
|
| + int count = FPDF_StringHandleCounts(stringHandle);
|
| + if (index < 0 || index >= count)
|
| + return FALSE;
|
| +
|
| + CFX_ByteStringArray sSuggestWords = *(CFX_ByteStringArray*)stringHandle;
|
| + int len = sSuggestWords[index].GetLength();
|
| +
|
| + if (bsText == NULL) {
|
| + *size = len;
|
| + return TRUE;
|
| + }
|
| +
|
| + int real_size = len < *size ? len : *size;
|
| + if (real_size > 0)
|
| + FXSYS_memcpy((void*)bsText, (const FX_CHAR*)(sSuggestWords[index]),
|
| + real_size);
|
| + *size = real_size;
|
| +
|
| + return TRUE;
|
| +}
|
| +DLLEXPORT void STDCALL
|
| +FPDF_StringHandleRelease(FPDF_STRINGHANDLE stringHandle) {
|
| + if (stringHandle == NULL)
|
| + return;
|
| + CFX_ByteStringArray* sSuggestWords = (CFX_ByteStringArray*)stringHandle;
|
| + delete sSuggestWords;
|
| +}
|
| +
|
| +DLLEXPORT FPDF_BOOL STDCALL
|
| +FPDF_StringHandleAddString(FPDF_STRINGHANDLE stringHandle,
|
| + FPDF_BYTESTRING bsText,
|
| + FPDF_DWORD size) {
|
| + if (stringHandle == NULL || bsText == NULL || size <= 0)
|
| + return FALSE;
|
| +
|
| + CFX_ByteStringArray* stringArr = (CFX_ByteStringArray*)stringHandle;
|
| + CFX_ByteString bsStr(bsText, size);
|
| +
|
| + stringArr->Add(bsStr);
|
| + return TRUE;
|
| +#endif
|
| }
|
|
|
| DLLEXPORT void STDCALL FPDF_SetFormFieldHighlightColor(FPDF_FORMHANDLE hHandle,
|
|
|