diff options
Diffstat (limited to '')
-rw-r--r-- | drv_generic_text.c | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/drv_generic_text.c b/drv_generic_text.c index f250ca2..79a89ff 100644 --- a/drv_generic_text.c +++ b/drv_generic_text.c @@ -1,4 +1,4 @@ -/* $Id: drv_generic_text.c,v 1.27 2005/05/08 04:32:44 reinelt Exp $ +/* $Id: drv_generic_text.c,v 1.28 2005/08/22 05:44:43 reinelt Exp $ * * generic driver helper for text-based displays * @@ -23,6 +23,10 @@ * * * $Log: drv_generic_text.c,v $ + * Revision 1.28 2005/08/22 05:44:43 reinelt + * new driver 'WincorNixdorf' + * some fixes to the bar code + * * Revision 1.27 2005/05/08 04:32:44 reinelt * CodingStyle added and applied * @@ -638,7 +642,7 @@ static void drv_generic_text_bar_create_bar(int row, int col, const DIRECTION di BarFB[row * LCOLS + col].dir = dir; BarFB[row * LCOLS + col].segment = -1; if (style && BarFB[row * LCOLS + col].style == 0) - BarFB[row * LCOLS + col].style = STYLE_HOLLOW; + BarFB[row * LCOLS + col].style = style; if (val1 >= XRES) { BarFB[row * LCOLS + col].val1 = rev ? 0 : XRES; val1 -= XRES; @@ -739,7 +743,7 @@ static void drv_generic_text_bar_create_segments(void) break; /* hollow style, val(1,2) == 1, like '[' */ /* if (l1 == 1 && l2 == 1 && Segment[i].style == STYLE_FIRST && BarFB[n].style == STYLE_HOLLOW) - break; + break; *//* hollow style, val(1,2) == 1, like ']' */ /* if (l1 == 1 && l2 == 1 && Segment[i].style == STYLE_LAST && BarFB[n].style == STYLE_HOLLOW) break; @@ -786,18 +790,28 @@ static int drv_generic_text_bar_segment_error(const int i, const int j) if (j2 > res) j2 = res; + /* do not replace empty with non-empty */ if (i1 == 0 && j1 != 0) return 65535; if (i2 == 0 && j2 != 0) return 65535; + + /* do not replace full with non-full */ if (i1 == res && j1 < res) return 65535; if (i2 == res && j2 < res) return 65535; - if (i1 == 1 && j1 != 1 && i2 > 0) - return 65535; - if (i2 == 1 && j2 != 1 && j1 > 0) - return 65535; + + /* do not replace start line */ + /* but only if there are at least some chars available */ + if (CHARS - ICONS > 0) { + if (i1 == 1 && j1 != 1 && i2 > 0) + return 65535; + if (i2 == 1 && j2 != 1 && j1 > 0) + return 65535; + } + + /* do not replace equal length with non-equal length */ if (i1 == i2 && j1 != j2) return 65535; @@ -819,6 +833,7 @@ static void drv_generic_text_bar_pack_segments(void) for (i = 0; i < nSegment; i++) { for (j = 0; j < nSegment; j++) { error[i][j] = drv_generic_text_bar_segment_error(i, j); + // debug ("[%d][%d] = %d", i, j, error[i][j]); } } @@ -854,7 +869,8 @@ static void drv_generic_text_bar_pack_segments(void) } #if 0 debug("pack_segment: n=%d i=%d j=%d min=%d", nSegment, pack_i, pack_j, min); - debug("Pack_segment: i1=%d i2=%d j1=%d j2=%d\n", Segment[pack_i].val1, Segment[pack_i].val2, Segment[pack_j].val1, Segment[pack_j].val2); + debug("Pack_segment: i1=%d i2=%d j1=%d j2=%d\n", + Segment[pack_i].val1, Segment[pack_i].val2, Segment[pack_j].val1, Segment[pack_j].val2); #endif nSegment--; |