/* +----------------------------------------------------------------------+ | PHP version 4.0 | +----------------------------------------------------------------------+ | Copyright (c) 1997, 1998, 1999, 2000 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 2.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available at through the world-wide-web at | | http://www.php.net/license/2_01.txt. | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Author: Sterling Hughes | +----------------------------------------------------------------------+ */ /* $Id$ */ #include "php.h" #if HAVE_SWF #include "swf.h" #include "ext/standard/info.h" #include "php_swf.h" function_entry swf_functions[] = { PHP_FE(swf_openfile, NULL) PHP_FE(swf_closefile, NULL) PHP_FE(swf_labelframe, NULL) PHP_FE(swf_showframe, NULL) PHP_FE(swf_setframe, NULL) PHP_FE(swf_getframe, NULL) PHP_FE(swf_mulcolor, NULL) PHP_FE(swf_addcolor, NULL) PHP_FE(swf_placeobject, NULL) PHP_FE(swf_modifyobject, NULL) PHP_FE(swf_removeobject, NULL) PHP_FE(swf_nextid, NULL) PHP_FE(swf_startdoaction, NULL) PHP_FE(swf_enddoaction, NULL) PHP_FE(swf_actiongotoframe, NULL) PHP_FE(swf_actiongeturl, NULL) PHP_FE(swf_actionnextframe, NULL) PHP_FE(swf_actionprevframe, NULL) PHP_FE(swf_actionplay, NULL) PHP_FE(swf_actionstop, NULL) PHP_FE(swf_actiontogglequality, NULL) PHP_FE(swf_actionwaitforframe, NULL) PHP_FE(swf_actionsettarget, NULL) PHP_FE(swf_actiongotolabel, NULL) PHP_FE(swf_defineline, NULL) PHP_FE(swf_definerect, NULL) PHP_FE(swf_startshape, NULL) PHP_FE(swf_shapelinesolid, NULL) PHP_FE(swf_shapefilloff, NULL) PHP_FE(swf_shapefillsolid, NULL) PHP_FE(swf_shapefillbitmapclip, NULL) PHP_FE(swf_shapefillbitmaptile, NULL) PHP_FE(swf_shapemoveto, NULL) PHP_FE(swf_shapelineto, NULL) PHP_FE(swf_shapecurveto, NULL) PHP_FE(swf_shapecurveto3, NULL) PHP_FE(swf_shapearc, NULL) PHP_FE(swf_endshape, NULL) PHP_FE(swf_definefont, NULL) PHP_FE(swf_setfont, NULL) PHP_FE(swf_fontsize, NULL) PHP_FE(swf_fontslant, NULL) PHP_FE(swf_fonttracking, NULL) PHP_FE(swf_getfontinfo, NULL) PHP_FE(swf_definetext, NULL) PHP_FE(swf_textwidth, NULL) PHP_FE(swf_definebitmap, NULL) PHP_FE(swf_getbitmapinfo, NULL) PHP_FE(swf_startsymbol, NULL) PHP_FE(swf_endsymbol, NULL) PHP_FE(swf_startbutton, NULL) PHP_FE(swf_addbuttonrecord, NULL) PHP_FE(swf_oncondition, NULL) PHP_FE(swf_endbutton, NULL) PHP_FE(swf_viewport, NULL) PHP_FE(swf_ortho2, NULL) PHP_FE(swf_perspective, NULL) PHP_FE(swf_polarview, NULL) PHP_FE(swf_lookat, NULL) PHP_FE(swf_pushmatrix, NULL) PHP_FE(swf_popmatrix, NULL) PHP_FE(swf_scale, NULL) PHP_FE(swf_translate, NULL) PHP_FE(swf_rotate, NULL) PHP_FE(swf_posround, NULL) {NULL,NULL,NULL} }; zend_module_entry swf_module_entry = { "swf", swf_functions, PHP_MINIT(swf), NULL, NULL, NULL, PHP_MINFO(swf), STANDARD_MODULE_PROPERTIES }; #if COMPILE_DL DLEXPORT zend_module_entry *get_module() { return &swf_module_entry; }; #endif PHP_MINFO_FUNCTION(swf) { php_info_print_table_start(); php_info_print_table_row(2, "swf support", "enabled"); php_info_print_table_end(); } PHP_MINIT_FUNCTION(swf) { REGISTER_LONG_CONSTANT("TYPE_PUSHBUTTON", TYPE_PUSHBUTTON, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("TYPE_MENUBUTTON", TYPE_MENUBUTTON, CONST_CS | CONST_PERSISTENT); REGISTER_DOUBLE_CONSTANT("BSHitTest", BSHitTest, CONST_CS | CONST_PERSISTENT); REGISTER_DOUBLE_CONSTANT("BSDown", BSDown, CONST_CS | CONST_PERSISTENT); REGISTER_DOUBLE_CONSTANT("BSOver", BSOver, CONST_CS | CONST_PERSISTENT); REGISTER_DOUBLE_CONSTANT("BSUp", BSUp, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("OverDowntoIdle", OverDowntoIdle, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("IdletoOverDown", IdletoOverDown, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("OutDowntoIdle", OutDowntoIdle, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("OutDowntoOverDown", OutDowntoOverDown, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("OverDowntoOutDown", OverDowntoOutDown, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("OverUptoOverDown", OverUptoOverDown, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("OverUptoIdle", OverUptoIdle, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("IdletoOverUp", IdletoOverUp, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("ButtonEnter", ButtonEnter, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("ButtonExit", ButtonExit, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MenuEnter", MenuEnter, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MenuExit", MenuExit, CONST_CS | CONST_PERSISTENT); return SUCCESS; } PHP_FUNCTION(swf_openfile) { zval **name, **sizeX, **sizeY, **frameRate, **r, **g, **b; if (ARG_COUNT(ht) != 7 || zend_get_parameters_ex(7, &name, &sizeX, &sizeY, &frameRate, &r, &g, &b) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_string_ex(name); convert_to_double_ex(sizeX); convert_to_double_ex(sizeY); convert_to_double_ex(frameRate); convert_to_double_ex(r); convert_to_double_ex(g); convert_to_double_ex(b); swf_openfile((*name)->value.str.val, (float)(*sizeX)->value.dval, (float)(*sizeY)->value.dval, (float)(*frameRate)->value.dval, (float)(*r)->value.dval, (float)(*g)->value.dval, (float)(*b)->value.dval); } PHP_FUNCTION(swf_closefile) { swf_closefile(); } PHP_FUNCTION(swf_labelframe) { zval **name; if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &name) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_string_ex(name); swf_labelframe((*name)->value.str.val); } PHP_FUNCTION(swf_showframe) { swf_showframe(); } PHP_FUNCTION(swf_setframe) { zval **frameno; if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &frameno) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(frameno); swf_setframe((*frameno)->value.lval); } PHP_FUNCTION(swf_getframe) { RETURN_LONG(swf_getframe()); } void col_swf(INTERNAL_FUNCTION_PARAMETERS, int opt) { zval **r, **g, **b, **a; if (ARG_COUNT(ht) != 4 || zend_get_parameters_ex(4, &r, &g, &b, &a) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_double_ex(r); convert_to_double_ex(g); convert_to_double_ex(b); convert_to_double_ex(a); if (opt) { swf_addcolor((float)(*r)->value.dval, (float)(*g)->value.dval, (float)(*b)->value.dval, (float)(*a)->value.dval); } else { swf_mulcolor((float)(*r)->value.dval, (float)(*g)->value.dval, (float)(*b)->value.dval, (float)(*a)->value.dval); } } PHP_FUNCTION(swf_mulcolor) { col_swf(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0); } PHP_FUNCTION(swf_addcolor) { col_swf(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1); } PHP_FUNCTION(swf_placeobject) { zval **objid, **depth; if (ARG_COUNT(ht) != 2 || zend_get_parameters_ex(2, &objid, &depth) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(objid); convert_to_long_ex(depth); swf_placeobject((*objid)->value.lval, (*depth)->value.lval); } PHP_FUNCTION(swf_modifyobject) { zval **depth, **how; if (ARG_COUNT(ht) != 2 || zend_get_parameters_ex(2, &depth, &how) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(depth); convert_to_long_ex(how); swf_modifyobject((*depth)->value.lval, (*how)->value.lval); } PHP_FUNCTION(swf_removeobject) { zval **depth; if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &depth) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(depth); swf_removeobject((*depth)->value.lval); } PHP_FUNCTION(swf_nextid) { swf_nextid(); } PHP_FUNCTION(swf_startdoaction) { swf_startdoaction(); } PHP_FUNCTION(swf_enddoaction) { swf_enddoaction(); } PHP_FUNCTION(swf_actiongotoframe) { zval **frameno; if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &frameno) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(frameno); swf_actionGotoFrame((*frameno)->value.lval); } PHP_FUNCTION(swf_actiongeturl) { zval **url, **target; if (ARG_COUNT(ht) != 2 || zend_get_parameters_ex(2, &url, &target) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_string_ex(url); convert_to_string_ex(target); swf_actionGetURL((*url)->value.str.val, (*target)->value.str.val); } PHP_FUNCTION(swf_actionnextframe) { swf_actionNextFrame(); } PHP_FUNCTION(swf_actionprevframe) { swf_actionPrevFrame(); } PHP_FUNCTION(swf_actionplay) { swf_actionPlay(); } PHP_FUNCTION(swf_actionstop) { swf_actionStop(); } PHP_FUNCTION(swf_actiontogglequality) { swf_actionToggleQuality(); } PHP_FUNCTION(swf_actionwaitforframe) { zval **frame, **skipcount; if (ARG_COUNT(ht) != 2 || zend_get_parameters_ex(2, &frame, &skipcount) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(frame); convert_to_long_ex(skipcount); swf_actionWaitForFrame((*frame)->value.lval, (*skipcount)->value.lval); } PHP_FUNCTION(swf_actionsettarget) { zval **target; if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &target) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_string_ex(target); swf_actionSetTarget((*target)->value.str.val); } PHP_FUNCTION(swf_actiongotolabel) { zval **label; if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &label) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_string_ex(label); swf_actionGoToLabel((*label)->value.str.val); } void php_swf_define(INTERNAL_FUNCTION_PARAMETERS, int opt) { zval **objid, **x1, **y1, **x2, **y2, **width; if (ARG_COUNT(ht) != 6 || zend_get_parameters_ex(6, &objid, &x1, &y1, &x2, &y2, &width) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(objid); convert_to_double_ex(x1); convert_to_double_ex(y1); convert_to_double_ex(x2); convert_to_double_ex(y2); convert_to_double_ex(width); if (opt) { swf_defineline((*objid)->value.lval, (float)(*x1)->value.dval, (float)(*y1)->value.dval, (float)(*x2)->value.dval, (float)(*y2)->value.dval, (float)(*width)->value.dval); } else { swf_definerect((*objid)->value.lval, (float)(*x1)->value.dval, (float)(*y1)->value.dval, (float)(*x2)->value.dval, (float)(*y2)->value.dval, (float)(*width)->value.dval); } } PHP_FUNCTION(swf_defineline) { php_swf_define(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1); } PHP_FUNCTION(swf_definerect) { php_swf_define(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0); } PHP_FUNCTION(swf_startshape) { zval **objid; if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &objid) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(objid); swf_startshape((*objid)->value.lval); } PHP_FUNCTION(swf_shapelinesolid) { zval **r, **g, **b, **a, **width; if (ARG_COUNT(ht) != 5 || zend_get_parameters_ex(5, &r, &g, &b, &a, &width) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_double_ex(r); convert_to_double_ex(g); convert_to_double_ex(b); convert_to_double_ex(a); convert_to_double_ex(width); swf_shapelinesolid((float)(*r)->value.dval, (float)(*g)->value.dval, (float)(*b)->value.dval, (float)(*a)->value.dval, (float)(*width)->value.dval); } PHP_FUNCTION(swf_shapefilloff) { swf_shapefilloff(); } PHP_FUNCTION(swf_shapefillsolid) { zval **r, **g, **b, **a; if (ARG_COUNT(ht) != 4 || zend_get_parameters_ex(4, &r, &g, &b, &a) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_double_ex(r); convert_to_double_ex(g); convert_to_double_ex(b); convert_to_double_ex(a); swf_shapefillsolid((float)(*r)->value.dval, (float)(*g)->value.dval, (float)(*b)->value.dval, (float)(*a)->value.dval); } void php_swf_fill_bitmap(INTERNAL_FUNCTION_PARAMETERS, int opt) { zval **bitmapid; if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &bitmapid) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(bitmapid); if (opt) { swf_shapefillbitmapclip((*bitmapid)->value.lval); } else { swf_shapefillbitmaptile((*bitmapid)->value.lval); } } PHP_FUNCTION(swf_shapefillbitmapclip) { php_swf_fill_bitmap(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1); } PHP_FUNCTION(swf_shapefillbitmaptile) { php_swf_fill_bitmap(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0); } void php_swf_shape(INTERNAL_FUNCTION_PARAMETERS, int opt) { zval **x, **y; if (ARG_COUNT(ht) != 2 || zend_get_parameters_ex(2, &x, &y) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_double_ex(x); convert_to_double_ex(y); if (opt) { swf_shapemoveto((float)(*x)->value.dval, (float)(*y)->value.dval); } else { swf_shapelineto((float)(*x)->value.dval, (float)(*y)->value.dval); } } PHP_FUNCTION(swf_shapemoveto) { php_swf_shape(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1); } PHP_FUNCTION(swf_shapelineto) { php_swf_shape(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0); } PHP_FUNCTION(swf_shapecurveto) { zval **x1, **y1, **x2, **y2; if (ARG_COUNT(ht) != 4 || zend_get_parameters_ex(4, &x1, &y1, &x2, &y2) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_double_ex(x1); convert_to_double_ex(y1); convert_to_double_ex(x2); convert_to_double_ex(y2); swf_shapecurveto((float)(*x1)->value.dval, (float)(*y1)->value.dval, (float)(*x2)->value.dval, (float)(*y2)->value.dval); } PHP_FUNCTION(swf_shapecurveto3) { zval **x1, **y1, **x2, **y2, **x3, **y3; if (ARG_COUNT(ht) != 6 || zend_get_parameters_ex(6, &x1, &y1, &x2, &y2, &x3, &y3) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_double_ex(x1); convert_to_double_ex(y1); convert_to_double_ex(x2); convert_to_double_ex(y2); convert_to_double_ex(x3); convert_to_double_ex(y3); swf_shapecurveto3((float)(*x1)->value.dval, (float)(*y1)->value.dval, (float)(*x2)->value.dval, (float)(*y2)->value.dval, (float)(*x3)->value.dval, (float)(*y3)->value.dval); } PHP_FUNCTION(swf_shapearc) { zval **x, **y, **r, **ang1, **ang2; if (ARG_COUNT(ht) != 5 || zend_get_parameters_ex(5, &x, &y, &r, &ang1, &ang2) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_double_ex(x); convert_to_double_ex(y); convert_to_double_ex(r); convert_to_double_ex(ang1); convert_to_double_ex(ang2); swf_shapearc((float)(*x)->value.dval, (float)(*y)->value.dval, (float)(*r)->value.dval, (float)(*ang1)->value.dval, (float)(*ang2)->value.dval); } PHP_FUNCTION(swf_endshape) { swf_endshape(); } PHP_FUNCTION(swf_definefont) { zval **fontid, **name; if (ARG_COUNT(ht) != 2 || zend_get_parameters_ex(2, &fontid, &name) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(fontid); convert_to_string_ex(name); swf_definefont((*fontid)->value.lval, (*name)->value.str.val); } PHP_FUNCTION(swf_setfont) { zval **fontid; if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &fontid) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(fontid); swf_setfont((*fontid)->value.lval); } PHP_FUNCTION(swf_fontsize) { zval **height; if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &height) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_double_ex(height); swf_fontsize((float)(*height)->value.dval); } PHP_FUNCTION(swf_fontslant) { zval **slant; if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &slant) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_double_ex(slant); swf_fontslant((float)(*slant)->value.dval); } PHP_FUNCTION(swf_fonttracking) { zval **track; if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &track) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_double_ex(track); swf_fonttracking((float)(*track)->value.dval); } PHP_FUNCTION(swf_getfontinfo) { float A_height, x_height; swf_getfontinfo(&A_height, &x_height); if (array_init(return_value) == FAILURE) { php_error(E_WARNING, "Cannot initialize return value from swf_getfontinfo"); RETURN_FALSE; } add_assoc_double(return_value, "Aheight", A_height); add_assoc_double(return_value, "xheight", x_height); } PHP_FUNCTION(swf_definetext) { zval **objid, **str, **docCenter; if (ARG_COUNT(ht) != 3 || zend_get_parameters_ex(3, &objid, &str, &docCenter) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(objid); convert_to_string_ex(str); convert_to_long_ex(docCenter); swf_definetext((*objid)->value.lval, (*str)->value.str.val, (*docCenter)->value.lval); } PHP_FUNCTION(swf_textwidth) { zval **str; if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &str) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_string_ex(str); RETURN_DOUBLE((double)swf_textwidth((*str)->value.str.val)); } PHP_FUNCTION(swf_definebitmap) { zval **objid, **imgname; if (ARG_COUNT(ht) != 2 || zend_get_parameters_ex(2, &objid, &imgname) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(objid); convert_to_string_ex(imgname); swf_definebitmap((*objid)->value.lval, (*imgname)->value.str.val); } PHP_FUNCTION(swf_getbitmapinfo) { zval **bitmapid; int size, width, height; if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &bitmapid) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(bitmapid); size = swf_getbitmapinfo((*bitmapid)->value.lval, &width, &height); if (array_init(return_value) == FAILURE) { php_error(E_WARNING, "Cannot initialize return value from swf_getbitmapinfo"); RETURN_FALSE; } add_assoc_long(return_value, "size", size); add_assoc_long(return_value, "width", width); add_assoc_long(return_value, "height", height); } PHP_FUNCTION(swf_startsymbol) { zval **objid; if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &objid) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(objid); swf_startsymbol((*objid)->value.lval); } PHP_FUNCTION(swf_endsymbol) { swf_endsymbol(); } PHP_FUNCTION(swf_startbutton) { zval **objid, **type; if (ARG_COUNT(ht) != 2 || zend_get_parameters_ex(2, &objid, &type) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(objid); convert_to_long_ex(type); swf_startbutton((*objid)->value.lval, (*type)->value.lval); /* TYPE_MENUBUTTON, TYPE_PUSHBUTTON */ } PHP_FUNCTION(swf_addbuttonrecord) { zval **state, **objid, **depth; if (ARG_COUNT(ht) != 3 || zend_get_parameters_ex(3, &state, &objid, &depth) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(state); convert_to_long_ex(objid); convert_to_long_ex(depth); swf_addbuttonrecord((*state)->value.lval, (*objid)->value.lval, (*depth)->value.lval); } PHP_FUNCTION(swf_oncondition) { zval **transitions; if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &transitions) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(transitions); swf_oncondition((*transitions)->value.lval); } PHP_FUNCTION(swf_endbutton) { swf_endbutton(); } void php_swf_geo_same(INTERNAL_FUNCTION_PARAMETERS, int opt) { zval **arg1, **arg2, **arg3, **arg4; if (ARG_COUNT(ht) != 4 || zend_get_parameters_ex(4, &arg1, &arg2, &arg3, &arg4) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_double_ex(arg1); convert_to_double_ex(arg2); convert_to_double_ex(arg3); convert_to_double_ex(arg4); if (opt == 0) { swf_viewport((*arg1)->value.dval, (*arg2)->value.dval, (*arg3)->value.dval, (*arg4)->value.dval); } else if (opt == 1) { swf_ortho2((*arg1)->value.dval, (*arg2)->value.dval, (*arg3)->value.dval, (*arg4)->value.dval); } else if (opt == 2) { swf_polarview((*arg1)->value.dval, (*arg2)->value.dval, (*arg3)->value.dval, (*arg4)->value.dval); } else if (opt == 3) { swf_perspective((*arg1)->value.dval, (*arg2)->value.dval, (*arg3)->value.dval, (*arg4)->value.dval); } } PHP_FUNCTION(swf_viewport) { php_swf_geo_same(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0); } PHP_FUNCTION(swf_ortho2) { php_swf_geo_same(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1); } PHP_FUNCTION(swf_polarview) { php_swf_geo_same(INTERNAL_FUNCTION_PARAM_PASSTHRU, 2); } PHP_FUNCTION(swf_perspective) { php_swf_geo_same(INTERNAL_FUNCTION_PARAM_PASSTHRU, 3); } PHP_FUNCTION(swf_lookat) { zval **vx, **vy, **vz, **px, **py, **pz, **twist; if (ARG_COUNT(ht) != 7 || zend_get_parameters_ex(7, &vx, &vy, &vz, &px, &py, &pz, &twist) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_double_ex(vx); convert_to_double_ex(vy); convert_to_double_ex(vz); convert_to_double_ex(px); convert_to_double_ex(py); convert_to_double_ex(pz); convert_to_double_ex(twist); swf_lookat((*vx)->value.dval, (*vy)->value.dval, (*vz)->value.dval, (*px)->value.dval, (*py)->value.dval, (*pz)->value.dval, (*twist)->value.dval); } PHP_FUNCTION(swf_pushmatrix) { swf_pushmatrix(); } PHP_FUNCTION(swf_popmatrix) { swf_popmatrix(); } PHP_FUNCTION(swf_scale) { zval **x, **y, **z; if (ARG_COUNT(ht) != 3 || zend_get_parameters_ex(3, &x, &y, &z) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_double_ex(x); convert_to_double_ex(y); convert_to_double_ex(z); swf_scale((*x)->value.dval, (*y)->value.dval, (*z)->value.dval); } PHP_FUNCTION(swf_translate) { zval **x, **y, **z; if (ARG_COUNT(ht) != 3 || zend_get_parameters_ex(3, &x, &y, &z) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_double_ex(x); convert_to_double_ex(y); convert_to_double_ex(z); swf_translate((*x)->value.dval, (*y)->value.dval, (*z)->value.dval); } PHP_FUNCTION(swf_rotate) { zval **angle, **axis; if (ARG_COUNT(ht) != 2 || zend_get_parameters_ex(2, &angle, &axis) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_double_ex(angle); convert_to_string_ex(axis); swf_rotate((*angle)->value.dval, (*axis)->value.str.val); } PHP_FUNCTION(swf_posround) { zval **doit; if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &doit) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(doit); swf_posround((*doit)->value.lval); } #endif