1
0
mirror of synced 2026-01-12 00:42:56 +00:00
Interlisp.medley/lispusers/NEATICONS.TEDIT
2020-11-15 19:22:14 -08:00

25 lines
29 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

en·vÅos NEATICONS
2
4
1
NEATICONS
1
4
By: Peter Schachte (quintus!pds@Sun.com)
INTRODUCTION
If you like to keep your icons neatly arranged on your screen, NEATICONS is for you. After this package is loaded, whenever an icon is created by shrinking a window, that icon will be "neat." But what is a neat icon? A neat icon is one that is lined up with with another icon or window, or the edge of the screen. The easiest way to see this is to load the package, shrink a few windows (creating a snapshot and shrinking it is easy), and move them around. When a neat icon is moved near another icon or window or the edge of the screen, it is "grabbed" and moved neatly near it.
Neat icons line themselves up in a variety of ways. They will flush themselves with the edge of the screen. They will move themselves a fixed number of pixels from the edge of another window. Or they will align one of their edges with the corresponding edge of another window. When you move a neat icon, it will try to find a "neat" position near where you placed it, and place the window there instead. It may find a nearby position that is horizontally neat but not vertically, or vice versa. In any case, it will move the window into the nearest neat position it can find, or leave it where you put it if it can't find any nearby neat places.
EXAMPLES
Here are a few examples of how your icons will be arranged. A typical cluster of neat icons:
MÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøâ""""""""""""""""""""""""""""""""""""""""8â""""""""""""""""""""""""""""""""""""""""8Ȉˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜Èˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜â""""""""""""""""""""""""""""""""""""""""8â""""""""""""""""""""""""""""""""""""""""8Ȉˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜Èˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜â""""""""""""""""""""""""""""""""""""""""8â""""""""""""""""""""""""""""""""""""""""8Ȉˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜Èˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜â""""""""""""""""""""""""""""""""""""""""8â""""""""""""""""""""""""""""""""""""""""8Ȉˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜Èˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜â""""""""""""""""""""""""""""""""""""""""8â""""""""""""""""""""""""""""""""""""""""8Ȉˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜Èˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜â""""""""""""""""""""""""""""""""""""""""8â""""""""""""""""""""""""""""""""""""""""8Ȉˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜Èˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜â""""""""""""""""""""""""""""""""""""""""8â""""""""""""""""""""""""""""""""""""""""8Ȉˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜Èˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜â""""""""""""""""""""""""""""""""""""""""8â""""""""""""""""""""""""""""""""""""""""8Èÿÿÿÿÿÿüˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜Èÿÿÿÿÿÿüˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜â#""""""""""""""""""""""""""""""""8â#""""""""""""""""""""""""""""""""8È ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜È‹ÿŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜â#Ž""""""""""""""""""""""""""""""""8â#Ž""""""""""""""""""""""""""""""""8ÈÿÿÀ8Œˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜È‹Œˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜â#{ÑCŽ""""""""""""""""""""""""""""""""8â#BJLÿŽ""""""""""""""""""""""""""""""""8È{Äp ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜È‹
XÿŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ˜â#zFŽ""""""""""""""""""""""""""""""""8â#AˆŽ""""""""""""""""""""""ÿÿÿÿÿÿÿÿÿøÈ‹ÿÿÀhŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÿÿÿÿÿÿÿÿÿÿøÈ‹Œˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆà8â#Ž""""""""""""""""""""""`8â#Ž""""""""""""""""""""""gÿÿÿÿÿÿÿÿÿ8ÈŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆäŒˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆä8â#Ž""""""""""""""""""""""d8â#ÿŽ""""""""""""""""""""""d ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆäÿÿþ ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆä8â#ÿÿÿÿÿÿþ""""""""""""""""""""""d8â#ÿÿÿÿÿÿþ""""""""""""""""""""""dÿˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆäˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆäÿò8â""""""""""""""""""""""""""""""d8â""""""""""""""""""""""""""""""dÿÿÿÿÿÿüˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆäÿÿþÿÿÿÿÿÿüˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆä8â#""""""""""""""""""""""d8â#""""ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâ"dÿÿü ˆˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèˆäÿÿüÿŒˆˆˆˆàxˆä8â#Ž""""`z"d8â#Ž""""`n"dÿðÿÿÀ8ŒˆˆˆˆàÀfˆäŒˆˆˆˆá€cˆä8â#{ÑCŽ""""a€a¢d8â#BJLÿŽ""""c`âd{Äp ˆˆˆˆã`hä
XÿŒˆˆˆˆãøä8â#zFŽ""""cúd8â#AˆŽ""""c
°dxqÿÿÀhŒˆˆˆˆá<CB86>°äD‰!Œˆˆˆˆá€äDaA8â#Ž""""`ÀdD À8â#Ž""""`dD‰Œˆˆˆˆàäxq Œˆˆˆˆàä8â#Ž""""`d8â#ÿŽ""""`d ˆˆˆˆàäAxúAñÄ ˆˆˆˆàäA"DA"8â#ÿÿÿÿÿÿþ""""`dADòAá<41>8â#ÿÿÿÿÿÿþ""""`dAxA@<40>ˆˆˆˆˆˆˆˆˆˆˆˆàäA"@A!ˆˆˆˆˆˆˆˆˆˆˆˆàä}@}ñÂ8â""""""""""""`d8â""""""""""""`$ üdÿÿÿÿÿÿÿÿøˆˆà& @0€äÿÿÿÿÿÿÿÿøˆˆà%(@(€äÇÏ 8â#ÿÿÿÿÿÿÿÿú""`$Iø(~$€d$ˆ¨U*8â#ÀDà ""`$ID@$€d<>p9ÿÿÿÿÿÿÿÿþˆˆà$R)|@"€äD¨T*à6 ƒˆˆà$2@!€ä$8â#ÿÿÿÿÿáÿÿÿâ"`Ä ü‚dáÇȈ8â#|? >"`d?ÿÿÿÿÿÿÿÿÿøàäÿÿÿÿÿÿÿÿÿøàä8â#ÿÿÿÿÿÿÿÿÿú`d8â#ø:`d8ä8ä8â#8:`d8â#8:`d8 çÿÿÿÿÿÿÿÿÿ8È8à8â#8:``8â#8:`ÿÿÿÿÿÿÿÿÿøÈ‹8ÿÿÿÿÿÿÿÿÿÿøÈ‹8ˆˆˆˆˆˆˆˆˆˆ˜â#8:`""""""""""8â#8:`""""""""""8È8ßÌpˆˆˆˆˆˆˆˆˆˆ˜È‹8²Øÿÿÿÿÿÿÿÿÿÿøâ#8¸ð:` ÿÿÿÿÿÿÿÿÿøâ#8œð:``8ŽØà8¦Ì8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøçÿÿÿÿÿÿÿÿÿ8â#8Æ:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúd8â#8:""""""""""""""""""d88ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆä8Àp8ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆä8â#q8:""""""""""""""""""dÿÿþ8â#¸:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâ"d¸6ÏŸl>q€8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèˆä8f,Øl0ÈÀ8àxˆäÿÂ8â#@8ÆŒØl0à`:`z"d8â#¹†ÌÞl<p0:`n"dÿò¸Æï˜l08`8àÀfˆä8fll0˜À8á€cˆä8â#87ÙÌo¾q€:a€a¢dÿÿþ8â#`8:c`âdX¸`hä8øäÿÿü8â#¸:cúdÿÿü8â#¸:c
°d8g>øÀ<38>°ä8l°Ì`8á€äÿð8â#`8n0Ì0:`Àd8â#A8g<ø:`dP¸c°Ì0äL¸i°Ì`ä8â#x¸Ç>ÌÀ:`d8â#N¸:`d¸ä¸ä8â#8:`d8â#`8:`d@;›áÙãÎgä@;ƒ6nl€8àä8â#p;Ûƒon:`d#è<y8â#N»ÛÆÃog:`ø þþAd"!"DˆŠ…Q8ÈA»{Ãmã€8à €aä#È!"DP‡`»{ã6mé˜P€QäÂ!<x j…A8â#;;ìcãÌç:`“ðPüId"! @ 8â#8:`ˆ€Id"ž @ € 8Rø€Eä € 8È82€Cä8â#8:`ùþAd8â#8:`d 8~ûæüä¨8Ã60
äp8â#8Ã60Á€:`d¨8â#8ó60Ã:`d 8Ã60ä8Ã60Ìä8â#8ûæ0Ï€:`d8â#8@:`d8@ ä8ä8â#8:`d8â#8:`d8ä8ä8â#8:`d8â#€8:`d8ȉÀ8ä8ȉà8ä8â"ø8:` gÿÿÿÿÿÿÿÿÿ8â"~8:``ˆŸÿÿÿÿÿÿÿÿÿøààˆ<C388>ÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø
Neat icons can align themselves with the side of a window:
 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÆpDDDDDDDDDDDLÊ0ˆ@"ÊPˆDF€"ÒpDI€DDDDDDDDDDDLÒ‰ò$HŸ"DDDDDDDDDDDL߈äH€"ˆ$É€"Â|p#F€DDDDDDDDDDDLÀDDDDDDDDDDDLÀÀÀDDDDDDDDDDDLÀDDDDDDDDDDDLÄ Ì`@"Ô E"DDDDDDDDDDDLÄ FL€DDDDDDDDDDDLÄ!ò$H"Ä äH"Ä &H"DDDDDDDDDDDLßø%ˆDDDDDDDDDDDLÀÀÀDDDDDDDDDDDLÀDDDDDDDDDDDLÀÎ Ñ`@"DDDDDDDDDDDLÑ E"DDDDDDDDDDDLÎ FL€Ñ!ò$H"Ñ äH"DDDDDDDDDDDLÑ &H"DDDDDDDDDDDLÎø%ˆÀÀDDDDDDDDDDDLÀDDDDDDDDDDDLÀÀÎ8pàDDDDDDDDDDDLÑDˆ "DDDDDDDDDDDLÐD€$A"Þð$Aщð$A"DDDDDDDDDDDLÑ ˆ$A"DDDDDDDDDDDLÑ@ˆ"Î|pÃAÀDDDDDDDDDDDLÀDDDDDDDDDDDLÀÀÀDDDDDDDDDDDLÎ8pàDDDDDDDDDDDLÑDˆ "ÑD€$A"Âð$ADDDDDDDDDDDLĉð$A"DDDDDDDDDDDLÈ ˆ$A"Ð@ˆ"ß|pÃADDDDDDDDDDDLÀDDDDDDDDDDDLÀÀÀDDDDDDDDDDDLÀDDDDDDDDDDDLÆ8pàÊDˆ "ÊDˆ#"DDDDDDDDDDDLÒˆ L€ÿÿÿÿÿÿÿÿÿôLÒyð#ÈŸ"ÿÿÿÿÿÿÿÿÿñß $H€"`1Â@ˆ$H€"`4LÂ|pÃÈ€gÿÿÿÿÿÿÿÿÿ4LÀd1Àd1Àd4LÀd4LÀdÿÿþ1ßpàd1Ј "d4LÐ#"dÿÂ4LÞð L€d1щð#ÈŸ"dÿò1Áˆ$H€"d4Lш$H€"d4LÎpÃÈ€dÿÿþ1Àd1Àd4LÀdÿÿü4LÀdÿÿü1Àd1ÎpÀd4LÑ0ˆ "dÿð4LÑP€#‡"d1Ñð$H€d1ωò'È"d4LÁˆ$"d4Lш$H€"d1Î|pÇd1Àd4LÀdxq4LÀdD‰!1ÀdDaA1ÀdD À4LßpÀdD‰4LÐ0ˆ "dxq 1ÐP€#‡"d1Þð$H€d4Lщò'È"d4LÁˆ$"dAxúAñÄ1ш$H€"dA"DA"1Î|pÇdADòAá<41>4LÀdAxA@<40>4LÀdA"@A!1Àd}@}ñÂ1Àd4LÀd4LÎøàd1Ñ "dÇÏ 1Ñ$K"d$ˆ¨U*4LÂð$L€d<>p94Lĉð$HŸ"dD¨T*1È$H€"d$1Ј$È€"dáÇȈ4LßpÃH€d4LÀd1Àd1Àd4LÀd4LÀd1Î8pÀd1ÑDˆ "d4LÓ˜#‡"d4LÕ$H€gÿÿÿÿÿÿÿÿÿ1Õ©ò'È"`1ÙÈ$"`4LÑDˆ$H€"ÿÿÿÿÿÿÿÿÿôLÎ8pÇÿÿÿÿÿÿÿÿÿñÀÀDDDDDDDDDDDLÀDDDDDDDDDDDLÀÀÄpàDDDDDDDDDDDL̈ "DDDDDDDDDDDLÔ#"Äp L€Ä ð#ÈŸ"DDDDDDDDDDDLÄ$H€"DDDDDDDDDDDLĈ$H€"ßpÃÈ€ÀDDDDDDDDDDDLÀDDDDDDDDDDDLÀÀÀDDDDDDDDDDDLÄpàDDDDDDDDDDDLÌ"0ˆ"Ô"Pˆ"ĈÄL€DDDDDDDDDDDLÄÈŸ"DDDDDDDDDDDLÄ€"Ä ˆL€"ß>|pDDDDDDDDDDDLÀDDDDDDDDDDDLÀÀÀDDDDDDDDDDDLÀDDDDDDDDDDDLÎ8pÀÑDˆ "ÐDˆ#"DDDDDDDDDDDLÞp„L€DDDDDDDDDDDLщðGÈŸ"Ñ ˆ$€"Ñ@ˆ$L€"DDDDDDDDDDDLÎ|pËDDDDDDDDDDDLÀÀÀDDDDDDDDDDDLÀDDDDDDDDDDDLÀÆ8pÀÊDˆ "DDDDDDDDDDDLʘ#‡"DDDDDDDDDDDLÒ$H€Ò©ò'È"ßÈ$"DDDDDDDDDDDLÂDˆ$H€"DDDDDDDDDDDLÂ8pÇÀÀDDDDDDDDDDDLÀDDDDDDDDDDDLÀÀßøÀDDDDDDDDDDDLÐ "DDDDDDDDDDDLÐ#‡"Þð$H€щò'È"DDDDDDDDDDDLÁ$"DDDDDDDDDDDLш$H€"ÎpÇÀDDDDDDDDDDDLÀDDDDDDDDDDDLÀÀÀDDDDDDDDDDDLß8p DDDDDDDDDDDLÁDˆ`"ÂDˆc" L€DDDDDDDDDDDLÄ!ò£È"DDDDDDDDDDDLÄ @¤H"È@€¤H"ÈDDDDDDDDDDDLÀDDDDDDDDDDDLÀÀÀDDDDDDDDDDDLÀDDDDDDDDDDDLß ÀÐ0` "ÐP #<23>"DDDDDDDDDDDLÞ $DDDDDDDDDDDDLÑ!ò$"Á $"Ñ $D€"DDDDDDDDDDDLÎÃDDDDDDDDDDDLÀÀÀDDDDDDDDDDDLÀDDDDDDDDDDDLÀÎpÀш "DDDDDDDDDDDLÁˆ#‡"DDDDDDDDDDDLÎp$H€Á‰ò'È"Áˆ$"DDDDDDDDDDDLш$H€"DDDDDDDDDDDLÎpÇÀÀDDDDDDDDDDDLÀDDDDDDDDDDDLÀÀÎp DDDDDDDDDDDLш`"DDDDDDDDDDDLшcˆ€"ÀÀDDDDDDDDDDDLÿÿÿÿÿÿÿÿÿÿüDDDDDDDDDDDLÿÿÿÿÿÿÿÿÿÿùÑÄDDDDDDDDDDDDDDDDDDDDDLÄDDDDDDDDDDDDDDDDDDDDDLÑÑÄDDDDDDDDDDDDDDDDDDDDDLÄDDDDDDDDDDDDDDDDDDDDDLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü
But more typically, they will align themselves with the corner of a window:
Ï]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÀ@ˆ$L€"DDDDDDDDDDDFÀŽ|pËDDDDDDDDDDDFÀÀÀDDDDDDDDDDDFÀDDDDDDDDDDDFÀÀ8pÀÀ
Dˆ "DDDDDDDDDDDFÀ
˜#‡"ÿÿÿÿÿÿÿÿÿôFÀ$H€ÿÿÿÿÿÿÿÿÿñÀ©ò'È"`1ÀÈ$"`4FÀDˆ$H€"gÿÿÿÿÿÿÿÿÿ4FÀ8pÇd1Àd1Àd4FÀd4FÀdÿÿþ1Àd1ÀøÀd4FÀ "dÿÂ4FÀ
#‡"d1Àð$H€dÿò1À‰ò'È"d4FÀ$"d4FÀˆ$H€"dÿÿþ1ÀŽpÇd1Àd4FÀdÿÿü4FÀdÿÿü1Àd1Àd4FÀ8p dÿð4FÀDˆ`"d1ÀDˆc"d1À L€d4FÀ!ò£È"d4FÀ @¤H"d1À@€¤H"d1Àd4FÀdxq4FÀdD‰!1ÀdDaA1ÀdD À4FÀdD‰4FÀ Àdxq 1À<08>0` "d1À<08>P #<23>"d4FÀ $Dd4FÀ!ò$"dAxúAñÄ1À $"dA"DA"1À $D€"dADòAá<41>4FÀŽÃdAxA@<40>4FÀdA"@A!1Àd}@}ñÂ1Àd4FÀd4FÀd1ÀpÀdÇÏ 1Àˆ "d$ˆ¨U*4FÀˆ#‡"d<>p94FÀ p$H€dD¨T*1À ‰ò'È"d$1À<0F>ˆ$"dáÇȈ4FÀˆ$H€"d4FÀpÇd1Àd1Àd4FÀd4FÀd1Àd1Àp d4FÀˆ`"d4FÀ
ˆcˆ€"gÿÿÿÿÿÿÿÿÿ1À`1À`4FÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿÿÿôFÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿÿÿÿÿÿÿñÑÄDDDDDDDDDDDDDDDDDDDDDDDDFÄDDDDDDDDDDDDDDDDDDDDDDDDFÑÑÄDDDDDDDDDDDDDDDDDDDDDDDDFÄDDDDDDDDDDDDDDDDDDDDDDDDFÑÑÄDDDDDDDDDDDDDDDDDDDDDDDDFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ
And they occasionally align themselves near the corner where two windows overlap:
ê«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀØ00ÀØ00ÀØ@00ÀØ@00ÀØ 00ÀØ 00ÀØ00ÀØ00ÀØ00ÀØ00ÀØ00ÀØ00ÀØ00À؈Eg<E28099>Î1žc00ÀØš˜nR”)JP”°60t¸È,“<ÀØZˆ~R„)J„09H&¥(ƒr” ÀØ\ˆVRgÎJc01H'¥(ƒò” ÀØVR
J¿ÿÿÿò0'¥*²“8À؈FR” JP”°1H%¥*²<E2809A> ÀØœEŒg 1žc09H%¥/¢2” ÀØ060
t¸Å",c<ÀØ00Àø00Àø00ÀÀ00ÀÀ00ÀÀ00ÀÀ00ÀÀ00ÀÀ00ÀÀ00ÀÀ00ÀÀ00ÀÀ00ÀÀ00ÀÀ00ÀÀ00ÀÀ0?ÿÿÿÿÿÿÿÿÿÀÀÿÿÿÿÿÿÿÿÿÿð?ÿÿÿÿÿÿÿÿÿÀÀÿÿÿÿÿÿÿÿÿÿðÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀ ˆˆˆˆˆˆˆˆˆˆˆˆˆˆÀÀ""""""""""""""ÀÀ""""""""""""""ÀÀ ˆˆˆˆˆˆˆˆˆˆˆˆˆˆÀÀ ¿ÿÿÿÿÿÿÿÿÿøˆˆˆÀÀ?ÿÿÿÿÿÿÿÿÿú"""ÀÀ0"""ÀÀ °ˆˆˆÀÀ ³ÿÿÿÿÿÿÿÿÿ˜ˆˆˆÀÀ2š"""ÀÀ2š"""ÀÀ ²˜ˆˆˆÀÀ ²˜ˆˆˆÀÀ2ÿÿÿš"""ÀÀ2š"""ÀÀ ²˜ˆˆˆÀÀ ²ÿᘈˆˆÀÀ2š"""ÀÀ2?ÿùš"""ÀÀ ²˜ˆˆˆÀÀ ²˜ˆˆˆÀÀ2ÿÿÿš"""ÀÀ2š"""ÀÀ ²˜ˆˆˆÀÀ ²ÿÿþ˜ˆˆˆÀÀ2ÿÿþš"""ÀÀ2š"""ÀÀ ²@˜ˆˆˆÀÀ ²?ÿø˜ˆˆˆÀÀ2š"""ÀÀ2š"""ÀÀ ²˜ˆˆˆÀÀ ²˜ˆˆˆÀÀ2š"""ÀÀ2š"""ÀÀ ²˜ˆˆˆÀÀ ²<8ˆ˜ˆˆˆÀÀ2"D<>š"""ÀÀ@2"0 š"""ÀÀ@ ² "Ð`˜ˆˆˆÀÀ@ ²"Dˆ˜ˆˆˆÀÓDÇN8@2<8„€š"""ÀÔ )$A$@2š"""ÀÓ )äG$ ²˜ˆˆˆÀà‰I$ ²˜ˆˆˆÀãäG8@2 Ž<} øâš"""ÀÀ @2 "A <20>š"""ÀÀ ² Œ"y ðÀ€˜ˆˆˆÀÀ ² <A € @˜ˆˆˆÀÀ2 A <20>€š"""ÀÀ2>Ž A>øáš"""ÀÀ ²˜ˆˆˆÀÀ ²˜ˆˆˆÀÀ2š"""ÀÀ2ˆã爚"""ÀÀ ²DT*•˜ˆˆˆÀÀ ²ˆÃÇ8Ž˜ˆˆˆÀÀ2ˆ"AT*š"""ÀÀ2Bš"""ÀÀ ²pãäDÀ˜ˆˆˆÀÀ ²@˜ˆˆˆÀÀ2š"""ÀÀ2š"""ÀÀ ²˜ˆˆˆÀÀ ²˜ˆˆˆÀÀ2š"""ÀÀ2š"""ÀÀ ²˜ˆˆˆÀÀ ²˜ˆˆˆÀÀ3ÿÿÿÿÿÿÿÿÿš"""ÀÀ0"""ÀÀ °ˆˆˆÀÀ ¿ÿÿÿÿÿÿÿÿÿøˆˆˆÀÀ?ÿÿÿÿÿÿÿÿÿú"""ÀÀ""""""""""""""ÀÀ ˆˆˆˆˆˆˆˆˆˆˆˆˆˆÀÀ ˆˆˆˆˆˆˆˆˆˆˆˆˆˆÀÀ""""""""""""""ÀÀ""""""""""""""ÀÀ ˆˆˆˆˆˆˆˆˆˆˆˆˆˆÀÀ ˆˆˆˆˆˆˆˆˆˆˆˆˆˆÀÀ""""""""""""""ÀÀ""""""""""""""ÀÀ ˆˆˆˆˆˆˆˆˆˆˆˆˆˆÀÀ ˆˆˆˆˆˆˆˆˆˆˆˆˆˆÀÀ""""""""""""""ÀÀ""""""""""""""ÀÀ ˆˆˆˆˆˆˆˆˆˆˆˆˆˆÀÀ ˆˆˆˆˆˆˆˆˆˆˆˆˆˆÀÀ""""""""""""""ÀÀ""""""""""""""ÀÀ ˆˆˆˆˆˆˆˆˆˆˆˆˆˆÀÀ ˆˆˆˆˆˆˆˆˆˆˆˆˆˆÀÀ""""""""""""""ÀÀ""""""""""""""ÀÀ ˆˆˆˆˆˆˆˆˆˆˆˆˆˆÀÀ ˆˆˆˆˆˆˆˆˆˆˆˆˆˆÀÀ""""""""""""""ÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ
DETAILS
You can just load this module and forget about it, and it will behave as advertised. It does have two user-settable parameters, and two user-callable functions, however. These are documented below.
Please note that the NEATICONS module is contained entirely in the NEATICONS package. This package exports the following symbols.
How near is near?
NEATICONS:DEFAULT-TOLERANCE [Variable]
This global parameter determines how many pixels vertically and horizontally an icon will be moved in order to make it neat. This defaults to 100.
Spacing between icons
NEATICONS:DEFAULT-SPACING [Variable]
This global parameter determines how many pixels apart neat icons will be placed. The default is 5.
Making a window neat
Loading the NEATICONS module causes SHRINKW to be advised, so every time a window is shrunk, the icon is made neat. So icons created before you load NEATICONS will not be neat, but they can be made neat by expanding and then re-shrinking them.
But suppose you want to make a regular window neat?
(NEATICONS:NEATEN &OPTIONAL WINDOW) [Function]
makes WINDOW neat. WINDOW defaults to (WHICHW), so you can point at a window with the mouse and type (NEATICONS:NEATEN).
Making a window sloppy
(NEATICONS:UNNEATEN &OPTIONAL WINDOW) [Function]
makes WINDOW no longer neat. It behaves just like a normal, sloppy, vanilla window. WINDOW defaults to (WHICHW).
Other MOVEFNs
The NEATICONS module uses each window's MOVEFN prop. If you wish to have another MOVEFN on a neat window, you can. If a window has MOVEFN when it is NEATICONS:NEATENed, it will be preserved. If you wish to add a MOVEFN to an existing neat window, you should put it on the window's
NEATICONS:USERMOVEFN [Window Prop]
prop. This prop should hold a list of functions. When a neat window is moved, first it finds the nearest neat place. Then the first function on the window's NEATICONS:USERMOVEFN prop is called with the neat position as argument. If this function returns IL:DON'T, the window won't be moved. If it returns NIL, the position argument it was passed is passed to the second function on the list. If it returns a position, this position is passed to the second function on the list. The result of each function on the list is treated similarly, until all the functions have been called. The latest position is used as the position to move the window to.(LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "") STARTINGPAGE# 154) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (174 42 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE NIL . LETTER) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO NIL) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE NIL . LETTER) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO NIL) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))))) -ÈT-ÈT3ÈÈT,È3ÈT,È,È ,È,ŠŠ8,ŠŠ8HÈÈ PAGEHEADING RUNNINGHEAD CLASSICCLASSICCLASSIC HELVETICA
MODERN
MODERN
MODERN MODERNMODERN
 
  HRULE.GETFNMODERN

 HRULE.GETFNMODERN

 HRULE.GETFNMODERN

  HRULE.GETFNMODERN 
 HRULE.GETFNMODERN * Ë |Œ ^Œ BMOBJ.GETFN3MODERN
;ä BMOBJ.GETFN3MODERN
L ~ BMOBJ.GETFN3MODERN
R BMOBJ.GETFN3MODERN
Ƀ | 03õ3# z% r<02>wzº