int main (int argc, char **argv) { int norun; char *startbrk, *endbrk; char *indir, *outdir, *outprefix; int attr; int splicemode; float digits; int bboxflag; startbrk = (char *) sbrk (0); indir = "."; outdir = "."; outprefix = "tiger"; attr = T_EATTR_STATE; splicemode = 1; digits = 6; bboxflag = 0; savemask = 15; norun = 0; for (;;) { switch (optget (argv, usage)) { case -100: indir = opt_info.arg; continue; case -101: outdir = opt_info.arg; continue; case -200: splicemode = opt_info.num; continue; case -201: if ((digits = atof (opt_info.arg)) < 0) digits = -1; continue; case -300: if (strcmp (opt_info.arg, "zip") == 0) attr = T_EATTR_ZIP; else if (strcmp (opt_info.arg, "npanxxloc") == 0) attr = T_EATTR_NPANXXLOC; else if (strcmp (opt_info.arg, "state") == 0) attr = T_EATTR_STATE; else if (strcmp (opt_info.arg, "county") == 0) attr = T_EATTR_COUNTY; else if (strcmp (opt_info.arg, "ctbna") == 0) attr = T_EATTR_CTBNA; else if (strcmp (opt_info.arg, "blkg") == 0) attr = T_EATTR_BLKG; else if (strcmp (opt_info.arg, "blk") == 0) attr = T_EATTR_BLK; else if (strcmp (opt_info.arg, "blks") == 0) attr = T_EATTR_BLKS; else if (strcmp (opt_info.arg, "country") == 0) attr = T_EATTR_COUNTRY; else SUerror ("tiger2ps", "bad argument for -a option"); continue; case -302: outprefix = opt_info.arg; continue; case -306: bboxflag = 1; continue; case -600: savemask &= 14; continue; case -601: savemask &= 13; continue; case -602: savemask &= 11; continue; case -603: savemask &= 7; continue; case -999: SUwarnlevel++; continue; case '?': SUusage (0, "tiger2ps", opt_info.arg); norun = 1; continue; case ':': SUusage (1, "tiger2ps", opt_info.arg); norun = 2; continue; } break; } if (norun) return norun - 1; argc -= opt_info.index, argv += opt_info.index; initrecords (); if (!(itemdict = dtopen (&itemdisc, Dtset))) SUerror ("tiger2ps", "dtopen failed"); if (loaddata (indir) == -1) SUerror ("tiger2ps", "loaddata failed"); if (splicemode > 0 && removedegree2vertices (splicemode) == -1) SUerror ("tiger2ps", "removedegree2vertices"); if (digits >= 0 && simplifyxys (digits) == -1) SUerror ("tiger2ps", "simplifyxys failed"); if (genpoints (attr) == -1) SUerror ("tiger2ps", "genpoints failed"); calcbbox (); if (bboxflag) printbbox (); if ((savemask & 1) && savepoints (outdir, outprefix) == -1) SUerror ("tiger2ps", "savepoints failed for %s/%s", outdir, outprefix); if ((savemask & 2) && savelines (outdir, outprefix) == -1) SUerror ("tiger2ps", "savelines failed for %s/%s", outdir, outprefix); if ((savemask & 4) && savepolys (outdir, outprefix) == -1) SUerror ("tiger2ps", "savepolys failed for %s/%s", outdir, outprefix); if ((savemask & 8) && gentris () == -1) SUerror ("tiger2ps", "gentris failed"); if ((savemask & 8) && savetris (outdir, outprefix) == -1) SUerror ("tiger2ps", "savetris failed for %s/%s", outdir, outprefix); printstats (); endbrk = (char *) sbrk (0); SUmessage (1, "tiger2ps", "memory usage %d", endbrk - startbrk); return 0; }
void main() { short val; int menu, pres; float p, mx, my; curmass = 0.5; curdrag = 0.15; prefsize(800,640); initbuzz(); winopen("dynadraw"); glcompat(GLC_OLDPOLYGON,1); subpixel(1); shademodel(FLAT); gconfig(); qdevice(LEFTMOUSE); qdevice(MIDDLEMOUSE); qdevice(MENUBUTTON); qdevice(RIGHTSHIFTKEY); qdevice(UPARROWKEY); qdevice(DOWNARROWKEY); qdevice(RIGHTSHIFTKEY); makeframe(); menu = defpup("dynadraw %t|toggle line style|save PostScript"); width = initwidth; mouse.fixedangle = 1; while(1) { switch(qread(&val)) { case REDRAW: makeframe(); break; case MIDDLEMOUSE: if(val) clearscreen(); break; case UPARROWKEY: if(val) initwidth *= 1.414213; width = initwidth; break; case DOWNARROWKEY: if(val) initwidth /= 1.414213; width = initwidth; break; case MENUBUTTON: if(val) { switch(dopup(menu)) { case 1: mouse.fixedangle = 1-mouse.fixedangle; break; case 2: savepolys(); break; } } break; case LEFTMOUSE: if(val) { my = getmousey(); if(my>0*SLIDERHIGH && my<2*SLIDERHIGH) { if(my>SLIDERHIGH) { while(getbutton(LEFTMOUSE)) { p = paramval(); if(p != curmass) { curmass = p; showsettings(); } } } else { while(getbutton(LEFTMOUSE)) { p = paramval(); if(p != curdrag) { curdrag = p; showsettings(); } } } } else { mx = 1.25*fgetmousex(); my = fgetmousey(); filtersetpos(&mouse,mx,my); odelx = 0.0; odely = 0.0; while(getbutton(LEFTMOUSE)) { mx = 1.25*fgetmousex(); my = fgetmousey(); if(filterapply(&mouse,mx,my)) { drawsegment(&mouse); color(0); buzz(); } } } } break; } } }