From 86a3dd8e35847debfdce7c65e52b8ffd8913689a Mon Sep 17 00:00:00 2001 From: reinelt Date: Sun, 24 Aug 2003 04:31:56 +0000 Subject: [lcd4linux @ 2003-08-24 04:31:56 by reinelt] icon.c icon.h added git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@227 3ae390bd-cb1e-0410-b409-cd5a39f66f1f --- Makefile.am | 1 + Makefile.in | 13 ++++---- MatrixOrbital.c | 9 +++++- display.c | 9 +++--- icon.c | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ icon.h | 36 +++++++++++++++++++++ 6 files changed, 154 insertions(+), 11 deletions(-) create mode 100644 icon.c create mode 100644 icon.h diff --git a/Makefile.am b/Makefile.am index 1be1d54..4b6704a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -30,6 +30,7 @@ udelay.c udelay.h \ display.c display.h \ pixmap.c pixmap.h \ bar.c bar.h \ +icon.c icon.h \ fontmap.c fontmap.h \ exec.c exec.h \ mail2.c \ diff --git a/Makefile.in b/Makefile.in index 8fe8f6d..5f72b3c 100644 --- a/Makefile.in +++ b/Makefile.in @@ -83,7 +83,7 @@ lcd4linux_LDFLAGS = $(X_LIBS) lcd4linux_LDADD = @DRIVERS@ @DRVLIBS@ lcd4linux_DEPENDENCIES = @DRIVERS@ -lcd4linux_SOURCES = lcd4linux.c debug.c debug.h cfg.c cfg.h lock.c lock.h pid.c pid.h parser.c parser.h processor.c processor.h system.c system.h isdn.c isdn.h mail.c mail.h seti.c seti.h battery.c battery.h dvb.c dvb.h filter.c filter.h udelay.c udelay.h display.c display.h pixmap.c pixmap.h bar.c bar.h fontmap.c fontmap.h exec.c exec.h mail2.c socket.c socket.h +lcd4linux_SOURCES = lcd4linux.c debug.c debug.h cfg.c cfg.h lock.c lock.h pid.c pid.h parser.c parser.h processor.c processor.h system.c system.h isdn.c isdn.h mail.c mail.h seti.c seti.h battery.c battery.h dvb.c dvb.h filter.c filter.h udelay.c udelay.h display.c display.h pixmap.c pixmap.h bar.c bar.h icon.c icon.h fontmap.c fontmap.h exec.c exec.h mail2.c socket.c socket.h EXTRA_lcd4linux_SOURCES = parport.c parport.h BeckmannEgle.c Crystalfontz.c Cwlinux.c HD44780.c M50530.c T6963.c USBLCD.c MatrixOrbital.c PalmPilot.c Raster.c SIN.c Skeleton.c XWindow.c Text.c @@ -118,7 +118,8 @@ PROGRAMS = $(bin_PROGRAMS) lcd4linux_OBJECTS = lcd4linux.o debug.o cfg.o lock.o pid.o parser.o \ processor.o system.o isdn.o mail.o seti.o battery.o dvb.o filter.o \ -udelay.o display.o pixmap.o bar.o fontmap.o exec.o mail2.o socket.o +udelay.o display.o pixmap.o bar.o icon.o fontmap.o exec.o mail2.o \ +socket.o CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -137,10 +138,10 @@ DEP_FILES = .deps/BeckmannEgle.P .deps/Crystalfontz.P .deps/Cwlinux.P \ .deps/Raster.P .deps/SIN.P .deps/Skeleton.P .deps/T6963.P .deps/Text.P \ .deps/USBLCD.P .deps/XWindow.P .deps/bar.P .deps/battery.P .deps/cfg.P \ .deps/debug.P .deps/display.P .deps/dvb.P .deps/exec.P .deps/filter.P \ -.deps/fontmap.P .deps/isdn.P .deps/lcd4linux.P .deps/lock.P \ -.deps/mail.P .deps/mail2.P .deps/parport.P .deps/parser.P .deps/pid.P \ -.deps/pixmap.P .deps/processor.P .deps/seti.P .deps/socket.P \ -.deps/system.P .deps/udelay.P +.deps/fontmap.P .deps/icon.P .deps/isdn.P .deps/lcd4linux.P \ +.deps/lock.P .deps/mail.P .deps/mail2.P .deps/parport.P .deps/parser.P \ +.deps/pid.P .deps/pixmap.P .deps/processor.P .deps/seti.P \ +.deps/socket.P .deps/system.P .deps/udelay.P SOURCES = $(liblcd4linux_a_SOURCES) $(lcd4linux_SOURCES) $(EXTRA_lcd4linux_SOURCES) OBJECTS = $(liblcd4linux_a_OBJECTS) $(lcd4linux_OBJECTS) diff --git a/MatrixOrbital.c b/MatrixOrbital.c index 36e6961..6848a7e 100644 --- a/MatrixOrbital.c +++ b/MatrixOrbital.c @@ -1,4 +1,4 @@ -/* $Id: MatrixOrbital.c,v 1.32 2003/08/22 03:45:08 reinelt Exp $ +/* $Id: MatrixOrbital.c,v 1.33 2003/08/24 04:31:56 reinelt Exp $ * * driver for Matrix Orbital serial display modules * @@ -20,6 +20,9 @@ * * * $Log: MatrixOrbital.c,v $ + * Revision 1.33 2003/08/24 04:31:56 reinelt + * icon.c icon.h added + * * Revision 1.32 2003/08/22 03:45:08 reinelt * bug in parallel port code fixed, more icons stuff * @@ -172,6 +175,7 @@ #include "cfg.h" #include "lock.h" #include "display.h" +#include "icon.h" #include "bar.h" #define XRES 5 @@ -264,6 +268,7 @@ static int MO_clear (int protocol) int gpo; memset (FrameBuffer1, ' ', Lcd.rows*Lcd.cols*sizeof(char)); + icon_clear(); bar_clear(); GPO=0; @@ -364,6 +369,8 @@ static int MO_init (LCD *Self, int protocol) Lcd.icons=Icons; } + icon_init(Lcd.rows, Lcd.cols, XRES, YRES, 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 diff --git a/display.c b/display.c index 84c7ae5..6896928 100644 --- a/display.c +++ b/display.c @@ -1,4 +1,4 @@ -/* $Id: display.c,v 1.37 2003/08/17 16:37:39 reinelt Exp $ +/* $Id: display.c,v 1.38 2003/08/24 04:31:56 reinelt Exp $ * * framework for device drivers * @@ -20,6 +20,9 @@ * * * $Log: display.c,v $ + * Revision 1.38 2003/08/24 04:31:56 reinelt + * icon.c icon.h added + * * Revision 1.37 2003/08/17 16:37:39 reinelt * more icon framework * @@ -358,9 +361,7 @@ int lcd_icon (int num, int row, int col, unsigned char *bitmap) if (row<1 || row>Lcd->rows) return -1; if (col<1 || col>Lcd->cols) return -1; if (Lcd->icon==NULL) return 0; - - // Fixme: ToDo! - return 0; + return Lcd->icon(num-1, row-1, col-1, bitmap); } int lcd_gpo (int num, int val) diff --git a/icon.c b/icon.c new file mode 100644 index 0000000..ee9440b --- /dev/null +++ b/icon.c @@ -0,0 +1,97 @@ +/* $Id: icon.c,v 1.1 2003/08/24 04:31:56 reinelt Exp $ + * + * generic icon and heartbeat handling + * + * written 2003 by Michael Reinelt (reinelt@eunet.at) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * + * $Log: icon.c,v $ + * Revision 1.1 2003/08/24 04:31:56 reinelt + * icon.c icon.h added + * + * + */ + + +#include + +#include "icon.h" +#include "debug.h" + + +static int ROWS=0; +static int COLS=0; +static int XRES=0; +static int YRES=0; +static int ICONS=0; + +static int *Screen; + + +static int icon_get_bitmap (int num) +{ + int row, col; + char key[15]; + char *val; + + for (row=1; row<=8; row++) { + snprintf (key, sizeof(key), "Icons%d.Bitmap%d", num, row); + val=cfg_get(key); + } +} + + +int icon_init (int rows, int cols, int xres, int yres, int icons) +{ + if (rows<1 || cols<1) + return -1; + + ROWS=rows; + COLS=cols; + XRES=xres; + YRES=yres; + ICONS=icons; + + if (Screen) { + free (Screen); + } + + if ((Screen=malloc(ROWS*COLS*sizeof(*Screen)))==NULL) { + return -1; + } + + icon_clear(); + + return 0; +} + + +void icon_clear(void) +{ + int n; + + for (n=0; n