Last week I was working in Paris, and only had a borrowed laptop on which I didn’t feel like to go through the pain of setting up a KDE4 development environment. So instead of writing C++ code, I decided to improve my Ruby skill and still be able to hack on something of a certain use for Krita.
While it has been a while since I have started using Ruby, I never really wrote more than a few lines each times. But now, that at work, I finally was able to drop TCL for Ruby, I have made a lot of progress during the last few weeks. But lets go back to a subject related to krita.
So last week I had plenty of time, on the train to go working, to make a lot of progress on a framework (called WaterFlow) for creating flowchart of operations. Am I writing a clone of kivio/visio/dia/whatever ? No, the goal of those applications is to visualize information or data, while the goal of WaterFlow is to visually create programs. My first idea for this was to reuse kivio, but then I considered that it would require more work than creating a light weight visualization engine. Especially considering how easier it is to display and manipulate graphics with the new QGraphicsView framework of Qt4.2.
As you can see bellow, a lot of work remains to do, but I have achieve the basic feature, and currently all you can do is define mathematical operation, for now, it’s just a more complicated to use calculator than kcalc. Except that it support retro-action loops !
But what’s the link with krita ? A lot of image manipulation algorithms are a combination of basic algorithms (like bluring, inverting…). Most of the time, for an user, the layer stack is more than enough to achieve what he wants to do. Lets take two use cases, one when WaterFlow is usefull and one when it’s a burden.
- Arthur has taken a picture of “big ben tower” in London, but while the disposition of the image is good, the image has a lot of qualities issue (noise, sharpness, color, etc…). He wants to create a chain of filters to fix his filter, he needs to be able to adjust the parameters of each filter and their positions in the chain. It’s already to do this, it still needs improvements, especially in the filter side to make more of them work with the system:
The use of WaterFlow for this task would be a burden.
- Ben likes Krita for its work, but he found that it is a lacking a simple feature he needs a lot, as a professional photograph, he knows the math of the operation, but he don’t know how to program, so he needs a simpler way to create its custom filter. Lets consider “unsharp mask” (which is in fact in Krita since version 1.6, but it’s a simple example), the basic of the operation is to blur the original image and then to mix the original with the blur version, as you can see the layer stack doesn’t allow to create such operations, that’s where WaterFlow can be of use.
In fact, I don’t think Ben will ever try to use WaterFlow, he will probably have gone back to Photoshop or The Gimp, but at least it’s an useful tool for filter developers to easily try new combination of filters before implementing a faster version in C++.
The next step is to test with Krita 1.6 if WaterFlow is suited for what I want to do with it, and modify it accordingly.