From 42914eda641c23996f9328c67fddb13df6225fb2 Mon Sep 17 00:00:00 2001 From: reinelt Date: Sun, 26 Mar 2000 20:00:44 +0000 Subject: [lcd4linux @ 2000-03-26 20:00:44 by reinelt] README.Raster added git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@24 3ae390bd-cb1e-0410-b409-cd5a39f66f1f --- README.Raster | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ Raster.c | 27 ++++++++++++++++++++------- cfg.c | 25 ++++++++++++++++++------- lcd4linux.conf.sample | 14 +++++--------- 4 files changed, 92 insertions(+), 23 deletions(-) create mode 100644 README.Raster diff --git a/README.Raster b/README.Raster new file mode 100644 index 0000000..b0e05b4 --- /dev/null +++ b/README.Raster @@ -0,0 +1,49 @@ +# +# $Id: README.Raster,v 1.1 2000/03/26 20:00:44 reinelt Exp $ +# + +This is the README file for the Raster display driver for lcd4linux + +This driver is intended to create various raster formats, at the moment +only binary PPM (portable pixmap) is supported. + +The driver creates the output file(s) specified with the -o switch. The +parameter is used as a format string for sprintf(), if you specify '%d' +in the output file, files with a sequence number will be created. + +The output file is first created with a '.tmp' extension, this temporary +file will be written and closed, and finally (atomically) renamed. This way +you can be shure that you will always get a complete file, but its contents +changes every 'tick' milliseconds. + +Configuration: + +The driver needs/supports the following entries in lcd4linux.conf: + +Display: must be "PPM" +size: [columns]x[rows], e.g. "20x4" +font: [xrex]x[yres], at the moment only "5x8" and "6x8" supported. +pixel: [pixelsize]+[pixelgap], e.g. "5+1" +gap: [row gap]x[column gap], e.g. "3x3" +border: border width +foreground: color of an active LCD Pixel, must be #rrggbb +halfground: color of an inactive LCD Pixel, must be #rrggbb +background: backlight color, must be #rrggbb + +This may look weird, but it is weird. Let's explain this a bit further: +The raster driver tries to emulate a real LC display. A real LCD has a +size of columns*rows characters. Each character consists of xres*yres +LCD cells. One single cell will be represented by a rectangle of +pixelsize*pixelsize pixels. If you want to, you can emulate the gap +between this lcd cells by specifying a pixelgap greater than zero. +Sometimes there's a gap between characters, too. You can specify this +gap (in pixels again) horizontally and vertically. Usually this gap +is the same size as a cell (which is pixelsize+pixelgap). + +If you use a font of 5x8, some characters may use the first and the last +pixel. So you should specify a column gap, otherwise the caracters may +touch. On the other hand, the 6x8 font never uses the first pixel. So you +can omit the column gap, and will get the same text layout, but +uninterupted bars! + +After all: don't try to understand this unless you have tried it out! diff --git a/Raster.c b/Raster.c index 78f2b9a..22b8819 100644 --- a/Raster.c +++ b/Raster.c @@ -1,4 +1,4 @@ -/* $Id: Raster.c,v 1.6 2000/03/26 19:03:52 reinelt Exp $ +/* $Id: Raster.c,v 1.7 2000/03/26 20:00:44 reinelt Exp $ * * driver for raster formats * @@ -20,6 +20,10 @@ * * * $Log: Raster.c,v $ + * Revision 1.7 2000/03/26 20:00:44 reinelt + * + * README.Raster added + * * Revision 1.6 2000/03/26 19:03:52 reinelt * * more Pixmap renaming @@ -82,9 +86,9 @@ static int rgap=0; static int cgap=0; static int border=0; -static int foreground=0; -static int halfground=0; -static int background=0; +static unsigned int foreground=0; +static unsigned int halfground=0; +static unsigned int background=0; extern char* output; @@ -222,9 +226,18 @@ int Raster_init (LCD *Self) border=atoi(cfg_get("border")?:"0"); - foreground=strtol(cfg_get("foreground")?:"000000", NULL, 16); - halfground=strtol(cfg_get("halfground")?:"ffffff", NULL, 16); - background=strtol(cfg_get("background")?:"ffffff", NULL, 16); + if (sscanf(s=cfg_get("foreground")?:"#102000", "#%x", &foreground)!=1) { + fprintf (stderr, "Raster: bad foreground color '%s'\n", s); + return -1; + } + if (sscanf(s=cfg_get("halfground")?:"#70c000", "#%x", &halfground)!=1) { + fprintf (stderr, "Raster: bad halfground color '%s'\n", s); + return -1; + } + if (sscanf(s=cfg_get("background")?:"#80d000", "#%x", &background)!=1) { + fprintf (stderr, "Raster: bad background color '%s'\n", s); + return -1; + } if (pix_init (rows, cols, xres, yres)!=0) { fprintf (stderr, "Raster: pix_init(%d, %d, %d, %d) failed\n", rows, cols, xres, yres); diff --git a/cfg.c b/cfg.c index 1e0df08..fcb9651 100644 --- a/cfg.c +++ b/cfg.c @@ -1,4 +1,4 @@ -/* $Id: cfg.c,v 1.3 2000/03/26 19:03:52 reinelt Exp $ +/* $Id: cfg.c,v 1.4 2000/03/26 20:00:44 reinelt Exp $ * * config file stuff * @@ -20,6 +20,10 @@ * * * $Log: cfg.c,v $ + * Revision 1.4 2000/03/26 20:00:44 reinelt + * + * README.Raster added + * * Revision 1.3 2000/03/26 19:03:52 reinelt * * more Pixmap renaming @@ -89,7 +93,6 @@ static char *strip (char *s) for (p=s; *p; p++) { if (*p=='"') do p++; while (*p && *p!='\n' && *p!='"'); if (*p=='\'') do p++; while (*p && *p!='\n' && *p!='\''); - if (p>s && *(p-1)=='\\' && *p=='#') if (*p=='\n' || (*p=='#' && (p==s || *(p-1)!='\\'))) { *p='\0'; break; @@ -99,6 +102,17 @@ static char *strip (char *s) return s; } +static char *dequote (char *string) +{ + char *s=string; + char *p=string; + + do { + if (*s!='\\') *p++=*s; + } while (*s++); + + return string; +} void cfg_set (char *key, char *val) { @@ -107,17 +121,16 @@ void cfg_set (char *key, char *val) for (i=0; i