static void draw_ksegment (GLOBAL *g, OBJECT *obj) { register short x1, y1, x2, y2; int dx, dy; int i; g->counter++; x1 = ((Ksegment *)obj->cur)->x1; /* in the natural coordinate system */ y1 = ((Ksegment *)obj->cur)->y1; x2 = ((Ksegment *)obj->cur)->x2; y2 = ((Ksegment *)obj->cur)->y2; dx = x2 - x1; dy = y2 - y1; /* maybe throw away values and start over */ if( ((dx*dx) + (dy * dy)) < 100) { init_ksegment (g, obj); x1 = ((Ksegment *)obj->cur)->x1; /* in the natural coordinate system */ y1 = ((Ksegment *)obj->cur)->y1; x2 = ((Ksegment *)obj->cur)->x2; y2 = ((Ksegment *)obj->cur)->y2; } for (i=0; i<g->symmetry; i++) { (((Ksegment *)obj->cur)->xsegments)[i].x1 = NEWX(x1,y1); (((Ksegment *)obj->cur)->xsegments)[i].y1 = NEWY(x1,y1); (((Ksegment *)obj->cur)->xsegments)[i].x2 = NEWX(x2,y2); (((Ksegment *)obj->cur)->xsegments)[i].y2 = NEWY(x2,y2); (((Ksegment *)obj->cur)->xsegments)[i].x1 = (x1 = (((Ksegment *)obj->cur)->xsegments)[i].x1) + g->xoff; (((Ksegment *)obj->cur)->xsegments)[i].y1 = (y1 = (((Ksegment *)obj->cur)->xsegments)[i].y1) + g->yoff; (((Ksegment *)obj->cur)->xsegments)[i].x2 = (x2 = (((Ksegment *)obj->cur)->xsegments)[i].x2) + g->xoff; (((Ksegment *)obj->cur)->xsegments)[i].y2 = (y2 = (((Ksegment *)obj->cur)->xsegments)[i].y2) + g->yoff; } XSetForeground(g->dpy, g->draw_gc, (((Ksegment *)obj->cur)->color).pixel); XDrawSegments(g->dpy, g->window, g->draw_gc, ((Ksegment *)obj->cur)->xsegments, g->symmetry); ((Ksegment *)obj->cur)->drawn = 1; if (((((Ksegment *)obj->cur)->next)->drawn) != 0) { XDrawSegments(g->dpy, g->window, g->erase_gc, ((Ksegment *)obj->cur)->next->xsegments, g->symmetry); } }
inline static char *mkwildcard () { char *out; NEWX(out, 1+8*sizeof out, '-', ARENA0); out[8*sizeof out] = '\0'; return out; }