forked from len0rd/rockbox
Cleaned up the demistify plugin a litle bit, switched the key handling to the action API
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13926 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
e6a3f7d731
commit
f074b4635b
3 changed files with 80 additions and 107 deletions
|
@ -22,59 +22,9 @@
|
||||||
#include "plugin.h"
|
#include "plugin.h"
|
||||||
|
|
||||||
#ifdef HAVE_LCD_BITMAP
|
#ifdef HAVE_LCD_BITMAP
|
||||||
|
#include "pluginlib_actions.h"
|
||||||
PLUGIN_HEADER
|
PLUGIN_HEADER
|
||||||
|
|
||||||
/* Key assignement */
|
|
||||||
#if (CONFIG_KEYPAD == IPOD_4G_PAD) || \
|
|
||||||
(CONFIG_KEYPAD == IPOD_3G_PAD)
|
|
||||||
#define DEMYSTIFY_QUIT BUTTON_MENU
|
|
||||||
#define DEMYSTIFY_ADD_POLYGON BUTTON_RIGHT
|
|
||||||
#define DEMYSTIFY_REMOVE_POLYGON BUTTON_LEFT
|
|
||||||
#define DEMYSTIFY_INCREASE_SPEED BUTTON_SCROLL_FWD
|
|
||||||
#define DEMYSTIFY_DECREASE_SPEED BUTTON_SCROLL_BACK
|
|
||||||
#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
|
|
||||||
#define DEMYSTIFY_QUIT BUTTON_POWER
|
|
||||||
#define DEMYSTIFY_ADD_POLYGON BUTTON_RIGHT
|
|
||||||
#define DEMYSTIFY_REMOVE_POLYGON BUTTON_LEFT
|
|
||||||
#define DEMYSTIFY_INCREASE_SPEED BUTTON_SCROLL_DOWN
|
|
||||||
#define DEMYSTIFY_INCREASE_SPEED_REP (BUTTON_SCROLL_DOWN|BUTTON_REPEAT)
|
|
||||||
#define DEMYSTIFY_DECREASE_SPEED BUTTON_SCROLL_UP
|
|
||||||
#define DEMYSTIFY_DECREASE_SPEED_REP (BUTTON_SCROLL_UP|BUTTON_REPEAT)
|
|
||||||
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
|
|
||||||
#define DEMYSTIFY_QUIT BUTTON_POWER
|
|
||||||
#define DEMYSTIFY_ADD_POLYGON BUTTON_RIGHT
|
|
||||||
#define DEMYSTIFY_REMOVE_POLYGON BUTTON_LEFT
|
|
||||||
#define DEMYSTIFY_INCREASE_SPEED BUTTON_SCROLL_UP
|
|
||||||
#define DEMYSTIFY_DECREASE_SPEED BUTTON_SCROLL_DOWN
|
|
||||||
#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
|
|
||||||
#define DEMYSTIFY_QUIT BUTTON_POWER
|
|
||||||
#define DEMYSTIFY_ADD_POLYGON BUTTON_RIGHT
|
|
||||||
#define DEMYSTIFY_REMOVE_POLYGON BUTTON_LEFT
|
|
||||||
#define DEMYSTIFY_INCREASE_SPEED BUTTON_UP
|
|
||||||
#define DEMYSTIFY_DECREASE_SPEED BUTTON_DOWN
|
|
||||||
#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
|
|
||||||
#define DEMYSTIFY_QUIT BUTTON_POWER
|
|
||||||
#define DEMYSTIFY_ADD_POLYGON BUTTON_RIGHT
|
|
||||||
#define DEMYSTIFY_REMOVE_POLYGON BUTTON_LEFT
|
|
||||||
#define DEMYSTIFY_INCREASE_SPEED BUTTON_UP
|
|
||||||
#define DEMYSTIFY_DECREASE_SPEED BUTTON_DOWN
|
|
||||||
#else
|
|
||||||
#define DEMYSTIFY_QUIT BUTTON_OFF
|
|
||||||
#define DEMYSTIFY_ADD_POLYGON BUTTON_UP
|
|
||||||
#define DEMYSTIFY_REMOVE_POLYGON BUTTON_DOWN
|
|
||||||
#define DEMYSTIFY_INCREASE_SPEED BUTTON_RIGHT
|
|
||||||
#define DEMYSTIFY_DECREASE_SPEED BUTTON_LEFT
|
|
||||||
#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
|
|
||||||
(CONFIG_KEYPAD == IRIVER_H300_PAD)
|
|
||||||
#define DEMYSTIFY_RC_QUIT BUTTON_RC_STOP
|
|
||||||
#define DEMYSTIFY_RC_ADD_POLYGON BUTTON_RC_BITRATE
|
|
||||||
#define DEMYSTIFY_RC_REMOVE_POLYGON BUTTON_RC_SOURCE
|
|
||||||
#define DEMYSTIFY_RC_INCREASE_SPEED BUTTON_RC_VOL_UP
|
|
||||||
#define DEMYSTIFY_RC_DECREASE_SPEED BUTTON_RC_VOL_DOWN
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define DEFAULT_WAIT_TIME 3
|
#define DEFAULT_WAIT_TIME 3
|
||||||
#define DEFAULT_NB_POLYGONS 7
|
#define DEFAULT_NB_POLYGONS 7
|
||||||
#define NB_POINTS 4
|
#define NB_POINTS 4
|
||||||
|
@ -83,8 +33,28 @@ PLUGIN_HEADER
|
||||||
#define MAX_POLYGONS 40
|
#define MAX_POLYGONS 40
|
||||||
#define MIN_POLYGONS 1
|
#define MIN_POLYGONS 1
|
||||||
|
|
||||||
|
/* Key assignement */
|
||||||
|
#define DEMYSTIFY_QUIT PLA_QUIT
|
||||||
|
|
||||||
|
#define DEMYSTIFY_INCREASE_SPEED PLA_RIGHT
|
||||||
|
#define DEMYSTIFY_DECREASE_SPEED PLA_LEFT
|
||||||
|
#define DEMYSTIFY_INCREASE_SPEED_REPEAT PLA_RIGHT_REPEAT
|
||||||
|
#define DEMYSTIFY_DECREASE_SPEED_REPEAT PLA_LEFT_REPEAT
|
||||||
|
|
||||||
|
#define DEMYSTIFY_ADD_POLYGON PLA_UP
|
||||||
|
#define DEMYSTIFY_REMOVE_POLYGON PLA_DOWN
|
||||||
|
#define DEMYSTIFY_ADD_POLYGON_REPEAT PLA_UP_REPEAT
|
||||||
|
#define DEMYSTIFY_REMOVE_POLYGON_REPEAT PLA_DOWN_REPEAT
|
||||||
|
|
||||||
|
const struct button_mapping *plugin_contexts[]
|
||||||
|
= {generic_directions, generic_actions};
|
||||||
|
|
||||||
#ifdef HAVE_LCD_COLOR
|
#ifdef HAVE_LCD_COLOR
|
||||||
int r,g,b,rc,gc,bc;
|
struct line_color
|
||||||
|
{
|
||||||
|
int r,g,b;
|
||||||
|
int current_r,current_g,current_b;
|
||||||
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/******************************* Globals ***********************************/
|
/******************************* Globals ***********************************/
|
||||||
|
@ -287,31 +257,44 @@ void cleanup(void *parameter)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_LCD_COLOR
|
#ifdef HAVE_LCD_COLOR
|
||||||
void new_color(void)
|
void color_randomize(struct line_color * color)
|
||||||
{
|
{
|
||||||
r = rb->rand()%255;
|
color->r = rb->rand()%255;
|
||||||
g = rb->rand()%255;
|
color->g = rb->rand()%255;
|
||||||
b = rb->rand()%255;
|
color->b = rb->rand()%255;
|
||||||
}
|
}
|
||||||
|
|
||||||
void change_color(void)
|
void color_init(struct line_color * color)
|
||||||
{
|
{
|
||||||
if(rc<r)
|
color_randomize(color);
|
||||||
++rc;
|
color->current_r=color->r;
|
||||||
else if(rc>r)
|
color->current_g=color->g;
|
||||||
--rc;
|
color->current_b=color->b;
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void color_change(struct line_color * color)
|
||||||
|
{
|
||||||
|
if(color->current_r<color->r)
|
||||||
|
++color->current_r;
|
||||||
|
else if(color->current_r>color->r)
|
||||||
|
--color->current_r;
|
||||||
|
if(color->current_g<color->g)
|
||||||
|
++color->current_g;
|
||||||
|
else if(color->current_g>color->g)
|
||||||
|
--color->current_g;
|
||||||
|
if(color->current_b<color->b)
|
||||||
|
++color->current_b;
|
||||||
|
else if(color->current_b>color->b)
|
||||||
|
--color->current_b;
|
||||||
|
|
||||||
|
if(color->current_r==color->r &&
|
||||||
|
color->current_g==color->g &&
|
||||||
|
color->current_b==color->b)
|
||||||
|
color_randomize(color);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define COLOR_RGBPACK(color) LCD_RGBPACK((color)->current_r, (color)->current_g, (color)->current_b)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -320,7 +303,7 @@ void change_color(void)
|
||||||
|
|
||||||
int plugin_main(void)
|
int plugin_main(void)
|
||||||
{
|
{
|
||||||
int button;
|
int action;
|
||||||
int sleep_time=DEFAULT_WAIT_TIME;
|
int sleep_time=DEFAULT_WAIT_TIME;
|
||||||
int nb_wanted_polygons=DEFAULT_NB_POLYGONS;
|
int nb_wanted_polygons=DEFAULT_NB_POLYGONS;
|
||||||
int i;
|
int i;
|
||||||
|
@ -332,7 +315,7 @@ int plugin_main(void)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_LCD_COLOR
|
#ifdef HAVE_LCD_COLOR
|
||||||
struct screen *display = rb->screens[i];
|
struct screen *display = rb->screens[i];
|
||||||
if (display->depth > 8)
|
if (display->is_color)
|
||||||
display->set_background(LCD_BLACK);
|
display->set_background(LCD_BLACK);
|
||||||
#endif
|
#endif
|
||||||
fifo_init(&polygons[i]);
|
fifo_init(&polygons[i]);
|
||||||
|
@ -341,10 +324,8 @@ int plugin_main(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_LCD_COLOR
|
#ifdef HAVE_LCD_COLOR
|
||||||
new_color();
|
struct line_color color;
|
||||||
rc = r;
|
color_init(&color);
|
||||||
gc = g;
|
|
||||||
bc = b;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
|
@ -373,16 +354,18 @@ int plugin_main(void)
|
||||||
/* Now the drawing part */
|
/* Now the drawing part */
|
||||||
|
|
||||||
#ifdef HAVE_LCD_COLOR
|
#ifdef HAVE_LCD_COLOR
|
||||||
if (display->depth > 8)
|
if (display->is_color){
|
||||||
display->set_foreground(SCREEN_COLOR_TO_NATIVE(display,
|
unsigned foreground=
|
||||||
LCD_RGBPACK(rc, gc, bc)));
|
SCREEN_COLOR_TO_NATIVE(display,COLOR_RGBPACK(&color));
|
||||||
|
display->set_foreground(foreground);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
display->clear_display();
|
display->clear_display();
|
||||||
polygons_draw(&polygons[i], display);
|
polygons_draw(&polygons[i], display);
|
||||||
display->update();
|
display->update();
|
||||||
}
|
}
|
||||||
#ifdef HAVE_LCD_COLOR
|
#ifdef HAVE_LCD_COLOR
|
||||||
change_color();
|
color_change(&color);
|
||||||
#endif
|
#endif
|
||||||
/* Speed handling*/
|
/* Speed handling*/
|
||||||
if (sleep_time<0)/* full speed */
|
if (sleep_time<0)/* full speed */
|
||||||
|
@ -390,55 +373,38 @@ int plugin_main(void)
|
||||||
else
|
else
|
||||||
rb->sleep(sleep_time);
|
rb->sleep(sleep_time);
|
||||||
|
|
||||||
/* Handle the user events */
|
action = pluginlib_getaction(rb, TIMEOUT_NOBLOCK, plugin_contexts, 2);
|
||||||
button = rb->button_get(false);
|
switch(action)
|
||||||
switch(button)
|
|
||||||
{
|
{
|
||||||
#ifdef DEMYSTIFY_RC_QUIT
|
|
||||||
case DEMYSTIFY_RC_QUIT :
|
|
||||||
#endif
|
|
||||||
case DEMYSTIFY_QUIT:
|
case DEMYSTIFY_QUIT:
|
||||||
cleanup(NULL);
|
cleanup(NULL);
|
||||||
return PLUGIN_OK;
|
return PLUGIN_OK;
|
||||||
#ifdef DEMYSTIFY_RC_ADD_POLYGON
|
|
||||||
case DEMYSTIFY_RC_ADD_POLYGON:
|
|
||||||
#endif
|
|
||||||
case DEMYSTIFY_ADD_POLYGON:
|
case DEMYSTIFY_ADD_POLYGON:
|
||||||
|
case DEMYSTIFY_ADD_POLYGON_REPEAT:
|
||||||
if(nb_wanted_polygons<MAX_POLYGONS)
|
if(nb_wanted_polygons<MAX_POLYGONS)
|
||||||
++nb_wanted_polygons;
|
++nb_wanted_polygons;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef DEMYSTIFY_RC_REMOVE_POLYGON
|
|
||||||
case DEMYSTIFY_RC_REMOVE_POLYGON:
|
|
||||||
#endif
|
|
||||||
case DEMYSTIFY_REMOVE_POLYGON:
|
case DEMYSTIFY_REMOVE_POLYGON:
|
||||||
|
case DEMYSTIFY_REMOVE_POLYGON_REPEAT:
|
||||||
if(nb_wanted_polygons>MIN_POLYGONS)
|
if(nb_wanted_polygons>MIN_POLYGONS)
|
||||||
--nb_wanted_polygons;
|
--nb_wanted_polygons;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef DEMYSTIFY_RC_INCREASE_SPEED
|
|
||||||
case DEMYSTIFY_RC_INCREASE_SPEED:
|
|
||||||
#endif
|
|
||||||
#ifdef DEMYSTIFY_INCREASE_SPEED_REP
|
|
||||||
case DEMYSTIFY_INCREASE_SPEED_REP:
|
|
||||||
#endif
|
|
||||||
case DEMYSTIFY_INCREASE_SPEED:
|
case DEMYSTIFY_INCREASE_SPEED:
|
||||||
|
case DEMYSTIFY_INCREASE_SPEED_REPEAT:
|
||||||
if(sleep_time>=0)
|
if(sleep_time>=0)
|
||||||
--sleep_time;
|
--sleep_time;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef DEMYSTIFY_RC_DECREASE_SPEED
|
|
||||||
case DEMYSTIFY_RC_DECREASE_SPEED:
|
|
||||||
#endif
|
|
||||||
#ifdef DEMYSTIFY_DECREASE_SPEED_REP
|
|
||||||
case DEMYSTIFY_DECREASE_SPEED_REP:
|
|
||||||
#endif
|
|
||||||
case DEMYSTIFY_DECREASE_SPEED:
|
case DEMYSTIFY_DECREASE_SPEED:
|
||||||
|
case DEMYSTIFY_DECREASE_SPEED_REPEAT:
|
||||||
++sleep_time;
|
++sleep_time;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (rb->default_event_handler_ex(button, cleanup, NULL)
|
if (rb->default_event_handler_ex(action, cleanup, NULL)
|
||||||
== SYS_USB_CONNECTED)
|
== SYS_USB_CONNECTED)
|
||||||
return PLUGIN_USB_CONNECTED;
|
return PLUGIN_USB_CONNECTED;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -38,6 +38,7 @@ void screen_init(struct screen * screen, enum screen_type screen_type)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_REMOTE_LCD
|
#ifdef HAVE_REMOTE_LCD
|
||||||
case SCREEN_REMOTE:
|
case SCREEN_REMOTE:
|
||||||
|
screen->is_color=false;/* No color remotes yet */
|
||||||
screen->depth=LCD_REMOTE_DEPTH;
|
screen->depth=LCD_REMOTE_DEPTH;
|
||||||
screen->has_disk_led=false;
|
screen->has_disk_led=false;
|
||||||
|
|
||||||
|
@ -112,6 +113,11 @@ void screen_init(struct screen * screen, enum screen_type screen_type)
|
||||||
|
|
||||||
case SCREEN_MAIN:
|
case SCREEN_MAIN:
|
||||||
default:
|
default:
|
||||||
|
#if defined(HAVE_LCD_COLOR)
|
||||||
|
screen->is_color=true;
|
||||||
|
#else
|
||||||
|
screen->is_color=false;
|
||||||
|
#endif
|
||||||
screen->depth=LCD_DEPTH;
|
screen->depth=LCD_DEPTH;
|
||||||
#if (CONFIG_LED == LED_VIRTUAL)
|
#if (CONFIG_LED == LED_VIRTUAL)
|
||||||
screen->has_disk_led=false;
|
screen->has_disk_led=false;
|
||||||
|
|
|
@ -57,6 +57,7 @@ struct screen
|
||||||
int nb_lines;
|
int nb_lines;
|
||||||
enum screen_type screen_type;
|
enum screen_type screen_type;
|
||||||
int depth;
|
int depth;
|
||||||
|
bool is_color;
|
||||||
int char_width;
|
int char_width;
|
||||||
int char_height;
|
int char_height;
|
||||||
#if (CONFIG_LED == LED_VIRTUAL) || defined(HAVE_REMOTE_LCD)
|
#if (CONFIG_LED == LED_VIRTUAL) || defined(HAVE_REMOTE_LCD)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue