Skip to content

Commit 0c32a18

Browse files
committed
- clean and enable threshold
1 parent a991360 commit 0c32a18

File tree

3 files changed

+18
-3
lines changed

3 files changed

+18
-3
lines changed

ext/gd/gd.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -894,6 +894,8 @@ ZEND_END_ARG_INFO()
894894
ZEND_BEGIN_ARG_INFO(arginfo_imagecropauto, 0)
895895
ZEND_ARG_INFO(0, im)
896896
ZEND_ARG_INFO(0, mode)
897+
ZEND_ARG_INFO(0, threshold)
898+
ZEND_ARG_INFO(0, color)
897899
ZEND_END_ARG_INFO()
898900
#endif
899901

@@ -1216,6 +1218,7 @@ PHP_MINIT_FUNCTION(gd)
12161218
REGISTER_LONG_CONSTANT("IMG_CROP_BLACK", GD_CROP_BLACK, CONST_CS | CONST_PERSISTENT);
12171219
REGISTER_LONG_CONSTANT("IMG_CROP_WHITE", GD_CROP_WHITE, CONST_CS | CONST_PERSISTENT);
12181220
REGISTER_LONG_CONSTANT("IMG_CROP_SIDES", GD_CROP_SIDES, CONST_CS | CONST_PERSISTENT);
1221+
REGISTER_LONG_CONSTANT("IMG_CROP_THRESHOLD", GD_CROP_THRESHOLD, CONST_CS | CONST_PERSISTENT);
12191222
#else
12201223
REGISTER_LONG_CONSTANT("GD_BUNDLED", 0, CONST_CS | CONST_PERSISTENT);
12211224
#endif
@@ -5145,10 +5148,12 @@ PHP_FUNCTION(imagecropauto)
51455148
{
51465149
zval *IM;
51475150
long mode = -1;
5151+
long color = -1;
5152+
double threshold = 0.5f;
51485153
gdImagePtr im;
51495154
gdImagePtr im_crop;
51505155

5151-
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &IM, &mode) == FAILURE) {
5156+
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|ldl", &IM, &mode, &threshold, &color) == FAILURE) {
51525157
return;
51535158
}
51545159

@@ -5164,6 +5169,15 @@ PHP_FUNCTION(imagecropauto)
51645169
case GD_CROP_SIDES:
51655170
im_crop = gdImageCropAuto(im, mode);
51665171
break;
5172+
5173+
case GD_CROP_THRESHOLD:
5174+
if (color < 0) {
5175+
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Color argument missing with threshold mode");
5176+
RETURN_FALSE;
5177+
}
5178+
im_crop = gdImageCropThreshold(im, color, (float) threshold);
5179+
break;
5180+
51675181
default:
51685182
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown flip mode");
51695183
RETURN_FALSE;

ext/gd/libgd/gd.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -733,7 +733,8 @@ enum gdCropMode {
733733
GD_CROP_TRANSPARENT,
734734
GD_CROP_BLACK,
735735
GD_CROP_WHITE,
736-
GD_CROP_SIDES
736+
GD_CROP_SIDES,
737+
GD_CROP_THRESHOLD
737738
};
738739

739740
gdImagePtr gdImageCrop(gdImagePtr src, const gdRectPtr crop);

ext/gd/libgd/gd_crop.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ gdImagePtr gdImageCrop(gdImagePtr src, const gdRectPtr crop)
5858
if (src->sy < (crop->y + crop->height -1)) {
5959
crop->height = src->sy - crop->y + 1;
6060
}
61-
#ifdef 0
61+
#if 0
6262
printf("rect->x: %i\nrect->y: %i\nrect->width: %i\nrect->height: %i\n", crop->x, crop->y, crop->width, crop->height);
6363
#endif
6464
if (dst == NULL) {

0 commit comments

Comments
 (0)