helly Mon Jul 25 17:03:29 2005 EDT Added files: (Branch: PHP_5_0) /php-src/ext/ming/tests swfaction-new.phpt
Modified files: /php-src/ext/ming config.m4 config.w32 ming.c /php-src/ext/ming/tests swfaction.phpt Log: - MFH: Synch (0.2a, 0.3 suport)
http://cvs.php.net/diff.php/php-src/ext/ming/config.m4?r1=1.20.2.1&r2=1.20.2.2&ty=u Index: php-src/ext/ming/config.m4 diff -u php-src/ext/ming/config.m4:1.20.2.1 php-src/ext/ming/config.m4:1.20.2.2 --- php-src/ext/ming/config.m4:1.20.2.1 Tue Dec 14 11:15:40 2004 +++ php-src/ext/ming/config.m4 Mon Jul 25 17:03:27 2005 @@ -1,5 +1,5 @@ dnl -dnl $Id: config.m4,v 1.20.2.1 2004/12/14 16:15:40 dmitry Exp $ +dnl $Id: config.m4,v 1.20.2.2 2005/07/25 21:03:27 helly Exp $ dnl PHP_ARG_WITH(ming, for MING support, @@ -58,7 +58,9 @@ AC_MSG_RESULT([unknown]) ]) - dnl Check Ming version (FIXME: if/when ming has some better way to detect the version..) + PHP_CHECK_LIBRARY(ming, SWFPrebuiltClip, [ AC_DEFINE(HAVE_SWFPREBUILTCLIP, 1, [ ]) ], [], []) + +dnl Check Ming version (FIXME: if/when ming has some better way to detect the version..) old_CPPFLAGS=$CPPFLAGS CPPFLAGS=-I$MING_INC_DIR AC_EGREP_CPP(yes, [ http://cvs.php.net/diff.php/php-src/ext/ming/config.w32?r1=1.2&r2=1.2.2.1&ty=u Index: php-src/ext/ming/config.w32 diff -u php-src/ext/ming/config.w32:1.2 php-src/ext/ming/config.w32:1.2.2.1 --- php-src/ext/ming/config.w32:1.2 Thu Mar 11 13:48:26 2004 +++ php-src/ext/ming/config.w32 Mon Jul 25 17:03:27 2005 @@ -1,4 +1,4 @@ -// $Id: config.w32,v 1.2 2004/03/11 18:48:26 fmk Exp $ +// $Id: config.w32,v 1.2.2.1 2005/07/25 21:03:27 helly Exp $ // vim:ft=javascript ARG_WITH("ming", "MING support", "no"); @@ -15,12 +15,13 @@ } c = file_get_contents(ming_h + "\\ming.h"); - if (c.match(/MING_VERSION\s+(0.[a-zA-Z0-9]+)/)) { + if (typeof(c) == "string" && c.match(/MING_VERSION\s+(0.[a-zA-Z0-9]+)/)) { v = RegExp.$1; if (v > "0.2") { if (CHECK_LIB("libungif.lib", "ming", PHP_MING) && CHECK_LIB("libpng.lib", "ming", PHP_MING)) { AC_DEFINE('HAVE_NEW_MING', 1); + AC_DEFINE('HAVE_SWFPREBUILTCLIP', 1); if (PHP_ZLIB != "no") { AC_DEFINE('HAVE_MING_ZLIB', 1); } http://cvs.php.net/diff.php/php-src/ext/ming/ming.c?r1=1.68.2.2&r2=1.68.2.3&ty=u Index: php-src/ext/ming/ming.c diff -u php-src/ext/ming/ming.c:1.68.2.2 php-src/ext/ming/ming.c:1.68.2.3 --- php-src/ext/ming/ming.c:1.68.2.2 Fri Apr 15 15:13:48 2005 +++ php-src/ext/ming/ming.c Mon Jul 25 17:03:27 2005 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ming.c,v 1.68.2.2 2005/04/15 19:13:48 fmk Exp $ */ +/* $Id: ming.c,v 1.68.2.3 2005/07/25 21:03:27 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -73,6 +73,8 @@ static SWFFontCharacter getFontCharacter(zval *id TSRMLS_DC); static SWFSoundInstance getSoundInstance(zval *id TSRMLS_DC); static SWFVideoStream getVideoStream(zval *id TSRMLS_DC); +#endif +#ifdef HAVE_SWFPREBUILTCLIP static SWFPrebuiltClip getPrebuiltClip(zval *id TSRMLS_DC); #endif @@ -159,6 +161,8 @@ static int le_swffontcharp; static int le_swfsoundinstancep; static int le_swfvideostreamp; +#endif +#ifdef HAVE_SWFPREBUILTCLIP static int le_swfprebuiltclipp; #endif @@ -180,6 +184,8 @@ static zend_class_entry *fontchar_class_entry_ptr; static zend_class_entry *soundinstance_class_entry_ptr; static zend_class_entry *videostream_class_entry_ptr; +#endif +#ifdef HAVE_SWFPREBUILTCLIP static zend_class_entry *prebuiltclip_class_entry_ptr; #endif @@ -238,7 +244,6 @@ return (SWFCharacter)getBitmap(id TSRMLS_CC); else if(Z_OBJCE_P(id) == sound_class_entry_ptr) return (SWFCharacter)getSound(id TSRMLS_CC); - #ifdef HAVE_NEW_MING else if(Z_OBJCE_P(id) == fontchar_class_entry_ptr) @@ -248,13 +253,11 @@ else if(Z_OBJCE_P(id) == videostream_class_entry_ptr) return (SWFCharacter)getVideoStream(id TSRMLS_CC); +#endif +#ifdef HAVE_SWFPREBUILTCLIP else if(Z_OBJCE_P(id) == prebuiltclip_class_entry_ptr) return (SWFCharacter)getPrebuiltClip(id TSRMLS_CC); #endif -/* - else if(Z_OBJCE_P(id) == soundinstance_class_entry_ptr) - return (SWFCharacter)getSoundInstance(id TSRMLS_CC); -*/ else php_error_docref(NULL TSRMLS_CC, E_ERROR, "Called object is not an SWFCharacter"); return NULL; @@ -622,6 +625,7 @@ ret = zend_list_insert(item, le_swfsoundinstancep); object_init_ex(return_value, soundinstance_class_entry_ptr); add_property_resource(return_value, "soundinstance", ret); + zend_list_addref(ret); } } /* }}} */ @@ -2002,7 +2006,9 @@ }; /* }}} */ +#endif +#ifdef HAVE_SWFPREBUILTCLIP /* {{{ SWFPrebuiltClip */ /* {{{ proto class swfprebuiltclip_init([file]) Returns a SWFPrebuiltClip object */ @@ -2077,6 +2083,7 @@ /* }}} */ #endif + /* }}} */ /* {{{ SWFMovie @@ -2177,6 +2184,7 @@ ret = zend_list_insert(item, le_swfdisplayitemp); object_init_ex(return_value, displayitem_class_entry_ptr); add_property_resource(return_value, "displayitem", ret); + zend_list_addref(ret); } } /* }}} */ @@ -2210,14 +2218,14 @@ PHP_METHOD(swfmovie, output) { SWFMovie movie = getMovie(getThis() TSRMLS_CC); -#ifdef HAVE_MING_ZLIB +#if defined(HAVE_MING_ZLIB) && !defined(HAVE_NEW_MING) zval **zlimit = NULL; int limit = -1; int argc = ZEND_NUM_ARGS(); + int oldval = INT_MIN; + long out; - if(argc==0) { - limit = 6; - } else { + if(argc) { if (zend_get_parameters_ex(1, &zlimit) == FAILURE) { WRONG_PARAM_COUNT; } @@ -2230,13 +2238,35 @@ RETURN_FALSE; } } -#endif + oldval = Ming_setSWFCompression(limit); + out = SWFMovie_output(movie, &phpByteOutputMethod, NULL); + if (oldval >= -1 && oldval <= 9) { + Ming_setSWFCompression(oldval); + } + RETURN_LONG(out); +#elif defined(HAVE_NEW_MING) + zval **zlimit = NULL; + int limit = -1; + int argc = ZEND_NUM_ARGS(); -#ifdef HAVE_NEW_MING + if(argc) { + if (zend_get_parameters_ex(1, &zlimit) == FAILURE) { + WRONG_PARAM_COUNT; + } + + convert_to_long_ex(zlimit); + limit = Z_LVAL_PP(zlimit); + + if ((limit < 0) || (limit > 9)) { + php_error(E_WARNING,"compression level must be within 0..9"); + RETURN_FALSE; + } + } RETURN_LONG(SWFMovie_output(movie, &phpByteOutputMethod, NULL, limit)); #else RETURN_LONG(SWFMovie_output(movie, &phpByteOutputMethod, NULL)); #endif + } /* }}} */ @@ -2252,10 +2282,14 @@ PHP_METHOD(swfmovie, saveToFile) { zval **x; -#ifdef HAVE_MING_ZLIB +#if defined(HAVE_MING_ZLIB) || defined(HAVE_NEW_MING) zval **zlimit = NULL; int limit = -1; #endif +#if defined(HAVE_MING_ZLIB) && !defined(HAVE_NEW_MING) + int oldval = INT_MIN; + long out; +#endif SWFMovie movie = getMovie(getThis() TSRMLS_CC); php_stream *what; @@ -2265,7 +2299,7 @@ WRONG_PARAM_COUNT; break; case 2: -#ifdef HAVE_MING_ZLIB +#if defined(HAVE_MING_ZLIB) || defined(HAVE_NEW_MING) if (zend_get_parameters_ex(2, &x, &zlimit) == FAILURE) WRONG_PARAM_COUNT; convert_to_long_ex(zlimit); @@ -2275,13 +2309,21 @@ RETURN_FALSE; } #endif +#if defined(HAVE_MING_ZLIB) && !defined(HAVE_NEW_MING) + oldval = Ming_setSWFCompression(limit); +#endif break; default: WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(what, php_stream *, x, -1,"File-Handle",php_file_le_stream()); -#ifdef HAVE_NEW_MING +#if defined(HAVE_MING_ZLIB) && !defined(HAVE_NEW_MING) + out = SWFMovie_output(getMovie(getThis() TSRMLS_CC), &phpStreamOutputMethod, what); + if (oldval >= -1 && oldval <=9) + Ming_setSWFCompression(oldval); + RETURN_LONG(out); +#elif defined(HAVE_NEW_MING) RETURN_LONG(SWFMovie_output(movie, &phpStreamOutputMethod, what, limit)); #else RETURN_LONG(SWFMovie_output(movie, &phpStreamOutputMethod, what)); @@ -2294,10 +2336,13 @@ PHP_METHOD(swfmovie, save) { zval **x; -#ifdef HAVE_MING_ZLIB +#if defined(HAVE_MING_ZLIB) || defined(HAVE_NEW_MING) zval **zlimit = NULL; int limit = -1; #endif +#if defined(HAVE_MING_ZLIB) && !defined(HAVE_NEW_MING) + int oldval = INT_MIN; +#endif long retval; php_stream *stream; @@ -2308,7 +2353,7 @@ } break; case 2: -#ifdef HAVE_MING_ZLIB +#if defined(HAVE_MING_ZLIB) || defined(HAVE_NEW_MING) if (zend_get_parameters_ex(2, &x, &zlimit) == FAILURE) { WRONG_PARAM_COUNT; } @@ -2319,6 +2364,9 @@ RETURN_FALSE; } #endif +#if defined(HAVE_MING_ZLIB) && !defined(HAVE_NEW_MING) + oldval = Ming_setSWFCompression(limit); +#endif break; default: WRONG_PARAM_COUNT; @@ -2326,10 +2374,15 @@ if (Z_TYPE_PP(x) == IS_RESOURCE) { ZEND_FETCH_RESOURCE(stream, php_stream *, x, -1,"File-Handle",php_file_le_stream()); -#ifdef HAVE_NEW_MING +#if defined(HAVE_NEW_MING) RETURN_LONG(SWFMovie_output(getMovie(getThis() TSRMLS_CC), &phpStreamOutputMethod, stream, limit)); #else - RETURN_LONG(SWFMovie_output(getMovie(getThis() TSRMLS_CC), &phpStreamOutputMethod, stream)); + RETVAL_LONG(SWFMovie_output(getMovie(getThis() TSRMLS_CC), &phpStreamOutputMethod, stream)); +#if defined(HAVE_MING_ZLIB) && !defined(HAVE_NEW_MING) + if(oldval >= -1 && oldval <=9) + Ming_setSWFCompression(oldval); +#endif + return; #endif } @@ -2340,12 +2393,17 @@ RETURN_FALSE; } -#ifdef HAVE_NEW_MING +#if defined(HAVE_NEW_MING) retval = SWFMovie_output(getMovie(getThis() TSRMLS_CC), &phpStreamOutputMethod, (void *)stream, limit); #else retval = SWFMovie_output(getMovie(getThis() TSRMLS_CC), &phpStreamOutputMethod, (void *)stream); #endif php_stream_close(stream); +#if defined(HAVE_MING_ZLIB) && !defined(HAVE_NEW_MING) + if(oldval >= -1 && oldval <=9) + Ming_setSWFCompression(oldval); +#endif + RETURN_LONG(retval); } /* }}} */ @@ -2499,6 +2557,7 @@ ret = zend_list_insert(item, le_swfsoundinstancep); object_init_ex(return_value, soundinstance_class_entry_ptr); add_property_resource(return_value, "soundinstance", ret); + zend_list_addref(ret); } } /* }}} */ @@ -2543,6 +2602,7 @@ ret = zend_list_insert(res, le_swfspritep); object_init_ex(return_value, sprite_class_entry_ptr); add_property_resource(return_value, "sprite", ret); + zend_list_addref(ret); } } /* }}} */ @@ -2570,6 +2630,7 @@ ret = zend_list_insert(res, le_swffontcharp); object_init_ex(return_value, fontchar_class_entry_ptr); add_property_resource(return_value, "fontcharacter", ret); + zend_list_addref(ret); } } /* }}} */ @@ -2598,6 +2659,7 @@ ret = zend_list_insert(res, le_swffontcharp); object_init_ex(return_value, fontchar_class_entry_ptr); add_property_resource(return_value, "fontcharacter", ret); + zend_list_addref(ret); } } /* }}} */ @@ -2782,6 +2844,7 @@ ret = zend_list_insert(fill, le_swffillp); object_init_ex(return_value, fill_class_entry_ptr); add_property_resource(return_value, "fill", ret); + zend_list_addref(ret); } /* }}} */ @@ -3068,7 +3131,7 @@ /* }}} */ /* {{{ proto void swfshape::drawarc(float r, float startAngle, float endAngle) - Draws an arc of radius r centered at the current location, from angle startAngle to angle endAngle measured counterclockwise from 12 o'clock */ + Draws an arc of radius r centered at the current location, from angle startAngle to angle endAngle measured clockwise from 12 o'clock */ PHP_METHOD(swfshape, drawArc) { zval **r, **start, **end; @@ -3081,7 +3144,7 @@ convert_to_double_ex(end); /* convert angles to radians, since that's what php uses elsewhere */ - SWFShape_drawArc(getShape(getThis() TSRMLS_CC), FLOAT_Z_DVAL_PP(r), (float)(Z_DVAL_PP(start)*M_PI/180.0), (float)(Z_DVAL_PP(end)*M_PI/180.0)); + SWFShape_drawArc(getShape(getThis() TSRMLS_CC), FLOAT_Z_DVAL_PP(r), FLOAT_Z_DVAL_PP(start), FLOAT_Z_DVAL_PP(end)); } /* }}} */ @@ -3213,6 +3276,7 @@ ret = zend_list_insert(item, le_swfdisplayitemp); object_init_ex(return_value, displayitem_class_entry_ptr); add_property_resource(return_value, "displayitem", ret); + zend_list_addref(ret); } } /* }}} */ @@ -3295,6 +3359,7 @@ ret = zend_list_insert(item, le_swfsoundinstancep); object_init_ex(return_value, soundinstance_class_entry_ptr); add_property_resource(return_value, "soundinstance", ret); + zend_list_addref(ret); } } @@ -3994,6 +4059,8 @@ zend_class_entry fontchar_class_entry; zend_class_entry soundinstance_class_entry; zend_class_entry videostream_class_entry; +#endif +#ifdef HAVE_SWFPREBUILTCLIP zend_class_entry prebuiltclip_class_entry; #endif @@ -4001,6 +4068,16 @@ #define CONSTANT(s,c) REGISTER_LONG_CONSTANT((s), (c), CONST_CS | CONST_PERSISTENT) +#ifdef HAVE_NEW_MING + CONSTANT("MING_NEW", 1); +#else + CONSTANT("MING_NEW", 0); +#endif +#ifdef HAVE_MING_ZLIB + CONSTANT("MING_ZLIB", 1); +#else + CONSTANT("MING_ZLIB", 0); +#endif /* flags for SWFButton_addShape */ CONSTANT("SWFBUTTON_HIT", SWFBUTTONRECORD_HITSTATE); CONSTANT("SWFBUTTON_DOWN", SWFBUTTONRECORD_DOWNSTATE); @@ -4068,8 +4145,9 @@ #ifdef HAVE_NEW_MING le_swffontcharp = zend_register_list_destructors_ex(destroy_SWFFontCharacter_resource, NULL, "SWFFontCharacter", module_number); le_swfsoundinstancep = zend_register_list_destructors_ex(NULL, NULL, "SWFSoundInstance", module_number); - le_swfvideostreamp = zend_register_list_destructors_ex(destroy_SWFVideoStream_resource, NULL, "SWFVideoStream", module_number); +#endif +#ifdef HAVE_SWFPREBUILTCLIP le_swfprebuiltclipp = zend_register_list_destructors_ex(destroy_SWFPrebuiltClip_resource, NULL, "SWFPrebuiltClip", module_number); #endif @@ -4091,6 +4169,8 @@ INIT_CLASS_ENTRY(fontchar_class_entry, "SWFFontChar", swffontchar_functions); INIT_CLASS_ENTRY(soundinstance_class_entry, "SWFSoundInstance", swfsoundinstance_functions); INIT_CLASS_ENTRY(videostream_class_entry, "SWFVideoStream", swfvideostream_functions); +#endif +#ifdef HAVE_SWFPREBUILTCLIP INIT_CLASS_ENTRY(prebuiltclip_class_entry, "SWFPrebuiltClip", swfprebuiltclip_functions); #endif @@ -4112,6 +4192,8 @@ fontchar_class_entry_ptr = zend_register_internal_class(&fontchar_class_entry TSRMLS_CC); soundinstance_class_entry_ptr = zend_register_internal_class(&soundinstance_class_entry TSRMLS_CC); videostream_class_entry_ptr = zend_register_internal_class(&videostream_class_entry TSRMLS_CC); +#endif +#ifdef HAVE_SWFPREBUILTCLIP prebuiltclip_class_entry_ptr = zend_register_internal_class(&prebuiltclip_class_entry TSRMLS_CC); #endif http://cvs.php.net/diff.php/php-src/ext/ming/tests/swfaction.phpt?r1=1.1&r2=1.1.2.1&ty=u Index: php-src/ext/ming/tests/swfaction.phpt diff -u php-src/ext/ming/tests/swfaction.phpt:1.1 php-src/ext/ming/tests/swfaction.phpt:1.1.2.1 --- php-src/ext/ming/tests/swfaction.phpt:1.1 Fri Sep 5 10:46:37 2003 +++ php-src/ext/ming/tests/swfaction.phpt Mon Jul 25 17:03:29 2005 @@ -1,9 +1,12 @@ --TEST-- Ming: Simple SWFAction() test --SKIPIF-- -<?php if (!extension_loaded("ming")) print "skip"; ?> +<?php +if (!extension_loaded("ming")) die("skip"); +if (MING_NEW || MING_ZLIB) die("skip new ming"); +?> --FILE-- -<?php /* $Id: swfaction.phpt,v 1.1 2003/09/05 14:46:37 sniper Exp $ */ +<?php /* $Id: swfaction.phpt,v 1.1.2.1 2005/07/25 21:03:29 helly Exp $ */ $s = new SWFShape(); $f = $s->addFill(0xff, 0, 0); @@ -40,9 +43,9 @@ $m->add(new SWFAction("gotoFrame(0); play();")); $m->nextFrame(); - $m->save('./test.swf'); - echo md5_file('./test.swf'), "\n"; - unlink('./test.swf'); + $m->save(dirname(__FILE__).'/test.swf'); + echo md5_file(dirname(__FILE__).'/test.swf'), "\n"; + unlink(dirname(__FILE__).'/test.swf'); ?> --EXPECT-- 9e47538692393b9915faf3fc7e686cd5 http://cvs.php.net/co.php/php-src/ext/ming/tests/swfaction-new.phpt?r=1.1&p=1 Index: php-src/ext/ming/tests/swfaction-new.phpt +++ php-src/ext/ming/tests/swfaction-new.phpt --TEST-- Ming: Simple SWFAction() test --SKIPIF-- <?php if (!extension_loaded("ming")) die("skip"); if (!MING_NEW && !MING_ZLIB) die("skip old ming"); ?> --FILE-- <?php /* $Id: swfaction-new.phpt,v 1.1 2005/07/18 00:14:53 helly Exp $ */ $s = new SWFShape(); $f = $s->addFill(0xff, 0, 0); $s->setRightFill($f); $s->movePenTo(-500,-500); $s->drawLineTo(500,-500); $s->drawLineTo(500,500); $s->drawLineTo(-500,500); $s->drawLineTo(-500,-500); $p = new SWFSprite(); $i = $p->add($s); $i->setDepth(1); $p->nextFrame(); for($n=0; $n<5; ++$n) { $i->rotate(-15); $p->nextFrame(); } $m = new SWFMovie(); $m->setBackground(0xff, 0xff, 0xff); $m->setDimension(6000,4000); $i = $m->add($p); $i->setDepth(1); $i->moveTo(1000,2000); $i->setName("box"); $m->add(new SWFAction("_root.box._x += 3;")); $m->nextFrame(); $m->add(new SWFAction("gotoFrame(0); play();")); $m->nextFrame(); $m->save(dirname(__FILE__).'/test.swf'); echo md5_file(dirname(__FILE__).'/test.swf'), "\n"; unlink(dirname(__FILE__).'/test.swf'); ?> --EXPECT-- d0f09a7b6a14d3fe6d570367deb38633
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php