Rewrite PixelIterator related classes. Add getPixelIterator and getPixelRegionIterator static methods. Should probably add Countable interface later

This commit is contained in:
Mikko
2013-10-01 14:48:39 +08:00
parent 858ed09d80
commit 6617baf320
8 changed files with 209 additions and 210 deletions
+18 -2
View File
@@ -1849,7 +1849,20 @@ static zend_function_entry php_imagickdraw_class_methods[] =
{ NULL, NULL, NULL }
};
static zend_function_entry php_imagickpixeliterator_class_methods[] =
ZEND_BEGIN_ARG_INFO_EX(imagickpixeliterator_getpixeliterator_args, 0, 0, 6)
ZEND_ARG_OBJ_INFO(0, Imagick, Imagick, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(imagickpixeliterator_getpixelregioniterator_args, 0, 0, 6)
ZEND_ARG_OBJ_INFO(0, Imagick, Imagick, 0)
ZEND_ARG_INFO(0, x)
ZEND_ARG_INFO(0, y)
ZEND_ARG_INFO(0, columns)
ZEND_ARG_INFO(0, rows)
ZEND_END_ARG_INFO()
static
zend_function_entry php_imagickpixeliterator_class_methods[] =
{
PHP_ME(imagickpixeliterator, __construct, imagickpixeliterator_construct_args, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
PHP_ME(imagickpixeliterator, newpixeliterator, imagickpixeliterator_zero_args, ZEND_ACC_PUBLIC)
@@ -1866,6 +1879,9 @@ static zend_function_entry php_imagickpixeliterator_class_methods[] =
ZEND_MALIAS(imagickpixeliterator, destroy, clear, imagickpixeliterator_zero_args, ZEND_ACC_PUBLIC)
PHP_ME(imagickpixeliterator, clear, imagickpixeliterator_zero_args, ZEND_ACC_PUBLIC)
PHP_ME(imagickpixeliterator, getpixeliterator, imagickpixeliterator_getpixeliterator_args, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
PHP_ME(imagickpixeliterator, getpixelregioniterator, imagickpixeliterator_getpixelregioniterator_args, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
/* Iterator interface */
PHP_MALIAS(imagickpixeliterator, key, getiteratorrow, imagickpixeliterator_zero_args, ZEND_ACC_PUBLIC)
PHP_MALIAS(imagickpixeliterator, next, getnextiteratorrow, imagickpixeliterator_zero_args, ZEND_ACC_PUBLIC)
@@ -2463,7 +2479,7 @@ static zend_object_value php_imagickpixeliterator_object_new(zend_class_entry *c
/* We cant initialize yet */
intern->pixel_iterator = NULL;
intern->instanciated_correctly = 0;
intern->initialized = 0;
#if MagickLibVersion <= 0x628
intern->rows = 0;
+18 -51
View File
@@ -9863,39 +9863,26 @@ PHP_METHOD(imagick, whitethresholdimage)
*/
PHP_METHOD(imagick, getpixeliterator)
{
PixelIterator *pixel_it;
php_imagick_object *intern;
zval retval, *method_array;
zval *args[1];
zval *tmp_object;
if (zend_parse_parameters_none() == FAILURE) {
return;
}
intern = (php_imagick_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
if (php_imagick_ensure_not_empty (intern->magick_wand) == 0)
return;
MAKE_STD_ZVAL(tmp_object);
pixel_it = NewPixelIterator(intern->magick_wand);
object_init_ex(tmp_object, php_imagickpixeliterator_sc_entry);
MAKE_STD_ZVAL(method_array);
array_init(method_array);
add_next_index_zval(method_array, tmp_object);
add_next_index_string(method_array, "newpixeliterator", 1);
args[0] = getThis();
call_user_function(EG(function_table), NULL, method_array, &retval, 1, args TSRMLS_CC);
*return_value = *tmp_object;
zval_copy_ctor(return_value);
zval_dtor(method_array);
FREE_ZVAL(method_array);
if (!pixel_it) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "Can not allocate ImagickPixelIterator" TSRMLS_CC);
return;
}
php_imagick_pixel_iterator_new (pixel_it, return_value TSRMLS_CC);
return;
}
/* }}} */
@@ -9905,49 +9892,29 @@ PHP_METHOD(imagick, getpixeliterator)
*/
PHP_METHOD(imagick, getpixelregioniterator)
{
zval *object;
PixelIterator *pixel_it;
php_imagick_object *intern;
zval retval, *method_array;
zval *args[5];
zval *tmp_object;
zval *x, *y, *columns, *rows;
long x, y, columns, rows;
/* Parse parameters given to function */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zzzz", &x, &y, &columns, &rows) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llll", &x, &y, &columns, &rows) == FAILURE) {
return;
}
object = getThis();
intern = (php_imagick_object *)zend_object_store_get_object(object TSRMLS_CC);
intern = (php_imagick_object *)zend_object_store_get_object(getThis () TSRMLS_CC);
if (php_imagick_ensure_not_empty (intern->magick_wand) == 0)
return;
MAKE_STD_ZVAL(tmp_object);
pixel_it = NewPixelRegionIterator(intern->magick_wand, x, y, columns, rows);
object_init_ex(tmp_object, php_imagickpixeliterator_sc_entry);
MAKE_STD_ZVAL(method_array);
array_init(method_array);
add_next_index_zval(method_array, tmp_object);
add_next_index_string(method_array, "newpixelregioniterator", 1);
args[0] = object;
args[1] = x;
args[2] = y;
args[3] = columns;
args[4] = rows;
call_user_function(EG(function_table), NULL, method_array, &retval, 5, args TSRMLS_CC);
*return_value = *tmp_object;
zval_copy_ctor(return_value);
zval_dtor(method_array);
FREE_ZVAL(method_array);
if (!pixel_it) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "Can not allocate ImagickPixelIterator" TSRMLS_CC);
return;
}
php_imagick_pixel_iterator_new (pixel_it, return_value TSRMLS_CC);
return;
}
/* }}} */
-17
View File
@@ -572,23 +572,6 @@ PixelWand *php_imagick_zval_to_opacity (zval *param, php_imagick_class_type_t ca
return pixel_wand;
}
#if MagickLibVersion <= 0x628
void count_pixeliterator_rows(php_imagickpixeliterator_object *internpix TSRMLS_DC)
{
long rows = 0, tmp;
PixelWand **row;
(void) PixelResetIterator(internpix->pixel_iterator);
while ((row = (PixelWand **)PixelGetNextIteratorRow(internpix->pixel_iterator, &tmp))) {
if (row == (PixelWand **)NULL) {
break;
}
rows++;
}
internpix->rows = rows;
}
#endif
/**
* Changes the locale to IMAGICK_LC_NUMERIC_LOCALE if imagick.locale_fix is on
* and returns the locale set before calling this function.
+160 -131
View File
@@ -23,6 +23,36 @@
#include "php_imagick_macros.h"
#include "php_imagick_helpers.h"
#if MagickLibVersion <= 0x628
static
long s_count_pixeliterator_rows(php_imagickpixeliterator_object *internpix)
{
long rows = 0, tmp;
PixelWand **row;
PixelResetIterator(internpix->pixel_iterator);
while ((row = PixelGetNextIteratorRow(internpix->pixel_iterator, &tmp)) != NULL)
rows++;
return rows;
}
#endif
void php_imagick_pixel_iterator_new (PixelIterator *pixel_it, zval *return_value TSRMLS_DC)
{
php_imagickpixeliterator_object *internpix;
object_init_ex(return_value, php_imagickpixeliterator_sc_entry);
internpix = (php_imagickpixeliterator_object *) zend_object_store_get_object(return_value TSRMLS_CC);
internpix->pixel_iterator = pixel_it;
internpix->initialized = 1;
#if MagickLibVersion <= 0x628
internpix->rows = s_count_pixeliterator_rows (internpix);
#endif
}
/* {{{ proto ImagickPixelIterator ImagickPixelIterator::__construct(Imagick source)
The ImagickPixelIterator constructor
*/
@@ -33,32 +63,33 @@ PHP_METHOD(imagickpixeliterator, __construct)
php_imagick_object *intern;
/* Parse parameters given to function */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &magick_object, php_imagick_sc_entry) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O|llll", &magick_object, php_imagick_sc_entry) == FAILURE) {
return;
}
internpix = (php_imagickpixeliterator_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
intern = (php_imagick_object *)zend_object_store_get_object(magick_object TSRMLS_CC);
if (php_imagick_ensure_not_empty (intern->magick_wand) == 0)
return;
if (!intern->magick_wand || !IsMagickWand(intern->magick_wand)) {
if (!intern->magick_wand) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "Invalid Imagick object passed" TSRMLS_CC);
return;
}
if (php_imagick_ensure_not_empty (intern->magick_wand) == 0)
return;
internpix->pixel_iterator = NewPixelIterator(intern->magick_wand);
internpix->iterator_type = 1;
#if MagickLibVersion <= 0x628
count_pixeliterator_rows(internpix TSRMLS_CC);
#endif
if (!internpix->pixel_iterator || !IsPixelIterator(internpix->pixel_iterator)) {
if (!internpix->pixel_iterator) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "Can not allocate ImagickPixelIterator" TSRMLS_CC);
return;
}
internpix->instanciated_correctly = 1;
#if MagickLibVersion <= 0x628
internpix->rows = s_count_pixeliterator_rows (internpix);
#endif
internpix->initialized = 1;
RETURN_TRUE;
}
/* }}} */
@@ -76,12 +107,7 @@ PHP_METHOD(imagickpixeliterator, resetiterator)
internpix = (php_imagickpixeliterator_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
if (internpix->instanciated_correctly < 1) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
if (!internpix->pixel_iterator || !IsPixelIterator(internpix->pixel_iterator)) {
if (!internpix->initialized) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
@@ -107,12 +133,7 @@ PHP_METHOD(imagickpixeliterator, synciterator)
internpix = (php_imagickpixeliterator_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
if (internpix->instanciated_correctly < 1) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
if (!internpix->pixel_iterator || !IsPixelIterator(internpix->pixel_iterator)) {
if (!internpix->initialized) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
@@ -135,12 +156,7 @@ PHP_METHOD(imagickpixeliterator, setiteratorfirstrow)
internpix = (php_imagickpixeliterator_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
if (internpix->instanciated_correctly < 1) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
if (!internpix->pixel_iterator || !IsPixelIterator(internpix->pixel_iterator)) {
if (!internpix->initialized) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
@@ -166,12 +182,7 @@ PHP_METHOD(imagickpixeliterator, setiteratorlastrow)
internpix = (php_imagickpixeliterator_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
if (internpix->instanciated_correctly < 1) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
if (!internpix->pixel_iterator || !IsPixelIterator(internpix->pixel_iterator)) {
if (!internpix->initialized) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
@@ -184,11 +195,47 @@ PHP_METHOD(imagickpixeliterator, setiteratorlastrow)
}
/* }}} */
/* {{{ proto ImagickPixelIterator ImagickPixelIterator::getPixelIterator(Imagick source)
Returns a new pixel iterator, static method
*/
PHP_METHOD(imagickpixeliterator, getpixeliterator)
{
PixelIterator *pixel_it;
zval *magick_object;
php_imagick_object *intern;
/* Parse parameters given to function */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &magick_object, php_imagick_sc_entry) == FAILURE) {
return;
}
intern = (php_imagick_object *)zend_object_store_get_object(magick_object TSRMLS_CC);
if (!intern->magick_wand) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "Invalid Imagick object passed" TSRMLS_CC);
return;
}
if (php_imagick_ensure_not_empty (intern->magick_wand) == 0)
return;
pixel_it = NewPixelIterator (intern->magick_wand);
if (!pixel_it) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "Can not allocate ImagickPixelIterator" TSRMLS_CC);
return;
}
php_imagick_pixel_iterator_new (pixel_it, return_value TSRMLS_CC);
return;
}
/* }}} */
/* {{{ proto ImagickPixelIterator ImagickPixelIterator::newPixelIterator(Imagick source)
Returns a new pixel iterator.
*/
PHP_METHOD(imagickpixeliterator, newpixeliterator)
{
PixelIterator *pixel_it;
zval *magick_object;
php_imagickpixeliterator_object *internpix;
php_imagick_object *intern;
@@ -198,36 +245,81 @@ PHP_METHOD(imagickpixeliterator, newpixeliterator)
return;
}
IMAGICK_METHOD_DEPRECATED_USE_INSTEAD("ImagickPixelIterator", "newPixelIterator", "ImagickPixelIterator", "getPixelIterator");
internpix = (php_imagickpixeliterator_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
intern = (php_imagick_object *)zend_object_store_get_object(magick_object TSRMLS_CC);
if (php_imagick_ensure_not_empty (intern->magick_wand) == 0)
return;
if (!intern->magick_wand || !IsMagickWand(intern->magick_wand)) {
if (!intern->magick_wand) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "Invalid Imagick object passed" TSRMLS_CC);
return;
}
internpix->pixel_iterator = NewPixelIterator(intern->magick_wand);
internpix->iterator_type = 1;
#if MagickLibVersion <= 0x628
count_pixeliterator_rows(internpix TSRMLS_CC);
#endif
if (!internpix->pixel_iterator || !IsPixelIterator(internpix->pixel_iterator)) {
if (php_imagick_ensure_not_empty (intern->magick_wand) == 0)
return;
pixel_it = NewPixelIterator(intern->magick_wand);
if (!pixel_it) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "Can not allocate ImagickPixelIterator" TSRMLS_CC);
return;
}
internpix->instanciated_correctly = 1;
if (internpix->initialized && internpix->pixel_iterator)
DestroyPixelIterator (internpix->pixel_iterator);
internpix->pixel_iterator = pixel_it;
#if MagickLibVersion <= 0x628
internpix->rows = s_count_pixeliterator_rows (internpix);
#endif
internpix->initialized = 1;
RETURN_TRUE;
}
/* }}} */
/* {{{ proto ImagickPixelIterator ImagickPixelIterator::getPixelRegionIterator(Imagick source, int x, int y, int columns, int rows)
Returns a new pixel region iterator, static method
*/
PHP_METHOD(imagickpixeliterator, getpixelregioniterator)
{
PixelIterator *pixel_it;
zval *magick_object;
php_imagick_object *intern;
long x, y, columns, rows;
/* Parse parameters given to function */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &magick_object, php_imagick_sc_entry, &x, &y, &columns, &rows) == FAILURE) {
return;
}
intern = (php_imagick_object *)zend_object_store_get_object(magick_object TSRMLS_CC);
if (!intern->magick_wand) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "Invalid Imagick object passed" TSRMLS_CC);
return;
}
if (php_imagick_ensure_not_empty (intern->magick_wand) == 0)
return;
pixel_it = NewPixelRegionIterator(intern->magick_wand, x, y, columns, rows);
if (!pixel_it) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "Can not allocate ImagickPixelIterator" TSRMLS_CC);
return;
}
php_imagick_pixel_iterator_new (pixel_it, return_value TSRMLS_CC);
return;
}
/* }}} */
/* {{{ proto bool ImagickPixelIterator::newPixelRegionIterator(Imagick source, int x, int y, int columns, int rows)
Returns a new pixel iterator.
*/
PHP_METHOD(imagickpixeliterator, newpixelregioniterator)
{
PixelIterator *pixel_it;
zval *magick_object;
php_imagickpixeliterator_object *internpix;
php_imagick_object *intern;
@@ -238,10 +330,12 @@ PHP_METHOD(imagickpixeliterator, newpixelregioniterator)
return;
}
IMAGICK_METHOD_DEPRECATED_USE_INSTEAD("ImagickPixelIterator", "newPixelRegionIterator", "ImagickPixelIterator", "getPixelRegionIterator");
internpix = (php_imagickpixeliterator_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
intern = (php_imagick_object *)zend_object_store_get_object(magick_object TSRMLS_CC);
if (!intern->magick_wand || !IsMagickWand(intern->magick_wand)) {
if (!intern->magick_wand) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "Invalid Imagick object passed" TSRMLS_CC);
return;
}
@@ -249,17 +343,22 @@ PHP_METHOD(imagickpixeliterator, newpixelregioniterator)
if (php_imagick_ensure_not_empty (intern->magick_wand) == 0)
return;
internpix->pixel_iterator = NewPixelRegionIterator(intern->magick_wand, x, y, columns, rows);
internpix->iterator_type = 2;
#if MagickLibVersion <= 0x628
count_pixeliterator_rows(internpix TSRMLS_CC);
#endif
if (!internpix->pixel_iterator || !IsPixelIterator(internpix->pixel_iterator)) {
pixel_it = NewPixelRegionIterator(intern->magick_wand, x, y, columns, rows);
if (!pixel_it) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "Can not allocate ImagickPixelIterator" TSRMLS_CC);
return;
}
internpix->instanciated_correctly = 1;
if (internpix->initialized && internpix->pixel_iterator)
DestroyPixelIterator (internpix->pixel_iterator);
internpix->pixel_iterator = pixel_it;
#if MagickLibVersion <= 0x628
internpix->rows = s_count_pixeliterator_rows (internpix);
#endif
internpix->initialized = 1;
RETURN_TRUE;
}
/* }}} */
@@ -276,15 +375,11 @@ PHP_METHOD(imagickpixeliterator, getiteratorrow)
}
internpix = (php_imagickpixeliterator_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
if (internpix->instanciated_correctly < 1) {
if (!internpix->initialized) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
if (!internpix->pixel_iterator || !IsPixelIterator(internpix->pixel_iterator)) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
#if MagickLibVersion <= 0x628
ZVAL_LONG(return_value, internpix->iterator_position);
#else
@@ -310,12 +405,7 @@ PHP_METHOD(imagickpixeliterator, setiteratorrow)
internpix = (php_imagickpixeliterator_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
if (internpix->instanciated_correctly < 1) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
if (!internpix->pixel_iterator || !IsPixelIterator(internpix->pixel_iterator)) {
if (!internpix->initialized) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
@@ -350,12 +440,7 @@ PHP_METHOD(imagickpixeliterator, getpreviousiteratorrow)
internpix = (php_imagickpixeliterator_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
if (internpix->instanciated_correctly < 1) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
if (!internpix->pixel_iterator || !IsPixelIterator(internpix->pixel_iterator)) {
if (!internpix->initialized) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
@@ -373,9 +458,7 @@ PHP_METHOD(imagickpixeliterator, getpreviousiteratorrow)
}
array_init(return_value);
for (i = 0; i < num_wands; i++) {
if (wand_array[i] != NULL && IsPixelWand (wand_array[i])) {
MAKE_STD_ZVAL(tmp_pixelwand);
object_init_ex(tmp_pixelwand, php_imagickpixel_sc_entry);
@@ -409,15 +492,11 @@ PHP_METHOD(imagickpixeliterator, getcurrentiteratorrow)
internpix = (php_imagickpixeliterator_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
if (internpix->instanciated_correctly < 1) {
if (!internpix->initialized) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
if (!internpix->pixel_iterator || !IsPixelIterator(internpix->pixel_iterator)) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
#if MagickLibVersion <= 0x628
if (internpix->iterator_position >= internpix->rows) {
RETURN_NULL();
@@ -469,12 +548,7 @@ PHP_METHOD(imagickpixeliterator, getnextiteratorrow)
internpix = (php_imagickpixeliterator_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
if (internpix->instanciated_correctly < 1) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
if (!internpix->pixel_iterator || !IsPixelIterator(internpix->pixel_iterator)) {
if (!internpix->initialized) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
@@ -490,11 +564,8 @@ PHP_METHOD(imagickpixeliterator, getnextiteratorrow)
}
array_init(return_value);
for (i = 0; i < num_wands; i++) {
if (wand_array[i] != NULL && IsPixelWand (wand_array[i])) {
MAKE_STD_ZVAL(tmp_pixelwand);
object_init_ex(tmp_pixelwand, php_imagickpixel_sc_entry);
internp = (php_imagickpixel_object *)zend_object_store_get_object(tmp_pixelwand TSRMLS_CC);
@@ -507,38 +578,6 @@ PHP_METHOD(imagickpixeliterator, getnextiteratorrow)
}
/* }}} */
/* {{{ proto bool ImagickPixelIterator::destroy()
Deallocates resources associated with a PixelIterator.
*/
PHP_METHOD(imagickpixeliterator, destroy)
{
zval *object;
php_imagickpixeliterator_object *internpix;
object = getThis();
if (zend_parse_parameters_none() == FAILURE) {
return;
}
internpix = (php_imagickpixeliterator_object *)zend_object_store_get_object(object TSRMLS_CC);
if (internpix->instanciated_correctly < 1) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
if (!internpix->pixel_iterator || !IsPixelIterator(internpix->pixel_iterator)) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
#if MagickLibVersion >= 0x628
ClearPixelIterator(internpix->pixel_iterator);
#endif
RETURN_TRUE;
}
/* }}} */
/* {{{ proto bool ImagickPixelIterator::clear()
Clear resources associated with a PixelIterator.
*/
@@ -551,12 +590,7 @@ PHP_METHOD(imagickpixeliterator, clear)
}
internpix = (php_imagickpixeliterator_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
if (internpix->instanciated_correctly < 1) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
if (!internpix->pixel_iterator || !IsPixelIterator(internpix->pixel_iterator)) {
if (!internpix->initialized) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
@@ -580,15 +614,10 @@ PHP_METHOD(imagickpixeliterator, valid)
if (zend_parse_parameters_none() == FAILURE) {
return;
}
internpix = (php_imagickpixeliterator_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
if (internpix->instanciated_correctly < 1) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
if (!internpix->pixel_iterator || !IsPixelIterator(internpix->pixel_iterator)) {
if (!internpix->initialized) {
php_imagick_throw_exception (IMAGICKPIXELITERATOR_CLASS, "ImagickPixelIterator is not initialized correctly" TSRMLS_CC);
return;
}
+4 -2
View File
@@ -107,8 +107,8 @@ typedef struct _php_imagickdraw_object {
typedef struct _php_imagickpixeliterator_object {
zend_object zo;
PixelIterator *pixel_iterator;
long instanciated_correctly;
int iterator_type;
zend_bool initialized;
#if MagickLibVersion <= 0x628
long rows;
long iterator_position;
@@ -672,6 +672,8 @@ PHP_METHOD(imagickdraw, push);
PHP_METHOD(imagickpixeliterator, __construct);
PHP_METHOD(imagickpixeliterator, newpixeliterator);
PHP_METHOD(imagickpixeliterator, newpixelregioniterator);
PHP_METHOD(imagickpixeliterator, getpixeliterator);
PHP_METHOD(imagickpixeliterator, getpixelregioniterator);
PHP_METHOD(imagickpixeliterator, getiteratorrow);
PHP_METHOD(imagickpixeliterator, setiteratorrow);
PHP_METHOD(imagickpixeliterator, getpreviousiteratorrow);
+2 -4
View File
@@ -22,10 +22,6 @@
void php_imagick_initialize_constants(TSRMLS_D);
#if MagickLibVersion <= 0x628
void count_pixeliterator_rows(php_imagickpixeliterator_object *internpix TSRMLS_DC );
#endif
zend_bool php_imagick_check_font(char *font, int font_len TSRMLS_DC);
zend_bool php_imagick_thumbnail_dimensions(MagickWand *magick_wand, zend_bool bestfit, long desired_width, long desired_height, long *new_width, long *new_height);
@@ -62,6 +58,8 @@ void php_imagick_replace_pixelwand (php_imagickpixel_object *obj, PixelWand *new
zend_bool php_imagick_ensure_not_empty (MagickWand *magick_wand);
/* Defined in imagickpixeliterator_class.c */
void php_imagick_pixel_iterator_new (PixelIterator *pixel_it, zval *return_value TSRMLS_DC);
/*
Convert ImageMagick exception types to PHP exceptions
+6 -2
View File
@@ -29,10 +29,14 @@
} \
} while (0)
#if !defined(E_DEPRECATED)
# define E_DEPRECATED E_STRICT
#endif
#define IMAGICK_METHOD_DEPRECATED(class_name, method_name) \
php_error(E_STRICT, "%s::%s method is deprecated and it's use should be avoided", class_name, method_name);
php_error(E_DEPRECATED, "%s::%s method is deprecated and it's use should be avoided", class_name, method_name);
#define IMAGICK_METHOD_DEPRECATED_USE_INSTEAD(class_name, method_name, new_class, new_method) \
php_error(E_STRICT, "%s::%s is deprecated. %s::%s should be used instead", class_name, method_name, new_class, new_method);
php_error(E_DEPRECATED, "%s::%s is deprecated. %s::%s should be used instead", class_name, method_name, new_class, new_method);
#endif /* PHP_IMAGICK_MACROS_H */
+1 -1
View File
@@ -20,6 +20,6 @@ var_dump($im->width, $new2->width);
int(100)
int(200)
Strict Standards: Imagick::clone method is deprecated and it's use should be avoided in %s on line %d
%s: Imagick::clone method is deprecated and it's use should be avoided in %s on line %d
int(100)
int(200)