| Index: fpdfsdk/src/fpdfformfill.cpp
|
| diff --git a/fpdfsdk/src/fpdfformfill.cpp b/fpdfsdk/src/fpdfformfill.cpp
|
| index 95defc5da4034d6940dc5939f3b03c6f246ebe74..3f826ebe0ff57b1a83239544135319f978d25971 100644
|
| --- a/fpdfsdk/src/fpdfformfill.cpp
|
| +++ b/fpdfsdk/src/fpdfformfill.cpp
|
| @@ -6,16 +6,17 @@
|
|
|
| #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"
|
| #include "third_party/base/nonstd_unique_ptr.h"
|
|
|
| +#ifdef PDF_ENABLE_XFA
|
| +#include "../include/fpdfxfa/fpdfxfa_app.h"
|
| +#include "../include/fpdfxfa/fpdfxfa_doc.h"
|
| +#include "../include/fpdfxfa/fpdfxfa_page.h"
|
| +#endif // PDF_ENABLE_XFA
|
| +
|
| namespace {
|
|
|
| CPDFSDK_Document* FormHandleToSDKDoc(FPDF_FORMHANDLE hHandle) {
|
| @@ -47,15 +48,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);
|
| - CPDF_FormControl* pFormCtrl = interform.GetControlAtPoint(
|
| - pPage, (FX_FLOAT)page_x, (FX_FLOAT)page_y, nullptr);
|
| - if (!pFormCtrl)
|
| - return -1;
|
| -#else
|
| +#ifdef PDF_ENABLE_XFA
|
| if (pPage) {
|
| CPDF_InterForm interform(pPage->m_pDocument, FALSE);
|
| CPDF_FormControl* pFormCtrl = interform.GetControlAtPoint(
|
| @@ -110,14 +103,18 @@ DLLEXPORT int STDCALL FPDFPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle,
|
|
|
| pWidgetIterator->Release();
|
| }
|
| -#endif
|
| -
|
| -#ifndef PDF_ENABLE_XFA
|
| + return -1;
|
| +#else // PDF_ENABLE_XFA
|
| + if (!pPage)
|
| + return -1;
|
| + 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();
|
| return pFormField ? pFormField->GetFieldType() : -1;
|
| -#else
|
| - return -1;
|
| -#endif
|
| +#endif // PDF_ENABLE_XFA
|
| }
|
|
|
| DLLEXPORT int STDCALL FPDPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle,
|
| @@ -146,11 +143,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
|
| +#ifdef PDF_ENABLE_XFA
|
| const int kRequiredVersion = 2;
|
| -#endif
|
| +#else // PDF_ENABLE_XFA
|
| + const int kRequiredVersion = 1;
|
| +#endif // PDF_ENABLE_XFA
|
| if (!formInfo || formInfo->version != kRequiredVersion)
|
| return nullptr;
|
|
|
| @@ -159,14 +156,13 @@ 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
|
| +#ifdef PDF_ENABLE_XFA
|
| pEnv->SetSDKDocument(pDocument->GetSDKDocument(pEnv));
|
| -
|
| CPDFXFA_App* pApp = CPDFXFA_App::GetInstance();
|
| pApp->AddFormFillEnv(pEnv);
|
| -#endif
|
| +#else // PDF_ENABLE_XFA
|
| + pEnv->SetSDKDocument(new CPDFSDK_Document(pDocument, pEnv));
|
| +#endif // PDF_ENABLE_XFA
|
| return pEnv;
|
| }
|
|
|
| @@ -174,19 +170,17 @@ DLLEXPORT void STDCALL
|
| FPDFDOC_ExitFormFillEnvironment(FPDF_FORMHANDLE hHandle) {
|
| if (!hHandle)
|
| return;
|
| -#ifndef PDF_ENABLE_XFA
|
| -
|
| CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle;
|
| +#ifdef PDF_ENABLE_XFA
|
| + CPDFXFA_App* pApp = CPDFXFA_App::GetInstance();
|
| + pApp->RemoveFormFillEnv(pEnv);
|
| +#else // PDF_ENABLE_XFA
|
| if (CPDFSDK_Document* pSDKDoc = pEnv->GetSDKDocument()) {
|
| pEnv->SetSDKDocument(NULL);
|
| delete pSDKDoc;
|
| }
|
| +#endif // PDF_ENABLE_XFA
|
| 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,
|
| @@ -254,8 +248,8 @@ DLLEXPORT FPDF_BOOL STDCALL FORM_OnRButtonUp(FPDF_FORMHANDLE hHandle,
|
| CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y);
|
| return pPageView->OnRButtonUp(pt, modifier);
|
| }
|
| +#endif // PDF_ENABLE_XFA
|
|
|
| -#endif
|
| DLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyDown(FPDF_FORMHANDLE hHandle,
|
| FPDF_PAGE page,
|
| int nKeyCode,
|
| @@ -319,34 +313,26 @@ DLLEXPORT void STDCALL FPDF_FFLDraw(FPDF_FORMHANDLE hHandle,
|
| 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
|
| + options.m_AddFlags = flags >> 8;
|
| + options.m_pOCContext = new CPDF_OCContext(pPage->m_pDocument);
|
| +#else // PDF_ENABLE_XFA
|
| + CPDFXFA_Document* pDocument = pPage->GetDocument();
|
| + if (!pDocument)
|
| + return;
|
| 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
|
| +#endif // PDF_ENABLE_XFA
|
|
|
| CFX_AffineMatrix matrix;
|
| pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate);
|
| @@ -362,11 +348,6 @@ 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);
|
| @@ -374,7 +355,7 @@ DLLEXPORT void STDCALL FPDF_FFLDraw(FPDF_FORMHANDLE hHandle,
|
| #ifndef PDF_ENABLE_XFA
|
| if (CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, pPage))
|
| pPageView->PageView_OnDraw(pDevice.get(), &matrix, &options);
|
| -#else
|
| +#else // PDF_ENABLE_XFA
|
| CPDF_RenderOptions options;
|
| if (flags & FPDF_LCD_TEXT)
|
| options.m_Flags |= RENDER_CLEARTYPE;
|
| @@ -392,13 +373,16 @@ DLLEXPORT void STDCALL FPDF_FFLDraw(FPDF_FORMHANDLE hHandle,
|
|
|
| if (CPDFSDK_PageView* pPageView = pFXDoc->GetPageView(pPage))
|
| pPageView->PageView_OnDraw(pDevice.get(), &matrix, &options, clip);
|
| -#endif
|
| +#endif // PDF_ENABLE_XFA
|
|
|
| pDevice->RestoreState();
|
| delete options.m_pOCContext;
|
| #ifdef PDF_ENABLE_XFA
|
| options.m_pOCContext = NULL;
|
| +#endif // PDF_ENABLE_XFA
|
| }
|
| +
|
| +#ifdef PDF_ENABLE_XFA
|
| DLLEXPORT void STDCALL FPDF_Widget_Undo(FPDF_DOCUMENT document,
|
| FPDF_WIDGET hWidget) {
|
| if (NULL == hWidget || NULL == document)
|
| @@ -647,8 +631,8 @@ FPDF_StringHandleAddString(FPDF_STRINGHANDLE stringHandle,
|
|
|
| stringArr->Add(bsStr);
|
| return TRUE;
|
| -#endif
|
| }
|
| +#endif // PDF_ENABLE_XFA
|
|
|
| DLLEXPORT void STDCALL FPDF_SetFormFieldHighlightColor(FPDF_FORMHANDLE hHandle,
|
| int fieldType,
|
|
|