[prev in list] [next in list] [prev in thread] [next in thread]
List: koffice-devel
Subject: Request for comment: snapping in kivio / flake
From: Andrew Dorrell <andrew.dorrell () gmail ! com>
Date: 2009-08-30 12:57:22
Message-ID: 200908302257.23057.andrew.dorrell () gmail ! com
[Download RAW message or body]
Hi,
The first thing I found myself hankering for when playing with kivio was
snapping. Then I found there was the start of snapping already implemented
within flake; a snapping docker and a few menu options also. The design
seemed good from the perspective that snapping would be available in all apps
and there seems to be plenty of scope for writing new snapping strategies.
However I found that the current operation of snapping didn't really meet my
expectations and in general seemed difficult to understand and a bit clunky.
So after asking on IRC I agreed to post a discussion item.
What follows is my notes on how I'd like to see snapping work (some of this is
already implemented, I'm just trying to be complete):
Requirements:
------------------
1. Objects should be easy to align with each other and the page. As mouse
placement can be imprecise, snapping is used to attract objects to preferred
positions on the page.
2. Snapping should be applied appropriately when objects are moved, resized,
rotated etc.
3. It should be possible to temporarily toggle snapping mode during object
moving, resizing etc. This requirement implies a modifier key be used.
4. It should be possible to adjust the "strength" of snapping
5. Objects should snap during a move or resize operation so as to:
a. align any edge of the object being modified with and edge of another
object on the page
b. align the center of the object being modified with the center of
another object on the page
c. match the size of of the object being modified to the size of an
existing object on the page (resize only)
d. align any edge of the object with a page grid
(As an aside I should point out that I don't like snap to grid but it will be
familiar and a desired feature. Grid snapping goes bad if the grid dimentions
are changed or if objects are resized as a group etc. I'd like to keep grid
and object snapping as separate concepts.)
6. Objects should snap during rotation so as to:
a. match the rotation of the object being modified to the rotation of an
existing, previously rotated, object on the page.
b. align the axis of rotation with multiples of a rotation step size (say
15 degrees)
7. It should be possible to snap the position and / or size of an object to a
ruler so that the actual drawn dimentions of the object are effectively
specified. This is a little like snap to grid except that it can easily
be used just to fix the size of and object, not its position on the page.
8. When snapping to another object, the grid or a ruler, visual feedback will
be provided so that the user can see both the object being snapped to and
the mode of snapping being employed.
9. It should be possible to exclude objects from the snapping rules so
that no object will snap-to the excluded objects. This would take two
forms:
a. Explicitly exclude an object by modifying its properties
b. Implicitly exclude an object by adjusting the page view (by zoom and
scroll) so that the object to be excluded is not visible.
(Second aside: I'd like to see it possible to resize the document page in a
similar way to any other shape - perhaps via the master page? and in that case
I'd expect the operation to make use of ruler snapping as well as significant
size snapping: tight bounding box and standard paper sizes).
User controls:
------------------
My first hack at the controls I would expect to see on the docker for snapping
are:
"snapping mode" check boxes: object; grid; ruler
"snapping strength" slider
"snap only to visible objects"
"Prevent snapping to this object" toggle.
Okay... so there is the kind of thing I'd like to see, personally. I'm not
sure how significantly this violates current use cases or working modes etc.
Please comment freely.
_______________________________________________
koffice-devel mailing list
koffice-devel@kde.org
https://mail.kde.org/mailman/listinfo/koffice-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic