* configure: s/XFACE2XBM/XFACE2XPM/ * config.h.dist: ditto * file.c (xface2xpm): renamed from xface2xbm modified for xpm (readHeader): s/xface2xbm/xface2xpm/ * scripts/Makefile (LIB_TARGETS): s/xface2xbm/xface2xpm/ * scripts/xface2xpm.in: added From: Hironori Sakamoto <hsaka@mth.biglobe.ne.jp>
		
			
				
	
	
		
			95 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
#!@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;
 | 
						|
}
 |