mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-25 14:10:43 +00:00
video: Support multiple lines version string display
The calculation of left space for version string is not correct, should use VIDEO_COLS not VIDEO_LINE_LEN / 2, otherwise we will get larger space than actual have and cause string to overlay logo picture. Also current version string display only supports two lines words at max. This also causes overlay when the LCD pixel column size is not enough. Signed-off-by: Peng Fan <peng.fan@nxp.com> Tested-by: Anatolij Gustschin <agust@denx.de>
This commit is contained in:
parent
cca3ff054a
commit
f9d891f0a9
1 changed files with 23 additions and 7 deletions
|
@ -1900,16 +1900,32 @@ static void *video_logo(void)
|
|||
sprintf(info, " %s", version_string);
|
||||
|
||||
#ifndef CONFIG_HIDE_LOGO_VERSION
|
||||
space = (VIDEO_LINE_LEN / 2 - VIDEO_INFO_X) / VIDEO_FONT_WIDTH;
|
||||
space = (VIDEO_COLS - VIDEO_INFO_X) / VIDEO_FONT_WIDTH;
|
||||
len = strlen(info);
|
||||
|
||||
if (len > space) {
|
||||
video_drawchars(VIDEO_INFO_X, VIDEO_INFO_Y,
|
||||
(uchar *) info, space);
|
||||
video_drawchars(VIDEO_INFO_X + VIDEO_FONT_WIDTH,
|
||||
VIDEO_INFO_Y + VIDEO_FONT_HEIGHT,
|
||||
(uchar *) info + space, len - space);
|
||||
y_off = 1;
|
||||
int xx = VIDEO_INFO_X, yy = VIDEO_INFO_Y;
|
||||
uchar *p = (uchar *) info;
|
||||
|
||||
while (len) {
|
||||
if (len > space) {
|
||||
video_drawchars(xx, yy, p, space);
|
||||
len -= space;
|
||||
|
||||
p = (uchar *)p + space;
|
||||
|
||||
if (!y_off) {
|
||||
xx += VIDEO_FONT_WIDTH;
|
||||
space--;
|
||||
}
|
||||
yy += VIDEO_FONT_HEIGHT;
|
||||
|
||||
y_off++;
|
||||
} else {
|
||||
video_drawchars(xx, yy, p, len);
|
||||
len = 0;
|
||||
}
|
||||
}
|
||||
} else
|
||||
video_drawstring(VIDEO_INFO_X, VIDEO_INFO_Y, (uchar *) info);
|
||||
|
||||
|
|
Loading…
Reference in a new issue