From d8371af9abf7fce739552a9927a1e4eedaf00aa5 Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Thu, 4 Aug 2011 10:56:02 +0200 Subject: [PATCH] Revert "Revert "lcd/render.c: save 56 bytes"" This reverts commit a5f8a9b04faa6df17d4fe235b6010be283b305be. --- firmware/lcd/render.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/firmware/lcd/render.c b/firmware/lcd/render.c index e2ae3f5..c98b147 100644 --- a/firmware/lcd/render.c +++ b/firmware/lcd/render.c @@ -8,6 +8,7 @@ #include "fonts/smallfonts.h" #include "filesystem/ff.h" +#include "render.h" /* Global Variables */ const struct FONT_DEF * font = NULL; @@ -36,10 +37,17 @@ void setExtFont(const char *fname){ int getFontHeight(void){ if(font) - return font->u8Height; + return font->u8Height; return 8; // XXX: Should be done right. }; +static uint8_t read_byte (void) +{ + UINT readbytes; + uint8_t byte; + f_read(&file, &byte, sizeof(uint8_t), &readbytes); + return byte; +} int _getFontData(int type, int offset){ UINT readbytes; @@ -51,10 +59,10 @@ int _getFontData(int type, int offset){ if(efont.type == FONT_EXTERNAL){ if (type == START_FONT){ - res = f_read(&file, &efont.def.u8Width, sizeof(uint8_t), &readbytes); - res = f_read(&file, &efont.def.u8Height, sizeof(uint8_t), &readbytes); - res = f_read(&file, &efont.def.u8FirstChar, sizeof(uint8_t), &readbytes); - res = f_read(&file, &efont.def.u8LastChar, sizeof(uint8_t), &readbytes); + efont.def.u8Width = read_byte (); + efont.def.u8Height = read_byte (); + efont.def.u8FirstChar = read_byte (); + efont.def.u8LastChar = read_byte (); res = f_read(&file, &extras, sizeof(uint16_t), &readbytes); return 0; }; @@ -72,9 +80,7 @@ int _getFontData(int type, int offset){ return 0; }; if(type == GET_WIDTH || type == GET_DATA){ - uint8_t width; - res = f_read(&file, &width, sizeof(uint8_t), &readbytes); - return width; + return read_byte (); }; if(type == SEEK_DATA){ character=offset; @@ -87,7 +93,7 @@ int _getFontData(int type, int offset){ }; if(type == PEEK_DATA){ uint8_t width; - res = f_read(&file, &width, sizeof(uint8_t), &readbytes); + width = read_byte (); f_lseek(&file,6+ (extras*sizeof(uint16_t))+ ((extras+font->u8LastChar-font->u8FirstChar)*sizeof(uint8_t))+ @@ -240,10 +246,10 @@ int DoChar(int sx, int sy, int c){ UINT res; UINT readbytes; uint8_t testbyte; - res = f_read(&file, &testbyte, sizeof(uint8_t), &readbytes); + testbyte = read_byte (); if(testbyte>>4 ==15){ - res = f_read(&file, &preblank, sizeof(uint8_t), &readbytes); - res = f_read(&file, &postblank, sizeof(uint8_t), &readbytes); + preblank = read_byte (); + postblank = read_byte (); width-=3; width/=height; res = f_read(&file, charBuf, width*height, &readbytes);