diff options
author | Frank M. Kromann <fmk@php.net> | 2006-12-05 21:02:46 +0000 |
---|---|---|
committer | Frank M. Kromann <fmk@php.net> | 2006-12-05 21:02:46 +0000 |
commit | 5dca5450f2e84f0f981d7e9e576676905e450deb (patch) | |
tree | 90f29f87a0028b1c5f85485b51dc056416b3a6e8 /ext/ming | |
parent | 68890ce196a8fd42d7f0a3662940719651dad87f (diff) | |
download | php-git-5dca5450f2e84f0f981d7e9e576676905e450deb.tar.gz |
#39429 Update API
Diffstat (limited to 'ext/ming')
-rw-r--r-- | ext/ming/ming.c | 164 | ||||
-rw-r--r-- | ext/ming/php_ming.h | 38 |
2 files changed, 191 insertions, 11 deletions
diff --git a/ext/ming/ming.c b/ext/ming/ming.c index cd6cfa56b3..2d68d91355 100644 --- a/ext/ming/ming.c +++ b/ext/ming/ming.c @@ -14,6 +14,7 @@ +----------------------------------------------------------------------+ | Authors: Dave Hayden <dave@opaque.net> | | Frank M. Kromann <fmk@php.net> | + | Stuart R. Anderson <anderson@netsweng.com> | +----------------------------------------------------------------------+ */ @@ -51,6 +52,7 @@ static zend_function_entry ming_functions[] = { PHP_FALIAS(ming_keypress, ming_keypress, NULL) #ifdef HAVE_NEW_MING PHP_FALIAS(ming_useconstants, ming_useConstants, NULL) + PHP_FALIAS(ming_setswfcompression, ming_setSWFCompression, NULL) #endif { NULL, NULL, NULL } }; @@ -140,6 +142,19 @@ PHP_FUNCTION(ming_useConstants) Ming_useConstants(Z_LVAL_PP(num)); } /* }}} */ + +/* {{{ set output compression */ +PHP_FUNCTION(ming_setSWFCompression) +{ + zval **num; + if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &num) == FAILURE) + WRONG_PARAM_COUNT; + + convert_to_long_ex(num); + Ming_setSWFCompression(Z_LVAL_PP(num)); +} +/* }}} */ + #endif static int le_swfmoviep; @@ -351,6 +366,7 @@ PHP_METHOD(swfbitmap, __construct) { zval **zfile, **zmask = NULL; SWFBitmap bitmap; + SWFJpegWithAlpha bitmap_alpha; SWFInput input, maskinput; int ret; @@ -383,15 +399,22 @@ PHP_METHOD(swfbitmap, __construct) } else { maskinput = getInput(zmask TSRMLS_CC); } - bitmap = newSWFJpegWithAlpha_fromInput(input, maskinput); + bitmap_alpha = newSWFJpegWithAlpha_fromInput(input, maskinput); + if(bitmap_alpha) { + ret = zend_list_insert(bitmap_alpha, le_swfbitmapp); + object_init_ex(getThis(), bitmap_class_entry_ptr); + add_property_resource(getThis(), "bitmap", ret); + zend_list_addref(ret); + } } else { bitmap = newSWFBitmap_fromInput(input); + if(bitmap) { + ret = zend_list_insert(bitmap, le_swfbitmapp); + object_init_ex(getThis(), bitmap_class_entry_ptr); + add_property_resource(getThis(), "bitmap", ret); + zend_list_addref(ret); + } } - - ret = zend_list_insert(bitmap, le_swfbitmapp); - object_init_ex(getThis(), bitmap_class_entry_ptr); - add_property_resource(getThis(), "bitmap", ret); - zend_list_addref(ret); } static void destroy_SWFBitmap_resource(zend_rsrc_list_entry *resource TSRMLS_DC) @@ -417,6 +440,9 @@ static SWFBitmap getBitmap(zval *id TSRMLS_DC) Returns the width of this bitmap */ PHP_METHOD(swfbitmap, getWidth) { + if(ZEND_NUM_ARGS() != 0) { + WRONG_PARAM_COUNT; + } RETURN_DOUBLE(SWFBitmap_getWidth(getBitmap(getThis() TSRMLS_CC))); } /* }}} */ @@ -425,6 +451,9 @@ PHP_METHOD(swfbitmap, getWidth) Returns the height of this bitmap */ PHP_METHOD(swfbitmap, getHeight) { + if(ZEND_NUM_ARGS() != 0) { + WRONG_PARAM_COUNT; + } RETURN_DOUBLE(SWFBitmap_getHeight(getBitmap(getThis() TSRMLS_CC))); } /* }}} */ @@ -1515,6 +1544,9 @@ PHP_METHOD(swffont, getWideWidth) Returns the ascent of the font, or 0 if not available */ PHP_METHOD(swffont, getAscent) { + if(ZEND_NUM_ARGS() != 0) { + WRONG_PARAM_COUNT; + } RETURN_DOUBLE(SWFFont_getAscent(getFont(getThis() TSRMLS_CC))); } /* }}} */ @@ -1523,6 +1555,9 @@ PHP_METHOD(swffont, getAscent) Returns the descent of the font, or 0 if not available */ PHP_METHOD(swffont, getDescent) { + if(ZEND_NUM_ARGS() != 0) { + WRONG_PARAM_COUNT; + } RETURN_DOUBLE(SWFFont_getDescent(getFont(getThis() TSRMLS_CC))); } /* }}} */ @@ -1531,6 +1566,9 @@ PHP_METHOD(swffont, getDescent) Returns the leading of the font, or 0 if not available */ PHP_METHOD(swffont, getLeading) { + if(ZEND_NUM_ARGS() != 0) { + WRONG_PARAM_COUNT; + } RETURN_DOUBLE(SWFFont_getLeading(getFont(getThis() TSRMLS_CC))); } /* }}} */ @@ -2101,9 +2139,9 @@ PHP_METHOD(swfmovie, __construct) WRONG_PARAM_COUNT; } convert_to_long_ex(version); - movie = newSWFMovie(Z_LVAL_PP(version)); + movie = newSWFMovieWithVersion(Z_LVAL_PP(version)); } else { - movie = newSWFMovie(4); /* default version 4 */ + movie = newSWFMovie(); /* default version 4 */ } ret = zend_list_insert(movie, le_swfmoviep); @@ -2154,6 +2192,48 @@ PHP_METHOD(swfmovie, labelFrame) } /* }}} */ +/* {{{ proto void swfmovie::namedanchor(string name) +*/ +PHP_METHOD(swfmovie, namedAnchor) +{ + zval **name; + + if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &name) == FAILURE) { + WRONG_PARAM_COUNT; + } + + convert_to_string_ex(name); + + SWFMovie_namedAnchor(getMovie(getThis() TSRMLS_CC), Z_STRVAL_PP(name)); +} +/* }}} */ + +/* {{{ proto void swfmovie::protect([ string pasword]) +*/ +PHP_METHOD(swfmovie, protect) +{ + zval **zchar; + SWFMovie movie = getMovie(getThis() TSRMLS_CC); + + switch(ZEND_NUM_ARGS() ) { + case 0: + SWFMovie_protect(movie, NULL); + break; + case 1: + if( zend_get_parameters_ex(1, &zchar) == FAILURE) { + WRONG_PARAM_COUNT; + } + convert_to_string_ex(zchar); + SWFMovie_protect(movie,Z_STRVAL_PP(zchar)); + break; + default: + WRONG_PARAM_COUNT; + break; + } +} +/* }}} */ + + /* {{{ proto object swfmovie::add(object SWFBlock) */ PHP_METHOD(swfmovie, add) @@ -2189,7 +2269,7 @@ PHP_METHOD(swfmovie, add) } /* }}} */ -/* {{{ proto void swfmovie::labelframe(object SWFBlock) +/* {{{ proto void swfmovie::remove(object SWFBlock) */ PHP_METHOD(swfmovie, remove) { @@ -2279,6 +2359,10 @@ static void phpStreamOutputMethod(byte b, void * data) php_stream_write((php_stream*)data, &b, 1); } +/* I'm not sure about the logic here as Ming_setSWFCompression() should be + * used with current Ming. I'll have to add some tests to the test suite to + * verify this functionallity before I can say for sure + */ PHP_METHOD(swfmovie, saveToFile) { zval **x; @@ -2702,6 +2786,8 @@ static zend_function_entry swfmovie_functions[] = { PHP_ME(swfmovie, importChar, NULL, 0) PHP_ME(swfmovie, importFont, NULL, 0) PHP_ME(swfmovie, addFont, NULL, 0) + PHP_ME(swfmovie, namedAnchor, NULL, 0) + PHP_ME(swfmovie, protect, NULL, 0) #endif { NULL, NULL, NULL } }; @@ -3655,6 +3741,9 @@ PHP_METHOD(swftext, getWideWidth) Returns the ascent of the current font at its current size, or 0 if not available */ PHP_METHOD(swftext, getAscent) { + if(ZEND_NUM_ARGS() != 0) { + WRONG_PARAM_COUNT; + } RETURN_DOUBLE(SWFText_getAscent(getText(getThis() TSRMLS_CC))); } /* }}} */ @@ -3663,6 +3752,9 @@ PHP_METHOD(swftext, getAscent) Returns the descent of the current font at its current size, or 0 if not available */ PHP_METHOD(swftext, getDescent) { + if(ZEND_NUM_ARGS() != 0) { + WRONG_PARAM_COUNT; + } RETURN_DOUBLE(SWFText_getDescent(getText(getThis() TSRMLS_CC))); } /* }}} */ @@ -3671,6 +3763,9 @@ PHP_METHOD(swftext, getDescent) Returns the leading of the current font at its current size, or 0 if not available */ PHP_METHOD(swftext, getLeading) { + if(ZEND_NUM_ARGS() != 0) { + WRONG_PARAM_COUNT; + } RETURN_DOUBLE(SWFText_getLeading(getText(getThis() TSRMLS_CC))); } /* }}} */ @@ -3744,6 +3839,19 @@ static SWFTextField getTextField(zval *id TSRMLS_DC) /* {{{ proto void swftextfield::setFont(object font) Sets the font for this textfield */ +static +SWFBlock getFontOrFontChar(zval *id TSRMLS_DC) +{ + if(Z_OBJCE_P(id) == font_class_entry_ptr) { + return (SWFBlock)getFont(id TSRMLS_CC); + } else if(Z_OBJCE_P(id) == fontchar_class_entry_ptr) { + return (SWFBlock)getFontCharacter(id TSRMLS_CC); + } else { + php_error(E_ERROR, "called object is not an SWFFont or SWFFontCharacter"); + } + return NULL; +} + PHP_METHOD(swftextfield, setFont) { zval **font; @@ -3753,7 +3861,7 @@ PHP_METHOD(swftextfield, setFont) WRONG_PARAM_COUNT; } convert_to_object_ex(font); - SWFTextField_setFont(field, getFont(*font TSRMLS_CC)); + SWFTextField_setFont(field, getFontOrFontChar(*font TSRMLS_CC)); } /* }}} */ @@ -4027,6 +4135,25 @@ PHP_MINFO_FUNCTION(ming) /* {{{ todo PHP_MINIT_FUNCTION(ming) */ +#if PHP_API_VERSION == 20020918 +static php4_fix_funcnames(char *class_name, zend_function_entry *funcs) +{ + zend_function_entry *pf = funcs; + char *pname; + + while(funcs->fname) { + if( strcmp(funcs->fname,"__construct") == 0 ) { + pname=strdup(class_name); + } else { + pname=strdup(funcs->fname); + } + funcs->fname=pname; + while(*pname) { *pname=tolower(*pname);pname++;} + funcs++; + } +} +#endif + /* custom error handler propagates ming errors up to php */ static void php_ming_error(const char *msg, ...) { @@ -4123,6 +4250,8 @@ PHP_MINIT_FUNCTION(ming) CONSTANT("SWFTEXTFIELD_DRAWBOX", SWFTEXTFIELD_DRAWBOX); CONSTANT("SWFTEXTFIELD_NOSELECT", SWFTEXTFIELD_NOSELECT); CONSTANT("SWFTEXTFIELD_HTML", SWFTEXTFIELD_HTML); + CONSTANT("SWFTEXTFIELD_USEFONT", SWFTEXTFIELD_USEFONT); + CONSTANT("SWFTEXTFIELD_AUTOSIZE", SWFTEXTFIELD_AUTOSIZE); /* flags for SWFTextField_align */ CONSTANT("SWFTEXTFIELD_ALIGN_LEFT", SWFTEXTFIELD_ALIGN_LEFT); @@ -4141,6 +4270,21 @@ PHP_MINIT_FUNCTION(ming) CONSTANT("SWFACTION_KEYUP", SWFACTION_KEYUP); CONSTANT("SWFACTION_DATA", SWFACTION_DATA); + /* flags for SWFSound */ + CONSTANT("SWF_SOUND_NOT_COMPRESSED", SWF_SOUND_NOT_COMPRESSED); + CONSTANT("SWF_SOUND_ADPCM_COMPRESSED", SWF_SOUND_ADPCM_COMPRESSED); + CONSTANT("SWF_SOUND_MP3_COMPRESSED", SWF_SOUND_MP3_COMPRESSED); + CONSTANT("SWF_SOUND_NOT_COMPRESSED_LE", SWF_SOUND_NOT_COMPRESSED_LE); + CONSTANT("SWF_SOUND_NELLY_COMPRESSED", SWF_SOUND_NELLY_COMPRESSED); + CONSTANT("SWF_SOUND_5KHZ", SWF_SOUND_5KHZ); + CONSTANT("SWF_SOUND_11KHZ", SWF_SOUND_11KHZ); + CONSTANT("SWF_SOUND_22KHZ", SWF_SOUND_22KHZ); + CONSTANT("SWF_SOUND_44KHZ", SWF_SOUND_44KHZ); + CONSTANT("SWF_SOUND_8BITS", SWF_SOUND_8BITS); + CONSTANT("SWF_SOUND_16BITS", SWF_SOUND_16BITS); + CONSTANT("SWF_SOUND_MONO", SWF_SOUND_MONO); + CONSTANT("SWF_SOUND_STEREO", SWF_SOUND_STEREO); + le_swfshapep = zend_register_list_destructors_ex(destroy_SWFShape_resource, NULL, "SWFShape", module_number); le_swffillp = zend_register_list_destructors_ex(destroy_SWFFill_resource, NULL, "SWFFill", module_number); le_swfgradientp = zend_register_list_destructors_ex(destroy_SWFGradient_resource, NULL, "SWFGradient", module_number); diff --git a/ext/ming/php_ming.h b/ext/ming/php_ming.h index 0670a4ef9b..d1a6ef96a8 100644 --- a/ext/ming/php_ming.h +++ b/ext/ming/php_ming.h @@ -14,6 +14,7 @@ +----------------------------------------------------------------------+ | Authors: Dave Hayden <dave@opaque.net> | | Frank M. Kromann <fmk@php.net> | + | Stuart R. Anderson <anderson@netsweng.com> | +----------------------------------------------------------------------+ */ @@ -35,6 +36,12 @@ PHP_METHOD(swfbitmap, init); PHP_METHOD(swfbitmap, getWidth); PHP_METHOD(swfbitmap, getHeight); +PHP_METHOD(swfvideostream, init); +PHP_METHOD(swfvideostream, setdimention); +PHP_METHOD(swfvideostream, getnumframes); + +PHP_METHOD(swfprebuiltclip, init); + PHP_METHOD(swffill, init); PHP_METHOD(swffill, moveTo); PHP_METHOD(swffill, scaleTo); @@ -62,6 +69,8 @@ PHP_METHOD(swfshape, drawcircle); PHP_METHOD(swfshape, drawcubic); PHP_METHOD(swfshape, drawcubicto); +/* SWFMovie */ + PHP_METHOD(swfmovie, init); PHP_METHOD(swfmovie, output); PHP_METHOD(swfmovie, saveToFile); @@ -70,12 +79,14 @@ PHP_METHOD(swfmovie, add); PHP_METHOD(swfmovie, remove); PHP_METHOD(swfmovie, nextFrame); PHP_METHOD(swfmovie, labelFrame); +PHP_METHOD(swfmovie, namedAnchor); PHP_METHOD(swfmovie, setBackground); PHP_METHOD(swfmovie, setRate); PHP_METHOD(swfmovie, setDimension); PHP_METHOD(swfmovie, setFrames); #ifdef HAVE_NEW_MING +PHP_METHOD(swfmovie, protect); PHP_METHOD(swfmovie, streamMp3); PHP_METHOD(swfmovie, addExport); PHP_METHOD(swfmovie, writeExports); @@ -84,7 +95,9 @@ PHP_METHOD(swfmovie, stopSound); PHP_METHOD(swfmovie, importChar); PHP_METHOD(swfmovie, importFont); PHP_METHOD(swfmovie, addFont); -#endif +# endif + +/* SWFSprint */ PHP_METHOD(swfsprite, init); PHP_METHOD(swfsprite, add); @@ -98,6 +111,8 @@ PHP_METHOD(swfsprite, startSound); PHP_METHOD(swfsprite, stopSound); #endif +/* SWFFont */ + PHP_METHOD(swffont, init); PHP_METHOD(swffont, getWidth); @@ -117,6 +132,8 @@ PHP_METHOD(swffont, getShape); PHP_METHOD(swffont, getLeading); +/* SWFText */ + PHP_METHOD(swftext, init); PHP_METHOD(swftext, setFont); PHP_METHOD(swftext, setHeight); @@ -141,6 +158,8 @@ PHP_METHOD(swftext, getAscent); PHP_METHOD(swftext, getDescent); PHP_METHOD(swftext, getLeading); +/* SWFTextField */ + PHP_METHOD(swftextfield, init); PHP_METHOD(swftextfield, setFont); PHP_METHOD(swftextfield, setBounds); @@ -157,9 +176,13 @@ PHP_METHOD(swftextfield, addString); PHP_METHOD(swftextfield, setPadding); PHP_METHOD(swftextfield, addChars); +/* SWFFontChar */ + PHP_METHOD(swffontchar, addChars); PHP_METHOD(swffontchar, addUTF8Chars); +/* SWFDisplayItem */ + PHP_METHOD(swfdisplayitem, move); PHP_METHOD(swfdisplayitem, moveTo); PHP_METHOD(swfdisplayitem, scale); @@ -191,6 +214,8 @@ PHP_METHOD(swfdisplayitem, getYSkew); PHP_METHOD(swfdisplayitem, getRot); #endif +/* SWFButton */ + PHP_METHOD(swfbutton, init); PHP_METHOD(swfbutton, setHit); PHP_METHOD(swfbutton, setOver); @@ -209,14 +234,22 @@ PHP_METHOD(swfbutton, addAction); PHP_METHOD(swfbutton, addSound); #endif +/* SWFAction */ + PHP_METHOD(swfaction, init); +/* SWFMorph */ + PHP_METHOD(swfmorph, init); PHP_METHOD(swfmorph, getShape1); PHP_METHOD(swfmorph, getShape2); +/* SWFSound */ + PHP_METHOD(swfsound, init); +/* SWFSoundInstance */ + #ifdef HAVE_NEW_MING PHP_METHOD(swfsoundinstance, noMultiple); PHP_METHOD(swfsoundinstance, loopInPoint); @@ -224,6 +257,8 @@ PHP_METHOD(swfsoundinstance, loopOutPoint); PHP_METHOD(swfsoundinstance, loopCount); #endif +/* SWF Utils */ + PHP_FUNCTION(ming_keypress); PHP_FUNCTION(ming_setCubicThreshold); PHP_FUNCTION(ming_setScale); @@ -231,6 +266,7 @@ PHP_FUNCTION(ming_useSWFVersion); #ifdef HAVE_NEW_MING PHP_FUNCTION(ming_useConstants); +PHP_FUNCTION(ming_setSWFCompression); #endif #else |