David De La Harpe Golden
david.delaharpe.golden at gmail.com
Sat May 23 11:24:31 PDT 2009
Panning's made a welcome return...
But it's "border-push" type panning. That means to scroll new sections
of the display into view you "push" against the border. Back in the
day, some amiga stuff instead used "proportional" panning to move the
viewport about the screen. Why would you want this? "Pushing" against
a border means you need to push beyond where you want to click on to
bring whatever it is fully on-screen, then move back. With the
proportional way, every viewport pointer position corresponds to a
particular point on the panning area. It allows rapid scrolling about
large panning areas, at cost of some precision.
You can sortof-nearly get a vaguely similar effect by using something like
xrandr --output DVI-I_1/analog --mode 800x600 --panning
- but it's noticeably nonuniform.
Anyway, it might be nice if one could say something like
xrandr --panning blah --panning-mode proportional
xrandr --panning blah --panning-mode borderpush
Just putting the idea out there, beyond "see the X.org source code" I
don't presently know where to begin implementing it beyond rough
(see http://harpegolden.net/misc/proppanning.pdf for illustration):
w_pa # width panning area
w_vp # width viewport
x_vp # x coord of topleft of viewport relative to topleft of panning area.
x_m # x coord of mouse pointer relative to _viewport_
x_vp = (x_m * (w_pa - w_vp)) / w_vp
similar for ys + heights
More information about the xorg