Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/engine/stard.c
blob: e6e58bc8f4a6ef2afe75f9b5eccf52f2214036ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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