From c685eb77048f868fd3c4d0647aa29092ca607750 Mon Sep 17 00:00:00 2001 From: burg Date: Sat, 18 Sep 2004 23:27:41 +0000 Subject: Ajout/modification des fonctions graphique, avec l'ajout des controles par touche --- i/serialplot/serialplot.c | 61 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 15 deletions(-) (limited to 'i/serialplot/serialplot.c') diff --git a/i/serialplot/serialplot.c b/i/serialplot/serialplot.c index 532f128..ec412e2 100644 --- a/i/serialplot/serialplot.c +++ b/i/serialplot/serialplot.c @@ -1,5 +1,5 @@ /*TODO : refaire un calcul de moyenne : OK - * faire un système d'échelle plus lisible + * faire un système d'échelle plus lisible : partiellement fait * intégrer la lecture serie dans le programme : OK * plus de protection sur l'option t : */ @@ -133,7 +133,17 @@ main (int argc, char **argv) else fd_input = 0 ; int melt = 0; - int vals[8]; + + int vals[8]; // valeur à afficher par voies + double scale[8]; // facteur d'echelle par voies + int position[8]; // position sur la voie + int i; + for (i=0; i<8;i++) + { + scale[i] = 1; + position[i] = 0; + } + enum R_stat etat_c = E1; /* initialisation du select */ @@ -161,6 +171,7 @@ main (int argc, char **argv) { if(event.type == SDL_KEYDOWN) { + Uint8 *keystate; switch (event.key.keysym.sym) { case SDLK_ESCAPE: @@ -170,20 +181,40 @@ main (int argc, char **argv) case SDLK_m: melt = !melt; break; - case SDLK_a: - case SDLK_b: - case SDLK_c: - case SDLK_d: - case SDLK_e: - case SDLK_f: - case SDLK_g: - case SDLK_h: printf("abcdefgh\n"); + case SDLK_KP_MINUS: + keystate = SDL_GetKeyState(NULL); + if ( keystate[SDLK_F1]) + scale[0] /=2 ; + if ( keystate[SDLK_F2]) + scale[1] /=2 ; break; - default : printf("touche sans fonction\n"); + case SDLK_KP_PLUS: + keystate = SDL_GetKeyState(NULL); + if ( keystate[SDLK_F1]) + scale[0] *=2; + if ( keystate[SDLK_F2]) + scale[1] *=2; + break; + case SDLK_PAGEUP: + keystate = SDL_GetKeyState(NULL); + if ( keystate[SDLK_F1]) + position[0] -=5; + if ( keystate[SDLK_F2]) + position[1] -=5; + break; + case SDLK_PAGEDOWN: + keystate = SDL_GetKeyState(NULL); + if ( keystate[SDLK_F1]) + position[0] +=5; + if ( keystate[SDLK_F2]) + position[1] +=5; + break; + + default : //printf("touche sans fonction\n"); break; } } - else if (event.type == SDL_QUIT) + if (event.type == SDL_QUIT) { quit++; } @@ -192,8 +223,8 @@ main (int argc, char **argv) if (FD_ISSET(fd_input,&fsdcR)) { if (fgets (input, - sizeof (input) / sizeof (input[0]), - FILE_input )) + sizeof (input) / sizeof (input[0]), + FILE_input )) { if (input[0] == '!') { @@ -208,7 +239,7 @@ main (int argc, char **argv) { int i; i =conv_Rd_type(etat_lect); - draw(melt,i,vals); + draw(melt,i,vals,scale,position); draw_inf(i,vals); nextFrame(); etat_c = E1; -- cgit v1.2.3