From 1c5b9e12575d8ded71209bfbba18e03dacc45617 Mon Sep 17 00:00:00 2001 From: reinelt <> Date: Mon, 19 Aug 2002 09:30:18 +0000 Subject: [lcd4linux @ 2002-08-19 09:30:18 by reinelt] MatrixOrbital uses generic bar funnctions --- MatrixOrbital.c | 362 +++++++++++++++++--------------------------------------- 1 file changed, 106 insertions(+), 256 deletions(-) (limited to 'MatrixOrbital.c') diff --git a/MatrixOrbital.c b/MatrixOrbital.c index b9c9876..29eafcd 100644 --- a/MatrixOrbital.c +++ b/MatrixOrbital.c @@ -1,4 +1,4 @@ -/* $Id: MatrixOrbital.c,v 1.24 2002/08/19 07:36:29 reinelt Exp $ +/* $Id: MatrixOrbital.c,v 1.25 2002/08/19 09:30:18 reinelt Exp $ * * driver for Matrix Orbital serial display modules * @@ -20,6 +20,9 @@ * * * $Log: MatrixOrbital.c,v $ + * Revision 1.25 2002/08/19 09:30:18 reinelt + * MatrixOrbital uses generic bar funnctions + * * Revision 1.24 2002/08/19 07:36:29 reinelt * * finished bar.c, USBLCD is the first driver that uses the generic bar functions @@ -151,7 +154,6 @@ #define XRES 5 #define YRES 8 #define CHARS 8 -#define BARS ( BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2 ) static LCD Lcd; static char *Port=NULL; @@ -159,13 +161,8 @@ static speed_t Speed; static int Device=-1; static char Txt[4][40]; -static BAR Bar[4][40]; static int GPO; -static int nSegment=2; -static SEGMENT Segment[128] = {{ len1:0, len2:0, type:255, used:0, ascii:32 }, - { len1:255, len2:255, type:255, used:0, ascii:255 }}; - static int MO_open (void) { @@ -201,6 +198,7 @@ static int MO_open (void) return fd; } + static void MO_write (char *string, int len) { if (Device==-1) return; @@ -213,6 +211,7 @@ static void MO_write (char *string, int len) } } + static int MO_contrast (void) { char buffer[4]; @@ -224,172 +223,16 @@ static int MO_contrast (void) return 0; } -static void MO_process_bars (void) -{ - int row, col; - int i, j; - - for (i=2; i=RES && Segment[j].len1=RES && Segment[j].len2RES) i1=RES; - i2=Segment[i].len2; if (i2>RES) i2=RES; - j1=Segment[j].len1; if (j1>RES) i1=RES; - j2=Segment[j].len2; if (j2>RES) i2=RES; - - return (i1-i2)*(i1-i2)+(j1-j2)*(j1-j2); -} -static void MO_compact_bars (void) +static void MO_define_char (int ascii, char *buffer) { - int i, j, r, c, min; - int pack_i, pack_j; - int pass1=1; - int deviation[nSegment][nSegment]; - - if (nSegment>CHARS+2) { + char cmd[3]="\376N"; - for (i=2; iCHARS+2) { - min=65535; - pack_i=-1; - pack_j=-1; - for (i=2; imax) len1=max; - - if (len2<1) len2=1; - else if (len2>max) len2=max; - - switch (type) { - case BAR_L: - len1=max-len1; - len2=max-len2; - rev=1; - - case BAR_R: - while (max>0 && col<=Lcd.cols) { - Bar[row][col].type=type; - Bar[row][col].segment=-1; - if (len1>=XRES) { - Bar[row][col].len1=rev?0:XRES; - len1-=XRES; - } else { - Bar[row][col].len1=rev?XRES-len1:len1; - len1=0; - } - if (len2>=XRES) { - Bar[row][col].len2=rev?0:XRES; - len2-=XRES; - } else { - Bar[row][col].len2=rev?XRES-len2:len2; - len2=0; - } - max-=XRES; - col++; - } - break; - - case BAR_U: - len1=max-len1; - len2=max-len2; - rev=1; - - case BAR_D: - while (max>0 && row<=Lcd.rows) { - Bar[row][col].type=type; - Bar[row][col].segment=-1; - if (len1>=YRES) { - Bar[row][col].len1=rev?0:YRES; - len1-=YRES; - } else { - Bar[row][col].len1=rev?YRES-len1:len1; - len1=0; - } - if (len2>=YRES) { - Bar[row][col].len2=rev?0:YRES; - len2-=YRES; - } else { - Bar[row][col].len2=rev?YRES-len2:len2; - len2=0; - } - max-=YRES; - row++; - } - break; - - } - return 0; + return bar_draw (type, row, col, max, len1, len2); } + int MO_gpo (int num, int val) { if (num>=Lcd.gpos) @@ -561,27 +345,21 @@ int MO_gpo (int num, int val) return 0; } + int MO_flush (void) { char buffer[256]="\376G"; char *p; - int s, row, col; + int c, row, col; - MO_process_bars(); - MO_compact_bars(); - MO_define_chars(); + bar_process(MO_define_char); - for (s=0; s