📄 ming-dev.c
字号:
}/* }}} *//* {{{ swfmovie_output*/static void phpByteOutputMethod(byte b, void *data){ TSRMLS_FETCH(); php_write(&b, 1 TSRMLS_CC);}PHP_FUNCTION(swfmovie_output){ zval **zlimit = NULL; int limit = -1; SWFMovie movie = getMovie(getThis() TSRMLS_CC); switch (ZEND_NUM_ARGS()) { case 1: 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; } break; } RETURN_LONG(SWFMovie_outputC(movie, &phpByteOutputMethod, NULL, limit));}/* }}} *//* {{{ swfmovie_saveToFile*/static void phpStreamOutputMethod(byte b, void * data){ TSRMLS_FETCH(); php_stream_write((php_stream*)data, &b, 1);}PHP_FUNCTION(swfmovie_saveToFile){ zval **x; SWFMovie movie = getMovie(getThis() TSRMLS_CC); php_stream *what; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &x) == FAILURE) { WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(what, php_stream *, x, -1,"File-Handle",php_file_le_stream()); RETURN_LONG(SWFMovie_output(movie, &phpStreamOutputMethod, what));}/* }}} *//* {{{ swfmovie_save*/PHP_FUNCTION(swfmovie_save){ zval **x, **zlimit = NULL; int limit = -1; 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: 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; } 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()); RETURN_LONG(SWFMovie_outputC(getMovie(getThis() TSRMLS_CC), &phpStreamOutputMethod, stream, limit)); } 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; } retval = SWFMovie_outputC(getMovie(getThis() TSRMLS_CC), &phpStreamOutputMethod, (void *)stream, limit); php_stream_close(stream); RETURN_LONG(retval);}/* }}} *//* {{{ swfmovie_setbackground*/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));}/* }}} *//* {{{ swfmovie_protect*/PHP_FUNCTION(swfmovie_Protect){ SWFMovie movie = getMovie(getThis() TSRMLS_CC); SWFMovie_Protect(movie);}/* }}} *//* {{{ swfmovie_setrate*/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, Z_DVAL_PP(rate));}/* }}} *//* {{{ swfmovie_setDimension*/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, Z_DVAL_PP(x), Z_DVAL_PP(y));}/* }}} *//* {{{ swfmovie_setframes*/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));}/* }}} *//* {{{ swfmovie_streamMp3*/PHP_FUNCTION(swfmovie_streamMp3){ zval **zfile; SWFSound 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 = newSWFSound_fromInput(input); SWFMovie_setSoundStream(movie, sound);}/* }}} *//* }}} *//* {{{ 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 class 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(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), Z_LVAL_PP(w), Z_LVAL_PP(r), Z_LVAL_PP(g), Z_LVAL_PP(b), 0xff ); } else { SWFShape_setLine(getShape(getThis() TSRMLS_CC), Z_LVAL_PP(w), Z_LVAL_PP(r), Z_LVAL_PP(g), Z_LVAL_PP(b), Z_LVAL_PP(a) ); }}/* }}} *//* {{{ proto int swfshape_addfill(int fill, int flags) Returns a fill object, for use with swfshape_setleftfill and swfshape_setrightfill */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(E_ERROR, "argument to addfill 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; int 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 = Z_LVAL_PP(za); } else { WRONG_PARAM_COUNT; } convert_to_long_ex(r); convert_to_long_ex(g); convert_to_long_ex(b); fill = SWFShape_addSolidFill(getShape(getThis() TSRMLS_CC), Z_LVAL_PP(r), Z_LVAL_PP(g), Z_LVAL_PP(b), a); } else { WRONG_PARAM_COUNT; } if (!fill) { php_error(E_ERROR, "Error adding fill to shape!"); } /* return an SWFFill object */ ret = zend_list_insert(fill, le_swffillp); object_init_ex(return_value, &fill_class_entry); add_property_resource(return_value, "fill", ret);}/* }}} *//* {{{ proto void swfshape_setleftfill(int fill) Sets the left side fill style to fill */PHP_FUNCTION(swfshape_setleftfill){ zval **zfill, **r, **g, **b, **a; SWFFill fill; if (ZEND_NUM_ARGS() == 3) { if (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); fill = SWFShape_addSolidFill(getShape(getThis() TSRMLS_CC), Z_LVAL_PP(r), Z_LVAL_PP(g), Z_LVAL_PP(b), 0xff ); } else if (ZEND_NUM_ARGS() == 4) { if (zend_get_parameters_ex(4, &r, &g, &b, &a) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(r); convert_to_long_ex(g); convert_to_long_ex(b); convert_to_long_ex(a); fill = SWFShape_addSolidFill(getShape(getThis() TSRMLS_CC), Z_LVAL_PP(r), Z_LVAL_PP(g), Z_LVAL_PP(b), Z_LVAL_PP(a) ); } else if (ZEND_NUM_ARGS() == 1) { if (zend_get_parameters_ex(1, &zfill) == FAILURE) { WRONG_PARAM_COUNT; } if (Z_LVAL_PP(zfill) != 0) { convert_to_object_ex(zfill); fill = getFill(*zfill TSRMLS_CC); } else { fill = NULL; } } else { WRONG_PARAM_COUNT; } SWFShape_setLeftFill(getShape(getThis() TSRMLS_CC), fill);}/* }}} *//* {{{ proto void swfshape_setrightfill(int fill) Sets the right side fill style to fill */PHP_FUNCTION(swfshape_setrightfill){ zval **zfill, **r, **g, **b, **a; SWFFill fill; if (ZEND_NUM_ARGS() == 3) { if (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); fill = SWFShape_addSolidFill(getShape(getThis() TSRMLS_CC), Z_LVAL_PP(r), Z_LVAL_PP(g), Z_LVAL_PP(b), 0xff ); } else if (ZEND_NUM_ARGS() == 4) { if (zend_get_parameters_ex(4, &r, &g, &b, &a) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(r); convert_to_long_ex(g); convert_to_long_ex(b); convert_to_long_ex(a); fill = SWFShape_addSolidFill(getShape(getThis() TSRMLS_CC), Z_LVAL_PP(r), Z_LVAL_PP(g), Z_LVAL_PP(b), Z_LVAL_PP(a) ); } else if (ZEND_NUM_ARGS() == 1) { if (zend_get_parameters_ex(1, &zfill) == FAILURE){ WRONG_PARAM_COUNT; } if (Z_LVAL_PP(zfill) != 0) { convert_to_object_ex(zfill); fill = getFill(*zfill TSRMLS_CC); } else { fill = NULL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -