vardef AffiControle= path cadre; cadre=(llcorner texto+(-eb,-eb))--%(llcorner texto+(0,-eb))-- (llcorner texto+(0.875cm,0)+(-eb,-eb))-- (llcorner texto+(0.875cm,0)+(0,-2eb))-- (llcorner texto+(1.125cm,0)+(0,-2eb))-- (llcorner texto+(1.125cm,0)+(eb,-eb))-- (lrcorner texto+(0,-eb))--(lrcorner texto+(eb,0))--(urcorner texto+(eb,0))--(urcorner texto+(0,eb))-- (ulcorner texto+(0.625cm,0)+(eb,eb))-- (ulcorner texto+(0.625cm,0))-- (ulcorner texto+(0.375cm,0))-- (ulcorner texto+(0.375cm,0)+(-eb,eb))-- (ulcorner texto+(0,eb))--(ulcorner texto+(-eb,0))--cycle; picture TEXT; TEXT=image( fill cadre withcolor if unknown colControle : LightOrange else : colControle fi; draw cadre withcolor if unknown colControle : LightOrange else : colControle fi; draw (llcorner texto+(-eb,-eb))-- (ulcorner texto+(-eb,0))-- (ulcorner texto+(0,eb))-- (ulcorner texto+(0.375cm,0)+(-eb,eb))-- (ulcorner texto+(0.375cm,0))-- (ulcorner texto+(0.625cm,0))-- (ulcorner texto+(0.625cm,0)+(eb,eb))-- (urcorner texto+(0,eb))-- (urcorner texto+(eb,0))-- (lrcorner texto+(eb,0))-- (lrcorner texto+(0,-eb))-- (llcorner texto+(1.125cm,0)+(eb,-eb))-- (llcorner texto+(1.125cm,0)+(0,-2eb))-- (llcorner texto+(0.875cm,0)+(0,-2eb))-- (llcorner texto+(0.875cm,0)+(-eb,-eb))-- (llcorner texto+(0.5cm,-eb)); if bloctest=true: draw texto;% withcolor white; fi; ); TEXT enddef; vardef AffichageCN= path cadre; cadre=(llcorner texto+(-eb,0))--(llcorner texto+(0,-eb))-- (llcorner texto+(0.375cm,0)+(-eb,-eb))-- (llcorner texto+(0.375cm,0)+(0,-2eb))-- (llcorner texto+(0.625cm,0)+(0,-2eb))-- (llcorner texto+(0.625cm,0)+(eb,-eb))-- (lrcorner texto+(0,-eb))--(lrcorner texto+(eb,0))--(urcorner texto+(eb,0))--(urcorner texto+(0,eb))-- (ulcorner texto+(0.625cm,0)+(eb,eb))-- (ulcorner texto+(0.625cm,0))-- (ulcorner texto+(0.375cm,0))-- (ulcorner texto+(0.375cm,0)+(-eb,eb))-- (ulcorner texto+(0,eb))--(ulcorner texto+(-eb,0))--cycle; picture TEXT; TEXT=image( fill cadre withcolor if unknown colControle : LightOrange else : colControle fi; draw texto; draw cadre; ); TEXT enddef; vardef AffichageStop= path cadre; cadre=(llcorner texto+(-eb,0))--(llcorner texto+(0,-eb))-- % (llcorner texto+(0.375cm,0)+(-eb,-eb))-- % (llcorner texto+(0.375cm,0)+(0,-2eb))-- % (llcorner texto+(0.625cm,0)+(0,-2eb))-- % (llcorner texto+(0.625cm,0)+(eb,-eb))-- (lrcorner texto+(0,-eb))--(lrcorner texto+(eb,0))--(urcorner texto+(eb,0))--(urcorner texto+(0,eb))-- (ulcorner texto+(0.625cm,0)+(eb,eb))-- (ulcorner texto+(0.625cm,0))-- (ulcorner texto+(0.375cm,0))-- (ulcorner texto+(0.375cm,0)+(-eb,eb))-- (ulcorner texto+(0,eb))--(ulcorner texto+(-eb,0))--cycle; picture TEXT; TEXT=image( fill cadre withcolor if unknown colControle : LightOrange else : colControle fi; draw texto; draw cadre; ); TEXT enddef; vardef AffichageEC= path cadre; cadre=(llcorner texto+(-eb,0))--(llcorner texto+(0,-eb))-- (llcorner texto+(0.375cm,0)+(-eb,-eb))-- (llcorner texto+(0.375cm,0)+(0,-2eb))-- (llcorner texto+(0.625cm,0)+(0,-2eb))-- (llcorner texto+(0.625cm,0)+(eb,-eb))-- (lrcorner texto+(0,-eb))--(lrcorner texto+(eb,0))-- (urcorner texto+(eb,0))--(urcorner texto+(0,eb))-- 1/2[ulcorner texto+(-eb,eb),urcorner texto+(eb,eb)]{dir150}..{dir-150}(ulcorner texto+(-eb,eb))--cycle; picture TEXT; TEXT=image( fill cadre withcolor if unknown colControle : LightOrange else : colControle fi; draw texto; draw cadre; ); TEXT enddef; pair coindebutbloc[]; vardef Repeter[](expr tps)= save $; picture $,texto; bloctest:=true; texto=image( label(LATEX("\bfseries\color{white}répéter "&if numeric tps:"\colorbox{white}{\textcolor{black}{"&decimal(tps)&"}}" else: tps fi&" fois"),(0,0)); ); $=AffiControle shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffiControle); _coinprec:=(llcorner $)+(0.5cm,0); _coinprec:=_coinprec+(0,eb); coindebutbloc@:=(llcorner $)+(0,eb); $ enddef; vardef RepeterI[]= save $; picture $,texto; bloctest:=true; texto=image( label(LATEX("\bfseries\color{white}répéter indéfiniment"),(0,0)); ); $=AffiControle shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffiControle); _coinprec:=(llcorner $)+(0.5cm,0); _coinprec:=_coinprec+(0,eb); coindebutbloc@:=(llcorner $)+(0,eb); $ enddef; vardef RepeterJ[](expr test)= save $; picture $,texto; bloctest:=true; texto=image( label(LATEX("\bfseries\color{white}répéter jusqu'à "&test&""),(0,0)); ); $=AffiControle shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffiControle); _coinprec:=(llcorner $)+(0.5cm,0); _coinprec:=_coinprec+(0,eb); coindebutbloc@:=(llcorner $)+(0,eb); $ enddef; vardef FinBlocRepeter[](expr tps)= save $; picture $,texto; _coinprec:=_coinprec-(0.5cm,0); drawoptions(); texto=image( labeloffset:=0; label.lrt(LATEX("\bfseries\color{white}répéter \colorbox{white}{\textcolor{white}{"&decimal(tps)&"}} fois"),if unknown _coinprec: (0,0) else:_coinprec fi); labeloffset:=3; ); path cadre; cadre=(coindebutbloc@+(0.125,0.125))-- (coindebutbloc@+(0.0625+0.5cm+eb,0.125))-- (coindebutbloc@+(0.5cm,-eb))-- (ulcorner texto+(0.5cm,eb))-- (ulcorner texto+(0.5cm+eb,0))-- (urcorner texto+(-eb,0))-- (urcorner texto+(0,-eb))-- (lrcorner texto+(0,eb))-- (lrcorner texto+(-eb,0))-- (llcorner texto+(0.125+0.625cm,0)+(2eb,0))-- (llcorner texto+(0.125+0.625cm,0)+(eb,-eb))-- (llcorner texto+(0.125+0.375cm,0)+(eb,-eb))-- (llcorner texto+(0.125+0.375cm,0))-- (llcorner texto+(0.125,0)+(eb,0))-- (llcorner texto+(0.125,0)+(0,eb))-- cycle; bloctest:=false; $=image( fill cadre withcolor if unknown colControle : LightOrange else : colControle fi; draw cadre withcolor if unknown colControle : LightOrange else : colControle fi; label.lft(LATEX("$\color{white}\raisebox{-0.5pt}{\hbox{$\bm{\_\!\_}$}}\!\!\!\!\bm{\uparrow}$"),0.5[lrcorner texto,urcorner texto]); draw (coindebutbloc@+(0.125+0.5cm+eb,0.1875))-- (coindebutbloc@+(0.5cm,-eb))-- (ulcorner texto+(0.5cm,eb))-- (ulcorner texto+(0.5cm+eb,0))-- (urcorner texto+(-eb,0))-- (urcorner texto+(0,-eb))-- (lrcorner texto+(0,eb))-- (lrcorner texto+(-eb,0))-- (llcorner texto+(0.125+0.625cm,0)+(2eb,0))-- (llcorner texto+(0.125+0.625cm,0)+(eb,-eb))-- (llcorner texto+(0.125+0.375cm,0)+(eb,-eb))-- (llcorner texto+(0.125+0.375cm,0))-- (llcorner texto+(0.125,0)+(eb,0))-- (llcorner texto+(0.125,0)+(0,eb))-- (coindebutbloc@+(0.125,0.25)); ); _coinprec:=(llcorner $); _coinprec:=_coinprec+(0,eb); $ enddef; vardef FinBlocRepeterI[](expr tps)= save $; picture $,texto; _coinprec:=_coinprec-(0.5cm,0); drawoptions(); texto=image( labeloffset:=0; label.lrt(LATEX("\bfseries\color{white}répéter \colorbox{white}{\textcolor{white}{"&decimal(tps)&"}} fois"),if unknown _coinprec: (0,0) else:_coinprec fi); labeloffset:=3; ); path cadre; cadre=(coindebutbloc@+(0.125,0.125))-- (coindebutbloc@+(0.0625+0.5cm+eb,0.125))-- (coindebutbloc@+(0.5cm,-eb))-- (ulcorner texto+(0.5cm,eb))-- (ulcorner texto+(0.5cm+eb,0))-- (urcorner texto+(-eb,0))-- (urcorner texto+(0,-eb))-- (lrcorner texto+(0,eb))-- (lrcorner texto+(-eb,0))-- (llcorner texto+(0.125,0)+(eb,0))-- (llcorner texto+(0.125,0)+(0,eb))-- cycle; bloctest:=false; $=image( fill cadre withcolor if unknown colControle : LightOrange else : colControle fi; draw cadre withcolor if unknown colControle : LightOrange else : colControle fi; label.lft(LATEX("$\color{white}\raisebox{-0.5pt}{\hbox{$\bm{\_\!\_}$}}\!\!\!\!\bm{\uparrow}$"),0.5[lrcorner texto,urcorner texto]); draw (coindebutbloc@+(0.125+0.5cm+eb,0.1875))-- (coindebutbloc@+(0.5cm,-eb))-- (ulcorner texto+(0.5cm,eb))-- (ulcorner texto+(0.5cm+eb,0))-- (urcorner texto+(-eb,0))-- (urcorner texto+(0,-eb))-- (lrcorner texto+(0,eb))-- (lrcorner texto+(-eb,0))-- (llcorner texto+(0.125,0)+(eb,0))-- (llcorner texto+(0.125,0)+(0,eb))-- (coindebutbloc@+(0.125,0.25)); ); _coinprec:=(llcorner $); _coinprec:=_coinprec+(0,eb); $ enddef; vardef Si[](expr tps)= save $; picture $,texto; bloctest:=true; texto=image( label(LATEX("\bfseries\color{white}si "&tps&" alors"),(0,0)); ); $=AffiControle shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffiControle); _coinprec:=(llcorner $)+(0.5cm,0); _coinprec:=_coinprec+(0,eb); coindebutbloc@:=(llcorner $)+(0,eb); $ enddef; vardef FinBlocSi[]= save $; picture $,texto; _coinprec:=_coinprec-(0.5cm,0); drawoptions(); texto=image( labeloffset:=0; label.lrt(LATEX("\bfseries\color{white}répéter \colorbox{white}{\textcolor{black}{titi=10}}"),if unknown _coinprec: (0,0) else:_coinprec fi); labeloffset:=3; ); path cadre; cadre=(coindebutbloc@+(0.125,0.125))-- (coindebutbloc@+(0.0625+0.5cm+eb,0.125))-- (coindebutbloc@+(0.5cm,-eb))-- (ulcorner texto+(0.5cm,eb))-- (ulcorner texto+(0.5cm+eb,0))-- (urcorner texto+(-eb,0))-- (urcorner texto+(0,-eb))-- (lrcorner texto+(0,eb))-- (lrcorner texto+(-eb,0))-- (llcorner texto+(0.125+0.625cm,0)+(2eb,0))-- (llcorner texto+(0.125+0.625cm,0)+(eb,-eb))-- (llcorner texto+(0.125+0.375cm,0)+(eb,-eb))-- (llcorner texto+(0.125+0.375cm,0))-- (llcorner texto+(0.125,0)+(eb,0))-- (llcorner texto+(0.125,0)+(0,eb))-- cycle; bloctest:=false; $=image( fill cadre withcolor if unknown colControle : LightOrange else : colControle fi; draw cadre withcolor if unknown colControle : LightOrange else : colControle fi; draw (coindebutbloc@+(0.125+0.5cm+eb,0.1875))-- (coindebutbloc@+(0.5cm,-eb))-- (ulcorner texto+(0.5cm,eb))-- (ulcorner texto+(0.5cm+eb,0))-- (urcorner texto+(-eb,0))-- (urcorner texto+(0,-eb))-- (lrcorner texto+(0,eb))-- (lrcorner texto+(-eb,0))-- (llcorner texto+(0.125+0.625cm,0)+(2eb,0))-- (llcorner texto+(0.125+0.625cm,0)+(eb,-eb))-- (llcorner texto+(0.125+0.375cm,0)+(eb,-eb))-- (llcorner texto+(0.125+0.375cm,0))-- (llcorner texto+(0.125,0)+(eb,0))-- (llcorner texto+(0.125,0)+(0,eb))-- (coindebutbloc@+(0.125,0.25)); ); _coinprec:=(llcorner $); _coinprec:=_coinprec+(0,eb); $ enddef; vardef Sinon[]= save $; picture $,texto; _coinprec:=_coinprec-(0.5cm,0); drawoptions(); texto=image( labeloffset:=0; label.lrt(LATEX("\bfseries\color{white}\,sinon\phantom{\colorbox{white}{\textcolor{black}{\hbox to2cm{t}}}}"),if unknown _coinprec: (0,0) else:_coinprec fi); labeloffset:=3; ); path cadre; cadre=(llcorner texto+(0.125,0))-- (coindebutbloc@+(0.125,0.125))-- (coindebutbloc@+(0.0625+0.5cm,0)+(eb,0.125))-- (coindebutbloc@+(0.5cm,0)+(0,-eb))-- (ulcorner texto+(0.5cm,0)+(0,eb))-- (ulcorner texto+(0.5cm,0)+(eb,0))-- (urcorner texto+(-eb,0))-- (urcorner texto+(0,-eb))-- (lrcorner texto+(0,eb))-- (lrcorner texto+(-eb,0))-- (llcorner texto+(0.125+1.125cm,0)+(2eb,0))-- (llcorner texto+(0.125+1.125cm,0)+(eb,-eb))-- (llcorner texto+(0.125+0.875cm,0)+(eb,-eb))-- (llcorner texto+(0.125+0.875cm,0))-- cycle; bloctest:=false; $=image( fill cadre withcolor if unknown colControle : LightOrange else : colControle fi; draw cadre withcolor if unknown colControle : LightOrange else : colControle fi; draw texto; draw (coindebutbloc@+(0.5cm,0)+(eb,0))-- (coindebutbloc@+(0.5cm,0)+(0,-eb))-- (ulcorner texto+(0.5cm,0)+(0,eb))-- (ulcorner texto+(0.5cm,0)+(eb,0))-- (urcorner texto+(-eb,0))-- (urcorner texto+(0,-eb))-- (lrcorner texto+(0,eb))-- (lrcorner texto+(-eb,0))-- (llcorner texto+(0.125+1.125cm,0)+(2eb,0))-- (llcorner texto+(0.125+1.125cm,0)+(eb,-eb))-- (llcorner texto+(0.125+0.875cm,0)+(eb,-eb))-- (llcorner texto+(0.125+0.875cm,0))-- (llcorner texto+(eb+0.5cm,0)); draw (llcorner texto+(0.125,0))--(coindebutbloc@+(0.125,0.125)); ); _coinprec:=(llcorner $)+(0.5cm,0); _coinprec:=_coinprec+(0,eb); coindebutbloc[@]:=(llcorner $)+(0,eb+0.125); $ enddef; vardef Attendre(expr test)= save $; picture $,texto; bloctest:=true; texto=image( label(LATEX("\bfseries\color{white}attendre "&if numeric test:"\colorbox{white}{\textcolor{black}{"&decimal(test)&"}}" else: test fi &" seconde(s)"),(0,0)); ); $=AffichageCN shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffichageCN); _coinprec:=(llcorner $); _coinprec:=_coinprec+(0,eb); $ enddef; vardef AttendreJ(expr test)= save $; picture $,texto; bloctest:=true; texto=image( label(LATEX("\bfseries\color{white}attendre jusqu'à "&test&""),(0,0)); ); $=AffichageCN shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffichageCN); _coinprec:=(llcorner $); _coinprec:=_coinprec+(0,eb); $ enddef; vardef Stop(expr test)= save $; picture $,texto; bloctest:=true; texto=image( label(LATEX("\bfseries\color{white}stop \colorbox{cDarkOrange}{\normalfont\textcolor{white}{"&test&" \tiny\textcolor{black}{$\blacktriangledown$}}}"),(0,0)); ); $=AffichageStop shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffichageStop); _coinprec:=(llcorner $); %_coinprec:=_coinprec+(0,eb); $ enddef; vardef CommencerClone= save $; picture $,texto; %bloctest:=true; texto=image( label(LATEX("\bfseries\color{white}quand je commence comme un clone"),(0,0)); ); $=AffichageEC shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffichageEC); _coinprec:=(llcorner $); _coinprec:=_coinprec+(0,eb); $ enddef; vardef CreerClone(expr test)= save $; picture $,texto; bloctest:=true; texto=image( label(LATEX("\bfseries\color{white}créer un clone de \colorbox{cDarkOrange}{\normalfont\textcolor{white}{"&test&" \tiny\textcolor{black}{$\blacktriangledown$}}}"),(0,0)); ); $=AffichageCN shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffichageCN); _coinprec:=(llcorner $); _coinprec:=_coinprec+(0,eb); $ enddef; vardef SupprimerClone= save $; picture $,texto; bloctest:=true; texto=image( label(LATEX("\bfseries\color{white}supprimer ce clone"),(0,0)); ); $=AffichageCN shifted (if unknown _coinprec:(0,0) else :_coinprec fi - ulcorner AffichageCN); _coinprec:=(llcorner $); _coinprec:=_coinprec+(0,eb); $ enddef;