mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-13 18:17:39 -04:00
Introduce put_line().
This function is a fully-fletched, high-level pixel-based line printer, that combines functionality of several firmware and list functions. It can draw spacing, icons and text in a single call, in any order and each multiple times. It can also apply line decorations at the same time. It features printf-like semantics by accepting a format string that contain format tags as well as inline text. It's accessible directly, but also through the multi-screen api for plugins. Change-Id: I70f5a77bbf4b0252521f2e47ead377b9d6d29b54
This commit is contained in:
parent
5752d029fd
commit
5d6974641b
6 changed files with 490 additions and 0 deletions
|
@ -100,6 +100,15 @@ static void screen_helper_set_drawmode(int mode)
|
|||
#endif
|
||||
}
|
||||
|
||||
static void screen_helper_put_line(int x, int y, struct line_desc *line,
|
||||
const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
vput_line(&screens[0], x, y, line, fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
#if NB_SCREENS == 2
|
||||
static int screen_helper_remote_getcharwidth(void)
|
||||
{
|
||||
|
@ -156,6 +165,15 @@ static void screen_helper_remote_setuifont(int font)
|
|||
#endif
|
||||
}
|
||||
|
||||
static void screen_helper_remote_put_line(int x, int y, struct line_desc *line,
|
||||
const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
vput_line(&screens[0], x, y, line, fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
struct screen screens[NB_SCREENS] =
|
||||
|
@ -280,6 +298,7 @@ struct screen screens[NB_SCREENS] =
|
|||
.gradient_fillrect_part = lcd_gradient_fillrect_part,
|
||||
#endif
|
||||
#endif
|
||||
.put_line = screen_helper_put_line,
|
||||
},
|
||||
#if NB_SCREENS == 2
|
||||
{
|
||||
|
@ -380,6 +399,7 @@ struct screen screens[NB_SCREENS] =
|
|||
#if defined(HAVE_LCD_BITMAP)
|
||||
.set_framebuffer = (void*)lcd_remote_set_framebuffer,
|
||||
#endif
|
||||
.put_line = screen_helper_remote_put_line,
|
||||
}
|
||||
#endif /* NB_SCREENS == 2 */
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue