Ah zut! Un problème que j’avais remarqué quelque temps auparavant vient me mordre au mollet avec le “undo” grrrrr. Il s’agit d’un pépin dans mon code qui ne peut lire correctement un fichier image en mode noir et blanc! Bizarre peut-on penser? Pas tant que ça.

Les images couleur sont sauvegardées en utilisant 4 bytes, un par canal couleur (bleu, vert, rouge) et un pour le degré de transparence, du moins c’est ce que je peux utiliser en récupérant la lecture d’un fichier JPG au moyen de la librairie ImageMagick . En contrepartie, les images en noir et blanc n’utilisent que 3 bytes. Dans la version précédente de Paintual (celle qui utilisait WinForms pour modèle d’interface utilisateur) j’avais déjà réglé le problème mais en créant une nouvelle version pour WPF, je n’ai importé que des segments de code, au fur et à mesure des besoins… résultat: à nouveau le problème de lecture/conversion.

Et comment ce problème peut-il être relié au “undo”? Parce que je sauvegarde l’image sur disque à chaque changement. En revenant en arrière d’une étape, je recharge l’image précédente et paf! L’image est chargée en mémoire et présentée à l’écran mais on ne voit rien.

Je dis tout ça et je n’ai pas été réellement vérifier dans le code, d’autres projets me tiennent assez occupé pour l’instant, c’est l’intuition que j’ai en observant les “symptômes” de mon application.

La suite bientôt. Entre temps, petite vidéo où on peut voir la nouvelle fonctionnalité fonctionner à moitié (parce que finalement, les erreurs c’est drôle et c’est souvent inspirant).

* * *

Ah damn! A problem that I noticed some time ago comes to bite me back with the “undo” grrrrr. This is a glitch in my code that can not correctly decode an image file in black and white! Bizarre? Not that much.

Color images are saved using 4 bytes, one per color channel (blue, green, red) and one for the level of transparency, at least that’s what I can use from a JPG or PNG file using the ImageMagick library. In return, the black and white images use only 3 bytes. In the previous version of Paintual (the one that used WinForms for UI model) I had already fixed the problem but by creating a new version for WPF, I only imported segments of code as needed resulting in, again, the read/convert problem.

And how can this be related to the “undo”? Because I save the image on disk with each edit. To go back one step, I reload the previous image and pow! The image is loaded into memory and, if not decoded properly, nothing is displayed (although the image ‘space’ is there as we can draw over it).

I say all this and I have not really been checking in the code, other projects keep me busy enough for now; it is by intuition that I have come up to this conclusion, observing the “symptoms” of my application.

More to come soon. In the meantime, a little video where you can see the new half-feature (because in the end mistakes are funny and it’s often inspiring).