]> granicus.if.org Git - php/commitdiff
- clean and enable threshold
authorPierre Joye <pierre.php@gmail.com>
Thu, 28 Feb 2013 18:22:06 +0000 (19:22 +0100)
committerPierre Joye <pierre.php@gmail.com>
Thu, 28 Feb 2013 18:22:06 +0000 (19:22 +0100)
ext/gd/gd.c
ext/gd/libgd/gd.h
ext/gd/libgd/gd_crop.c

index 83733d1a7091218ba6b41111ec2d42d3cb23e78b..c004a72d0ec8ecb96920340c717ee91ddbbe9c60 100644 (file)
@@ -894,6 +894,8 @@ ZEND_END_ARG_INFO()
 ZEND_BEGIN_ARG_INFO(arginfo_imagecropauto, 0)
        ZEND_ARG_INFO(0, im)
        ZEND_ARG_INFO(0, mode)
+       ZEND_ARG_INFO(0, threshold)
+       ZEND_ARG_INFO(0, color)
 ZEND_END_ARG_INFO()
 #endif
 
@@ -1216,6 +1218,7 @@ PHP_MINIT_FUNCTION(gd)
        REGISTER_LONG_CONSTANT("IMG_CROP_BLACK", GD_CROP_BLACK, CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("IMG_CROP_WHITE", GD_CROP_WHITE, CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("IMG_CROP_SIDES", GD_CROP_SIDES, CONST_CS | CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("IMG_CROP_THRESHOLD", GD_CROP_THRESHOLD, CONST_CS | CONST_PERSISTENT);
 #else
        REGISTER_LONG_CONSTANT("GD_BUNDLED", 0, CONST_CS | CONST_PERSISTENT);
 #endif
@@ -5145,10 +5148,12 @@ PHP_FUNCTION(imagecropauto)
 {
        zval *IM;
        long mode = -1;
+       long color = -1;
+       double threshold = 0.5f;
        gdImagePtr im;
        gdImagePtr im_crop;
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &IM, &mode) == FAILURE)  {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|ldl", &IM, &mode, &threshold, &color) == FAILURE)  {
                return;
        }
 
@@ -5164,6 +5169,15 @@ PHP_FUNCTION(imagecropauto)
                case GD_CROP_SIDES:
                        im_crop = gdImageCropAuto(im, mode);
                        break;
+
+               case GD_CROP_THRESHOLD:
+                       if (color < 0) {
+                               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Color argument missing with threshold mode");
+                               RETURN_FALSE;
+                       }
+                       im_crop = gdImageCropThreshold(im, color, (float) threshold);
+                       break;
+
                default:
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown flip mode");
                        RETURN_FALSE;
index adef026b6f91aedce682e2826ec6855e888d0dc6..8d9df2a49cf2028c90e14c8cf5ec3bee193e27df 100644 (file)
@@ -733,7 +733,8 @@ enum gdCropMode {
        GD_CROP_TRANSPARENT,
        GD_CROP_BLACK,
        GD_CROP_WHITE,
-       GD_CROP_SIDES
+       GD_CROP_SIDES,
+       GD_CROP_THRESHOLD
 };
 
 gdImagePtr gdImageCrop(gdImagePtr src, const gdRectPtr crop);
index d5fd76278076f36ef1b3757afb406916c1e4f6fb..274e7199c84b8df25ee4e2139050bb6616ca9cb1 100644 (file)
@@ -58,7 +58,7 @@ gdImagePtr gdImageCrop(gdImagePtr src, const gdRectPtr crop)
        if (src->sy < (crop->y + crop->height -1)) {
                crop->height = src->sy - crop->y + 1;
        }
-#ifdef 0
+#if 0
 printf("rect->x: %i\nrect->y: %i\nrect->width: %i\nrect->height: %i\n", crop->x, crop->y, crop->width, crop->height);
 #endif
        if (dst == NULL) {