Then there's the problem of inking. Why on earth do most programs make this ridiculous assumption that filled regions are defined by a single curve? Try drawing something you want to fill in, like a house or a stop sign or an animal. Do you draw the entire cat in a single stroke? Hello? Was anybody thinking when they designed these programs?
Okay, so Flash doesn't make that assumption. In Flash you can make several strokes surrounding a region and then dump the paint bucket in the middle of the region. But Flash has so many other inconsistencies that make drawing difficult. For example, suppose you draw two separate filled shapes. Just moving one shape on top of the other will erase what's underneath; move it away and you've taken a bite out of the other shape. If the two shapes are the same colour, they'll automatically merge into one big shape, making it impossible to separate them or recover the original shapes. But if they are different colours, they won't merge. Whenever your strokes intersect, they cut each other up, so you end up with lots of tiny pieces. You can move the control points individually, but if they get stuck to each other (at an intersection) they're impossible to unstick, and if you open a hole, the fill disappears. In short, my problem with Flash is that simple actions cause unexpected loss of information: your pen strokes are lost and your shapes are lost.
Here's the idea that popped into my head a few minutes ago. What if there are no fill objects, only stroke objects — and then fills are defined entirely in terms of strokes? So:
- Every time you put down the pen, move the pen, and lift then pen, you create exactly one stroke. The program strives to preserve this stroke in its original form as a single object unless you explicitly cut it up or join it to another stroke.
- Filling is a property of a group of strokes. For example, a fill might be defined internally as "the region enclosed by the left side of stroke 3, the right side of stroke 7, and the left side of stroke 8," where left and right are defined the way you would see it if you were an ant walking along the stroke in the same direction it was drawn. (You wouldn't have to specify a fill this way; the program could figure out such a specification based on where you dump the paint bucket.)
- The strokes around a fill do not have to form a completely closed region; the fill closes itself off by interpolating the missing parts of the boundary. (You could set an option to say how you want the boundary to be closed off, say with a straight line or a smooth curve or a sharp corner, just like the option for round, bevel, or mitre joins on hard corners of paths in Illustrator.)
- You could define all sorts of other cool fill styles, too — like fuzzy fills that go a little outside the boundaries, or a fill that looked like it was drawn in crayon, or a fill that looked like a patch of grass growing in the region.
- Then you could move around and adjust strokes without ever losing your stroke shapes or your fills. You could move, scale, rotate, smooth, or apply other effects to individual strokes or groups of strokes.
- You could create filled regions with no outline by making the
strokes invisible, but you would still be able to see and edit
invisible strokes in the editor.
- The strokes and fills would be arranged from front to back in the drawing layer, just as with Illustrator objects, and you could rearrange them to control what appears on top.
Has anyone heard of or seen or a drawing program that thinks like this? If you draw, do you think a program like this would work for you?
I wonder how metamouse turns his sketches into vector drawings. Hours of tediously adjusting Bézier control points? Or is there a better way?