3 #include "eventque.h"
\r
5 int Couleur,Fond,CurX,CurY;
\r
7 int MOUSE_PRESENT =0;
\r
13 void mousenit(int mo,int ke)
\r
17 evt=(MouseEvent *)malloc(sizeof(MouseEvent));
\r
18 MouseEventEnable(ke,mo);
\r
22 void mouseshow(void)
\r
24 MouseDisplayCursor();
\r
27 void mousehide(void)
\r
32 int mouse(v,p,h,l,r,c)
\r
33 unsigned int *v,*p,*h,*l,*r,*c;
\r
39 *v=0,*p=0,*h=0,*l=0,*r=0,*c=0;
\r
42 evt=(MouseEvent *)calloc(1,sizeof(MouseEvent));
\r
43 MouseGetEvent(M_EVENT | M_POLL | M_NOPAINT,evt);
\r
44 *p=evt->kbstat; *l=evt->key;
\r
45 *h=evt->x; *v=evt->y;
\r
46 *r=evt->flags; *c=evt->buttons;
\r
47 if(ev1->kbstat!=evt->kbstat || ev1->key!=evt->key || ev1->x!=evt->x ||
\r
48 ev1->y!=evt->y || ev1->flags!=evt->flags || ev1->buttons!=evt->buttons)
\r
54 void afficheinteger(int x,int y,int valeur,int cf,int ce)
\r
58 sprintf(tst,"%i",valeur);
\r
59 GrTextXY(x,y,tst,ce,cf);
\r
60 CurX+=8*strlen(tst);
\r
70 int readcara(int posx,int posy,int col_f,int col_e)
\r
77 GrHLine(posx,posx+8,posy+13,col_f);
\r
79 GrHLine(posx,posx+8,posy+13,col_e);
\r
82 GrHLine(posx,posx+8,posy+13,col_f);
\r
96 int affiche_chaine(int x,int y,int lg,char *txtd,char *txtf,int av,int *ll,int col_e,int col_f)
\r
104 for(sprintf(&cara[0],"%c\0",*txtf),larg=0;txtf>=txtd;txtf--) /* affiche arriere */
\r
106 GrTextXY(x+lg-larg,y,&cara[0],col_e,col_f);
\r
108 sprintf(&cara[0],"%c\0",*(txtf-1));
\r
122 for(sprintf(&cara[0],"%c\0",*txtd),larg=0;txtd<=txtf;txtd++) /* affiche avant */
\r
124 GrTextXY(x+larg,y,&cara[0],col_e,col_f);
\r
126 sprintf(&cara[0],"%c\0",*(txtd+1));
\r
137 int gscanfnum(int x,int y,int lg,int min,int max,int deft,int col_f,int col_e,int col_c)
\r
146 short signe=0; /* par defaut 0(+) sinon 1(-) */
\r
149 GrFilledBox(x,y,x+lg,y+14,col_f);
\r
150 sprintf(t,"%lu\0",deft);
\r
151 while(*ptc!='\0') ptc++;
\r
152 GrTextXY(x+lg-strlen(t)*8,y,t,col_e,col_f);
\r
155 a=readcara(x+lg-8,y,col_f,col_c);
\r
196 if((a<='9') && (a>='0'))
\r
207 GrFilledBox(x,y,x+lg,y+14,col_f);
\r
208 affiche_chaine(x,y,lg,ptd,ptc,flg,&larg,col_e,col_f);
\r
211 GrTextXY(x,y,"-",col_e,col_f);
\r
213 GrTextXY(x,y,"+",col_e,col_f);
\r
215 while((a!=13) && (a!=27));
\r
221 if((i<=max) && (i>=min))
\r
226 return(gscanfnum(x,y,lg,min,max,deft,col_f,col_e,col_c));
\r
230 return(gscanfnum(x,y,lg,min,max,deft,col_f,col_e,col_c));
\r
234 /******************************************************************************/
\r
235 char *gschar(int x,int y,int lg,int *lgmax,char *defaut,int col_f,int col_e,int col_c)
\r
241 ptd=(char *)malloc(*lgmax);
\r
243 GrFilledBox(x,y,x+lg*8,y+14,col_f);
\r
244 GrTextXY(x,y,defaut,col_e,col_f);
\r
247 a=readcara((larg<(lg-1)*8) ? (x+larg) : (x+(lg-1)*8),y,col_f,col_c);
\r
255 larg=(larg-8)>0 ? larg-8 : 0;
\r
268 if(((ptc-ptd)/sizeof(char))<=*lgmax)
\r
278 GrFilledBox(x,y,x+lg*8,y+14,col_f);
\r
279 flg=affiche_chaine(x,y,(lg-1)*8,ptd,ptc,flg,&larg,col_e,col_f);
\r
281 while((a!=13) && (a!=27));
\r
282 if((a==27) || (ptd==ptc))
\r
285 while(*ptc!='\0') ptc++;
\r
289 GrFilledBox(x,y,x+lg*8,y+14,col_f);
\r
290 affiche_chaine(x,y,lg*8,ptd,ptc,1,&larg,col_e,col_f);
\r
291 *lgmax=(ptc>ptd)? ptc-ptd+1 : 0;
\r