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

📄 fontcursor.c

📁 Nxlib,一个模拟xlib的程序。使用microwindows的库来运行需要xlib支持的程序。
💻 C
字号:
#include "nxlib.h"#define X_CURSOR_FONT "cursor"CursorXCreateFontCursor(Display * display, unsigned int shape){	static XColor fg = { 0, 0, 0, 0};	/* black*/	static XColor bg = { 0, 65535, 65535, 65535};	/* white*/	if (_nxCursorFont == None) {		_nxCursorFont = XLoadFont(display, X_CURSOR_FONT);		if (_nxCursorFont == None)			return 0;	}	return XCreateGlyphCursor(display, _nxCursorFont, _nxCursorFont,			shape, shape+1, &fg, &bg);}/* FIXME: must play with _Xconst because old Xlib.h proto differs*//* Assign an arbitrary char to the cursor */CursorXCreateGlyphCursor(Display * display, Font source_font, Font mask_font,		   unsigned int source_char, unsigned int mask_char,		   XColor XCONST * foreground, XColor XCONST * background){	Cursor		ret;	int		tw[2], th[2], tb[2];	unsigned char	ch[2];	GR_GC_ID	gc;	GR_WINDOW_ID	cursor;	GR_COLOR	fc, bc;	GR_RECT		cbb, mbb;	GR_FONT_INFO	srcinfo, maskinfo;	gc = GrNewGC();	/*GrSetGCUseBackground(gc, GR_FALSE);*/ /* assume NewGC defaults TRUE*/	GrSetGCForeground(gc, GR_RGB(255, 255, 255));	GrSetGCBackground(gc, GR_RGB(  0,   0,   0));	/* Draw both the fonts into their appropriate pixmap, and create the cursor */	GrGetFontInfo((GR_FONT_ID) source_font, &srcinfo);	GrGetFontInfo((GR_FONT_ID) mask_font, &maskinfo);	ch[0] = srcinfo.firstchar + source_char;	ch[1] = maskinfo.firstchar + mask_char;	/* Use the mask as the determining size */	GrSetGCFont(gc, (GR_FONT_ID) mask_font);	GrGetGCTextSize(gc, &ch[0], 1, GR_TFTOP, &tw[0], &th[0], &tb[0]);	GrGetGCTextSize(gc, &ch[1], 1, GR_TFTOP, &tw[1], &th[1], &tb[1]);	cursor = GrNewPixmap(tw[1] * 2, th[1], 0);	/* Draw the mask first, to avoid having to switch fonts in the GC */	GrText(cursor, gc, tw[1], 0, &ch[1], 1, GR_TFTOP|GR_TFASCII);	/* Offset the first char by 1 1 */	GrSetGCFont(gc, (GR_FONT_ID) source_font);	GrText(cursor, gc, 1, 1, &ch[0], 1, GR_TFTOP|GR_TFASCII);	/* Calculate the bounding box */	cbb.x = 0;	cbb.y = 0;	cbb.width = tw[0];	cbb.height = th[0];	mbb.x = tw[1];	mbb.y = 0;	mbb.width = tw[1];	mbb.height = th[1];	fc = GR_RGB(foreground->red >> 8, foreground->green >> 8,			foreground->blue >> 8);	bc = GR_RGB(background->red >> 8, background->green >> 8,			background->blue >> 8);	/* cursor hotspot is (leftbearing, ascent)*/	ret = _nxCreateCursor(cursor, &cbb, cursor, &mbb, 0, tb[1],			fc, bc);	GrDestroyWindow(cursor);	GrDestroyGC(gc);	return ret;}

⌨️ 快捷键说明

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