From 788f1ceae25cc93149502c0cde59c7828b404151 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 20 Jun 2002 11:30:25 +0000 Subject: added lcd_getstringsize() within the propfonts test define git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1124 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/lcd.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'firmware') diff --git a/firmware/drivers/lcd.c b/firmware/drivers/lcd.c index d09d7ed1a5..8c24fc7b7d 100644 --- a/firmware/drivers/lcd.c +++ b/firmware/drivers/lcd.c @@ -492,6 +492,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 */ -- cgit v1.2.3