#if HAVE_LIBT1
#include <t1lib.h>
static int le_ps_font, le_ps_enc;
-static void php_free_ps_font(zend_rsrc_list_entry *rsrc TSRMLS_DC);
-static void php_free_ps_enc(zend_rsrc_list_entry *rsrc TSRMLS_DC);
+static void php_free_ps_font(zend_resource *rsrc TSRMLS_DC);
+static void php_free_ps_enc(zend_resource *rsrc TSRMLS_DC);
#endif
#include <gd.h>
static void php_image_filter_pixelate(INTERNAL_FUNCTION_PARAMETERS);
/* End Section filters declarations */
-static gdImagePtr _php_image_create_from_string (zval **Data, char *tn, gdImagePtr (*ioctx_func_p)() TSRMLS_DC);
+static gdImagePtr _php_image_create_from_string (zval *Data, char *tn, gdImagePtr (*ioctx_func_p)() TSRMLS_DC);
static void _php_image_create_from(INTERNAL_FUNCTION_PARAMETERS, int image_type, char *tn, gdImagePtr (*func_p)(), gdImagePtr (*ioctx_func_p)());
static void _php_image_output(INTERNAL_FUNCTION_PARAMETERS, int image_type, char *tn, void (*func_p)());
static int _php_image_type(char data[8]);
/* {{{ php_free_gd_image
*/
-static void php_free_gd_image(zend_rsrc_list_entry *rsrc TSRMLS_DC)
+static void php_free_gd_image(zend_resource *rsrc TSRMLS_DC)
{
gdImageDestroy((gdImagePtr) rsrc->ptr);
}
/* {{{ php_free_gd_font
*/
-static void php_free_gd_font(zend_rsrc_list_entry *rsrc TSRMLS_DC)
+static void php_free_gd_font(zend_resource *rsrc TSRMLS_DC)
{
gdFontPtr fp = (gdFontPtr) rsrc->ptr;
Load a new font */
PHP_FUNCTION(imageloadfont)
{
+ zval *ind;
char *file;
int file_name, hdr_size = sizeof(gdFont) - sizeof(char *);
- int ind, body_size, n = 0, b, i, body_size_check;
+ int body_size, n = 0, b, i, body_size_check;
gdFontPtr font;
php_stream *stream;
}
php_stream_close(stream);
+ ind = zend_list_insert(font, le_gd_font TSRMLS_CC);
+
/* Adding 5 to the font index so we will never have font indices
* that overlap with the old fonts (with indices 1-5). The first
* list index given out is always 1.
*/
- ind = 5 + zend_list_insert(font, le_gd_font TSRMLS_CC);
-
- RETURN_LONG(ind);
+ RETURN_LONG(Z_RES_HANDLE_P(ind) + 5);
}
/* }}} */
Set the line drawing styles for use with imageline and IMG_COLOR_STYLED. */
PHP_FUNCTION(imagesetstyle)
{
- zval *IM, *styles;
+ zval *IM, *styles, *item;
gdImagePtr im;
- int * stylearr;
- int index;
- HashPosition pos;
+ int *stylearr;
+ int index = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &IM, &styles) == FAILURE) {
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
/* copy the style values in the stylearr */
stylearr = safe_emalloc(sizeof(int), zend_hash_num_elements(HASH_OF(styles)), 0);
- zend_hash_internal_pointer_reset_ex(HASH_OF(styles), &pos);
-
- for (index = 0;; zend_hash_move_forward_ex(HASH_OF(styles), &pos)) {
- zval ** item;
-
- if (zend_hash_get_current_data_ex(HASH_OF(styles), (void **) &item, &pos) == FAILURE) {
- break;
- }
-
- if (Z_TYPE_PP(item) != IS_LONG) {
+ ZEND_HASH_FOREACH_VAL(HASH_OF(styles), item) {
+ if (Z_TYPE_P(item) != IS_LONG) {
zval lval;
- lval = **item;
- zval_copy_ctor(&lval);
+ ZVAL_COPY(&lval, item);
convert_to_long(&lval);
stylearr[index++] = Z_LVAL(lval);
} else {
- stylearr[index++] = Z_LVAL_PP(item);
+ stylearr[index++] = Z_LVAL_P(item);
}
- }
+ } ZEND_HASH_FOREACH_END();
gdImageSetStyle(im, stylearr, index);
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
RETURN_BOOL(im->trueColor);
}
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
if (ncolors <= 0) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Number of colors has to be greater than zero");
}
/* }}} */
-
-
/* {{{ proto void imagetruecolortopalette(resource im, bool ditherFlag, int colorsWanted)
Convert a true colour image to a palette based image with a number of colours, optionally using dithering. */
PHP_FUNCTION(imagepalettetotruecolor)
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
if (gdImagePaletteToTrueColor(im) == 0) {
RETURN_FALSE;
return;
}
- ZEND_FETCH_RESOURCE(im1, gdImagePtr, &IM1, -1, "Image", le_gd);
- ZEND_FETCH_RESOURCE(im2, gdImagePtr, &IM2, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im1, gdImagePtr, IM1, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im2, gdImagePtr, IM2, -1, "Image", le_gd);
result = gdImageColorMatch(im1, im2);
switch (result) {
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
gdImageSetThickness(im, thick);
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
gdImageFilledEllipse(im, cx, cy, w, h, color);
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
e = E;
if (e < 0) {
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
gdImageAlphaBlending(im, blend);
RETURN_TRUE;
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
gdImageSaveAlpha(im, save);
RETURN_TRUE;
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
gdImageAlphaBlending(im, effect);
RETURN_TRUE;
RETURN_FALSE;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
ct = gdImageColorAllocateAlpha(im, red, green, blue, alpha);
if (ct < 0) {
RETURN_FALSE;
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
RETURN_LONG(gdImageColorResolveAlpha(im, red, green, blue, alpha));
}
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
RETURN_LONG(gdImageColorClosestAlpha(im, red, green, blue, alpha));
}
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
RETURN_LONG(gdImageColorExactAlpha(im, red, green, blue, alpha));
}
return;
}
- ZEND_FETCH_RESOURCE(im_dst, gdImagePtr, &DIM, -1, "Image", le_gd);
- ZEND_FETCH_RESOURCE(im_src, gdImagePtr, &SIM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im_dst, gdImagePtr, DIM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", le_gd);
srcX = SX;
srcY = SY;
RETURN_FALSE;
}
- ZEND_FETCH_RESOURCE(im_src, gdImagePtr, &SIM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", le_gd);
im_dst = gdImageRotateInterpolated(im_src, (const float)degrees, color);
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
- ZEND_FETCH_RESOURCE(tile, gdImagePtr, &TILE, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(tile, gdImagePtr, TILE, -1, "Image", le_gd);
gdImageSetTile(im, tile);
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
- ZEND_FETCH_RESOURCE(tile, gdImagePtr, &TILE, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(tile, gdImagePtr, TILE, -1, "Image", le_gd);
gdImageSetBrush(im, tile);
/* {{{ _php_image_create_from_string
*/
-gdImagePtr _php_image_create_from_string(zval **data, char *tn, gdImagePtr (*ioctx_func_p)() TSRMLS_DC)
+gdImagePtr _php_image_create_from_string(zval *data, char *tn, gdImagePtr (*ioctx_func_p)() TSRMLS_DC)
{
gdImagePtr im;
gdIOCtx *io_ctx;
- io_ctx = gdNewDynamicCtxEx(Z_STRLEN_PP(data), Z_STRVAL_PP(data), 0);
+ io_ctx = gdNewDynamicCtxEx(Z_STRLEN_P(data), Z_STRVAL_P(data), 0);
if (!io_ctx) {
return NULL;
Create a new image from the image stream in the string */
PHP_FUNCTION(imagecreatefromstring)
{
- zval **data;
+ zval *data;
gdImagePtr im;
int imtype;
char sig[8];
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &data) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &data) == FAILURE) {
return;
}
convert_to_string_ex(data);
- if (Z_STRLEN_PP(data) < 8) {
+ if (Z_STRLEN_P(data) < 8) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty string or invalid image");
RETURN_FALSE;
}
- memcpy(sig, Z_STRVAL_PP(data), 8);
+ memcpy(sig, Z_STRVAL_P(data), 8);
imtype = _php_image_type(sig);
gdImagePtr im = NULL;
php_stream *stream;
FILE * fp = NULL;
+#ifdef HAVE_GD_JPG
long ignore_warning;
+#endif
if (image_type == PHP_GDIMG_TYPE_GD2PART) {
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sllll", &file, &file_len, &srcx, &srcy, &width, &height) == FAILURE) {
} else if (ioctx_func_p) {
/* we can create an io context */
gdIOCtx* io_ctx;
- size_t buff_size;
- char *buff;
+ zend_string *buff;
+ char *pstr;
- /* needs to be malloc (persistent) - GD will free() it later */
- buff_size = php_stream_copy_to_mem(stream, &buff, PHP_STREAM_COPY_ALL, 1);
+ buff = php_stream_copy_to_mem(stream, PHP_STREAM_COPY_ALL, 0);
- if (!buff_size) {
+ if (!buff) {
php_error_docref(NULL TSRMLS_CC, E_WARNING,"Cannot read image data");
goto out_err;
}
- io_ctx = gdNewDynamicCtxEx(buff_size, buff, 0);
+ /* needs to be malloc (persistent) - GD will free() it later */
+ pstr = pestrndup(buff->val, buff->len, 1);
+ io_ctx = gdNewDynamicCtxEx(buff->len, pstr, 0);
if (!io_ctx) {
- pefree(buff, 1);
+ pefree(pstr, 1);
+ STR_RELEASE(buff);
php_error_docref(NULL TSRMLS_CC, E_WARNING,"Cannot allocate GD IO context");
goto out_err;
}
im = (*ioctx_func_p)(io_ctx);
}
io_ctx->gd_free(io_ctx);
- pefree(buff, 1);
+ pefree(pstr, 1);
+ STR_RELEASE(buff);
}
else if (php_stream_can_cast(stream, PHP_STREAM_AS_STDIO)) {
/* try and force the stream to be FILE* */
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &imgind, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, imgind, -1, "Image", le_gd);
if (argc > 1) {
fn = file;
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
- zend_list_delete(Z_LVAL_P(IM));
+ zend_list_close(Z_RES_P(IM));
RETURN_TRUE;
}
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
ct = gdImageColorAllocate(im, red, green, blue);
if (ct < 0) {
return;
}
- ZEND_FETCH_RESOURCE(dst, gdImagePtr, &dstim, -1, "Image", le_gd);
- ZEND_FETCH_RESOURCE(src, gdImagePtr, &srcim, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(dst, gdImagePtr, dstim, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(src, gdImagePtr, srcim, -1, "Image", le_gd);
gdImagePaletteCopy(dst, src);
}
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
if (gdImageTrueColor(im)) {
if (im->tpixels && gdImageBoundsSafe(im, x, y)) {
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
RETURN_LONG(gdImageColorClosest(im, red, green, blue));
}
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
RETURN_LONG(gdImageColorClosestHWB(im, red, green, blue));
}
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
/* We can return right away for a truecolor image as deallocating colours is meaningless here */
if (gdImageTrueColor(im)) {
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
RETURN_LONG(gdImageColorResolve(im, red, green, blue));
}
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
RETURN_LONG(gdImageColorExact(im, red, green, blue));
}
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
col = color;
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
col = index;
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
if (gdImageTrueColor(im)) {
int x, y, c;
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
gdImageSetPixel(im, x, y, col);
RETURN_TRUE;
}
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
#ifdef HAVE_GD_BUNDLED
if (im->antialias) {
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
gdImageDashedLine(im, x1, y1, x2, y2, col);
RETURN_TRUE;
}
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
gdImageRectangle(im, x1, y1, x2, y2, col);
RETURN_TRUE;
}
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
gdImageFilledRectangle(im, x1, y1, x2, y2, col);
RETURN_TRUE;
}
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
e = E;
if (e < 0) {
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
gdImageEllipse(im, cx, cy, w, h, color);
RETURN_TRUE;
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
gdImageFillToBorder(im, x, y, border, col);
RETURN_TRUE;
}
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
gdImageFill(im, x, y, col);
RETURN_TRUE;
}
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
RETURN_LONG(gdImageColorsTotal(im));
}
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
if (argc > 1) {
gdImageColorTransparent(im, COL);
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
if (argc > 1) {
gdImageInterlace(im, INT);
{
zval *IM, *POINTS;
long NPOINTS, COL;
- zval **var = NULL;
+ zval *var = NULL;
gdImagePtr im;
gdPointPtr points;
int npoints, col, nelem, i;
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
npoints = NPOINTS;
col = COL;
points = (gdPointPtr) safe_emalloc(npoints, sizeof(gdPoint), 0);
for (i = 0; i < npoints; i++) {
- if (zend_hash_index_find(Z_ARRVAL_P(POINTS), (i * 2), (void **) &var) == SUCCESS) {
- if (Z_TYPE_PP(var) != IS_LONG) {
+ if ((var = zend_hash_index_find(Z_ARRVAL_P(POINTS), (i * 2))) != NULL) {
+ if (Z_TYPE_P(var) != IS_LONG) {
zval lval;
- lval = **var;
- zval_copy_ctor(&lval);
+ ZVAL_COPY(&lval, var);
convert_to_long(&lval);
points[i].x = Z_LVAL(lval);
} else {
- points[i].x = Z_LVAL_PP(var);
+ points[i].x = Z_LVAL_P(var);
}
}
- if (zend_hash_index_find(Z_ARRVAL_P(POINTS), (i * 2) + 1, (void **) &var) == SUCCESS) {
- if (Z_TYPE_PP(var) != IS_LONG) {
+ if ((var = zend_hash_index_find(Z_ARRVAL_P(POINTS), (i * 2) + 1)) != NULL) {
+ if (Z_TYPE_P(var) != IS_LONG) {
zval lval;
- lval = **var;
- zval_copy_ctor(&lval);
+ ZVAL_COPY(&lval, var);
convert_to_long(&lval);
points[i].y = Z_LVAL(lval);
} else {
- points[i].y = Z_LVAL_PP(var);
+ points[i].y = Z_LVAL_P(var);
}
}
}
static gdFontPtr php_find_gd_font(int size TSRMLS_DC)
{
gdFontPtr font;
- int ind_type;
switch (size) {
case 1:
- font = gdFontTiny;
- break;
+ font = gdFontTiny;
+ break;
case 2:
- font = gdFontSmall;
- break;
+ font = gdFontSmall;
+ break;
case 3:
- font = gdFontMediumBold;
- break;
+ font = gdFontMediumBold;
+ break;
case 4:
- font = gdFontLarge;
- break;
+ font = gdFontLarge;
+ break;
case 5:
- font = gdFontGiant;
- break;
- default:
- font = zend_list_find(size - 5, &ind_type);
- if (!font || ind_type != le_gd_font) {
- if (size < 1) {
- font = gdFontTiny;
- } else {
- font = gdFontGiant;
- }
+ font = gdFontGiant;
+ break;
+ default: {
+ zval *zv = zend_hash_index_find(&EG(regular_list), size - 5);
+ if (!zv || (Z_RES_P(zv))->type != le_gd_font) {
+ if (size < 1) {
+ font = gdFontTiny;
+ } else {
+ font = gdFontGiant;
+ }
+ } else {
+ font = (gdFontPtr)Z_RES_P(zv)->ptr;
}
- break;
+ }
+ break;
}
return font;
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
col = COL;
return;
}
- ZEND_FETCH_RESOURCE(im_src, gdImagePtr, &SIM, -1, "Image", le_gd);
- ZEND_FETCH_RESOURCE(im_dst, gdImagePtr, &DIM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im_dst, gdImagePtr, DIM, -1, "Image", le_gd);
srcX = SX;
srcY = SY;
return;
}
- ZEND_FETCH_RESOURCE(im_src, gdImagePtr, &SIM, -1, "Image", le_gd);
- ZEND_FETCH_RESOURCE(im_dst, gdImagePtr, &DIM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im_dst, gdImagePtr, DIM, -1, "Image", le_gd);
srcX = SX;
srcY = SY;
return;
}
- ZEND_FETCH_RESOURCE(im_src, gdImagePtr, &SIM, -1, "Image", le_gd);
- ZEND_FETCH_RESOURCE(im_dst, gdImagePtr, &DIM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im_dst, gdImagePtr, DIM, -1, "Image", le_gd);
srcX = SX;
srcY = SY;
return;
}
- ZEND_FETCH_RESOURCE(im_dst, gdImagePtr, &DIM, -1, "Image", le_gd);
- ZEND_FETCH_RESOURCE(im_src, gdImagePtr, &SIM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im_dst, gdImagePtr, DIM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", le_gd);
srcX = SX;
srcY = SY;
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
RETURN_LONG(gdImageSX(im));
}
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
RETURN_LONG(gdImageSY(im));
}
} else if (zend_parse_parameters(argc TSRMLS_CC, "rddlllss|a", &IM, &ptsize, &angle, &x, &y, &col, &fontname, &fontname_len, &str, &str_len, &EXT) == FAILURE) {
RETURN_FALSE;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
}
/* convert angle to radians */
angle = angle * (M_PI/180);
if (extended && EXT) { /* parse extended info */
- HashPosition pos;
+ zval *item;
+ zend_string *key;
+ ulong num_key;
/* walk the assoc array */
- zend_hash_internal_pointer_reset_ex(HASH_OF(EXT), &pos);
- do {
- zval ** item;
- char * key;
- ulong num_key;
-
- if (zend_hash_get_current_key_ex(HASH_OF(EXT), &key, NULL, &num_key, 0, &pos) != HASH_KEY_IS_STRING) {
+ ZEND_HASH_FOREACH_KEY_VAL(HASH_OF(EXT), num_key, key, item) {
+ if (key == NULL) {
continue;
}
-
- if (zend_hash_get_current_data_ex(HASH_OF(EXT), (void **) &item, &pos) == FAILURE) {
- continue;
- }
-
- if (strcmp("linespacing", key) == 0) {
+ if (strcmp("linespacing", key->val) == 0) {
convert_to_double_ex(item);
strex.flags |= gdFTEX_LINESPACE;
- strex.linespacing = Z_DVAL_PP(item);
+ strex.linespacing = Z_DVAL_P(item);
}
-
- } while (zend_hash_move_forward_ex(HASH_OF(EXT), &pos) == SUCCESS);
+ } ZEND_HASH_FOREACH_END();
}
#ifdef VIRTUAL_DIR
/* {{{ php_free_ps_font
*/
-static void php_free_ps_font(zend_rsrc_list_entry *rsrc TSRMLS_DC)
+static void php_free_ps_font(zend_resource *rsrc TSRMLS_DC)
{
- int *font = (int *) rsrc->ptr;
+ int *font = (int *)rsrc->ptr;
T1_DeleteFont(*font);
efree(font);
/* {{{ php_free_ps_enc
*/
-static void php_free_ps_enc(zend_rsrc_list_entry *rsrc TSRMLS_DC)
+static void php_free_ps_enc(zend_resource *rsrc TSRMLS_DC)
{
- char **enc = (char **) rsrc->ptr;
+ char **enc = (char **)rsrc->ptr;
T1_DeleteEncoding(enc);
}
return;
}
- ZEND_FETCH_RESOURCE(f_ind, int *, &fnt, -1, "Type 1 font", le_ps_font);
+ ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", le_ps_font);
zend_list_delete(Z_LVAL_P(fnt));
RETURN_TRUE;
}
return;
}
- ZEND_FETCH_RESOURCE(f_ind, int *, &fnt, -1, "Type 1 font", le_ps_font);
+ ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", le_ps_font);
if ((enc_vector = T1_LoadEncoding(enc)) == NULL) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't load encoding vector from %s", enc);
return;
}
- ZEND_FETCH_RESOURCE(f_ind, int *, &fnt, -1, "Type 1 font", le_ps_font);
+ ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", le_ps_font);
T1_DeleteAllSizes(*f_ind);
return;
}
- ZEND_FETCH_RESOURCE(f_ind, int *, &fnt, -1, "Type 1 font", le_ps_font);
+ ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", le_ps_font);
if (T1_SlantFont(*f_ind, slt) != 0) {
RETURN_FALSE;
RETURN_FALSE;
}
- ZEND_FETCH_RESOURCE(bg_img, gdImagePtr, &img, -1, "Image", le_gd);
- ZEND_FETCH_RESOURCE(f_ind, int *, &fnt, -1, "Type 1 font", le_ps_font);
+ ZEND_FETCH_RESOURCE(bg_img, gdImagePtr, img, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", le_ps_font);
/* Ensure that the provided colors are valid */
if (_fg < 0 || (!gdImageTrueColor(bg_img) && _fg > gdImageColorsTotal(bg_img))) {
per_char = add_width || angle ? 1 : 0;
}
- ZEND_FETCH_RESOURCE(f_ind, int *, &fnt, -1, "Type 1 font", le_ps_font);
+ ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", le_ps_font);
#define max(a, b) (a > b ? a : b)
#define min(a, b) (a < b ? a : b)
int int_threshold;
int x, y;
float x_ratio, y_ratio;
+#ifdef HAVE_GD_JPG
long ignore_warning;
+#endif
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "pplll", &f_org, &f_org_len, &f_dest, &f_dest_len, &height, &width, &threshold) == FAILURE) {
return;
if (zend_parse_parameters(1 TSRMLS_CC, "r", &SIM) == FAILURE) { \
RETURN_FALSE; \
} \
- ZEND_FETCH_RESOURCE(im_src, gdImagePtr, &SIM, -1, "Image", le_gd); \
+ ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", le_gd); \
if (im_src == NULL) { \
RETURN_FALSE; \
}
RETURN_FALSE;
}
- ZEND_FETCH_RESOURCE(im_src, gdImagePtr, &SIM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", le_gd);
if (im_src == NULL) {
RETURN_FALSE;
RETURN_FALSE;
}
- ZEND_FETCH_RESOURCE(im_src, gdImagePtr, &SIM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", le_gd);
if (im_src == NULL) {
RETURN_FALSE;
RETURN_FALSE;
}
- ZEND_FETCH_RESOURCE(im_src, gdImagePtr, &SIM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", le_gd);
if (im_src == NULL) {
RETURN_FALSE;
RETURN_FALSE;
}
- ZEND_FETCH_RESOURCE(im_src, gdImagePtr, &SIM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", le_gd);
if (im_src == NULL) {
RETURN_FALSE;
RETURN_FALSE;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
if (im == NULL) {
RETURN_FALSE;
PHP_FUNCTION(imageconvolution)
{
zval *SIM, *hash_matrix;
- zval **var = NULL, **var2 = NULL;
+ zval *var = NULL, *var2 = NULL;
gdImagePtr im_src = NULL;
double div, offset;
int nelem, i, j, res;
RETURN_FALSE;
}
- ZEND_FETCH_RESOURCE(im_src, gdImagePtr, &SIM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", le_gd);
nelem = zend_hash_num_elements(Z_ARRVAL_P(hash_matrix));
if (nelem != 3) {
}
for (i=0; i<3; i++) {
- if (zend_hash_index_find(Z_ARRVAL_P(hash_matrix), (i), (void **) &var) == SUCCESS && Z_TYPE_PP(var) == IS_ARRAY) {
- if (Z_TYPE_PP(var) != IS_ARRAY || zend_hash_num_elements(Z_ARRVAL_PP(var)) != 3 ) {
+ if ((var = zend_hash_index_find(Z_ARRVAL_P(hash_matrix), (i))) != NULL && Z_TYPE_P(var) == IS_ARRAY) {
+ if (zend_hash_num_elements(Z_ARRVAL_P(var)) != 3 ) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "You must have 3x3 array");
RETURN_FALSE;
}
for (j=0; j<3; j++) {
- if (zend_hash_index_find(Z_ARRVAL_PP(var), (j), (void **) &var2) == SUCCESS) {
- if (Z_TYPE_PP(var2) != IS_DOUBLE) {
+ if ((var2 = zend_hash_index_find(Z_ARRVAL_P(var), (j))) != NULL) {
+ if (Z_TYPE_P(var2) != IS_DOUBLE) {
zval dval;
- dval = **var2;
- zval_copy_ctor(&dval);
+ ZVAL_COPY(&dval, var2);
convert_to_double(&dval);
matrix[i][j] = (float)Z_DVAL(dval);
} else {
- matrix[i][j] = (float)Z_DVAL_PP(var2);
+ matrix[i][j] = (float)Z_DVAL_P(var2);
}
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "You must have a 3x3 matrix");
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
switch (mode) {
case GD_FLIP_VERTICAL:
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
gdImageAntialias(im, alias);
RETURN_TRUE;
}
gdImagePtr im_crop;
gdRect rect;
zval *z_rect;
- zval **tmp;
+ zval *tmp;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra", &IM, &z_rect) == FAILURE) {
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
- if (zend_hash_find(HASH_OF(z_rect), "x", sizeof("x"), (void **)&tmp) != FAILURE) {
- if (Z_TYPE_PP(tmp) != IS_LONG) {
+ if ((tmp = zend_hash_str_find(HASH_OF(z_rect), "x", sizeof("x") -1)) != NULL) {
+ if (Z_TYPE_P(tmp) != IS_LONG) {
zval lval;
- lval = **tmp;
- zval_copy_ctor(&lval);
+ ZVAL_COPY(&lval, tmp);
convert_to_long(&lval);
rect.x = Z_LVAL(lval);
} else {
- rect.x = Z_LVAL_PP(tmp);
+ rect.x = Z_LVAL_P(tmp);
}
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Missing x position");
RETURN_FALSE;
}
- if (zend_hash_find(HASH_OF(z_rect), "y", sizeof("x"), (void **)&tmp) != FAILURE) {
- if (Z_TYPE_PP(tmp) != IS_LONG) {
+ if ((tmp = zend_hash_str_find(HASH_OF(z_rect), "y", sizeof("y") - 1)) != NULL) {
+ if (Z_TYPE_P(tmp) != IS_LONG) {
zval lval;
- lval = **tmp;
- zval_copy_ctor(&lval);
+ ZVAL_COPY(&lval, tmp);
convert_to_long(&lval);
rect.y = Z_LVAL(lval);
} else {
- rect.y = Z_LVAL_PP(tmp);
+ rect.y = Z_LVAL_P(tmp);
}
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Missing y position");
RETURN_FALSE;
}
- if (zend_hash_find(HASH_OF(z_rect), "width", sizeof("width"), (void **)&tmp) != FAILURE) {
- if (Z_TYPE_PP(tmp) != IS_LONG) {
+ if ((tmp = zend_hash_str_find(HASH_OF(z_rect), "width", sizeof("width") - 1)) != NULL) {
+ if (Z_TYPE_P(tmp) != IS_LONG) {
zval lval;
- lval = **tmp;
- zval_copy_ctor(&lval);
+ ZVAL_COPY(&lval, tmp);
convert_to_long(&lval);
rect.width = Z_LVAL(lval);
} else {
- rect.width = Z_LVAL_PP(tmp);
+ rect.width = Z_LVAL_P(tmp);
}
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Missing width");
RETURN_FALSE;
}
- if (zend_hash_find(HASH_OF(z_rect), "height", sizeof("height"), (void **)&tmp) != FAILURE) {
- if (Z_TYPE_PP(tmp) != IS_LONG) {
+ if ((tmp = zend_hash_str_find(HASH_OF(z_rect), "height", sizeof("height") - 1)) != NULL) {
+ if (Z_TYPE_P(tmp) != IS_LONG) {
zval lval;
- lval = **tmp;
- zval_copy_ctor(&lval);
+ ZVAL_COPY(&lval, tmp);
convert_to_long(&lval);
rect.height = Z_LVAL(lval);
} else {
- rect.height = Z_LVAL_PP(tmp);
+ rect.height = Z_LVAL_P(tmp);
}
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Missing height");
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
switch (mode) {
case -1:
new_width = tmp_w;
new_height = tmp_h;
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
if (gdImageSetInterpolationMethod(im, method)) {
im_scaled = gdImageScale(im, new_width, new_height);
gdRectPtr pRect = NULL;
zval *z_rect = NULL;
zval *z_affine;
- zval **tmp;
+ zval *tmp;
double affine[6];
int i, nelems;
- zval **zval_affine_elem = NULL;
+ zval *zval_affine_elem = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ra|a", &IM, &z_affine, &z_rect) == FAILURE) {
return;
}
- ZEND_FETCH_RESOURCE(src, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(src, gdImagePtr, IM, -1, "Image", le_gd);
if ((nelems = zend_hash_num_elements(Z_ARRVAL_P(z_affine))) != 6) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Affine array must have six elements");
}
for (i = 0; i < nelems; i++) {
- if (zend_hash_index_find(Z_ARRVAL_P(z_affine), i, (void **) &zval_affine_elem) == SUCCESS) {
- switch (Z_TYPE_PP(zval_affine_elem)) {
+ if ((zval_affine_elem = zend_hash_index_find(Z_ARRVAL_P(z_affine), i)) != NULL) {
+ switch (Z_TYPE_P(zval_affine_elem)) {
case IS_LONG:
- affine[i] = Z_LVAL_PP(zval_affine_elem);
+ affine[i] = Z_LVAL_P(zval_affine_elem);
break;
case IS_DOUBLE:
- affine[i] = Z_DVAL_PP(zval_affine_elem);
+ affine[i] = Z_DVAL_P(zval_affine_elem);
break;
case IS_STRING:
{
zval dval;
- dval = **zval_affine_elem;
- zval_copy_ctor(&dval);
+ ZVAL_COPY(&dval, zval_affine_elem);
convert_to_double(&dval);
affine[i] = Z_DVAL(dval);
}
}
if (z_rect != NULL) {
- if (zend_hash_find(HASH_OF(z_rect), "x", sizeof("x"), (void **)&tmp) != FAILURE) {
- if (Z_TYPE_PP(tmp) != IS_LONG) {
+ if ((tmp = zend_hash_str_find(HASH_OF(z_rect), "x", sizeof("x") - 1)) != NULL) {
+ if (Z_TYPE_P(tmp) != IS_LONG) {
zval lval;
- lval = **tmp;
- zval_copy_ctor(&lval);
+ ZVAL_COPY(&lval, tmp);
convert_to_long(&lval);
rect.x = Z_LVAL(lval);
} else {
- rect.x = Z_LVAL_PP(tmp);
+ rect.x = Z_LVAL_P(tmp);
}
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Missing x position");
RETURN_FALSE;
}
- if (zend_hash_find(HASH_OF(z_rect), "y", sizeof("x"), (void **)&tmp) != FAILURE) {
- if (Z_TYPE_PP(tmp) != IS_LONG) {
+ if ((tmp = zend_hash_str_find(HASH_OF(z_rect), "y", sizeof("y") - 1)) != NULL) {
+ if (Z_TYPE_P(tmp) != IS_LONG) {
zval lval;
- lval = **tmp;
- zval_copy_ctor(&lval);
+ ZVAL_COPY(&lval, tmp);
convert_to_long(&lval);
rect.y = Z_LVAL(lval);
} else {
- rect.y = Z_LVAL_PP(tmp);
+ rect.y = Z_LVAL_P(tmp);
}
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Missing y position");
RETURN_FALSE;
}
- if (zend_hash_find(HASH_OF(z_rect), "width", sizeof("width"), (void **)&tmp) != FAILURE) {
- if (Z_TYPE_PP(tmp) != IS_LONG) {
+ if ((tmp = zend_hash_str_find(HASH_OF(z_rect), "width", sizeof("width") - 1)) != NULL) {
+ if (Z_TYPE_P(tmp) != IS_LONG) {
zval lval;
- lval = **tmp;
- zval_copy_ctor(&lval);
+ ZVAL_COPY(&lval, tmp);
convert_to_long(&lval);
rect.width = Z_LVAL(lval);
} else {
- rect.width = Z_LVAL_PP(tmp);
+ rect.width = Z_LVAL_P(tmp);
}
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Missing width");
RETURN_FALSE;
}
- if (zend_hash_find(HASH_OF(z_rect), "height", sizeof("height"), (void **)&tmp) != FAILURE) {
- if (Z_TYPE_PP(tmp) != IS_LONG) {
+ if ((tmp = zend_hash_str_find(HASH_OF(z_rect), "height", sizeof("height") - 1)) != NULL) {
+ if (Z_TYPE_P(tmp) != IS_LONG) {
zval lval;
- lval = **tmp;
- zval_copy_ctor(&lval);
+ ZVAL_COPY(&lval, tmp);
convert_to_long(&lval);
rect.height = Z_LVAL(lval);
} else {
- rect.height = Z_LVAL_PP(tmp);
+ rect.height = Z_LVAL_P(tmp);
}
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Missing height");
double affine[6];
long type;
zval *options;
- zval **tmp;
+ zval *tmp;
int res = GD_FALSE, i;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|z", &type, &options) == FAILURE) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Array expected as options");
RETURN_FALSE;
}
- if (zend_hash_find(HASH_OF(options), "x", sizeof("x"), (void **)&tmp) != FAILURE) {
- if (Z_TYPE_PP(tmp) != IS_DOUBLE) {
+ if ((tmp = zend_hash_str_find(HASH_OF(options), "x", sizeof("x") - 1)) != NULL) {
+ if (Z_TYPE_P(tmp) != IS_DOUBLE) {
zval dval;
- dval = **tmp;
- zval_copy_ctor(&dval);
+ ZVAL_COPY(&dval, tmp);
convert_to_double(&dval);
x = Z_DVAL(dval);
} else {
- x = Z_DVAL_PP(tmp);
+ x = Z_DVAL_P(tmp);
}
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Missing x position");
RETURN_FALSE;
}
- if (zend_hash_find(HASH_OF(options), "y", sizeof("y"), (void **)&tmp) != FAILURE) {
- if (Z_TYPE_PP(tmp) != IS_DOUBLE) {
+ if ((tmp = zend_hash_str_find(HASH_OF(options), "y", sizeof("y") - 1)) != NULL) {
+ if (Z_TYPE_P(tmp) != IS_DOUBLE) {
zval dval;
- dval = **tmp;
- zval_copy_ctor(&dval);
+ ZVAL_COPY(&dval, tmp);
convert_to_double(&dval);
y = Z_DVAL(dval);
} else {
- y = Z_DVAL_PP(tmp);
+ y = Z_DVAL_P(tmp);
}
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Missing y position");
case GD_AFFINE_SHEAR_VERTICAL: {
double angle;
- convert_to_double_ex(&options);
+ convert_to_double_ex(options);
angle = Z_DVAL_P(options);
if (type == GD_AFFINE_SHEAR_HORIZONTAL) {
add_index_double(return_value, i, affine[i]);
}
}
-}
-
+} /* }}} */
/* {{{ proto array imageaffineconcat(array m1, array m2)
Concat two matrices (as in doing many ops in one go) */
double m2[6];
double mr[6];
- zval **tmp;
+ zval *tmp;
zval *z_m1;
zval *z_m2;
int i, nelems;
}
for (i = 0; i < 6; i++) {
- if (zend_hash_index_find(Z_ARRVAL_P(z_m1), i, (void **) &tmp) == SUCCESS) {
- switch (Z_TYPE_PP(tmp)) {
+ if ((tmp = zend_hash_index_find(Z_ARRVAL_P(z_m1), i)) != NULL) {
+ switch (Z_TYPE_P(tmp)) {
case IS_LONG:
- m1[i] = Z_LVAL_PP(tmp);
+ m1[i] = Z_LVAL_P(tmp);
break;
case IS_DOUBLE:
- m1[i] = Z_DVAL_PP(tmp);
+ m1[i] = Z_DVAL_P(tmp);
break;
case IS_STRING:
{
zval dval;
- dval = **tmp;
- zval_copy_ctor(&dval);
+ ZVAL_COPY(&dval, tmp);
convert_to_double(&dval);
m1[i] = Z_DVAL(dval);
}
RETURN_FALSE;
}
}
- if (zend_hash_index_find(Z_ARRVAL_P(z_m2), i, (void **) &tmp) == SUCCESS) {
- switch (Z_TYPE_PP(tmp)) {
+ if ((tmp = zend_hash_index_find(Z_ARRVAL_P(z_m2), i)) != NULL) {
+ switch (Z_TYPE_P(tmp)) {
case IS_LONG:
- m2[i] = Z_LVAL_PP(tmp);
+ m2[i] = Z_LVAL_P(tmp);
break;
case IS_DOUBLE:
- m2[i] = Z_DVAL_PP(tmp);
+ m2[i] = Z_DVAL_P(tmp);
break;
case IS_STRING:
{
zval dval;
- dval = **tmp;
- zval_copy_ctor(&dval);
+ ZVAL_COPY(&dval, tmp);
convert_to_double(&dval);
m2[i] = Z_DVAL(dval);
}
for (i = 0; i < 6; i++) {
add_index_double(return_value, i, mr[i]);
}
-}
+} /* }}} */
/* {{{ proto resource imagesetinterpolation(resource im, [, method]])
Set the default interpolation method, passing -1 or 0 sets it to the libgd default (bilinear). */
return;
}
- ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
+ ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd);
if (method == -1) {
method = GD_BILINEAR_FIXED;