xref: /plan9/sys/src/games/blabs/mkface (revision 3e5d0078acdadead679c94c0daec143041c4b41e)
1*3e5d0078SDavid du Colombier#!/bin/rc
2*3e5d0078SDavid du Colombier
3*3e5d0078SDavid du Colombierfn unhex {
4*3e5d0078SDavid du Colombier	tr '	' ' ' | sed 's/0x//g;s/[, ]//g;s/../0x&, /g;s/^/	/'
5*3e5d0078SDavid du Colombier}
6*3e5d0078SDavid du Colombier
7*3e5d0078SDavid du Colombierif(! ~ $#* 1) {
8*3e5d0078SDavid du Colombier	echo 'usage: mkface who' >[1=2]
9*3e5d0078SDavid du Colombier	exit usage
10*3e5d0078SDavid du Colombier}
11*3e5d0078SDavid du Colombier
12*3e5d0078SDavid du Colombierwho=$1
13*3e5d0078SDavid du Colombierx='^astro/'^$who^' '
14*3e5d0078SDavid du Colombierz='^([^ ]+)/'^$who^' '
15*3e5d0078SDavid du Colombier
16*3e5d0078SDavid du Colombierfile=notfound
17*3e5d0078SDavid du Colombierfor(i in 1 2 4 8)
18*3e5d0078SDavid du Colombier	if(y=`{grep $x /lib/face/48x48x$i/.dict} || y=`{grep $z /lib/face/48x48x$i/.dict})
19*3e5d0078SDavid du Colombier		file=/lib/face/48x48x$i/$y(2)
20*3e5d0078SDavid du Colombier
21*3e5d0078SDavid du Colombierif(~ $file notfound) {
22*3e5d0078SDavid du Colombier	echo 'cannot find face for '$who >[1=2]
23*3e5d0078SDavid du Colombier	exit noface
24*3e5d0078SDavid du Colombier}
25*3e5d0078SDavid du Colombier
26*3e5d0078SDavid du Colombier{
27*3e5d0078SDavid du Colombier	echo 'uchar '$who'bits[] = {'
28*3e5d0078SDavid du Colombier	switch($file) {
29*3e5d0078SDavid du Colombier	case *48x48x8* *48x48x4*
30*3e5d0078SDavid du Colombier		fb/enc2bit $file | dd -bs 60 -skip 1 >[2]/dev/null | xd |
31*3e5d0078SDavid du Colombier		sed 's#^.......##' | unhex
32*3e5d0078SDavid du Colombier	case *48x48x2* *48x48x1*
33*3e5d0078SDavid du Colombier		cat $file | unhex
34*3e5d0078SDavid du Colombier	}
35*3e5d0078SDavid du Colombier	echo '};'
36*3e5d0078SDavid du Colombier} >$who.bits
37*3e5d0078SDavid du Colombier
38