diff options
-rw-r--r-- | external/pdfium/0003-svx-import-PDF-images-as-BGRA.patch.2 | 58 | ||||
-rw-r--r-- | external/pdfium/UnpackedTarball_pdfium.mk | 1 | ||||
-rw-r--r-- | svx/source/svdraw/svdpdf.cxx | 4 |
3 files changed, 61 insertions, 2 deletions
diff --git a/external/pdfium/0003-svx-import-PDF-images-as-BGRA.patch.2 b/external/pdfium/0003-svx-import-PDF-images-as-BGRA.patch.2 new file mode 100644 index 000000000000..21c3d007fb3d --- /dev/null +++ b/external/pdfium/0003-svx-import-PDF-images-as-BGRA.patch.2 @@ -0,0 +1,58 @@ +From faeac63865eeb791501d7535f1e7a7c7fc807b04 Mon Sep 17 00:00:00 2001 +From: Ashod Nakashian <ashod.nakashian@collabora.co.uk> +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<CPDF_Image> pImg = pObj->AsImage()->GetImage(); ++ if (!pImg) ++ return nullptr; ++ ++ RetainPtr<CFX_DIBSource> pSource = pImg->LoadDIBSource(); ++ if (!pSource) ++ return nullptr; ++ ++ RetainPtr<CFX_DIBitmap> 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 + diff --git a/external/pdfium/UnpackedTarball_pdfium.mk b/external/pdfium/UnpackedTarball_pdfium.mk index 22e762695300..7da652c4532c 100644 --- a/external/pdfium/UnpackedTarball_pdfium.mk +++ b/external/pdfium/UnpackedTarball_pdfium.mk @@ -16,6 +16,7 @@ pdfium_patches += build.patch.1 # Adds missing editing API pdfium_patches += 0001-svx-import-PDF-text-using-PDFium.patch.2 pdfium_patches += 0002-svx-more-accurate-PDF-text-importing.patch.2 +pdfium_patches += 0003-svx-import-PDF-images-as-BGRA.patch.2 $(eval $(call gb_UnpackedTarball_UnpackedTarball,pdfium)) diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx index b90d8c700143..937e2eaf90e4 100644 --- a/svx/source/svdraw/svdpdf.cxx +++ b/svx/source/svdraw/svdpdf.cxx @@ -1160,7 +1160,7 @@ void ImpSdrPdfImport::MapScaling() void ImpSdrPdfImport::ImportImage(FPDF_PAGEOBJECT pPageObject) { SAL_WARN("sd.filter", "Got page object IMAGE"); - std::unique_ptr<void, FPDFBitmapDeleter> bitmap(FPDFImageObj_GetBitmap(pPageObject)); + std::unique_ptr<void, FPDFBitmapDeleter> bitmap(FPDFImageObj_GetBitmapBgra(pPageObject)); if (!bitmap) { SAL_WARN("sd.filter", "Failed to get IMAGE"); @@ -1199,7 +1199,7 @@ void ImpSdrPdfImport::ImportImage(FPDF_PAGEOBJECT pPageObject) SAL_WARN("sd.filter", "Got IMAGE width: " << nWidth << ", height: " << nHeight << ", stride: " << nStride << ", format: BGRx"); - ReadRawDIB(aBitmap, pBuf, ScanlineFormat::N32BitTcBgra, nHeight, nStride); + ReadRawDIB(aBitmap, pBuf, ScanlineFormat::N32BitTcRgba, nHeight, nStride); break; case FPDFBitmap_BGRA: SAL_WARN("sd.filter", "Got IMAGE width: " << nWidth << ", height: " << nHeight |