bulia byak wrote:
Cusp nodes will never have control handles, even when they're adjacent to smooth nodes.
is not possible because in SVG, each path fragment is either a line or a curve. If it's a line, none of its ends have control handles,
Well, implementation is something about which I can not really express an informed suggestion. All I can say is that somehow other programs manage, so I'm sure you'll figure out a way, too. But just because I'm curious, why can't all lines drawn be two points be "curves," just straight ones that look like straight lines? Wouldn't that open a lot of doors for you on the implementation side, when it comes to nodes?
A similar problem is in Selector where sometimes you start dragging a wrong object instead of the one you had selected. To fix it there, I added Alt+drag which always drags the selected object no matter where you start the drag. I think a similar approach can be used here: make Alt+drag always drag the selected node(s) no matter where you start the drag, or whether some handles are in the way. Will that work for you?
Hmmmm... I don't know. I guess it depends on what develops with the rest of the node editing capabilities, per our other discussion.
Or alternatively, I can make nodes always selectable and draggable in preference to handles, but also provide a way to drag _out_ a handle if it's retracted (e.g. by dragging with Shift, similar to un-merging merged gradient handles with Shift). Will this be better?
This is a good suggestion, and at the moment I like this better. I think whatever it is it should be consistent with what happens with extended capabilities (if any) the Pen tool gets, so they're as similar as possible.
By the way, I'm struggling with terminology. I take "cusp" to mean a node that doesn't have control handles and does not influence the direction of the line, as opposed to a "corner" node, which has control handles that can move in independent directions, and "smooth" which has control handles in the same plane but are different lengths, and "symmetric" which has control handles in the same plane and with the same length. Is this correct?
No, a cusp is a node whose handles can rotate independently. It's still cusp if any of its handles are retracted to the node itself. I think we don't have a name for a node that sits between two straight line segments and therefore has no handles at all; it may be called "corner". However we don't want this to be a separate node type that you can turn a node into, because (again, for reasons above) this would affect the other ends of its segments too, which is often not desirable. My latest change was to treat the "corner" node the same as cusp when converting type, i.e. add handles to it when making it smooth. Now you understand that this necessitated converting the neighboring "corner" nodes to cusps with retracted handles.
So, I think that if we will be able to drag a node with retracted handles, but ALSO some way to drag out a retracted handle (with Shift), then just regular cusp nodes with retracted handles can for all intents and purposes be undistinguishable from "corner", and we won't need "corner" as a separate type. Dragging out a handle with Shift can be made to work even for true corner nodes - it will just have to convert the adjacent fragment to curve first. I think this will be quite convenient, will keep the list of node types from unneeded growth, and will mostly eliminate the need to use the clumsy "convert segment to line/curve" buttons.
Maybe I'm just being dense, but I still don't understand, or maybe I do and I am just unsure. So, there are now 4 types of nodes?
Corner: no control handles (might go away and be merged with "cusp", I was calling these "straight" on IRC) Cusp: control handles move independently Smooth: control handles have independent lengths but the same vector Symmetric: control handles have same length and vector
Correct now?