An idea about brush/tool painting that's been on my head for awhile is an 
"edge-sensitive" painting option.

Say for example that I am digitally coloring an inked linework (black lines, 
white background).  There are many ways to go about this:  I can use Multiply 
blending, perform a Color-to-Alpha transition and make it a separate layer, or 
so on -- but when it comes down to the actual painting process, one thing I 
have to keep in mind is "bleeding" -- the art of consciously keeping my brush 
within the lines I'm trying to color, because if I get too close to a line then 
the tool will paint right through it.  Which is rather duh, but it may create a 
need to clean up the "spills" later on, depending on what workflow I'm using.

(Yes, there is a way around that too, but I'll get to that later.)

So the idea here is an option so that when GIMP applies a painting operation, 
it essentially calculates a flood-fill / fuzzy-select (using a sensitivity 
threshold like existing tools e.g. fuzzy select already have) around the 
specified brush coordinates that is strictly bounded to the current brush's 
size/mask. The result is the area that will actually be affected by the brush 
(other restrictions like a selection mask can still be included).  So in my 
example, as long as I keep my cursor located on the same side of a given line, 
the painting will "stop" when it hits the line and won't spill across onto the 
opposite side, and as a result I'd be able to paint broad areas a lot quicker 
and more conveniently than in the current form.

The main way this differs from using a normal fuzzy select or flood fill to 
detect edges is the treatment of unbounded regions.  As a demonstration, create 
a new image (white BG) and with the Circle 03 brush, paint a wavy line through 
part of the image that doesn't touch the image edges.  Next, just try to select 
an area that only affects one side of the line and doesn't cross.  A 
fuzzy-select will grab everything on both sides of the line, because the white 
pixels it's operating on are an unbounded region across the entire image layer. 
 (At this point the solution is to turn on the QuickMask and use painting 
tools, like the flood-fill, to separate each region -- it does work and with 
relatively little effort, but is not entirely straightforward.)

On the other hand, an edge-sensitive option would easily be able to determine 
one side of the line from another and paint accordingly because it isn't giving 
a fuzzy check across the entire image area, only the immediate vicinity around 
the current brush coordinates.  For example, you could start painting with the 
Circle 19 brush and the painting would only affect the region on one side of 
the line at a time, as long as you keep your brush on the side in question.  
(Of course, when you get close to the end of that line, where even the local 
whitespace is unbounded, then it would start 'bleeding' through onto both sides 
of the line.  But it would happen around that spot only.)

What do you guys think?

-- Stratadrake
[email protected]
--------------------
Numbers may not lie, but neither do they tell the whole truth.
                                          
_______________________________________________
gimp-developer-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gimp-developer-list

Reply via email to