=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/plot/ox_plot.c,v retrieving revision 1.8 retrieving revision 1.11 diff -u -p -r1.8 -r1.11 --- OpenXM_contrib2/asir2000/plot/ox_plot.c 2000/10/06 06:05:24 1.8 +++ OpenXM_contrib2/asir2000/plot/ox_plot.c 2001/08/20 09:03:28 1.11 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/plot/ox_plot.c,v 1.7 2000/09/12 06:05:31 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/plot/ox_plot.c,v 1.10 2000/11/09 01:51:12 noro Exp $ */ #include "ca.h" #include "parse.h" @@ -69,6 +69,7 @@ extern int do_message; extern int ox_flushing; extern jmp_buf ox_env; extern MATHCAP my_mathcap; +extern char LastError[]; void create_error(ERR *,unsigned int ,char *); @@ -92,14 +93,21 @@ static void asir_do_cmd(unsigned int,unsigned int); static void process_ox(); static void asir_executeFunction(); -void ox_plot_main(int argc,char **argv) { +#if defined(VISUAL) +void ox_plot_main() +#else +void ox_plot_main(int argc,char **argv) +#endif +{ int ds; fd_set r; int n; +#if !defined(VISUAL) ox_asir_init(argc,argv); init_plot_display(argc,argv); ds = ConnectionNumber(display); +#endif if ( do_message ) fprintf(stderr,"I'm an ox_plot, Version %d.\n",ASIR_VERSION); @@ -110,6 +118,9 @@ void ox_plot_main(int argc,char **argv) { ox_send_sync(0); } while ( 1 ) { +#if defined(VISUAL) + process_ox(); +#else if ( ox_data_is_available(0) ) process_ox(); else { @@ -122,6 +133,7 @@ void ox_plot_main(int argc,char **argv) { process_xevent(); } } +#endif } static void process_ox() @@ -132,7 +144,6 @@ static void process_ox() ERR err; unsigned int serial; int ret; - extern char LastError[]; serial = ox_recv(0,&id,&obj); if ( do_message ) @@ -144,7 +155,7 @@ static void process_ox() break; if ( do_message ) fprintf(stderr," %s\n",name_of_cmd(cmd)); - if ( ret = setjmp(env) ) { + if ( ret = setjmp(main_env) ) { if ( ret == 1 ) { create_error(&err,serial,LastError); asir_push_one((Obj)err); @@ -207,7 +218,7 @@ static void asir_do_cmd(unsigned int cmd,unsigned int asir_executeString(); break; case SM_executeFunction: - asir_executeFunction(); + asir_executeFunction(serial); break; case SM_shutdown: asir_terminate(2); @@ -227,7 +238,8 @@ static void asir_do_cmd(unsigned int cmd,unsigned int } } -static void asir_executeFunction() +static void asir_executeFunction(serial) +int serial; { char *func; int argc; @@ -235,6 +247,7 @@ static void asir_executeFunction() FUNC f; Q ret; VL vl; + ERR err; NODE n,n1; func = ((STRING)asir_pop_one())->body; @@ -247,16 +260,25 @@ static void asir_executeFunction() if ( n ) NEXT(n1) = 0; id = -1; - if ( !strcmp(func,"plot") ) + if ( !strcmp(func,"plot") ) { id = plot(n); - else if ( !strcmp(func,"arrayplot") ) + STOQ(id,ret); asir_push_one((Obj)ret); + } else if ( !strcmp(func,"arrayplot") ) { id = arrayplot(n); - else if ( !strcmp(func,"plotover") ) - id = plotover(n); - else if ( !strcmp(func,"drawcircle") ) - id = drawcircle(n); - STOQ(id,ret); -#if 0 - asir_push_one((Obj)ret); -#endif + STOQ(id,ret); asir_push_one((Obj)ret); + } else if ( !strcmp(func,"open_canvas") ) { + id = open_canvas(n); + STOQ(id,ret); asir_push_one((Obj)ret); + } else if ( !strcmp(func,"plotover") ) { + plotover(n); + } else if ( !strcmp(func,"drawcircle") ) { + drawcircle(n); + } else if ( !strcmp(func,"draw_obj") ) { + if ( draw_obj(n) < 0 ) { + create_error(&err,serial,LastError); + asir_push_one((Obj)err); + } + } else if ( !strcmp(func,"clear_canvas") ) { + clear_canvas(n); + } }