From e55b1aa204a47e546567f290cb45d3258c3aba51 Mon Sep 17 00:00:00 2001 From: marschap Date: Sat, 26 Feb 2005 10:02:29 +0000 Subject: [PATCH] fix filled block and handling of the lastline parameter --- server/drivers/IOWarrior.c | 17 ++++++++--------- server/drivers/hd44780.c | 15 +++++++-------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/server/drivers/IOWarrior.c b/server/drivers/IOWarrior.c index 5f889d2..3d56a97 100644 --- a/server/drivers/IOWarrior.c +++ b/server/drivers/IOWarrior.c @@ -920,7 +920,7 @@ IOWarrior_num(Driver *drvthis, int x, int num) PrivateData *p =(PrivateData *) drvthis->private_data; /* each bignum is constructed in a 3 x 4 matrix and consists - * of only the 8 characters defiend above as well as ' ' + * of only the 8 characters defined above as well as ' ' * * The following table defines the 11 big numbers '0'-'9', ':' * and the custom base characters they consist of @@ -1025,17 +1025,16 @@ int row; if (dat == NULL) return; - if (!p->lastline) - dat[(p->cellheight - 1) * p->cellwidth] = 0; - for (row = 0; row < p->cellheight; row++) { int letter = 0; int col; - for (col = 0; col < p->cellwidth; col++) { - letter <<= 1; - letter |=(dat[(row * p->cellwidth) + col] > 0); - } + if (p->lastline || (row < p->cellheight - 1)) { + for (col = 0; col < p->cellwidth; col++) { + letter <<= 1; + letter |= (dat[(row * p->cellwidth) + col] > 0) ? 1 : 0; + } + } if (p->cc[n].cache[row] != letter) p->cc[n].clean = 0; /* only mark dirty if really different */ p->cc[n].cache[row] = letter; @@ -1120,7 +1119,7 @@ char block_filled[CELLWIDTH*CELLHEIGHT] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 0, 0, 0, 0 }; + 1, 1, 1, 1, 1 }; /* Yes we know, this is a VERY BAD implementation */ switch(icon) { diff --git a/server/drivers/hd44780.c b/server/drivers/hd44780.c index 994f430..157ce9e 100644 --- a/server/drivers/hd44780.c +++ b/server/drivers/hd44780.c @@ -975,15 +975,14 @@ HD44780_set_char (Driver *drvthis, int n, char *dat) if (!dat) return; - if (!p->lastline) - dat[(p->cellheight - 1) * p->cellwidth]=0; - for (row = 0; row < p->cellheight; row++) { letter = 0; - for (col = 0; col < p->cellwidth; col++) { - letter <<= 1; - letter |= (dat[(row * p->cellwidth) + col] > 0); - } + if (p->lastline || (row < p->cellheight - 1)) { + for (col = 0; col < p->cellwidth; col++) { + letter <<= 1; + letter |= (dat[(row * p->cellwidth) + col] > 0) ? 1 : 0; + } + } if( p->cc_buf[n*p->cellheight+row] != letter ) { p->cc_dirty[n] = 1; /* only mark as dirty if really different */ } @@ -1068,7 +1067,7 @@ HD44780_icon (Driver *drvthis, int x, int y, int icon) 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 0, 0, 0, 0 }; + 1, 1, 1, 1, 1 }; /* Yes I know, this is a VERY BAD implementation */ switch( icon ) {