home *** CD-ROM | disk | FTP | other *** search
- /* Loads either the standard or extended font */
-
- #include "plplot.h"
- #include <stdio.h>
-
- short int *fntlkup;
- short int *fntindx;
- short int *fntbffr;
- short int numberfonts, numberchars;
- short int indxleng;
-
- static short fontloaded=0;
-
- void plfontld(fnt)
- PLINT fnt;
- {
- static short charset;
- short bffrleng;
- FILE *fontfile;
- FILE *indxfile;
- FILE *lkupfile;
- PLINT level;
-
- glev(&level);
- if (level < 1) plexit("Please call plstar before calling plfontld.");
-
- if(fontloaded) {
- if(charset == fnt) return;
- free((VOID *)fntindx);
- free((VOID *)fntbffr);
- free((VOID *)fntlkup);
- }
-
- fontloaded = 1;
- charset = fnt;
-
- if(fnt)
- fontfile = fopen(XSTRKFONT,"r");
- else
- fontfile = fopen(SSTRKFONT,"r");
- if(!fontfile)
- plexit("Error opening font file.\n");
- fread((char *)&bffrleng,sizeof(short),1,fontfile);
- fntbffr = (short *)malloc(bffrleng*sizeof(short));
- if(!fntbffr)
- plexit("Out of memory while allocating font buffer.\n");
- fread((char *)fntbffr,sizeof(short),bffrleng,fontfile);
- fclose(fontfile);
-
- if(fnt)
- indxfile = fopen(XFONTINDX,"r");
- else
- indxfile = fopen(SFONTINDX,"r");
- if(!indxfile)
- plexit("Error opening font file.\n");
- fread((char *)&indxleng,sizeof(short),1,indxfile);
- fntindx = (short int *)malloc(indxleng*sizeof(short int));
- if(!fntindx)
- plexit("Out of memory while allocating font buffer.\n");
- fread((char *)fntindx,sizeof(short int),indxleng,indxfile);
- fclose(indxfile);
-
- if(fnt)
- lkupfile = fopen(XFONTLKUP,"r");
- else
- lkupfile = fopen(SFONTLKUP,"r");
- if(!lkupfile)
- plexit("Error opening font file.\n");
- fread((char *)&bffrleng,sizeof(short),1,lkupfile);
- numberfonts = bffrleng/256;
- numberchars = bffrleng & 0xff;
- bffrleng = numberfonts*numberchars;
- fntlkup = (short int *)malloc(bffrleng*sizeof(short int));
- if(!fntlkup)
- plexit("Out of memory while allocating font buffer.\n");
- fread((char *)fntlkup,sizeof(short int),bffrleng,lkupfile);
- fclose(lkupfile);
- }
-
- void plfontrel()
- {
- if(fontloaded) {
- free((VOID *)fntindx);
- free((VOID *)fntbffr);
- free((VOID *)fntlkup);
- fontloaded=0;
- }
- }
-
-