diff options
Diffstat (limited to 'src/engine/stard.c')
-rw-r--r-- | src/engine/stard.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/engine/stard.c b/src/engine/stard.c new file mode 100644 index 0000000..e6e58bc --- /dev/null +++ b/src/engine/stard.c @@ -0,0 +1,31 @@ +#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 |