From 5421e8696906cda6416d089d5f387bb38a147ee2 Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Mon, 30 Oct 2006 01:31:32 +0000 Subject: Colorised demystify. Based on patch #5856 by Travis Hyyppa, adapted to properly work with the multi-screen API. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11389 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/demystify.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) (limited to 'apps/plugins/demystify.c') diff --git a/apps/plugins/demystify.c b/apps/plugins/demystify.c index 55897441f9..44b658e878 100644 --- a/apps/plugins/demystify.c +++ b/apps/plugins/demystify.c @@ -81,6 +81,10 @@ PLUGIN_HEADER #define MAX_POLYGONS 40 #define MIN_POLYGONS 1 +#ifdef HAVE_LCD_COLOR +int r,g,b,rc,gc,bc; +#endif + /******************************* Globals ***********************************/ static struct plugin_api* rb; /* global api struct pointer */ @@ -280,6 +284,34 @@ void cleanup(void *parameter) #endif } +#ifdef HAVE_LCD_COLOR +void new_color(void) +{ + r = rb->rand()%255; + g = rb->rand()%255; + b = rb->rand()%255; +} + +void change_color(void) +{ + if(rcr) + --rc; + if(gcg) + --gc; + if(bcb) + --bc; + rb->lcd_set_foreground(LCD_RGBPACK(rc,gc,bc)); + if(rc==r && gc==g && bc==b) + new_color(); +} +#endif + /* * Main function */ @@ -296,10 +328,23 @@ int plugin_main(void) struct polygon leading_polygon[NB_SCREENS]; FOR_NB_SCREENS(i) { +#ifdef HAVE_LCD_COLOR + struct screen *display = rb->screens[i]; + if (display->depth > 8) + display->set_background(LCD_BLACK); +#endif fifo_init(&polygons[i]); polygon_move_init(&move[i]); polygon_init(&leading_polygon[i], rb->screens[i]); } + +#ifdef HAVE_LCD_COLOR + new_color(); + rc = r; + gc = g; + bc = b; +#endif + while (true) { FOR_NB_SCREENS(i) @@ -325,10 +370,18 @@ int plugin_main(void) /* Now the drawing part */ +#ifdef HAVE_LCD_COLOR + if (display->depth > 8) + display->set_foreground(SCREEN_COLOR_TO_NATIVE(display, + LCD_RGBPACK(rc, gc, bc))); +#endif display->clear_display(); polygons_draw(&polygons[i], display); display->update(); } +#ifdef HAVE_LCD_COLOR + change_color(); +#endif /* Speed handling*/ if (sleep_time<0)/* full speed */ rb->yield(); -- cgit v1.2.3