* 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>
55 lines
761 B
Plaintext
55 lines
761 B
Plaintext
#!@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
|