[GSoC proposal] Airbrush and Calligraphy paintops

Fela Winkelmolen fela.kde at gmail.com
Sat Mar 29 00:46:24 CET 2008

Here is an updated version of the proposal.
As usual, comments are wellcome =)

=========== begin ================
Implement real-media airbrush and calligraphy simulation paint operations in 

== Expected Results ==
Real-media airbrush simulation support:
* usable with a mouse and with graphics tablets both using a graphics pen and 
an airbrush
* the engine will work with the following parameters which can be changed 
dynamically while drawing: rate, tilt (only when the input device supports 
it) and distance
* additionally it should be possible to configure the size (of the area 
painted on the canvas), the level of atomization (size of the painted 
particles), and how the particle density decreases nearing the border.
* the effect should be as much as possible similar to that of a real airbrush

Western calligraphy simulation support:
* usable with both mouse and graphic tablets
* the engine will work with the following parameters: width, thinning 
(depending on the speed of the stroke, and optionally on the pressure of the 
input device), angle, fixation, mass & wiggle (determining how the 
tool "feels")
* I will also implement basic support for different contours of the quill, for 
the scope of this project just a single line (not a sophisticated 3d 
contour), but keeping possible future extension in mind
* the visual effect after this project will be similar to that currently in 
Inkscape with in addition the possibility to change the contour of the quill

The user interface of both tools should be polished and usable. When using an 
input device that don't support a parameter directly (e.g. rate of the 
airbrush when using a mouse) there needs to be an easy way to change that 
parameter while drawing, for example using the keyboard and/or the mouse 

== How I will proceed ==
1. Getting to know the architecture of Krita well and getting comfortable with 
the code. Understand how the operations will need to be implemented (making a 
rough design).

2. Write the code, the interface won't need to be usable yet at this stage, 
it's just so that I can play with various options etc. Implement most needed 

3. Find out how exactly the various parameters should interact with the 
behavior of the tool. This means mostly testing, and then adapt the code to 
the results of the testing. My roomate, who draws a lot, can help me with 
this, and I will try to get feedback from other people too (for example 
posting on the mailing list).

4. Polish the user interface, making it as usable as possible.

5. Update the Krita handbook adding the sections relative to the new tools.

Obviously these phases won't be strictly sequential but there will be some 
level of iteration.

== About Me ==
I'm studying Computer Science in Genoa (the curriculum I'm following 
is "Graphics and Images"). I started to use Linux and KDE seriously three and 
a half years back, it was then that one day I definitively removed Windows 
from my system because I needed more space =) I learned myself C++ and Qt 
over time, and am actively involved in KDE only since a few months, in 
October I volunteered as maintainer for KNetWalk.
============ end ===============

More information about the kimageshop mailing list