ken@uunet.UU.NET (Ken Marks (x2425)) (08/21/90)
Submitted-by: balr!panasun!ken@uunet.UU.NET (Ken Marks (x2425)) Posting-number: Volume 8, Issue 79 Archive-name: chaos/part03 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 3 (of 10)." # Contents: fonts/push-norm.bdf master/master.c widgets/Palette.c # Wrapped by ken@panasun on Mon Jul 30 14:59:48 1990 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'fonts/push-norm.bdf' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'fonts/push-norm.bdf'\" else echo shar: Extracting \"'fonts/push-norm.bdf'\" \(18706 characters\) sed "s/^X//" >'fonts/push-norm.bdf' <<'END_OF_FILE' XSTARTFONT 2.1 XFONT push-norm XSIZE 16 75 75 XFONTBOUNDINGBOX 9 22 0 -7 XSTARTPROPERTIES 3 XFONT_ASCENT 15 XFONT_DESCENT 7 XDEFAULT_CHAR 32 XENDPROPERTIES XCHARS 99 XSTARTCHAR H1c XENCODING 28 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP X0380 X0F80 X1E00 X3800 X7000 X6000 XE000 XC000 XC000 XC000 XC000 XC000 XC000 XC000 XC000 XE000 X6000 X7000 X3800 X1E00 X0F80 X0380 XENDCHAR XSTARTCHAR H1d XENCODING 29 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XE000 XF800 X3C00 X0E00 X0700 X0300 X0380 X0180 X0180 X0180 X0180 X0180 X0180 X0180 X0180 X0380 X0300 X0700 X0E00 X3C00 XF800 XE000 XENDCHAR XSTARTCHAR H1e XENCODING 30 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 0 0 15 XBITMAP XENDCHAR XSTARTCHAR H1f XENCODING 31 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 7 9 0 1 XBITMAP X20 X30 X38 XFC XFE XFC X38 X30 X20 XENDCHAR XSTARTCHAR H20 XENCODING 32 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H21 XENCODING 33 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X1800 X1800 X1800 X1800 X1800 X1800 X1800 X0000 X1800 X1800 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H22 XENCODING 34 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X3600 X3600 X3600 X3600 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H23 XENCODING 35 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X1B00 X1B00 X1B00 X7F80 X3600 X3600 XFF00 X6C00 X6C00 X6C00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H24 XENCODING 36 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0800 X3E00 X6B00 X6B00 X6B00 X3800 X0E00 X6B00 X6B00 X6B00 X3E00 X0800 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H25 XENCODING 37 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X7600 X9600 X9C00 XEC00 X1800 X1800 X3700 X3900 X6900 X6E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H26 XENCODING 38 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X3800 X6C00 X6C00 X3800 X3000 X7B00 XDE00 XCC00 XDC00 X7700 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H27 XENCODING 39 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0C00 X0C00 X1800 X3000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H28 XENCODING 40 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0600 X0C00 X1800 X1800 X3000 X3000 X3000 X3000 X3000 X1800 X1800 X0C00 X0600 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H29 XENCODING 41 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X3000 X1800 X0C00 X0C00 X0600 X0600 X0600 X0600 X0600 X0C00 X0C00 X1800 X3000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H2a XENCODING 42 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X1800 X5A00 X7E00 X3C00 X7E00 X5A00 X1800 X0000 X0000 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H2b XENCODING 43 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X1800 X1800 X1800 XFF00 XFF00 X1800 X1800 X1800 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H2c XENCODING 44 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X1800 X1800 X0800 X1000 X2000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H2d XENCODING 45 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X7F00 X7F00 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H2e XENCODING 46 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X1800 X1800 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H2f XENCODING 47 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0300 X0600 X0600 X0C00 X0C00 X1800 X1800 X3000 X3000 X6000 X6000 XC000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H30 XENCODING 48 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X3E00 X6300 X6700 X6700 X6B00 X6B00 X7300 X7300 X6300 X3E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H31 XENCODING 49 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0C00 X1C00 X3C00 X0C00 X0C00 X0C00 X0C00 X0C00 X0C00 X3F00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H32 XENCODING 50 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X3E00 X6300 X6300 X0300 X0600 X0C00 X1800 X3000 X6100 X7F00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H33 XENCODING 51 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X3E00 X6300 X6300 X0300 X1E00 X0700 X0300 X6300 X6300 X3E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H34 XENCODING 52 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0200 X0600 X0E00 X1E00 X3600 X6600 XC600 XFF00 X0600 X0600 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H35 XENCODING 53 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X7F00 X6000 X6000 X7E00 X0300 X0300 X0300 X6300 X6300 X3E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H36 XENCODING 54 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X3E00 X6300 X6000 X6000 X7E00 X6300 X6300 X6300 X6300 X3E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H37 XENCODING 55 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X7F00 X4300 X4300 X0600 X0600 X0C00 X0C00 X1800 X1800 X1800 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H38 XENCODING 56 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X3E00 X6300 X6300 X6300 X3E00 X6300 X6300 X6300 X6300 X3E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H39 XENCODING 57 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X3E00 X6300 X6300 X6300 X6300 X3F00 X0300 X0300 X6300 X3E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H3a XENCODING 58 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X1800 X1800 X0000 X0000 X0000 X1800 X1800 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H3b XENCODING 59 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X1800 X1800 X0000 X0000 X0000 X1800 X1800 X0800 X1000 X2000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H3c XENCODING 60 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0300 X0600 X0C00 X1800 X3000 X6000 X3000 X1800 X0C00 X0600 X0300 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H3d XENCODING 61 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X7F00 X7F00 X0000 X0000 X7F00 X7F00 X0000 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H3e XENCODING 62 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X6000 X3000 X1800 X0C00 X0600 X0300 X0600 X0C00 X1800 X3000 X6000 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H3f XENCODING 63 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X3E00 X6300 X6300 X0300 X0600 X0C00 X0C00 X0000 X0C00 X0C00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H40 XENCODING 64 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X1C00 X3600 X6300 X6F00 X6B00 X6B00 X6E00 X6000 X3300 X1E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H41 XENCODING 65 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0800 X1C00 X1C00 X3600 X3600 X3600 X6300 X7F00 X6300 X6300 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H42 XENCODING 66 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X7C00 X6600 X6600 X6600 X7C00 X6600 X6300 X6300 X6300 X7E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H43 XENCODING 67 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X3E00 X6300 X6300 X6000 X6000 X6000 X6000 X6300 X6300 X3E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H44 XENCODING 68 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X7C00 X6600 X6300 X6300 X6300 X6300 X6300 X6300 X6600 X7C00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H45 XENCODING 69 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X7F00 X6000 X6000 X6000 X7E00 X6000 X6000 X6000 X6000 X7F00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H46 XENCODING 70 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X7F00 X6000 X6000 X6000 X7E00 X6000 X6000 X6000 X6000 X6000 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H47 XENCODING 71 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X3E00 X6300 X6300 X6000 X6000 X6700 X6300 X6300 X6700 X3D00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H48 XENCODING 72 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X6300 X6300 X6300 X6300 X7F00 X6300 X6300 X6300 X6300 X6300 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H49 XENCODING 73 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X7E00 X1800 X1800 X1800 X1800 X1800 X1800 X1800 X1800 X7E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H4a XENCODING 74 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X1F00 X0600 X0600 X0600 X0600 X0600 X0600 X6600 X6600 X3C00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H4b XENCODING 75 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X6300 X6600 X6C00 X7800 X7C00 X6C00 X6600 X6600 X6300 X6300 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H4c XENCODING 76 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X6000 X6000 X6000 X6000 X6000 X6000 X6000 X6000 X6000 X7F00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H4d XENCODING 77 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 XC300 XC300 XE700 XE700 XFF00 XDB00 XDB00 XC300 XC300 XC300 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H4e XENCODING 78 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X6300 X6300 X7300 X7300 X7B00 X6B00 X6F00 X6700 X6700 X6300 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H4f XENCODING 79 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X3E00 X6300 X6300 X6300 X6300 X6300 X6300 X6300 X6300 X3E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H50 XENCODING 80 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X7E00 X6300 X6300 X6300 X6300 X7E00 X6000 X6000 X6000 X6000 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H51 XENCODING 81 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X3E00 X6300 X6300 X6300 X6300 X6300 X6300 X6300 X6300 X3E00 X1800 X0C00 X0700 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H52 XENCODING 82 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X7E00 X6300 X6300 X6300 X7E00 X6C00 X6600 X6600 X6300 X6300 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H53 XENCODING 83 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X3E00 X6300 X6300 X3000 X1C00 X0600 X0300 X6300 X6300 X3E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H54 XENCODING 84 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 XFF00 X1800 X1800 X1800 X1800 X1800 X1800 X1800 X1800 X1800 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H55 XENCODING 85 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X6300 X6300 X6300 X6300 X6300 X6300 X6300 X6300 X6300 X3E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H56 XENCODING 86 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X6300 X6300 X6300 X3600 X3600 X3600 X1C00 X1C00 X0800 X0800 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H57 XENCODING 87 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 XC180 XC980 XC980 XDD80 X5D00 X7700 X7700 X3600 X2200 X2200 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H58 XENCODING 88 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X6300 X6300 X3600 X3600 X1C00 X1C00 X3600 X3600 X6300 X6300 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H59 XENCODING 89 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 XC300 XC300 X6600 X6600 X3C00 X1800 X1800 X1800 X1800 X1800 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H5a XENCODING 90 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X7F00 X0300 X0300 X0600 X0C00 X1800 X3000 X6000 X6000 X7F00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H5b XENCODING 91 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X3E00 X3000 X3000 X3000 X3000 X3000 X3000 X3000 X3000 X3000 X3000 X3000 X3E00 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H5c XENCODING 92 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 XC000 X6000 X6000 X3000 X3000 X1800 X1800 X0C00 X0C00 X0600 X0600 X0300 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H5d XENCODING 93 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X3E00 X0600 X0600 X0600 X0600 X0600 X0600 X0600 X0600 X0600 X0600 X0600 X3E00 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H5e XENCODING 94 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0800 X1C00 X3600 X6300 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H5f XENCODING 95 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H60 XENCODING 96 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X3000 X3000 X1800 X0C00 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H61 XENCODING 97 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X3C00 X6600 X0600 X3E00 X6600 X6600 X3F00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H62 XENCODING 98 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X6000 X6000 X6000 X6E00 X7300 X6300 X6300 X6300 X7300 X6E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H63 XENCODING 99 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X3E00 X6300 X6000 X6000 X6000 X6300 X3E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H64 XENCODING 100 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0300 X0300 X0300 X3B00 X6700 X6300 X6300 X6300 X6700 X3B00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H65 XENCODING 101 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X3E00 X6300 X6300 X7F00 X6000 X6300 X3E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H66 XENCODING 102 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0E00 X1B00 X1800 X1800 X7E00 X1800 X1800 X1800 X1800 X1800 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H67 XENCODING 103 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X3B00 X6700 X6300 X6300 X6300 X6700 X3B00 X0300 X6300 X3E00 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H68 XENCODING 104 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X6000 X6000 X6000 X6E00 X7300 X6300 X6300 X6300 X6300 X6300 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H69 XENCODING 105 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0C00 X0C00 X0000 X3C00 X0C00 X0C00 X0C00 X0C00 X0C00 X0C00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H6a XENCODING 106 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0600 X0600 X0000 X1E00 X0600 X0600 X0600 X0600 X0600 X0600 X0600 X6600 X3C00 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H6b XENCODING 107 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X6000 X6000 X6000 X6600 X6C00 X7800 X7800 X6C00 X6600 X6300 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H6c XENCODING 108 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X3C00 X0C00 X0C00 X0C00 X0C00 X0C00 X0C00 X0C00 X0C00 X0C00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H6d XENCODING 109 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 XB600 XDB00 XDB00 XDB00 XDB00 XDB00 XDB00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H6e XENCODING 110 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X5E00 X7300 X6300 X6300 X6300 X6300 X6300 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H6f XENCODING 111 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X3E00 X6300 X6300 X6300 X6300 X6300 X3E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H70 XENCODING 112 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X6E00 X7300 X6300 X6300 X6300 X7300 X6E00 X6000 X6000 X6000 X6000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H71 XENCODING 113 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X3B00 X6700 X6300 X6300 X6300 X6700 X3B00 X0300 X0300 X0300 X0300 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H72 XENCODING 114 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X6E00 X7B00 X6000 X6000 X6000 X6000 X6000 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H73 XENCODING 115 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X3E00 X6300 X6000 X3E00 X0300 X6300 X3E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H74 XENCODING 116 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X1800 X1800 X1800 X7E00 X1800 X1800 X1800 X1800 X1B00 X0E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H75 XENCODING 117 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X6300 X6300 X6300 X6300 X6300 X6700 X3B00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H76 XENCODING 118 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X6300 X6300 X3600 X3600 X1C00 X1C00 X0800 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H77 XENCODING 119 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 XC300 XC300 XDB00 XDB00 XDB00 XDB00 X7E00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H78 XENCODING 120 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X6600 X6600 X3C00 X1800 X3C00 X6600 X6600 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H79 XENCODING 121 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X6300 X6300 X3300 X3600 X1600 X1C00 X0C00 X0C00 X4800 X7800 X3000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H7a XENCODING 122 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X0000 X0000 X7F00 X0600 X0C00 X1800 X3000 X6000 X7F00 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H7b XENCODING 123 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0F00 X1800 X1800 X1800 X1800 X1800 X7000 X1800 X1800 X1800 X1800 X1800 X0F00 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H7c XENCODING 124 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X1800 X1800 X1800 X1800 X1800 X1800 X0000 X1800 X1800 X1800 X1800 X1800 X1800 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H7d XENCODING 125 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X7800 X0C00 X0C00 X0C00 X0C00 X0C00 X0700 X0C00 X0C00 X0C00 X0C00 X0C00 X7800 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XSTARTCHAR H7e XENCODING 126 XSWIDTH 562 0 XDWIDTH 9 0 XBBX 9 22 0 -7 XBITMAP XFF80 XFF80 X0000 X0000 X0000 X0000 X3B00 X7F00 X6E00 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 X0000 XFF80 XFF80 XENDCHAR XENDFONT END_OF_FILE if test 18706 -ne `wc -c <'fonts/push-norm.bdf'`; then echo shar: \"'fonts/push-norm.bdf'\" unpacked with wrong size! fi # end of 'fonts/push-norm.bdf' fi if test -f 'master/master.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'master/master.c'\" else echo shar: Extracting \"'master/master.c'\" \(18472 characters\) sed "s/^X//" >'master/master.c' <<'END_OF_FILE' X/* X * Copyright (c) Ken W. Marks 1989, 1990. X */ X X#include <stdio.h> X#include <fcntl.h> X#include <X11/Intrinsic.h> X#include <X11/StringDefs.h> X#include <X11/Xaw/Form.h> X#include <X11/Shell.h> X#include <Chaos.h> X#include <LocalDefs.h> X#include <Menu.h> X#include <MenuItems.h> X#include <Canvas.h> X#include <Task.h> X#include <Ipc.h> X#include <Colormap.h> X Xstatic void QuitFunc(); Xstatic void DrawFunc(); Xstatic void RedrawFunc(); Xstatic void ZoomFunc(); Xstatic void UnzoomFunc(); Xstatic void RezoomFunc(); Xstatic void TopFunc(); Xstatic void FileFunc(); Xstatic void ColormapFunc(); Xstatic void StartDroneFunc(); Xstatic void SettingsFunc(); X Xextern void MakeTasksStale(); Xextern void WasteTasks(); Xextern void StartDrawing(); Xextern void DialogPopup(); Xextern void ColormapUpdateFileList(); Xextern void FileUpdateFileList(); Xextern void MessageSetup(); Xextern Widget ColormapCreateDialogbox(); Xextern Widget DroneCreateDialogbox(); Xextern Widget FileCreateDialogbox(); Xextern Widget SettingsCreateDialogbox(); Xextern Widget MessageCreateDialogbox(); Xextern Widget ConfirmCreateDialogbox(); Xextern Boolean SaveEverything(); Xextern Boolean LoadEverything(); X Xvoid CleanupAndDie(); Xvoid BlatzZoomStack(); X XDisplay *dpy; XWidget top_level; XWidget canvas; XWidget colormap_dialogbox; XWidget drone_dialogbox; XWidget file_dialogbox; XWidget settings_dialogbox; XWidget message_dialogbox; XWidget confirm_dialogbox; XWidget menu; XBoolean rotating = False; XBoolean rotating_save; XRotation rotation_dir = forward; Xint colormap_alignment; XColormap colormap; Xint zoom_level = 0; Xint num_zoom_levels = 0; X Xstatic Screen *screen; Xstatic Widget menu_popup; Xstatic Window window; Xstatic char default_path[] = "."; Xstatic char message[256]; X Xstatic char *save_failed_msg = X"Cannot write to file '%s/%s'!"; X Xstatic char *load_failed_msg = X"Cannot find file '%s/%s'!"; X X/* default size of tasks */ X#define TASK_WIDTH 30 X#define TASK_HEIGHT 30 X X/* default iteration limit */ X#define ITERATION_LIMIT 256 X Xstruct AppResources X{ X char *map_dir; X char *image_dir; X char *zoom_dir; X int task_width; X int task_height; X Boolean keep_tasks_square; X Boolean retain_aspect_ratio; X int iteration_limit; X char *hosts; X char *drone_path; X} app_resources; X X/* for external access to these application specific resources */ Xchar *map_dir; Xchar *image_dir; Xchar *zoom_dir; Xint task_width; Xint task_height; XBoolean keep_tasks_square; XBoolean retain_aspect_ratio; Xint iteration_limit; Xchar *hosts; Xchar *drone_path; X X#define offset(field) XtOffset(struct AppResources *, field) X Xstatic XtResource resources[] = { X {XtNmapDir, XtCPath, XtRString, sizeof(String), X offset(map_dir), XtRString, (XtPointer) default_path}, X {XtNimageDir, XtCPath, XtRString, sizeof(String), X offset(image_dir), XtRString, (XtPointer) default_path}, X {XtNzoomDir, XtCPath, XtRString, sizeof(String), X offset(zoom_dir), XtRString, (XtPointer) default_path}, X {XtNtaskWidth, XtCWidth, XtRInt, sizeof(int), X offset(task_width), XtRImmediate, (XtPointer) TASK_WIDTH}, X {XtNtaskHeight, XtCHeight, XtRInt, sizeof(int), X offset(task_height), XtRImmediate, (XtPointer) TASK_HEIGHT}, X {XtNkeepTasksSquare, XtCBoolean, XtRBoolean, sizeof(Boolean), X offset(keep_tasks_square), XtRImmediate, (XtPointer) True}, X {XtNretainAspectRatio, XtCBoolean, XtRBoolean, sizeof(Boolean), X offset(retain_aspect_ratio), XtRImmediate, (XtPointer) True}, X {XtNiterationLimit, XtCLimit, XtRInt, sizeof(int), X offset(iteration_limit), XtRImmediate, (XtPointer) ITERATION_LIMIT}, X {XtNhosts, XtCHosts, XtRString, sizeof(String), X offset(hosts), XtRString, (XtPointer) NULL}, X {XtNdronePath, XtCPath, XtRString, sizeof(String), X offset(drone_path), XtRString, (XtPointer) NULL}, X}; X Xstatic XrmOptionDescRec options[] = { X {"-map", "mapDir", XrmoptionSepArg, NULL}, X {"-image", "imageDir", XrmoptionSepArg, NULL}, X {"-zoom", "zoomDir", XrmoptionSepArg, NULL}, X {"-task_width", "taskWidth", XrmoptionSepArg, NULL}, X {"-task_height", "taskHeight", XrmoptionSepArg, NULL}, X {"-square", "keepTasksSquare", XrmoptionNoArg, "False"}, X {"-aspect", "retainAspectRatio", XrmoptionNoArg, "False"}, X {"-limit", "iterationLimit", XrmoptionSepArg, NULL}, X {"-hosts", "hosts", XrmoptionSepArg, NULL}, X {"-drone_path", "dronePath", XrmoptionSepArg, NULL}, X}; X X/* Don't forget to update MenuItems.h if menu_items[] changes */ Xstatic MenuItem menu_items[] = { X {"Draw", DrawFunc, NULL, False}, X {"Redraw", RedrawFunc, NULL, False}, X {"Zoom", ZoomFunc, NULL, False}, X {"Unzoom", UnzoomFunc, NULL, False}, X {"Rezoom", RezoomFunc, NULL, False}, X {"Top", TopFunc, NULL, False}, X {"Files", FileFunc, NULL, True}, X {"Drones", StartDroneFunc, NULL, True}, X {"Colormap", ColormapFunc, NULL, True}, X {"Settings", SettingsFunc, NULL, True}, X {"Quit", QuitFunc, NULL, True}, X {NULL, NULL, NULL, True}, X}; X Xstatic Arg canvas_args[] = { X {XtNresizable, (XtArgVal) True}, X {XtNhorizDistance, (XtArgVal) 0}, X {XtNvertDistance, (XtArgVal) 0}, X {XtNtop, (XtArgVal) XtChainTop}, X {XtNbottom, (XtArgVal) XtChainBottom}, X {XtNleft, (XtArgVal) XtChainLeft}, X {XtNright, (XtArgVal) XtChainRight}, X}; X Xstatic Arg menu_popup_args[] = { X {XtNborderWidth, (XtArgVal) 3}, X}; X Xstatic Arg menu_args[] = { X {XtNmenuItems, (XtArgVal) menu_items}, X}; X X X/*ARGSUSED*/ Xstatic void QuitFunc(widget, data, item) XWidget widget; /* unused */ Xcaddr_t data; /* unused */ XCardinal item; /* unused */ X{ X CleanupAndDie(); X} X X X/*ARGSUSED*/ Xstatic void DrawFunc(widget, data, item) XWidget widget; /* unused */ Xcaddr_t data; /* unused */ XCardinal item; /* unused */ X{ X StartDrawing(canvas); X} X X X/*ARGSUSED*/ Xstatic void RedrawFunc(widget, data, item) XWidget widget; /* unused */ Xcaddr_t data; /* unused */ XCardinal item; /* unused */ X{ X CanvasClear(canvas); X MakeTasksStale(); X WasteTasks(); X StartDrawing(canvas); X} X X X/*ARGSUSED*/ Xstatic void ZoomFunc(widget, data, item) XWidget widget; /* unused */ Xcaddr_t data; /* unused */ XCardinal item; /* unused */ X{ X char filename[32]; X extern Boolean FileExists(); X extern Boolean RemoveFile(); X X BlatzZoomStack(); X X /* We don't bother resaving everything if it hasn't changed since last X * time it was saved. */ X if (CanvasNeedsSaving(canvas)) X { X (void) sprintf(filename, "LEVEL%02d.cif", zoom_level); X if (SaveEverything(zoom_dir, filename, True) == False) X { X /* Popup an error message box here */ X (void) sprintf(message, save_failed_msg, zoom_dir, filename); X MessageSetup(message, (XtCallbackProc) NULL); X DialogPopup(message_dialogbox); X return; X } X } X X ++zoom_level; X num_zoom_levels = zoom_level; X X /* we can now allow tops */ X (void) MenuChangeSensitivity(menu, MENU_TOP_ITEM, True); X X /* we can now allow unzooms */ X (void) MenuChangeSensitivity(menu, MENU_UNZOOM_ITEM, True); X X /* zoom not allowed until another region is specified */ X (void) MenuChangeSensitivity(menu, MENU_ZOOM_ITEM, False); X X /* rezoom stack is destroyed by new zoom */ X (void) MenuChangeSensitivity(menu, MENU_REZOOM_ITEM, False); X X CanvasClear(canvas); X CanvasZoom(canvas); X MakeTasksStale(); X WasteTasks(); X StartDrawing(canvas); X} X X X/*ARGSUSED*/ Xstatic void UnzoomFunc(widget, data, item) XWidget widget; /* unused */ Xcaddr_t data; /* unused */ XCardinal item; /* unused */ X{ X char filename[32]; X X /* We don't bother resaving everything if it hasn't changed since last X * time it was saved. */ X if (CanvasNeedsSaving(canvas)) X { X (void) sprintf(filename, "LEVEL%02d.cif", zoom_level); X if (SaveEverything(zoom_dir, filename, True) == False) X { X /* Popup an error message box here */ X (void) sprintf(message, save_failed_msg, zoom_dir, filename); X MessageSetup(message, (XtCallbackProc) NULL); X DialogPopup(message_dialogbox); X return; X } X } X X if (zoom_level > num_zoom_levels) X num_zoom_levels = zoom_level; X X --zoom_level; X X if (zoom_level == 0) X { X /* cannot top any more */ X (void) MenuChangeSensitivity(menu, MENU_TOP_ITEM, False); X X /* cannot unzoom any more */ X (void) MenuChangeSensitivity(menu, MENU_UNZOOM_ITEM, False); X } X X /* zoom not allowed until another region is specified */ X (void) MenuChangeSensitivity(menu, MENU_ZOOM_ITEM, False); X X /* rezoom are now allowed */ X (void) MenuChangeSensitivity(menu, MENU_REZOOM_ITEM, True); X X MakeTasksStale(); X WasteTasks(); X X (void) sprintf(filename, "LEVEL%02d.cif", zoom_level); X if (LoadEverything(zoom_dir, filename) == False) X { X /* Popup an error message box here */ X (void) sprintf(message, load_failed_msg, zoom_dir, filename); X MessageSetup(message, (XtCallbackProc) NULL); X DialogPopup(message_dialogbox); X } X} X X X/*ARGSUSED*/ Xstatic void RezoomFunc(widget, data, item) XWidget widget; /* unused */ Xcaddr_t data; /* unused */ XCardinal item; /* unused */ X{ X char filename[32]; X X /* We don't bother resaving everything if it hasn't changed since last X * time it was saved. */ X if (CanvasNeedsSaving(canvas)) X { X (void) sprintf(filename, "LEVEL%02d.cif", zoom_level); X if (SaveEverything(zoom_dir, filename, True) == False) X { X /* Popup an error message box here */ X (void) sprintf(message, save_failed_msg, zoom_dir, filename); X MessageSetup(message, (XtCallbackProc) NULL); X DialogPopup(message_dialogbox); X return; X } X } X X MakeTasksStale(); X WasteTasks(); X X ++zoom_level; X X (void) sprintf(filename, "LEVEL%02d.cif", zoom_level); X if (LoadEverything(zoom_dir, filename) == False) X { X /* Popup an error message box here */ X (void) sprintf(message, load_failed_msg, zoom_dir, filename); X MessageSetup(message, (XtCallbackProc) NULL); X DialogPopup(message_dialogbox); X return; X } X X if (zoom_level == num_zoom_levels) X /* rezoom not allowed (at end of zoom stack) */ X (void) MenuChangeSensitivity(menu, MENU_REZOOM_ITEM, False); X X /* we can now allow tops */ X (void) MenuChangeSensitivity(menu, MENU_TOP_ITEM, True); X X /* we can now allow unzooms */ X (void) MenuChangeSensitivity(menu, MENU_UNZOOM_ITEM, True); X X /* zoom not allowed until another region is specified */ X (void) MenuChangeSensitivity(menu, MENU_ZOOM_ITEM, False); X} X X X/*ARGSUSED*/ Xstatic void TopFunc(widget, data, item) XWidget widget; /* unused */ Xcaddr_t data; /* unused */ XCardinal item; /* unused */ X{ X char filename[32]; X X /* Don't need to bother, we're already at the top */ X if (zoom_level == 0) X return; X X /* We don't bother resaving everything if it hasn't changed since last X * time it was saved. */ X if (CanvasNeedsSaving(canvas)) X { X (void) sprintf(filename, "LEVEL%02d.cif", zoom_level); X if (SaveEverything(zoom_dir, filename, True) == False) X { X /* Popup an error message box here */ X (void) sprintf(message, save_failed_msg, zoom_dir, filename); X MessageSetup(message, (XtCallbackProc) NULL); X DialogPopup(message_dialogbox); X return; X } X } X X if (zoom_level > num_zoom_levels) X num_zoom_levels = zoom_level; X X zoom_level = 0; X X /* cannot top any more */ X (void) MenuChangeSensitivity(menu, MENU_TOP_ITEM, False); X X /* cannot unzoom any more */ X (void) MenuChangeSensitivity(menu, MENU_UNZOOM_ITEM, False); X X /* zoom not allowed until another region is specified */ X (void) MenuChangeSensitivity(menu, MENU_ZOOM_ITEM, False); X X if (zoom_level == num_zoom_levels) X /* rezoom not allowed (at end of zoom stack) */ X (void) MenuChangeSensitivity(menu, MENU_REZOOM_ITEM, False); X else X /* rezoom is allowed (more zoom stack below us) */ X (void) MenuChangeSensitivity(menu, MENU_REZOOM_ITEM, True); X X MakeTasksStale(); X WasteTasks(); X X (void) sprintf(filename, "LEVEL%02d.cif", zoom_level); X if (LoadEverything(zoom_dir, filename) == False) X { X /* Popup an error message box here */ X (void) sprintf(message, load_failed_msg, zoom_dir, filename); X MessageSetup(message, (XtCallbackProc) NULL); X DialogPopup(message_dialogbox); X } X} X X X/*ARGSUSED*/ Xstatic void FileFunc(widget, data, item) XWidget widget; /* unused */ Xcaddr_t data; /* unused */ XCardinal item; /* unused */ X{ X FileUpdateFileList(); X DialogPopup(file_dialogbox); X} X X X/*ARGSUSED*/ Xstatic void StartDroneFunc(widget, data, item) XWidget widget; /* unused */ Xcaddr_t data; /* unused */ XCardinal item; /* unused */ X{ X DialogPopup(drone_dialogbox); X} X X X/*ARGSUSED*/ Xstatic void ColormapFunc(widget, data, item) XWidget widget; /* unused */ Xcaddr_t data; /* unused */ XCardinal item; /* unused */ X{ X extern void ColormapUpdateSliders(); X X rotating_save = rotating; X rotating = False; X colormap_alignment = GetColormapAlignment(); X AlignColormap(dpy, colormap, NUM_RESERVED); X ColormapUpdateSliders(); X ColormapUpdateFileList(); X DialogPopup(colormap_dialogbox); X} X X X/*ARGSUSED*/ Xstatic void SettingsFunc(widget, data, item) XWidget widget; /* unused */ Xcaddr_t data; /* unused */ XCardinal item; /* unused */ X{ X DialogPopup(settings_dialogbox); X} X X Xvoid CallStoreColormap() X{ X StoreColormap(dpy, colormap); X} X X Xvoid CleanupAndDie() X{ X zoom_level = -1; X /* Remove the entire zoom stack */ X BlatzZoomStack(); X exit(0); X} X X Xvoid BlatzZoomStack() X{ X char filename[32]; X extern Boolean FileExists(); X extern Boolean RemoveFile(); X X /* If a LEVEL file exists for lower levels blatz them. */ X ++num_zoom_levels; X while (--num_zoom_levels > zoom_level) X { X (void) sprintf(filename, "LEVEL%02d.cif", num_zoom_levels); X if (FileExists(zoom_dir, filename)) X if (RemoveFile(zoom_dir, filename) == False) X abort(); X } X} X X XUsage(prog_name, terse) Xchar *prog_name; XBoolean terse; X{ X if (terse) X { X (void) fprintf(stderr, "Usage:\n %s ", prog_name); X (void) fprintf(stderr, "[-help] "); X (void) fprintf(stderr, "[-map <pathname>] "); X (void) fprintf(stderr, "[-image <pathname>] "); X (void) fprintf(stderr, "[-zoom <pathname>] "); X (void) fprintf(stderr, "\n\t"); X (void) fprintf(stderr, "[-task_width <int>] "); X (void) fprintf(stderr, "[-task_height <int>] "); X (void) fprintf(stderr, "[-square] "); X (void) fprintf(stderr, "[-aspect] "); X (void) fprintf(stderr, "\n\t"); X (void) fprintf(stderr, "[-limit <int>] "); X (void) fprintf(stderr, "[-hosts <string>] "); X (void) fprintf(stderr, "\n\n"); X (void) fprintf(stderr, "Type %s -help for a full description\n", X prog_name); X } X else X { X (void) fprintf(stderr, "Available options include:\n"); X (void) fprintf(stderr, " -help\t\t\tprovide this help message\n"); X (void) fprintf(stderr, " -map <pathname>\t\tpath to look for colormaps\n"); X (void) fprintf(stderr, " -image <pathname>\t\tpath to load/store images\n"); X (void) fprintf(stderr, " -zoom <pathname>\t\tpath to store image stack while zooming\n"); X (void) fprintf(stderr, " -task_width <int>\t\twidth of task region\n"); X (void) fprintf(stderr, " -task_height <int>\t\theight of task region\n"); X (void) fprintf(stderr, " -square\t\t\tturn off square task limitation\n"); X (void) fprintf(stderr, " -aspect\t\t\tturn off aspect ratio preservation\n"); X (void) fprintf(stderr, " -limit <int>\t\tmaximum iteration limit\n"); X (void) fprintf(stderr, " -hosts <string>\t\tlist of hosts on which to run drones\n"); X } X exit(0); X} X X X Xmain(argc, argv) Xint argc; Xchar **argv; X{ X XEvent event; X static char menu_popup_translations[] = X "<Btn3Down>: popup(menu_popup.menu)\n"; X extern int SubstituteErrorHandler(); X extern void ShowEvent(); X X XSetErrorHandler(SubstituteErrorHandler); X X top_level = XtInitialize(NULL, "Chaos", options, XtNumber(options), X &argc, argv); X X if (argc > 1) X { X if (strcmp(argv[1], "-help") == 0) X Usage(argv[0], False); X else X Usage(argv[0], True); X } X X XtGetApplicationResources(top_level, &app_resources, resources, X XtNumber(resources), NULL, 0); X X /* provide simple external access to these application specific resources */ X map_dir = app_resources.map_dir; X image_dir = app_resources.image_dir; X zoom_dir = app_resources.zoom_dir; X task_width = app_resources.task_width; X task_height = app_resources.task_height; X keep_tasks_square = app_resources.keep_tasks_square; X retain_aspect_ratio = app_resources.retain_aspect_ratio; X iteration_limit = app_resources.iteration_limit; X hosts = app_resources.hosts; X drone_path = app_resources.drone_path; X X dpy = XtDisplay(top_level); X screen = XtScreen(top_level); X X if (CellsOfScreen(screen) == 2) X { X /* Must be a monochrome screen - not currently supported */ X printf("%s: Not currently supported on monochrome displays\n", argv[0]); X exit(0); X } X X /* Don't let the X socket get inherited by child processes */ X (void) fcntl(ConnectionNumber(dpy), F_SETFD, 1); X X canvas = XtCreateManagedWidget("canvas", canvasWidgetClass, X top_level, canvas_args, XtNumber(canvas_args)); X X menu_popup = XtCreatePopupShell("menu_popup", overrideShellWidgetClass, X top_level, menu_popup_args, XtNumber(menu_popup_args)); X X menu = XtCreateManagedWidget("menu", menuWidgetClass, menu_popup, X menu_args, XtNumber(menu_args)); X X XtOverrideTranslations(canvas, X XtParseTranslationTable(menu_popup_translations)); X X colormap_dialogbox = ColormapCreateDialogbox(top_level); X drone_dialogbox = DroneCreateDialogbox(top_level); X file_dialogbox = FileCreateDialogbox(top_level); X settings_dialogbox = SettingsCreateDialogbox(top_level); X message_dialogbox = MessageCreateDialogbox(top_level); X confirm_dialogbox = ConfirmCreateDialogbox(top_level); X X GetReservedColors(dpy, screen); X if (ReadColors(map_dir, "default.map") == False) X StoreHSB(1); X X XtRealizeWidget(top_level); X X window = XtWindow(top_level); X X if (InitIpc(XtWindow(canvas)) == False) X { X eprintf("Could not initialize IPC\n"); X abort(); X } X SetOwner(CHAOS_WINDOW); X X while (1) X { X if (rotating && !XPending(dpy)) X { X RotateColormap(dpy, colormap, rotation_dir); X } X else X { X XtNextEvent(&event); X if (event.type == DestroyNotify) X { X event.xdestroywindow.event = XtWindow(canvas); X#ifdef DEBUG X ShowEvent(&event); X (void) printf("\n"); X#endif X } X XtDispatchEvent(&event); X#ifdef DEBUG X fflush(stdout); X#endif X } X } X} END_OF_FILE if test 18472 -ne `wc -c <'master/master.c'`; then echo shar: \"'master/master.c'\" unpacked with wrong size! fi # end of 'master/master.c' fi if test -f 'widgets/Palette.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'widgets/Palette.c'\" else echo shar: Extracting \"'widgets/Palette.c'\" \(14272 characters\) sed "s/^X//" >'widgets/Palette.c' <<'END_OF_FILE' X/* X * Copyright (c) Ken W. Marks 1989, 1990. X */ X X#include <stdio.h> X#include <X11/IntrinsicP.h> X#include <X11/StringDefs.h> X#include <Chaos.h> X#include <LocalDefs.h> X#include <PaletteP.h> X#include <Colormap.h> X#include <DlgShell.h> X X#define ARROW '\037' X#define BLANK '\036' X Xstatic void PaletteInitialize(); Xstatic void PaletteRealize(); Xstatic void PaletteRedisplay(); Xstatic void PaletteDestroy(); Xstatic void PaletteGoto(); Xstatic void PaletteDrawArrow(); Xstatic void PaletteChangeWithKey(); Xstatic void PaletteChangeWithButton(); Xstatic void PaletteFocusIn(); Xstatic void PaletteFocusOut(); Xstatic void PaletteMark(); Xstatic void PaletteBtnUp(); Xstatic void PaletteLeave(); Xstatic void PaletteMotion(); Xstatic void PaletteHighlightCell(); Xstatic void PaletteUnhighlightCell(); X X#define offset(field) XtOffset(PaletteWidget, palette.field) X#define goffset(field) XtOffset(Widget,core.field) X Xstatic XtResource palette_resources[] = { X {XtNcellSize, XtCCellSize, XtRDimension, sizeof(Dimension), X offset(cell_size), XtRImmediate, (caddr_t) 10}, X {XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel), X offset(foreground), XtRString, "Black"}, X {XtNbackground, XtCBackground, XtRPixel, sizeof(Pixel), X goffset(background_pixel), XtRString, "White"}, X {XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct *), X offset(font), XtRString, "chaos-bold"}, X {XtNcallback, XtCCallback, XtRCallback, sizeof(caddr_t), X offset(callbacks), XtRCallback, (caddr_t) NULL}, X {XtNdialogbox, XtCWidget, XtRWidget, sizeof(Widget), X offset(dialogbox), XtRWidget, (caddr_t) NULL}, X}; X Xstatic XtActionsRec palette_actions[] = X{ X {"mark", PaletteMark}, X {"goto", PaletteGoto}, X {"change", PaletteChangeWithKey}, X {"focus_in", PaletteFocusIn}, X {"focus_out", PaletteFocusOut}, X {"release", PaletteBtnUp}, X {"leave", PaletteLeave}, X {"move", PaletteMotion}, X}; X Xstatic char palette_translations[] = X"<BtnDown>: mark()\n\ X <BtnUp>: release()\n\ X <Motion>: move()\n\ X <Leave>: leave()\n\ X Shift<Key>Tab: goto(PREV)\n\ X <Key>Tab: goto(NEXT)\n\ X <Key>Left: change(LEFT)\n\ X <Key>Right: change(RIGHT)\n\ X <Key>Up: change(UP)\n\ X <Key>Down: change(DOWN)\n\ X <FocusIn>: focus_in()\n\ X <FocusOut>: focus_out()\n\ X"; X X#define superclass (&simpleClassRec) X XPaletteClassRec paletteClassRec = { X { X /* core fields */ X /* superclass */ (WidgetClass) superclass, X /* class_name */ "Palette", X /* widget_size */ sizeof(PaletteRec), X /* class_initialize */ NULL, X /* class_part_initialize */ NULL, X /* class_inited */ FALSE, X /* initialize */ PaletteInitialize, X /* initialize_hook */ NULL, X /* realize */ PaletteRealize, X /* actions */ palette_actions, X /* num_actions */ XtNumber(palette_actions), X /* resources */ palette_resources, X /* resource_count */ XtNumber(palette_resources), X /* xrm_class */ NULLQUARK, X /* compress_motion */ TRUE, X /* compress_exposure */ TRUE, X /* compress_enterleave */ TRUE, X /* visible_interest */ FALSE, X /* destroy */ PaletteDestroy, X /* resize */ NULL, X /* expose */ PaletteRedisplay, X /* set_values */ NULL, X /* set_values_hook */ NULL, X /* set_values_almost */ XtInheritSetValuesAlmost, X /* get_values_hook */ NULL, X /* accept_focus */ NULL, X /* version */ XtVersion, X /* callback_private */ NULL, X /* tm_table */ palette_translations, X /* query_geometry */ NULL, X /* display_accelerator */ XtInheritDisplayAccelerator, X /* extension */ NULL X }, X { X /* Simple class fields initialization */ X /* change_sensitive */ XtInheritChangeSensitive X } X}; X X XWidgetClass paletteWidgetClass = (WidgetClass) & paletteClassRec; X X X/************************************************************/ X/******************** Private Procedures ********************/ X/************************************************************/ X X Xstatic void PaletteGetGC(w) XPaletteWidget w; X{ X XGCValues values; X X values.foreground = w->palette.foreground; X values.background = w->core.background_pixel; X values.font = w->palette.font->fid; X values.line_width = 2; X X w->palette.normal_gc = XtGetGC((Widget) w, (unsigned) GCForeground | X GCBackground | GCFont | GCLineWidth, &values); X X values.foreground = values.background; X X w->palette.clear_gc = XtGetGC((Widget) w, (unsigned) GCForeground | X GCBackground | GCFont, &values); X X values.background = w->palette.foreground; X X w->palette.reverse_gc = XtGetGC((Widget) w, (unsigned) GCForeground | X GCBackground | GCFont | GCLineWidth, &values); X} X X Xstatic void PaletteSetSize(w) XPaletteWidget w; X{ X XtWidgetGeometry my_request; X XFontStruct *fs = w->palette.font; X Cardinal width = fs->max_bounds.width; X Cardinal array_size = (w->palette.unit_space * 16) + 4; X X w->palette.baseline = fs->max_bounds.ascent + 1; X w->palette.char_width = width; X X my_request.request_mode = CWWidth | CWHeight | CWBorderWidth; X my_request.width = width + array_size; X my_request.height = array_size; X my_request.border_width = 0; X X XtMakeGeometryRequest((Widget) w, &my_request, NULL); X} X X X/*ARGSUSED*/ Xstatic void PaletteInitialize(request, new) XWidget request; /* unused */ XWidget new; X{ X PaletteWidget w = (PaletteWidget) new; X X if (w->palette.dialogbox == NULL) X { X eprintf("XtNdialogbox not set\n"); X abort(); X } X X w->palette.x_pos = NUM_RESERVED; X w->palette.y_pos = 0; X w->palette.unit_space = w->palette.cell_size + 2; X w->palette.active = False; X w->palette.scrolling = False; X X PaletteGetGC(w); X PaletteSetSize(w); X} X X Xstatic void PaletteRealize(widget, valueMask, attrs) XWidget widget; XXtValueMask *valueMask; XXSetWindowAttributes *attrs; X{ X PaletteWidget w = (PaletteWidget) widget; X Display *dpy = XtDisplay(w); X Window window; X int ii, jj; X unsigned long color = 0; X X XtCreateWindow(widget, InputOutput, (Visual *) CopyFromParent, X *valueMask, attrs); X X window = XtWindow(w); X X w->palette.pixmap = XCreatePixmap(dpy, window, w->core.width, X w->core.height, w->core.depth); X X if (!w->palette.pixmap) X { X eprintf("Insufficient space for pixmap\n"); X abort(); X } X X XFillRectangle(dpy, w->palette.pixmap, w->palette.clear_gc, 0, 0, X w->palette.char_width, w->core.height); X X XFillRectangle(dpy, w->palette.pixmap, w->palette.normal_gc, X w->palette.char_width, 0, w->core.width - w->palette.char_width, X w->core.height); X X for (ii = 0; ii < 16; ii++) X for (jj = 0; jj < 16; jj++, color++) X { X XSetForeground(dpy, w->palette.normal_gc, color); X XFillRectangle(dpy, w->palette.pixmap, w->palette.normal_gc, X w->palette.char_width + 3 + w->palette.unit_space * jj, X 3 + w->palette.unit_space * ii, w->palette.cell_size, X w->palette.cell_size); X } X XSetForeground(dpy, w->palette.normal_gc, w->palette.foreground); X} X X X X/*ARGSUSED*/ Xstatic void PaletteRedisplay(widget, event, region) XWidget widget; XXEvent *event; XRegion region; /* unused */ X{ X PaletteWidget w = (PaletteWidget) widget; X Display *dpy = XtDisplay(w); X Window window = XtWindow(w); X XExposeEvent *ev = (XExposeEvent *) event; X X if (XtIsRealized(widget) == False) X return; X X XCopyArea(dpy, w->palette.pixmap, window, w->palette.normal_gc, X ev->x, ev->y, (unsigned) ev->width, (unsigned) ev->height, ev->x, ev->y); X X PaletteDrawArrow(widget); X PaletteHighlightCell(widget); X} X X Xstatic void PaletteDestroy(widget) XWidget widget; X{ X PaletteWidget w = (PaletteWidget) widget; X X XtReleaseGC(widget, w->palette.normal_gc); X XtReleaseGC(widget, w->palette.clear_gc); X XtReleaseGC(widget, w->palette.reverse_gc); X} X X Xstatic void PaletteDrawArrow(widget) XWidget widget; X{ X PaletteWidget w = (PaletteWidget) widget; X Display *dpy = XtDisplay(w); X Window window = XtWindow(w); X char active_string[1]; X X /* must convert the arrow/blank char into string for printing */ X active_string[0] = w->palette.active ? ARROW : BLANK; X X XDrawImageString(dpy, window, w->palette.normal_gc, 0, X (int) w->palette.baseline, active_string, 1); X} X X Xstatic void PaletteHighlightCell(widget) XWidget widget; X{ X PaletteWidget w = (PaletteWidget) widget; X Display *dpy = XtDisplay(w); X Window window = XtWindow(w); X int x, y; X X x = w->palette.char_width + 2 + w->palette.unit_space * w->palette.x_pos; X y = 2 + w->palette.unit_space * w->palette.y_pos; X X XDrawRectangle(dpy, window, w->palette.reverse_gc, x, y, X (unsigned) w->palette.unit_space, (unsigned) w->palette.unit_space); X} X X Xstatic void PaletteUnhighlightCell(widget) XWidget widget; X{ X PaletteWidget w = (PaletteWidget) widget; X Display *dpy = XtDisplay(w); X Window window = XtWindow(w); X int x, y; X X x = w->palette.char_width + 2 + w->palette.unit_space * w->palette.x_pos; X y = 2 + w->palette.unit_space * w->palette.y_pos; X X XDrawRectangle(dpy, window, w->palette.normal_gc, x, y, X w->palette.unit_space, w->palette.unit_space); X} X X X/***********************************************************/ X/******************** Action Procedures ********************/ X/***********************************************************/ X X X/*ARGSUSED*/ Xstatic void PaletteFocusIn(widget, event, params, num_params) XWidget widget; XXEvent *event; XString *params; XCardinal *num_params; /* unused */ X{ X PaletteWidget w = (PaletteWidget) widget; X X if (w->palette.active == False) X { X w->palette.active = True; X PaletteDrawArrow(widget); X } X} X X X/*ARGSUSED*/ Xstatic void PaletteFocusOut(widget, event, params, num_params) XWidget widget; XXEvent *event; XString *params; XCardinal *num_params; /* unused */ X{ X PaletteWidget w = (PaletteWidget) widget; X X if (w->palette.active == True) X { X w->palette.active = False; X PaletteDrawArrow(widget); X } X} X X X/* ARGSUSED */ Xstatic void PaletteGoto(widget, event, params, num_params) XWidget widget; XXEvent *event; /* unused */ XString *params; XCardinal *num_params; /* unused */ X{ X PaletteWidget w = (PaletteWidget) widget; X X switch (params[0][0]) X { X case 'P': X DialogSetPrevFocus(w->palette.dialogbox); X break; X X case 'N': X DialogSetNextFocus(w->palette.dialogbox); X break; X } X X w->palette.active = False; X PaletteDrawArrow(widget); X} X X X/* ARGSUSED */ Xstatic void PaletteChangeWithKey(widget, event, params, num_params) XWidget widget; XXEvent *event; /* unused */ XString *params; XCardinal *num_params; /* unused */ X{ X PaletteWidget w = (PaletteWidget) widget; X X switch (params[0][0]) X { X case 'L': X if (w->palette.x_pos <= 0) X return; X X /* don't allow reserved pixels (0 to NUM_RESERVED-1) to be altered */ X if (w->palette.x_pos == NUM_RESERVED && w->palette.y_pos == 0) X return; X X PaletteUnhighlightCell(widget); X --w->palette.x_pos; X PaletteHighlightCell(widget); X break; X X case 'R': X if (w->palette.x_pos >= 15) X return; X X PaletteUnhighlightCell(widget); X ++w->palette.x_pos; X PaletteHighlightCell(widget); X break; X X case 'U': X if (w->palette.y_pos <= 0) X return; X X /* don't allow reserved pixels (0 to NUM_RESERVED-1) to be altered */ X if (w->palette.y_pos == 1 && w->palette.x_pos < NUM_RESERVED) X return; X X PaletteUnhighlightCell(widget); X --w->palette.y_pos; X PaletteHighlightCell(widget); X break; X X case 'D': X if (w->palette.y_pos >= 15) X return; X X PaletteUnhighlightCell(widget); X ++w->palette.y_pos; X PaletteHighlightCell(widget); X break; X } X XtCallCallbacks(widget, XtNcallback, (XtPointer) (w->palette.y_pos * 16 + X w->palette.x_pos)); X} X X Xstatic void PaletteChangeWithButton(widget, x, y) XWidget widget; Xint x; Xint y; X{ X PaletteWidget w = (PaletteWidget) widget; X int new_x_pos, new_y_pos; X X new_x_pos = (x - w->palette.char_width - 2) / w->palette.unit_space; X new_y_pos = (y - 2) / w->palette.unit_space; X X if (new_x_pos < 0 || new_x_pos > 15 || new_y_pos < 0 || new_y_pos > 15) X return; X X if (new_x_pos == w->palette.x_pos && new_y_pos == w->palette.y_pos) X return; X X /* don't allow reserved pixels (0 to NUM_RESERVED-1) to be altered */ X if (new_x_pos < NUM_RESERVED && new_y_pos == 0) X return; X X PaletteUnhighlightCell(widget); X X w->palette.x_pos = new_x_pos; X w->palette.y_pos = new_y_pos; X X PaletteHighlightCell(widget); X X XtCallCallbacks(widget, XtNcallback, (XtPointer) (w->palette.y_pos * 16 + X w->palette.x_pos)); X} X X X/*ARGSUSED*/ Xstatic void PaletteMark(widget, event, params, num_params) XWidget widget; XXEvent *event; XString *params; /* unused */ XCardinal *num_params; /* unused */ X{ X PaletteWidget w = (PaletteWidget) widget; X XButtonEvent *ev = (XButtonEvent *) & event->xbutton; X X w->palette.active = True; X w->palette.scrolling = True; X DialogSetNewFocus(w->palette.dialogbox, widget); X X PaletteDrawArrow(widget); X PaletteChangeWithButton(widget, ev->x, ev->y); X} X X X/*ARGSUSED*/ Xstatic void PaletteBtnUp(widget, event, params, num_params) XWidget widget; XXEvent *event; XString *params; /* unused */ XCardinal *num_params; /* unused */ X{ X PaletteWidget w = (PaletteWidget) widget; X XButtonEvent *ev = (XButtonEvent *) & event->xbutton; X X w->palette.scrolling = False; X PaletteChangeWithButton(widget, ev->x, ev->y); X} X X X/*ARGSUSED*/ Xstatic void PaletteLeave(widget, event, params, num_params) XWidget widget; XXEvent *event; XString *params; /* unused */ XCardinal *num_params; /* unused */ X{ X PaletteWidget w = (PaletteWidget) widget; X XCrossingEvent *ev = (XCrossingEvent *) & event->xcrossing; X X if (w->palette.scrolling == False) X return; X X w->palette.scrolling = False; X PaletteChangeWithButton(widget, ev->x, ev->y); X} X X X/*ARGSUSED*/ Xstatic void PaletteMotion(widget, event, params, num_params) XWidget widget; XXEvent *event; XString *params; /* unused */ XCardinal *num_params; /* unused */ X{ X PaletteWidget w = (PaletteWidget) widget; X Display *dpy = XtDisplay(w); X Window window = XtWindow(w); X XMotionEvent *ev = (XMotionEvent *) & event->xmotion; X X /* Always skip ahead to the latest ButtomMotionEvent in the queue */ X /* SUPPRESS 530 */ X while (XCheckWindowEvent(dpy, window, ButtonMotionMask, ev)); X X if (w->palette.scrolling == False) X return; X X PaletteChangeWithButton(widget, ev->x, ev->y); X} END_OF_FILE if test 14272 -ne `wc -c <'widgets/Palette.c'`; then echo shar: \"'widgets/Palette.c'\" unpacked with wrong size! fi # end of 'widgets/Palette.c' fi echo shar: End of archive 3 \(of 10\). cp /dev/null ark3isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 10 archives. rm -f ark[1-9]isdone ark[1-9][0-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0 dan ---------------------------------------------------- O'Reilly && Associates argv@sun.com / argv@ora.com Opinions expressed reflect those of the author only.