summaryrefslogtreecommitdiff
path: root/ext/ming
diff options
context:
space:
mode:
authorFrank M. Kromann <fmk@php.net>2006-12-05 21:02:46 +0000
committerFrank M. Kromann <fmk@php.net>2006-12-05 21:02:46 +0000
commit5dca5450f2e84f0f981d7e9e576676905e450deb (patch)
tree90f29f87a0028b1c5f85485b51dc056416b3a6e8 /ext/ming
parent68890ce196a8fd42d7f0a3662940719651dad87f (diff)
downloadphp-git-5dca5450f2e84f0f981d7e9e576676905e450deb.tar.gz
#39429 Update API
Diffstat (limited to 'ext/ming')
-rw-r--r--ext/ming/ming.c164
-rw-r--r--ext/ming/php_ming.h38
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