Doodle Editor


Description

Vous avez sûrement déjà griffonner quelques dessins sur une feuille à carreaux, que ce soit en cours ou dans une réunion un peu longue...

Ce petit programme part de ce principe et permet de saisir rapidement un griffonnage (Doodle en anglais) afin d'en faire une image propre.

Pour cela j'introduis un langage de dessin où chaque action est représentée par une lettre, par exemple L (pour Left) va dessiner un trait à gauche sur un carré.

Le programme est composé d'un éditeur WYSIWYG qui permet d'interpréter le langage, détecter les erreurs, dessiner et colorier le dessin au fur et à mesure.


Il est également possible de créer l'image sans passer par l'éditeur, par exemple si la description de l'image est enregistrée dans un fichier à part.

public static void main(String[] args) throws IOException, ParseException {
    File src = new File("house.img.txt"), dst = new File("house.png");
    Doodle doodle = new Doodle(new Sheet(src), 50);
    ImageIO.write(doodle.getImage(), "png", dst);
}

Remarque : l'épaisseur d'un carré est toujours de 1 pixel, en revanche il est possible de faire varier la taille d'un carré d'autant de pixels que l'on veut.

Exemple :

AF
permet de faire une ligne ascendante A et une ligne en bas F (pour footer), on passe au carré suivant avec un ou plusieurs espaces,
AHR
pour une ligne ascendante A, une ligne en haut H (pour header) et une ligne à droite R (pour right),
FR
pour une ligne en bas et une ligne à droite.

Remarque : en zoomant au maximum sur le carré entouré en bleu on pourrait voir qu'il manque un pixel dans le coin en bas à droite, c'est lié au fait qu'en réalité une ligne à droite sur un carré se dessine à gauche sur le carré suivant, idem pour la ligne en bas qui se dessine en haut du carré du dessous.
Le pixel en bas à droite n'est donc pas dessiné car il appartient au carré en dessous et à droite et qu'on ne pourrait pas dessiner une ligne complète sans déborder. On peut compenser ce pixel avec l'instruction
X
qui permet de dessiner ce pixel manquant.

Gestion de la couleur :

Chaque instruction de tracé
ADHLRFX
prend par défaut la couleur courante que l'on peut changer avec
C
(color) suivi d'un code hexadécimal RGB (6 valeurs minuscules) ou RGBA (8 valeurs).

A C00ff00 D
va donc dessiner une ligne ascendante en noir (par défaut), puis on change la couleur en vert, et on dessine une ligne descendante.

Il est également possible de spécifier une couleur pour un tracé en particulier, tout en conservant la valeur par défaut pour les autres.

ADff0000L
va donc dessiner (sur le même carré) une ligne ascendante en noir (par défaut), une ligne descendante en rouge et une ligne à gauche en noir.

À cela on peut rajouter les quatre zones de coloriages
NSWE
, délimités par les deux diagonales qui fonctionnent sur le même principe avec une couleur par défaut
B
(pour background) et éventuellement des couleurs spécifiques par zones.

Exemple complet :

Sur un seul carré →
LRHFADNffff00W00ff00E0000ffSff0000X



Remarque : l'ordre des instructions pour un même carré n'a pas d'incidence sur le dessin, on aura toujours le coloriage du fond d'abord puis le tracé par dessus.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.