diff options
-rw-r--r-- | github.mk | 4 | ||||
-rw-r--r-- | src/libharu-1-fixes.patch | 406 | ||||
-rw-r--r-- | src/libharu.mk | 38 |
3 files changed, 18 insertions, 430 deletions
@@ -111,10 +111,10 @@ endef # called with owner/repo, tag prefix, tag suffix, filter-out, version sep define MXE_GET_GH_TAG $(MXE_GET_GH_TAGS) \ - | $(if $(4),grep -v '$(strip $(4))') \ + | $(if $(4),grep -vi '$(strip $(4))') \ | $(SED) -n 's,^$(strip $(2))\([^"]*\)$(strip $(3))$$,\1,p' \ | tr '$(strip $(5))' '.' \ - | $(SORT) -V + | $(SORT) -V \ | tail -1 endef diff --git a/src/libharu-1-fixes.patch b/src/libharu-1-fixes.patch deleted file mode 100644 index a27ebdc..0000000 --- a/src/libharu-1-fixes.patch +++ /dev/null @@ -1,406 +0,0 @@ -# This file is part of MXE. See LICENSE.md for licensing information. - -From 531d2a9af8c51ad8badc32bc9ba43bb3b87b0e9f Mon Sep 17 00:00:00 2001 -From: Antony Dovgal <tony@daylessday.org> -Date: Mon, 10 Jan 2011 01:22:14 +0300 -Subject: [PATCH] fix build with libpng 1.5.0 (reported by Tamas Tevesz) - (cherry picked from commit - e5bf8b01f6c3d5e3fe0e26ac5345e0da10c03934) - -Conflicts: - - CHANGES ---- - src/hpdf_image_png.c | 109 +++++++++++++++++++++++++++----------------------- - 1 files changed, 59 insertions(+), 50 deletions(-) - -diff --git a/src/hpdf_image_png.c b/src/hpdf_image_png.c -index b8f831e..6057424 100644 ---- a/src/hpdf_image_png.c -+++ b/src/hpdf_image_png.c -@@ -109,14 +109,15 @@ ReadPngData_Interlaced (HPDF_Dict image, - png_infop info_ptr) - { - png_uint_32 len = png_get_rowbytes(png_ptr, info_ptr); -+ png_uint_32 height = png_get_image_height(png_ptr, info_ptr); - png_bytep* row_pointers = HPDF_GetMem (image->mmgr, -- info_ptr->height * sizeof (png_bytep)); -+ height * sizeof (png_bytep)); - - if (row_pointers) { - HPDF_UINT i; - -- HPDF_MemSet (row_pointers, 0, info_ptr->height * sizeof (png_bytep)); -- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { -+ HPDF_MemSet (row_pointers, 0, height * sizeof (png_bytep)); -+ for (i = 0; i < (HPDF_UINT)height; i++) { - row_pointers[i] = HPDF_GetMem (image->mmgr, len); - - if (image->error->error_no != HPDF_OK) -@@ -126,7 +127,7 @@ ReadPngData_Interlaced (HPDF_Dict image, - if (image->error->error_no == HPDF_OK) { - png_read_image(png_ptr, row_pointers); - if (image->error->error_no == HPDF_OK) { /* add this line */ -- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { -+ for (i = 0; i < (HPDF_UINT)height; i++) { - if (HPDF_Stream_Write (image->stream, row_pointers[i], len) != - HPDF_OK) - break; -@@ -135,7 +136,7 @@ ReadPngData_Interlaced (HPDF_Dict image, - } - - /* clean up */ -- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { -+ for (i = 0; i < (HPDF_UINT)height; i++) { - HPDF_FreeMem (image->mmgr, row_pointers[i]); - } - -@@ -151,12 +152,13 @@ ReadPngData (HPDF_Dict image, - png_infop info_ptr) - { - png_uint_32 len = png_get_rowbytes(png_ptr, info_ptr); -+ png_uint_32 height = png_get_image_height(png_ptr, info_ptr); - png_bytep buf_ptr = HPDF_GetMem (image->mmgr, len); - - if (buf_ptr) { - HPDF_UINT i; - -- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { -+ for (i = 0; i < (HPDF_UINT)height; i++) { - png_read_rows(png_ptr, (png_byte**)&buf_ptr, NULL, 1); - if (image->error->error_no != HPDF_OK) - break; -@@ -182,14 +184,16 @@ ReadTransparentPaletteData (HPDF_Dict image, - HPDF_STATUS ret = HPDF_OK; - HPDF_UINT i, j; - png_bytep *row_ptr; -+ png_uint_32 height = png_get_image_height(png_ptr, info_ptr); -+ png_uint_32 width = png_get_image_width(png_ptr, info_ptr); - -- row_ptr = HPDF_GetMem (image->mmgr, info_ptr->height * sizeof(png_bytep)); -+ row_ptr = HPDF_GetMem (image->mmgr, height * sizeof(png_bytep)); - if (!row_ptr) { - return HPDF_FAILD_TO_ALLOC_MEM; - } else { - png_uint_32 len = png_get_rowbytes(png_ptr, info_ptr); - -- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { -+ for (i = 0; i < (HPDF_UINT)height; i++) { - row_ptr[i] = HPDF_GetMem(image->mmgr, len); - if (!row_ptr[i]) { - for (; i >= 0; i--) { -@@ -207,19 +211,19 @@ ReadTransparentPaletteData (HPDF_Dict image, - goto Error; - } - -- 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; -+ for (j = 0; j < height; j++) { -+ for (i = 0; i < width; i++) { -+ smask_data[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) { -+ if (HPDF_Stream_Write (image->stream, row_ptr[j], width) != HPDF_OK) { - ret = HPDF_FILE_IO_ERROR; - goto Error; - } - } - - Error: -- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { -+ for (i = 0; i < (HPDF_UINT)height; i++) { - HPDF_FreeMem (image->mmgr, row_ptr[i]); - } - -@@ -238,6 +242,8 @@ ReadTransparentPngData (HPDF_Dict image, - HPDF_UINT i, j; - png_bytep *row_ptr, row; - png_byte color_type; -+ png_uint_32 height = png_get_image_height(png_ptr, info_ptr); -+ png_uint_32 width = png_get_image_width(png_ptr, info_ptr); - - color_type = png_get_color_type(png_ptr, info_ptr); - -@@ -245,13 +251,13 @@ ReadTransparentPngData (HPDF_Dict image, - return HPDF_INVALID_PNG_IMAGE; - } - -- row_ptr = HPDF_GetMem (image->mmgr, info_ptr->height * sizeof(png_bytep)); -+ row_ptr = HPDF_GetMem (image->mmgr, height * sizeof(png_bytep)); - if (!row_ptr) { - return HPDF_FAILD_TO_ALLOC_MEM; - } else { - png_uint_32 len = png_get_rowbytes(png_ptr, info_ptr); - -- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { -+ for (i = 0; i < (HPDF_UINT)height; i++) { - row_ptr[i] = HPDF_GetMem(image->mmgr, len); - if (!row_ptr[i]) { - for (; i >= 0; i--) { -@@ -271,12 +277,12 @@ ReadTransparentPngData (HPDF_Dict image, - - switch (color_type) { - case PNG_COLOR_TYPE_RGB_ALPHA: -- 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_len = 3 * width * sizeof(png_byte); -+ for (j = 0; j < height; j++) { -+ for (i = 0; i < 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]; -+ smask_data[width * j + i] = row[4 * i + 3]; - } - - if (HPDF_Stream_Write (image->stream, row, row_len) != HPDF_OK) { -@@ -286,12 +292,12 @@ ReadTransparentPngData (HPDF_Dict image, - } - break; - case PNG_COLOR_TYPE_GRAY_ALPHA: -- 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_len = width * sizeof(png_byte); -+ for (j = 0; j < height; j++) { -+ for (i = 0; i < width; i++) { - row = row_ptr[j]; - row[i] = row[2 * i]; -- smask_data[info_ptr->width * j + i] = row[2 * i + 1]; -+ smask_data[width * j + i] = row[2 * i + 1]; - } - - if (HPDF_Stream_Write (image->stream, row, row_len) != HPDF_OK) { -@@ -306,7 +312,7 @@ ReadTransparentPngData (HPDF_Dict image, - } - - Error: -- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { -+ for (i = 0; i < (HPDF_UINT)height; i++) { - HPDF_FreeMem (image->mmgr, row_ptr[i]); - } - -@@ -415,7 +421,8 @@ LoadPngData (HPDF_Dict image, - - { - HPDF_STATUS ret = HPDF_OK; -- -+ png_uint_32 width, height; -+ int bit_depth, color_type; - png_structp png_ptr = NULL; - png_infop info_ptr = NULL; - -@@ -447,8 +454,10 @@ LoadPngData (HPDF_Dict image, - goto Exit; - } - -+ png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, NULL, NULL, NULL); -+ - /* 16bit images are not supported. */ -- if (info_ptr->bit_depth == 16) { -+ if (bit_depth == 16) { - png_set_strip_16(png_ptr); - } - -@@ -458,7 +467,7 @@ LoadPngData (HPDF_Dict image, - } - - /* check palette-based images for transparent areas and load them immediately if found */ -- if (xref && PNG_COLOR_TYPE_PALETTE & info_ptr->color_type) { -+ if (xref && PNG_COLOR_TYPE_PALETTE & color_type) { - png_bytep trans; - int num_trans; - HPDF_Dict smask; -@@ -478,10 +487,10 @@ 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"); -- 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_AddNumber (smask, "Width", (HPDF_UINT)width); -+ ret += HPDF_Dict_AddNumber (smask, "Height", (HPDF_UINT)height); - ret += HPDF_Dict_AddName (smask, "ColorSpace", "DeviceGray"); -- ret += HPDF_Dict_AddNumber (smask, "BitsPerComponent", (HPDF_UINT)info_ptr->bit_depth); -+ ret += HPDF_Dict_AddNumber (smask, "BitsPerComponent", (HPDF_UINT)bit_depth); - - if (ret != HPDF_OK) { - HPDF_Dict_Free(smask); -@@ -489,7 +498,7 @@ LoadPngData (HPDF_Dict image, - goto Exit; - } - -- smask_data = HPDF_GetMem(image->mmgr, info_ptr->width * info_ptr->height); -+ smask_data = HPDF_GetMem(image->mmgr, width * height); - if (!smask_data) { - HPDF_Dict_Free(smask); - ret = HPDF_FAILD_TO_ALLOC_MEM; -@@ -503,7 +512,7 @@ LoadPngData (HPDF_Dict image, - goto Exit; - } - -- if (HPDF_Stream_Write(smask->stream, smask_data, info_ptr->width * info_ptr->height) != HPDF_OK) { -+ if (HPDF_Stream_Write(smask->stream, smask_data, width * height) != HPDF_OK) { - HPDF_FreeMem(image->mmgr, smask_data); - HPDF_Dict_Free(smask); - ret = HPDF_FILE_IO_ERROR; -@@ -513,9 +522,9 @@ LoadPngData (HPDF_Dict image, - - - ret += CreatePallet(image, png_ptr, info_ptr); -- 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); -+ ret += HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)width); -+ ret += HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)height); -+ ret += HPDF_Dict_AddNumber (image, "BitsPerComponent", (HPDF_UINT)bit_depth); - ret += HPDF_Dict_Add (image, "SMask", smask); - - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); -@@ -526,7 +535,7 @@ 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 (xref && PNG_COLOR_MASK_ALPHA & info_ptr->color_type) { -+ if (xref && PNG_COLOR_MASK_ALPHA & color_type) { - HPDF_Dict smask; - png_bytep smask_data; - -@@ -539,10 +548,10 @@ 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"); -- 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_AddNumber (smask, "Width", (HPDF_UINT)width); -+ ret += HPDF_Dict_AddNumber (smask, "Height", (HPDF_UINT)height); - ret += HPDF_Dict_AddName (smask, "ColorSpace", "DeviceGray"); -- ret += HPDF_Dict_AddNumber (smask, "BitsPerComponent", (HPDF_UINT)info_ptr->bit_depth); -+ ret += HPDF_Dict_AddNumber (smask, "BitsPerComponent", (HPDF_UINT)bit_depth); - - if (ret != HPDF_OK) { - HPDF_Dict_Free(smask); -@@ -550,7 +559,7 @@ no_transparent_color_in_palette: - goto Exit; - } - -- smask_data = HPDF_GetMem(image->mmgr, info_ptr->width * info_ptr->height); -+ smask_data = HPDF_GetMem(image->mmgr, width * height); - if (!smask_data) { - HPDF_Dict_Free(smask); - ret = HPDF_FAILD_TO_ALLOC_MEM; -@@ -564,7 +573,7 @@ no_transparent_color_in_palette: - goto Exit; - } - -- if (HPDF_Stream_Write(smask->stream, smask_data, info_ptr->width * info_ptr->height) != HPDF_OK) { -+ if (HPDF_Stream_Write(smask->stream, smask_data, width * height) != HPDF_OK) { - HPDF_FreeMem(image->mmgr, smask_data); - HPDF_Dict_Free(smask); - ret = HPDF_FILE_IO_ERROR; -@@ -572,14 +581,14 @@ no_transparent_color_in_palette: - } - HPDF_FreeMem(image->mmgr, smask_data); - -- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { -+ if (color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { - ret += HPDF_Dict_AddName (image, "ColorSpace", "DeviceGray"); - } else { - ret += HPDF_Dict_AddName (image, "ColorSpace", "DeviceRGB"); - } -- 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); -+ ret += HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)width); -+ ret += HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)height); -+ ret += HPDF_Dict_AddNumber (image, "BitsPerComponent", (HPDF_UINT)bit_depth); - ret += HPDF_Dict_Add (image, "SMask", smask); - - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); -@@ -589,9 +598,9 @@ no_transparent_color_in_palette: - /* if the image has color palette, copy the pallet of the image to - * create color map. - */ -- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) -+ if (color_type == PNG_COLOR_TYPE_PALETTE) - ret = CreatePallet(image, png_ptr, info_ptr); -- else if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY) -+ else if (color_type == PNG_COLOR_TYPE_GRAY) - ret = HPDF_Dict_AddName (image, "ColorSpace", "DeviceGray"); - else - ret = HPDF_Dict_AddName (image, "ColorSpace", "DeviceRGB"); -@@ -617,16 +626,16 @@ no_transparent_color_in_palette: - } - - /* setting the info of the image. */ -- if (HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)info_ptr->width) -+ if (HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)width) - != HPDF_OK) - goto Exit; - -- if (HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)info_ptr->height) -+ if (HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)height) - != HPDF_OK) - goto Exit; - - if (HPDF_Dict_AddNumber (image, "BitsPerComponent", -- (HPDF_UINT)info_ptr->bit_depth) != HPDF_OK) -+ (HPDF_UINT)bit_depth) != HPDF_OK) - goto Exit; - - /* clean up */ --- -1.7.8.3 - -Wt requires the following patch for libHaru to render arcs correctly. -This patch has been tested against libhar 2.1.0 and 2.2.0. -(see http://redmine.webtoolkit.eu/projects/wt/wiki/LibHaru) - -diff -ur a/src/hpdf_page_operator.c b/src/hpdf_page_operator.c ---- a/src/hpdf_page_operator.c 2010-02-01 07:26:13.000000000 -0300 -+++ b/src/hpdf_page_operator.c 2012-03-10 18:12:41.347028623 -0300 -@@ -2192,7 +2192,7 @@ - - HPDF_PTRACE ((" HPDF_Page_Arc\n")); - -- if (ang1 >= ang2 || (ang2 - ang1) >= 360) -+ if (fabs(ang2 - ang1) >= 360) - HPDF_RaiseError (page->error, HPDF_PAGE_OUT_OF_RANGE, 0); - - if (ret != HPDF_OK) -@@ -2205,10 +2205,10 @@ - - - for (;;) { -- if (ang2 - ang1 <= 90) -+ if (fabs(ang2 - ang1) <= 90) - return InternalArc (page, x, y, ray, ang1, ang2, cont_flg); - else { -- HPDF_REAL tmp_ang = ang1 + 90; -+ HPDF_REAL tmp_ang = (ang2 > ang1 ? ang1 + 90 : ang1 - 90); - - if ((ret = InternalArc (page, x, y, ray, ang1, tmp_ang, cont_flg)) - != HPDF_OK) -@@ -2217,7 +2217,7 @@ - ang1 = tmp_ang; - } - -- if (ang1 >= ang2) -+ if (fabs(ang1 - ang2) < 0.1) - break; - - cont_flg = HPDF_TRUE; -@@ -2280,7 +2280,11 @@ - pbuf = HPDF_FToA (pbuf, (HPDF_REAL)x0, eptr); - *pbuf++ = ' '; - pbuf = HPDF_FToA (pbuf, (HPDF_REAL)y0, eptr); -- pbuf = (char *)HPDF_StrCpy (pbuf, " m\012", eptr); -+ -+ if (attr->gmode == HPDF_GMODE_PATH_OBJECT) -+ pbuf = (char *)HPDF_StrCpy (pbuf, " l\012", eptr); -+ else -+ pbuf = (char *)HPDF_StrCpy (pbuf, " m\012", eptr); - } - - pbuf = HPDF_FToA (pbuf, (HPDF_REAL)x1, eptr); diff --git a/src/libharu.mk b/src/libharu.mk index a405240..63d55a4 100644 --- a/src/libharu.mk +++ b/src/libharu.mk @@ -3,29 +3,23 @@ PKG := libharu $(PKG)_WEBSITE := http://libharu.org/ $(PKG)_IGNORE := -$(PKG)_VERSION := 2.2.1 -$(PKG)_CHECKSUM := 45fd57044042c0e290ad0f11fc19eeb31b50c4b9edadf9d89dd5a7d9ae4865a7 -$(PKG)_SUBDIR := libharu-$($(PKG)_VERSION) -$(PKG)_FILE := libharu-$($(PKG)_VERSION).tar.gz -$(PKG)_URL := http://libharu.org/files/$($(PKG)_FILE) +$(PKG)_VERSION := 2.3.0 +$(PKG)_CHECKSUM := 8f9e68cc5d5f7d53d1bc61a1ed876add1faf4f91070dbc360d8b259f46d9a4d2 +$(PKG)_GH_CONF := libharu/libharu,RELEASE_,,,_ $(PKG)_DEPS := gcc libpng zlib -define $(PKG)_UPDATE - $(WGET) -q -O- 'https://github.com/libharu/libharu/tags' | \ - $(SED) -n 's,.*/archive/RELEASE_\([0-9][^"]*\)\.tar.*,\1,p' | \ - $(SED) 's,_,.,g' | \ - grep -v 'RC' | \ - head -1 -endef - define $(PKG)_BUILD - cd '$(1)' && ./configure \ - --host='$(TARGET)' \ - --prefix='$(PREFIX)/$(TARGET)' \ - --disable-shared \ - --with-zlib='$(PREFIX)/$(TARGET)' \ - --with-png='$(PREFIX)/$(TARGET)' - $(MAKE) -C '$(1)' -j '$(JOBS)' install -endef + cd '$(BUILD_DIR)' && '$(TARGET)-cmake' '$(SOURCE_DIR)' \ + -DCMAKE_C_FLAGS=$(if $(BUILD_STATIC),,-DHPDF_DLL_MAKE) \ + -DLIBHPDF_SHARED=$(CMAKE_SHARED_BOOL) \ + -DLIBHPDF_STATIC=$(CMAKE_STATIC_BOOL) \ + -DDEVPAK=ON + $(MAKE) -C '$(BUILD_DIR)' -j '$(JOBS)' VERBOSE=1 + $(MAKE) -C '$(BUILD_DIR)' -j 1 install VERBOSE=1 -$(PKG)_BUILD_SHARED = + $(TARGET)-gcc -o $(PREFIX)/$(TARGET)/bin/test-$(PKG).exe \ + $(if $(BUILD_STATIC),,-DHPDF_DLL) \ + '$(1)/demo/slide_show_demo.c' \ + $(if $(BUILD_STATIC),'-lhpdfs','-lhpdf') \ + `$(TARGET)-pkg-config libpng zlib --libs` +endef |