Hi people.
Let me introduce myself : my name is Damien, aka Kaoron. I am a french comp.
specialized in operations research, also a digital painter and a free
software lover.
I use GIMP to draw, and I'm very interested in contributing to the code.
I can speak C a bit, but never actually programmed anything real in this
lanuage and have no experience with glib...
As gimp is one of my favorite tools, I'd really like to learn its internals,
improve my skills and maybe someday make some valuable contributions.

So, I gently request some orientation inside the source code. I pulled git
gimp, compiled it, and got intimidated by the amount of source files around.

Besides, I have a few ideas to improve the current brush system.

I - Separate brush tip and stroke

IMHO, the current brush system is unintuitive.
There are duplicated features (size), bizarrely located ones (spacing),
missing ones (why does hardness have dynamics and no slider ?).
Features inside a same dialog doesn't seem logically organized.

As an improvement, I'd like to see a brush system built around brush tips
and brush strokes.

I.1 - Tip (+ feature : hardness treshold)
The tip is a raster image (.gbr), layered image (.gih), or a parametric
greyscale or colored. It represents the unitary blob which will be used to
with brush tools.

*Every* brush tip is subject to the following non-destructive parameters :
- size
- angle
- aspect ratio
- hardness
- hardness treshold (option) : pixels with alpha/grey above treshold
are considered opaque, others transparent.

With all of these, one can get a preview of the brush he's going to use.
Parametric shape's spikes can be handled as a special case (I assume
hierarchical relations between UI widgets are not a pain to deal with).

At the moment, only parametric shapes can be modified through the brush
This leads to a weird duplicata in tool options, but it doesn't have a brush

I.2 - Stroke (+ feature : connect jitter)
The stroke is a set of parameters which will determine how the selected tip
will be painted on the canvas, using a brush tool.
It is subject to the following parameters :
Blending :
- opacity
- option color gradient
- option increment
Behavior :
+ Spacing
+ Jitter
|- Connect (optionnal) : Jitter scatters blobs around, but breaks the line.
With connect, blobs will be connected by a straight line with given
creating a noisy stroke.
(as a non native english speaker, this seems to fit better to "jitter",
denotes nervosity rather than randomness)

Brush tip image + Brush tip options + Stroke presets => Brush tool (simple)
Why simple ? 'cause I have another feature proposal.

II - Stacking brushes

Sometimes, you'd like to use several brushes on the same stroke.
For example, drawing the empty outline of a line, or a splattered line.
This can always be done using paths, filters and all the power of gimp, but
not that handy, it's not brushes. Sometimes you just want to wave your hand
it's done, or do a rapid try and fail with Ctrl-Z armed and ready to use.

I usually want to do such things.
So I thought that several brush strokes could be blended given a stack of
brushes with their own presets.

I'd like to have your opinion :
Are these valuable ideas ?
Are they hard to implement wrt gimp internals ?
Where to hack ?

Thank you for reading. :)

Gimp-developer mailing list

Reply via email to