From faeac63865eeb791501d7535f1e7a7c7fc807b04 Mon Sep 17 00:00:00 2001 From: Ashod Nakashian Date: Tue, 5 Jun 2018 11:29:15 +0200 Subject: [PATCH 03/14] svx: import PDF images as BGRA --- pdfium/fpdfsdk/fpdf_editimg.cpp | 20 ++++++++++++++++++++ pdfium/public/fpdfview.h | 3 +++ 2 files changed, 23 insertions(+) diff --git a/pdfium/fpdfsdk/fpdf_editimg.cpp b/pdfium/fpdfsdk/fpdf_editimg.cpp index fed1581..3f400c7 100644 --- a/pdfium/fpdfsdk/fpdf_editimg.cpp +++ b/pdfium/fpdfsdk/fpdf_editimg.cpp @@ -186,6 +186,26 @@ FPDFImageObj_GetBitmap(FPDF_PAGEOBJECT image_object) { return FPDFBitmapFromCFXDIBitmap(pBitmap.Leak()); } +FPDF_EXPORT FPDF_BITMAP FPDF_CALLCONV +FPDFImageObj_GetBitmapBgra(FPDF_PAGEOBJECT image_object) { + CPDF_PageObject* pObj = CPDFPageObjectFromFPDFPageObject(image_object); + if (!pObj || !pObj->IsImage()) + return nullptr; + + RetainPtr pImg = pObj->AsImage()->GetImage(); + if (!pImg) + return nullptr; + + RetainPtr pSource = pImg->LoadDIBSource(); + if (!pSource) + return nullptr; + + RetainPtr pBitmap; + pBitmap = pSource->CloneConvert(FXDIB_Argb); + + return pBitmap.Leak(); +} + FPDF_EXPORT unsigned long FPDF_CALLCONV FPDFImageObj_GetImageDataDecoded(FPDF_PAGEOBJECT image_object, void* buffer, diff --git a/pdfium/public/fpdfview.h b/pdfium/public/fpdfview.h index 0ccd140..b451b9c 100644 --- a/pdfium/public/fpdfview.h +++ b/pdfium/public/fpdfview.h @@ -905,6 +905,9 @@ FPDF_EXPORT FPDF_BITMAP FPDF_CALLCONV FPDFBitmap_CreateEx(int width, // function; see the list of such formats above. FPDF_EXPORT int FPDF_CALLCONV FPDFBitmap_GetFormat(FPDF_BITMAP bitmap); +FPDF_EXPORT FPDF_BITMAP FPDF_CALLCONV +FPDFImageObj_GetBitmapBgra(FPDF_PAGEOBJECT image_object); + // Function: FPDFBitmap_FillRect // Fill a rectangle in a bitmap. // Parameters: -- 2.16.3