Pipette

Quelque chose qui fonctionnait bien dans la version WinForms de Paintual c’était la pipette (le “color picker”). Sous WPF je n’ai pas trouvé d’équivalent, alors je vais adapter le code de Julian Ott (https://www.codeproject.com/Articles/35436/Adobe-Color-Picker-Clone) . Ça va me prendre un certain temps car il y a quelque chose que je ne comprends pas bien, notamment comment sont générées les variations des plages de couleurs en temps réel, et ça ne m’est pas très utile de simplement recopier le code cette fois-ci. Il y a des chances que j’apprenne ici quelque chose de bien utile.

Alors en jouant au jeu avant-après, on voit un peu le progrès.

En parallèle, je réintègre le générateur de bruit. Ça sera au moins une première chose qui fonctionnera dans la nouvelle version. Un peu déçu devant la complexité de la tâche qui consiste à programmer des effets de tracés, je peux entre temps penser à générer des plages d’effets, chose pour laquelle on peut tolérer un temps d’attente avant de voir un résultat alors qu’un tracé demande vraiment un rendu en temps réel.

* * *

 

Something that worked well in the WinForms version of Paintual was the color picker. Under WPF I did not find an equivalent, so I’m going to adapt Julian Ott’s code (https://www.codeproject.com/Articles/35436/Adobe-Color-Picker-Clone). It will take me a while because there are things I do not understand very well, especially how the variations of the color plane are generated in real time, and it would not be that useful for me to just copy the code this time. Chances are I’ll be learning something very useful.

So playing the game of before-and-after, we see a little progress (see pictures above).

In parallel, I reintegrate the noise generator. It will be at least a first thing that works in the new version. Being a little disappointed by the complexity of the task of programming live stroke effects, I set myself a simpler goal of creating planar effects, something for which one can tolerate a wait time before seeing the result onscreen, as opposed to stroke rendering which definitely needs to be in realtime.

Paintual avec WPF

WPF (Windows Presentation Foundation) est un ensemble graphique (de la spécification jusqu’aux éléments visuels tels les boutons, fenêtres, etc.) de Microsoft. Certains disent que c’est dépassé mais pour mon projet c’est un pas en avant. La documentation en ligne est assez abondante et je peux trouver plein de réponses à mes questions. Je suis passé de WinForm à WPF lorsque je me suis rendu compte que certaines fonctionnalités seront plus facile à implémenter pour mon application. J’en ai profité, comme je l’ai mentionné dans un post précédent, pour pouvoir utiliser C++ à même l’application, ceci dans le but d’augmenter la rapidité de traitement des effets de pinceaux et de surfaces.

Mais la transition n’est pas automatique. Plusieurs segments du vieux code ne fonctionne tout simplement pas avec WPF, entre autres changements dans les unités de mesure et du threading. Ça me permet de reprendre le vieux code, petit bout par petit bout, ne conservant que ce qui fonctionne bien et simplifier l’ensemble de traitement. Est-ce que c’est recommencer à zéro ? Non, puisque déjà je peux identifier des éléments plus performants et réduire la quantité de code.

J’utilisais déjà Paintual pour effectuer certains traitements dans ma création d’images. Le vieux code existe toujours, au besoin. Mais j’aime tellement ce qui est nouveau. C’est toujours la prochaine chose, la prochaine oeuvre qui me stimule.

On m’a demandé récemment si je pensais un jour rendre ce programme accessible à tous. J’y pense mais il y a vraiment beaucoup de travail avant que ça soit un tant soit peu utilisable par qui ne connaît pas tous les rouages internes.

* * *

WPF (Windows Presentation Foundation) is a graphical subsystem (from the specification to visual elements such as buttons, windows, etc.) from Microsoft. Some say it’s outdated but for my project it’s a step forward. The online documentation is quite abundant and I can find many answers to my questions. I went from WinForm to WPF when I realized that some features will be easier to implement for my application. I took advantage of this move, as I mentioned in a previous post, to be able to use C ++ within the application, in order to increase the speed of treatment of brush and surface effects.

But the transition is not automatic. Several portions of the old code simply do not work with WPF, among others there are changes in measurement units and threading management. It allows me to take the old code, bits by bits, keeping only what works well and simplify the treatment package. Is it starting from scratch? No, because I already can identify more performant elements and reduce the amount of code, discarding what’s awkward or redundant.

I was already using Paintual as an actual tool for some effects in my image creation. The old code still exists, if necessary. But I love what’s new. It’s always the next thing, the next project that I find stimulating.

I was recently asked if I thought I would ever make this program accessible to everyone. I do think about it but there is really a lot of work before it becomes bit usable by anyone who does not know all the inner workings.

At 0:27 the note on the video says “Less processing power is required from the CPU when it comes to refresh the drawing on screen”.

Au Brésil

À l’occasion je travaille sur des textes portant sur des sujets bien lointains de l’imagerie et de l’art. Je ne pouvais garder sous silence cette note de bas de page.

In : http://www.mac.usp.br/mac/conteudo/academico/publicacoes/anais/anais_IV_seminario.pdf page 153

Dans un même ordre d’idées, je vous invite à lire les trois cahiers “Archives et création : nouvelles perspectives sur l’archivistique”
cahier 1
cahier 2
cahier 3

* * *

From time to time I work on texts that have little or no connection to imaging and art. But I could not keep silent this footnote.

In : http://www.mac.usp.br/mac/conteudo/academico/publicacoes/anais/anais_IV_seminario.pdf page 153

In the same vein, if you can read French, I invite you to read the three notebooks “Archives et création : nouvelles perspectives sur l’archivistique”
cahier 1
cahier 2
cahier 3

cake23.de

Ce qu’on peut faire avec WebGL. Décidément, j’en ai des trucs à apprendre. Allez sur http://cake23.de et cliquer sur l’un ou l’autre des liens .html .  Dans la plupart des cas, suffit de déplacer la souris à l’écran pour voir des effets visuels très intéressants.

Auteur : https://twitter.com/flexi23

* * *

Things one can do with WebGL. There’s a lot of things I need to learn. Go to http://cake23.de and click on any .html link. In most cases, one only need to move the mouse around to see very interesting visual effects.

Author: https://twitter.com/flexi23

Qu’arrive-t-il à Paintual ?

Oui, ça fait un bout que j’en ai parlé. Confronté à toutes sortes de difficultés et mon obsession de la performance du rendu des tracés de dessin, j’ai un moment de découragement. Mais je veux tellement arriver à lui faire faire ce que je veux, je continue. L’aventure est bien plus compliquée que ce que j’avais pu anticiper. Donc, devant l’ordi, on ne s’ennuie pas, on ne chôme pas.

Hier j’ai exploré un lien que j’avais pris en note il y a deux semaines environ : https://www.codeproject.com/Articles/1001088/Dithering-an-Image-Using-the-Floyd-Steinberg-Algor ce qui mène à ce projet de code : https://github.com/cyotek/Dithering que j’ai téléchargé. Je l’ai exécuté et j’ai été séduit par la vitesse de rendu des images. J’ai peut-être ici une petite parcelle de réponse à mes questions. Ce projet contient cet autre : https://github.com/cyotek/Cyotek.Windows.Forms.ImageBox qui contient des éléments que j’aimerais réutiliser. Mais comme j’ai changé la plate-forme visuelle de WinForms vers XAML, me faudra recoder. Pourquoi j’ai changé ? Parce que, à mon goût XAML me permet de donner un look plus intéressant à l’application, notamment une meilleure fluidité des contrôles (boutons, textboxes, etc.), aspect qui sera absolument nécessaire pour la prochaine étape du projet… mais c’est si loin.

J’ai aussi inclus une connectivité entre le code C# et C++, passé à X64 et autres petits détails.

En parallèle, j’ai d’autres projets que je veux terminer : de trucs qui traînent depuis longtemps.

Alors même s’il ne se passe rien, il se passe quelque chose 🙂

* * *

Yes, it’s been a while since I talked about Paintual. Faced with all kinds of difficulties and my obsession with the rendering performance, specifically the lack thereof, of brush strokes rendering, I have a moment of discouragement. But I want so much to have this code do what I want that, nevertheless, I continue. The adventure is much more complicated than I had anticipated. So, in front of the computer, no one gets bored, no time is wasted.

Yesterday I explored a link I took note of about two weeks ago: https://www.codeproject.com/Articles/1001088/Dithering-an-Image-Using-the-Floyd-Steinberg-Algor which leads to this code project: https://github.com/cyotek/Dithering that I downloaded. I ran it and was impressed by the speed of the rendering of images. I may have here a bit of an answer to my questions. This project contains this other one: https://github.com/cyotek/Cyotek.Windows.Forms.ImageBox which contains elements that I would like to reuse. But as I changed the visual platform from WinForms to XAML, I will have to recode. Why did I change? Because, to my taste XAML allows me to give a more interesting look to the application, including a better more fluid control layout (buttons, text boxes, etc.), elements that will become absolutely necessary for the next stage of the project … but this seems right now so far ahead.

In Paintual I added code connectivity between C # and C ++, moved to exclusive use of X64 arch. and other small details.

Along the way, I have other projects that I want to finish: things that I have put aside for too long.

So even if nothing happens, a lot is happening 🙂