[comp.sources.x] v08i079: chaos, Part03/10

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.