I’m thinking about trying to add an “align” feature to Synfig, if needed, but first need to understand want you want/expect.
If anyone else is-/plans to- coding this, please let me know via this forum, no need to do it twice.
- the request “Align objects at a common border (as in Inkscape)” showed up in wiki.synfig.org/wiki/Dev:Wish_li … n_function
- a related discussion happened between carbonphobia and Genete when discussing ducks snapping at snapping ducks
- hellocatfood suggested the current Inkscape dialog as an example in Options for aligning ducks/nodes and objects
First question: is such a feature needed? We have the alternative options of snaping to a grid and snaping to an infinite number of guides, both vertical and horizontal. These function work great, they may simply need more visibility. Maybe a feature to add guides at the position of an existing (position and vertex) duck from its contextual menu would be better. See attached screenshot “align ducksOrBox” where guide snapping was used to align the origin ducks of a star and an outline.
reference point for align: box or ducks?
In Inkscape (and most graphics editors) the alignment takes as reference the outer box of a graphic element (herein called “box”). While this concept of a box is natural to most of users, it seems absent from Synfig so far. Our typical points of reference are “ducks”. The position and vertex ducks seem like the only ones which “location” has any significance, and could therefore be used as reference points for alignment. See eg the above screenshot showing the outer box of a feathered advanced outline
feather and other filters that modify the object shape: consider or discard?
Any effects that modifies the shape of an object (eg twirl in the “twirl breaks box” screenshot) will cripple the box-based alignment. Do we care? Do we have a way to compute the “visible outer box” of an object, or is it then up to the user to do it manually?
move the object or the duck?
Finally: do you prefer “align” to move the whole object (even if you take a single duck as reference point), or only the selected ducks (eg for stretching an outline to the left to touch another object)? The second option is the way the current “snap” function works, makes sense to me because it is more versatile and matches better the current Synfig “culture”. This second option may be less newbie-friendly though for you need to understand how ducks work to use it… but it seems easy enough to learn.
My personal preference would be, for now:
- add “add guide here” function to the contextual menu of position and vertex ducks, because it just makes sense.
- trying to add ducks-based alignment, moving the selected ducks only, discarding any effect that modifies the shape… but as we cannot select ducks in 2 different objects at the same time I don’t see how to get this done for now.
Let me know what you think.
align-ducksOrBox.sifz (1.63 KB)