Re: canvas notes [zoom dependent container]



On Thu, 2005-09-08 at 14:31 +0200, Alexander Larsson wrote:
> On Thu, 2005-09-08 at 09:30 +0200, Øyvind Kolås wrote:
> > 
> > When playing around with some zoomable canvas prototypes using cairo
> > earlier, I created a canvas container element that acted as a switch.
> > At one zoom level it was showing one set of children, and when zoomed
> > beyond a defined threshold it alternate children were shown.
> > 
> > This way of doing things allows a progressive revealing of the interface:
> > 
> >   Tiny icon ->
> >   Icon ->
> >   Icon with text ->
> >   Tiny icon with label as title with basic controls ->
> >   Tiny icon with label as title with basic controls and advanced controls ->
> >   All of the above with additional debug information ;-]
> > 
> > One further extension to make this more usable (apart from excessive
> > use) would be to allow defining transitions between the two sets of
> > children.
> 
> At some level this is perfectly fine, however when you start to change
> the geometry (i.e. the size, position and number of canvas items) things
> get really hairy. In a design where you can have multiple views of one
> canvas you suddenly get different canvas layouts depending on what view
> you look at. 

  Maybe the best solution is to simply apply scaling transformation
normally for zooming, but let canvas items call userspace-to-pixels[1]
cairo mapping functions to determine how much information to display
considering the physical screen space available.  This way, naïve/simple
canvas items just scale naturally with no intervention, while more
advanced items can peek into the zoom factor to decide if more
information should be displayed.

  Hm.. not sure my idea solves whatever abstract problem alexl was
mentioning, anyway, but it's one idea worth considering generally.

  Regards.


[1] or userspace-to-font-points for more resolution independence

-- 
Gustavo J. A. M. Carneiro
<gjc inescporto pt> <gustavo users sourceforge net>
The universe is always one step beyond logic.




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]