Spit_EPS_Header(fileid1,(int)(LENGTH/PS_X),timesteps,8); if(j%(PS_T)==0) { Spit_EPS_Row(fileid1,Rold); Spit_EPS_Row2(fileid2,NLold,NRold); } Spit_EPS_Trailer(fileid1); Spit_EPS_Header(fileid,width,length,bits) FILE *fileid; int width,length, bits; { double neww, newl, rat; double xorigin, yorigin; neww = (double)width; newl = (double)length; /* scale size */ rat = 500.0/neww; neww = 500.0; newl = rat*newl; if(newl>700.0) { rat = 700.0/newl; newl = 700.0; neww = rat*neww; } /* 8.5x11 page with no margins is 612x792 points */ xorigin = (612 - neww)/2.0; yorigin = (792 - newl)/2.0; /* defines compliance */ fprintf(fileid,"%%!PS-Adobe-2.0 EPSF-2.0\n"); /* defines size of image */ fprintf(fileid,"%%%%BoundingBox: %f %f %f %f\n", xorigin, yorigin,xorigin+neww,yorigin+newl); /* save present graphics state */ fprintf(fileid,"gsave\n"); /* put box around image */ fprintf(fileid,"%f %f moveto\n",xorigin-1,yorigin-1); fprintf(fileid,"%f %f lineto\n",xorigin-1,yorigin+newl+1); fprintf(fileid,"%f %f lineto\n",xorigin+neww+1,yorigin+newl+1); fprintf(fileid,"%f %f lineto\n",xorigin+neww+1,yorigin-1); fprintf(fileid,"%f %f lineto\n",xorigin-1,yorigin-1); fprintf(fileid,"stroke\n\n",xorigin-1,yorigin-1); /* define procedure "bufstr" to read strings of "width" characters */ fprintf(fileid,"/bufstr %d string def\n\n",width); /* move to origin of image */ fprintf(fileid,"%f %f translate\n",xorigin,yorigin); /* define the scale (default is 1 pt I guess) */ fprintf(fileid,"%f %f scale\n\n",neww,newl); /* width, height, and number of bits per pixel */ fprintf(fileid,"%d %d %d\n",width,length,bits); /* a matrix definition that I don't understand */ fprintf(fileid,"[%d 0 0 %d 0 %d]\n",width,-length,length); /* guidelines on how to read the image data */ fprintf(fileid,"{currentfile bufstr readhexstring pop} bind image\n"); } Spit_EPS_Row(fileid,pop) FILE *fileid; double pop[BOXES+1]; { int i, j, k, flag; for(i=1;i<=BOXES;i+=PS_X) { fprintf(fileid,"%02X",(int)(255.0*(1.0-pop[i]))); if((i+1)%60==0) fprintf(fileid,"\n"); } fprintf(fileid,"\n"); } Spit_EPS_Row2(fileid,pop1,pop2) FILE *fileid; double pop1[BOXES+1], pop2[BOXES+1]; { int i, j, k, flag; double pop; for(i=1;i<=BOXES;i+=PS_X) { pop = pop1[i]+pop2[i]; if(pop>1.0) pop = 1.0; fprintf(fileid,"%02X",(int)(255.0*(1.0-pop))); /* if(pop>PS_POP) fprintf(fileid,"0"); else fprintf(fileid,"F"); */ if((i+1)%60==0) fprintf(fileid,"\n"); } fprintf(fileid,"\n"); } Spit_EPS_Trailer(fileid) FILE *fileid; { fprintf(fileid,"grestore\n"); fprintf(fileid,"showpage\n"); }