⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sptobdf.c

📁 unix vnc 协议源码. VNC是一款远程控制工具软件.
💻 C
📖 第 1 页 / 共 2 页
字号:
    ymin = read_2b(f_buffer + FH_FYMIN);    xmax = read_2b(f_buffer + FH_FXMAX);    ymax = read_2b(f_buffer + FH_FYMAX);    pixel_size = point_size * x_res / 720;    printf("STARTFONT 2.1\n");    printf("COMMENT\n");    printf("COMMENT Generated from Bitstream Speedo outlines via sptobdf\n");    printf("COMMENT\n");    printf("FONT %s\n", fontname);    printf("SIZE %d %d %d\n", pixel_size, x_res, y_res);    printf("FONTBOUNDINGBOX %d %d %d %d\n", xmin, ymin, xmax, ymax);    printf("STARTPROPERTIES %d\n", num_props);    printf("RESOLUTION_X %d\n", x_res);    printf("RESOLUTION_Y %d\n", y_res);    printf("POINT_SIZE %d\n", point_size);    printf("PIXEL_SIZE %d\n", pixel_size);    printf("COPYRIGHT \"%s\"\n", f_buffer + FH_CPYRT);    /* do some stretching here so that its isn't too tight */    pixel_size = pixel_size * stretch / 100;    ascent = pixel_size * 764 / 1000;	/* 764 == EM_TOP */    descent = pixel_size - ascent;    printf("FONT_ASCENT %d\n", ascent);    printf("FONT_DESCENT %d\n", descent);    printf("ENDPROPERTIES\n");    printf("CHARS %d\n", num_chars);}buff_t     *sp_load_char_data(file_offset, num, cb_offset)    fix31       file_offset;    fix15       num;    fix15       cb_offset;{    if (fseek(fp, (long) file_offset, (int) 0)) {	fprintf(stderr, "can't seek to char\n");	(void) fclose(fp);	exit(-1);    }    if ((num + cb_offset) > mincharsize) {	fprintf(stderr, "char buf overflow\n");	(void) fclose(fp);	exit(-2);    }    if (fread((c_buffer + cb_offset), sizeof(ufix8), num, fp) != num) {	fprintf(stderr, "can't get char data\n");	exit(-1);    }    char_data.org = (ufix8 *) c_buffer + cb_offset;    char_data.no_bytes = num;    return &char_data;}/* * Called by Speedo character generator to report an error. * *  Since character data not available is one of those errors *  that happens many times, don't report it to user */voidsp_report_error(n)    fix15       n;{    switch (n) {    case 1:	fprintf(stderr, "Insufficient font data loaded\n");	break;    case 3:	fprintf(stderr, "Transformation matrix out of range\n");	break;    case 4:	fprintf(stderr, "Font format error\n");	break;    case 5:	fprintf(stderr, "Requested specs not compatible with output module\n");	break;    case 7:	fprintf(stderr, "Intelligent transformation requested but not supported\n");	break;    case 8:	fprintf(stderr, "Unsupported output mode requested\n");	break;    case 9:	fprintf(stderr, "Extended font loaded but only compact fonts supported\n");	break;    case 10:	fprintf(stderr, "Font specs not set prior to use of font\n");	break;    case 12:	break;    case 13:	fprintf(stderr, "Track kerning data not available()\n");	break;    case 14:	fprintf(stderr, "Pair kerning data not available()\n");	break;    default:	fprintf(stderr, "report_error(%d)\n", n);	break;    }}voidsp_open_bitmap(x_set_width, y_set_width, xorg, yorg, xsize, ysize)    fix31       x_set_width;    fix31       y_set_width;    fix31       xorg;    fix31       yorg;    fix15       xsize;    fix15       ysize;{    fix15       i;    fix15       off_horz;    fix15       off_vert;    fix31       width,                pix_width;    bbox_t      bb;    bit_width = xsize;    bit_height = ysize;    off_horz = (fix15) ((xorg + 32768L) >> 16);    off_vert = (fix15) ((yorg + 32768L) >> 16);    if (bit_width > MAX_BITS) {#ifdef DEBUG	fprintf(stderr, "char wider than max bits -- truncated\n");#endif	bit_width = MAX_BITS;    }    width = sp_get_char_width(char_index);    pix_width = width * (specs.xxmult / 65536L) +	((ufix32) width * ((ufix32) specs.xxmult & 0xffff)) / 65536L;    pix_width /= 65536L;    width = (pix_width * 7200L) / (point_size * y_res);    (void) sp_get_char_bbox(char_index, &bb);    bb.xmin >>= 16;    bb.ymin >>= 16;    bb.xmax >>= 16;    bb.ymax >>= 16;#ifdef DEBUG    if ((bb.xmax - bb.xmin) != bit_width)	fprintf(stderr, "bbox & width mismatch 0x%x (%d) (%d vs %d)\n",		char_index, char_id, (bb.xmax - bb.xmin), bit_width);    if ((bb.ymax - bb.ymin) != bit_height)	fprintf(stderr, "bbox & height mismatch 0x%x (%d) (%d vs %d)\n",		char_index, char_id, (bb.ymax - bb.ymin), bit_height);    if (bb.xmin != off_horz)	fprintf(stderr, "x min mismatch 0x%x (%d) (%d vs %d)\n",		char_index, char_id, bb.xmin, off_horz);    if (bb.ymin != off_vert)	fprintf(stderr, "y min mismatch 0x%x (%d) (%d vs %d)\n",		char_index, char_id, bb.ymin, off_vert);#endif#ifdef BBOX_CLIP    bit_width = bb.xmax - bb.xmin;    bit_height = bb.ymax - bb.ymin;    off_horz = bb.xmin;    off_vert = bb.ymin;#endif    /* XXX kludge to handle space */    if (bb.xmin == 0 && bb.ymin == 0 && bb.xmax == 0 && bb.ymax == 0 &&	    width) {	bit_width = 1;	bit_height = 1;    }    printf("STARTCHAR %d\n", char_id);    printf("ENCODING %d\n", char_id);    printf("SWIDTH %d 0\n", width);    printf("DWIDTH %d 0\n", pix_width);    printf("BBX %d %d %d %d\n", bit_width, bit_height, off_horz, off_vert);    printf("BITMAP\n");    for (i = 0; i < bit_width; i++) {	line_of_bits[i] = '.';    }    line_of_bits[bit_width] = '\0';    cur_y = 0;}static voiddump_line(line)    ufix8      *line;{    int         bit;    unsigned    byte;    byte = 0;    for (bit = 0; bit < bit_width; bit++) {	if (line[bit] == 'X')	    byte |= (1 << (7 - (bit & 7)));	if ((bit & 7) == 7) {	    printf("%02X", byte);	    byte = 0;	}    }    if ((bit & 7) != 0)	printf("%02X", byte);    printf("\n");}#ifdef BBOX_CLIPstatic fix15 last_y;static int  trunc = 0;#endifvoidsp_set_bitmap_bits(y, xbit1, xbit2)    fix15       y;    fix15       xbit1;    fix15       xbit2;{    fix15       i;    if (xbit1 > MAX_BITS) {#ifdef DEBUG	fprintf(stderr, "run wider than max bits -- truncated\n");#endif	xbit1 = MAX_BITS;    }    if (xbit2 > MAX_BITS) {#ifdef DEBUG	fprintf(stderr, "run wider than max bits -- truncated\n");#endif	xbit2 = MAX_BITS;    }    while (cur_y != y) {	dump_line(line_of_bits);	for (i = 0; i < bit_width; i++) {	    line_of_bits[i] = '.';	}	cur_y++;    }#ifdef BBOX_CLIP    last_y = y;    if (y >= bit_height) {#ifdef DEBUG	fprintf(stderr,		"y value is larger than height 0x%x (%d) -- truncated\n",		char_index, char_id);#endif	trunc = 1;	return;    }#endif				/* BBOX_CLIP */    for (i = xbit1; i < xbit2; i++) {	line_of_bits[i] = 'X';    }}voidsp_close_bitmap(){#ifdef BBOX_CLIP    int         i;    if (!trunc)	dump_line(line_of_bits);    trunc = 0;    last_y++;    while (last_y < bit_height) {#ifdef DEBUG	fprintf(stderr, "padding out height for 0x%x (%d)\n",		char_index, char_id);#endif	for (i = 0; i < bit_width; i++) {	    line_of_bits[i] = '.';	}	dump_line(line_of_bits);	last_y++;    }#else    dump_line(line_of_bits);#endif    printf("ENDCHAR\n");}/* outline stubs */voidsp_open_outline(){}voidsp_start_new_char(){}voidsp_start_contour(){}voidsp_curve_to(){}voidsp_line_to(){}voidsp_close_contour(){}voidsp_close_outline(){}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -