Newer
Older
Import / applications / MakePDF / 3rdParty / libharu / pr-patches / 0001-Fix-compression-of-PNG-image-s-transparency-mask.patch
From 309ba7789c2164a0b1ae9bf10d684927e427c282 Mon Sep 17 00:00:00 2001
From: dbakanov <dbakanov@gehtsoft.com>
Date: Mon, 15 Jul 2019 17:08:34 +0600
Subject: [PATCH] - Fix compression of PNG image's transparency mask

---
 include/hpdf_image.h | 3 ++-
 src/hpdf_doc_png.c   | 5 +----
 src/hpdf_image_png.c | 8 +++++++-
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/include/hpdf_image.h b/include/hpdf_image.h
index 4e1aa6c..c8f9967 100644
--- a/include/hpdf_image.h
+++ b/include/hpdf_image.h
@@ -41,7 +41,8 @@ HPDF_Image
 HPDF_Image_LoadPngImage  (HPDF_MMgr        mmgr,
                           HPDF_Stream      png_data,
                           HPDF_Xref        xref,
-                          HPDF_BOOL        delayed_loading);
+                          HPDF_BOOL        delayed_loading,
+                          HPDF_BOOL        compression);
 
 #endif
 
diff --git a/src/hpdf_doc_png.c b/src/hpdf_doc_png.c
index bad87c6..769afce 100644
--- a/src/hpdf_doc_png.c
+++ b/src/hpdf_doc_png.c
@@ -159,10 +159,7 @@ LoadPngImageFromStream (HPDF_Doc      pdf,
     HPDF_PTRACE ((" HPDF_LoadPngImageFromStream\n"));
 
     image = HPDF_Image_LoadPngImage (pdf->mmgr, imagedata, pdf->xref,
-                delayed_loading);
-
-    if (image && (pdf->compression_mode & HPDF_COMP_IMAGE))
-        image->filter = HPDF_STREAM_FILTER_FLATE_DECODE;
+                delayed_loading, (pdf->compression_mode & HPDF_COMP_IMAGE) != 0);
 
     return image;
 }
diff --git a/src/hpdf_image_png.c b/src/hpdf_image_png.c
index 3f20a77..c02ca19 100644
--- a/src/hpdf_image_png.c
+++ b/src/hpdf_image_png.c
@@ -380,7 +380,8 @@ HPDF_Image
 HPDF_Image_LoadPngImage  (HPDF_MMgr        mmgr,
                           HPDF_Stream      png_data,
                           HPDF_Xref        xref,
-                          HPDF_BOOL        delayed_loading)
+                          HPDF_BOOL        delayed_loading,
+                          HPDF_BOOL        compression)
 {
     HPDF_STATUS ret;
     HPDF_Dict image;
@@ -401,6 +402,9 @@ HPDF_Image_LoadPngImage  (HPDF_MMgr        mmgr,
     if (!image)
         return NULL;
 
+    if (compression != 0)
+        image->filter = HPDF_STREAM_FILTER_FLATE_DECODE;
+
     image->header.obj_class |= HPDF_OSUBCLASS_XOBJECT;
     ret += HPDF_Dict_AddName (image, "Type", "XObject");
     ret += HPDF_Dict_AddName (image, "Subtype", "Image");
@@ -485,6 +489,8 @@ LoadPngData  (HPDF_Dict     image,
 			goto Exit;
 		}
 
+        smask->filter = image->filter;
+
 		smask->header.obj_class |= HPDF_OSUBCLASS_XOBJECT;
 		ret = HPDF_Dict_AddName (smask, "Type", "XObject");
 		ret += HPDF_Dict_AddName (smask, "Subtype", "Image");
-- 
2.21.1 (Apple Git-122.3)