1 /***************************************************************************
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
10 * Copyright (C) 2006 Dave Chapman
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
20 ****************************************************************************/
25 #ifdef HAVE_REMOTE_LCD
26 #include "lcd-remote.h"
30 static fb_data main_backdrop
[LCD_FBHEIGHT
][LCD_FBWIDTH
]
31 __attribute__ ((aligned (16)));
32 static fb_data skin_backdrop
[LCD_FBHEIGHT
][LCD_FBWIDTH
]
33 __attribute__ ((aligned (16)));
35 #if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
37 remote_skin_backdrop
[LCD_REMOTE_FBHEIGHT
][LCD_REMOTE_FBWIDTH
];
38 static bool remote_skin_backdrop_valid
= false;
41 static bool main_backdrop_valid
= false;
42 static bool skin_backdrop_valid
= false;
44 /* load a backdrop into a buffer */
45 static bool load_backdrop(const char* filename
, fb_data
* backdrop_buffer
)
51 bm
.data
=(char*)backdrop_buffer
;
52 ret
= read_bmp_file(filename
, &bm
, sizeof(main_backdrop
),
53 FORMAT_NATIVE
| FORMAT_DITHER
, NULL
);
56 && (bm
.width
== LCD_WIDTH
) && (bm
.height
== LCD_HEIGHT
));
59 static bool load_main_backdrop(const char* filename
)
61 main_backdrop_valid
= load_backdrop(filename
, &main_backdrop
[0][0]);
62 return main_backdrop_valid
;
65 static inline bool load_skin_backdrop(const char* filename
)
67 skin_backdrop_valid
= load_backdrop(filename
, &skin_backdrop
[0][0]);
68 return skin_backdrop_valid
;
71 static inline void unload_main_backdrop(void)
73 main_backdrop_valid
= false;
76 static inline void unload_skin_backdrop(void)
78 skin_backdrop_valid
= false;
81 static inline void show_main_backdrop(void)
83 lcd_set_backdrop(main_backdrop_valid
? &main_backdrop
[0][0] : NULL
);
86 static void show_skin_backdrop(void)
88 /* if no wps backdrop, fall back to main backdrop */
89 if(skin_backdrop_valid
)
91 lcd_set_backdrop(&skin_backdrop
[0][0]);
101 bool backdrop_load(enum backdrop_type bdrop
, const char* filename
)
103 if (bdrop
== BACKDROP_MAIN
)
104 return load_main_backdrop(filename
);
105 else if (bdrop
== BACKDROP_SKIN_WPS
)
106 return load_skin_backdrop(filename
);
111 void backdrop_unload(enum backdrop_type bdrop
)
113 if (bdrop
== BACKDROP_MAIN
)
114 unload_main_backdrop();
115 else if (bdrop
== BACKDROP_SKIN_WPS
)
116 unload_skin_backdrop();
119 void backdrop_show(enum backdrop_type bdrop
)
121 if (bdrop
== BACKDROP_MAIN
)
122 show_main_backdrop();
123 else if (bdrop
== BACKDROP_SKIN_WPS
)
124 show_skin_backdrop();
128 #if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
130 static bool load_remote_backdrop(const char* filename
,
131 fb_remote_data
* backdrop_buffer
)
137 bm
.data
=(char*)backdrop_buffer
;
138 ret
= read_bmp_file(filename
, &bm
, sizeof(main_backdrop
),
139 FORMAT_NATIVE
| FORMAT_DITHER
| FORMAT_REMOTE
, NULL
);
142 && (bm
.width
== LCD_REMOTE_WIDTH
)
143 && (bm
.height
== LCD_REMOTE_HEIGHT
));
146 static inline bool load_remote_skin_backdrop(const char* filename
)
148 remote_skin_backdrop_valid
=
149 load_remote_backdrop(filename
, &remote_skin_backdrop
[0][0]);
150 return remote_skin_backdrop_valid
;
153 static inline void unload_remote_skin_backdrop(void)
155 remote_skin_backdrop_valid
= false;
158 static inline void show_remote_main_backdrop(void)
160 lcd_remote_set_backdrop(NULL
);
163 static inline void show_remote_skin_backdrop(void)
165 /* if no wps backdrop, fall back to main backdrop */
166 if(remote_skin_backdrop_valid
)
168 lcd_remote_set_backdrop(&remote_skin_backdrop
[0][0]);
172 show_remote_main_backdrop();
178 bool remote_backdrop_load(enum backdrop_type bdrop
,
179 const char *filename
)
181 if (bdrop
== BACKDROP_SKIN_WPS
)
182 return load_remote_skin_backdrop(filename
);
183 else if (bdrop
== BACKDROP_MAIN
)
189 void remote_backdrop_show(enum backdrop_type bdrop
)
191 if (bdrop
== BACKDROP_MAIN
)
192 show_remote_main_backdrop();
193 else if (bdrop
== BACKDROP_SKIN_WPS
)
194 show_remote_skin_backdrop();
197 void remote_backdrop_unload(enum backdrop_type bdrop
)
199 if (bdrop
!= BACKDROP_MAIN
)
200 unload_remote_skin_backdrop();