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