summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2006-10-30 01:31:32 +0000
committerJens Arnold <amiconn@rockbox.org>2006-10-30 01:31:32 +0000
commit5421e8696906cda6416d089d5f387bb38a147ee2 (patch)
tree484625d1093bdb2f6af5466a07c1e014c2047a44
parentc1767ddf4a0cc91dcea1222eff0a60ac431714f2 (diff)
downloadrockbox-5421e8696906cda6416d089d5f387bb38a147ee2.tar.gz
rockbox-5421e8696906cda6416d089d5f387bb38a147ee2.tar.bz2
rockbox-5421e8696906cda6416d089d5f387bb38a147ee2.zip
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
-rw-r--r--apps/plugins/demystify.c53
-rw-r--r--docs/CREDITS1
2 files changed, 54 insertions, 0 deletions
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(rc<r)
+ ++rc;
+ else if(rc>r)
+ --rc;
+ if(gc<g)
+ ++gc;
+ else if(gc>g)
+ --gc;
+ if(bc<b)
+ ++bc;
+ else if(bc>b)
+ --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();
diff --git a/docs/CREDITS b/docs/CREDITS
index 3dbf6f79f0..dc5d091175 100644
--- a/docs/CREDITS
+++ b/docs/CREDITS
@@ -246,3 +246,4 @@ Martin Hensel
St├ęphane Doyen
Austin Appel
Andre Smith
+Travis Hyyppa