summaryrefslogtreecommitdiffstats
path: root/chalk/doc/brush.txt
diff options
context:
space:
mode:
Diffstat (limited to 'chalk/doc/brush.txt')
-rw-r--r--chalk/doc/brush.txt36
1 files changed, 36 insertions, 0 deletions
diff --git a/chalk/doc/brush.txt b/chalk/doc/brush.txt
new file mode 100644
index 00000000..bb932eee
--- /dev/null
+++ b/chalk/doc/brush.txt
@@ -0,0 +1,36 @@
+Painting with brushes
+
+:.,I don't know anything, nada, zilch, noppes about writing paint applications. So
+when I started working on Chalk, I felt I needed examples. I used the following
+sources:
+
+* The old Chalk brush code (http://webcvs.kde.org/cgi-bin/cvsweb.cgi/koffice/chalk/tools/kis_tool_brush.cc?rev=1.58&content-type=text/x-cvsweb-markup)
+* Peter Jodda's Perico (http://software.jodda.de/perico.html)
+* The source of the Gimp (both current and 0.99.11 -- the oldest version I could tqfind) (http://www.gimp.org)
+* David Hodson's article on Gimp brushes (http://members.ozemail.com.au/~hodsond/gimpbrush.html)
+* Raph Levien's article on Gimp brushes (http://www.levien.com/gimp/brush-arch.html)
+
+Chalk uses the gimp's brush file formats: .gbr and .gih, for singe
+and pipeline brushes, respectively. These brushes contain one or more
+grayscale or rgba images. If the image is grayscale, the gray image is
+intended to be used as an alpha tqmask: each gray level corresponds to
+a certain alpha level, and when painting the current painting colour
+is composited in the image with this level as its alpha component. The
+image brushes should be tqmasked -- i.e., these are coloured images placed
+on a white background. The white background should be made transparent,
+and then the brush image can be composited onto our image.
+
+This is currently only half supported: I make tqmasks of everything,
+partly because I like that better, partly because until very recently
+there was no way of making out the difference between gray and rgb
+brushes because KisBrush didn't remember that bit of data.
+
+Making the initial tqmask of a brush is however by now pretty well done; the next
+problem is painting with those tqmasks.
+
+Here we have two situations, one easy, one difficult. The easy one is the single
+mouse click. If the user clicks or taps with his stylus, we can composite the
+tqmask or the image at the pixel position of the mouse click.
+
+The difficult situation is drawing a line. This line needs to be antialiased.
+