let afficher_piece ?(x = 0) ?(y = 0) ~(p:Resolution.piece) ?(s = 50) ~(c:int) =
(** D'abord récupérer les couleurs qu'on dessinera. *) |
let back_svg = Graphics.background in
let pt_svg = Graphics.current_point () in
let (b,g,h,d) = (p.b, p.g, p.h, p.d) in
(** Ces 4 valeurs sont des entiers. *) |
let fbij = (choisi_echelle_pertinente c) in
(* let fbij = bijection_couleur_color (echelle_gris c) in*)
(* let fbij = bijection_couleur_color (echelle_rouge c) in*)
(* let fbij = bijection_couleur_color (echelle_vert c) in*)
(* let fbij = bijection_couleur_color (echelle_bleu c) in*)
(* let fbij = bijection_couleur_color (echelle_jaune c) in*)
(* let fbij = bijection_couleur_color (echelle_metal c) in*)
(* let fbij = bijection_couleur_color (echelle_violet c) in*)
(* let fbij = fbij_jolie_quatorze ~c:c in*)
(** Bijection : Resolution.couleur -> Graphics.color. *) |
let (bc,gc,hc,dc) = ((fbij b), (fbij g), (fbij h), (fbij d)) in
(** Les 4 couleurs de notre pièce. *) |
Graphics.set_color couleur_lignes;
(** Ensuite dessiner le rectangle. *) |
draw_rect x y (2*s) (2*s);
(** Ensuite remplir les 4 triangles. *) |
(* Celle du bas *)
fill_custom bc [| (x, y); (x+2*s, y); (x+s, y+s)|] ();
(* Celle de gauche *)
fill_custom gc [| (x, y); (x, y+2*s); (x+s, y+s)|] ();
(* Celle du haut *)
fill_custom hc [| (x+s, y+s); (x, y+2*s); (x+2*s, y+2*s)|] ();
(* Celle de droite *)
fill_custom dc [| (x+s, y+s); (x+2*s, y); (x+2*s, y+2*s)|] ();
(** Et il faut enfin écrire les nombres. *) |
Graphics.set_text_size 8;
Graphics.set_color couleur_lignes;
(* Celle du bas *)
draw_int ~x:(x + s) ~y:(y + 1*s/5) ~i:b;
Graphics.set_color couleur_lignes;
(* Celle de gauche *)
draw_int ~x:(x + 1*s/5) ~y:(y + s) ~i:g;
Graphics.set_color couleur_lignes;
(* Celle du haut *)
draw_int ~x:(x + s) ~y:(y + s + 3*s/5) ~i:h;
Graphics.set_color couleur_lignes;
(* Celle de droite *)
draw_int ~x:(x + s + 3*s/5) ~y:(y + s) ~i:d;
(** Ensuite dessiner les diagonales. *) |
Graphics.set_color couleur_lignes;
(* La première '/' *)
Graphics.moveto x y;
Graphics.lineto (x + 2*s) (y + 2*s);
(* line_custom couleur_lignes x y (x + 2*s) (y + 2*s);*)
(* La seconde '\' *)
Graphics.moveto x (y + 2*s);
Graphics.lineto (x + 2*s) y;
(* line_custom couleur_lignes x (y + 2*s) (x + 2*s) y;*)
(** On rétablit l'état courant. *) |
Graphics.set_color back_svg;
Graphics.moveto (fst pt_svg) (snd pt_svg)