summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/bookmark.c3
-rw-r--r--apps/filetree.c3
-rw-r--r--apps/gui/gwps-common.c3
-rw-r--r--apps/gui/gwps.c37
-rw-r--r--apps/gui/wps_parser.c23
-rw-r--r--apps/recorder/backdrop.c60
-rw-r--r--apps/recorder/backdrop.h7
-rw-r--r--apps/root_menu.c3
-rw-r--r--apps/screens.c3
-rw-r--r--apps/settings.c6
-rw-r--r--firmware/export/lcd-remote.h2
11 files changed, 141 insertions, 9 deletions
diff --git a/apps/bookmark.c b/apps/bookmark.c
index 8ff9040c2d..cb0dbe718a 100644
--- a/apps/bookmark.c
+++ b/apps/bookmark.c
@@ -181,6 +181,9 @@ bool bookmark_autobookmark(void)
#if LCD_DEPTH > 1
show_main_backdrop(); /* switch to main backdrop as we may come from wps */
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ show_remote_main_backdrop();
+#endif
gui_syncstatusbar_draw(&statusbars, false);
if(gui_syncyesno_run(&message, NULL, NULL)==YESNO_YES)
{
diff --git a/apps/filetree.c b/apps/filetree.c
index 088d68ac1e..4a8e9c1868 100644
--- a/apps/filetree.c
+++ b/apps/filetree.c
@@ -453,6 +453,9 @@ int ft_enter(struct tree_context* c)
#if LCD_DEPTH > 1
unload_wps_backdrop();
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ unload_remote_wps_backdrop();
+#endif
wps_data_load(gui_wps[0].data, buf, true);
set_file(buf, (char *)global_settings.wps_file,
MAX_FILENAME);
diff --git a/apps/gui/gwps-common.c b/apps/gui/gwps-common.c
index 8022209189..7f84be613b 100644
--- a/apps/gui/gwps-common.c
+++ b/apps/gui/gwps-common.c
@@ -337,6 +337,9 @@ bool gui_wps_display(void)
/* set the default wps for the remote-screen */
else if(i == 1)
{
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ unload_remote_wps_backdrop();
+#endif
wps_data_load(gui_wps[i].data,
"%s%?ia<%ia|%?d2<%d2|(root)>>\n"
"%s%?it<%?in<%in. |>%it|%fn>\n"
diff --git a/apps/gui/gwps.c b/apps/gui/gwps.c
index e46f804af8..97f3b4dbbc 100644
--- a/apps/gui/gwps.c
+++ b/apps/gui/gwps.c
@@ -119,6 +119,10 @@ long gui_wps_show(void)
#endif /* LCD_DEPTH > 1 */
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ show_remote_wps_backdrop();
+#endif
+
#ifdef AB_REPEAT_ENABLE
ab_repeat_init();
ab_reset_markers();
@@ -235,6 +239,9 @@ long gui_wps_show(void)
#if LCD_DEPTH > 1
show_main_backdrop();
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ show_remote_main_backdrop();
+#endif
action_signalscreenchange();
if (onplay(wps_state.id3->path, FILE_ATTR_AUDIO, CONTEXT_WPS)
== ONPLAY_MAINMENU)
@@ -242,6 +249,9 @@ long gui_wps_show(void)
#if LCD_DEPTH > 1
show_wps_backdrop();
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ show_remote_wps_backdrop();
+#endif
#ifdef HAVE_LCD_BITMAP
FOR_NB_SCREENS(i)
{
@@ -501,11 +511,17 @@ long gui_wps_show(void)
#if LCD_DEPTH > 1
show_main_backdrop();
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ show_remote_main_backdrop();
+#endif
if (quick_screen_quick(button))
return SYS_USB_CONNECTED;
#if LCD_DEPTH > 1
show_wps_backdrop();
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ show_remote_wps_backdrop();
+#endif
#ifdef HAVE_LCD_BITMAP
FOR_NB_SCREENS(i)
{
@@ -522,6 +538,9 @@ long gui_wps_show(void)
#if LCD_DEPTH > 1
show_main_backdrop();
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ show_remote_main_backdrop();
+#endif
if (quick_screen_f3(BUTTON_F3))
return SYS_USB_CONNECTED;
#ifdef HAVE_LCD_BITMAP
@@ -540,12 +559,18 @@ long gui_wps_show(void)
#if LCD_DEPTH > 1
show_main_backdrop();
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ show_remote_main_backdrop();
+#endif
action_signalscreenchange();
if (1 == pitch_screen())
return SYS_USB_CONNECTED;
#if LCD_DEPTH > 1
show_wps_backdrop();
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ show_remote_wps_backdrop();
+#endif
restore = true;
break;
#endif /* HAVE_PITCHSCREEN */
@@ -572,10 +597,16 @@ long gui_wps_show(void)
#if LCD_DEPTH > 1
show_main_backdrop();
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ show_remote_main_backdrop();
+#endif
browse_id3();
#if LCD_DEPTH > 1
show_wps_backdrop();
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ show_remote_wps_backdrop();
+#endif
#ifdef HAVE_LCD_BITMAP
FOR_NB_SCREENS(i)
{
@@ -598,6 +629,9 @@ long gui_wps_show(void)
#if LCD_DEPTH > 1
show_main_backdrop();
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ show_remote_main_backdrop();
+#endif
default_event_handler(SYS_POWEROFF);
break;
@@ -751,4 +785,7 @@ void gui_sync_wps_init(void)
#if LCD_DEPTH > 1
unload_wps_backdrop();
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ unload_remote_wps_backdrop();
+#endif
}
diff --git a/apps/gui/wps_parser.c b/apps/gui/wps_parser.c
index b6cda91e74..2b5d1bb321 100644
--- a/apps/gui/wps_parser.c
+++ b/apps/gui/wps_parser.c
@@ -257,7 +257,7 @@ static const struct wps_tag all_tags[] = {
{ WPS_TOKEN_IMAGE_DISPLAY, "x", 0, parse_image_load },
{ WPS_TOKEN_IMAGE_PROGRESS_BAR, "P", 0, parse_image_special },
-#if LCD_DEPTH > 1
+#if (LCD_DEPTH > 1) || (defined(HAVE_LCD_REMOTE) && (LCD_REMOTE_DEPTH > 1))
{ WPS_TOKEN_IMAGE_BACKDROP, "X", 0, parse_image_special },
#endif
#endif
@@ -908,17 +908,22 @@ static void load_wps_bitmaps(struct wps_data *wps_data, char *bmpdir)
}
}
-#if LCD_DEPTH > 1
+#if (LCD_DEPTH > 1) || (defined(HAVE_LCD_REMOTE) && (LCD_REMOTE_DEPTH > 1))
+ if (backdrop_bmp_name)
+ {
+ get_image_filename(backdrop_bmp_name, bmpdir,
+ img_path, sizeof(img_path));
#ifdef HAVE_REMOTE_LCD
- if (!wps_data->remote_wps)
+ if (wps_data->remote_wps)
+#if LCD_REMOTE_DEPTH > 1
+ load_remote_wps_backdrop(img_path)
#endif
- if (backdrop_bmp_name)
- {
- get_image_filename(backdrop_bmp_name, bmpdir,
- img_path, sizeof(img_path));
+ ;
+ else
+#endif /* HAVE_REMOTE_LCD */
load_wps_backdrop(img_path);
- }
-#endif
+ }
+#endif /* has backdrop support */
}
#endif /* HAVE_LCD_BITMAP */
diff --git a/apps/recorder/backdrop.c b/apps/recorder/backdrop.c
index e31543549d..0d023602be 100644
--- a/apps/recorder/backdrop.c
+++ b/apps/recorder/backdrop.c
@@ -20,6 +20,9 @@
#include <stdio.h>
#include "config.h"
#include "lcd.h"
+#ifdef HAVE_REMOTE_LCD
+#include "lcd-remote.h"
+#endif
#include "backdrop.h"
#if LCD_DEPTH >= 8
@@ -30,6 +33,11 @@ static fb_data main_backdrop[LCD_FBHEIGHT][LCD_FBWIDTH];
static fb_data wps_backdrop[LCD_FBHEIGHT][LCD_FBWIDTH];
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+static fb_remote_data remote_wps_backdrop[LCD_REMOTE_FBHEIGHT][LCD_REMOTE_FBWIDTH];
+static bool remote_wps_backdrop_valid = false;
+#endif
+
static bool main_backdrop_valid = false;
static bool wps_backdrop_valid = false;
@@ -93,3 +101,55 @@ void show_wps_backdrop(void)
show_main_backdrop();
}
}
+
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+
+static bool load_remote_backdrop(char* filename, fb_remote_data* backdrop_buffer)
+{
+ struct bitmap bm;
+ int ret;
+
+ /* load the image */
+ bm.data=(char*)backdrop_buffer;
+ ret = read_bmp_file(filename, &bm, sizeof(main_backdrop),
+ FORMAT_NATIVE | FORMAT_DITHER | FORMAT_REMOTE);
+
+ if ((ret > 0) && (bm.width == LCD_REMOTE_WIDTH) && (bm.height == LCD_REMOTE_HEIGHT))
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+bool load_remote_wps_backdrop(char* filename)
+{
+ remote_wps_backdrop_valid = load_remote_backdrop(filename, &remote_wps_backdrop[0][0]);
+ return remote_wps_backdrop_valid;
+}
+
+void unload_remote_wps_backdrop(void)
+{
+ remote_wps_backdrop_valid = false;
+}
+
+void show_remote_wps_backdrop(void)
+{
+ /* if no wps backdrop, fall back to main backdrop */
+ if(remote_wps_backdrop_valid)
+ {
+ lcd_remote_set_backdrop(&remote_wps_backdrop[0][0]);
+ }
+ else
+ {
+ show_remote_main_backdrop();
+ }
+}
+
+void show_remote_main_backdrop(void)
+{
+ lcd_remote_set_backdrop(NULL);
+}
+#endif
diff --git a/apps/recorder/backdrop.h b/apps/recorder/backdrop.h
index 93373f1321..c930a87433 100644
--- a/apps/recorder/backdrop.h
+++ b/apps/recorder/backdrop.h
@@ -36,4 +36,11 @@ void show_wps_backdrop(void);
#endif /* LCD_DEPTH > 1 */
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+bool load_remote_wps_backdrop(char* filename);
+void unload_remote_wps_backdrop(void);
+void show_remote_wps_backdrop(void);
+void show_remote_main_backdrop(void); /* only clears the wps backdrop */
+#endif
+
#endif /* _BACKDROP_H */
diff --git a/apps/root_menu.c b/apps/root_menu.c
index 9f1491df8e..ebb13ecb92 100644
--- a/apps/root_menu.c
+++ b/apps/root_menu.c
@@ -234,6 +234,9 @@ static int wpsscrn(void* param)
#if LCD_DEPTH > 1
show_main_backdrop();
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ show_remote_main_backdrop();
+#endif
return ret_val;
}
#if CONFIG_TUNER
diff --git a/apps/screens.c b/apps/screens.c
index 0c65ca425c..82ae490d75 100644
--- a/apps/screens.c
+++ b/apps/screens.c
@@ -89,6 +89,9 @@ void usb_screen(void)
#ifdef HAVE_LCD_COLOR
show_main_backdrop();
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ show_remote_main_backdrop();
+#endif
FOR_NB_SCREENS(i)
screens[i].backlight_on();
diff --git a/apps/settings.c b/apps/settings.c
index 52af7cb481..ba4a98c4e2 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -742,6 +742,9 @@ void settings_apply(void)
#if LCD_DEPTH > 1
unload_wps_backdrop();
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ unload_remote_wps_backdrop();
+#endif
if ( global_settings.wps_file[0] &&
global_settings.wps_file[0] != 0xff ) {
snprintf(buf, sizeof buf, WPS_DIR "/%s.wps",
@@ -767,6 +770,9 @@ void settings_apply(void)
}
show_main_backdrop();
#endif
+#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
+ show_remote_main_backdrop();
+#endif
#ifdef HAVE_LCD_COLOR
screens[SCREEN_MAIN].set_foreground(global_settings.fg_color);
diff --git a/firmware/export/lcd-remote.h b/firmware/export/lcd-remote.h
index 08accf7116..ad311a8255 100644
--- a/firmware/export/lcd-remote.h
+++ b/firmware/export/lcd-remote.h
@@ -181,6 +181,8 @@ extern void lcd_remote_set_background(unsigned background);
extern unsigned lcd_remote_get_background(void);
extern void lcd_remote_set_drawinfo(int mode, unsigned foreground,
unsigned background);
+void lcd_remote_set_backdrop(fb_remote_data* backdrop);
+fb_remote_data* lcd_remote_get_backdrop(void);
extern void lcd_remote_mono_bitmap_part(const unsigned char *src, int src_x,
int src_y, int stride, int x, int y,