Title: Grafx2, logiciel de dessin à l'ancienne Category: creation Tags: Linux. graphisme, pixel-art, pl-fr Date: 2020-08-12 4:04 cover: assets/backgrounds/grafx2-logiciel-dessin-oldschool.jpg Ceux qui suivent ce blog depuis longtemps connaissent mon enthousiasme quand je parle d'Inkscape. C'est sûrement l'un de mes logiciels préféré. Et même pour un administrateur système c'est pour moi un outil précieux : **quoi de mieux qu'un beau schéma pour expliquer certains concepts** comme celui ci-dessous pour le fonctionnement d'une opération de chiffrement CBC. ![Fonctionnement du mode opératoire cryptographique CBC ]({attach}./images/CBC.svg) Mais pour un projet personnel, j'ai besoin de créer des images à l'ancienne. Entendez par là avec une palette de couleur limitée, dans une faible résolution et dans un esprit **pixel-art**. J'avais déjà entendu parlé de *Grafx2* mais ne l'avais jamais utilisé, j'ai donc saisi l'occasion pour le faire. ## Quoi que c'est? *Grafx2* ([site][l_site_grafx2], [gitlab][l_git_grafx2]) est un logiciel de dessin en mode matriciel s'inspirant de la série des *Deluxe Paint* sur *Amiga* (dont il a conservé certains raccourci claviers). Il fonctionne donc à l'ancienne suivant un modèle de couleurs indexée : une image peut avoir **256 couleurs au maximum**. Il dispose tout de même de fonctionnalités dite modernes comme la gestion des calques. Il enregistre les image au format [`gif`][l_gif] par défaut : celui-ci permet notamment d'enregistrer les information de calques. *Grafx2* peux d'ailleurs être utilisé pour créer des images animées. ## Installation Là rien de plus simple, il est disponible dans le dépôt Community d'Archlinux, je l'ai donc installé comme n'importe quel autre paquet : ```shell pacman -Suy grafx2 ``` Il est aussi disponible sur d'autres système : Debian, Ubuntu, FreeBSD etc. ## L'interface de base Pas de doute, lorsque l'on regarde l'interface du logiciel nous sommes bien en présences d'un logiciel "old school", ceux qui ont connu *Deluxe Paint* ou *Brillance* sont en terrain connu. ![Interface de base de Grafx2]({attach}./images/grafx_general.png) Comme on le voit sur la capture d'écran ci-dessus la fenêtre se découpe en trois parties : - à gauche une vue de l'image en vue 1:1 - à droite une vue zoomée de l'image, permettant de travailler précisément. Le facteur de zoom pouvant aller de x2 à x32. - en bas les outils, cette partie est elle-même séparée en 4 autres : - les outils de dessin à gauche : choix de la brosse, dessins à main levée, ligne droite, rectangle, cercle, polygones, sélection, enregistrer, ouvrir, effet de pinceau, effets de la sélection ... - la gestion de la palette de couleur à droite, Les deux couleurs correspondent à la couleur d'avant et d'arrière plan, le bouton `PAL` permet d'ouvrir une fenêtre modale pour la gestion de la palette - la gestion des calques en dessous avec les boutons pour fusionner, créer, supprimer, ou bouger le calque courant (en blanc) - enfin la barre d'état avec de gauche à droite un bouton pour cacher la barre d'outils à gauche, les coordonnées du pointeur / l'aide lors du survol d'un outil et le nom du fichier courant. ## Gestion de la souris Dans *Grafx2*, le clic droit et gauche permettent des choses différentes : - Vous avez remarqué qu'**il n'y a pas de gomme** : en mode dessin, le clic gauche permet de dessiner avec la couleur d'avant plan et le droit d'arrière plan. - Lors du dessin comportant plusieurs "points" (polygones, ensemble de lignes, sélection polygonale), le clic droit permet de "finir" la forme - Un clic droit sur un bouton de la barre d'outil permet de choisir une forme alternative (dessin à main levé continu, non continu par exemple) ou d'ouvrir une fenêtre modale pour les options ## Bouton avec deux actions Certains boutons de la barre d'outils comme la création de cercle, de rectangle ou de polygone sont partagés en deux sur la diagonale. C'est pour permette de choisit la version contour ou remplissage. ![Les boutons concernés par les doubles actions]({attach}./images/grafx_doubles_actions.png) C'est aussi le cas pour le bouton enregistrer / ouvrir ## Deux "Buffers" d'images *Grafx2* permet d'ouvrir seulement deux images simultanément, pour passer de l'une à l'autre il suffit d'utiliser la touche `tab` ou le bouton adapté de la barre d'outils ![Changer de buffers d'image via la barre d'outils]({attach}./images/grafx_buffers.png) Il est tout de même possible de lancer plusieurs instances de Grafx2 pour ouvrir plus d'images, mais les **deux buffers permettent surtout de copier des calques d'une image sur l'autre** : Et oui Grafx2 n'interagit pas avec le presse papier du système. Nous allons voir un **exemple d'utilisation de ces deux buffers**. ## Copier des éléments d'une image sur l'autre Les deux buffers se montrent utiles pour passer des éléments d'une image à l'autre mais un problème se posera souvent : **la palette de couleur**. Rapellez-vous, *Grafx2* fonctionne en mode couleurs indexées : on doit gérer une palette de 256 couleurs parmi 16 millions. ![Exemple de problème de palette]({attach}./images/grafx_mauvaise_palette.png) Dans l'exemple ci-dessus, l'image de destination a en plus été rognée. Nous allons voir comment utiliser les deux buffers pour copier un calque de l'une sur l'autre Attention : **la copie se fait du calque actif vers l'autre calque actif**. La création d'un calque vide sur l'image de destination est vivement conseillée. Les images utilisées dans l'exemple sont téléchargeable [ici][i_bx] pour l'hôtel de ville de Bordeaux et [ici][i_pascot] pour la salle du château Pascot. Ces deux images utilisent une palette de couleur très réduite (environ 20 par image), nous allons donc faire en sorte qu'elle ne se **croisent pas pour éviter les conflits**. ### Réduire la palette de couleur des images Commençons par ouvrir l'image de l'hôtel de ville de Bordeaux puis cliquons sur le bouton `PAL` ![Le bouton PAL sur la barre d'outils de grafx]({attach}./images/grafx_palette.png) La fenêtre modale de la palette s'ouvre, il suffit de cliquer avec le bouton gauche sur `reduce` puis `to unique` comme sur la capture ci-dessous puis de valider avec `OK`. ![Boite de dialogue palette dans Grafx2]({attach}./images/grafx_image_destination_reduction_pal.png) Profitons en pour créer un nouveau calque sur cette image et rendons le actif, celui-ci recevra les pixels de notre calque source. ![Grafx ajouter un calque]({attach}./images/grafx_ajout_calque.png) Il faut maintenant changer de buffer (via la touche `tab` ou la barre d'outil), ouvrir la seconde image et faire de même. ### Mapper la palette de la seconde image Une fois la palette réduite sur la seconde image, nous allons déplacer les couleurs pour qu'elles ne se croisent pas avec celles de l'autre buffer. Dans la boite de dialogue *Palette*, sélectionnons les couleurs utilisée comme sur la capture ci-dessous ![Sélection des couleurs dans Grafx]({attach}./images/grafx_image_source_sel_couleurs.png) Il suffit de cliquer sur la première couleur puis en maintenant d'aller sur la dernière couleur utilisée, ensuite il faut cliquer sur `X-Swap` puis sur l'endroit à partir duquel déplacer nos couleurs sélectionnées (ici la couleur 48). ![Déplacer la palette de couleur]({attach}./images/grafx_image_source_mov_couleurs.png) ### Copier le calque Pour copier les éléments, un clic droit sur le bouton buffer puis choisir `somes colors only`. Sur la fenêtre qui apparaît, il faut cliquer sur `clear` puis choisir les couleurs que nous voulons copier sur la palette de l'autre buffer comme sur la capture ci-dessous (un clic gauche sélectionne une couleur, un droit la dé-sélectionne) puis valider avec `OK`. ![Grafx, sélectionner les couleurs à copier]({attach}./images/grafx_image_source_copy_pal_1.png) ### Copier les pixels Il ne reste plus qu'a copier les pixels : ouvrons la boite de dialogue des buffers en faisant un clic droit puis choisissons `Pixels Only`. Mais lorsque nous retournons sur notre première image (`tab` ou clic gauche sur *buffer*) le fond de notre image source (le château Pascot) remplit l'image entièrement ![Grafx2 l'image copiée occulte tout le reste]({attach}./images/grafx_final_overlap.png) Pour définit la couleur de transparence utilisée par les calques, cliquons sur le boutons `layers` : ![Gestion des calques dans Grafx]({attach}./images/grafx_gestion_calque.png) Puis sur le bouton à droite de `Color`, la pipette apparait alors : il suffit de cliquer sur la couleur l'arrière plan de la salle du château. Le numéro de couleur apparaît à droite de `Color` ![Boite de dialogue calque dans Grafx2]({attach}./images/grafx_image_final_gestion_calque.png) Après validation notre calque est bien transparent, mais les deux bâtiments se chevauche. Nous pouvons utiliser la main pour déplacer le calque actif. ![Bouton déplacer le calque actif dans Grafx2]({attach}./images/grafx_deplacer_calque.png) Nous obtenons alors l'image suivante : ![Rendu final de nos manipulation avec Grafx2 ]({attach}./images/grafx_image_final.png) Attention: **Les deux images utilisées ici ont la même dimension**, si ce n'est pas le cas, il faut impérativement que l'image source (ici la salle) **soit égale ou plus grande** que celle de destination (l'hôtel de ville) ## En conclusion Travailler avec un logiciel comme *Grafx2* est déroutant, j'ai du sorti de ma zone de confort et du réapprendre à travailler avec des contraintes qui paraissent d'un autre temps. Mais c'est aussi très plaisant: Je me suis senti l'âme d'un démomaker des années 90 travaillant pixel par pixel. Les images données en exemple dans cet article sont sous licence Creative Commons BY-SA [l_site_grafx2]:http://grafx2.chez.com/ [l_git_grafx2]:https://gitlab.com/GrafX2/grafX2 [l_gif]:https://fr.wikipedia.org/wiki/Graphics_Interchange_Format [i_bx]:{attach}./images/mairie_bordeaux_pixelart.gif [i_pascot]:{attach}./images/chateau_pascot.gif *[CBC]:Enchaînement des blocs (Cipher Block Chaining)