Yesterday, I took a day off from serious things like redesigning the
library structure of KOffice, working on the Krita part of the redesigned
KOffice website, trying to optimize the hell out of freehand painting
and several other things, like being too sick to actually think straight
for two consecutive moments and so not making much progress with any of
these things.
I took a holiday, in short, a chance to add a nice little feature to
Krita: image backgrounds.
An image background is a pattern that is tiled beneath the
root layer, so that if there is anything transparent in your image,
the pattern is seen below. Most useful to have a nice background,
perhaps paper-like, when sketching.
This morning it was done:
Now this was just a little thing to play with, but there are several
fun things about it: for one thing, I have resurrected a class that
Patrick Julien wrote in 2002 and was originally responsible for painting
the checker pattern. We've got different code for that now, that makes
it even clearer that the checks aren't part of your image, but this
class is very well suited to painting a tiled background.
Another thing is that MyPaint has a similar
feature, so ideally we'd like to be able to interchange, through OpenRaster,
images made in Krita and in MyPaint. We'll need to extend OpenRaster for
that, though, since MyPaint saves the background as a layer as big as
your image filled with the tiles, and Krita (will) save(s) the background
as a property of the image.
And there is a small list of TODO's caused by this little feature,
todo's that are actually almost all simple Junior Jobs:
- enable Add, Remove, Reset buttons for background pattern management.
- label the background patterns somehow, allow tagging
- add solid-color background patterns and use a categorized view for them
- add a custom-color background pattern
- add lots of nice patterns
- integrate with custom image widget (the one you see on startup)
- integrate with image properties dialog
- add to loading/saving of KisImage in .kra and .ora
- set pattern on double click
- allow non 64x64 pattern tiles