📄 ming.c
字号:
if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &label) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_string_ex(label); SWFMovie_labelFrame(getMovie(getThis() TSRMLS_CC), Z_STRVAL_PP(label));}/* }}} *//* {{{ proto object swfmovie_add(object SWFBlock) */PHP_FUNCTION(swfmovie_add){ zval **zchar; int ret; SWFBlock block; SWFDisplayItem item; SWFMovie movie = getMovie(getThis() TSRMLS_CC); if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &zchar) == FAILURE) { WRONG_PARAM_COUNT; } 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) { block = (SWFBlock) getAction(*zchar TSRMLS_CC); } else { block = (SWFBlock) getCharacter(*zchar TSRMLS_CC); } item = SWFMovie_add(movie, block); if (item != NULL) { /* try and create a displayitem object */ ret = zend_list_insert(item, le_swfdisplayitemp); object_init_ex(return_value, &displayitem_class_entry); add_property_resource(return_value, "displayitem", ret); }}/* }}} *//* {{{ proto void swfmovie_labelframe(object SWFBlock)*/PHP_FUNCTION(swfmovie_remove){ zval **zchar; SWFDisplayItem item; SWFMovie movie = getMovie(getThis() TSRMLS_CC); if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &zchar) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_object_ex(zchar); item = getDisplayItem(*zchar TSRMLS_CC); SWFMovie_remove(movie, item);}/* }}} *//* {{{ proto int swfmovie_output([int compression])*/static void phpByteOutputMethod(byte b, void *data){ TSRMLS_FETCH(); php_write(&b, 1 TSRMLS_CC);}PHP_FUNCTION(swfmovie_output){ SWFMovie movie = getMovie(getThis() TSRMLS_CC);#ifdef HAVE_MING_ZLIB zval **zlimit = NULL; int limit = -1; int argc = ZEND_NUM_ARGS(); if(argc==0) { limit = 6; } else { 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; } }#endif#ifdef HAVE_NEW_MING RETURN_LONG(SWFMovie_output(movie, &phpByteOutputMethod, NULL, limit));#else RETURN_LONG(SWFMovie_output(movie, &phpByteOutputMethod, NULL));#endif}/* }}} *//* {{{ proto int swfmovie_saveToFile(stream x [, int compression])*/static void phpStreamOutputMethod(byte b, void * data){ TSRMLS_FETCH(); php_stream_write((php_stream*)data, &b, 1);}PHP_FUNCTION(swfmovie_saveToFile){ zval **x;#ifdef HAVE_MING_ZLIB zval **zlimit = NULL; int limit = -1;#endif SWFMovie movie = getMovie(getThis() TSRMLS_CC); php_stream *what; switch (ZEND_NUM_ARGS()) { case 1: if (zend_get_parameters_ex(1, &x) == FAILURE) WRONG_PARAM_COUNT; break; case 2:#ifdef HAVE_MING_ZLIB if (zend_get_parameters_ex(2, &x, &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; }#endif break; default: WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(what, php_stream *, x, -1,"File-Handle",php_file_le_stream());#ifdef HAVE_NEW_MING RETURN_LONG(SWFMovie_output(movie, &phpStreamOutputMethod, what, limit));#else RETURN_LONG(SWFMovie_output(movie, &phpStreamOutputMethod, what));#endif}/* }}} *//* {{{ proto int swfmovie_save(mixed where [, int compression]) Saves the movie. 'where' can be stream and the movie will be saved there otherwise it is treated as string and written in file with that name */PHP_FUNCTION(swfmovie_save){ zval **x;#ifdef HAVE_MING_ZLIB zval **zlimit = NULL; int limit = -1;#endif long retval; php_stream *stream; switch (ZEND_NUM_ARGS()) { case 1: if (zend_get_parameters_ex(1, &x) == FAILURE) { WRONG_PARAM_COUNT; } break; case 2:#ifdef HAVE_MING_ZLIB if (zend_get_parameters_ex(2, &x, &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; }#endif break; default: WRONG_PARAM_COUNT; } 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 RETURN_LONG(SWFMovie_output(getMovie(getThis() TSRMLS_CC), &phpStreamOutputMethod, stream, limit));#else RETURN_LONG(SWFMovie_output(getMovie(getThis() TSRMLS_CC), &phpStreamOutputMethod, stream));#endif } convert_to_string_ex(x); stream = php_stream_open_wrapper(Z_STRVAL_PP(x), "wb", REPORT_ERRORS|ENFORCE_SAFE_MODE, NULL); if (stream == NULL) { RETURN_FALSE; } #ifdef 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); RETURN_LONG(retval);}/* }}} *//* {{{ proto void swfmovie_setBackground(int r, int g, int b) Sets background color (r,g,b) */PHP_FUNCTION(swfmovie_setBackground){ zval **r, **g, **b; SWFMovie movie = getMovie(getThis() TSRMLS_CC); if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &r, &g, &b) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(r); convert_to_long_ex(g); convert_to_long_ex(b); SWFMovie_setBackground(movie, Z_LVAL_PP(r), Z_LVAL_PP(g), Z_LVAL_PP(b));}/* }}} *//* {{{ proto void swfmovie_setRate(float rate) Sets movie rate */PHP_FUNCTION(swfmovie_setRate){ zval **rate; SWFMovie movie = getMovie(getThis() TSRMLS_CC); if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &rate) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_double_ex(rate); SWFMovie_setRate(movie, FLOAT_Z_DVAL_PP(rate));}/* }}} *//* {{{ proto void swfmovie_setDimension(float x, float y) Sets movie dimension */PHP_FUNCTION(swfmovie_setDimension){ zval **x, **y; SWFMovie movie = getMovie(getThis() TSRMLS_CC); if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &x, &y) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_double_ex(x); convert_to_double_ex(y); SWFMovie_setDimension(movie, FLOAT_Z_DVAL_PP(x), FLOAT_Z_DVAL_PP(y));}/* }}} *//* {{{ proto void swfmovie_setFrames(int frames) Sets number of frames */PHP_FUNCTION(swfmovie_setFrames){ zval **frames; SWFMovie movie = getMovie(getThis() TSRMLS_CC); if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &frames) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(frames); SWFMovie_setNumberOfFrames(movie, Z_LVAL_PP(frames));}/* }}} */#ifdef HAVE_NEW_MING/* {{{ proto void swfmovie_streamMp3(mixed file) Sets sound stream of the SWF movie. The parameter can be stream or string. */PHP_FUNCTION(swfmovie_streamMp3){ zval **zfile; SWFSoundStream sound; SWFInput input; SWFMovie movie = getMovie(getThis() TSRMLS_CC); if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &zfile) == FAILURE) { WRONG_PARAM_COUNT; } if (Z_TYPE_PP(zfile) != IS_RESOURCE) { convert_to_string_ex(zfile); input = newSWFInput_buffer(Z_STRVAL_PP(zfile), Z_STRLEN_PP(zfile)); zend_list_addref(zend_list_insert(input, le_swfinputp)); } else { input = getInput(zfile TSRMLS_CC); } sound = newSWFSoundStream_fromInput(input); SWFMovie_setSoundStream(movie, sound);}/* }}} */#endif/* }}} *//* {{{ SWFShape*/static zend_function_entry swfshape_functions[] = { PHP_FALIAS(swfshape, swfshape_init, NULL) PHP_FALIAS(setline, swfshape_setline, NULL) PHP_FALIAS(addfill, swfshape_addfill, NULL) PHP_FALIAS(setleftfill, swfshape_setleftfill, NULL) PHP_FALIAS(setrightfill, swfshape_setrightfill, NULL) PHP_FALIAS(movepento, swfshape_movepento, NULL) PHP_FALIAS(movepen, swfshape_movepen, NULL) PHP_FALIAS(drawlineto, swfshape_drawlineto, NULL) PHP_FALIAS(drawline, swfshape_drawline, NULL) PHP_FALIAS(drawcurveto, swfshape_drawcurveto, NULL) PHP_FALIAS(drawcurve, swfshape_drawcurve, NULL) PHP_FALIAS(drawglyph, swfshape_drawglyph, NULL) PHP_FALIAS(drawcircle, swfshape_drawcircle, NULL) PHP_FALIAS(drawarc, swfshape_drawarc, NULL) PHP_FALIAS(drawcubic, swfshape_drawcubic, NULL) PHP_FALIAS(drawcubicto, swfshape_drawcubicto, NULL) { NULL, NULL, NULL }};/* {{{ proto object swfshape_init(void) Returns a new SWFShape object */PHP_FUNCTION(swfshape_init){ SWFShape shape = newSWFShape(); int ret = zend_list_insert(shape, le_swfshapep); object_init_ex(getThis(), &shape_class_entry); add_property_resource(getThis(), "shape", ret); zend_list_addref(ret);}static void destroy_SWFShape_resource(zend_rsrc_list_entry *resource TSRMLS_DC){ destroySWFShape((SWFShape)resource->ptr);}/* }}} *//* {{{ internal function getShape Returns the SWFShape object contained in zval *id */static SWFShape getShape(zval *id TSRMLS_DC){ void *shape = SWFgetProperty(id, "shape", 5, le_swfshapep TSRMLS_CC); if (!shape) { php_error_docref(NULL TSRMLS_CC, E_ERROR, "Called object is not an SWFShape"); } return (SWFShape)shape;}/* }}} *//* {{{ proto void swfshape_setline(int width, int r, int g, int b [, int a]) Sets the current line style for this SWFShape */PHP_FUNCTION(swfshape_setline){ zval **w, **r, **g, **b, **a; if (ZEND_NUM_ARGS() == 4) { if (zend_get_parameters_ex(4, &w, &r, &g, &b) == FAILURE) { WRONG_PARAM_COUNT; } } else if (ZEND_NUM_ARGS() == 5) { if (zend_get_parameters_ex(5, &w, &r, &g, &b, &a) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(a); } else if (ZEND_NUM_ARGS() == 1) { SWFShape_setLine(getShape(getThis() TSRMLS_CC), 0, 0, 0, 0, 0); return; } else { WRONG_PARAM_COUNT; } convert_to_long_ex(w); convert_to_long_ex(r); convert_to_long_ex(g); convert_to_long_ex(b); if (ZEND_NUM_ARGS() == 4) { SWFShape_setLine(getShape(getThis() TSRMLS_CC), (unsigned short)Z_LVAL_PP(w), BYTE_Z_LVAL_PP(r), BYTE_Z_LVAL_PP(g), BYTE_Z_LVAL_PP(b), 0xff ); } else { SWFShape_setLine(getShape(getThis() TSRMLS_CC), (unsigned short)Z_LVAL_PP(w), BYTE_Z_LVAL_PP(r), BYTE_Z_LVAL_PP(g), BYTE_Z_LVAL_PP(b), BYTE_Z_LVAL_PP(a) ); }}/* }}} *//* {{{ proto object swfshape_addfill(mixed arg1, int arg2, [int b [, int a]]) Returns a fill object, for use with swfshape_setleftfill and swfshape_setrightfill. If 1 or 2 parameter(s) is (are) passed first should be object (from gradient class) and the second int (flags). Gradient fill is performed. If 3 or 4 parameters are passed : r, g, b [, a]. Solid fill is performed. */PHP_FUNCTION(swfshape_addfill){ SWFFill fill=NULL; int ret; if (ZEND_NUM_ARGS() == 1 || ZEND_NUM_ARGS() == 2) { /* it's a gradient or bitmap */ zval **arg1; unsigned char flags = 0; if (ZEND_NUM_ARGS() == 2) { zval **arg2; if (zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(arg2); flags = (unsigned char)Z_LVAL_PP(arg2); } else { if (zend_get_parameters_ex(1, &arg1) == FAILURE) { WRONG_PARAM_COUNT; } } convert_to_object_ex(arg1); if (Z_OBJCE_PP(arg1) == &gradient_class_entry) { 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) { if (flags == 0) { flags = SWFFILL_TILED_BITMAP; } fill = SWFShape_addBitmapFill(getShape(getThis() TSRMLS_CC), getBitmap(*arg1 TSRMLS_CC), flags); } else { php_error_docref(NULL TSRMLS_CC, E_ERROR, "Argument is not a bitmap nor a gradient"); } } else if (ZEND_NUM_ARGS() == 3 || ZEND_NUM_ARGS() == 4) { /* it's a solid fill */ zval **r, **g, **b, **za; byte a = 0xff; if (ZEND_NUM_ARGS() == 3) { if (zend_get_parameters_ex(3, &r, &g, &b) == FAILURE) { WRONG_PARAM_COUNT; } } else if (ZEND_NUM_ARGS() == 4) { if (zend_get_parameters_ex(4, &r, &g, &b, &za) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(za); a = BYTE_Z_LVAL_PP(za);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -