Adding upstream version 0.5.1
This commit is contained in:
94
scripts/xface2xpm.in
Normal file
94
scripts/xface2xpm.in
Normal file
@@ -0,0 +1,94 @@
|
||||
#!@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;
|
||||
}
|
Reference in New Issue
Block a user