Skip to content

Commit

Permalink
Adding missing functions and constants.
Browse files Browse the repository at this point in the history
  * Imagick::autoGammaImage([int channel = CHANNEL_ALL])
  * Imagick::autoOrient()
  * Imagick::compositeImageGravity(Imagick $image, int COMPOSITE_CONSTANT, int GRAVITY_CONSTANT)
  * Imagick::localContrastImage(float radius, float strength)
  * Imagick::DIRECTION_LEFT_TO_RIGHT
  * Imagick::DIRECTION_RIGHT_TO_LEFT
  * Imagick::SPARSECOLORMETHOD_MANHATTAN
  * ImagickDraw::getOpacity() : float
  * ImagickDraw::setOpacity(float opacity) :bool
  * ImagickDraw::getFontResolution() : array
  * ImagickDraw::setFontResolution(float x, float y) : bool
  * ImagickDraw::getTextDirection() : bool
  * ImagickDraw::setTextDirection(int direction) : bool
  * ImagickDraw::getBorderColor() : ImagickPixel
  * ImagickDraw::setBorderColor(ImagickPixel color) : bool
  * ImagickDraw::getDensity() : string|null
  * ImagickDraw::setDensity(string density_string) : bool
  * ImagickPixel::setColorFromPixel(ImagickPixel $srcPixel) : bool
  • Loading branch information
Danack committed Mar 8, 2016
1 parent 46ee37b commit 2a0a07f
Show file tree
Hide file tree
Showing 23 changed files with 1,122 additions and 7 deletions.
21 changes: 21 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
3.4.1-dev
- Added:
* Imagick::autoGammaImage([int channel = CHANNEL_ALL])
* Imagick::autoOrient()
* Imagick::compositeImageGravity(Imagick $image, int COMPOSITE_CONSTANT, int GRAVITY_CONSTANT)
* Imagick::localContrastImage(float radius, float strength)
* Imagick::DIRECTION_LEFT_TO_RIGHT
* Imagick::DIRECTION_RIGHT_TO_LEFT
* Imagick::SPARSECOLORMETHOD_MANHATTAN
* ImagickDraw::getOpacity() : float
* ImagickDraw::setOpacity(float opacity) :bool
* ImagickDraw::getFontResolution() : array
* ImagickDraw::setFontResolution(float x, float y) : bool
* ImagickDraw::getTextDirection() : bool
* ImagickDraw::setTextDirection(int direction) : bool
* ImagickDraw::getBorderColor() : ImagickPixel
* ImagickDraw::setBorderColor(ImagickPixel color) : bool
* ImagickDraw::getDensity() : string|null
* ImagickDraw::setDensity(string density_string) : bool
* ImagickPixel::setColorFromPixel(ImagickPixel $srcPixel) : bool

3.4.0
No changes from 3.4.0RC6.

Expand Down
2 changes: 2 additions & 0 deletions configure-cflags.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ function contains() {
strictPHPVersions=()
strictPHPVersions+=("5.6")
strictPHPVersions+=("7")
strictPHPVersions+=("7.0")
strictPHPVersions+=("7.1")

strictImageMagickVersions=()
strictImageMagickVersions+=("dev")
Expand Down
74 changes: 74 additions & 0 deletions imagick.c
Original file line number Diff line number Diff line change
Expand Up @@ -1449,6 +1449,21 @@ PHP_IMAGICK_API zend_class_entry *php_imagickpixel_get_class_entry()
ZEND_ARG_INFO(0, antialias)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(imagick_autogammaimage_args, 0, 0, 1)
ZEND_ARG_INFO(0, CHANNEL)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(imagick_compositeimagegravity_args, 0, 0, 3)
ZEND_ARG_OBJ_INFO(0, Imagick, Imagick, 0)
ZEND_ARG_INFO(0, COMPOSITE)
ZEND_ARG_INFO(0, GRAVITY)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(imagick_localContrastImage_args, 0, 0, 2)
ZEND_ARG_INFO(0, radius)
ZEND_ARG_INFO(0, strength)
ZEND_END_ARG_INFO()

/* ImagickDraw */
#if MagickLibVersion > 0x649
ZEND_BEGIN_ARG_INFO_EX(imagickdraw_settextkerning_args, 0, 0, 1)
Expand Down Expand Up @@ -1853,6 +1868,27 @@ PHP_IMAGICK_API zend_class_entry *php_imagickpixel_get_class_entry()
ZEND_ARG_INFO(0, dashArray)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(imagickdraw_setopacity_args, 0, 0, 1)
ZEND_ARG_INFO(0, opacity)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(imagickdraw_setfontresolution_args, 0, 0, 2)
ZEND_ARG_INFO(0, x)
ZEND_ARG_INFO(0, y)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(imagickdraw_setbordercolor_args, 0, 0, 1)
ZEND_ARG_INFO(0, bordercolor)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(imagickdraw_settextdirection_args, 0, 0, 1)
ZEND_ARG_INFO(0, direction)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(imagickdraw_setdensity_args, 0, 0, 1)
ZEND_ARG_INFO(0, density)
ZEND_END_ARG_INFO()

/* ImagickPixel */
#if MagickLibVersion > 0x628
ZEND_BEGIN_ARG_INFO_EX(imagickpixel_sethsl_args, 0, 0, 3)
Expand Down Expand Up @@ -1908,6 +1944,10 @@ PHP_IMAGICK_API zend_class_entry *php_imagickpixel_get_class_entry()
ZEND_ARG_INFO(0, normalized)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(imagickpixel_setcolorfrompixel_args, 0, 0, 1)
ZEND_ARG_OBJ_INFO(0, srcPixel, ImagickPixel, 0)
ZEND_END_ARG_INFO()

/* ImagickPixelIterator */

ZEND_BEGIN_ARG_INFO_EX(imagickpixeliterator_zero_args, 0, 0, 0)
Expand Down Expand Up @@ -2090,6 +2130,25 @@ static zend_function_entry php_imagickdraw_class_methods[] =
PHP_ME(imagickdraw, pop, imagickdraw_zero_args, ZEND_ACC_PUBLIC)
PHP_ME(imagickdraw, push, imagickdraw_zero_args, ZEND_ACC_PUBLIC)
PHP_ME(imagickdraw, setstrokedasharray, imagickdraw_setstrokedasharray_args, ZEND_ACC_PUBLIC)
PHP_ME(imagickdraw, getopacity, imagickdraw_zero_args, ZEND_ACC_PUBLIC)
PHP_ME(imagickdraw, setopacity, imagickdraw_setopacity_args, ZEND_ACC_PUBLIC)
#if MagickLibVersion >= 0x675
PHP_ME(imagickdraw, getfontresolution, imagickdraw_zero_args, ZEND_ACC_PUBLIC)
PHP_ME(imagickdraw, setfontresolution, imagickdraw_setfontresolution_args, ZEND_ACC_PUBLIC)
PHP_ME(imagickdraw, getbordercolor, imagickdraw_zero_args, ZEND_ACC_PUBLIC)
PHP_ME(imagickdraw, setbordercolor, imagickdraw_setbordercolor_args, ZEND_ACC_PUBLIC)
#endif //#if MagickLibVersion >= 0x675

#if MagickLibVersion >= 0x693
PHP_ME(imagickdraw, setdensity, imagickdraw_setdensity_args, ZEND_ACC_PUBLIC)
PHP_ME(imagickdraw, getdensity, imagickdraw_zero_args, ZEND_ACC_PUBLIC)
#endif// #if MagickLibVersion >= 0x693

#if MagickLibVersion >= 0x692
PHP_ME(imagickdraw, gettextdirection, imagickdraw_zero_args, ZEND_ACC_PUBLIC)
PHP_ME(imagickdraw, settextdirection, imagickdraw_settextdirection_args, ZEND_ACC_PUBLIC)
#endif //#if MagickLibVersion >= 0x692

{ NULL, NULL, NULL }
};

Expand Down Expand Up @@ -2162,6 +2221,10 @@ static zend_function_entry php_imagickpixel_class_methods[] =
PHP_ME(imagickpixel, getcolorcount, imagickpixel_zero_args, ZEND_ACC_PUBLIC)
PHP_ME(imagickpixel, setcolorcount, imagickpixel_setcolorcount_args, ZEND_ACC_PUBLIC)
PHP_ME(imagickpixel, clone, imagickpixel_zero_args, ZEND_ACC_PUBLIC)
#if MagickLibVersion >= 0x693
PHP_ME(imagickpixel, setcolorfrompixel, imagickpixel_setcolorfrompixel_args, ZEND_ACC_PUBLIC)
#endif //#if MagickLibVersion >= 0x693

{ NULL, NULL, NULL }
};

Expand Down Expand Up @@ -2676,6 +2739,17 @@ static zend_function_entry php_imagick_class_methods[] =
PHP_ME(imagick, colordecisionlistimage, imagick_colordecisionlistimage_args, ZEND_ACC_PUBLIC)
#endif

#if MagickLibVersion >= 0x660
PHP_ME(imagick, autogammaimage, imagick_autogammaimage_args, ZEND_ACC_PUBLIC)
#endif //#if MagickLibVersion >= 0x660
#if MagickLibVersion >= 0x692
PHP_ME(imagick, autoorient, imagick_zero_args, ZEND_ACC_PUBLIC)
PHP_ME(imagick, compositeimagegravity, imagick_compositeimagegravity_args, ZEND_ACC_PUBLIC)
#endif // #if MagickLibVersion >= 0x692
#if MagickLibVersion >= 0x692
PHP_ME(imagick, localcontrastimage, imagick_localContrastImage_args, ZEND_ACC_PUBLIC)
#endif // #if MagickLibVersion >= 0x692

{ NULL, NULL, NULL }
};

Expand Down
130 changes: 130 additions & 0 deletions imagick_class.c
Original file line number Diff line number Diff line change
Expand Up @@ -12633,7 +12633,137 @@ PHP_METHOD(imagick, colordecisionlistimage)
/* }}} */


#if MagickLibVersion >= 0x660
/* {{{ proto bool Imagick::autoGammaImage([int channel = CHANNEL_ALL])
Extracts the 'mean' from the image and adjust the image to try make set its gamma appropriately.
*/
PHP_METHOD(imagick, autogammaimage)
{
php_imagick_object *intern;
MagickBooleanType status;
im_long channel = IM_DEFAULT_CHANNEL;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &channel) == FAILURE) {
return;
}

intern = Z_IMAGICK_P(getThis());
if (php_imagick_ensure_not_empty (intern->magick_wand) == 0)
return;

status = MagickAutoGammaImageChannel(intern->magick_wand, channel);

/* No magick is going to happen */
if (status == MagickFalse) {
php_imagick_convert_imagick_exception(intern->magick_wand, "autoGammaImage" TSRMLS_CC);
return;
}

RETURN_TRUE;
}
/* }}} */
#endif //#if MagickLibVersion >= 0x660

#if MagickLibVersion >= 0x692
/* {{{ proto bool Imagick::autoOrient()
Adjusts an image so that its orientation is suitable $ for viewing (i.e. top-left orientation).
*/
PHP_METHOD(imagick, autoorient)
{
php_imagick_object *intern;
MagickBooleanType status;

if (zend_parse_parameters_none() == FAILURE) {
return;
}

intern = Z_IMAGICK_P(getThis());
if (php_imagick_ensure_not_empty (intern->magick_wand) == 0)
return;

status = MagickAutoOrientImage(intern->magick_wand);

/* No magick is going to happen */
if (status == MagickFalse) {
php_imagick_convert_imagick_exception(intern->magick_wand, "Unable autoOrient image" TSRMLS_CC);
return;
}

RETURN_TRUE;
}
/* }}} */
#endif // #if MagickLibVersion >= 0x692

#if MagickLibVersion >= 0x692
/* {{{ proto bool Imagick::compositeImageGravity(Imagick $image, COMPOSITE_CONSTANT, int GRAVITY_CONSTANT)
Composite one image onto another using the specified gravity.
*/
PHP_METHOD(imagick, compositeimagegravity)
{
zval *objvar;
php_imagick_object *intern, *image_to_composite;
MagickBooleanType status;
im_long composite, gravity;

/* Parse parameters given to function */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Oll", &objvar, php_imagick_sc_entry, &composite, &gravity) == FAILURE) {
return;
}

intern = Z_IMAGICK_P(getThis());
if (php_imagick_ensure_not_empty (intern->magick_wand) == 0)
return;

image_to_composite = Z_IMAGICK_P(objvar);
if (php_imagick_ensure_not_empty (image_to_composite->magick_wand) == 0)
return;

status = MagickCompositeImageGravity(intern->magick_wand, image_to_composite->magick_wand, composite, gravity);

/* No magick is going to happen */
if (status == MagickFalse) {
php_imagick_convert_imagick_exception(intern->magick_wand, "Unable to compositeImageGravity" TSRMLS_CC);
return;
}

RETURN_TRUE;
}
/* }}} */
#endif // #if MagickLibVersion >= 0x692

#if MagickLibVersion >= 0x692
/* {{{ proto bool Imagick::localContrastImage(float radius, float strength)
Attempts to increase the appearance of large-scale light-dark transitions.
Local contrast enhancement works similarly to sharpening with an unsharp mask,
however the mask is instead created using an image with a greater blur distance.
*/
PHP_METHOD(imagick, localcontrastimage)
{
php_imagick_object *intern;
MagickBooleanType status;
double radius, strength;

/* Parse parameters given to function */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &radius, &strength) == FAILURE) {
return;
}

intern = Z_IMAGICK_P(getThis());
if (php_imagick_ensure_not_empty (intern->magick_wand) == 0)
return;

status = MagickLocalContrastImage(intern->magick_wand, radius, strength);

/* No magick is going to happen */
if (status == MagickFalse) {
php_imagick_convert_imagick_exception(intern->magick_wand, "Failed to localContrastImage" TSRMLS_CC);
return;
}

RETURN_TRUE;
}
/* }}} */
#endif // #if MagickLibVersion >= 0x692


/* end of Imagick */
6 changes: 6 additions & 0 deletions imagick_helpers.c
Original file line number Diff line number Diff line change
Expand Up @@ -1642,6 +1642,9 @@ void php_imagick_initialize_constants(TSRMLS_D)
IMAGICK_REGISTER_CONST_LONG("SPARSECOLORMETHOD_VORONOI", VoronoiColorInterpolate);
#if MagickLibVersion >= 0x687
IMAGICK_REGISTER_CONST_LONG("SPARSECOLORMETHOD_INVERSE", InverseColorInterpolate);
#endif
#if MagickLibVersion >= 0x693
IMAGICK_REGISTER_CONST_LONG("SPARSECOLORMETHOD_MANHATTAN", ManhattanColorInterpolate);
#endif
IMAGICK_REGISTER_CONST_LONG("DITHERMETHOD_UNDEFINED", UndefinedDitherMethod);
IMAGICK_REGISTER_CONST_LONG("DITHERMETHOD_NO", NoDitherMethod);
Expand Down Expand Up @@ -1755,6 +1758,9 @@ IMAGICK_REGISTER_CONST_LONG("KERNEL_EUCLIDEAN", EuclideanKernel);
IMAGICK_REGISTER_CONST_LONG("KERNEL_USER_DEFINED", UserDefinedKernel);
IMAGICK_REGISTER_CONST_LONG("KERNEL_BINOMIAL", BinomialKernel);

/* Draw directions */
IMAGICK_REGISTER_CONST_LONG("DIRECTION_LEFT_TO_RIGHT", LeftToRightDirection);
IMAGICK_REGISTER_CONST_LONG("DIRECTION_RIGHT_TO_LEFT", RightToLeftDirection);

// The kernel is scaled directly using given scaling factor without change.
IMAGICK_REGISTER_CONST_LONG("NORMALIZE_KERNEL_NONE", 0);
Expand Down
Loading

0 comments on commit 2a0a07f

Please sign in to comment.