$NetBSD: patch-ae,v 1.6 2011/03/02 05:42:41 obache Exp $ --- compface/file.c.orig 1991-06-19 06:29:13.000000000 +0000 +++ compface/file.c @@ -15,6 +15,8 @@ #include "compface.h" +int xbitmap=0; + void BigRead(fbuf) register char *fbuf; @@ -127,10 +129,19 @@ char *fbuf; { register char *s, *t; register int i, bits, digits, words; + extern int xbitmap; + int digsperword = DIGSPERWORD; + int wordsperline = WORDSPERLINE; s = F; t = fbuf; bits = digits = words = i = 0; + if (xbitmap) { + sprintf(t,"#define noname_width 48\n#define noname_height 48\nstatic char noname_bits[] = {\n "); + while (*t) t++; + digsperword = 2; + wordsperline = 15; + } while (s < F + PIXELS) { if ((bits == 0) && (digits == 0)) @@ -138,25 +149,43 @@ char *fbuf; *(t++) = '0'; *(t++) = 'x'; } - if (*(s++)) - i = i * 2 + 1; - else - i *= 2; + if (xbitmap) { + if (*(s++)) + i = (i >> 1) | 0x8; + else + i >>= 1; + } + else { + if (*(s++)) + i = i * 2 + 1; + else + i *= 2; + } if (++bits == BITSPERDIG) { - *(t++) = *(i + HexDigits); + if (xbitmap) { + t++; + t[-(digits & 1) * 2] = *(i + HexDigits); + } + else *(t++) = *(i + HexDigits); bits = i = 0; - if (++digits == DIGSPERWORD) + if (++digits == digsperword) { + if (xbitmap && (s >= F + PIXELS)) break; *(t++) = ','; digits = 0; - if (++words == WORDSPERLINE) + if (++words == wordsperline) { *(t++) = '\n'; + if (xbitmap) *(t++) = ' '; words = 0; } } } } + if (xbitmap) { + sprintf(t, "}\n"); + while (*t) t++; + } *(t++) = '\0'; }