Microsoft Expression uses a profile shape method that is just like what Bulia suggested. The width equals the path length and the nodes along the profile shape equal the distance away from the centerline for the brush object's width.
The LPE could be given three pieces of information... bottom most item is the stroke path, then brush object and then the profile path. If no profile path is selected, then the brush object is drawn along the stroke path without any change in brush width.
----- Original Message ---- Message: 2 Date: Wed, 03 Sep 2008 20:15:14 +0200 From: Maximilian Albert <Anhalter42@...173...> Subject: Re: [Inkscape-devel] "Live Pen" Feature Bounty To: bulia byak <buliabyak@...400...> Cc: inkscape-devel@lists.sourceforge.net, J.B.C.Engelen@...1578... Message-ID: <48BED432.6080504@...173...> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
bulia byak schrieb:
I think we will need to store widths not per node, but as a list of length along path/width pairs, with length measured in percentages of the total length of subpath
That's an excellent idea. Since I had something like Pajarico's other suggestion in mind (see different email), I was thinking about how to store per-node information. But separating the width info from nodes and storing it in the described way will make the LPE very powerful and flexible.
And finally, for the actual profile shape I think we should use a Spiro path for extra smoothness and natural flow. However, if we want to eventually support sharp width changes, we will need to store for each point its type - whether it is a smooth Spiro point or a cusp point.
I'm not sure if I understand you correctly here (in particular: what do you mean by "profile shape"?), but why not apply the LPE to any path whatsoever? The 2geom routines are flexible enough to make this possible. If you want it to be on top of a spiro path, just use LPE stacking.
Max