View file File name : xface2xpm Content :#!/usr/bin/perl $USAGE = "xface2xpm [-t] [-fg <color>] [-bg <color>] [<file>]"; # compface/uncompface # ftp://metalab.unc.edu/pub/Linux/apps/graphics/convert/ $UNCOMPFACE = "uncompface"; $T = "c"; $BG = "white"; $FG = "black"; while (@ARGV) { $_ = shift @ARGV; if (/^-h/) { &usage(0); } elsif (/^-t/) { $T = "s"; $BG = "none"; } elsif (/^-bg/) { @ARGV || &usage(1); $BG = shift @ARGV; } elsif (/^-fg/) { @ARGV || &usage(1); $FG = shift @ARGV; } elsif (/^-./) { &usage(1); } else { unshift(@ARGV, $_); last; } } $xf = ""; while(<>) { # s/^X-Face://i if ($xf eq ""); $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 print <<EOF; /* XPM */ static char *xf[] = { /* columns rows colors chars-per-pixel */ "$W $H 2 1", " $T $BG", ". c $FG", /* pixels */ EOF while (@bm) { print "\""; for (1..6) { $x = shift @bm; for $i (1 .. 8) { print ((($x >> (8-$i)) & 1) ? "." : " "); } } print (@bm ? "\",\n" : "\"\n"); } print <<EOF; }; EOF sub usage { local($err) = @_; if ($err) { print STDERR "$USAGE\n"; } else { print "$USAGE\n"; } exit $err; }