All over again - Painterly Paint Operator (or Operation :) ?) and Mixer

Emanuele Tamponi emanuele at
Tue Mar 11 16:48:00 CET 2008

Hello people,
I've finally come to a working (and by "working" I mean "working very 
well" ;) ) algorithm for the painterly color space. This means that the 
conversion to and from RGB works perfectly and it just needs your help at 
testing the various profiles I've calculated.
Let me explain this point: the help will just consist of trying to paint with 
the Painterly Color Space and its different "Illuminant Profiles". Each of 
them has a different set of coefficients that bring to a different mixing 
result. It would be good if we choose a "default" profile by testing them 
this way.

To do this, even if it is already possible of playing with the alpha channel 
to simulate mixing, it is good to have a working mixer and a working 
painterly paintop. So here I'd like to propose my design for them, and ask 
for confirmation or suggestions.

1) The Painterly Mixer works this way: it has a built in KoCanvas and a 
resource provider that just "copies" its state from Krita default 
KisResourceProvider, with two exceptions: it checks for the current paintop, 
and if the user chooses a non-painterly one, it sticks on the "default" 
painterly paintop that is "paintcomplex" for now; and it checks for the 
current brush used, and it obviously uses only that not derived from an 
image. This is done because the mixer itself uses a painterly paintop to mix 
(to not duplicate code) colors.

  Right now, the code of the Mixer is ready and working but...

2) ... the Painterly Paintop needs some love, and the Mixer is not very useful 
until we have at least one working painterly paintop. My current idea is that 
the paintop gets the actual brush shape from a KisBrush or something like it 
and it just "puts" on it the current color and do the mixing with the canvas 
substrate. This way we get a great advantage: we separe the code that 
actually mixes colors from the code that generates the brush shape: so that 
it can be a "real" shape generated by a 3D brush representation, or 
a "digital" shape like the one already present in krita. Moreover, this way 
the brush shape can be used with non-painterly paintops.

if you agree with this design, I can start coding :-) Suggestions and 
modifications are obviously welcome!


More information about the kimageshop mailing list