X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fceltic.c;h=103b64718b03814e698f2b0fb0cf1c35e476e707;hb=6afd6db0ae9396cd7ff897ade597cd5483f49b0e;hp=92cba9c87c041eefe2683fa51a1e42bcfd1b0250;hpb=49f5b54f312fe4ac2e9bc47581a72451bd0e8439;p=xscreensaver diff --git a/hacks/celtic.c b/hacks/celtic.c index 92cba9c8..103b6471 100644 --- a/hacks/celtic.c +++ b/hacks/celtic.c @@ -85,7 +85,7 @@ struct state { Graph graph; XWindowAttributes xgwa; int delay2; - int reset; + int reset, force_reset; double t; struct params params; @@ -718,13 +718,11 @@ static int pattern_next_unfilled_couple(Pattern p, Edge *e, Direction *d) static void pattern_make_curves(Pattern p) { - int i; Edge current_edge, first_edge, next_edge; Node current_node, first_node; Direction current_direction, first_direction; Spline s; - i=0; while (pattern_next_unfilled_couple(p, &first_edge, &first_direction)) { /* start a new loop */ s=spline_new(random()%(p->ncolors-2)+2); @@ -835,10 +833,14 @@ static void pattern_animate(struct state *st) static const char *celtic_defaults[] = { ".background: black", ".foreground: #333333", + "*fpsSolid: true", "*ncolors: 20", "*delay: 10000", "*delay2: 5", "*showGraph: False", +#ifdef USE_IPHONE + "*ignoreRotation: True", +#endif 0 }; @@ -920,10 +922,10 @@ celtic_init (Display *d_arg, Window w_arg) else { #if 0 - make_random_colormap (st->dpy, st->xgwa.visual, st->xgwa.colormap, + make_random_colormap (st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap, st->colors, &st->ncolors, True, True, 0, True); #else - make_smooth_colormap (st->dpy, st->xgwa.visual, st->xgwa.colormap, + make_smooth_colormap (st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap, st->colors, &st->ncolors, True, 0, True); #endif if (st->ncolors < 2) @@ -970,8 +972,11 @@ celtic_draw (Display *dpy, Window window, void *closure) return 10000; } - if (st->reset) { + if (st->reset || st->force_reset) { + int delay = (st->force_reset ? 0 : st->delay2); st->reset = 0; + st->force_reset = 0; + st->t = 1; pattern_del(st->pattern); st->pattern = NULL; @@ -980,11 +985,11 @@ celtic_draw (Display *dpy, Window window, void *closure) /* recolor each time */ st->ncolors = get_integer_resource (st->dpy, "ncolors", "Integer"); if (st->ncolors > 2) - make_smooth_colormap (st->dpy, st->xgwa.visual, st->xgwa.colormap, + make_smooth_colormap (st->xgwa.screen, st->xgwa.visual, st->xgwa.colormap, st->colors, &st->ncolors, True, 0, True); st->eraser = erase_window (st->dpy, st->window, st->eraser); - return st->delay2; + return (delay); } if (st->pattern == NULL) { @@ -1103,6 +1108,12 @@ celtic_reshape (Display *dpy, Window window, void *closure, static Bool celtic_event (Display *dpy, Window window, void *closure, XEvent *event) { + struct state *st = (struct state *) closure; + if (screenhack_event_helper (dpy, window, event)) + { + st->force_reset = 1; + return True; + } return False; }