%! /usr/NeWS/bin/psh % Interesting NeWS window zapper (NeWS1.1) % % Jeremy Huxtable % % Mon May 22 08:53:57 BST 1989 % A more interesting way of zapping your windows. If you 'psh' this file, % then all windows which you zap from then on will be pushed off the screen % by a small person rather than just boringly disappearing. % Technical note: % The little person is drawn directly onto the framebuffer rather than using % a canvas. The area under it is then marked as damaged using 'extenddamage' % and is redrawn automatically. Canvases? Who needs canvases anyway? { /ThingWidth 16 def /ThingHeight 20 def /MoveDelta 15 def /Things [/man1 /man2 /man3 /man4 /man5] def /destroy { gsave framebuffer setcanvas 0 setgray clippath pathbbox pop 3 1 roll pop pop % fb_width FrameX sub MoveDelta div 1 sub 1 1 3 -1 roll { Iconic? { IconX ThingWidth sub 1 sub IconY moveto Things IconX MoveDelta div cvi Things length mod get showicon IconX MoveDelta add IconY move IconX MoveDelta sub ThingWidth sub 1 sub IconY } { FrameX ThingWidth sub 1 sub FrameY moveto Things FrameX MoveDelta div cvi Things length mod get showicon FrameX MoveDelta add FrameY move FrameX MoveDelta sub ThingWidth sub 1 sub FrameY } ifelse ThingWidth ThingHeight rectpath extenddamage pause } for grestore DestroyFrame DestroyClient } def } DefaultWindow send