:
MAXWHEELS=16
PATH=/usr/skunk/bin:/usr/skunk/bin/X11:$PATH
export PATH
LIB=/usr/skunk/pics
SPLINES=/usr/skunk/lib/splines
PROG=$0
limit=-1
round=1
bdemo=
cdemo=
ddemo=
gdemo=
l2demo=
m2demo=
j2demo=
l3demo=
m3demo=
j3demo=
l4demo=
m4demo=
j4demo=
m5demo=
l5demo=
j5demo=
l6demo=
j6demo=
l7demo=
j7demo=
ldemo=
mdemo=
jdemo=
pdemo=
hdemo=
sdemo=
qflag=
select=true
quiet=
restor=1

usage() {
	echo "\nUsage: $PROG [-QRqbcdghkmpsu]"
	echo "\tWhere -q queries for desired demos"
	echo "\t\t-b indicates spline curve demos"
	echo "\t\t-c indicates madness curve demos"
	echo "\t\t-d indicates dust demos"
	echo "\t\t-g indicates topographic demos"
	echo "\t\t-h indicates heart demos"
	echo "\t\t-j indicates Julia set demos"
	echo "\t\t-l indicates Lyapunov set demos"
	echo "\t\t-m indicates Mandelbrot set demos"
	echo "\t\t-p indicates Iterated Parametric Equations demos"
	echo "\t\t-s indicates stars demos"
	echo "\t\t-Q indicates quiet mode"
	echo "\t\t-R indicates do not restore screen saving mode"
	echo "\t\t-u displays this message"
	echo "\n$PROG is a shell script front-end for several graphical X clients"
	echo "written by Ronald Joe Record. When invoked with no arguments, it"
	echo "cycles through all of the clients in a finite amount of time."
	echo "In this way, $PROG makes an excellent rolling demo.\n"
}

while case "$1" in
	-b|spline|splines) bdemo=1
					select=
	    ;;
	-c|curve|curves) cdemo=1
					select=
	    ;;
	-d|spore|spores) ddemo=1
					select=
	    ;;
	-g|midpt|-midpt) gdemo=1
					select=
	    ;;
	-j7|julia7) j7demo=1
					select=
	    ;;
	-j6|julia6) j6demo=1
					select=
	    ;;
	-l6|lyap6) l6demo=1
					select=
	    ;;
	-l7|lyap7) l7demo=1
					select=
	    ;;
	-j5|julia5) j5demo=1
					select=
	    ;;
	-l5|lyap5) l5demo=1
					select=
	    ;;
	-m5|mandel5) m5demo=1
					select=
	    ;;
	-j3|julia3) j3demo=1
					select=
	    ;;
	-l3|lyap3) l3demo=1
					select=
	    ;;
	-m3|mandel3) m3demo=1
					select=
	    ;;
	-j4|julia4) j4demo=1
					select=
	    ;;
	-l4|lyap4) l4demo=1
					select=
	    ;;
	-m4|mandel4) m4demo=1
					select=
	    ;;
	-j2|julia2) j2demo=1
					select=
	    ;;
	-l2|lyap2) l2demo=1
					select=
	    ;;
	-m2|mandel2) m2demo=1
					select=
	    ;;
	-j|julia) jdemo=1
					select=
	    ;;
	-l|lyap) ldemo=1
					select=
	    ;;
	-m|mandel) mdemo=1
					select=
	    ;;
	-p|hop) pdemo=1
					select=
	    ;;
	-h|heart|madness) hdemo=1
					select=
	    ;;
	-s|stars|-stars) sdemo=1
					select=
	    ;;
	-Q|quiet|-quiet) quiet=1
	    ;;
	-q|query|-query) qflag=1
	    ;;
	-R|restor|-restor) restor=
	    ;;
	-limit) limit=$2
			shift
	    	;;
	-u|usage|-usage) usage
			exit 1
	    	;;
	"") break
	    ;;
	esac
do
	shift
done

[ "$quiet" ] || {
	echo "Welcome to the xclnt demo script, written by Ronald Joe Record."
	echo "It is `date`."
	echo "The xclnt demo will begin."
}

if [ "$qflag" ] && [ "$select" ]
then
	while echo "Do you want the heart drawing demo ? (y/n) \c"
	do
		read answer
		[ "$answer" = "y" ] && {
			hdemo=1
			break
		}
		[ "$answer" = "n" ] && break
	done
	while echo "Do you want the spline curve drawing demos ? (y/n) \c"
	do
		read answer
		[ "$answer" = "y" ] && {
			bdemo=1
			break
		}
		[ "$answer" = "n" ] && break
	done
	while echo "Do you want the madness curve drawing demos ? (y/n) \c"
	do
		read answer
		[ "$answer" = "y" ] && {
			cdemo=1
			break
		}
		[ "$answer" = "n" ] && break
	done
	while echo "Do you want the aggregating particle demos ? (y/n) \c"
	do
		read answer
		[ "$answer" = "y" ] && {
			ddemo=1
			break
		}
		[ "$answer" = "n" ] && break
	done
	while echo "Do you want the artificial landscape drawing demos ? (y/n) \c"
	do
		read answer
		[ "$answer" = "y" ] && {
			gdemo=1
			break
		}
		[ "$answer" = "n" ] && break
	done
	while echo "Do you want the Julia set drawing demos ? (y/n) \c"
	do
		read answer
		[ "$answer" = "y" ] && {
			jdemo=1
			j2demo=1
			j3demo=1
			j4demo=1
			j5demo=1
			j6demo=1
			j7demo=1
			break
		}
		[ "$answer" = "n" ] && break
	done
	while echo "Do you want the Lyapunov set drawing demos ? (y/n) \c"
	do
		read answer
		[ "$answer" = "y" ] && {
			ldemo=1
			l2demo=1
			l3demo=1
			l4demo=1
			l5demo=1
			l6demo=1
			l7demo=1
			break
		}
		[ "$answer" = "n" ] && break
	done
	while echo "Do you want the Mandelbrot set drawing demos ? (y/n) \c"
	do
		read answer
		[ "$answer" = "y" ] && {
			mdemo=1
			m2demo=1
			m3demo=1
			m4demo=1
			m5demo=1
			break
		}
		[ "$answer" = "n" ] && break
	done
	while echo "Do you want the stars demos ? (y/n) \c"
	do
		read answer
		[ "$answer" = "y" ] && {
			sdemo=1
			break
		}
		[ "$answer" = "n" ] && break
	done
	while echo "Do you want the parametric equations demo ? (y/n) \c"
	do
		read answer
		[ "$answer" = "y" ] && {
			pdemo=1
			break
		}
		[ "$answer" = "n" ] && break
	done
else
	[ "$select" ] && {
		bdemo=1
		cdemo=1
		ddemo=1
		gdemo=1
		jdemo=1
		j2demo=1
		j3demo=1
		j4demo=1
		j5demo=1
		j6demo=1
		j7demo=1
		ldemo=1
		l2demo=1
		l3demo=1
		l4demo=1
		l5demo=1
		l6demo=1
		l7demo=1
		mdemo=1
		m2demo=1
		m3demo=1
		m4demo=1
		m5demo=1
		pdemo=1
		hdemo=1
		sdemo=1
	}
fi

trap '/usr/bin/X11/xset s default; rm -f /tmp/xclnt_stop; exit 1' 1 2 3 15
echo "kill -15 $$" > /tmp/xclnt_stop
/usr/bin/X11/xset s off
xroot

while [ $limit -ne 0 ]
do
	[ "$ldemo" ] && {
		xroot -l
		for i in $LIB/lyap/*
		do
	    	wheel=`random $MAXWHEELS`
			lyap -c $wheel -d -i $i -Delay 0
		done
	}
	[ "$jdemo" ] && {
		xroot -j
		for i in $LIB/julia/*
		do
	    	wheel=`random $MAXWHEELS`
			julia -c $wheel -d 1 -i $i -Delay 0
		done
	}
	[ "$mdemo" ] && {
		xroot -j
		for i in $LIB/mandel/*
		do
	    	wheel=`random $MAXWHEELS`
			mandel -c $wheel -d 1 -i $i -Delay 0
		done
	}
	[ "$cdemo" ] && {
		adec=`random 8`
		adec=`expr $adec + 1`
		bdec=`random 8`
		bdec=`expr $bdec + 1`
		cdec=`random 8`
		cdec=`expr $cdec + 1`
		ddec=`random 8`
		ddec=`expr $ddec + 1`
		ncol=`random 2`
		if [ $ncol = 0 ] 
		then
			ncol=2
		elif [ $ncol = 1 ]
		then
			ncol=4
		fi
		madness -D -s$ncol -a 0.$adec -b 0.0$bdec -c -0.$cdec -z $ddec.0 -n 10000 -N 1 -W 512 -H 512
	}
	[ "$hdemo" ] && madness -A -D -T 0.005 -N 20 -W 1000 -H 800
	[ "$gdemo" ] && {
		 xroot -s
	     wheel=`random $MAXWHEELS`
	     beta=`random 75`
		 beta=`expr $beta + 25`
	     level=`random 50`
		 xtopo -d -c $wheel -H 0.$beta -S 0.$level
	}
	[ "$sdemo" ] && {
		xroot -s
		xvel=`random 50`
		xvel=`expr $xvel + 1`
		yvel=`random 30`
		yvel=`expr $yvel + 1`
		wiggle=`random 2`
		reverse=`random 2`
		[ $wiggle = 1 ] && X=-X
		[ $reverse = 1 ] && R=-r
		stars -F -D 600 -B 4 -a $xvel -b $yvel -w $X $R
	}
	[ "$l6demo" ] && {
		xroot -l
		for i in $LIB/lyap6/*
		do
	    	wheel=`random $MAXWHEELS`
			lyap -c $wheel -d -i $i -Delay 0
		done
	}
	[ "$bdemo" ] && {
	    wheel=`random $MAXWHEELS`
		$SPLINES/lines -n 1 -c $wheel
	}
	[ "$j5demo" ] && {
		xroot -j
		for i in $LIB/julia5/*
		do
	    	wheel=`random $MAXWHEELS`
			julia -c $wheel -d 1 -i $i -Delay 0
		done
	}
	[ "$cdemo" ] && {
		this=`random 1`
		if [ $this = 0 ] 
		then
		    madness -D -s4 -a 0.6 -b 0.04 -c -0.8 -z 4.0 -n 20000 -N 1 -W 512 -H 512
		else
		    madness -D -s2 -a 0.6 -b 0.05 -c -0.8 -z 2.0 -n 20000 -N 1 -W 512 -H 512
		fi
	}
	[ "$pdemo" ] && {
	   mode=`random 6`
	   hop -D $mode
	}
	[ "$hdemo" ] && madness -A -D -T 0.006 -N 6 -R -T 6 -N 20 -W 1000 -H 800
	[ "$cdemo" ] && madness -D -s 4 -N 1 -n 20000 -W 512 -H 512
	[ "$j6demo" ] && {
		xroot -j
		for i in $LIB/julia6/*
		do
	    	wheel=`random $MAXWHEELS`
			julia -c $wheel -d 1 -i $i -Delay 0
		done
	}
	[ "$bdemo" ] && {
	    wheel=`random $MAXWHEELS`
		$SPLINES/lying -l 4096 -n 1 -c $wheel
	}
	[ "$j7demo" ] && {
		xroot -j
		for i in $LIB/julia7/*
		do
	    	wheel=`random $MAXWHEELS`
			julia -c $wheel -d 1 -i $i -Delay 0
		done
	}
	[ "$l2demo" ] && {
		xroot -l
		for i in $LIB/lyap2/*
		do
	    	wheel=`random $MAXWHEELS`
			lyap -c $wheel -d -i $i -Delay 0
		done
	}
	[ "$m5demo" ] && {
		xroot -j
		for i in $LIB/mandel5/*
		do
	    	wheel=`random $MAXWHEELS`
			mandel -c $wheel -d 1 -i $i -Delay 0
		done
	}
	[ "$j3demo" ] && {
		xroot -j
		for i in $LIB/julia3/*
		do
	    	wheel=`random $MAXWHEELS`
			julia -c $wheel -d 1 -i $i -Delay 0
		done
	}
	[ "$l4demo" ] && {
		xroot -l
		for i in $LIB/lyap4/*
		do
	    	wheel=`random $MAXWHEELS`
			lyap -c $wheel -d -i $i -Delay 0
		done
	}
	[ "$m3demo" ] && {
		xroot -j
		for i in $LIB/mandel3/*
		do
	    	wheel=`random $MAXWHEELS`
			mandel -c $wheel -d 1 -i $i -Delay 0
		done
	}
	[ "$j4demo" ] && {
		xroot -j
		for i in $LIB/julia4/*
		do
	    	wheel=`random $MAXWHEELS`
			julia -c $wheel -d 1 -i $i -Delay 0
		done
	}
	[ "$l3demo" ] && {
		xroot -l
		for i in $LIB/lyap3/*
		do
	    	wheel=`random $MAXWHEELS`
			lyap -c $wheel -d -i $i -Delay 0
		done
	}
	[ "$bdemo" ] && {
	    wheel=`random $MAXWHEELS`
		$SPLINES/string -l 1024 -n 1 -c $wheel
	}
	[ "$m4demo" ] && {
		xroot -j
		for i in $LIB/mandel4/*
		do
	    	wheel=`random $MAXWHEELS`
			mandel -c $wheel -d 1 -i $i -Delay 0
		done
	}
	[ "$j2demo" ] && {
		xroot -j
		for i in $LIB/julia2/*
		do
	    	wheel=`random $MAXWHEELS`
			julia -c $wheel -d 1 -i $i -Delay 0
		done
	}
	[ "$l5demo" ] && {
		xroot -l
		for i in $LIB/lyap5/*
		do
	    	wheel=`random $MAXWHEELS`
			lyap -c $wheel -d -i $i -Delay 0
		done
	}
	[ "$bdemo" ] && {
	    wheel=`random $MAXWHEELS`
		$SPLINES/sticks -l 4096 -n 1 -c $wheel
	}
	[ "$l7demo" ] && {
		xroot -l
		for i in $LIB/lyap7/*
		do
	    	wheel=`random $MAXWHEELS`
			lyap -c $wheel -d -i $i -Delay 0
		done
	}
	[ "$m2demo" ] && {
		xroot -j
		for i in $LIB/mandel2/*
		do
	    	wheel=`random $MAXWHEELS`
			mandel -c $wheel -d 1 -i $i -Delay 0
		done
	}
	[ "$sdemo" ] && stars -F -D 1000
	[ "$bdemo" ] && {
	    wheel=`random $MAXWHEELS`
		$SPLINES/strips -l 4096 -n 1 -c $wheel
	}
	[ "$sdemo" ] && stars -F -D 600 -B `random 4` -a 2 -b 1
	[ "$ddemo" ] && {
		wheel=`random 2`
		if [ $wheel = 0 ] 
		then
			xroot -h
		elif [ $wheel = 1 ]
		then
			xroot -k
		fi
	    wheel=`random $MAXWHEELS`
	    balls=`random 5`
		balls=`expr $balls + 1`
		spore -d -c $wheel -F -N $balls
	}
	[ "$bdemo" ] && {
	    wheel=`random $MAXWHEELS`
		$SPLINES/flying -l 4096 -n 1 -c $wheel
	}
	limit=`expr $limit - 1`
	[ "$quiet" ] || {
		echo "The xclnt demo completes round $round at `date`"
		round=`expr $round + 1`
	}
done

[ "$restor" ] && /usr/bin/X11/xset s default
