/* generate an XImage of from[][][] and draw it on the screen */ static void plain_draw(struct state *st, int k) { if (st->xy_coo[k].x+2*st->radius+st->speed+2 > st->orig_map->width || st->xy_coo[k].y+2*st->radius+st->speed+2 > st->orig_map->height) return; st->draw_routine(st, st->orig_map, st->buffer_map, st->xy_coo[k].x, st->xy_coo[k].y, st->fast_from); put_xshm_image(st->dpy, st->window, st->gc, st->buffer_map, 0, 0, st->xy_coo[k].x, st->xy_coo[k].y, 2*st->radius+st->speed+2, 2*st->radius+st->speed+2, &st->shm_info); }
/* render and display the current model */ static void renderFrame (struct state *st) { int n; /* This assumes black is zero. */ memset (st->workImage->data, 0, st->workImage->bytes_per_line * st->workImage->height); sortTiles (st); for (n = 0; n < st->tileCount; n++) { renderTile (st, st->sortedTiles[n]); } put_xshm_image (st->dpy, st->window, st->backgroundGC, st->workImage, 0, 0, 0, 0, st->windowWidth, st->windowHeight, &st->shmInfo); }