=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/plot/plotp.c,v retrieving revision 1.1 retrieving revision 1.5 diff -u -p -r1.1 -r1.5 --- OpenXM_contrib2/asir2000/plot/plotp.c 1999/12/03 07:39:13 1.1 +++ OpenXM_contrib2/asir2000/plot/plotp.c 2000/11/07 06:06:40 1.5 @@ -1,8 +1,57 @@ -/* $OpenXM: OpenXM/src/asir99/plot/plotp.c,v 1.1.1.1 1999/11/10 08:12:34 noro Exp $ */ +/* + * Copyright (c) 1994-2000 FUJITSU LABORATORIES LIMITED + * All rights reserved. + * + * FUJITSU LABORATORIES LIMITED ("FLL") hereby grants you a limited, + * non-exclusive and royalty-free license to use, copy, modify and + * redistribute, solely for non-commercial and non-profit purposes, the + * computer program, "Risa/Asir" ("SOFTWARE"), subject to the terms and + * conditions of this Agreement. For the avoidance of doubt, you acquire + * only a limited right to use the SOFTWARE hereunder, and FLL or any + * third party developer retains all rights, including but not limited to + * copyrights, in and to the SOFTWARE. + * + * (1) FLL does not grant you a license in any way for commercial + * purposes. You may use the SOFTWARE only for non-commercial and + * non-profit purposes only, such as academic, research and internal + * business use. + * (2) The SOFTWARE is protected by the Copyright Law of Japan and + * international copyright treaties. If you make copies of the SOFTWARE, + * with or without modification, as permitted hereunder, you shall affix + * to all such copies of the SOFTWARE the above copyright notice. + * (3) An explicit reference to this SOFTWARE and its copyright owner + * shall be made on your publication or presentation in any form of the + * results obtained by use of the SOFTWARE. + * (4) In the event that you modify the SOFTWARE, you shall notify FLL by + * e-mail at risa-admin@sec.flab.fujitsu.co.jp of the detailed specification + * for such modification or the source code of the modified part of the + * SOFTWARE. + * + * THE SOFTWARE IS PROVIDED AS IS WITHOUT ANY WARRANTY OF ANY KIND. FLL + * MAKES ABSOLUTELY NO WARRANTIES, EXPRESSED, IMPLIED OR STATUTORY, AND + * EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT OF THIRD PARTIES' + * RIGHTS. NO FLL DEALER, AGENT, EMPLOYEES IS AUTHORIZED TO MAKE ANY + * MODIFICATIONS, EXTENSIONS, OR ADDITIONS TO THIS WARRANTY. + * UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT, + * OR OTHERWISE, SHALL FLL BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL + * DAMAGES OF ANY CHARACTER, INCLUDING, WITHOUT LIMITATION, DAMAGES + * ARISING OUT OF OR RELATING TO THE SOFTWARE OR THIS AGREEMENT, DAMAGES + * FOR LOSS OF GOODWILL, WORK STOPPAGE, OR LOSS OF DATA, OR FOR ANY + * DAMAGES, EVEN IF FLL SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF + * SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. EVEN IF A PART + * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY + * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, + * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. + * + * $OpenXM: OpenXM_contrib2/asir2000/plot/plotp.c,v 1.4 2000/08/22 05:04:33 noro Exp $ +*/ #include "ca.h" #include "parse.h" #include "ox.h" #include "ifplot.h" +#include #if defined(sun) && !defined(__svr4__) #define EXP10(a) exp10(a) @@ -10,6 +59,10 @@ #define EXP10(a) pow(10.0,a) #endif +#if defined(VISUAL) +static POINT oldpos; +#endif + if_print(display,tab,can) DISPLAY *display; double **tab; @@ -111,12 +164,64 @@ struct canvas *can; { int len,i; POINT *pa; - + +#if defined(VISUAL) + len = can->pa[0].length; + pa = can->pa[0].pos; + for ( i = 0; i < len-1; i++ ) { + DRAWLINE(display,can->pix,drawGC,pa[i].x,pa[i].y,pa[i+1].x,pa[i+1].y); + } +#else XDrawLines(display,can->pix,drawGC, can->pa[0].pos,can->pa[0].length,CoordModeOrigin); XFlush(display); +#endif } +draw_point(display,can,x,y) +DISPLAY *display; +struct canvas *can; +int x,y; +{ +#if defined(VISUAL) + HDC dc; + + y = can->height-y; + DRAWPOINT(display,can->pix,drawGC,x,y); + dc = GetDC(can->hwnd); + DRAWPOINT(display,dc,drawGC,x,y); + ReleaseDC(can->hwnd,dc); +#else + y = can->height-y; + DRAWPOINT(display,can->pix,drawGC,x,y); + DRAWPOINT(display,can->window,drawGC,x,y); + XFlush(display); +#endif +} + +draw_line(display,can,x,y,u,v) +DISPLAY *display; +struct canvas *can; +int x,y,u,v; +{ +#if defined(VISUAL) + HDC dc; + + y = can->height-y; + v = can->height-v; + DRAWLINE(display,can->pix,drawGC,x,y,u,v); + dc = GetDC(can->hwnd); + DRAWLINE(display,dc,drawGC,x,y,u,v); + ReleaseDC(can->hwnd,dc); +#else + y = can->height-y; + v = can->height-v; + DRAWLINE(display,can->pix,drawGC,x,y,u,v); + DRAWLINE(display,can->window,drawGC,x,y,u,v); + XFlush(display); +#endif +} + #define D 5 pline(display,can,d) @@ -129,8 +234,11 @@ DRAWABLE d; char buf[BUFSIZ]; double adjust_scale(); - if ( can->noaxis ) + /* XXX : should be cleaned up */ + if ( can->noaxis || (can->mode == MODE_PLOT && !can->pa) ) return; + if ( can->mode == MODE_INTERACTIVE ) + return; xadj = yadj = 0; if ( (can->xmin < 0) && (can->xmax > 0) ) { @@ -159,6 +267,8 @@ DRAWABLE d; w = can->ymax-can->ymin; w1 = w * DEFAULTHEIGHT/can->height; e = adjust_scale(EXP10(floor(log10(w1))),w1); + if ( w == 0 ) + printf("afo"); for ( n = ceil(can->ymin/e); n*e<= can->ymax; n++ ) { y = (int)can->height*(1-(n*e-can->ymin)/w); DRAWLINE(display,d,drawGC,x0,y,x0+D,y); @@ -189,15 +299,28 @@ initmarker(can,message) struct canvas *can; char *message; { +#if defined(VISUAL) + can->real_can->percentage = 0; + can->real_can->prefix = message; +#else XawScrollbarSetThumb(can->xdone,0.0,0.0); XawScrollbarSetThumb(can->ydone,1.0,0.0); XFlush(display); +#endif } marker(can,dir,p) struct canvas *can; int dir,p; { +#if defined(VISUAL) + if ( dir == DIR_X ) + can->real_can->percentage = ceil((float)p/(float)can->real_can->width*100); + else if ( dir == DIR_Y ) + can->real_can->percentage = ceil((float)p/(float)can->real_can->height*100); + else + can->real_can->percentage = ceil((float)p/(float)can->real_can->nzstep*100); +#else if ( dir == DIR_X ) { XawScrollbarSetThumb(can->xdone,(float)p/(float)can->width,0.05); count_and_flush(); @@ -208,13 +331,16 @@ int dir,p; XawScrollbarSetThumb(can->ydone,1.0-(float)p/(float)can->nzstep,0.05); flush(); } +#endif } define_cursor(w,cur) WINDOW w; CURSOR cur; { +#if !defined(VISUAL) XDefineCursor(display,w,cur); flush(); +#endif } static int flush_count; @@ -225,11 +351,15 @@ static int flush_count; #endif count_and_flush() { +#if !defined(VISUAL) if ( ++flush_count == MAX_COUNT ) flush(); +#endif } flush() { +#if !defined(VISUAL) flush_count = 0; XFlush(display); +#endif }