diff options
Diffstat (limited to 'mail/faces/files/patch-compface_file.c')
-rw-r--r-- | mail/faces/files/patch-compface_file.c | 314 |
1 files changed, 314 insertions, 0 deletions
diff --git a/mail/faces/files/patch-compface_file.c b/mail/faces/files/patch-compface_file.c new file mode 100644 index 000000000000..836f5a14a3ee --- /dev/null +++ b/mail/faces/files/patch-compface_file.c @@ -0,0 +1,314 @@ +*** compface/file.c Tue Jan 15 23:58:46 2002 +--- /home/lkoeller/tmp/ports/mail/faces/work/faces/compface/file.c Sun Jan 19 19:35:35 2003 +*************** +*** 16,147 **** + + #include "compface.h" + + void +! BigRead(char *fbuf) + { +! int c; + +! while (*fbuf != '\0') { + c = *(fbuf++); +! if ((c < FIRSTPRINT) || (c > LASTPRINT)) { + continue; +- } + BigMul(NUMPRINTS); + BigAdd((WORD)(c - FIRSTPRINT)); + } + } + +- + void +! BigWrite(char *fbuf) + { + static WORD tmp; + static char buf[DIGITS]; +! char *s; +! int i; + + s = buf; +! while (B.b_words > 0) { + BigDiv(NUMPRINTS, &tmp); + *(s++) = tmp + FIRSTPRINT; + } +! i = 7; /* Leave room for the field name on the first line */ + *(fbuf++) = ' '; +! while (s-- > buf) { +! if (i == 0) { + *(fbuf++) = ' '; +- } + *(fbuf++) = *s; +! if (++i >= MAXLINELEN) { + *(fbuf++) = '\n'; + i = 0; + } + } +! if (i > 0) { + *(fbuf++) = '\n'; +- } + *(fbuf++) = '\0'; + } + +- + void +! ReadFace(char *fbuf) + { +! int c, i; +! char *s, *t; + + t = s = fbuf; +! for (i = strlen(s); i > 0; i--) { +! c = (int) *(s++); +! if ((c >= '0') && (c <= '9')) { +! if (t >= fbuf + DIGITS) { + status = ERR_EXCESS; + break; + } + *(t++) = c - '0'; +! } else if ((c >= 'A') && (c <= 'F')) { +! if (t >= fbuf + DIGITS) { + status = ERR_EXCESS; + break; + } + *(t++) = c - 'A' + 10; +! } else if ((c >= 'a') && (c <= 'f')) { +! if (t >= fbuf + DIGITS) { + status = ERR_EXCESS; + break; + } + *(t++) = c - 'a' + 10; +- } else if (((c == 'x') || (c == 'X')) && (t > fbuf) && (*(t-1) == 0)) { +- t--; + } + } +! if (t < fbuf + DIGITS) { + longjmp(comp_env, ERR_INSUFF); +- } + s = fbuf; + t = F; + c = 1 << (BITSPERDIG - 1); +! while (t < F + PIXELS) { + *(t++) = (*s & c) ? 1 : 0; +! if ((c >>= 1) == 0) { + s++; + c = 1 << (BITSPERDIG - 1); + } + } + } + +- + void +! WriteFace(char *fbuf) + { +! char *s, *t; +! int i, bits, digits, words; + + s = F; + t = fbuf; + bits = digits = words = i = 0; +! while (s < F + PIXELS) { +! if ((bits == 0) && (digits == 0)) { + *(t++) = '0'; + *(t++) = 'x'; + } +! if (*(s++)) { + i = i * 2 + 1; +! } else { + i *= 2; + } +! if (++bits == BITSPERDIG) { +! *(t++) = *(i + HexDigits); + bits = i = 0; +! if (++digits == DIGSPERWORD) { + *(t++) = ','; + digits = 0; +! if (++words == WORDSPERLINE) { + *(t++) = '\n'; + words = 0; + } + } + } + } + *(t++) = '\0'; + } +--- 15,191 ---- + + #include "compface.h" + ++ int xbitmap=0; ++ + void +! BigRead(fbuf) +! register char *fbuf; + { +! register int c; + +! while (*fbuf != '\0') +! { + c = *(fbuf++); +! if ((c < FIRSTPRINT) || (c > LASTPRINT)) + continue; + BigMul(NUMPRINTS); + BigAdd((WORD)(c - FIRSTPRINT)); + } + } + + void +! BigWrite(fbuf) +! register char *fbuf; + { + static WORD tmp; + static char buf[DIGITS]; +! register char *s; +! register int i; + + s = buf; +! while (B.b_words > 0) +! { + BigDiv(NUMPRINTS, &tmp); + *(s++) = tmp + FIRSTPRINT; + } +! i = 7; /* leave room for the field name on the first line */ + *(fbuf++) = ' '; +! while (s-- > buf) +! { +! if (i == 0) + *(fbuf++) = ' '; + *(fbuf++) = *s; +! if (++i >= MAXLINELEN) +! { + *(fbuf++) = '\n'; + i = 0; + } + } +! if (i > 0) + *(fbuf++) = '\n'; + *(fbuf++) = '\0'; + } + + void +! ReadFace(fbuf) +! char *fbuf; + { +! register int c, i; +! register char *s, *t; + + t = s = fbuf; +! for(i = strlen(s); i > 0; i--) +! { +! c = (int)*(s++); +! if ((c >= '0') && (c <= '9')) +! { +! if (t >= fbuf + DIGITS) +! { + status = ERR_EXCESS; + break; + } + *(t++) = c - '0'; +! } +! else if ((c >= 'A') && (c <= 'F')) +! { +! if (t >= fbuf + DIGITS) +! { + status = ERR_EXCESS; + break; + } + *(t++) = c - 'A' + 10; +! } +! else if ((c >= 'a') && (c <= 'f')) +! { +! if (t >= fbuf + DIGITS) +! { + status = ERR_EXCESS; + break; + } + *(t++) = c - 'a' + 10; + } ++ else if (((c == 'x') || (c == 'X')) && (t > fbuf) && (*(t-1) == 0)) ++ t--; + } +! if (t < fbuf + DIGITS) + longjmp(comp_env, ERR_INSUFF); + s = fbuf; + t = F; + c = 1 << (BITSPERDIG - 1); +! while (t < F + PIXELS) +! { + *(t++) = (*s & c) ? 1 : 0; +! if ((c >>= 1) == 0) +! { + s++; + c = 1 << (BITSPERDIG - 1); + } + } + } + + void +! WriteFace(fbuf) +! 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)) +! { + *(t++) = '0'; + *(t++) = 'x'; + } +! if (xbitmap) { +! if (*(s++)) +! i = (i >> 1) | 0x8; +! else +! i >>= 1; +! } +! else { +! if (*(s++)) + i = i * 2 + 1; +! else + i *= 2; + } +! if (++bits == BITSPERDIG) +! { +! if (xbitmap) { +! t++; +! t[-(digits & 1) * 2] = *(i + HexDigits); +! } +! else *(t++) = *(i + HexDigits); + bits = i = 0; +! if (++digits == digsperword) +! { +! if (xbitmap && (s >= F + PIXELS)) break; + *(t++) = ','; + digits = 0; +! if (++words == wordsperline) +! { + *(t++) = '\n'; ++ if (xbitmap) *(t++) = ' '; + words = 0; + } + } + } + } ++ if (xbitmap) { ++ sprintf(t, "}\n"); ++ while (*t) t++; ++ } + *(t++) = '\0'; + } |