aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorltoetsch <>2001-03-16 16:40:17 +0000
committerltoetsch <>2001-03-16 16:40:17 +0000
commitd028f79336840a076542ccd17bdbca2e2f25357e (patch)
tree169f4a2f4abeba86179b873110769a0100e339ce
parentb0650f9131a98a02ca65ab15a7f41e99b6822e90 (diff)
downloadlcd4linux-d028f79336840a076542ccd17bdbca2e2f25357e.tar.gz
[lcd4linux @ 2001-03-16 16:40:17 by ltoetsch]
implemented time bar
-rw-r--r--NEWS2
-rw-r--r--PalmPilot.c7
-rw-r--r--README7
-rw-r--r--Raster.c7
-rw-r--r--TODO7
-rw-r--r--Text.c7
-rw-r--r--XWindow.c7
-rw-r--r--display.c10
-rw-r--r--display.h8
-rw-r--r--parser.c11
-rw-r--r--pixmap.c54
-rw-r--r--processor.c9
12 files changed, 112 insertions, 24 deletions
diff --git a/NEWS b/NEWS
index 8cf0b70..a617d40 100644
--- a/NEWS
+++ b/NEWS
@@ -49,3 +49,5 @@ lcd4linux-0.98
- added another verbose level (-vvv) for debugging socket traffic
- added nntp support for count of news/unread messages in subscribed NGs
+
+- implemented time series bar '$t'
diff --git a/PalmPilot.c b/PalmPilot.c
index 44d7b86..139d99c 100644
--- a/PalmPilot.c
+++ b/PalmPilot.c
@@ -1,4 +1,4 @@
-/* $Id: PalmPilot.c,v 1.4 2001/02/13 09:00:13 reinelt Exp $
+/* $Id: PalmPilot.c,v 1.5 2001/03/16 16:40:17 ltoetsch Exp $
*
* driver for 3Com Palm Pilot
*
@@ -20,6 +20,9 @@
*
*
* $Log: PalmPilot.c,v $
+ * Revision 1.5 2001/03/16 16:40:17 ltoetsch
+ * implemented time bar
+ *
* Revision 1.4 2001/02/13 09:00:13 reinelt
*
* prepared framework for GPO's (general purpose outputs)
@@ -66,7 +69,7 @@
#include "display.h"
#include "pixmap.h"
-#define BARS ( BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2 | BAR_V2 )
+#define BARS ( BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2 | BAR_V2 | BAR_T)
static LCD Lcd;
static char *Port=NULL;
diff --git a/README b/README
index 2970b86..7bae392 100644
--- a/README
+++ b/README
@@ -1,5 +1,5 @@
#
-# $Id: README,v 1.19 2001/03/15 14:25:05 ltoetsch Exp $
+# $Id: README,v 1.20 2001/03/16 16:40:17 ltoetsch Exp $
#
This is the README file for lcd4linux
@@ -207,6 +207,11 @@ Display options:
(down). If you specify the direction in upper case, a logarithmic bar will
be created. note that the space occupied by a bar always grows from left
to right or from top to bottom, regardless of the direction!
+
+ '$t<height><token>,<width> will create a time series bar. The data are
+ displayed like '$u', but are shifted every second 1 pixel to the
+ left. Currently only displays based on the pixel-driver support this
+ bar type.
Tokens:
diff --git a/Raster.c b/Raster.c
index eabc3ec..4aad9d5 100644
--- a/Raster.c
+++ b/Raster.c
@@ -1,4 +1,4 @@
-/* $Id: Raster.c,v 1.17 2001/03/12 12:39:36 reinelt Exp $
+/* $Id: Raster.c,v 1.18 2001/03/16 16:40:17 ltoetsch Exp $
*
* driver for raster formats
*
@@ -20,6 +20,9 @@
*
*
* $Log: Raster.c,v $
+ * Revision 1.18 2001/03/16 16:40:17 ltoetsch
+ * implemented time bar
+ *
* Revision 1.17 2001/03/12 12:39:36 reinelt
*
* reworked autoconf a lot: drivers may be excluded, #define's went to config.h
@@ -131,7 +134,7 @@
#include "display.h"
#include "pixmap.h"
-#define BARS ( BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2 | BAR_V2 )
+#define BARS ( BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2 | BAR_V2 | BAR_T )
static LCD Lcd;
diff --git a/TODO b/TODO
index e3528cd..3985ecd 100644
--- a/TODO
+++ b/TODO
@@ -1,8 +1,9 @@
ToDo-List / Wishlist for lcd4linux
-2000-04-04 Michael Reinelt <reinelt@eunet.at>
-implement some sort of 'graphs', similar to bars, but with a time axis
-can be filled (made up of bars) or not (needs raster graphics)
+// 2000-04-04 Michael Reinelt <reinelt@eunet.at>
+// implement some sort of 'graphs', similar to bars, but with a time axis
+// can be filled (made up of bars) or not (needs raster graphics)
+// done 2001-03-16 -lt.
// 2000-04-04 Michael Reinelt <reinelt@eunet.at>
// write a driver for PNG. This should be the first step towards a WWW-driver.
diff --git a/Text.c b/Text.c
index 1468947..983af51 100644
--- a/Text.c
+++ b/Text.c
@@ -1,4 +1,4 @@
-/* $Id: Text.c,v 1.3 2001/03/16 09:28:08 ltoetsch Exp $
+/* $Id: Text.c,v 1.4 2001/03/16 16:40:17 ltoetsch Exp $
*
* pure ncurses based text driver
*
@@ -20,6 +20,9 @@
*
*
* $Log: Text.c,v $
+ * Revision 1.4 2001/03/16 16:40:17 ltoetsch
+ * implemented time bar
+ *
* Revision 1.3 2001/03/16 09:28:08 ltoetsch
* bugfixes
*
@@ -77,7 +80,7 @@ extern int foreground;
static LCD Lcd;
static WINDOW *w;
WINDOW *err_win;
-#define BARS ( BAR_R | BAR_H2 )
+#define BARS ( BAR_R | BAR_H2 | BAR_T )
int err_rows;
int Text_clear (void)
diff --git a/XWindow.c b/XWindow.c
index 46b38f6..d288587 100644
--- a/XWindow.c
+++ b/XWindow.c
@@ -1,4 +1,4 @@
-/* $Id: XWindow.c,v 1.24 2001/03/01 11:08:16 reinelt Exp $
+/* $Id: XWindow.c,v 1.25 2001/03/16 16:40:17 ltoetsch Exp $
*
* X11 Driver for LCD4Linux
*
@@ -20,6 +20,9 @@
*
*
* $Log: XWindow.c,v $
+ * Revision 1.25 2001/03/16 16:40:17 ltoetsch
+ * implemented time bar
+ *
* Revision 1.24 2001/03/01 11:08:16 reinelt
*
* reworked configure to allow selection of drivers
@@ -148,7 +151,7 @@ union semun {
};
#endif
-#define BARS ( BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2 | BAR_V2 )
+#define BARS ( BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2 | BAR_V2 | BAR_T)
static LCD Lcd;
static Display *dp;
diff --git a/display.c b/display.c
index 1e56e99..229da60 100644
--- a/display.c
+++ b/display.c
@@ -1,4 +1,4 @@
-/* $Id: display.c,v 1.27 2001/03/15 14:25:05 ltoetsch Exp $
+/* $Id: display.c,v 1.28 2001/03/16 16:40:17 ltoetsch Exp $
*
* framework for device drivers
*
@@ -20,6 +20,9 @@
*
*
* $Log: display.c,v $
+ * Revision 1.28 2001/03/16 16:40:17 ltoetsch
+ * implemented time bar
+ *
* Revision 1.27 2001/03/15 14:25:05 ltoetsch
* added unread/total news
*
@@ -291,10 +294,11 @@ int lcd_bar (int type, int row, int col, int max, int len1, int len2)
{
if (row<1 || row>Lcd->rows) return -1;
if (col<1 || col>Lcd->cols) return -1;
- if (!(type & (BAR_H2 | BAR_V2))) len2=len1;
+ if (!(type & (BAR_H2 | BAR_V2 | BAR_T))) len2=len1;
if (type & BAR_LOG) {
len1=(double)max*log(len1+1)/log(max);
- len2=(double)max*log(len2+1)/log(max);
+ if (!(type & BAR_T))
+ len2=(double)max*log(len2+1)/log(max);
}
if (Lcd->put==NULL) return 0;
return Lcd->bar (type & BAR_HV, row-1, col-1, max, len1, len2);
diff --git a/display.h b/display.h
index bf9915f..3afc736 100644
--- a/display.h
+++ b/display.h
@@ -1,4 +1,4 @@
-/* $Id: display.h,v 1.13 2001/02/14 07:40:16 reinelt Exp $
+/* $Id: display.h,v 1.14 2001/03/16 16:40:17 ltoetsch Exp $
*
* framework for device drivers
*
@@ -20,6 +20,9 @@
*
*
* $Log: display.h,v $
+ * Revision 1.14 2001/03/16 16:40:17 ltoetsch
+ * implemented time bar
+ *
* Revision 1.13 2001/02/14 07:40:16 reinelt
*
* first (incomplete) GPO implementation
@@ -88,9 +91,10 @@
#define BAR_H2 (1<<4)
#define BAR_V2 (1<<5)
#define BAR_LOG (1<<6)
+#define BAR_T (1<<7)
#define BAR_H (BAR_L | BAR_R)
-#define BAR_V (BAR_U | BAR_D)
+#define BAR_V (BAR_U | BAR_D | BAR_T)
#define BAR_HV (BAR_H | BAR_V)
typedef struct LCD {
diff --git a/parser.c b/parser.c
index 2e2f9a1..246a639 100644
--- a/parser.c
+++ b/parser.c
@@ -1,4 +1,4 @@
-/* $Id: parser.c,v 1.15 2001/03/14 13:19:29 ltoetsch Exp $
+/* $Id: parser.c,v 1.16 2001/03/16 16:40:17 ltoetsch Exp $
*
* row definition parser
*
@@ -20,6 +20,9 @@
*
*
* $Log: parser.c,v $
+ * Revision 1.16 2001/03/16 16:40:17 ltoetsch
+ * implemented time bar
+ *
* Revision 1.15 2001/03/14 13:19:29 ltoetsch
* Added pop3/imap4 mail support
*
@@ -181,6 +184,8 @@ static int bar_type (char tag)
return BAR_U;
case 'd':
return BAR_D;
+ case 't':
+ return BAR_T;
default:
return 0;
}
@@ -272,6 +277,8 @@ char *parse_row (char *string, int supported_bars, int usage[])
break;
}
}
+ else if (*s == ',' && (type & BAR_T))
+ token2=strtol(++s, &s, 10); /* get horizontal length */
*p++='$';
*p++=type;
*p++=len;
@@ -279,7 +286,7 @@ char *parse_row (char *string, int supported_bars, int usage[])
if (token>256) *p++=token>>8;
if (token2!=-1) {
*p++=token2&255;
- if (token>256) *p++=token2>>8;
+ if (token>256 && !(type & BAR_T)) *p++=token2>>8;
}
break;
diff --git a/pixmap.c b/pixmap.c
index c266a65..b63fcd7 100644
--- a/pixmap.c
+++ b/pixmap.c
@@ -1,4 +1,4 @@
-/* $Id: pixmap.c,v 1.5 2000/03/26 18:46:28 reinelt Exp $
+/* $Id: pixmap.c,v 1.6 2001/03/16 16:40:17 ltoetsch Exp $
*
* generic pixmap driver
*
@@ -20,6 +20,9 @@
*
*
* $Log: pixmap.c,v $
+ * Revision 1.6 2001/03/16 16:40:17 ltoetsch
+ * implemented time bar
+ *
* Revision 1.5 2000/03/26 18:46:28 reinelt
*
* bug in pixmap.c that leaded to empty bars fixed
@@ -67,10 +70,12 @@
#include <stdlib.h>
#include <stdio.h>
+#include <time.h>
#include "display.h"
#include "pixmap.h"
#include "fontmap.h"
+#include "debug.h"
static int ROWS=0;
static int COLS=0;
@@ -136,6 +141,10 @@ int pix_put (int row, int col, char *text)
int pix_bar (int type, int row, int col, int max, int len1, int len2)
{
int x, y, len, rev;
+ static int *valbuf = NULL;
+ static int init = 0;
+ static time_t old;
+ time_t now;
row*=YRES;
col*=XRES;
@@ -150,9 +159,24 @@ int pix_bar (int type, int row, int col, int max, int len1, int len2)
if (len1<1) len1=1;
else if (len1>max) len1=max;
-
- if (len2<1) len2=1;
- else if (len2>max) len2=max;
+
+ if (type == BAR_T) {
+ if (init == 0 && valbuf == 0) {
+ valbuf = calloc(len2, sizeof(int));
+ if (valbuf == NULL) {
+ error("Couldn't allocte valbuf");
+ init = -1;
+ return -1;
+ }
+ init = 1;
+ debug("valbuf ok, len2=%d", len2);
+ time(&old);
+ }
+ }
+ else {
+ if (len2<1) len2=1;
+ else if (len2>max) len2=max;
+ }
rev=0;
@@ -185,6 +209,28 @@ int pix_bar (int type, int row, int col, int max, int len1, int len2)
}
break;
+ case BAR_T:
+ len1=max-len1;
+ rev=1;
+ time(&now);
+ if (now == old) {
+ valbuf[len2-1] += len1;
+ valbuf[len2-1] /= 2;
+ }
+ else {
+ for (; old < now; old++)
+ for (x=1; x<len2; x++)
+ valbuf[x-1]=valbuf[x];
+ valbuf[len2-1] = len1;
+ }
+ for (x=0; x<len2; x++) {
+ len = valbuf[x];
+ for (y=0; y<max; y++) {
+ LCDpixmap[(row+y)*COLS+col+x]=y<len?!rev:rev;
+ }
+ }
+ break;
+
}
return 0;
}
diff --git a/processor.c b/processor.c
index 76ff683..75eb192 100644
--- a/processor.c
+++ b/processor.c
@@ -1,4 +1,4 @@
-/* $Id: processor.c,v 1.23 2001/03/16 09:28:08 ltoetsch Exp $
+/* $Id: processor.c,v 1.24 2001/03/16 16:40:17 ltoetsch Exp $
*
* main data processing
*
@@ -20,6 +20,9 @@
*
*
* $Log: processor.c,v $
+ * Revision 1.24 2001/03/16 16:40:17 ltoetsch
+ * implemented time bar
+ *
* Revision 1.23 2001/03/16 09:28:08 ltoetsch
* bugfixes
*
@@ -585,8 +588,12 @@ static char *process_row (int r)
if (token>T_EXTENDED) token += (*(unsigned char*)++s)<<8;
val2=query_bar(token);
}
+ else if (type & BAR_T)
+ val2 = *(unsigned char*)++s; /* width */
if (type & BAR_H)
lcd_bar (type, r, p-buffer+1, len*xres, val1*len*xres, val2*len*xres);
+ else if (type & BAR_T)
+ lcd_bar (type, r, p-buffer+1, len*xres, val1*len*yres, val2*xres);
else
lcd_bar (type, r, p-buffer+1, len*yres, val1*len*yres, val2*len*yres);