gusmueller
Saturday, July 2nd, 2005

Something I've been wanting to add to FlySketch for a long time is to have the freehand tool lay down actual bitmaps, instead of futzing around with bezier curves. I don't think I'll end up adding it for FlySketch 1.1 (or 1.5 as I'm starting to think of it), but I hope to have it in there some day. It's pretty much the reason I started writing FlySketch in the first place. That's right, feature idea #1 still hasn't been implemented.

Here's what
Painter 7 does, and what I want to be able to do some day with FS:

painter pencil tool
(painter 7)


Do you see how it gets darker in the middle, as the lines overlap? That's awesome. I want to know how to write that code, and I want to be able to draw in FlySketch like that as well.

Another app that does great freehand lines, but not quite as good as Painter is Alias SketchBook Pro:

sketchbook pro pencil tool
(alias sketchbook pro 2)


Nice lines, good curves, but doesn't do the type of compositing that Painter does.

Here's what a custom build of FlySketch will do on 10.4 with bezier curves if I flip the right bits (NSCompositePlusDarker) and splash some alpha in the current color:

fs freehand lines
(flysketch, 0.5pt stroke)


Not too bad. Unfortunately, I know the implementation details, and here's what goes wrong when you move the max line width from 0.5 to 3 (it's pressure sensitive, so it varies on how hard I press my tablet).

fs freehand lines
(flysketch, 3pt stroke)


*gag*

Not quite the same. All those little dots you see are the end points of bezier curves overlapping. Whoops. I need multiple bezier curves in there, because a curve can have only one line width... and that is why I want to move to using raster graphics.

...

And here are two more things that don't really fit in with the topic of this post, but I think are cool so should get a mention.

Alias SketchBook Pro has a UI that I had been thinking about using in FlySketch- it's very cool. I don't know how to describe it and do it justice, so here is a movie (quicktime 7 required, yada yada). It solves a very big problem that FlySketch has to tackle, trying to fit as many controls in as small an area as possible. It works out great, and I'll have to come up with my own implementation some day. It's just like pie menus, with pretty graphics.

And ...

Chris Liscio has been sending me drops of his line smoothing code out of FuzzMeasure to use in FlySketch (w00t! free code!), but I never turned it on because the current implementation wouldn't work with the tablet/pressure sensitive support. I've been working on taking the ideas from his code and trying to make it into something I can use, but I'm not quite there yet. But I do have another movie to show, just because I thought it was cool and it was fun to write (even though I spent way too much time looking at scribbles on graph paper and saying to myself "but it should just work!"). Anyway, here is a movie of the little dev program I've been using to work out the code:"curvalicious".

comments (3)   # posted 12:46 am (uct-6)