UI models for drawing.

As i wait for my iBook to back itself up, i've been thinking about how
drawing works on tablet computers. I'm not happy with the dichotomy
between image painting programs (like Photoshop) and vector drawing
programs (like Illustrator). Neither type is a good fit for pen-based
sketching. To begin with, you've got to have vectors in order to edit
pen strokes. Photoshop has paths, but they're hard to edit. Illustrator
has this incredibly annoying habit of wanting to bend and join up paths
whenever they come near each other, which makes its pencil tool pretty
much useless — the details of your strokes are often lost, and the set
of path objects you end up editing bears no relationship to the strokes
you actually drew.


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?