home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 344b.lha / plplot_v2.6 / src / plfontld.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-01-27  |  2.2 KB  |  90 lines

  1. /* Loads either the standard or extended font */
  2.  
  3. #include "plplot.h"
  4. #include <stdio.h>
  5.  
  6. short int *fntlkup;
  7. short int *fntindx;
  8. short int *fntbffr;
  9. short int numberfonts, numberchars;
  10. short int indxleng;
  11.  
  12. static short fontloaded=0;
  13.  
  14. void plfontld(fnt)
  15. PLINT fnt;
  16. {
  17.    static short charset;
  18.    short bffrleng;
  19.    FILE *fontfile;
  20.    FILE *indxfile;
  21.    FILE *lkupfile;
  22.    PLINT level;
  23.  
  24.    glev(&level);
  25.    if (level < 1)  plexit("Please call plstar before calling plfontld.");
  26.  
  27.    if(fontloaded) {
  28.       if(charset == fnt) return;
  29.       free((VOID *)fntindx);
  30.       free((VOID *)fntbffr);
  31.       free((VOID *)fntlkup);
  32.    }
  33.  
  34.    fontloaded = 1;
  35.    charset = fnt;
  36.  
  37.    if(fnt)
  38.       fontfile = fopen(XSTRKFONT,"r");
  39.    else
  40.       fontfile = fopen(SSTRKFONT,"r");
  41.    if(!fontfile)
  42.       plexit("Error opening font file.\n");
  43.    fread((char *)&bffrleng,sizeof(short),1,fontfile);
  44.    fntbffr = (short *)malloc(bffrleng*sizeof(short));
  45.    if(!fntbffr)
  46.       plexit("Out of memory while allocating font buffer.\n");
  47.    fread((char *)fntbffr,sizeof(short),bffrleng,fontfile);
  48.    fclose(fontfile);
  49.  
  50.    if(fnt)
  51.      indxfile = fopen(XFONTINDX,"r");
  52.    else
  53.      indxfile = fopen(SFONTINDX,"r");
  54.    if(!indxfile)
  55.       plexit("Error opening font file.\n");
  56.    fread((char *)&indxleng,sizeof(short),1,indxfile);
  57.    fntindx = (short int *)malloc(indxleng*sizeof(short int));
  58.    if(!fntindx)
  59.       plexit("Out of memory while allocating font buffer.\n");
  60.    fread((char *)fntindx,sizeof(short int),indxleng,indxfile);
  61.    fclose(indxfile);
  62.  
  63.    if(fnt)
  64.       lkupfile = fopen(XFONTLKUP,"r");
  65.    else
  66.       lkupfile = fopen(SFONTLKUP,"r");
  67.    if(!lkupfile)
  68.       plexit("Error opening font file.\n");
  69.    fread((char *)&bffrleng,sizeof(short),1,lkupfile);
  70.    numberfonts = bffrleng/256;
  71.    numberchars = bffrleng & 0xff;
  72.    bffrleng = numberfonts*numberchars;
  73.    fntlkup = (short int *)malloc(bffrleng*sizeof(short int));
  74.    if(!fntlkup)
  75.       plexit("Out of memory while allocating font buffer.\n");
  76.    fread((char *)fntlkup,sizeof(short int),bffrleng,lkupfile);
  77.    fclose(lkupfile);
  78. }
  79.  
  80. void plfontrel()
  81. {
  82.    if(fontloaded) {
  83.       free((VOID *)fntindx);
  84.       free((VOID *)fntbffr);
  85.       free((VOID *)fntlkup);
  86.       fontloaded=0;
  87.    }
  88. }
  89.  
  90.