From fd10fc428dbd2c280f1d0fe19ba5d8dc0921dde2 Mon Sep 17 00:00:00 2001 From: reinelt <> Date: Sat, 13 Sep 2003 06:45:43 +0000 Subject: [lcd4linux @ 2003-09-13 06:45:43 by reinelt] icons for all remaining drivers --- BeckmannEgle.c | 28 +++++++++++++++++-- Crystalfontz.c | 34 +++++++++++++++++++++-- Cwlinux.c | 86 +++++++++++++++++++++++++++++++++++++-------------------- MatrixOrbital.c | 22 ++++----------- PalmPilot.c | 22 ++++++++++++++- SIN.c | 7 ++++- Skeleton.c | 14 ++++++++-- T6963.c | 25 ++++++++++++++++- Text.c | 7 ++++- 9 files changed, 188 insertions(+), 57 deletions(-) diff --git a/BeckmannEgle.c b/BeckmannEgle.c index 622dcb6..cf52de8 100644 --- a/BeckmannEgle.c +++ b/BeckmannEgle.c @@ -1,4 +1,4 @@ -/* $Id: BeckmannEgle.c,v 1.15 2003/08/24 05:17:58 reinelt Exp $ +/* $Id: BeckmannEgle.c,v 1.16 2003/09/13 06:45:43 reinelt Exp $ * * driver for Beckmann+Egle mini terminals * @@ -20,6 +20,9 @@ * * * $Log: BeckmannEgle.c,v $ + * Revision 1.16 2003/09/13 06:45:43 reinelt + * icons for all remaining drivers + * * Revision 1.15 2003/08/24 05:17:58 reinelt * liblcd4linux patch from Patrick Schemitz * @@ -95,6 +98,7 @@ #include "lock.h" #include "display.h" #include "bar.h" +#include "icon.h" #define XRES 5 #define YRES 8 @@ -110,6 +114,7 @@ static LCD Lcd; static char *Port=NULL; static int Device=-1; static int Type=-1; +static int Icons; static char *FrameBuffer1=NULL; static char *FrameBuffer2=NULL; @@ -208,6 +213,8 @@ int BE_clear (int full) { memset (FrameBuffer1, ' ', Lcd.rows*Lcd.cols*sizeof(char)); + + icon_clear(); bar_clear(); if (full) { @@ -280,7 +287,15 @@ int BE_init (LCD *Self) BE_write (buffer, 4); // select display type BE_write ("\033&D", 3); // cursor off - bar_init(rows, cols, XRES, YRES, CHARS); + if (cfg_number("Icons", 0, 0, CHARS, &Icons)<0) return -1; + if (Icons>0) { + debug ("reserving %d of %d user-defined characters for icons", Icons, CHARS); + icon_init(Lcd.rows, Lcd.cols, XRES, YRES, CHARS, Icons, BE_define_char); + Self->icons=Icons; + Lcd.icons=Icons; + } + + bar_init(rows, cols, XRES, YRES, CHARS-Icons); bar_add_segment( 0, 0,255, 32); // ASCII 32 = blank bar_add_segment(255,255,255,255); // ASCII 255 = block @@ -316,6 +331,12 @@ int BE_bar (int type, int row, int col, int max, int len1, int len2) } +int BE_icon (int num, int seq, int row, int col) +{ + return icon_draw (num, seq, row, col); +} + + int BE_flush (void) { int row, col, pos1, pos2; @@ -326,6 +347,7 @@ int BE_flush (void) for (row=0; row0) { + debug ("reserving %d of %d user-defined characters for icons", Icons, CHARS); + icon_init(Lcd.rows, Lcd.cols, XRES, YRES, CHARS, Icons, CF_define_char); + Self->icons=Icons; + Lcd.icons=Icons; + } + + bar_init(Lcd.rows, Lcd.cols, XRES, YRES, CHARS-Icons); bar_add_segment( 0, 0,255, 32); // ASCII 32 = blank bar_add_segment(255,255,255,255); // ASCII 255 = block @@ -297,6 +312,12 @@ int CF_bar (int type, int row, int col, int max, int len1, int len2) } +int CF_icon (int num, int seq, int row, int col) +{ + return icon_draw (num, seq, row, col); +} + + static int CF_flush (void) { int row, col, pos1, pos2; @@ -307,6 +328,7 @@ static int CF_flush (void) for (row=0; row0) { + debug ("reserving %d of %d user-defined characters for icons", Icons, CHARS); + icon_init(Lcd.rows, Lcd.cols, Lcd.xres, Lcd.yres, CHARS, Icons, CW12232_define_char); + Self->icons=Icons; + Lcd.icons=Icons; + } + + bar_init(Lcd.rows, Lcd.cols, Lcd.xres, Lcd.yres, CHARS-Icons); bar_add_segment( 0, 0,255, 32); // ASCII 32 = blank return 0; @@ -370,6 +385,12 @@ int CW_bar(int type, int row, int col, int max, int len1, int len2) } +int CW_icon (int num, int seq, int row, int col) +{ + return icon_draw (num, seq, row, col); +} + + int CW_flush(void) { int row, col, pos1, pos2; @@ -378,6 +399,7 @@ int CW_flush(void) for (row = 0; row < Lcd.rows; row++) { for (col = 0; col < Lcd.cols; col++) { c=bar_peek(row, col); + if (c==-1) c=icon_peek(row, col); if (c!=-1) { if (c!=32) c++; //blank FrameBuffer1[row*Lcd.cols+col]=(char)c; @@ -442,35 +464,39 @@ int CW_quit(void) LCD Cwlinux[] = { - {name: "CW12232", - rows: 4, - cols: 20, - xres: 6, - yres: 8, - bars: BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2, - gpos: 0, - init: CW_init, - clear: CW_clear, - put: CW_put, - bar: CW_bar, - gpo: NULL, - flush: CW12232_flush, - quit: CW_quit + { name: "CW12232", + rows: 4, + cols: 20, + xres: 6, + yres: 8, + bars: BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2, + icons: 0, + gpos: 0, + init: CW_init, + clear: CW_clear, + put: CW_put, + bar: CW_bar, + icon: CW_icon, + gpo: NULL, + flush: CW12232_flush, + quit: CW_quit }, - {name: "CW1602", - rows: 2, - cols: 16, - xres: 5, - yres: 8, - bars: BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2, - gpos: 0, - init: CW_init, - clear: CW_clear, - put: CW_put, - bar: CW_bar, - gpo: NULL, - flush: CW1602_flush, - quit: CW_quit + { name: "CW1602", + rows: 2, + cols: 16, + xres: 5, + yres: 8, + bars: BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2, + icons: 0, + gpos: 0, + init: CW_init, + clear: CW_clear, + put: CW_put, + bar: CW_bar, + icon: CW_icon, + gpo: NULL, + flush: CW1602_flush, + quit: CW_quit }, {NULL} }; diff --git a/MatrixOrbital.c b/MatrixOrbital.c index ac947eb..1ce3b2b 100644 --- a/MatrixOrbital.c +++ b/MatrixOrbital.c @@ -1,4 +1,4 @@ -/* $Id: MatrixOrbital.c,v 1.40 2003/09/11 04:09:53 reinelt Exp $ +/* $Id: MatrixOrbital.c,v 1.41 2003/09/13 06:45:43 reinelt Exp $ * * driver for Matrix Orbital serial display modules * @@ -20,6 +20,9 @@ * * * $Log: MatrixOrbital.c,v $ + * Revision 1.41 2003/09/13 06:45:43 reinelt + * icons for all remaining drivers + * * Revision 1.40 2003/09/11 04:09:53 reinelt * minor cleanups * @@ -196,8 +199,8 @@ #include "cfg.h" #include "lock.h" #include "display.h" -#include "icon.h" #include "bar.h" +#include "icon.h" #define XRES 5 #define YRES 8 @@ -439,21 +442,6 @@ int MO_bar (int type, int row, int col, int max, int len1, int len2) } -int MO_icon_old (int num, int row, int col, unsigned char *bitmap) -{ - // icons use last ascii codes - char ascii=CHARS-num; - - MO_define_char (ascii, bitmap); - MO_goto(row, col); - MO_write(&ascii, 1); - FrameBuffer1[row*Lcd.cols+col]=(char)ascii; - FrameBuffer2[row*Lcd.cols+col]=(char)ascii; - - return 0; -} - - int MO_icon (int num, int seq, int row, int col) { return icon_draw (num, seq, row, col); diff --git a/PalmPilot.c b/PalmPilot.c index 502374f..60dcf18 100644 --- a/PalmPilot.c +++ b/PalmPilot.c @@ -1,4 +1,4 @@ -/* $Id: PalmPilot.c,v 1.12 2003/09/09 06:54:43 reinelt Exp $ +/* $Id: PalmPilot.c,v 1.13 2003/09/13 06:45:43 reinelt Exp $ * * driver for 3Com Palm Pilot * @@ -20,6 +20,9 @@ * * * $Log: PalmPilot.c,v $ + * Revision 1.13 2003/09/13 06:45:43 reinelt + * icons for all remaining drivers + * * Revision 1.12 2003/09/09 06:54:43 reinelt * new function 'cfg_number()' * @@ -92,6 +95,7 @@ #include "lock.h" #include "display.h" #include "bar.h" +#include "icon.h" #include "pixmap.h" @@ -105,6 +109,7 @@ static int pgap=0; static int rgap=0; static int cgap=0; static int border=0; +static int icons; static int Palm_open (void) { @@ -288,10 +293,18 @@ int Palm_init (LCD *Self) return -1; } + if (cfg_number("Icons", 0, 0, 8, &icons) < 0) return -1; + if (icons>0) { + info ("allocating %d icons", icons); + icon_init(rows, cols, xres, yres, 8, icons, pix_icon); + } + + Self->rows=rows; Self->cols=cols; Self->xres=xres; Self->yres=yres; + Self->icons=icons; Lcd=*Self; // Device=open ("PalmOrb.dat", O_WRONLY | O_CREAT | O_TRUNC, 0644); @@ -313,6 +326,11 @@ int Palm_bar (int type, int row, int col, int max, int len1, int len2) return pix_bar (type, row, col, max, len1, len2); } +int Palm_icon (int num, int seq, int row, int col) +{ + return icon_draw (num, seq, row, col); +} + int Palm_quit (void) { debug ("closing port %s", Port); @@ -328,11 +346,13 @@ LCD PalmPilot[] = { xres: 0, yres: 0, bars: BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2 | BAR_V2 | BAR_T, + icons: 0, gpos: 0, init: Palm_init, clear: Palm_clear, put: Palm_put, bar: Palm_bar, + icon: Palm_icon, gpo: NULL, flush: Palm_flush, quit: Palm_quit }, diff --git a/SIN.c b/SIN.c index 48f6233..80772ed 100644 --- a/SIN.c +++ b/SIN.c @@ -1,4 +1,4 @@ -/* $Id: SIN.c,v 1.12 2003/08/24 05:17:58 reinelt Exp $ +/* $Id: SIN.c,v 1.13 2003/09/13 06:45:43 reinelt Exp $ * * driver for SIN router displays * @@ -20,6 +20,9 @@ * * * $Log: SIN.c,v $ + * Revision 1.13 2003/09/13 06:45:43 reinelt + * icons for all remaining drivers + * * Revision 1.12 2003/08/24 05:17:58 reinelt * liblcd4linux patch from Patrick Schemitz * @@ -291,11 +294,13 @@ LCD SIN[] = { xres: XRES, yres: YRES, bars: BAR_L | BAR_R, + icons: 0, gpos: 0, init: SIN_init, clear: SIN_clear, put: SIN_put, bar: SIN_bar, + icon: NULL, gpo: NULL, flush: SIN_flush, quit: SIN_quit }, diff --git a/Skeleton.c b/Skeleton.c index 7e9b0d9..40622aa 100644 --- a/Skeleton.c +++ b/Skeleton.c @@ -1,4 +1,4 @@ -/* $Id: Skeleton.c,v 1.10 2003/08/17 12:11:58 reinelt Exp $ +/* $Id: Skeleton.c,v 1.11 2003/09/13 06:45:43 reinelt Exp $ * * skeleton driver for new display modules * @@ -20,6 +20,9 @@ * * * $Log: Skeleton.c,v $ + * Revision 1.11 2003/09/13 06:45:43 reinelt + * icons for all remaining drivers + * * Revision 1.10 2003/08/17 12:11:58 reinelt * framework for icons prepared * @@ -107,6 +110,11 @@ int Skel_bar (int type, int row, int col, int max, int len1, int len2) return 0; } +int Skel_icon (int num, int seq, int row, int col) +{ + return 0; +} + int Skel_gpo (int num, int val) { return 0; @@ -131,11 +139,13 @@ LCD Skeleton[] = { xres: 5, yres: 8, bars: BAR_L|BAR_R, - gpo: 0, + icons: 0, + gpos: 0, init: Skel_init, clear: Skel_clear, put: Skel_put, bar: Skel_bar, + icon: Skel_icon, gpo: Skel_gpo, flush: Skel_flush, quit: Skel_quit }, diff --git a/T6963.c b/T6963.c index d096ebf..d49768e 100644 --- a/T6963.c +++ b/T6963.c @@ -1,4 +1,4 @@ -/* $Id: T6963.c,v 1.10 2003/08/16 07:31:35 reinelt Exp $ +/* $Id: T6963.c,v 1.11 2003/09/13 06:45:43 reinelt Exp $ * * driver for display modules based on the Toshiba T6963 chip * @@ -20,6 +20,9 @@ * * * $Log: T6963.c,v $ + * Revision 1.11 2003/09/13 06:45:43 reinelt + * icons for all remaining drivers + * * Revision 1.10 2003/08/16 07:31:35 reinelt * double buffering in all drivers * @@ -74,6 +77,7 @@ #include "cfg.h" #include "display.h" #include "bar.h" +#include "icon.h" #include "parport.h" #include "udelay.h" #include "pixmap.h" @@ -83,6 +87,7 @@ #define YRES 8 static LCD Lcd; +static int Icons; unsigned char *Buffer1, *Buffer2; @@ -336,6 +341,14 @@ int T6_init (LCD *Self) return -1; } + if (cfg_number("Icons", 0, 0, 8, &Icons) < 0) return -1; + if (Icons>0) { + info ("allocating %d icons", Icons); + icon_init(Lcd.rows, Lcd.cols, Lcd.xres, Lcd.yres, 8, Icons, pix_icon); + Self->icons=Icons; + Lcd.icons=Icons; + } + Buffer1=malloc(Lcd.cols*Lcd.rows*Lcd.yres); if (Buffer1==NULL) { error ("T6963: malloc(%d) failed: %s", Lcd.cols*Lcd.rows*Lcd.yres, strerror(errno)); @@ -397,6 +410,12 @@ int T6_bar (int type, int row, int col, int max, int len1, int len2) } +int T6_icon (int num, int seq, int row, int col) +{ + return icon_draw (num, seq, row, col); +} + + int T6_flush (void) { int i, j, e; @@ -441,11 +460,13 @@ LCD T6963[] = { xres: 6, yres: 8, bars: BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2 | BAR_V2 | BAR_T, + icons: 0, gpos: 0, init: T6_init, clear: T6_clear, put: T6_put, bar: T6_bar, + icon: T6_icon, gpo: NULL, flush: T6_flush, quit: T6_quit @@ -456,11 +477,13 @@ LCD T6963[] = { xres: 8, yres: 8, bars: BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2 | BAR_V2 | BAR_T, + icons: 0, gpos: 0, init: T6_init, clear: T6_clear, put: T6_put, bar: T6_bar, + icon: T6_icon, gpo: NULL, flush: T6_flush, quit: T6_quit diff --git a/Text.c b/Text.c index 8b24266..78ed807 100644 --- a/Text.c +++ b/Text.c @@ -1,4 +1,4 @@ -/* $Id: Text.c,v 1.10 2003/08/24 05:17:58 reinelt Exp $ +/* $Id: Text.c,v 1.11 2003/09/13 06:45:43 reinelt Exp $ * * pure ncurses based text driver * @@ -20,6 +20,9 @@ * * * $Log: Text.c,v $ + * Revision 1.11 2003/09/13 06:45:43 reinelt + * icons for all remaining drivers + * * Revision 1.10 2003/08/24 05:17:58 reinelt * liblcd4linux patch from Patrick Schemitz * @@ -255,11 +258,13 @@ LCD Text[] = { xres: 1, yres: 1, bars: BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2, + icons: 0, gpos: 0, init: Text_init, clear: Text_clear, put: Text_put, bar: Text_bar, + icon: NULL, gpo: NULL, flush: Text_flush, quit: Text_quit -- cgit v1.2.3