diff --git a/apps/plugin.c b/apps/plugin.c index 5101ceeb20..767c593f57 100644 --- a/apps/plugin.c +++ b/apps/plugin.c @@ -723,6 +723,7 @@ static const struct plugin_api rockbox_api = { the API gets incompatible */ lcd_putsf, + lcd_putsxyf, }; int plugin_load(const char* plugin, const void* parameter) diff --git a/apps/plugin.h b/apps/plugin.h index 2bcd93e3ad..2f187f120b 100644 --- a/apps/plugin.h +++ b/apps/plugin.h @@ -896,6 +896,7 @@ struct plugin_api { the API gets incompatible */ void (*lcd_putsf)(int x, int y, const unsigned char *fmt, ...); + void (*lcd_putsxyf)(int x, int y, const unsigned char *fmt, ...); }; /* plugin header */ diff --git a/firmware/drivers/lcd-bitmap-common.c b/firmware/drivers/lcd-bitmap-common.c index fba09cf06b..9f1d5fef68 100644 --- a/firmware/drivers/lcd-bitmap-common.c +++ b/firmware/drivers/lcd-bitmap-common.c @@ -219,6 +219,17 @@ void LCDFN(putsxy)(int x, int y, const unsigned char *str) LCDFN(putsxyofs)(x, y, 0, str); } +/* Formatting version of LCDFN(putsxy) */ +void LCDFN(putsxyf)(int x, int y, const unsigned char *fmt, ...) +{ + va_list ap; + char buf[256]; + va_start(ap, fmt); + vsnprintf(buf, sizeof (buf), fmt, ap); + va_end(ap); + LCDFN(putsxy)(x, y, buf); +} + static void LCDFN(putsxyofs_style)(int xpos, int ypos, const unsigned char *str, int style, int w, int h, int offset) diff --git a/firmware/export/lcd-remote.h b/firmware/export/lcd-remote.h index 62e82ca6ac..5b96863536 100644 --- a/firmware/export/lcd-remote.h +++ b/firmware/export/lcd-remote.h @@ -178,6 +178,7 @@ extern void lcd_remote_bitmap_part(const fb_remote_data *src, int src_x, extern void lcd_remote_bitmap(const fb_remote_data *src, int x, int y, int width, int height); extern void lcd_remote_putsxy(int x, int y, const unsigned char *str); +extern void lcd_remote_putsxyf(int x, int y, const unsigned char *fmt, ...); extern void lcd_remote_bidir_scroll(int threshold); extern void lcd_remote_scroll_step(int pixels); diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h index 35720900fe..1cbb286ad1 100644 --- a/firmware/export/lcd.h +++ b/firmware/export/lcd.h @@ -191,6 +191,7 @@ extern void lcd_update_viewport(void); extern void lcd_clear_viewport(void); extern void lcd_clear_display(void); extern void lcd_putsxy(int x, int y, const unsigned char *string); +extern void lcd_putsxyf(int x, int y, const unsigned char *fmt, ...); extern void lcd_puts(int x, int y, const unsigned char *string); extern void lcd_putsf(int x, int y, const unsigned char *fmt, ...); extern void lcd_puts_style(int x, int y, const unsigned char *string, int style);