diff options
Diffstat (limited to '')
-rw-r--r-- | drv_generic_text.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/drv_generic_text.c b/drv_generic_text.c index 3fd5666..bb28a89 100644 --- a/drv_generic_text.c +++ b/drv_generic_text.c @@ -1,4 +1,4 @@ -/* $Id: drv_generic_text.c,v 1.12 2004/03/03 03:47:04 reinelt Exp $ +/* $Id: drv_generic_text.c,v 1.13 2004/03/19 09:17:46 reinelt Exp $ * * generic driver helper for text-based displays * @@ -23,6 +23,11 @@ * * * $Log: drv_generic_text.c,v $ + * Revision 1.13 2004/03/19 09:17:46 reinelt + * + * removed the extra 'goto' function, row and col are additional parameters + * of the write() function now. + * * Revision 1.12 2004/03/03 03:47:04 reinelt * big patch from Martin Hejl: * - use qprintf() where appropriate @@ -211,7 +216,7 @@ int drv_generic_text_draw (WIDGET *W) { WIDGET_TEXT *Text=W->data; char *txt, *fb1, *fb2; - int row, col, len, end; + int row, col, col0, len, end; row=W->row; col=W->col; @@ -232,7 +237,7 @@ int drv_generic_text_draw (WIDGET *W) for (; col<=end && col<DCOLS; col++) { int pos1, pos2, equal; if (fb1[col]==fb2[col]) continue; - drv_generic_text_real_goto (row, col); + col0 = col; for (pos1=col, pos2=pos1, col++, equal=0; col<=end && col<DCOLS; col++) { if (fb1[col]==fb2[col]) { // If we find just one equal byte, we don't break, because this @@ -243,8 +248,8 @@ int drv_generic_text_draw (WIDGET *W) equal=0; } } - memcpy (fb2+pos1, fb1+pos1, pos2-pos1+1); - drv_generic_text_real_write (fb2+pos1, pos2-pos1+1); + memcpy ( fb2+pos1, fb1+pos1, pos2-pos1+1); + drv_generic_text_real_write (row, col0, fb2+pos1, pos2-pos1+1); } } @@ -297,8 +302,7 @@ int drv_generic_text_icon_draw (WIDGET *W) // maybe send icon to the display if (DisplayFB[row*DCOLS+col]!=ascii) { DisplayFB[row*DCOLS+col]=ascii; - drv_generic_text_real_goto (row, col); - drv_generic_text_real_write (DisplayFB+row*DCOLS+col, 1); + drv_generic_text_real_write (row, col, DisplayFB+row*DCOLS+col, 1); } return 0; @@ -577,7 +581,7 @@ static void drv_generic_text_bar_define_chars(void) int drv_generic_text_bar_draw (WIDGET *W) { WIDGET_BAR *Bar = W->data; - int row, col, len, res, max, val1, val2; + int row, col, col0, len, res, max, val1, val2; int c, n, s; DIRECTION dir; @@ -639,7 +643,7 @@ int drv_generic_text_bar_draw (WIDGET *W) for (col=0; col<DCOLS; col++) { int pos1, pos2, equal; if (LayoutFB[row*LCOLS+col]==DisplayFB[row*DCOLS+col]) continue; - drv_generic_text_real_goto (row, col); + col0 = col; for (pos1=col, pos2=pos1, col++, equal=0; col<DCOLS; col++) { if (LayoutFB[row*LCOLS+col]==DisplayFB[row*DCOLS+col]) { // If we find just one equal byte, we don't break, because this @@ -650,8 +654,8 @@ int drv_generic_text_bar_draw (WIDGET *W) equal=0; } } - memcpy (DisplayFB+row*DCOLS+pos1, LayoutFB+row*LCOLS+pos1, pos2-pos1+1); - drv_generic_text_real_write (DisplayFB+row*DCOLS+pos1, pos2-pos1+1); + memcpy ( DisplayFB+row*DCOLS+pos1, LayoutFB+row*LCOLS+pos1, pos2-pos1+1); + drv_generic_text_real_write (row, col0, DisplayFB+row*DCOLS+pos1, pos2-pos1+1); } } |