All over again - Painterly Paint Operator (or Operation :) ?) and Mixer
emanuele at valinor.it
Tue Mar 11 16:48:00 CET 2008
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
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