#ifndef UNSUPPORTED static void do_starfield(void *data, struct taskinfo *task, int r1, int r2) { struct filter *f = (struct filter *) data; cpixel_t *dest; pixel8_t *src, *srcend; unsigned int color; int y; cpixeldata_t black = (cpixeldata_t) f->image->palette->pixels[0]; mysrandom((unsigned int) rand()); for (y = r1; y < r2; y++) { src = f->childimage->currlines[y]; srcend = f->childimage->currlines[y] + f->childimage->width; dest = (cpixel_t *) f->image->currlines[y]; while (src < srcend) { color = ((unsigned int) myrandom() >> 7) & 15; if (!*src || (unsigned int) *src * (unsigned int) *src * (unsigned int) *src > (unsigned int) ((unsigned int) myrandom() & (0xffffff))) { p_set(dest, (cpixeldata_t) f->image->palette->pixels[color]); } else p_set(dest, black); p_inc(dest, 1); src++; } } } #endif #undef do_starfield