亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? convbdf.c

?? 編譯后直接運行的MP3播放器全部C語言源代碼 一個包含FAT文件系統、系統引導 Boot、FLASH Driver等內容的
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Convert BDF files to C source and/or Rockbox .fnt file format * * Copyright (c) 2002 by Greg Haerr <greg@censoft.com> * * What fun it is converting font data... * * 09/17/02	Version 1.0 */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>/* BEGIN font.h*//* loadable font magic and version #*/#define VERSION		"RB11"/* bitmap_t helper macros*/#define BITMAP_WORDS(x)         (((x)+15)/16)	/* image size in words*/#define BITMAP_BYTES(x)         (BITMAP_WORDS(x)*sizeof(bitmap_t))#define	BITMAP_BITSPERIMAGE     (sizeof(bitmap_t) * 8)#define	BITMAP_BITVALUE(n)      ((bitmap_t) (((bitmap_t) 1) << (n)))#define	BITMAP_FIRSTBIT         (BITMAP_BITVALUE(BITMAP_BITSPERIMAGE - 1))#define	BITMAP_TESTBIT(m)	((m) & BITMAP_FIRSTBIT)#define	BITMAP_SHIFTBIT(m)	((bitmap_t) ((m) << 1))typedef unsigned short bitmap_t; /* bitmap image unit size*//* builtin C-based proportional/fixed font structure *//* based on The Microwindows Project http://microwindows.org */struct font {    char *	name;		/* font name*/    int		maxwidth;	/* max width in pixels*/    int 	height;		/* height in pixels*/    int		ascent;		/* ascent (baseline) height*/    int		firstchar;	/* first character in bitmap*/    int		size;		/* font size in glyphs*/    bitmap_t*	bits;		/* 16-bit right-padded bitmap data*/    unsigned long* offset;	/* offsets into bitmap data*/    unsigned char* width;	/* character widths or NULL if fixed*/    int		defaultchar;	/* default char (not glyph index)*/    long	bits_size;	/* # words of bitmap_t bits*/        /* unused by runtime system, read in by convbdf*/    char *	facename;	/* facename of font*/    char *	copyright;	/* copyright info for loadable fonts*/    int		pixel_size;    int		descent;    int		fbbw, fbbh, fbbx, fbby;};/* END font.h*/#define isprefix(buf,str)	(!strncmp(buf, str, strlen(str)))#define	strequal(s1,s2)		(!strcmp(s1, s2))#define EXTRA	300		/* # bytes extra allocation for buggy .bdf files*/int gen_c = 0;int gen_fnt = 0;int gen_map = 1;int start_char = 0;int limit_char = 65535;int oflag = 0;char outfile[256];void usage(void);void getopts(int *pac, char ***pav);int convbdf(char *path);void free_font(struct font* pf);struct font* bdf_read_font(char *path);int bdf_read_header(FILE *fp, struct font* pf);int bdf_read_bitmaps(FILE *fp, struct font* pf);char * bdf_getline(FILE *fp, char *buf, int len);bitmap_t bdf_hexval(unsigned char *buf, int ndx1, int ndx2);int gen_c_source(struct font* pf, char *path);int gen_fnt_file(struct font* pf, char *path);voidusage(void){    char help[] = {	"Usage: convbdf [options] [input-files]\n"	"       convbdf [options] [-o output-file] [single-input-file]\n"	"Options:\n"	"    -c     Convert .bdf to .c source file\n"	"    -f     Convert .bdf to .fnt font file\n"	"    -s N   Start output at character encodings >= N\n"	"    -l N   Limit output to character encodings <= N\n"	"    -n     Don't generate bitmaps as comments in .c file\n"	};    fprintf(stderr, help);}/* parse command line options*/void getopts(int *pac, char ***pav){    char *p;    char **av;    int ac;        ac = *pac;    av = *pav;    while (ac > 0 && av[0][0] == '-') {        p = &av[0][1];         while( *p)            switch(*p++) {            case ' ':			/* multiple -args on av[]*/                while( *p && *p == ' ')                    p++;                if( *p++ != '-')	/* next option must have dash*/                    p = "";                break;			/* proceed to next option*/            case 'c':			/* generate .c output*/                gen_c = 1;                break;            case 'f':			/* generate .fnt output*/                gen_fnt = 1;                break;            case 'n':			/* don't gen bitmap comments*/                gen_map = 0;                break;            case 'o':			/* set output file*/                oflag = 1;                if (*p) {                    strcpy(outfile, p);                    while (*p && *p != ' ')                        p++;                }                else {                    av++; ac--;                    if (ac > 0)                        strcpy(outfile, av[0]);                }                break;            case 'l':			/* set encoding limit*/                if (*p) {                    limit_char = atoi(p);                    while (*p && *p != ' ')                        p++;                }                else {                    av++; ac--;                    if (ac > 0)                        limit_char = atoi(av[0]);                }                break;            case 's':			/* set encoding start*/                if (*p) {                    start_char = atoi(p);                    while (*p && *p != ' ')                        p++;                }                else {                    av++; ac--;                    if (ac > 0)                        start_char = atoi(av[0]);                }                break;            default:                fprintf(stderr, "Unknown option ignored: %c\r\n", *(p-1));            }        ++av; --ac;    }    *pac = ac;    *pav = av;}/* remove directory prefix and file suffix from full path*/char *basename(char *path){    char *p, *b;    static char base[256];    /* remove prepended path and extension*/    b = path;    for (p=path; *p; ++p) {        if (*p == '/')            b = p + 1;    }    strcpy(base, b);    for (p=base; *p; ++p) {        if (*p == '.') {            *p = 0;            break;        }    }    return base;}int convbdf(char *path){    struct font* pf;    int ret = 0;    pf = bdf_read_font(path);    if (!pf)        exit(1);        if (gen_c) {        if (!oflag) {            strcpy(outfile, basename(path));            strcat(outfile, ".c");        }        ret |= gen_c_source(pf, outfile);    }    if (gen_fnt) {        if (!oflag) {            strcpy(outfile, basename(path));            strcat(outfile, ".fnt");        }        ret |= gen_fnt_file(pf, outfile);    }    free_font(pf);    return ret;}int main(int ac, char **av){    int ret = 0;    ++av; --ac;		/* skip av[0]*/    getopts(&ac, &av);	/* read command line options*/    if (ac < 1 || (!gen_c && !gen_fnt)) {        usage();        exit(1);    }    if (oflag) {        if (ac > 1 || (gen_c && gen_fnt)) {            usage();            exit(1);        }    }        while (ac > 0) {        ret |= convbdf(av[0]);        ++av; --ac;    }        exit(ret);}/* free font structure*/void free_font(struct font* pf){    if (!pf)        return;    if (pf->name)        free(pf->name);    if (pf->facename)        free(pf->facename);    if (pf->bits)        free(pf->bits);    if (pf->offset)        free(pf->offset);    if (pf->width)        free(pf->width);    free(pf);}/* build incore structure from .bdf file*/struct font* bdf_read_font(char *path){    FILE *fp;    struct font* pf;    fp = fopen(path, "rb");    if (!fp) {        fprintf(stderr, "Error opening file: %s\n", path);        return NULL;    }        pf = (struct font*)calloc(1, sizeof(struct font));    if (!pf)        goto errout;	    pf->name = strdup(basename(path));    if (!bdf_read_header(fp, pf)) {        fprintf(stderr, "Error reading font header\n");        goto errout;    }    if (!bdf_read_bitmaps(fp, pf)) {        fprintf(stderr, "Error reading font bitmaps\n");        goto errout;    }    fclose(fp);    return pf; errout:    fclose(fp);    free_font(pf);    return NULL;}/* read bdf font header information, return 0 on error*/int bdf_read_header(FILE *fp, struct font* pf){    int encoding;    int nchars, maxwidth;    int firstchar = 65535;    int lastchar = -1;    char buf[256];    char facename[256];    char copyright[256];    /* set certain values to errors for later error checking*/    pf->defaultchar = -1;    pf->ascent = -1;    pf->descent = -1;    for (;;) {        if (!bdf_getline(fp, buf, sizeof(buf))) {            fprintf(stderr, "Error: EOF on file\n");            return 0;        }        if (isprefix(buf, "FONT ")) {		/* not required*/            if (sscanf(buf, "FONT %[^\n]", facename) != 1) {                fprintf(stderr, "Error: bad 'FONT'\n");                return 0;            }            pf->facename = strdup(facename);            continue;        }        if (isprefix(buf, "COPYRIGHT ")) {	/* not required*/            if (sscanf(buf, "COPYRIGHT \"%[^\"]", copyright) != 1) {                fprintf(stderr, "Error: bad 'COPYRIGHT'\n");                return 0;            }            pf->copyright = strdup(copyright);            continue;        }        if (isprefix(buf, "DEFAULT_CHAR ")) {	/* not required*/            if (sscanf(buf, "DEFAULT_CHAR %d", &pf->defaultchar) != 1) {                fprintf(stderr, "Error: bad 'DEFAULT_CHAR'\n");                return 0;            }        }        if (isprefix(buf, "FONT_DESCENT ")) {            if (sscanf(buf, "FONT_DESCENT %d", &pf->descent) != 1) {                fprintf(stderr, "Error: bad 'FONT_DESCENT'\n");                return 0;            }            continue;        }        if (isprefix(buf, "FONT_ASCENT ")) {            if (sscanf(buf, "FONT_ASCENT %d", &pf->ascent) != 1) {                fprintf(stderr, "Error: bad 'FONT_ASCENT'\n");                return 0;            }            continue;        }        if (isprefix(buf, "FONTBOUNDINGBOX ")) {            if (sscanf(buf, "FONTBOUNDINGBOX %d %d %d %d",                       &pf->fbbw, &pf->fbbh, &pf->fbbx, &pf->fbby) != 4) {                fprintf(stderr, "Error: bad 'FONTBOUNDINGBOX'\n");                return 0;            }            continue;        }        if (isprefix(buf, "CHARS ")) {            if (sscanf(buf, "CHARS %d", &nchars) != 1) {                fprintf(stderr, "Error: bad 'CHARS'\n");                return 0;            }            continue;        }        /*         * Reading ENCODING is necessary to get firstchar/lastchar         * which is needed to pre-calculate our offset and widths         * array sizes.         */        if (isprefix(buf, "ENCODING ")) {            if (sscanf(buf, "ENCODING %d", &encoding) != 1) {                fprintf(stderr, "Error: bad 'ENCODING'\n");                return 0;            }            if (encoding >= 0 &&                 encoding <= limit_char &&                 encoding >= start_char) {                if (firstchar > encoding)                    firstchar = encoding;                if (lastchar < encoding)                    lastchar = encoding;            }            continue;        }        if (strequal(buf, "ENDFONT"))            break;    }    /* calc font height*/    if (pf->ascent < 0 || pf->descent < 0 || firstchar < 0) {        fprintf(stderr, "Error: Invalid BDF file, requires FONT_ASCENT/FONT_DESCENT/ENCODING\n");        return 0;    }    pf->height = pf->ascent + pf->descent;    /* calc default char*/    if (pf->defaultchar < 0 ||         pf->defaultchar < firstchar ||         pf->defaultchar > limit_char )        pf->defaultchar = firstchar;    /* calc font size (offset/width entries)*/    pf->firstchar = firstchar;    pf->size = lastchar - firstchar + 1;	    /* use the font boundingbox to get initial maxwidth*/    /*maxwidth = pf->fbbw - pf->fbbx;*/    maxwidth = pf->fbbw;    /* initially use font maxwidth * height for bits allocation*/    pf->bits_size = nchars * BITMAP_WORDS(maxwidth) * pf->height;    /* allocate bits, offset, and width arrays*/    pf->bits = (bitmap_t *)malloc(pf->bits_size * sizeof(bitmap_t) + EXTRA);    pf->offset = (unsigned long *)malloc(pf->size * sizeof(unsigned long));    pf->width = (unsigned char *)malloc(pf->size * sizeof(unsigned char));	    if (!pf->bits || !pf->offset || !pf->width) {        fprintf(stderr, "Error: no memory for font load\n");        return 0;    }    return 1;}/* read bdf font bitmaps, return 0 on error*/int bdf_read_bitmaps(FILE *fp, struct font* pf){    long ofs = 0;    int maxwidth = 0;    int i, k, encoding, width;    int bbw, bbh, bbx, bby;    int proportional = 0;    int encodetable = 0;    long l;    char buf[256];    /* reset file pointer*/    fseek(fp, 0L, SEEK_SET);    /* initially mark offsets as not used*/    for (i=0; i<pf->size; ++i)        pf->offset[i] = -1;    for (;;) {        if (!bdf_getline(fp, buf, sizeof(buf))) {            fprintf(stderr, "Error: EOF on file\n");            return 0;        }        if (isprefix(buf, "STARTCHAR")) {            encoding = width = bbw = bbh = bbx = bby = -1;            continue;        }        if (isprefix(buf, "ENCODING ")) {            if (sscanf(buf, "ENCODING %d", &encoding) != 1) {                fprintf(stderr, "Error: bad 'ENCODING'\n");                return 0;            }            if (encoding < start_char || encoding > limit_char)                encoding = -1;            continue;        }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性大战久久久久久久蜜臀| 日韩精品中午字幕| 91精品蜜臀在线一区尤物| 福利91精品一区二区三区| 在线播放日韩导航| 免费在线一区观看| 欧美大白屁股肥臀xxxxxx| 国产一区二区三区久久悠悠色av| 久久久精品免费网站| 成人免费av资源| 中文字幕中文字幕一区| 色av一区二区| 日韩电影在线一区二区| 久久伊99综合婷婷久久伊| 成人午夜精品一区二区三区| 亚洲人吸女人奶水| 欧美久久一二三四区| 国产主播一区二区| 制服丝袜成人动漫| 国产偷v国产偷v亚洲高清| 日韩成人一区二区| 欧美久久久一区| 亚洲小说春色综合另类电影| 色诱视频网站一区| 国产精品不卡在线| 成人教育av在线| 国产亚洲va综合人人澡精品| 蜜乳av一区二区| 制服丝袜亚洲播放| 欧美aaaaaa午夜精品| 欧美精品tushy高清| 亚洲国产精品人人做人人爽| 日本电影亚洲天堂一区| 中文字幕综合网| 一本一道久久a久久精品| 成人欧美一区二区三区| 99热99精品| 自拍av一区二区三区| 91麻豆免费在线观看| 亚洲精品免费在线播放| 在线免费观看视频一区| 亚洲国产精品久久人人爱| 欧美日韩一区三区| 日韩精品电影一区亚洲| 777亚洲妇女| 毛片av一区二区三区| 中文字幕视频一区| 91在线无精精品入口| 亚洲色图欧美激情| 欧美人xxxx| 久久黄色级2电影| 久久九九国产精品| 亚洲国产一区视频| 精品国产乱码久久久久久闺蜜| 在线观看一区二区视频| youjizz久久| 国产麻豆精品久久一二三| 日韩和欧美一区二区| 一区二区三区国产精华| 国产精品毛片高清在线完整版 | 欧美va在线播放| 在线免费观看不卡av| 不卡的电影网站| 国产剧情一区二区| 欧美一区日本一区韩国一区| 日韩中文字幕区一区有砖一区| 精品少妇一区二区三区| 91猫先生在线| 国产中文字幕一区| 一区二区三区在线播放| 欧美不卡一区二区三区四区| 成人的网站免费观看| 亚洲成人av在线电影| 国产欧美精品区一区二区三区 | 日本欧美大码aⅴ在线播放| 久久精品夜色噜噜亚洲aⅴ| 一本大道综合伊人精品热热 | 亚洲日穴在线视频| 日韩精品一区二区三区中文精品 | 国产精品久久久久久久岛一牛影视 | 国产黑丝在线一区二区三区| 亚洲伦理在线精品| 久久蜜桃av一区精品变态类天堂 | 极品尤物av久久免费看| 中文字幕综合网| 精品理论电影在线观看| 在线观看日韩精品| 从欧美一区二区三区| 秋霞国产午夜精品免费视频| 亚洲一区二区成人在线观看| 精品成人在线观看| 欧美日韩另类国产亚洲欧美一级| 成人综合在线网站| 免费成人小视频| 亚洲福利一二三区| 1000精品久久久久久久久| 久久综合色综合88| 欧美一区二区啪啪| 欧美三级中文字幕在线观看| 99久久久久久99| 国产精品亚洲午夜一区二区三区| 青草国产精品久久久久久| 亚洲小说欧美激情另类| 亚洲精品日日夜夜| 亚洲欧洲av在线| 中文字幕一区二区不卡| 欧美激情一区二区三区四区| 精品国精品自拍自在线| 欧美草草影院在线视频| 日韩三级精品电影久久久| 欧美一区二区三区四区视频| 欧美日韩性生活| 欧美军同video69gay| 欧美情侣在线播放| 91麻豆精品国产自产在线| 欧美裸体bbwbbwbbw| 欧美年轻男男videosbes| 欧美三级欧美一级| 制服丝袜激情欧洲亚洲| 日韩一区二区麻豆国产| 欧美变态凌虐bdsm| 久久亚洲二区三区| 国产欧美一区二区三区在线看蜜臀 | 久久久久成人黄色影片| 久久久久久麻豆| 中文一区在线播放| 亚洲欧洲国产日韩| 极品美女销魂一区二区三区| 免费精品视频最新在线| 精品一区二区影视| 国产宾馆实践打屁股91| k8久久久一区二区三区| 91日韩精品一区| 欧美视频自拍偷拍| 日韩视频123| 日本一区二区电影| 一个色在线综合| 秋霞影院一区二区| 国产乱码精品一区二区三区忘忧草 | 亚洲一二三专区| 蜜桃一区二区三区在线观看| 黄页视频在线91| 99久久精品国产毛片| 欧美理论电影在线| 国产亚洲精品精华液| 亚洲精品自拍动漫在线| 日韩精品一二三区| 国产99久久久久久免费看农村| 99re免费视频精品全部| 欧美绝品在线观看成人午夜影视| 久久色成人在线| 一区二区三区四区亚洲| 精品一区二区三区欧美| 99精品国产99久久久久久白柏| 欧美一区在线视频| 国产精品嫩草99a| 日韩电影一区二区三区四区| 国产精品亚洲一区二区三区在线| 色欧美日韩亚洲| 久久久综合视频| 午夜日韩在线观看| 波多野结衣的一区二区三区| 欧美剧情片在线观看| 国产精品欧美极品| 蜜桃精品在线观看| 色综合久久综合网97色综合| 精品国产一区二区三区久久影院| 一区二区三区欧美| 国产1区2区3区精品美女| 欧美一区二区三区在线看| 亚洲图片欧美激情| 国产麻豆精品视频| 中文字幕成人网| 免费在线视频一区| 在线观看日韩电影| 国产精品美女久久久久久久网站| 免费日本视频一区| 欧美日韩一级二级三级| 最近中文字幕一区二区三区| 国产一区二区三区在线观看免费 | 中文字幕一区二区不卡| 麻豆精品一区二区三区| 欧美在线免费播放| 中文字幕在线一区免费| 国产麻豆精品在线观看| 日韩三级视频在线看| 日本成人在线电影网| 欧美日本乱大交xxxxx| 亚洲一区中文在线| 色网站国产精品| 亚洲欧美视频在线观看| 暴力调教一区二区三区| 国产精品污网站| 成人福利视频网站| 欧美经典三级视频一区二区三区| 另类小说欧美激情| 欧美一区二区三区四区视频 | 欧美日韩一区二区三区视频| 亚洲精品视频在线观看网站| 色呦呦网站一区|