summaryrefslogtreecommitdiff
path: root/src/modules/pixbounce
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/pixbounce')
-rw-r--r--src/modules/pixbounce/pixbounce.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/modules/pixbounce/pixbounce.c b/src/modules/pixbounce/pixbounce.c
index 310a509..5d7d674 100644
--- a/src/modules/pixbounce/pixbounce.c
+++ b/src/modules/pixbounce/pixbounce.c
@@ -95,6 +95,7 @@ typedef struct pixbounce_context_t {
int x, y;
int x_dir, y_dir;
int pix_num;
+ uint32_t color;
} pixbounce_context_t;
@@ -109,6 +110,11 @@ static int pick_pix(int num_pics, int last_pic)
return pix_num;
}
+static uint32_t pick_color()
+{
+ return makergb(rand()%256, rand()%256, rand()%256, 1);
+}
+
static void * pixbounce_create_context(unsigned ticks, unsigned num_cpus, til_setup_t *setup)
{
pixbounce_context_t *ctxt;
@@ -123,6 +129,7 @@ static void * pixbounce_create_context(unsigned ticks, unsigned num_cpus, til_se
ctxt->x_dir = 0;
ctxt->y_dir = 0;
ctxt->pix_num = rand() % num_pix;
+ ctxt->color = pick_color();
return ctxt;
}
@@ -172,7 +179,7 @@ static void pixbounce_render_fragment(void *context, unsigned ticks, unsigned cp
if(pix_map[ctxt->pix_num][pix_offset] == 0) continue;
til_fb_fragment_put_pixel_unchecked(
fragment, ctxt->x+cursor_x, ctxt->y+cursor_y,
- makergb(0xFF, 0xFF, 0xFF, 1)
+ ctxt->color
);
}
}
@@ -181,18 +188,22 @@ static void pixbounce_render_fragment(void *context, unsigned ticks, unsigned cp
if(ctxt->x+ctxt->x_dir < 0) {
ctxt->x_dir = 1;
ctxt->pix_num = pick_pix(num_pix, ctxt->pix_num);
+ ctxt->color = pick_color();
}
if((ctxt->x+(pix_width*multiplier))+ctxt->x_dir > width) {
ctxt->x_dir = -1;
ctxt->pix_num = pick_pix(num_pix, ctxt->pix_num);
+ ctxt->color = pick_color();
}
if(ctxt->y+ctxt->y_dir < 0) {
ctxt->y_dir = 1;
ctxt->pix_num = pick_pix(num_pix, ctxt->pix_num);
+ ctxt->color = pick_color();
}
if((ctxt->y+(pix_height*multiplier))+ctxt->y_dir > height) {
ctxt->y_dir = -1;
ctxt->pix_num = pick_pix(num_pix, ctxt->pix_num);
+ ctxt->color = pick_color();
}
ctxt->x = ctxt->x+ctxt->x_dir;
ctxt->y = ctxt->y+ctxt->y_dir;
© All Rights Reserved