1 /***************************************************************************
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
10 * Copyright (C) 2005 Jonas H�gqvist
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
18 **************************************************************************/
20 #include "playergfx.h"
24 #ifdef HAVE_LCD_BITMAP
25 #define DISPLAY_WIDTH LCD_WIDTH
26 #define DISPLAY_HEIGHT LCD_HEIGHT
29 #ifdef HAVE_REMOTE_LCD
30 #define REMOTE_WIDTH LCD_REMOTE_WIDTH
31 #define REMOTE_HEIGHT LCD_REMOTE_HEIGHT
32 #include "remote_rockboxlogo.h"
33 #define REMOTE_LOGO_WIDTH BMPWIDTH_remote_rockboxlogo
34 #define REMOTE_LOGO_HEIGHT BMPHEIGHT_remote_rockboxlogo
35 #define REMOTE_LOGO remote_rockboxlogo
36 extern const fb_remote_data remote_rockboxlogo
[];
37 #endif /* HAVE_REMOTE_LCD */
39 #define LOGO rockboxlogo
40 #include "rockboxlogo.h"
41 #define LOGO_WIDTH BMPWIDTH_rockboxlogo
42 #define LOGO_HEIGHT BMPHEIGHT_rockboxlogo
43 extern const fb_data rockboxlogo
[];
45 #else /* !LCD_BITMAP */
46 #define DISPLAY_WIDTH 55
47 #define DISPLAY_HEIGHT 14
51 #define LOGO rockbox16x7
52 const unsigned char rockbox16x7
[] = {
53 0x47, 0x18, 0xa6, 0xd8, 0x66, 0xde, 0xb7, 0x9b,
54 0x76, 0xdb, 0x26, 0xdb, 0x66, 0xde,
56 #endif /* !LCD_BITMAP */
58 /* variable button definitions */
59 #if CONFIG_KEYPAD == PLAYER_PAD
60 #define LP_QUIT BUTTON_STOP
61 #define LP_DEC_X BUTTON_LEFT
62 #define LP_INC_X BUTTON_RIGHT
63 #define LP_DEC_Y (BUTTON_ON | BUTTON_LEFT)
64 #define LP_INC_Y (BUTTON_ON | BUTTON_RIGHT)
65 #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
66 (CONFIG_KEYPAD == IPOD_3G_PAD) || \
67 (CONFIG_KEYPAD == IPOD_1G2G_PAD)
68 #define LP_QUIT BUTTON_MENU
69 #define LP_DEC_X BUTTON_LEFT
70 #define LP_INC_X BUTTON_RIGHT
71 #define LP_DEC_Y BUTTON_SCROLL_BACK
72 #define LP_INC_Y BUTTON_SCROLL_FWD
73 #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
74 #define LP_QUIT BUTTON_PLAY
75 #define LP_DEC_X BUTTON_LEFT
76 #define LP_INC_X BUTTON_RIGHT
77 #define LP_DEC_Y BUTTON_DOWN
78 #define LP_INC_Y BUTTON_UP
79 #elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
80 #define LP_QUIT BUTTON_POWER
81 #define LP_DEC_X BUTTON_LEFT
82 #define LP_INC_X BUTTON_RIGHT
83 #define LP_DEC_Y BUTTON_DOWN
84 #define LP_INC_Y BUTTON_UP
85 #elif CONFIG_KEYPAD == GIGABEAT_PAD
86 #define LP_QUIT BUTTON_POWER
87 #define LP_DEC_X BUTTON_LEFT
88 #define LP_INC_X BUTTON_RIGHT
89 #define LP_DEC_Y BUTTON_DOWN
90 #define LP_INC_Y BUTTON_UP
92 #elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
93 (CONFIG_KEYPAD == SANSA_C200_PAD)
94 #define LP_QUIT BUTTON_POWER
95 #define LP_DEC_X BUTTON_LEFT
96 #define LP_INC_X BUTTON_RIGHT
97 #define LP_DEC_Y BUTTON_DOWN
98 #define LP_INC_Y BUTTON_UP
100 #elif CONFIG_KEYPAD == IRIVER_H10_PAD
101 #define LP_QUIT BUTTON_POWER
102 #define LP_DEC_X BUTTON_LEFT
103 #define LP_INC_X BUTTON_RIGHT
104 #define LP_DEC_Y BUTTON_SCROLL_DOWN
105 #define LP_INC_Y BUTTON_SCROLL_UP
107 #elif CONFIG_KEYPAD == MROBE500_PAD
108 #define LP_QUIT BUTTON_POWER
109 #define LP_DEC_X BUTTON_LEFT
110 #define LP_INC_X BUTTON_RIGHT
111 #define LP_DEC_Y BUTTON_RC_DOWN
112 #define LP_INC_Y BUTTON_RC_PLAY
114 #elif CONFIG_KEYPAD == GIGABEAT_S_PAD
115 #define LP_QUIT BUTTON_BACK
116 #define LP_DEC_X BUTTON_LEFT
117 #define LP_INC_X BUTTON_RIGHT
118 #define LP_DEC_Y BUTTON_DOWN
119 #define LP_INC_Y BUTTON_UP
122 #define LP_QUIT BUTTON_OFF
123 #define LP_DEC_X BUTTON_LEFT
124 #define LP_INC_X BUTTON_RIGHT
125 #define LP_DEC_Y BUTTON_DOWN
126 #define LP_INC_Y BUTTON_UP
129 #ifdef CONFIG_REMOTE_KEYPAD
130 #if (CONFIG_REMOTE_KEYPAD == H100_REMOTE) || \
131 (CONFIG_REMOTE_KEYPAD == H300_REMOTE)
132 #define LP_R_QUIT BUTTON_RC_STOP
133 #define LP_R_DEC_X BUTTON_RC_REW
134 #define LP_R_INC_X BUTTON_RC_FF
135 #define LP_R_DEC_Y BUTTON_RC_SOURCE
136 #define LP_R_INC_Y BUTTON_RC_BITRATE
138 #endif /* CONFIG_REMOTE_KEYPAD */
141 enum plugin_status
plugin_start(struct plugin_api
* api
, void* parameter
) {
144 int x
= (DISPLAY_WIDTH
/ 2) - (LOGO_WIDTH
/ 2);
145 int y
= (DISPLAY_HEIGHT
/ 2) - (LOGO_HEIGHT
/ 2);
146 struct plugin_api
* rb
= api
;
149 #ifdef HAVE_LCD_CHARCELLS
156 #ifdef HAVE_LCD_CHARCELLS
157 if (!pgfx_init(rb
, 4, 2)) {
158 rb
->splash(HZ
*2, "Old LCD :(");
162 rb
->srand(*rb
->current_tick
);
163 dx
= rb
->rand()%(2*RAND_SCALE
+1) - RAND_SCALE
;
164 dy
= rb
->rand()%(2*RAND_SCALE
+1) - RAND_SCALE
;
167 #ifdef HAVE_LCD_BITMAP
168 rb
->lcd_clear_display();
169 rb
->lcd_bitmap(LOGO
, x
, y
, LOGO_WIDTH
, LOGO_HEIGHT
);
171 rb
->lcd_remote_clear_display();
172 rb
->lcd_remote_bitmap(REMOTE_LOGO
,
173 (x
* (REMOTE_WIDTH
- REMOTE_LOGO_WIDTH
)) / (DISPLAY_WIDTH
- LOGO_WIDTH
),
174 (y
* (REMOTE_HEIGHT
- REMOTE_LOGO_HEIGHT
)) / (DISPLAY_HEIGHT
- LOGO_HEIGHT
),
175 REMOTE_LOGO_WIDTH
, REMOTE_LOGO_HEIGHT
);
178 pgfx_clear_display();
179 pgfx_mono_bitmap(LOGO
, x
% 5, y
, LOGO_WIDTH
, LOGO_HEIGHT
);
188 if (x
> DISPLAY_WIDTH
- LOGO_WIDTH
) {
190 x
= DISPLAY_WIDTH
- LOGO_WIDTH
;
198 if (y
> DISPLAY_HEIGHT
- LOGO_HEIGHT
) {
200 y
= DISPLAY_HEIGHT
- LOGO_HEIGHT
;
203 #ifdef HAVE_LCD_BITMAP
206 rb
->lcd_remote_update();
209 if (cpos
!= old_cpos
) {
210 rb
->lcd_clear_display();
211 pgfx_display(cpos
, 0);
218 button
= rb
->button_get(false);
221 #ifdef CONFIG_REMOTE_KEYPAD
224 #ifdef HAVE_LCD_CHARCELLS
229 #ifdef CONFIG_REMOTE_KEYPAD
233 dx
+= (dx
< 0) ? 1 : -1;
236 #ifdef CONFIG_REMOTE_KEYPAD
239 dx
+= (dx
< 0) ? -1 : 1;
242 #ifdef CONFIG_REMOTE_KEYPAD
246 dy
+= (dy
< 0) ? 1 : -1;
249 #ifdef CONFIG_REMOTE_KEYPAD
252 dy
+= (dy
< 0) ? -1 : 1;
256 if (rb
->default_event_handler(button
) == SYS_USB_CONNECTED
) {
257 #ifdef HAVE_LCD_CHARCELLS
260 return PLUGIN_USB_CONNECTED
;