dmitryK's blog

Wednesday, April 9, 2014

Krita: Russian Translations Updated!

A picture by Georgiy Syptchenko
after a well-known series by David Revoy :)

Thanks to Georgiy Syptchenko from Krita Russian Community [0] Krita's translations into Russian got significantly improved recently!

We have already done three translation updates in Krita Lime repository and there are new changes yet to come!

So if you happen to speak Russian and want to help us with testing our translations, please follow this manual [1] and install updated translation packages!

[0] -
[1] -

Friday, March 28, 2014

Krita 2.9 (pre-alpha): Updated Fill Tool!


The Fill Tool was present in Krita since the ancient days. Its was first implemented back in 2004, and since then there were only minor changes to the algorithm it used. Now we are glad to announce a major update of it!

The old implementation used a, though a bit optimized, but still conventional, flood-fill algorithm that iterated through all the pixels recursively using a huge array as a map to store which pixels were visited and which not. It had two obvious drawbacks: it ate your memory (~100MiB for a map for an 10k x 10k image) and it was rather slow. The new algorithm is free from these disadvantages!

Scanline Flood Fill Algorithm

The new algorithm uses larger entities than just a single pixel. It uses "scanlines", which is effectively a chunk of a row of the image. The process of filling looks like a game. Several scanlines traveling throughout the image and checking or filling the pixel data. Each scanline can travel in either upward or downward direction. When two scanlines of opposite directions meet, they eat each other and both disappear! The process continues while there is at least one scanline alive :)

The rules for breeding and eating scanlines are a bit complicated, but they guarantee that not a single pixel will ever be visited twice! And that is without keeping any map of visited pixels, and therefore without oppressing your RAM! The experiments we conducted showed that to flood-fill an image of 10k by 10k pixels one would need only about 1MiB of memory! Just compare that to the 100MiB demanded by the conventional algo!

Real Performance Tests

The tests showed that the performance of the new Fill Tool greatly depends on whether the user needs some complex compositioning or not. That is why we introduced two new modes for the Fill Tool:
  • Advanced Mode — the mode supporting all the features of the tool, such as applying a selection, rendering the result with a user-supplied composite op, growing or feathering the selection area. This mode works about 1.4 times faster than the old implementation;

  • Fast Mode — just fill the area with color! No compositioning or selections are supported, but thanks to these limitations it is capable of up to 2 times better performance than the Advanced Mode. Which is almost 3 times faster that the old conventional algorithm!
And, of course, these speed benefits are nothing in comparison to the economy of memory we achieve!


The new Flood Fill algorithm is already present in Krita master and is available for all the users having Krita Lime [0] installed! Just update and have fun with your painting!

And yes, this work would be impossible without the support from Krita Foundation! Become a sponsor of the Krita Project and help us move the painting world further!

Monthly Donation through Paypal

Krita Development Funding

One-time donation through Paypal

[0] -

Thanks Timothée Giet for a nice title image!

Thursday, March 27, 2014

Krita: new extended tablet support!

Traditionally Krita supported various types of tablets on Linux, but this support was limited to the tablets handled by wacom driver. The list of the supported hardware included (obviously) all the Wacom-branded tablets and some rare species that were trying to resemble the branded devices. It was the best that one could get form the Qt's tablet code. From now on Krita can also work with all the devices which are handled by the evdev X11 driver!

The list of the devices supported by evdev is really vast. It includes such not-very-expensive brands like Monoprice, Bosto, Huion and Genius. By the moment we tested Krita on two devices: Bosto 19MA [0] and Genius G-Pen 560. Both work fine with Krita and have really nice pressure support! Right now we are also working on support for the Huion tablet supplied by to the Krita project as well!

Bosto kingtee 19MA now works with Krita!
So if you have a tablet device which used to refuse to work with Krita on Linux, test it now!

I also did a small cross-test of my old Wacom Graphire2 device and Genius G-Pen 560. What I noticed is that the lines generated by the Wacom tablet are more stable and smooth, whereas the lines by the Genius tablet are a bit dizzy. I don't know what is the exact reason for it, but I have a feeling that Wacom does some internal filtering of the coordinates generated by the hardware, which gives us better lines. Anyway, even if you own this Genius device, Krita allows you to workaround the issue. Just enable Weighted Smoothing painting algorithm and it will produce the results just like Wacom does!

And if you would like to know the technical details about why Qt's tablet code supports wacom-driver-based tablets only...

Qt's code doesn't fully support the interface of the XDeviceMotionEvent. Qt expects that the values of all six axes of the tablet will be sent to the client in each event. This is true for wacom driver, but it is not guaranteed to be true for other XInput devices. The motion event can also send the values that changed since the last event only. It even has special fields for that:

typedef struct
    /* ... skipped ... */
    unsigned char axes_count;
    unsigned char first_axis;
    int           axis_data[6];
    } XDeviceMotionEvent;

axes_count field tells us how many axes are really delivered to the client and first_axis tells to what absolute axis the first element of axis_data corresponds to.

Now Krita can handle that effectively, as well as recognize to what sensor each axis is assigned to! [1]

[0] -!topic/bosto-user-group/sL_O4VoopVk
[1] - unlike Gimp's way, where the user must manually investigate to which sensor each axis is connected to ;P

Monday, March 10, 2014

Krita Lime: Localization Support

After some time of really hard work we are happy to announce that our Krita Lime packages now support localization!

If you want to see Krita in your own language, just install a corresponding package...

apt-get install krita-testing-l10n-[your_language_id]

... and run Krita!

If you want to see Krita is a language that differs from your system one, type

KDE_LANG=[your_language_id] krita

Happy painting with Krita! :)

And for some languages the help of translators is really needed! Join our KDE translators team on and we will move KDE forward together! :)

Thursday, February 27, 2014

Krita 2.8 (Beta3) is now in Krita Lime!

As you may already know for some reasons the release of Calligra 2.8, which should have happened on the last Wednesday, was postponed for at least a week. That is sad but we could do nothing with it :(

But Krita team didn't want to let its users down! So we created our own packages based on the 2.8 release branch and published them on Krita Lime! Now you can not only install 'krita-testing' package, which is based on quite unstable master branch, but also 'krita-2.8' package, which is almost exactly the same thing which is going to be published in a week as Krita 2.8! :)

To install the stable Krita packages for any still supported Ubuntu distro (Precise, Quantal or Saucy) you need to do a couple of steps:
  1. Check that you don't have any original calligra or krita packages provided by your distribution or project-neon (if you have one, the installer will report you about a conflict)
  2. Add the PPA to repositories list:
    sudo add-apt-repository ppa:dimula73/krita
  3. Update the cache:
    sudo apt-get update
  4. Install Krita 2.8:
    sudo sudo apt-get install krita-2.8 krita-2.8-dbg
We've also prepared new packages for Windows users:
For 64-bit: Krita_x64_2.7.9.12
and 32-bit: Krita_x86_2.7.9.12

Thursday, February 6, 2014

"Of Missing Persons" Russian-based open movie project!

365mult is a small open movie project based on the story "Of Missing Persons" by Jack Finney and using only opensource software in its production: Blender for 3D modelling and Gimp+Krita for texturing and concept art!

The project was started in the end of December 2013 and was declared to publish updates every single day. Artur Shamshadinov, the founder of the project, says: "Every day we must do a small piece of work and the same day we must publish a report about it! That way everyone can follow the progress and we have no opportunity to relax and shirk from making out movie rock!"

The main part of the team is located in Kazan (Russia), but they would be glad to accept contributors from all over the world!

Here are their first concepts of the landscape around the barn: 


And the main character (surprise! ;)

Friday, November 29, 2013

New OpenGL features in Krita Lime!

Krita team is now entirely in the process of preparation for the upcoming 2.8 release. The branch is planned for this weekend, but with Krita Lime you can test all the new features right now!

Important Note:
After update you will need to reset your "Canvas Input Settings" by removing ~/.kde4/share/apps/krita/input directory to get the new shortcuts working.

During November we were working not only on fixing bugs, but also on improving rendering quality and performance of Krita. As you might have already read, Krita 2.8 is going to have a new significantly reworked openGL engine with the High Quality Filtering Mode. This will make the quality of veeery zoomed-out really much better. It will be helpful for people who need to work with hi-resolution images, which should be scaled down up to 10% to be shown on screen.
We also spent some hours on making the engine much efficient and responsive! Now if you tablet generates too many events, the engine will start limiting the frame rate and the speed will not suffer. Note, that the tablet events will not be dropped, so your lines will keep smooth as if nothing happens at all! :)

The only drawback of the new High Quality mode is that it needs your GPU/driver support openGL 3.0. But that should not be a problem, since most of the modern GPUs, including integrated ones, support that.

Another nice new feature of Krita 2.8 is the Dynamic Outline in Hover Mode. Previously, you could see the rotation/mirroring of the brush outline only when you paint, but now it is available even when you just hover the cursor over your canvas. Just for a fun effect of it, select Smudge_Rake brush preset and activate Rotation->Fuzzy dynamic and see a helicopter flying over your screen! ;)

On our way to Krita 2.8 we also refactored our Tool Mode Shortcuts system. Now the special modes of Paint Line/Rectangle/Ellipse tools are available again! If you press Ctrl or Alt while painting a rectangle, the Symmetric or Move mode will be activated correspondingly. Note, that now "Ctrl + Click" and "Click + Ctrl" are two different shortcuts! The former activates the Color Picking tool, the latter --- activates Symmetric Rectangle mode.

We have also enhanced the Color Picking Shortcuts. Now you have four options available in most of the painting tools:

Ctrl + Left Click --- pick color from merged image to Foreground Color
Ctrl + Alt + Left Click --- pick color from merged image to Background Color

Ctrl + Right Click --- pick color from current layer to Foreground Color
Ctrl + Alt + Right Click --- pick color from current layer to Background Color