#!@PERL@ # compface/uncompface # ftp://metalab.unc.edu/pub/Linux/apps/graphics/convert/ $UNCOMPFACE = "uncompface"; $XF = @ARGV ? shift @ARGV : '-'; $XBM = @ARGV ? shift @ARGV : '-'; open(XF, "<$XF"); $xf = ""; while(<XF>) { # s/^X-Face://i if ($xf eq ""); $xf .= $_; } close(XF); pipe(R, W2); pipe(R2, W); if (! fork()) { close(R); close(W); open(STDIN, "<&R2"); open(STDOUT, ">&W2"); exec $UNCOMPFACE; exit 1; } close(R2); close(W2); print W $xf; close(W); while(<R>) { while(s/0x(..)(..)//) { push(@bm, hex($1), hex($2)); } } close(R); @bm || exit 1; $W = 48; $H = @bm * 8 / $W; # must be 48 open(XBM, ">$XBM"); print XBM <<EOF; #define xf_width $W #define xf_height $H static char xf_bits[] = { EOF while (@bm) { for (1..6) { $x = shift @bm; $y = 0; for $i (1 .. 8) { $y |= ($x & 1) << (8 - $i); $x >>= 1; } printf XBM " 0x%02X,", $y; } print XBM "\n"; } print XBM <<EOF; }; EOF close(XBM);