[w3m-dev 03127] X-Face
* NEWS: X-Face support * configure (use_xface): added * config.h.dist (USE_XFACE): added (XFACE2XBM): added * file.c (xface2xbm): added (readHeader): X-Face: handling * scripts/Makefile (LIB_TARGETS): add xface2xbm * scripts/xface2xbm.in: added From: Hironori Sakamoto <hsaka@mth.biglobe.ne.jp>
This commit is contained in:
		
							
								
								
									
										54
									
								
								scripts/xface2xbm.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								scripts/xface2xbm.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
#!@PERL@
 | 
			
		||||
 | 
			
		||||
# See http://www.lab3.kuis.kyoto-u.ac.jp/~tsumura/emacs/x-face.html
 | 
			
		||||
$UNCOMPFACE = "uncompface";
 | 
			
		||||
 | 
			
		||||
$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;
 | 
			
		||||
	die;
 | 
			
		||||
}
 | 
			
		||||
close(R2);
 | 
			
		||||
close(W2);
 | 
			
		||||
print W $xf;
 | 
			
		||||
close(W);
 | 
			
		||||
while(<R>) {
 | 
			
		||||
	while(s/0x(..)(..)//) {
 | 
			
		||||
		push(@bm, hex($1), hex($2));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
close(R);
 | 
			
		||||
 | 
			
		||||
$W = 48;
 | 
			
		||||
$H = @bm * 8 / $W;	# must be 48
 | 
			
		||||
print <<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 " 0x%02X,", $y;
 | 
			
		||||
	}
 | 
			
		||||
	print "\n";
 | 
			
		||||
}
 | 
			
		||||
print <<EOF;
 | 
			
		||||
};
 | 
			
		||||
EOF
 | 
			
		||||
		Reference in New Issue
	
	Block a user