forked from len0rd/rockbox
* when loading .kbd files, start a new line every time we find a '\n' char
* fix overlaping letters when using FONT_UI ( http://130.89.160.166/rockbox/jungti_overlapping_text.bmp ) * remove trailing white spaces git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10296 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
86f07c7ccb
commit
8eba20aefe
1 changed files with 83 additions and 41 deletions
|
|
@ -260,8 +260,8 @@ int load_kbd(unsigned char* filename)
|
|||
}
|
||||
|
||||
utf8decode(buf, ¶m[l].kbd_buf[i[l]]);
|
||||
if (param[l].kbd_buf[i[l]] != 0xFEFF && param[l].kbd_buf[i[l]] != '\n' &&
|
||||
param[l].kbd_buf[i[l]] != '\r') /*skip BOM & newlines */
|
||||
if (param[l].kbd_buf[i[l]] != 0xFEFF &&
|
||||
param[l].kbd_buf[i[l]] != '\r') /*skip BOM & carriage returns */
|
||||
i[l]++;
|
||||
}
|
||||
}
|
||||
|
|
@ -408,18 +408,14 @@ int kbd_input(char* text, int buflen)
|
|||
#endif
|
||||
FOR_NB_SCREENS(l)
|
||||
{
|
||||
if( !kbd_loaded )
|
||||
{
|
||||
/* Copy default keyboard to buffer */
|
||||
i = 0;
|
||||
if (!kbd_loaded) {
|
||||
param[l].curfont = FONT_SYSFIXED;
|
||||
p = param[l].default_kbd;
|
||||
while (*p != 0) {
|
||||
p = utf8decode(p, ¶m[l].kbd_buf[i]);
|
||||
if (param[l].kbd_buf[i] == '\n')
|
||||
while (i % (screens[l].width/6))
|
||||
param[l].kbd_buf[i++] = ' ';
|
||||
else
|
||||
i++;
|
||||
}
|
||||
while (*p != 0)
|
||||
p = utf8decode(p, ¶m[l].kbd_buf[i++]);
|
||||
param[l].nchars = i;
|
||||
}
|
||||
else
|
||||
|
|
@ -444,6 +440,51 @@ int kbd_input(char* text, int buflen)
|
|||
if (w > param[l].font_w)
|
||||
param[l].font_w = w;
|
||||
}
|
||||
/* Since we're going to be adding spaces, make sure that we check
|
||||
* their width too */
|
||||
w = font_get_width( param[l].font, ' ' );
|
||||
if( w > param[l].font_w )
|
||||
param[l].font_w = w;
|
||||
}
|
||||
FOR_NB_SCREENS(l)
|
||||
{
|
||||
i = 0;
|
||||
/* Pad lines with spaces */
|
||||
while( i < param[l].nchars )
|
||||
{
|
||||
if( param[l].kbd_buf[i] == '\n' )
|
||||
{
|
||||
k = ( screens[l].width / param[l].font_w )
|
||||
- i % ( screens[l].width / param[l].font_w ) - 1;
|
||||
if( k == ( screens[l].width / param[l].font_w ) - 1 )
|
||||
{
|
||||
param[l].nchars--;
|
||||
for( j = i; j < param[l].nchars; j++ )
|
||||
{
|
||||
param[l].kbd_buf[j] = param[l].kbd_buf[j+1];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( param[l].nchars + k - 1 >= KBD_BUF_SIZE )
|
||||
{ /* We don't want to overflow the buffer */
|
||||
k = KBD_BUF_SIZE - param[l].nchars;
|
||||
}
|
||||
for( j = param[l].nchars + k - 1; j > i+k; j-- )
|
||||
{
|
||||
param[l].kbd_buf[j] = param[l].kbd_buf[j-k];
|
||||
}
|
||||
param[l].nchars += k;
|
||||
k++;
|
||||
while( k-- )
|
||||
{
|
||||
param[l].kbd_buf[i++] = ' ';
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
/* find max width for text string */
|
||||
|
|
@ -576,6 +617,7 @@ int kbd_input(char* text, int buflen)
|
|||
param[l].leftpos = editpos - param[l].curpos;
|
||||
utf8 = text + utf8seek(text, param[l].leftpos);
|
||||
|
||||
text_w = param[l].font_w;
|
||||
while (*utf8 && i < param[l].max_chars_text) {
|
||||
outline[j++] = *utf8++;
|
||||
if ((*utf8 & MASK) != COMP) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue