From don@brillig.umd.edu Mon Jan 12 23:08:21 1987
Date: Fri, 26 Sep 86 17:19:42 EDT
From: Don Hopkins <don@brillig.umd.edu>
To: mark@markssun.cs.umd.edu
Cc: don@brillig.umd.edu
Subject: winding business

Winding is a method to move between menus. Effectivly, when you move
the mouse in a complete circle during menu selections, the menu
changes. (In polar coordinates, the circle is perpindicular to all the
rest of the slices.) Note that by the definition I gave, the circle
you move the mouse in does not have to have the menu center inside of
it. Possibly it could be defined such that it changed the menu when
you were at the part of the circle in some specific direction (i.e.
up, or in the direction of the 0th menu item). Upon putting some more
thought into it, it seems somewhat complex, though. I am not sure how
useful it would be. It might be simpler of it were defined as circles
around the center of the menu. Perhaps that's something I should wait
until all I have to do it write a couple of lines of PostScript to try
out. It could be used to give you "stacks" of pie menus, like the
stacks of pulldown menus provided by XMenu. I.E., a menu would have
panes, which you choose by winding through the menu, and the panes
have slices, which are choosen with a mouse up even. I am starting a
cleaner rewrite that emulates the XMenu interface and incorperates
some new ideas. I don't want to use too much of that code, though.
It's gross and disgusting and very pulldown oriented. 

One thing that's easy and useful to implement: when you add a slice to
a menu, you give it a size parameter. When the menu is computed, all
the slice sizes are added up, and each slice is made 360*size/total
degrees of arc in size. So if they're all the same number, they will
all be the same size. If you give each in 100*percentage of pie,
and the total is 100, it will do the right thing. If you give them all
in degrees of arc, and the total is 360, it will do the right thing.

I'm also implementing inactive slices, which can't be choosen. (i.e.
return NO_SELECTION when choosen.)

You may look in brillig:~don/piemenu to see what I did on this last
night. There are still several functions I'd like to add and change.
Next step is to drink lots of tea and pour all the code in. 

	-Don
