Correction de bugs d'affichage
[mp-scratch.git] / src / Controle.mp
1 vardef AffiControle=
2   path cadre;
3   cadre=(llcorner texto+(-eb,-eb))--%(llcorner texto+(0,-eb))--
4     (llcorner texto+(0.875cm,0)+(-eb,-eb))--
5     (llcorner texto+(0.875cm,0)+(0,-2eb))--
6     (llcorner texto+(1.125cm,0)+(0,-2eb))--
7     (llcorner texto+(1.125cm,0)+(eb,-eb))--
8     (lrcorner texto+(0,-eb))--(lrcorner texto+(eb,0))--(urcorner texto+(eb,0))--(urcorner texto+(0,eb))--
9     (ulcorner texto+(0.625cm,0)+(eb,eb))--
10     (ulcorner texto+(0.625cm,0))--
11     (ulcorner texto+(0.375cm,0))--
12     (ulcorner texto+(0.375cm,0)+(-eb,eb))--
13     (ulcorner texto+(0,eb))--(ulcorner texto+(-eb,0))--cycle;
14   picture TEXT;
15   TEXT=image(
16       fill cadre withcolor if unknown colControle : LightOrange else : colControle fi;
17     draw cadre withcolor if unknown colControle : LightOrange else : colControle fi;
18   draw (llcorner texto+(-eb,-eb))--
19     (ulcorner texto+(-eb,0))--
20     (ulcorner texto+(0,eb))--
21     (ulcorner texto+(0.375cm,0)+(-eb,eb))--
22     (ulcorner texto+(0.375cm,0))--
23     (ulcorner texto+(0.625cm,0))--
24     (ulcorner texto+(0.625cm,0)+(eb,eb))--
25     (urcorner texto+(0,eb))--
26     (urcorner texto+(eb,0))--
27     (lrcorner texto+(eb,0))--
28     (lrcorner texto+(0,-eb))--
29     (llcorner texto+(1.125cm,0)+(eb,-eb))--
30     (llcorner texto+(1.125cm,0)+(0,-2eb))--
31     (llcorner texto+(0.875cm,0)+(0,-2eb))--
32     (llcorner texto+(0.875cm,0)+(-eb,-eb))--
33     (llcorner texto+(0.5cm,-eb));
34     if bloctest=true:
35       draw texto;% withcolor white;
36     fi;
37     );
38   TEXT
39 enddef;
40
41 vardef AffichageCN=
42   path cadre;
43   cadre=(llcorner texto+(-eb,0))--(llcorner texto+(0,-eb))--
44     (llcorner texto+(0.375cm,0)+(-eb,-eb))--
45     (llcorner texto+(0.375cm,0)+(0,-2eb))--
46     (llcorner texto+(0.625cm,0)+(0,-2eb))--
47     (llcorner texto+(0.625cm,0)+(eb,-eb))--
48     (lrcorner texto+(0,-eb))--(lrcorner texto+(eb,0))--(urcorner texto+(eb,0))--(urcorner texto+(0,eb))--
49     (ulcorner texto+(0.625cm,0)+(eb,eb))--
50     (ulcorner texto+(0.625cm,0))--
51     (ulcorner texto+(0.375cm,0))--
52     (ulcorner texto+(0.375cm,0)+(-eb,eb))--
53     (ulcorner texto+(0,eb))--(ulcorner texto+(-eb,0))--cycle;
54   picture TEXT;
55   TEXT=image(
56       fill cadre withcolor if unknown colControle : LightOrange else : colControle fi;
57     draw texto;
58     draw cadre;
59     );
60   TEXT
61 enddef;
62
63 vardef AffichageStop=
64   path cadre;
65   cadre=(llcorner texto+(-eb,0))--(llcorner texto+(0,-eb))--
66 %    (llcorner texto+(0.375cm,0)+(-eb,-eb))--
67 %    (llcorner texto+(0.375cm,0)+(0,-2eb))--
68 %    (llcorner texto+(0.625cm,0)+(0,-2eb))--
69 %    (llcorner texto+(0.625cm,0)+(eb,-eb))--
70     (lrcorner texto+(0,-eb))--(lrcorner texto+(eb,0))--(urcorner texto+(eb,0))--(urcorner texto+(0,eb))--
71     (ulcorner texto+(0.625cm,0)+(eb,eb))--
72     (ulcorner texto+(0.625cm,0))--
73     (ulcorner texto+(0.375cm,0))--
74     (ulcorner texto+(0.375cm,0)+(-eb,eb))--
75     (ulcorner texto+(0,eb))--(ulcorner texto+(-eb,0))--cycle;
76   picture TEXT;
77   TEXT=image(
78       fill cadre withcolor if unknown colControle : LightOrange else : colControle fi;
79     draw texto;
80     draw cadre;
81     );
82   TEXT
83 enddef;
84
85 vardef AffichageEC=
86   path cadre;
87   cadre=(llcorner texto+(-eb,0))--(llcorner texto+(0,-eb))--
88     (llcorner texto+(0.375cm,0)+(-eb,-eb))--
89     (llcorner texto+(0.375cm,0)+(0,-2eb))--
90     (llcorner texto+(0.625cm,0)+(0,-2eb))--
91     (llcorner texto+(0.625cm,0)+(eb,-eb))--
92     (lrcorner texto+(0,-eb))--(lrcorner texto+(eb,0))--
93     (urcorner texto+(eb,0))--(urcorner texto+(0,eb))--
94     1/2[ulcorner texto+(-eb,eb),urcorner texto+(eb,eb)]{dir150}..{dir-150}(ulcorner texto+(-eb,eb))--cycle;
95   picture TEXT;
96   TEXT=image(
97     fill cadre withcolor if unknown colControle : LightOrange else : colControle fi;
98     draw texto;
99     draw cadre;
100     );
101   TEXT
102 enddef;
103
104 pair coindebutbloc[];
105
106 vardef Repeter[](expr tps)=
107   save $;
108   picture $,texto;
109   bloctest:=true;
110   texto=image(
111     label(LATEX("\bfseries\color{white}répéter "&if numeric tps:"\colorbox{white}{\textcolor{black}{"&decimal(tps)&"}}" else: tps fi&" fois"),(0,0));
112   );
113 $=AffiControle shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffiControle);
114 _coinprec:=(llcorner $)+(0.5cm,0);
115 _coinprec:=_coinprec+(0,eb);
116 coindebutbloc@:=(llcorner $)+(0,eb);
117  $
118 enddef;
119
120 vardef RepeterI[]=
121   save $;
122   picture $,texto;
123   bloctest:=true;
124   texto=image(
125     label(LATEX("\bfseries\color{white}répéter indéfiniment"),(0,0));
126   );
127 $=AffiControle shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffiControle);
128 _coinprec:=(llcorner $)+(0.5cm,0);
129 _coinprec:=_coinprec+(0,eb);
130 coindebutbloc@:=(llcorner $)+(0,eb);
131  $
132 enddef;
133
134 vardef RepeterJ[](expr test)=
135   save $;
136   picture $,texto;
137   bloctest:=true;
138   texto=image(
139     label(LATEX("\bfseries\color{white}répéter jusqu'à "&test&""),(0,0));
140   );
141 $=AffiControle shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffiControle);
142 _coinprec:=(llcorner $)+(0.5cm,0);
143 _coinprec:=_coinprec+(0,eb);
144 coindebutbloc@:=(llcorner $)+(0,eb);
145  $
146 enddef;
147
148 vardef FinBlocRepeter[](expr tps)=
149   save $;
150   picture $,texto;
151   _coinprec:=_coinprec-(0.5cm,0);
152   drawoptions();
153   texto=image(
154       labeloffset:=0;
155     label.lrt(LATEX("\bfseries\color{white}répéter \colorbox{white}{\textcolor{white}{"&decimal(tps)&"}} fois"),if unknown _coinprec: (0,0) else:_coinprec fi);
156   labeloffset:=3;
157   );
158 path cadre;
159 cadre=(coindebutbloc@+(0.125,0))--(coindebutbloc@+(0.5cm+eb,0))--
160   (coindebutbloc@+(0.5cm,-eb))--
161   (ulcorner texto+(0.5cm,eb))--
162   (ulcorner texto+(0.5cm+eb,0))--
163   (urcorner texto+(-eb,0))--
164   (urcorner texto+(0,-eb))--
165   (lrcorner texto+(0,eb))--
166   (lrcorner texto+(-eb,0))--
167   (llcorner texto+(0.125+0.625cm,0)+(2eb,0))--
168   (llcorner texto+(0.125+0.625cm,0)+(eb,-eb))--
169   (llcorner texto+(0.125+0.375cm,0)+(eb,-eb))--
170   (llcorner texto+(0.125+0.375cm,0))--
171   (llcorner texto+(0.125,0)+(eb,0))--
172   (llcorner texto+(0.125,0)+(0,eb))--  
173   cycle;
174 bloctest:=false;
175 $=image(
176     fill cadre withcolor if unknown colControle : LightOrange else : colControle fi;
177   draw cadre withcolor if unknown colControle : LightOrange else : colControle fi;
178   label.lft(LATEX("$\color{white}\raisebox{-0.5pt}{\hbox{$\bm{\_\!\_}$}}\!\!\!\!\bm{\uparrow}$"),0.5[lrcorner texto,urcorner texto]);
179   draw (coindebutbloc@+(0.5cm+eb,0))--
180     (coindebutbloc@+(0.5cm,-eb))--
181     (ulcorner texto+(0.5cm,eb))--
182     (ulcorner texto+(0.5cm+eb,0))--
183     (urcorner texto+(-eb,0))--
184     (urcorner texto+(0,-eb))--
185     (lrcorner texto+(0,eb))--
186     (lrcorner texto+(-eb,0))--
187     (llcorner texto+(0.125+0.625cm,0)+(2eb,0))--
188     (llcorner texto+(0.125+0.625cm,0)+(eb,-eb))--
189     (llcorner texto+(0.125+0.375cm,0)+(eb,-eb))--
190     (llcorner texto+(0.125+0.375cm,0))--
191     (llcorner texto+(0.125,0)+(eb,0))--
192     (llcorner texto+(0.125,0)+(0,eb))--
193     (coindebutbloc@+(0.125,0));
194   );
195 _coinprec:=(llcorner $);
196 _coinprec:=_coinprec+(0,eb);
197 $
198 enddef;
199
200 vardef FinBlocRepeterI[](expr tps)=
201   save $;
202   picture $,texto;
203   _coinprec:=_coinprec-(0.5cm,0);
204   drawoptions();
205   texto=image(
206       labeloffset:=0;
207     label.lrt(LATEX("\bfseries\color{white}répéter \colorbox{white}{\textcolor{white}{"&decimal(tps)&"}} fois"),if unknown _coinprec: (0,0) else:_coinprec fi);
208   labeloffset:=3;
209   );
210 path cadre;
211 cadre=(llcorner texto+(0.125,0)+(0,eb))--(coindebutbloc@+(0.125,0))--(coindebutbloc@+(0.5cm+eb,0))--
212   (coindebutbloc@+(0.5cm,-eb))--
213   (ulcorner texto+(0.5cm,eb))--
214   (ulcorner texto+(0.5cm+eb,0))--
215   (urcorner texto+(-eb,0))--
216   (urcorner texto+(0,-eb))--
217   (lrcorner texto+(0,eb))--
218   (lrcorner texto+(-eb,0))--
219   (llcorner texto+(0.125,0)+(eb,0))--
220   cycle;
221 bloctest:=false;
222 $=image(
223     fill cadre withcolor if unknown colControle : LightOrange else : colControle fi;
224   draw cadre withcolor if unknown colControle : LightOrange else : colControle fi;
225   label.lft(LATEX("$\color{white}\raisebox{-0.5pt}{\hbox{$\bm{\_\!\_}$}}\!\!\!\!\bm{\uparrow}$"),0.5[lrcorner texto,urcorner texto]);
226   draw (coindebutbloc@+(0.5cm+eb,0))--
227     (coindebutbloc@+(0.5cm,-eb))--
228     (ulcorner texto+(0.5cm,eb))--
229     (ulcorner texto+(0.5cm+eb,0))--
230     (urcorner texto+(-eb,0))--
231   (urcorner texto+(0,-eb))--
232   (lrcorner texto+(0,eb))--
233   (lrcorner texto+(-eb,0))--
234   (llcorner texto+(0.125,0)+(eb,0))--
235   (llcorner texto+(0.125,0)+(0,eb))--(coindebutbloc@+(0.125,0));
236   );
237 _coinprec:=(llcorner $);
238 _coinprec:=_coinprec+(0,eb);
239 $
240 enddef;
241
242 vardef Si[](expr tps)=
243   save $;
244   picture $,texto;
245   bloctest:=true;
246   texto=image(
247     label(LATEX("\bfseries\color{white}si "&tps&" alors"),(0,0));
248   );
249 $=AffiControle shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffiControle);
250 _coinprec:=(llcorner $)+(0.5cm,0);
251 _coinprec:=_coinprec+(0,eb);
252 coindebutbloc@:=(llcorner $)+(0,eb);
253  $
254 enddef;
255
256 vardef FinBlocSi[]=
257   save $;
258   picture $,texto;
259   _coinprec:=_coinprec-(0.5cm,0);
260   drawoptions();
261   texto=image(
262       labeloffset:=0;
263     label.lrt(LATEX("\bfseries\color{white}répéter \colorbox{white}{\textcolor{black}{titi=10}}"),if unknown _coinprec: (0,0) else:_coinprec fi);
264   labeloffset:=3;
265   );
266 path cadre;
267 cadre=(coindebutbloc@+(0.125,0))--(coindebutbloc@+(0.5cm+eb,0))--
268   (coindebutbloc@+(0.5cm,-eb))--
269   (ulcorner texto+(0.5cm,eb))--
270   (ulcorner texto+(0.5cm+eb,0))--
271   (urcorner texto+(-eb,0))--
272   (urcorner texto+(0,-eb))--
273   (lrcorner texto+(0,eb))--
274   (lrcorner texto+(-eb,0))--
275   (llcorner texto+(0.125+0.625cm,0)+(2eb,0))--
276   (llcorner texto+(0.125+0.625cm,0)+(eb,-eb))--
277   (llcorner texto+(0.125+0.375cm,0)+(eb,-eb))--
278   (llcorner texto+(0.125+0.375cm,0))--
279   (llcorner texto+(0.125,0)+(eb,0))--
280   (llcorner texto+(0.125,0)+(0,eb))--  
281   cycle;
282 bloctest:=false;
283 $=image(
284     fill cadre withcolor if unknown colControle : LightOrange else : colControle fi;
285   draw cadre withcolor if unknown colControle : LightOrange else : colControle fi;
286   draw (coindebutbloc@+(0.5cm+eb,0))--
287     (coindebutbloc@+(0.5cm,-eb))--
288     (ulcorner texto+(0.5cm,eb))--
289     (ulcorner texto+(0.5cm+eb,0))--
290     (urcorner texto+(-eb,0))--
291     (urcorner texto+(0,-eb))--
292     (lrcorner texto+(0,eb))--
293     (lrcorner texto+(-eb,0))--
294     (llcorner texto+(0.125+0.625cm,0)+(2eb,0))--
295     (llcorner texto+(0.125+0.625cm,0)+(eb,-eb))--
296     (llcorner texto+(0.125+0.375cm,0)+(eb,-eb))--
297     (llcorner texto+(0.125+0.375cm,0))--
298     (llcorner texto+(0.125,0)+(eb,0))--
299     (llcorner texto+(0.125,0)+(0,eb))--
300     (coindebutbloc@+(0.125,0));
301   );
302 _coinprec:=(llcorner $);
303 _coinprec:=_coinprec+(0,eb);
304 $
305 enddef;
306
307 vardef Sinon[]=
308   save $;
309   picture $,texto;
310   _coinprec:=_coinprec-(0.5cm,0);
311   drawoptions();
312   texto=image(
313       labeloffset:=0;
314     label.lrt(LATEX("\bfseries\color{white}\,sinon\phantom{\colorbox{white}{\textcolor{black}{\hbox to2cm{t}}}}"),if unknown _coinprec: (0,0) else:_coinprec fi);
315   labeloffset:=3;
316   );
317 path cadre;
318 cadre=(llcorner texto+(0.125,0))--(coindebutbloc@+(0.125,0))--
319   (coindebutbloc@+(0.5cm,0)+(eb,0))--
320   (coindebutbloc@+(0.5cm,0)+(0,-eb))--
321   (ulcorner texto+(0.5cm,0)+(0,eb))--
322   (ulcorner texto+(0.5cm,0)+(eb,0))--
323   (urcorner texto+(-eb,0))--
324   (urcorner texto+(0,-eb))--
325   (lrcorner texto+(0,eb))--
326   (lrcorner texto+(-eb,0))--
327   (llcorner texto+(0.125+1.125cm,0)+(2eb,0))--
328   (llcorner texto+(0.125+1.125cm,0)+(eb,-eb))--
329   (llcorner texto+(0.125+0.875cm,0)+(eb,-eb))--
330   (llcorner texto+(0.125+0.875cm,0))--  
331   cycle;
332 bloctest:=false;
333 $=image(
334     fill cadre withcolor if unknown colControle : LightOrange else : colControle fi;
335   draw cadre withcolor if unknown colControle : LightOrange else : colControle fi;
336   draw texto;
337   draw (coindebutbloc@+(0.5cm,0)+(eb,0))--
338     (coindebutbloc@+(0.5cm,0)+(0,-eb))--
339     (ulcorner texto+(0.5cm,0)+(0,eb))--
340     (ulcorner texto+(0.5cm,0)+(eb,0))--
341     (urcorner texto+(-eb,0))--
342     (urcorner texto+(0,-eb))--
343     (lrcorner texto+(0,eb))--
344     (lrcorner texto+(-eb,0))--
345     (llcorner texto+(0.125+1.125cm,0)+(2eb,0))--
346     (llcorner texto+(0.125+1.125cm,0)+(eb,-eb))--
347     (llcorner texto+(0.125+0.875cm,0)+(eb,-eb))--
348     (llcorner texto+(0.125+0.875cm,0))--
349     (llcorner texto+(eb+0.5cm,0));
350   draw (llcorner texto+(0.125,0))--(coindebutbloc@+(0.125,0));
351   );
352 _coinprec:=(llcorner $)+(0.5cm,0);
353 _coinprec:=_coinprec+(0,eb);
354 coindebutbloc[@]:=(llcorner $)+(0,eb+0.125);
355 $
356 enddef;
357
358 vardef Attendre(expr test)=
359   save $;
360   picture $,texto;
361   bloctest:=true;
362   texto=image(
363     label(LATEX("\bfseries\color{white}attendre "&if numeric test:"\colorbox{white}{\textcolor{black}{"&decimal(test)&"}}" else: test fi &" seconde(s)"),(0,0));
364   );
365 $=AffichageCN shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffichageCN);
366 _coinprec:=(llcorner $);
367 _coinprec:=_coinprec+(0,eb);
368  $
369 enddef;
370
371 vardef AttendreJ(expr test)=
372   save $;
373   picture $,texto;
374   bloctest:=true;
375   texto=image(
376     label(LATEX("\bfseries\color{white}attendre jusqu'à "&test&""),(0,0));
377   );
378 $=AffichageCN shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffichageCN);
379 _coinprec:=(llcorner $);
380 _coinprec:=_coinprec+(0,eb);
381  $
382 enddef;
383
384 vardef Stop(expr test)=
385   save $;
386   picture $,texto;
387   bloctest:=true;
388   texto=image(
389     label(LATEX("\bfseries\color{white}stop \colorbox{cDarkOrange}{\normalfont\textcolor{white}{"&test&" \tiny\textcolor{black}{$\blacktriangledown$}}}"),(0,0));
390   );
391 $=AffichageStop shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffichageStop);
392 _coinprec:=(llcorner $);
393 %_coinprec:=_coinprec+(0,eb);
394  $
395 enddef;
396
397 vardef CommencerClone=
398   save $;
399   picture $,texto;
400   %bloctest:=true;
401   texto=image(
402     label(LATEX("\bfseries\color{white}quand je commence comme un clone"),(0,0));
403   );
404 $=AffichageEC shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffichageEC);
405 _coinprec:=(llcorner $);
406 _coinprec:=_coinprec+(0,eb);
407  $
408 enddef;
409
410 vardef CreerClone(expr test)=
411   save $;
412   picture $,texto;
413   bloctest:=true;
414   texto=image(
415     label(LATEX("\bfseries\color{white}créer un clone de \colorbox{cDarkOrange}{\normalfont\textcolor{white}{"&test&" \tiny\textcolor{black}{$\blacktriangledown$}}}"),(0,0));
416   );
417 $=AffichageCN shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffichageCN);
418 _coinprec:=(llcorner $);
419 _coinprec:=_coinprec+(0,eb);
420  $
421 enddef;
422
423 vardef SupprimerClone=
424   save $;
425   picture $,texto;
426   bloctest:=true;
427   texto=image(
428     label(LATEX("\bfseries\color{white}supprimer ce clone"),(0,0));
429   );
430 $=AffichageCN shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffichageCN);
431 _coinprec:=(llcorner $);
432 _coinprec:=_coinprec+(0,eb);
433  $
434 enddef;

Licence Creative Commons Les fichiers de Syracuse sont mis à disposition (sauf mention contraire) selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.