/*************************************************************** ** ** Broadcom Corp. Confidential ** Copyright 2002 Broadcom Corp. All Rights Reserved. ** ** THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED ** SOFTWARE LICENSE AGREEMENT BETWEEN THE USER AND BROADCOM. ** YOU HAVE NO RIGHT TO USE OR EXPLOIT THIS MATERIAL EXCEPT ** SUBJECT TO THE TERMS OF SUCH AN AGREEMENT. ** ** Description: Create SGIL bitmap fonts from freetype fonts. ** ** Created: 8/22/2002 by Jeffrey P. Fisher ** ** ** ****************************************************************/ #include void print_usage(char *argv[]) { printf("Usage: %s [options] \n",argv[0]); printf(" Create a C data array from the binary contents of the file.\n"); printf(" An output file is created with \".c\" appended to the filename.\n"); printf(" -h Usage information.\n"); } /**************************************************************** * INPUTS: arc - argument count * argv - array of arguments * OUTPUTS: none * RETURNS: non-zero on failure * DESCRIPTION: Main entry point convert fonts to raw bitmap. * ****************************************************************/ int main(int argc, char *argv[]) { int i,len; FILE* fin,*fout; char *dot_ptr; unsigned char *ptr; static char out_name[1024];; if (argc != 2 ) { print_usage(argv); return 0; } fin = fopen(argv[1],"rb"); /* Parse arguments */ for (i = 1; i < argc; ++i) { if ((strcmp(argv[i],"-h") == 0) || (strcmp(argv[i],"-H") == 0)) { print_usage(argv); return 0; } } dot_ptr = strstr(argv[1],"."); if (!dot_ptr) { sprintf(out_name,"%s.c",argv[1]); } else { strcpy(out_name,argv[1]); dot_ptr[0] = 0; sprintf(out_name,"%s.c",argv[1]); } printf("Creating file %s...\n",out_name); fout = fopen(out_name,"w+"); if (!fin || !fout) { return -1; } fseek(fin,0,SEEK_END); len = ftell(fin); fseek(fin,0,SEEK_SET); ptr = (unsigned char*)malloc(len); if (fread(ptr,1,len,fin) != len) { return -1; } fprintf(fout,"const unsigned char g_%s[] = \n{\n\t",argv[1]); for (i = 0; i < len; i++) { if (i % 8 == 0) { fprintf(fout,"\n\t"); } fprintf(fout,"0x%02x, ",ptr[i]); } fprintf(fout,"\n};\nunsigned int g_%s_size = %d;\n",argv[1],len); fclose(fin); fclose(fout); free(ptr); return 0; }