leastfixedpoint

Spring-loaded Zooming UI

This page is a mirrored copy of an article originally posted on the (now sadly defunct) LShift blog; see the archive index here.

Thu, 25 August 2005

The fancy new mouse Apple are selling has a neat hardware feature: squeezing the sides together acts like a button click (on some nth button). They combine it, by default, with a kind of okayish software feature: squeezing the new button shows the dashboard until you stop squeezing.

Looking at CellDesigner’s “bird’s eye view” feature (from the manual) gave mikeb and I an idea: you could use the squeeze-button to control a spring-loaded zoom feature in a Raskinish zooming user interface.

You could indicate, with a mostly-transparent overlay, where letting go of the button will end up dropping you. When you squeeze, the current view turns transparent while the canvas drops out from underneath you as you rise; while panning, the transparent overlay is updated to reflect the view you’ll get if you let go here; and when you let go, the canvas rises up to meet you as you fall, until it eventually overlaps the transparent view, at which point the transparent view is redundant and can be removed until the next zoom.

Even better would be if the squeeze-button were an analogue control, that could measure pressure like a tablet stylus. You could use the force of squeezing to control the rate of ascent/braking. Then you’d only need that one control for zooming out (so long as there was a way of making your current hover level the new ground level); zooming in could perhaps be done by dragging out a rectangle on the current view that is to expand and become the new view, much as one does with old-school fractal programs.