Chromium Code Reviews| 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 |
|
Oliver Chang
2015/11/30 19:33:19
ditto?
|
| 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, |