[PATCH] for ming.c to work with HEAD

From: Date: Thu, 04 Sep 2003 14:02:25 +0000
Subject: [PATCH] for ming.c to work with HEAD
Groups: php.internals 
Request: Send a blank email to internals+get-4374@lists.php.net to get a copy of this message
Hi, all. Ming extension doesn't work with current HEAD. This patch fixes the problem. And there is some problems with Ming documentation. For example, "new SWFBitmap()" waits for _file contents_ to be passed as first argument, but manual says: new swfbitmap ( string filename [, int alphafilename]) Of course it fails if you're trying to pass filename. --- WBR, Antony Dovgal aka tony2001 tony2001@phpclub.net

--- ming.c.orig Fri Aug 15 11:07:55 2003 +++ ming.c Thu Sep 4 17:52:17 2003 @@ -4,10 +4,10 @@ +----------------------------------------------------------------------+ | Copyright (c) 1997-2003 The PHP Group | +----------------------------------------------------------------------+ - | This source file is subject to version 2.02 of the PHP license, | + | This source file is subject to version 3.0 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | - | available at through the world-wide-web at | - | http://www.php.net/license/2_02.txt. | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_0.txt. | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ming.c,v 1.42.2.9 2003/08/11 01:55:07 sniper Exp $ */ +/* $Id: ming.c,v 1.54 2003/08/11 01:54:44 sniper Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -122,19 +122,20 @@ static int le_swfspritep; static int le_swfinputp; -zend_class_entry movie_class_entry; -zend_class_entry shape_class_entry; -zend_class_entry fill_class_entry; -zend_class_entry gradient_class_entry; -zend_class_entry bitmap_class_entry; -zend_class_entry font_class_entry; -zend_class_entry text_class_entry; -zend_class_entry textfield_class_entry; -zend_class_entry displayitem_class_entry; -zend_class_entry button_class_entry; -zend_class_entry action_class_entry; -zend_class_entry morph_class_entry; -zend_class_entry sprite_class_entry; + +static zend_class_entry *movie_class_entry_ptr; +static zend_class_entry *shape_class_entry_ptr; +static zend_class_entry *fill_class_entry_ptr; +static zend_class_entry *gradient_class_entry_ptr; +static zend_class_entry *bitmap_class_entry_ptr; +static zend_class_entry *font_class_entry_ptr; +static zend_class_entry *text_class_entry_ptr; +static zend_class_entry *textfield_class_entry_ptr; +static zend_class_entry *displayitem_class_entry_ptr; +static zend_class_entry *button_class_entry_ptr; +static zend_class_entry *action_class_entry_ptr; +static zend_class_entry *morph_class_entry_ptr; +static zend_class_entry *sprite_class_entry_ptr; /* {{{ internal function SWFgetProperty */ @@ -173,21 +174,21 @@ Returns the SWFCharacter contained in zval *id */ static SWFCharacter getCharacter(zval *id TSRMLS_DC) { - if (Z_OBJCE_P(id) == &shape_class_entry) + if (Z_OBJCE_P(id) == shape_class_entry_ptr) return (SWFCharacter)getShape(id TSRMLS_CC); - else if (Z_OBJCE_P(id) == &font_class_entry) + else if (Z_OBJCE_P(id) == font_class_entry_ptr) return (SWFCharacter)getFont(id TSRMLS_CC); - else if (Z_OBJCE_P(id) == &text_class_entry) + else if (Z_OBJCE_P(id) == text_class_entry_ptr) return (SWFCharacter)getText(id TSRMLS_CC); - else if (Z_OBJCE_P(id) == &textfield_class_entry) + else if (Z_OBJCE_P(id) == textfield_class_entry_ptr) return (SWFCharacter)getTextField(id TSRMLS_CC); - else if (Z_OBJCE_P(id) == &button_class_entry) + else if (Z_OBJCE_P(id) == button_class_entry_ptr) return (SWFCharacter)getButton(id TSRMLS_CC); - else if (Z_OBJCE_P(id) == &morph_class_entry) + else if (Z_OBJCE_P(id) == morph_class_entry_ptr) return (SWFCharacter)getMorph(id TSRMLS_CC); - else if (Z_OBJCE_P(id) == &sprite_class_entry) + else if (Z_OBJCE_P(id) == sprite_class_entry_ptr) return (SWFCharacter)getSprite(id TSRMLS_CC); - else if (Z_OBJCE_P(id) == &bitmap_class_entry) + else if (Z_OBJCE_P(id) == bitmap_class_entry_ptr) return (SWFCharacter)getBitmap(id TSRMLS_CC); else php_error_docref(NULL TSRMLS_CC, E_ERROR, "Called object is not an SWFCharacter"); @@ -253,7 +254,7 @@ ret = zend_list_insert(action, le_swfactionp); - object_init_ex(getThis(), &action_class_entry); + object_init_ex(getThis(), action_class_entry_ptr); add_property_resource(getThis(), "action", ret); zend_list_addref(ret); } @@ -326,7 +327,7 @@ } ret = zend_list_insert(bitmap, le_swfbitmapp); - object_init_ex(getThis(), &bitmap_class_entry); + object_init_ex(getThis(), bitmap_class_entry_ptr); add_property_resource(getThis(), "bitmap", ret); zend_list_addref(ret); } @@ -388,7 +389,7 @@ SWFButton button = newSWFButton(); int ret = zend_list_insert(button, le_swfbuttonp); - object_init_ex(getThis(), &button_class_entry); + object_init_ex(getThis(), button_class_entry_ptr); add_property_resource(getThis(), "button", ret); zend_list_addref(ret); } @@ -1096,7 +1097,7 @@ ret = zend_list_insert(font, le_swffontp); - object_init_ex(getThis(), &font_class_entry); + object_init_ex(getThis(), font_class_entry_ptr); add_property_resource(getThis(), "font", ret); zend_list_addref(ret); } @@ -1163,7 +1164,7 @@ SWFGradient gradient = newSWFGradient(); int ret = zend_list_insert(gradient, le_swfgradientp); - object_init_ex(getThis(), &gradient_class_entry); + object_init_ex(getThis(), gradient_class_entry_ptr); add_property_resource(getThis(), "gradient", ret); zend_list_addref(ret); } @@ -1238,7 +1239,7 @@ SWFMorph morph = newSWFMorphShape(); int ret = zend_list_insert(morph, le_swfmorphp); - object_init_ex(getThis(), &morph_class_entry); + object_init_ex(getThis(), morph_class_entry_ptr); add_property_resource(getThis(), "morph", ret); zend_list_addref(ret); } @@ -1270,7 +1271,7 @@ SWFShape shape = SWFMorph_getShape1(morph); int ret = zend_list_insert(shape, le_swfshapep); - object_init_ex(return_value, &shape_class_entry); + object_init_ex(return_value, shape_class_entry_ptr); add_property_resource(return_value, "shape", ret); zend_list_addref(ret); } @@ -1284,7 +1285,7 @@ SWFShape shape = SWFMorph_getShape2(morph); int ret = zend_list_insert(shape, le_swfshapep); - object_init_ex(return_value, &shape_class_entry); + object_init_ex(return_value, shape_class_entry_ptr); add_property_resource(return_value, "shape", ret); zend_list_addref(ret); } @@ -1332,7 +1333,7 @@ ret = zend_list_insert(movie, le_swfmoviep); - object_init_ex(getThis(), &movie_class_entry); + object_init_ex(getThis(), movie_class_entry_ptr); add_property_resource(getThis(), "movie", ret); zend_list_addref(ret); } @@ -1395,7 +1396,7 @@ convert_to_object_ex(zchar); /* XXX - SWFMovie_add deals w/ all block types. Probably will need to add that.. */ - if (Z_OBJCE_PP(zchar) == &action_class_entry) { + if (Z_OBJCE_PP(zchar) == action_class_entry_ptr) { block = (SWFBlock) getAction(*zchar TSRMLS_CC); } else { block = (SWFBlock) getCharacter(*zchar TSRMLS_CC); @@ -1406,7 +1407,7 @@ if (item != NULL) { /* try and create a displayitem object */ ret = zend_list_insert(item, le_swfdisplayitemp); - object_init_ex(return_value, &displayitem_class_entry); + object_init_ex(return_value, displayitem_class_entry_ptr); add_property_resource(return_value, "displayitem", ret); } } @@ -1701,7 +1702,7 @@ SWFShape shape = newSWFShape(); int ret = zend_list_insert(shape, le_swfshapep); - object_init_ex(getThis(), &shape_class_entry); + object_init_ex(getThis(), shape_class_entry_ptr); add_property_resource(getThis(), "shape", ret); zend_list_addref(ret); } @@ -1792,12 +1793,12 @@ convert_to_object_ex(arg1); - if (Z_OBJCE_PP(arg1) == &gradient_class_entry) { + if (Z_OBJCE_PP(arg1) == gradient_class_entry_ptr) { if (flags == 0) { flags = SWFFILL_LINEAR_GRADIENT; } fill = SWFShape_addGradientFill(getShape(getThis() TSRMLS_CC), getGradient(*arg1 TSRMLS_CC), flags); - } else if (Z_OBJCE_PP(arg1) == &bitmap_class_entry) { + } else if (Z_OBJCE_PP(arg1) == bitmap_class_entry_ptr) { if (flags == 0) { flags = SWFFILL_TILED_BITMAP; } @@ -1841,7 +1842,7 @@ /* return an SWFFill object */ ret = zend_list_insert(fill, le_swffillp); - object_init_ex(return_value, &fill_class_entry); + object_init_ex(return_value, fill_class_entry_ptr); add_property_resource(return_value, "fill", ret); } /* }}} */ @@ -2210,7 +2211,7 @@ SWFMovieClip sprite = newSWFMovieClip(); int ret = zend_list_insert(sprite, le_swfspritep); - object_init_ex(getThis(), &sprite_class_entry); + object_init_ex(getThis(), sprite_class_entry_ptr); add_property_resource(getThis(), "sprite", ret); zend_list_addref(ret); } @@ -2250,7 +2251,7 @@ convert_to_object_ex(zchar); - if (Z_OBJCE_PP(zchar) == &action_class_entry) { + if (Z_OBJCE_PP(zchar) == action_class_entry_ptr) { block = (SWFBlock)getAction(*zchar TSRMLS_CC); } else { block = (SWFBlock)getCharacter(*zchar TSRMLS_CC); @@ -2261,7 +2262,7 @@ if (item != NULL) { /* try and create a displayitem object */ ret = zend_list_insert(item, le_swfdisplayitemp); - object_init_ex(return_value, &displayitem_class_entry); + object_init_ex(return_value, displayitem_class_entry_ptr); add_property_resource(return_value, "displayitem", ret); } } @@ -2346,7 +2347,7 @@ SWFText text = newSWFText2(); int ret = zend_list_insert(text, le_swftextp); - object_init_ex(getThis(), &text_class_entry); + object_init_ex(getThis(), text_class_entry_ptr); add_property_resource(getThis(), "text", ret); zend_list_addref(ret); } @@ -2546,7 +2547,7 @@ SWFTextField field = newSWFTextField(); int ret = zend_list_insert(field, le_swftextfieldp); - object_init_ex(getThis(), &textfield_class_entry); + object_init_ex(getThis(), textfield_class_entry_ptr); add_property_resource(getThis(), "textfield", ret); zend_list_addref(ret); @@ -2835,6 +2836,20 @@ PHP_MINIT_FUNCTION(ming) { + zend_class_entry shape_class_entry; + zend_class_entry fill_class_entry; + zend_class_entry gradient_class_entry; + zend_class_entry bitmap_class_entry; + zend_class_entry text_class_entry; + zend_class_entry textfield_class_entry; + zend_class_entry font_class_entry; + zend_class_entry displayitem_class_entry; + zend_class_entry movie_class_entry; + zend_class_entry button_class_entry; + zend_class_entry action_class_entry; + zend_class_entry morph_class_entry; + zend_class_entry sprite_class_entry; + Ming_setErrorFunction((void *) php_ming_error); #define CONSTANT(s,c) REGISTER_LONG_CONSTANT((s), (c), CONST_CS | CONST_PERSISTENT) @@ -2916,19 +2931,19 @@ INIT_CLASS_ENTRY(morph_class_entry, "swfmorph", swfmorph_functions); INIT_CLASS_ENTRY(sprite_class_entry, "swfsprite", swfsprite_functions); - zend_register_internal_class(&shape_class_entry TSRMLS_CC); - zend_register_internal_class(&fill_class_entry TSRMLS_CC); - zend_register_internal_class(&gradient_class_entry TSRMLS_CC); - zend_register_internal_class(&bitmap_class_entry TSRMLS_CC); - zend_register_internal_class(&text_class_entry TSRMLS_CC); - zend_register_internal_class(&textfield_class_entry TSRMLS_CC); - zend_register_internal_class(&font_class_entry TSRMLS_CC); - zend_register_internal_class(&displayitem_class_entry TSRMLS_CC); - zend_register_internal_class(&movie_class_entry TSRMLS_CC); - zend_register_internal_class(&button_class_entry TSRMLS_CC); - zend_register_internal_class(&action_class_entry TSRMLS_CC); - zend_register_internal_class(&morph_class_entry TSRMLS_CC); - zend_register_internal_class(&sprite_class_entry TSRMLS_CC); + shape_class_entry_ptr = zend_register_internal_class(&shape_class_entry TSRMLS_CC); + fill_class_entry_ptr = zend_register_internal_class(&fill_class_entry TSRMLS_CC); + gradient_class_entry_ptr = zend_register_internal_class(&gradient_class_entry TSRMLS_CC); + bitmap_class_entry_ptr = zend_register_internal_class(&bitmap_class_entry TSRMLS_CC); + text_class_entry_ptr = zend_register_internal_class(&text_class_entry TSRMLS_CC); + textfield_class_entry_ptr = zend_register_internal_class(&textfield_class_entry TSRMLS_CC); + font_class_entry_ptr = zend_register_internal_class(&font_class_entry TSRMLS_CC); + displayitem_class_entry_ptr = zend_register_internal_class(&displayitem_class_entry TSRMLS_CC); + movie_class_entry_ptr = zend_register_internal_class(&movie_class_entry TSRMLS_CC); + button_class_entry_ptr = zend_register_internal_class(&button_class_entry TSRMLS_CC); + action_class_entry_ptr = zend_register_internal_class(&action_class_entry TSRMLS_CC); + morph_class_entry_ptr = zend_register_internal_class(&morph_class_entry TSRMLS_CC); + sprite_class_entry_ptr = zend_register_internal_class(&sprite_class_entry TSRMLS_CC); return SUCCESS; }
« previous php.internals (#4374) next »