Index: fpdfsdk/fpdfformfill.cpp |
diff --git a/fpdfsdk/fpdfformfill.cpp b/fpdfsdk/fpdfformfill.cpp |
index 6bcb605794b237ffe92e2825f9b11d1ce6aab666..2631eb3e4f3b6211c6b67c85deb1a2c7ddcacacf 100644 |
--- a/fpdfsdk/fpdfformfill.cpp |
+++ b/fpdfsdk/fpdfformfill.cpp |
@@ -55,6 +55,94 @@ FPDF_STRINGHANDLE ToFPDFStringHandle(std::vector<CFX_ByteString>* strings) { |
} |
#endif // PDF_ENABLE_XFA |
+void FFLCommon(FPDF_FORMHANDLE hHandle, |
+ FPDF_BITMAP bitmap, |
+ FPDF_RECORDER recorder, |
+ FPDF_PAGE page, |
+ int start_x, |
+ int start_y, |
+ int size_x, |
+ int size_y, |
+ int rotate, |
+ int flags) { |
+ if (!hHandle) |
+ return; |
+ |
+ UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page); |
+ 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; |
+ // 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(pPage->m_pDocument, CPDF_OCContext::View); |
+#else // PDF_ENABLE_XFA |
+ CPDFXFA_Document* pDocument = pPage->GetDocument(); |
+ if (!pDocument) |
+ return; |
+ CPDF_Document* pPDFDoc = pDocument->GetPDFDoc(); |
+ if (!pPDFDoc) |
+ return; |
+ CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle; |
+ CPDFSDK_Document* pFXDoc = pEnv->GetSDKDocument(); |
+ if (!pFXDoc) |
+ return; |
+#endif // PDF_ENABLE_XFA |
+ |
+ CFX_Matrix matrix; |
+ pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate); |
+ |
+ FX_RECT clip(start_x, start_y, start_x + size_x, start_y + size_y); |
+ |
+ std::unique_ptr<CFX_FxgeDevice> pDevice(new CFX_FxgeDevice); |
+#ifdef _SKIA_SUPPORT_ |
+ pDevice->AttachRecorder(static_cast<SkPictureRecorder*>(recorder)); |
+#endif |
+ pDevice->Attach(CFXBitmapFromFPDFBitmap(bitmap), false, nullptr, false); |
+ 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 // PDF_ENABLE_XFA |
+ 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, CPDF_OCContext::View); |
+ |
+ if (CPDFSDK_PageView* pPageView = pFXDoc->GetPageView(pPage)) |
+ pPageView->PageView_OnDraw(pDevice.get(), &matrix, &options, clip); |
+#endif // PDF_ENABLE_XFA |
+ |
+ pDevice->RestoreState(false); |
+ delete options.m_pOCContext; |
+#ifdef PDF_ENABLE_XFA |
+ options.m_pOCContext = NULL; |
+#endif // PDF_ENABLE_XFA |
+} |
+ |
} // namespace |
DLLEXPORT int STDCALL FPDFPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle, |
@@ -293,94 +381,6 @@ DLLEXPORT FPDF_BOOL STDCALL FORM_ForceToKillFocus(FPDF_FORMHANDLE hHandle) { |
return pSDKDoc->KillFocusAnnot(0); |
} |
-static void FFLCommon(FPDF_FORMHANDLE hHandle, |
- FPDF_BITMAP bitmap, |
- FPDF_RECORDER recorder, |
- FPDF_PAGE page, |
- int start_x, |
- int start_y, |
- int size_x, |
- int size_y, |
- int rotate, |
- int flags) { |
- if (!hHandle) |
- return; |
- |
- UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page); |
- 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; |
- // 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(pPage->m_pDocument, CPDF_OCContext::View); |
-#else // PDF_ENABLE_XFA |
- CPDFXFA_Document* pDocument = pPage->GetDocument(); |
- if (!pDocument) |
- return; |
- CPDF_Document* pPDFDoc = pDocument->GetPDFDoc(); |
- if (!pPDFDoc) |
- return; |
- CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle; |
- CPDFSDK_Document* pFXDoc = pEnv->GetSDKDocument(); |
- if (!pFXDoc) |
- return; |
-#endif // PDF_ENABLE_XFA |
- |
- CFX_Matrix matrix; |
- pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate); |
- |
- FX_RECT clip(start_x, start_y, start_x + size_x, start_y + size_y); |
- |
- std::unique_ptr<CFX_FxgeDevice> pDevice(new CFX_FxgeDevice); |
-#ifdef _SKIA_SUPPORT_ |
- pDevice->AttachRecorder(static_cast<SkPictureRecorder*>(recorder)); |
-#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 // PDF_ENABLE_XFA |
- 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, CPDF_OCContext::View); |
- |
- if (CPDFSDK_PageView* pPageView = pFXDoc->GetPageView(pPage)) |
- pPageView->PageView_OnDraw(pDevice.get(), &matrix, &options, clip); |
-#endif // PDF_ENABLE_XFA |
- |
- pDevice->RestoreState(false); |
- delete options.m_pOCContext; |
-#ifdef PDF_ENABLE_XFA |
- options.m_pOCContext = NULL; |
-#endif // PDF_ENABLE_XFA |
-} |
- |
DLLEXPORT void STDCALL FPDF_FFLDraw(FPDF_FORMHANDLE hHandle, |
FPDF_BITMAP bitmap, |
FPDF_PAGE page, |
@@ -464,7 +464,7 @@ DLLEXPORT void STDCALL FPDF_Widget_Copy(FPDF_DOCUMENT document, |
CFX_ByteString bsCpText = wsCpText.UTF16LE_Encode(); |
uint32_t len = bsCpText.GetLength() / sizeof(unsigned short); |
- if (wsText == NULL) { |
+ if (!wsText) { |
*size = len; |
return; |
} |
@@ -483,8 +483,9 @@ DLLEXPORT void STDCALL FPDF_Widget_Cut(FPDF_DOCUMENT document, |
FPDF_WIDGET hWidget, |
FPDF_WIDESTRING wsText, |
FPDF_DWORD* size) { |
- if (NULL == hWidget || NULL == document) |
+ if (!hWidget || !document) |
return; |
+ |
CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document; |
if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic && |
pDocument->GetDocType() != XFA_DOCTYPE_Static) |