diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2002-06-20 11:30:25 +0000 |
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2002-06-20 11:30:25 +0000 |
| commit | 788f1ceae25cc93149502c0cde59c7828b404151 (patch) | |
| tree | f9b5128098244b8129481698b3fa36343b513c22 | |
| parent | 7826fc39f2ea85effb4dea94d215788cfb823848 (diff) | |
| download | rockbox-788f1ceae25cc93149502c0cde59c7828b404151.zip rockbox-788f1ceae25cc93149502c0cde59c7828b404151.tar.gz rockbox-788f1ceae25cc93149502c0cde59c7828b404151.tar.bz2 rockbox-788f1ceae25cc93149502c0cde59c7828b404151.tar.xz | |
added lcd_getstringsize() within the propfonts test define
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1124 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | firmware/drivers/lcd.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/firmware/drivers/lcd.c b/firmware/drivers/lcd.c index d09d7ed..8c24fc7 100644 --- a/firmware/drivers/lcd.c +++ b/firmware/drivers/lcd.c @@ -493,6 +493,34 @@ void lcd_setmargins(int x, int y) extern unsigned char char_dw_8x8_prop[][9]; /* + * Return width and height of a given font. + */ +void lcd_getstringsize(char *str, unsigned int font, int *w, int *h) +{ + (void)font; + int width=0; + int height=0; + unsigned char ch, byte; + + while((ch = *str++)) { + /* Limit to char generation table */ + if ((ch < ASCII_MIN) || (ch > 0x7a)) + /* replace unsupported letters with question marks */ + ch = ' '-ASCII_MIN; + else + ch -= ASCII_MIN; + + byte = char_dw_8x8_prop[ch][8]; + width += byte>>4; + if((byte & 0x0f) > height) + height = byte & 0x0f; + + } + *w = width; + *h = height; +} + +/* * Put a string at specified bit position */ |