Hello Alex,
Just downloaded a trial version of Coreldraw X4 and tried the snapping. Finally things are dawning on me.
When using the handles to transform (scaling/stretching/skewing/rotating), only the handles themselves snap. This is pretty limited because in many cases the handle is at a position that has little to do with the position of the nodes. I think the nodes should snap instead of the handles, as Inkscape does. A downside of this is that it's not always obvious which node is snapping, but this should be improved by preferring nodes closes to the mouse pointer over other nodes.
Consequently, nodes (and midpoints, intersections, centers, etc.) only snap when translating. Why's that? The only reasons I can think of is that they wanted to keep things simple.
Finally, the tangent and perpendicular snapping are only available when drawing lines, not when transforming. So they basically only have point to point/path snapping (just as Inkscape), and don't offer real line-to-line snapping either. Overall they provide a clean user experience, but it looks a bit restrictive in what can be done and the level of configurability is low. Let's try to do better!
Regards,
Diederik
-----Original Message----- From: A.J. Carter [mailto:ajc200@...1930...] Sent: 2008 okt 27 14:35 To: Diederik van Lierop Cc: inkscape-devel@lists.sourceforge.net Subject: Re: [Inkscape-devel] Snapping should only occur at the end of a movement
Dear Diederik,
In the case you mentioned of rotating a rectangle: you can rotate the shape by 15 degrees, and then as a seperate action translate it _from_ the new corner to a given gridpoint. You can't rotate the shape such that the rotated corner snaps to a gridpoint in a single motion though no. Only the point directly below the cursor snaps as it moves, irregardless of the type of transform.
All snapping points rotate with the object and are still accessible in the new oreintation no matter what transformation you perform on it, so I would say it's not really just boundary box snapping only no.
The bounding box is actually a subtlety in Corel Designer since it doesn't have to be the smallest rectangle which contains each object as in most programs. You can actually tell it to use different shapes for the 'object coordinates' - e.g. the bounding shape can actually be set to be the smallest ellipse (or polygon, square etc.) which contains a given object or group, and you then position this ellipse relative to the page, and set the width or height of the ellipse to resize the object. It's not something I've used myself but corel have a free designer X4 trial if you wanted a play!
I was thinking last night - if you wanted a fully general way to use snapping with _any_ transformation I guess it depends on what you are doing. Rotations require a 'centre', scalings require a 'point' (not necessarily on the bounding box of the shape !) and stretches require a 'line' (most non CAD systems assume this to be the opposite side of the selection, but it can be any distance away as long as you drag perpendicular to it). One way to do this would be to have a point or line associated with each shape (which can be moved using regular snapping like any other shape) to define the origin of the transformation. The problem is then that a different tool would need to be selected for each type of transform (in corel it automatically switches to rotation mode if an object is clicked twice, then a circle appears in the centre defining the point of rotation and this can be dragged as with any other point, before using the handle to do the actual rotating).
Hope this has made sense !!
Kindest Regards, Alex
Wait a minute. Maybe I'm misunderstanding you here, but what about a rectangle that has been rotated let's say 15 degrees. Is it possible at all to snap its rotated corners in Coreldraw to a grid for example? These corners are not at a handle. So basically it's just boundingbox snapping that Coreldraw does then, plus some special points like intersections and quadrant points and such.