From ba9b0d993fd55de17c38c419ee4dd5252d54bb8e Mon Sep 17 00:00:00 2001 From: tth Date: Thu, 10 Jan 2019 14:07:56 +0100 Subject: [PATCH] first version of ncurses waterfall --- viz/curses/Makefile | 10 ++++--- viz/curses/ecran.c | 17 +++++------ viz/curses/ecran.h | 4 ++- viz/curses/t.c | 34 ++++++++++++++++------ viz/curses/waterfall.c | 66 +++++++++++++++++++++++++++++++++++------- 5 files changed, 98 insertions(+), 33 deletions(-) diff --git a/viz/curses/Makefile b/viz/curses/Makefile index 63d91f6..a275f58 100644 --- a/viz/curses/Makefile +++ b/viz/curses/Makefile @@ -1,21 +1,23 @@ +# --------------- *** +COPT = -Wall -g -DTRACE=0 # --------------- *** ecran.o: ecran.c Makefile ecran.h - gcc -Wall -c $< + gcc $(COPT) -c $< 7segments.o: 7segments.c Makefile - gcc -Wall -c $< + gcc $(COPT) -c $< waterfall.o: waterfall.c Makefile - gcc -Wall -c $< + gcc $(COPT) -c $< # --------------- *** OBJ = ecran.o waterfall.o 7segments.o t: t.c Makefile $(OBJ) ecran.h - gcc -Wall $< $(OBJ) -lncurses -o $@ + gcc $(COPT) $< $(OBJ) -lncurses -o $@ # --------------- *** diff --git a/viz/curses/ecran.c b/viz/curses/ecran.c index 46a8ec5..37dd65b 100644 --- a/viz/curses/ecran.c +++ b/viz/curses/ecran.c @@ -1,6 +1,6 @@ #include #include -#include +#include #include #include @@ -21,16 +21,21 @@ standend(); /* refresh(); */ } /* ---------------------------------------------------------------- */ -int fond_ecran(void) +int fond_ecran(char *title) { +char *tp; + #if TRACE int foo; char buffer[200]; #endif +tp = " DD2 MONITORING by tTh 2019 "; +if (NULL != title) tp = title; + barre_inverse('+', 0); standout(); -mvaddstr(0, 2, " DD2 MONITORING by tTh 2019 "); +mvaddstr(0, 2, tp); #if TRACE sprintf(buffer, " ecran %dx%d ", COLS, LINES); foo = strlen(buffer); @@ -39,12 +44,6 @@ mvaddstr(0, COLS-2-foo, buffer); standend(); refresh(); -#if TRACE -fprintf(stderr, "HAUT %3d\n", HAUT); -fprintf(stderr, "HAUT_1 %3d BARRE_1 %3d\n", HAUT_1, BARRE_1); -fprintf(stderr, "HAUT_2 %3d BARRE_2 %3d\n", HAUT_2, BARRE_2); -#endif - return 0; } /* ---------------------------------------------------------------- */ diff --git a/viz/curses/ecran.h b/viz/curses/ecran.h index 8fbd681..5f0d60d 100644 --- a/viz/curses/ecran.h +++ b/viz/curses/ecran.h @@ -1,6 +1,8 @@ -int fond_ecran(void); +int fond_ecran(char *titre); WINDOW * open_waterfall(char *title, int flags); +int plot_waterfall(WINDOW *wf, int flags, float values[4]); +int close_waterfall(WINDOW *wf, int notused); diff --git a/viz/curses/t.c b/viz/curses/t.c index 1ce4041..3207949 100644 --- a/viz/curses/t.c +++ b/viz/curses/t.c @@ -12,20 +12,36 @@ int verbosity; /* ---------------------------------------------------------------- */ void demo(int nbl, int k) { -int loop; -char line[100]; -WINDOW *water; +int loop, foo; +char line[100]; +WINDOW *water; +static float rvals[4]; + water = open_waterfall("premier essai", 0); for (loop=0; loop 1023.0) { + rvals[foo] = (float)(rand() % 15); + } } + + plot_waterfall(water, 1, rvals); + + if (rand()%10 < 1) sleep(1); + } + +close_waterfall(water, 0); + } /* ---------------------------------------------------------------- */ static void finish(int signal) @@ -59,9 +75,9 @@ nonl(); cbreak(); noecho(); keypad(stdscr, TRUE); /* acces aux touches 'curseur' */ -fond_ecran(); +fond_ecran(" Demonstrator "); -demo(1024, 0); +demo(9000, 0); /* * plop, on a fini, restaurer la console diff --git a/viz/curses/waterfall.c b/viz/curses/waterfall.c index 2c16dce..b5c7a57 100644 --- a/viz/curses/waterfall.c +++ b/viz/curses/waterfall.c @@ -22,26 +22,72 @@ WINDOW *open_waterfall(char *title, int flags) WINDOW *win; int l, c, w, h; -l = 2; c = 1; -w = COLS - 2; h = LINES -3; +l = 1; c = 1; +w = COLS - 2; h = LINES - 3; win = newwin(h, w, l, c); +scrollok(win, 1); +waddstr(win, title); waddch(win, '\n'); +wrefresh(win); return win; } /* ---------------------------------------------------------------- */ -int plot_waterfall(WINDOW *wf, float values[4]) +int plot_waterfall(WINDOW *wf, int mode, float values[4]) { #define TL 1000 -int foo; -char tag, ligne[TL+1]; +int foo, idx; +char tag, ligne[TL+1]; +float coef_w; +static long iter; -for(foo=0; foo