New package: libgdiplus-2.10.9 (for mono).
This commit is contained in:
parent
ca2c19c156
commit
61e8ac629f
|
@ -1416,3 +1416,4 @@ libxcb-cursor.so.0 xcb-util-cursor-0.1.0_1
|
|||
libgldi.so.3 libgldi-3.3.1_1
|
||||
libevdev.so.1 libevdev-0.4_1
|
||||
libmutter-wayland.so.0 mutter-wayland-3.10.1_1
|
||||
libgdiplus.so.0 libgdiplus-2.10.9_1
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
tests/Makefile.in | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/tests/Makefile.in b/tests/Makefile.in
|
||||
index 97f5f4e..c02ca25 100644
|
||||
--- a/tests/Makefile.in
|
||||
+++ b/tests/Makefile.in
|
||||
@@ -228,7 +228,7 @@ DEPS = \
|
||||
$(top_builddir)/src/libgdiplus.la
|
||||
|
||||
LDADDS = \
|
||||
- $(top_builddir)/src/libgdiplus.la
|
||||
+ $(top_builddir)/src/libgdiplus.la -lX11 -lglib-2.0
|
||||
|
||||
testgdi_DEPENDENCIES = $(TEST_DEPS)
|
||||
testgdi_LDADD = $(LDADDS)
|
|
@ -0,0 +1,117 @@
|
|||
diff --git a/src/gifcodec.c b/src/gifcodec.c
|
||||
index 8dee0eb..564beed 100644
|
||||
--- a/src/gifcodec.c
|
||||
+++ b/src/gifcodec.c
|
||||
@@ -39,8 +39,10 @@ GUID gdip_gif_image_format_guid = {0xb96b3cb0U, 0x0728U, 0x11d3U, {0x9d, 0x7b, 0
|
||||
|
||||
#include "gifcodec.h"
|
||||
|
||||
+#if GIFLIB_MAJOR < 5
|
||||
/* giflib declares this incorrectly as EgifOpen */
|
||||
extern GifFileType *EGifOpen(void *userData, OutputFunc writeFunc);
|
||||
+#endif
|
||||
|
||||
/* Data structure used for callback */
|
||||
typedef struct
|
||||
@@ -105,7 +107,7 @@ gdip_gif_inputfunc (GifFileType *gif, GifByteType *data, int len)
|
||||
*/
|
||||
|
||||
static int
|
||||
-AddExtensionBlockMono(SavedImage *New, int Len, BYTE ExtData[])
|
||||
+AddExtensionBlockMono(SavedImage *New, int Len, int func, BYTE ExtData[])
|
||||
{
|
||||
ExtensionBlock *ep;
|
||||
|
||||
@@ -129,7 +131,7 @@ AddExtensionBlockMono(SavedImage *New, int Len, BYTE ExtData[])
|
||||
|
||||
if (ExtData) {
|
||||
memcpy(ep->Bytes, ExtData, Len);
|
||||
- ep->Function = New->Function;
|
||||
+ ep->Function = func;
|
||||
}
|
||||
|
||||
return (GIF_OK);
|
||||
@@ -232,20 +234,20 @@ DGifSlurpMono(GifFileType * GifFile, SavedImage *TrailingExtensions)
|
||||
}
|
||||
|
||||
case EXTENSION_RECORD_TYPE: {
|
||||
- if (DGifGetExtension(GifFile, &temp_save.Function, &ExtData) == GIF_ERROR) {
|
||||
+ int func;
|
||||
+ if (DGifGetExtension(GifFile, &func, &ExtData) == GIF_ERROR) {
|
||||
return (GIF_ERROR);
|
||||
}
|
||||
|
||||
while (ExtData != NULL) {
|
||||
/* Create an extension block with our data */
|
||||
- if (AddExtensionBlockMono(&temp_save, ExtData[0], &ExtData[1]) == GIF_ERROR) {
|
||||
+ if (AddExtensionBlockMono(&temp_save, func, ExtData[0], &ExtData[1]) == GIF_ERROR) {
|
||||
return (GIF_ERROR);
|
||||
}
|
||||
|
||||
if (DGifGetExtensionNext(GifFile, &ExtData) == GIF_ERROR) {
|
||||
return (GIF_ERROR);
|
||||
}
|
||||
- temp_save.Function = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -303,12 +305,19 @@ gdip_load_gif_image (void *stream, GpImage **image, BOOL from_file)
|
||||
result = NULL;
|
||||
loop_counter = FALSE;
|
||||
|
||||
+#if GIFLIB_MAJOR < 5
|
||||
if (from_file) {
|
||||
gif = DGifOpen(stream, &gdip_gif_fileinputfunc);
|
||||
} else {
|
||||
gif = DGifOpen (stream, &gdip_gif_inputfunc);
|
||||
}
|
||||
-
|
||||
+#else
|
||||
+ if (from_file)
|
||||
+ gif = DGifOpen(stream, &gdip_gif_fileinputfunc, NULL);
|
||||
+ else
|
||||
+ gif = DGifOpen(stream, &gdip_gif_inputfunc, NULL);
|
||||
+#endif
|
||||
+
|
||||
if (gif == NULL) {
|
||||
goto error;
|
||||
}
|
||||
@@ -660,11 +669,22 @@ gdip_save_gif_image (void *stream, GpImage *image, BOOL from_file)
|
||||
return InvalidParameter;
|
||||
}
|
||||
|
||||
+#if GIFLIB_MAJOR < 5
|
||||
if (from_file) {
|
||||
fp = EGifOpenFileName (stream, 0);
|
||||
} else {
|
||||
fp = EGifOpen (stream, gdip_gif_outputfunc);
|
||||
}
|
||||
+#else
|
||||
+ if (from_file)
|
||||
+ fp = EGifOpenFileName (stream, 0, NULL);
|
||||
+ else
|
||||
+ fp = EGifOpen (stream, gdip_gif_outputfunc, NULL);
|
||||
+#define MakeMapObject GifMakeMapObject
|
||||
+#define FreeMapObject GifFreeMapObject
|
||||
+#define QuantizeBuffer GifQuantizeBuffer
|
||||
+#define BitSize GifBitSize
|
||||
+#endif
|
||||
|
||||
if (!fp) {
|
||||
return FileNotFound;
|
||||
@@ -848,8 +868,15 @@ gdip_save_gif_image (void *stream, GpImage *image, BOOL from_file)
|
||||
Buffer[0] = 1;
|
||||
Buffer[1] = ptr[0];
|
||||
Buffer[2] = ptr[1];
|
||||
+#if GIFLIB_MAJOR < 5
|
||||
EGifPutExtensionFirst(fp, APPLICATION_EXT_FUNC_CODE, 11, "NETSCAPE2.0");
|
||||
EGifPutExtensionLast(fp, APPLICATION_EXT_FUNC_CODE, 3, Buffer);
|
||||
+#else
|
||||
+ EGifPutExtensionLeader(fp, APPLICATION_EXT_FUNC_CODE);
|
||||
+ EGifPutExtensionBlock(fp, 11, "NETSCAPE2.0");
|
||||
+ EGifPutExtensionBlock(fp, 3, Buffer);
|
||||
+ EGifPutExtensionTrailer(fp);
|
||||
+#endif
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,164 @@
|
|||
$NetBSD: patch-aa,v 1.8 2011/01/21 10:21:51 wiz Exp $
|
||||
|
||||
Fix build with png-1.5.
|
||||
|
||||
--- a/src/pngcodec.c.orig 2010-11-03 16:52:54.000000000 +0000
|
||||
+++ b/src/pngcodec.c
|
||||
@@ -116,10 +116,15 @@ gdip_load_png_properties (png_structp pn
|
||||
bitmap_data->dpi_horz = png_get_x_pixels_per_inch(png_ptr, info_ptr);
|
||||
bitmap_data->dpi_vert = png_get_y_pixels_per_inch(png_ptr, info_ptr);
|
||||
#elif defined(PNG_pHYs_SUPPORTED)
|
||||
- if ((info_ptr->valid & PNG_INFO_pHYs) && (info_ptr->phys_unit_type == PNG_RESOLUTION_METER)) {
|
||||
- bitmap_data->image_flags |= ImageFlagsHasRealDPI;
|
||||
- bitmap_data->dpi_horz = info_ptr->x_pixels_per_unit * 0.0254;
|
||||
- bitmap_data->dpi_vert = info_ptr->y_pixels_per_unit * 0.0254;
|
||||
+ if (png_get_valid (png_ptr, info_ptr, PNG_INFO_pHYs)) {
|
||||
+ png_uint_32 res_x, res_y;
|
||||
+ int unit_type;
|
||||
+ png_get_pHYs (png_ptr, info_ptr, &res_x, &res_y, &unit_type);
|
||||
+ if (unit_type == PNG_RESOLUTION_METER) {
|
||||
+ bitmap_data->image_flags |= ImageFlagsHasRealDPI;
|
||||
+ bitmap_data->dpi_horz = res_x * 0.0254;
|
||||
+ bitmap_data->dpi_vert = res_y * 0.0254;
|
||||
+ }
|
||||
}
|
||||
#endif
|
||||
/* default to screen resolution (if nothing was provided or available) */
|
||||
@@ -130,7 +135,7 @@ gdip_load_png_properties (png_structp pn
|
||||
#if defined(PNG_iCCP_SUPPORTED)
|
||||
{
|
||||
png_charp name;
|
||||
- png_charp profile;
|
||||
+ png_bytep profile;
|
||||
png_uint_32 proflen;
|
||||
int compression_type;
|
||||
|
||||
@@ -292,6 +297,11 @@ gdip_load_png_image_from_file_or_stream
|
||||
ImageFlags colourspace_flag;
|
||||
int i;
|
||||
int j;
|
||||
+ png_colorp png_palette;
|
||||
+ int png_num_palette;
|
||||
+ png_bytep trans_alpha;
|
||||
+ int num_trans;
|
||||
+ png_color_16p trans_color;
|
||||
|
||||
width = png_get_image_width (png_ptr, info_ptr);
|
||||
height = png_get_image_height (png_ptr, info_ptr);
|
||||
@@ -309,6 +319,8 @@ gdip_load_png_image_from_file_or_stream
|
||||
}
|
||||
|
||||
/* Copy palette. */
|
||||
+ png_get_PLTE (png_ptr, info_ptr, &png_palette, &png_num_palette);
|
||||
+
|
||||
num_colours = 1 << bit_depth;
|
||||
|
||||
if (png_get_color_type (png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY) {
|
||||
@@ -321,8 +333,8 @@ gdip_load_png_image_from_file_or_stream
|
||||
colourspace_flag = ImageFlagsColorSpaceRGB;
|
||||
|
||||
palette_entries = num_colours;
|
||||
- if (palette_entries > info_ptr->num_palette) {
|
||||
- palette_entries = info_ptr->num_palette;
|
||||
+ if (palette_entries > png_num_palette) {
|
||||
+ palette_entries = png_num_palette;
|
||||
}
|
||||
|
||||
palette = GdipAlloc (sizeof(ColorPalette) + (num_colours - 1) * sizeof(ARGB));
|
||||
@@ -331,29 +343,30 @@ gdip_load_png_image_from_file_or_stream
|
||||
|
||||
for (i=0; i < palette_entries; i++) {
|
||||
set_pixel_bgra (&palette->Entries[i], 0,
|
||||
- info_ptr->palette[i].blue,
|
||||
- info_ptr->palette[i].green,
|
||||
- info_ptr->palette[i].red,
|
||||
+ png_palette[i].blue,
|
||||
+ png_palette[i].green,
|
||||
+ png_palette[i].red,
|
||||
0xFF); /* alpha */
|
||||
}
|
||||
}
|
||||
|
||||
+ png_get_tRNS (png_ptr, info_ptr, &trans_alpha, &num_trans, &trans_color);
|
||||
/* Make sure transparency is respected. */
|
||||
- if (info_ptr->num_trans > 0) {
|
||||
+ if (num_trans > 0) {
|
||||
palette->Flags |= PaletteFlagsHasAlpha;
|
||||
colourspace_flag |= ImageFlagsHasAlpha;
|
||||
|
||||
- if (info_ptr->num_trans > info_ptr->num_palette) {
|
||||
- info_ptr->num_trans = info_ptr->num_palette;
|
||||
+ if (num_trans > png_num_palette) {
|
||||
+ num_trans = png_num_palette;
|
||||
}
|
||||
|
||||
- for (i=0; i < info_ptr->num_trans; i++) {
|
||||
+ for (i=0; i < num_trans; i++) {
|
||||
set_pixel_bgra(&palette->Entries[i], 0,
|
||||
- info_ptr->palette[i].blue,
|
||||
- info_ptr->palette[i].green,
|
||||
- info_ptr->palette[i].red,
|
||||
+ png_palette[i].blue,
|
||||
+ png_palette[i].green,
|
||||
+ png_palette[i].red,
|
||||
#if PNG_LIBPNG_VER > 10399
|
||||
- info_ptr->trans_alpha [i]); /* alpha */
|
||||
+ trans_alpha [i]); /* alpha */
|
||||
#else
|
||||
info_ptr->trans[i]); /* alpha */
|
||||
#endif
|
||||
@@ -398,6 +411,8 @@ gdip_load_png_image_from_file_or_stream
|
||||
BYTE bit_depth;
|
||||
int stride;
|
||||
int interlace;
|
||||
+ png_colorp png_palette;
|
||||
+ int png_num_palette;
|
||||
png_bytep *row_pointers;
|
||||
BYTE *rawptr;
|
||||
int i, j;
|
||||
@@ -490,32 +505,33 @@ gdip_load_png_image_from_file_or_stream
|
||||
png_byte palette = 0;
|
||||
png_byte pix = *rowp++;
|
||||
|
||||
+ png_get_PLTE (png_ptr, info_ptr, &png_palette, &png_num_palette);
|
||||
palette = (pix >> 6) & 0x03;
|
||||
set_pixel_bgra (rawptr, 0,
|
||||
- info_ptr->palette[palette].blue,
|
||||
- info_ptr->palette[palette].green,
|
||||
- info_ptr->palette[palette].red,
|
||||
+ png_palette[palette].blue,
|
||||
+ png_palette[palette].green,
|
||||
+ png_palette[palette].red,
|
||||
0xFF); /* alpha */
|
||||
|
||||
palette = (pix >> 4) & 0x03;
|
||||
set_pixel_bgra (rawptr, 4,
|
||||
- info_ptr->palette[palette].blue,
|
||||
- info_ptr->palette[palette].green,
|
||||
- info_ptr->palette[palette].red,
|
||||
+ png_palette[palette].blue,
|
||||
+ png_palette[palette].green,
|
||||
+ png_palette[palette].red,
|
||||
0xFF); /* alpha */
|
||||
|
||||
palette = (pix >> 2) & 0x03;
|
||||
set_pixel_bgra (rawptr, 8,
|
||||
- info_ptr->palette[palette].blue,
|
||||
- info_ptr->palette[palette].green,
|
||||
- info_ptr->palette[palette].red,
|
||||
+ png_palette[palette].blue,
|
||||
+ png_palette[palette].green,
|
||||
+ png_palette[palette].red,
|
||||
0xFF); /* alpha */
|
||||
|
||||
palette = pix & 0x03;
|
||||
set_pixel_bgra (rawptr, 12,
|
||||
- info_ptr->palette[palette].blue,
|
||||
- info_ptr->palette[palette].green,
|
||||
- info_ptr->palette[palette].red,
|
||||
+ png_palette[palette].blue,
|
||||
+ png_palette[palette].green,
|
||||
+ png_palette[palette].red,
|
||||
0xFF); /* alpha */
|
||||
rawptr += 16;
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
# Template file for 'libgdiplus'
|
||||
pkgname=libgdiplus
|
||||
version=2.10.9
|
||||
revision=1
|
||||
build_style=gnu-configure
|
||||
configure_args="--with-cairo=system"
|
||||
hostmakedepends="pkg-config"
|
||||
makedepends="tiff-devel cairo-devel giflib-devel glib-devel libexif-devel
|
||||
libpng-devel"
|
||||
patch_args="-Np1"
|
||||
short_desc="An Open Source Implementation of the GDI+ API"
|
||||
maintainer="davehome <davehome@redthumb.info.tm>"
|
||||
homepage="http://www.go-mono.org"
|
||||
license="LGPL-2, MPL"
|
||||
distfiles="http://download.mono-project.com/sources/${pkgname}/$pkgname-$version.tar.bz2"
|
||||
checksum=6ddeb6c327bada7cb6e06d1a20714f526a0c69520dfd42c12ddd032c3c5d964e
|
||||
|
||||
libgdiplus_package() {
|
||||
pkg_install() {
|
||||
vmove "usr/lib/*.so.*"
|
||||
}
|
||||
}
|
||||
|
||||
libgdiplus-devel_package() {
|
||||
short_desc+=" - Development files"
|
||||
depends="libgdiplus>=${version}_${revision}"
|
||||
pkg_install() {
|
||||
vmove "usr/lib/*.so"
|
||||
vmove "usr/lib/*.a"
|
||||
vmove usr/lib/pkgconfig
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue