home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / pp / pp-6.0 / Format / ascii2fax / font_util.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-12-18  |  1.7 KB  |  85 lines

  1. /* font_util.c: utility routines for fonts */
  2.  
  3. # ifndef lint
  4. static char Rcsid[] = "@(#)$Header: /xtel/pp/pp-beta/Format/ascii2fax/RCS/font_util.c,v 6.0 1991/12/18 20:15:19 jpo Rel $";
  5. # endif
  6.  
  7. /*
  8.  * $Header: /xtel/pp/pp-beta/Format/ascii2fax/RCS/font_util.c,v 6.0 1991/12/18 20:15:19 jpo Rel $
  9.  *
  10.  * $Log: font_util.c,v $
  11.  * Revision 6.0  1991/12/18  20:15:19  jpo
  12.  * Release 6.0
  13.  *
  14.  */
  15.  
  16. #include    "fonts.h"
  17.  
  18. extern CharPtr    file2char();
  19.  
  20. PPFontPtr
  21. new_font(nchars)
  22. int    nchars;
  23. {
  24.     PPFontPtr ret = (PPFontPtr) malloc(sizeof(PPFont));
  25.     ret->nchars = nchars;
  26.     ret->chars = (CharPtr *) calloc(ret->nchars,
  27.                     sizeof(Char));
  28.     return ret;
  29. }
  30.  
  31. free_font(f)
  32. PPFontPtr    f;
  33. {
  34.     int    i;
  35.     for (i = 0; i < f->nchars; i++)
  36.         if (f->chars[i])
  37.             free_char(f->chars[i]);
  38.     free((char *) f->chars);
  39.     free((char *) f);
  40. }
  41.  
  42. font2file(fp, f)
  43. FILE    *fp;
  44. PPFontPtr    f;
  45. {
  46.     int    i;
  47.  
  48.     fprintf(fp, "%d\n", f->nchars);
  49.     for (i = 0; i < f->nchars; i++)
  50.         char2file(fp, f->chars[i]);
  51. }
  52.  
  53. PPFontPtr
  54. file2font(fp)
  55. FILE    *fp;
  56. {
  57.     PPFontPtr ret;
  58.     char    buf[BUFSIZ];
  59.     int    i;
  60.  
  61.     if (fgets(buf, BUFSIZ, fp) == NULLCP) {
  62.                 fprintf(stderr,
  63.                        "Incorrect file encoding of font: unexpected EOF");
  64.                 return (PPFontPtr) NOTOK;
  65.     }
  66.     
  67.     ret = (PPFontPtr) malloc(sizeof(PPFont));
  68.     ret -> max_wid = ret -> max_ht = 0;
  69.     ret -> nchars = (int)strtol(buf, NULL, 0);
  70.     ret->chars = (CharPtr *) calloc(ret->nchars,
  71.                     sizeof(CharPtr));
  72.     for (i = 0; i < ret->nchars; i++) {
  73.         if ((ret->chars[i] = file2char(fp)) == (CharPtr) NOTOK) {
  74.             ret->chars[i] = NULL;
  75.             free_font(ret);
  76.             return (PPFontPtr) NOTOK;
  77.         }
  78.         if (ret->chars[i] -> wid > ret -> max_wid)
  79.             ret -> max_wid = ret -> chars[i] -> wid;
  80.         if (ret->chars[i] -> ht > ret -> max_ht)
  81.             ret -> max_ht = ret -> chars[i] -> ht;
  82.     }
  83.     return ret;
  84. }    
  85.