deux vumetres, est-ce assez ?

Cette révision appartient à :
tth 2019-01-24 13:06:26 +01:00
Parent 9476f602ce
révision b43e3b0a1c
5 fichiers modifiés avec 59 ajouts et 14 suppressions

1
.gitignore externe
Voir le fichier

@ -22,4 +22,5 @@ serial/*.png
viz/curses/t
viz/gnuplot/*.png
viz/*.a

Voir le fichier

@ -1,26 +1,31 @@
# --------------- ***
COPT = -Wall -g -DTRACE=0
COPT = -Wall -g -fpic -DTRACE=0
OBJS = ecran.o 7segments.o waterfall.o vumetre.o
ALIB = ../libdd2m-viz.a
# --------------- ***
${ALIB}: ${OBJS}
ar r $@ $?
# --------------- ***
ecran.o: ecran.c Makefile ecran.h
gcc $(COPT) -c $<
7segments.o: 7segments.c Makefile
7segments.o: 7segments.c Makefile ecran.h
gcc $(COPT) -c $<
waterfall.o: waterfall.c Makefile
waterfall.o: waterfall.c Makefile ecran.h
gcc $(COPT) -c $<
vumetre.o: vumetre.c Makefile
vumetre.o: vumetre.c Makefile ecran.h
gcc $(COPT) -c $<
# --------------- ***
OBJ = ecran.o waterfall.o 7segments.o vumetre.o
t: t.c Makefile $(OBJ) ecran.h
gcc $(COPT) $< $(OBJ) -lncurses -o $@
t: t.c Makefile $(ALIB) ecran.h
gcc $(COPT) $< $(ALIB) -lncurses -o $@
# --------------- ***

Voir le fichier

@ -10,4 +10,6 @@ WINDOW * open_waterfall(char *title, int flags);
int plot_waterfall(WINDOW *wf, int flags, float values[4]);
int close_waterfall(WINDOW *wf, int notused);
int vumetre_0(WINDOW * win, int lig, int col, float val, int larg);
int vumetre_1(WINDOW * win, int lig, int col, float val, int larg);

Voir le fichier

@ -22,14 +22,13 @@ for (loop=0; loop<nbl; loop++) {
value = (float)loop / (float)nbl;
for (idx=0; idx<4; idx++) {
for (idx=0; idx<8; idx++) {
hpos = 5 * (idx+1);
hpos = 4 * (idx+1);
value = drand48();
sprintf(ligne, "%6.3f", value);
mvwaddstr(stdscr, hpos, 2, ligne);
vumetre_0(stdscr, hpos, 12, value, 60);
if (idx<4) vumetre_0(stdscr, hpos, 12, value, 60);
else vumetre_1(stdscr, hpos, 12, value, 60);
}

Voir le fichier

@ -18,6 +18,7 @@ int verbosity;
int vumetre_0(WINDOW *win, int lig, int col, float val, int larg)
{
int foo, posc;
char ligne[100];
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %p %d %d %f %d )\n",
@ -26,8 +27,11 @@ fprintf(stderr, ">>> %s ( %p %d %d %f %d )\n",
posc = (int)(val * (float)larg);
sprintf(ligne, "%6.3f", val);
mvwaddstr(win, lig, 2, ligne);
for (foo=0; foo<larg; foo++) {
mvwaddch(win, lig, col+foo, "-*"[foo < posc]);
mvwaddch(win, lig, col+foo, " #"[foo < posc]);
if (foo & 1) {
mvwaddch(win, lig-1, col+foo, '\\');
mvwaddch(win, lig+1, col+foo, '/');
@ -35,6 +39,40 @@ for (foo=0; foo<larg; foo++) {
}
wrefresh(win);
return 0;
}
/* ---------------------------------------------------------------- */
int vumetre_1(WINDOW *win, int lig, int col, float val, int larg)
{
int foo, posc;
char ligne[100];
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %p %d %d %f %d )\n",
__func__, win, lig, col, val, larg);
#endif
posc = (int)(val * (float)larg);
sprintf(ligne, "%6.3f", val);
mvwaddstr(win, lig, 2, ligne);
for (foo=0; foo<larg; foo++) {
if (foo < posc) {
wstandout(win);
mvwaddch(win, lig, col+foo, '|');
wstandend(win);
}
else {
mvwaddch(win, lig, col+foo, '|');
}
if (foo & 2) {
mvwaddch(win, lig-1, col+foo, '|');
mvwaddch(win, lig+1, col+foo, '|');
}
}
wrefresh(win);
return 0;
}
/* ---------------------------------------------------------------- */