#include "lat2d.h" /* Fortran interface ... */ int MaxInitSize = 500; int PlusColor = BLUE; int MinusColor = MAGENTA; int BackgroundColor = BLACK; int Xmax = 0; int Ymax = 0; int Nx = 0; int Ny = 0; int SiteSize = 0; int Winid = 0; void init_graphics() { foreground(); keepaspect(Xmax,Ymax); Winid = winopen("grlat2d"); doublebuffer(); gconfig(); qdevice(ESCKEY); qdevice(PKEY); qdevice(REDRAW); ortho2(0,Nx,0,Ny); color(BackgroundColor); clear(); } void wait_for_key(short key) { long dev; short val; while( 1 ) { if( qtest() ) { dev = qread(&val); if( val && (dev == key) ) return; } } } void handle_events(void) { long dev; short val; long xsize, ysize; while( qtest() ) { dev = qread(&val); if( val ) { switch(dev) { case PKEY: wintitle("grlat2d: Type P or p to continue"); wait_for_key(PKEY); wintitle("grlat2d"); break; case REDRAW: reshapeviewport(); break; default: break; } } } } void grlat2d_(double *lat, int *pnx, int *pny, double *vpar, int *pnpar) { grlat2d(lat,*pnx,*pny,vpar,*pnpar); } void grlat2d (double *lat, int nx, int ny, double *vpar, int npar) { int ltrace = 0; long i, j; if( ltrace ) { fprintf(stderr,"grlat2d: nx: %d ny: %d npar: %d\n",nx,ny,npar); fprintf(stderr,"grlat2d: +col: %d -col: %d\n",PlusColor,MinusColor); } if( ! (nx && ny) ) return; if( !Winid ) { Nx = nx; Ny = ny; Xmax = Nx; Ymax = Ny; init_graphics(); } if( nx < 0 || ny < 0 ) { wintitle("grlat2d: Enter to exit"); wait_for_key(ESCKEY); } handle_events(); for( j = 0; j < Ny; j++ ) { for( i = 0; i < Nx; i++ ) { if( lat[j * Nx + i] > 0 ) { color(MinusColor); } else { color(PlusColor); } rectfi(i,j,i+1,j+1); } } swapbuffers(); }