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

📄 nxscribble.c

📁 神龙卡开发原代码
💻 C
字号:
/* * Copyright (c) 2000 Greg Haerr <greg@censoft.com> * Copyright (c) 2000 Century Software <embedded.centurysoftware.com> * * Scribble Handwriting Recognition for Nano-X! */#include <stdio.h>#include <stdlib.h>#define MWINCLUDECOLORS#include "nano-X.h"#include "scrib.h"#define TEXTWIN_WIDTH	200		/* text window width/height*/#define TEXTWIN_HEIGHT	150static ScribbleWidget	w;static GR_BOOL		bTextwin = GR_FALSE;static GR_WINDOW_ID	wt = 0;static GR_GC_ID		gct = 0;static GR_GC_ID		gctb = 0;static GR_COORD		xpos = 0;static GR_COORD		ypos = 0;static GR_SIZE		width;		/* width of character */static GR_SIZE		height;		/* height of character */static GR_SIZE		base;		/* height of baseline */static void char_out(GR_CHAR ch);static void char_del(GR_COORD x, GR_COORD y);void do_buttondown(GR_EVENT_BUTTON	*bp);void do_buttonup(GR_EVENT_BUTTON	*bp);void do_motion(GR_EVENT_MOUSE		*mp);void do_focusin(GR_EVENT_GENERAL	*gp);void do_keystroke(GR_EVENT_KEYSTROKE	*kp);void do_exposure(GR_EVENT_EXPOSURE	*ep);intmain(int argc, char **argv){	int		t = 1;	GR_EVENT	event;		/* current event */	while (t < argc) {		if (!strcmp("-t", argv[t])) {			bTextwin = GR_TRUE;			++t;			continue;		}	}	if (GrOpen() < 0) {		fprintf(stderr, "cannot open graphics\n");		exit(1);	}	if (bTextwin) {		/* create text output window for debugging*/		wt = GrNewWindow(GR_ROOT_WINDOW_ID, 50, 20,				TEXTWIN_WIDTH, TEXTWIN_HEIGHT, 5, BLACK, GREEN);		GrSelectEvents(wt, 			GR_EVENT_MASK_CLOSE_REQ | GR_EVENT_MASK_KEY_DOWN			| GR_EVENT_MASK_EXPOSURE);		GrMapWindow(wt);		gct = GrNewGC();		GrSetGCForeground(gct, GREEN);		GrGetGCTextSize(gct, "A",1, GR_TFASCII, &width, &height, &base);		GrSetGCFont(gct, GrCreateFont(GR_FONT_OEM_FIXED, 0, NULL));		gctb = GrNewGC();		GrSetGCForeground(gctb, BLACK);	}	/* create scribble input window*/	w = create_scribble();	while (1) {		GrGetNextEvent(&event);		switch (event.type) {			case GR_EVENT_TYPE_BUTTON_DOWN:				do_buttondown(&event.button);				break;			case GR_EVENT_TYPE_BUTTON_UP:				do_buttonup(&event.button);				break;			case GR_EVENT_TYPE_MOUSE_POSITION:			case GR_EVENT_TYPE_MOUSE_MOTION:				do_motion(&event.mouse);				break;			case GR_EVENT_TYPE_FOCUS_IN:				do_focusin(&event.general);				break;			case GR_EVENT_TYPE_KEY_DOWN:				do_keystroke(&event.keystroke);				break;			case GR_EVENT_TYPE_EXPOSURE:				do_exposure(&event.exposure);				break;			case GR_EVENT_TYPE_CLOSE_REQ:				GrClose();				exit(0);		}	}}/* * Here when a button is pressed. */voiddo_buttondown(GR_EVENT_BUTTON	*bp){	ActionStart(w, bp->x, bp->y);}/* * Here when a button is released. */voiddo_buttonup(GR_EVENT_BUTTON	*bp){	ActionEnd(w, bp->x, bp->y);}/* * Here when the mouse has a motion event. */voiddo_motion(GR_EVENT_MOUSE	*mp){	ActionMove(w, mp->x, mp->y);}/* * Here when our window gets focus */voiddo_focusin(GR_EVENT_GENERAL	*gp){#if 0	/* if the window receiving focus is scribble, remember last window*/	if (gp->wid == w->win && gp->wid != 1)		w->lastfocusid = gp->otherid;#endif}/* * Here when an exposure event occurs. */voiddo_exposure(GR_EVENT_EXPOSURE	*ep){	if (ep->wid == w->win)		Redisplay(w);}/* * Here when a keyboard press or injection occurs. */voiddo_keystroke(GR_EVENT_KEYSTROKE	*kp){	if (bTextwin)		char_out(kp->ch);}static voidchar_del(GR_COORD x, GR_COORD y){	xpos -= width;	GrFillRect(wt, gctb, x+1, y /*- height*/ /*+ base*/, width, height);}static voidchar_out(GR_CHAR ch){	switch(ch) {	case '\r':	case '\n':		xpos = 0;		ypos += height;		if(ypos >= TEXTWIN_HEIGHT - height) {			ypos -= height;			/* FIXME: changing FALSE to TRUE crashes nano-X*/			/* clear screen, no scroll*/			ypos = 0;			GrClearWindow(wt, GR_FALSE);		}		return;	case '\007':			/* bel*/		return;	case '\t':		xpos += width;		while((xpos/width) & 7)			char_out(' ');		return;	case '\b':			/* assumes fixed width font!!*/		if (xpos <= 0)			return;		char_del(xpos, ypos);		char_out(' ');		char_del(xpos, ypos);		return;	}	GrText(wt, gct, xpos+1, ypos, &ch, 1, GR_TFTOP);	xpos += width;	if (xpos >= TEXTWIN_WIDTH-width)		char_out('\n');}

⌨️ 快捷键说明

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