X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Finteraggregate.c;h=01043265d108424adfed298e91fed24762ff7026;hb=aa75c7476aeaa84cf3abc192b376a8b03c325213;hp=441bd8465ca67d336f7e96d9632bf6204a74c1e0;hpb=49f5b54f312fe4ac2e9bc47581a72451bd0e8439;p=xscreensaver diff --git a/hacks/interaggregate.c b/hacks/interaggregate.c index 441bd846..01043265 100644 --- a/hacks/interaggregate.c +++ b/hacks/interaggregate.c @@ -73,6 +73,7 @@ static const char *interaggregate_defaults[] = { ".background: white", ".foreground: black", + "*fpsSolid: true", "*maxCycles: 100000", #ifdef TIME_ME "*growthDelay: 0", @@ -84,6 +85,9 @@ static const char *interaggregate_defaults[] = "*baseOrbits: 75", "*baseOnCenter: False", "*drawCenters: False", +#ifdef HAVE_MOBILE + "*ignoreRotation: True", +#endif 0 }; @@ -255,7 +259,7 @@ static inline void point2rgb(int depth, unsigned long c, int *r, int *g, int *b) { case 32: case 24: -#ifdef HAVE_COCOA +#ifdef HAVE_JWXYZ /* This program idiotically does not go through a color map, so we have to hardcode in knowledge of how jwxyz.a packs pixels! Fix it to go through st->colors[st->ncolors] instead! @@ -289,9 +293,8 @@ static inline unsigned long rgb2point(int depth, int r, int g, int b) switch(depth) { case 32: - ret = 0xff000000; case 24: -#ifdef HAVE_COCOA +#ifdef HAVE_JWXYZ /* This program idiotically does not go through a color map, so we have to hardcode in knowledge of how jwxyz.a packs pixels! Fix it to go through st->colors[st->ncolors] instead! @@ -352,11 +355,11 @@ static inline void drawPoint(int x, int y, unsigned long color, double intensity { unsigned long c; - if ( x >= f->width ) x -= f->width; - else if ( x < 0 ) x += f->width; + while ( x >= f->width ) x -= f->width; + while ( x < 0 ) x += f->width; - if ( y >= f->height ) y -= f->height; - else if ( y < 0 ) y += f->height; + while ( y >= f->height ) y -= f->height; + while ( y < 0 ) y += f->height; /* if ( in_bounds(f, x, y) ) ... */ @@ -437,6 +440,7 @@ static void build_colors(struct field *f, Display *dpy, XWindowAttributes *xgwa) ; } + if (f->numcolors < 1) f->numcolors = 1; f->parsedcolors = (unsigned long *) calloc(f->numcolors, sizeof(unsigned long)); if ( f->parsedcolors == NULL ) @@ -566,7 +570,7 @@ static void build_field(Display *dpy, Window window, XWindowAttributes xgwa, GC { if (i < base_orbits ) { - if ( f->base_on_center ) + if ( f->base_on_center ) circle->center = &f->center_of_universe; else { @@ -719,7 +723,9 @@ static void drawIntersections(Display *dpy, Window window, GC fgc, struct field double d, dsqr, dx, dy; Circle *c2 = f->circles + j; +#ifdef TIME_ME ++f->possible_intersections; +#endif dx = c2->x - c1->x; dy = c2->y - c1->y; @@ -745,7 +751,9 @@ static void drawIntersections(Display *dpy, Window window, GC fgc, struct field * intersection */ +#ifdef TIME_ME ++f->intersection_count; +#endif /* unit vector in direction of c1 to c2 */ bx = dx / d; @@ -953,6 +961,12 @@ interaggregate_reshape (Display *dpy, Window window, void *closure, static Bool interaggregate_event (Display *dpy, Window window, void *closure, XEvent *event) { + struct state *st = (struct state *) closure; + if (screenhack_event_helper (dpy, window, event)) + { + st->f->height--; /* act like a resize */ + return True; + } return False; }