From aa4b0af20f61f8d1642168258c37a78b5adf1329 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 24 Apr 2013 14:32:03 +0200 Subject: [PATCH] gd: provide imageflip with system libgd when available --- ext/gd/config.m4 | 2 ++ ext/gd/gd.c | 68 +++++++++++++++++++++++++++--------------------- 2 files changed, 40 insertions(+), 30 deletions(-) diff --git a/ext/gd/config.m4 b/ext/gd/config.m4 index c7a253c41d..e27411d5c8 100644 --- a/ext/gd/config.m4 +++ b/ext/gd/config.m4 @@ -286,6 +286,7 @@ AC_DEFUN([PHP_GD_CHECK_VERSION],[ PHP_CHECK_LIBRARY(gd, gdNewDynamicCtxEx, [AC_DEFINE(HAVE_GD_DYNAMIC_CTX_EX, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ]) PHP_CHECK_LIBRARY(gd, gdImageConvolution, [AC_DEFINE(HAVE_GD_IMAGE_CONVOLUTION, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ]) PHP_CHECK_LIBRARY(gd, gdImagePixelate, [AC_DEFINE(HAVE_GD_IMAGE_PIXELATE, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ]) + PHP_CHECK_LIBRARY(gd, gdImageFlipBoth, [AC_DEFINE(HAVE_GD_IMAGE_FLIP, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ]) ]) dnl @@ -342,6 +343,7 @@ dnl These are always available with bundled library AC_DEFINE(HAVE_GD_FONTMUTEX, 1, [ ]) AC_DEFINE(HAVE_GD_DYNAMIC_CTX_EX, 1, [ ]) AC_DEFINE(HAVE_GD_GIF_CTX, 1, [ ]) + AC_DEFINE(HAVE_GD_IMAGE_FLIP, 1, [ ]) dnl Make sure the libgd/ is first in the include path GDLIB_CFLAGS="-DHAVE_LIBPNG" diff --git a/ext/gd/gd.c b/ext/gd/gd.c index b60891bdc6..ea289e782d 100644 --- a/ext/gd/gd.c +++ b/ext/gd/gd.c @@ -883,15 +883,17 @@ ZEND_BEGIN_ARG_INFO(arginfo_imageconvolution, 0) ZEND_ARG_INFO(0, offset) ZEND_END_ARG_INFO() -#ifdef HAVE_GD_BUNDLED -ZEND_BEGIN_ARG_INFO(arginfo_imageantialias, 0) +#ifdef HAVE_GD_IMAGE_FLIP +ZEND_BEGIN_ARG_INFO(arginfo_imageflip, 0) ZEND_ARG_INFO(0, im) - ZEND_ARG_INFO(0, on) + ZEND_ARG_INFO(0, mode) ZEND_END_ARG_INFO() +#endif -ZEND_BEGIN_ARG_INFO(arginfo_imageflip, 0) +#ifdef HAVE_GD_BUNDLED +ZEND_BEGIN_ARG_INFO(arginfo_imageantialias, 0) ZEND_ARG_INFO(0, im) - ZEND_ARG_INFO(0, mode) + ZEND_ARG_INFO(0, on) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_imagecrop, 0) @@ -992,9 +994,12 @@ const zend_function_entry gd_functions[] = { PHP_FE(imagerotate, arginfo_imagerotate) +#ifdef HAVE_GD_IMAGE_FLIP + PHP_FE(imageflip, arginfo_imageflip) +#endif + #ifdef HAVE_GD_BUNDLED PHP_FE(imageantialias, arginfo_imageantialias) - PHP_FE(imageflip, arginfo_imageflip) PHP_FE(imagecrop, arginfo_imagecrop) PHP_FE(imagecropauto, arginfo_imagecropauto) PHP_FE(imagescale, arginfo_imagescale) @@ -1246,6 +1251,11 @@ PHP_MINIT_FUNCTION(gd) #ifdef GD2_FMT_COMPRESSED REGISTER_LONG_CONSTANT("IMG_GD2_COMPRESSED", GD2_FMT_COMPRESSED, CONST_CS | CONST_PERSISTENT); #endif +#ifdef HAVE_GD_IMAGE_FLIP + REGISTER_LONG_CONSTANT("IMG_FLIP_HORIZONTAL", GD_FLIP_HORINZONTAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FLIP_VERTICAL", GD_FLIP_VERTICAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FLIP_BOTH", GD_FLIP_BOTH, CONST_CS | CONST_PERSISTENT); +#endif #if HAVE_GD_BUNDLED REGISTER_LONG_CONSTANT("IMG_EFFECT_REPLACE", gdEffectReplace, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("IMG_EFFECT_ALPHABLEND", gdEffectAlphaBlend, CONST_CS | CONST_PERSISTENT); @@ -1253,10 +1263,6 @@ PHP_MINIT_FUNCTION(gd) REGISTER_LONG_CONSTANT("IMG_EFFECT_OVERLAY", gdEffectOverlay, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("GD_BUNDLED", 1, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FLIP_HORIZONTAL", GD_FLIP_HORINZONTAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FLIP_VERTICAL", GD_FLIP_VERTICAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FLIP_BOTH", GD_FLIP_BOTH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_CROP_DEFAULT", GD_CROP_DEFAULT, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("IMG_CROP_TRANSPARENT", GD_CROP_TRANSPARENT, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("IMG_CROP_BLACK", GD_CROP_BLACK, CONST_CS | CONST_PERSISTENT); @@ -5189,26 +5195,7 @@ PHP_FUNCTION(imageconvolution) /* }}} */ /* End section: Filters */ -#ifdef HAVE_GD_BUNDLED -/* {{{ proto bool imageantialias(resource im, bool on) - Should antialiased functions used or not*/ -PHP_FUNCTION(imageantialias) -{ - zval *IM; - zend_bool alias; - gdImagePtr im; - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rb", &IM, &alias) == FAILURE) { - return; - } - - ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd); - gdImageAntialias(im, alias); - RETURN_TRUE; -} -/* }}} */ - - +#ifdef HAVE_GD_IMAGE_FLIP /* {{{ proto void imageflip(resource im, int mode) Flip an image (in place) horizontally, vertically or both directions. */ PHP_FUNCTION(imageflip) @@ -5244,6 +5231,27 @@ PHP_FUNCTION(imageflip) RETURN_TRUE; } /* }}} */ +#endif + +#ifdef HAVE_GD_BUNDLED +/* {{{ proto bool imageantialias(resource im, bool on) + Should antialiased functions used or not*/ +PHP_FUNCTION(imageantialias) +{ + zval *IM; + zend_bool alias; + gdImagePtr im; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rb", &IM, &alias) == FAILURE) { + return; + } + + ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd); + gdImageAntialias(im, alias); + RETURN_TRUE; +} +/* }}} */ + /* {{{ proto void imagecrop(resource im, array rect) Crop an image using the given coordinates and size, x, y, width and height. */ -- 2.40.0