diff options
author | Remi Collet <fedora@famillecollet.com> | 2014-08-26 08:25:50 +0200 |
---|---|---|
committer | Remi Collet <fedora@famillecollet.com> | 2014-08-26 08:25:50 +0200 |
commit | dca23d99ad06ef48fc99a27b406a7a4eca4ede03 (patch) | |
tree | bae3b5d11ce83c80db7f13350e2345476bd9d72a /libharu-2.2.1-png15.patch | |
parent | c515a2ae3e667d85670cd50f38e3f85bed97ecc1 (diff) |
Diffstat (limited to 'libharu-2.2.1-png15.patch')
-rw-r--r-- | libharu-2.2.1-png15.patch | 403 |
1 files changed, 403 insertions, 0 deletions
diff --git a/libharu-2.2.1-png15.patch b/libharu-2.2.1-png15.patch new file mode 100644 index 0000000..993d774 --- /dev/null +++ b/libharu-2.2.1-png15.patch @@ -0,0 +1,403 @@ +diff -up libharu-2.2.1/src/hpdf_image_png.c.png15 libharu-2.2.1/src/hpdf_image_png.c +--- libharu-2.2.1/src/hpdf_image_png.c.png15 2012-07-31 15:15:22.369386483 -0400 ++++ libharu-2.2.1/src/hpdf_image_png.c 2012-07-31 15:54:23.645540431 -0400 +@@ -110,13 +110,22 @@ ReadPngData_Interlaced (HPDF_Dict im + { + png_uint_32 len = png_get_rowbytes(png_ptr, info_ptr); + png_bytep* row_pointers = HPDF_GetMem (image->mmgr, ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ png_get_image_height(png_ptr, info_ptr) * sizeof (png_bytep)); ++#else + info_ptr->height * sizeof (png_bytep)); ++#endif + + if (row_pointers) { + HPDF_UINT i; + ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ HPDF_MemSet (row_pointers, 0, png_get_image_height(png_ptr, info_ptr) * sizeof (png_bytep)); ++ for (i = 0; i < (HPDF_UINT)(png_get_image_height(png_ptr, info_ptr)); i++) { ++#else + HPDF_MemSet (row_pointers, 0, info_ptr->height * sizeof (png_bytep)); + for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { ++#endif + row_pointers[i] = HPDF_GetMem (image->mmgr, len); + + if (image->error->error_no != HPDF_OK) +@@ -126,7 +135,11 @@ ReadPngData_Interlaced (HPDF_Dict im + if (image->error->error_no == HPDF_OK) { + png_read_image(png_ptr, row_pointers); + if (image->error->error_no == HPDF_OK) { /* add this line */ ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ for (i = 0; i < (HPDF_UINT)(png_get_image_height(png_ptr, info_ptr)); i++) { ++#else + for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { ++#endif + if (HPDF_Stream_Write (image->stream, row_pointers[i], len) != + HPDF_OK) + break; +@@ -135,7 +148,11 @@ ReadPngData_Interlaced (HPDF_Dict im + } + + /* clean up */ ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ for (i = 0; i < (HPDF_UINT)(png_get_image_height(png_ptr, info_ptr)); i++) { ++#else + for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { ++#endif + HPDF_FreeMem (image->mmgr, row_pointers[i]); + } + +@@ -156,7 +173,11 @@ ReadPngData (HPDF_Dict image, + if (buf_ptr) { + HPDF_UINT i; + ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ for (i = 0; i < (HPDF_UINT)(png_get_image_height(png_ptr, info_ptr)); i++) { ++#else + for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { ++#endif + png_read_rows(png_ptr, (png_byte**)&buf_ptr, NULL, 1); + if (image->error->error_no != HPDF_OK) + break; +@@ -183,13 +204,21 @@ ReadTransparentPaletteData (HPDF_Dict + HPDF_UINT i, j; + png_bytep *row_ptr; + ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ row_ptr = HPDF_GetMem (image->mmgr, png_get_image_height(png_ptr, info_ptr) * sizeof(png_bytep)); ++#else + row_ptr = HPDF_GetMem (image->mmgr, info_ptr->height * sizeof(png_bytep)); ++#endif + if (!row_ptr) { + return HPDF_FAILD_TO_ALLOC_MEM; + } else { + png_uint_32 len = png_get_rowbytes(png_ptr, info_ptr); + ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ for (i = 0; i < (HPDF_UINT)(png_get_image_height(png_ptr, info_ptr)); i++) { ++#else + for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { ++#endif + row_ptr[i] = HPDF_GetMem(image->mmgr, len); + if (!row_ptr[i]) { + for (; i >= 0; i--) { +@@ -207,19 +236,32 @@ ReadTransparentPaletteData (HPDF_Dict + goto Error; + } + ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ for (j = 0; j < png_get_image_height(png_ptr, info_ptr); j++) { ++ for (i = 0; i < png_get_image_width(png_ptr, info_ptr); i++) { ++ smask_data[png_get_image_width(png_ptr, info_ptr) * j + i] = (row_ptr[j][i] < num_trans) ? trans[row_ptr[j][i]] : 0xFF; ++ } ++ ++ if (HPDF_Stream_Write (image->stream, row_ptr[j], png_get_image_width(png_ptr, info_ptr)) != HPDF_OK) { ++#else + for (j = 0; j < info_ptr->height; j++) { + for (i = 0; i < info_ptr->width; i++) { + smask_data[info_ptr->width * j + i] = (row_ptr[j][i] < num_trans) ? trans[row_ptr[j][i]] : 0xFF; + } + + if (HPDF_Stream_Write (image->stream, row_ptr[j], info_ptr->width) != HPDF_OK) { ++#endif + ret = HPDF_FILE_IO_ERROR; + goto Error; + } + } + + Error: ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ for (i = 0; i < (HPDF_UINT)(png_get_image_height(png_ptr, info_ptr)); i++) { ++#else + for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { ++#endif + HPDF_FreeMem (image->mmgr, row_ptr[i]); + } + +@@ -245,13 +287,21 @@ ReadTransparentPngData (HPDF_Dict im + return HPDF_INVALID_PNG_IMAGE; + } + ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ row_ptr = HPDF_GetMem (image->mmgr, png_get_image_height(png_ptr, info_ptr) * sizeof(png_bytep)); ++#else + row_ptr = HPDF_GetMem (image->mmgr, info_ptr->height * sizeof(png_bytep)); ++#endif + if (!row_ptr) { + return HPDF_FAILD_TO_ALLOC_MEM; + } else { + png_uint_32 len = png_get_rowbytes(png_ptr, info_ptr); + ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ for (i = 0; i < (HPDF_UINT)(png_get_image_height(png_ptr, info_ptr)); i++) { ++#else + for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { ++#endif + row_ptr[i] = HPDF_GetMem(image->mmgr, len); + if (!row_ptr[i]) { + for (; i >= 0; i--) { +@@ -271,12 +321,21 @@ ReadTransparentPngData (HPDF_Dict im + + switch (color_type) { + case PNG_COLOR_TYPE_RGB_ALPHA: ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ row_len = 3 * png_get_image_width(png_ptr, info_ptr) * sizeof(png_byte); ++ for (j = 0; j < png_get_image_height(png_ptr, info_ptr); j++) { ++ for (i = 0; i < png_get_image_width(png_ptr, info_ptr); i++) { ++ row = row_ptr[j]; ++ memmove(row + (3 * i), row + (4*i), 3); ++ smask_data[png_get_image_width(png_ptr, info_ptr) * j + i] = row[4 * i + 3]; ++#else + row_len = 3 * info_ptr->width * sizeof(png_byte); + for (j = 0; j < info_ptr->height; j++) { + for (i = 0; i < info_ptr->width; i++) { + row = row_ptr[j]; + memmove(row + (3 * i), row + (4*i), 3); + smask_data[info_ptr->width * j + i] = row[4 * i + 3]; ++#endif + } + + if (HPDF_Stream_Write (image->stream, row, row_len) != HPDF_OK) { +@@ -286,12 +345,21 @@ ReadTransparentPngData (HPDF_Dict im + } + break; + case PNG_COLOR_TYPE_GRAY_ALPHA: ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ row_len = png_get_image_width(png_ptr, info_ptr) * sizeof(png_byte); ++ for (j = 0; j < png_get_image_height(png_ptr, info_ptr); j++) { ++ for (i = 0; i < png_get_image_width(png_ptr, info_ptr); i++) { ++ row = row_ptr[j]; ++ row[i] = row[2 * i]; ++ smask_data[png_get_image_width(png_ptr, info_ptr) * j + i] = row[2 * i + 1]; ++#else + row_len = info_ptr->width * sizeof(png_byte); + for (j = 0; j < info_ptr->height; j++) { + for (i = 0; i < info_ptr->width; i++) { + row = row_ptr[j]; + row[i] = row[2 * i]; + smask_data[info_ptr->width * j + i] = row[2 * i + 1]; ++#endif + } + + if (HPDF_Stream_Write (image->stream, row, row_len) != HPDF_OK) { +@@ -306,7 +374,11 @@ ReadTransparentPngData (HPDF_Dict im + } + + Error: ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ for (i = 0; i < (HPDF_UINT)(png_get_image_height(png_ptr, info_ptr)); i++) { ++#else + for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { ++#endif + HPDF_FreeMem (image->mmgr, row_ptr[i]); + } + +@@ -448,7 +520,11 @@ LoadPngData (HPDF_Dict image, + } + + /* 16bit images are not supported. */ ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ if (png_get_bit_depth(png_ptr, info_ptr) == 16) { ++#else + if (info_ptr->bit_depth == 16) { ++#endif + png_set_strip_16(png_ptr); + } + +@@ -458,7 +534,11 @@ LoadPngData (HPDF_Dict image, + } + + /* check palette-based images for transparent areas and load them immediately if found */ ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ if (xref && PNG_COLOR_TYPE_PALETTE & png_get_color_type(png_ptr, info_ptr)) { ++#else + if (xref && PNG_COLOR_TYPE_PALETTE & info_ptr->color_type) { ++#endif + png_bytep trans; + int num_trans; + HPDF_Dict smask; +@@ -478,10 +558,20 @@ LoadPngData (HPDF_Dict image, + smask->header.obj_class |= HPDF_OSUBCLASS_XOBJECT; + ret = HPDF_Dict_AddName (smask, "Type", "XObject"); + ret += HPDF_Dict_AddName (smask, "Subtype", "Image"); ++ ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ ret += HPDF_Dict_AddNumber (smask, "Width", (HPDF_UINT)png_get_image_width(png_ptr, info_ptr)); ++ ret += HPDF_Dict_AddNumber (smask, "Height", (HPDF_UINT)png_get_image_height(png_ptr, info_ptr)); ++#else + ret += HPDF_Dict_AddNumber (smask, "Width", (HPDF_UINT)info_ptr->width); + ret += HPDF_Dict_AddNumber (smask, "Height", (HPDF_UINT)info_ptr->height); ++#endif + ret += HPDF_Dict_AddName (smask, "ColorSpace", "DeviceGray"); ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ ret += HPDF_Dict_AddNumber (smask, "BitsPerComponent", (HPDF_UINT)png_get_bit_depth(png_ptr, info_ptr)); ++#else + ret += HPDF_Dict_AddNumber (smask, "BitsPerComponent", (HPDF_UINT)info_ptr->bit_depth); ++#endif + + if (ret != HPDF_OK) { + HPDF_Dict_Free(smask); +@@ -489,7 +579,11 @@ LoadPngData (HPDF_Dict image, + goto Exit; + } + ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ smask_data = HPDF_GetMem(image->mmgr, png_get_image_width(png_ptr, info_ptr) * png_get_image_height(png_ptr, info_ptr)); ++#else + smask_data = HPDF_GetMem(image->mmgr, info_ptr->width * info_ptr->height); ++#endif + if (!smask_data) { + HPDF_Dict_Free(smask); + ret = HPDF_FAILD_TO_ALLOC_MEM; +@@ -503,7 +597,11 @@ LoadPngData (HPDF_Dict image, + goto Exit; + } + ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ if (HPDF_Stream_Write(smask->stream, smask_data, png_get_image_width(png_ptr, info_ptr) * png_get_image_height(png_ptr, info_ptr)) != HPDF_OK) { ++#else + if (HPDF_Stream_Write(smask->stream, smask_data, info_ptr->width * info_ptr->height) != HPDF_OK) { ++#endif + HPDF_FreeMem(image->mmgr, smask_data); + HPDF_Dict_Free(smask); + ret = HPDF_FILE_IO_ERROR; +@@ -513,9 +611,15 @@ LoadPngData (HPDF_Dict image, + + + ret += CreatePallet(image, png_ptr, info_ptr); ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ ret += HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)png_get_image_width(png_ptr, info_ptr)); ++ ret += HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)png_get_image_height(png_ptr, info_ptr)); ++ ret += HPDF_Dict_AddNumber (image, "BitsPerComponent", (HPDF_UINT)png_get_bit_depth(png_ptr, info_ptr)); ++#else + ret += HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)info_ptr->width); + ret += HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)info_ptr->height); + ret += HPDF_Dict_AddNumber (image, "BitsPerComponent", (HPDF_UINT)info_ptr->bit_depth); ++#endif + ret += HPDF_Dict_Add (image, "SMask", smask); + + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); +@@ -526,7 +630,11 @@ no_transparent_color_in_palette: + + /* read images with alpha channel right away + we have to do this because image transparent mask must be added to the Xref */ ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ if (xref && PNG_COLOR_MASK_ALPHA & png_get_color_type(png_ptr, info_ptr)) { ++#else + if (xref && PNG_COLOR_MASK_ALPHA & info_ptr->color_type) { ++#endif + HPDF_Dict smask; + png_bytep smask_data; + +@@ -539,10 +647,17 @@ no_transparent_color_in_palette: + smask->header.obj_class |= HPDF_OSUBCLASS_XOBJECT; + ret = HPDF_Dict_AddName (smask, "Type", "XObject"); + ret += HPDF_Dict_AddName (smask, "Subtype", "Image"); ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ ret += HPDF_Dict_AddNumber (smask, "Width", (HPDF_UINT)png_get_image_width(png_ptr, info_ptr)); ++ ret += HPDF_Dict_AddNumber (smask, "Height", (HPDF_UINT)png_get_image_height(png_ptr, info_ptr)); ++ ret += HPDF_Dict_AddName (smask, "ColorSpace", "DeviceGray"); ++ ret += HPDF_Dict_AddNumber (smask, "BitsPerComponent", (HPDF_UINT)png_get_bit_depth(png_ptr, info_ptr)); ++#else + ret += HPDF_Dict_AddNumber (smask, "Width", (HPDF_UINT)info_ptr->width); + ret += HPDF_Dict_AddNumber (smask, "Height", (HPDF_UINT)info_ptr->height); + ret += HPDF_Dict_AddName (smask, "ColorSpace", "DeviceGray"); + ret += HPDF_Dict_AddNumber (smask, "BitsPerComponent", (HPDF_UINT)info_ptr->bit_depth); ++#endif + + if (ret != HPDF_OK) { + HPDF_Dict_Free(smask); +@@ -550,7 +665,11 @@ no_transparent_color_in_palette: + goto Exit; + } + ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ smask_data = HPDF_GetMem(image->mmgr, png_get_image_width(png_ptr, info_ptr) * png_get_image_height(png_ptr, info_ptr)); ++#else + smask_data = HPDF_GetMem(image->mmgr, info_ptr->width * info_ptr->height); ++#endif + if (!smask_data) { + HPDF_Dict_Free(smask); + ret = HPDF_FAILD_TO_ALLOC_MEM; +@@ -564,7 +683,11 @@ no_transparent_color_in_palette: + goto Exit; + } + ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ if (HPDF_Stream_Write(smask->stream, smask_data, png_get_image_width(png_ptr, info_ptr) * png_get_image_height(png_ptr, info_ptr)) != HPDF_OK) { ++#else + if (HPDF_Stream_Write(smask->stream, smask_data, info_ptr->width * info_ptr->height) != HPDF_OK) { ++#endif + HPDF_FreeMem(image->mmgr, smask_data); + HPDF_Dict_Free(smask); + ret = HPDF_FILE_IO_ERROR; +@@ -572,14 +695,24 @@ no_transparent_color_in_palette: + } + HPDF_FreeMem(image->mmgr, smask_data); + ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY_ALPHA) { ++#else + if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { ++#endif + ret += HPDF_Dict_AddName (image, "ColorSpace", "DeviceGray"); + } else { + ret += HPDF_Dict_AddName (image, "ColorSpace", "DeviceRGB"); + } ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ ret += HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)png_get_image_width(png_ptr, info_ptr)); ++ ret += HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)png_get_image_height(png_ptr, info_ptr)); ++ ret += HPDF_Dict_AddNumber (image, "BitsPerComponent", (HPDF_UINT)png_get_bit_depth(png_ptr, info_ptr)); ++#else + ret += HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)info_ptr->width); + ret += HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)info_ptr->height); + ret += HPDF_Dict_AddNumber (image, "BitsPerComponent", (HPDF_UINT)info_ptr->bit_depth); ++#endif + ret += HPDF_Dict_Add (image, "SMask", smask); + + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); +@@ -589,9 +722,15 @@ no_transparent_color_in_palette: + /* if the image has color palette, copy the pallet of the image to + * create color map. + */ ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_PALETTE) ++ ret = CreatePallet(image, png_ptr, info_ptr); ++ else if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY) ++#else + if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) +- ret = CreatePallet(image, png_ptr, info_ptr); ++ ret = CreatePallet(image, png_ptr, info_ptr); + else if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY) ++#endif + ret = HPDF_Dict_AddName (image, "ColorSpace", "DeviceGray"); + else + ret = HPDF_Dict_AddName (image, "ColorSpace", "DeviceRGB"); +@@ -617,6 +756,18 @@ no_transparent_color_in_palette: + } + + /* setting the info of the image. */ ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ if (HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)png_get_image_width(png_ptr, info_ptr)) ++ != HPDF_OK) ++ goto Exit; ++ ++ if (HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)png_get_image_height(png_ptr, info_ptr)) ++ != HPDF_OK) ++ goto Exit; ++ ++ if (HPDF_Dict_AddNumber (image, "BitsPerComponent", ++ (HPDF_UINT)png_get_bit_depth(png_ptr, info_ptr)) != HPDF_OK) ++#else + if (HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)info_ptr->width) + != HPDF_OK) + goto Exit; +@@ -627,6 +778,7 @@ no_transparent_color_in_palette: + + if (HPDF_Dict_AddNumber (image, "BitsPerComponent", + (HPDF_UINT)info_ptr->bit_depth) != HPDF_OK) ++#endif + goto Exit; + + /* clean up */ |