Peinture symmétrique dans GIMP prête

Coucou tous!

Certains s’en rappellent sûrement, j’avais lancé un petit financement participatif pour la peinture symmétrique dans GIMP. Ça a pris le temps qu’il fallait, puisque j’avais pas mal d’autres priorités (comme notre projet de film d’animation ZeMarmot) et ma seule restriction temporelle était de sortir la fonctionnalité pour GIMP 2.10. Comme je savais que ce n’était pas pour tout de suite, je ne me pressais pas.
En outre, je voulais faire les choses bien. Je sais que certains se plaignaient que je ne divulgue pas publiquement le code de la démo originelle (celle utilisé pour promouvoir le financement). Mais voilà, c’était du code très “vite fait mal fait”, suffisant pour donner une idée de ce que je souhaitais faire, sûrement pas pour une base de code solide. Comme j’ai un peu de respect pour moi-même en tant que dév, je n’aurais jamais livré un tel code.

Mais maintenant cette base de code solide que je souhaitais est finalement arrivée à maturation, et je vous le livre! J’ai rapidement compris qu’il fallait plus que du code de “miroir” très spécifique. Je voulais quelque chose de générique. J’ai donc implémenté ce que j’appelle le “multi coup de pinceau”, bien Mitch n’a pas trouvé l’appellation bien nommée, donc on a renommé cela “symétrie” tout bêtement (ce que moi ne trouve pas très bien nommé, car je considère que c’est plus que juste de la symétrie, mais passons…). En gros, à partir d’un coup de peinture, une “symétrie” génère plusieurs coups, à des coordonnées différentes, mais aussi avec une transformation optionnelle du trait, grâce au nouveau moteur de traitement d’image GEGL de GIMP).
À partir de cette fonctionnalité de base, qui représente la grosse partie du code, j’ai implémenté la peinture en miroir, qui était le projet de base, mais aussi de la symétrie rotationnelle, et en tuile (une fois que la base de code est là, ajouter toute “symétrie” n’est qu’une question de minutes).
Enfin, comme une vidéo vaut tous les mots, voici l’état actuel du code:

Si vous êtes intéressé par ce code, ou souhaitez simplement tester, il est disponible dans une branche publique (qui sera bientôt intégrer à master, je l’espère du moins): https://git.gnome.org/browse/gimp/?h=multi-stroke
La prochaine étape d’une telle fonctionnalité pourrait être de proposer une interface applicative (API) pour permettre aux développeurs de plugin de simplement créer leurs propres symétries. Je ne pense pas que ce soit très compliqué à implementer.
Amusez-vous bien!