Krita part-time report

My full-time sponsored developing of Krita ended few months ago and I’m already working in my day job as software developer. So far it’s fun, I enjoy my new work place and colleges and basically I’m happy to work in the environment with people — that’s what I was missing about when working from home alone.

Silvio, the great Krita sponsor, is the man who decided to put Krita to the next level by sponsoring me and Dmitry working on Krita part-time. Big thanks to Silvio! I promised to blog about the progress, so here I go a little bit late as being busy with new work and life. I think part-time version worked fine so far. I managed to deliver 51 hours of work.

I started to fix the brush mask generators. I fixed few rendering bugs, usually some artifacts and I fixed little inconsistency with them. If you setup spikes to rectangle mask and change the ratio, you supposed to see the spikes in the mask. At least that is the behavior in GIMP and in Krita we did not computed the spikes for the rectangle brushes. Fixed. When I worked on this bug, I noticed that the quality of the brush mask in the curve mode is quite bad, especially when you rotate the mask. Oversampling helped. The curve mask works in that way that it samples the curve created by user. When you do oversampling, you take more samples from the curve. When the user wants circle with radius 10, I used to take 10 samples. Now with oversampling, I take 4x more, so 40 samples. I did some tests with it and 4x seems to be the right number of oversampling. Also GIMP uses this multiplier.

Using spikes in rectangle mask generator
Let’s spray some stars

Then I worked on the brush outline bug. I added new option to the Pixel brush called density which can be used to simulate chalk effect. Problem with density is that it creates complicated brush outlines. In Krita the brush outline is constructed from QPolygons inside QPainterPath. Pixel-sized holes causes, that the outline is constructed from a lot of small QPolygons. So far the fix is that when there is density used, the outline does not show the holes. This problem is quite big, if somebody creates brush with a huge amount of pixel-size holes, the outline will be rendered slow. Some more proper solution will be needed.

Then I decided to support Dmitry, who is also sponsored Krita developer, working part-time. He had a lot of bugs assigned before release and my code paths were quite release ready. So I investigated bugs with filters. I discovered that some filters in Krita are actually direct ports from GIMP and that means that they ignore colorspaces and work wrongly if you have e.g. RGB colorspace with 16-bit per channel or more. I managed to fix only blur filter with Cyrille Berger’s help and mentoring. We disabled other broken filters for the release.I did some bug triagging too.

Then I fixed some unit-tests which has to pass before the release. I fixed the autobrush unit test, that is crucial for Pixel Brush in Auto brush mode. And then I fixed benchmarks as they were crashing.I also fixed jpeg unit test, it failed with some version of JPEG library. Then I spent some time investigating the shape layer bug with scaling, but too much new code area to me. Sven managed to fixed it much more faster then me. I was also doing some icon work, I fixed bug with the select similar color icon.

That’s it. Next report after I deliver at least 50 hours Thanks to the Krita developers and community for the support!