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

📄 hre.h

📁 一个嵌入式操作系统(microwindows)的源代码
💻 H
字号:
/*  *  hre.h:            API for Handwriting Recognition Engine on Unix *  Author:           James Kempf *  Created On:       Wed Oct 28 11:30:43 1992 *  Last Modified By: James Kempf *  Last Modified On: Fri Sep 23 13:49:26 1994 *  Update Count:     74 *  Copyright (c) 1994 by Sun Microsystems Computer Company *  All rights reserved. *   *  Use and copying of this software and preparation of  *  derivative works based upon this software are permitted. *  Any distribution of this software or derivative works *  must comply with all applicable United States export control *  laws. * *  This software is made available as is, and Sun Microsystems *  Computer Company makes no warranty about the software, its *  performance, or its conformity to any specification */#ifndef _HRE_H_#define _HRE_H_#include <sys/types.h>#include <stdlib.h>/*#include <libintl.h>*/#ifdef ELXtypedef unsigned int wchar_t;#endif/* Scalar Type Definitions *//*For better readibility.*/#ifndef truetypedef u_char bool;#define true 1#define false 0#endif/*For pointers to extra functions on recognizer.*/typedef void (*rec_fn)();/* *rec_confidence is an integer between 0-100 giving the confidence of the * recognizer in a particular result.*/typedef u_char rec_confidence;/*Time value. This is the same as in X.h, so we conditionally define.*//* ari -- no it's not.  *SIGH*  there's an ifdef in X.h specifically *//* for osf.  */#ifndef X_H#ifndef __osf__typedef unsigned long Time;#elsetypedef unsigned int Time;#endif/* (mips) typedef unsigned long Time; *//* (osf) typedef unsigned int Time; */#endif/**************** RECOGNIZER CONFIGURATION INFORMATION *******************//* * Recognizer information. Gives the locale, category of the character * set returned by the recognizer, and any subsets to which the * recognition can be limited. The locale and category should be * suitable for the setlocale(3). Those recognizers which don't do text * can simply report a blank locale and category, and report the * graphics types they recognize in the subset. */typedef struct {    char* ri_locale;        /*The locale of the character set.*/    char* ri_name;          /*Complete pathname to the recognizer.*/    char** ri_subset;       /*Null terminated list of subsets supported*/} rec_info;/*These define a set of common character subset names.*/#define GESTURE		"GESTURE"	/* gestures only */#define MATHSET		"MATHSET"	/* %^*()_+={}<>,/. */#define MONEYSET	"MONEYSET"	/* $, maybe cent, pound, and yen */#define WHITESPACE	"WHITESPACE"	/* gaps are recognized as space */#define KANJI_JIS1	"KANJI_JIS1"	/* the JIS1 kanji only */#define KANJI_JIS1_PLUS	"KANJI_JIS1_PLUS" /* JIS1 plus some JIS2 */#define KANJI_JIS2	"KANJI_JIS2"	/* the JIS1 + JIS2 kanji */#define HIRIGANA	"HIRIGANA"	/* the hirigana */#define KATAKANA	"KATAKANA"	/* the katakana */#define UPPERCASE	"UPPERCASE"	/* upper case alphabetics, no digits */#define LOWERCASE	"LOWERCASE"	/* lower case alphabetics, no digits */#define DIGITS		"DIGITS"	/* digits 0-9 only */#define PUNCTUATION	"PUNCTUATION"	/* \!-;'"?()&., */#define NONALPHABETIC	"NONALPHABETIC" /* all nonalphabetics, no digits */#define ASCII		"ASCII"		/* the ASCII character set */#define ISO_LATIN12	"ISO_LATIN12"	/* The ISO Latin 12 characters *//********************  RECOGNITION INPUT STRUCTURES ***********************//* * WINDOW SYSTEM INTERFACE*//*Basic point. Note that it is identical to XTimeCoord, for easy conversion*/typedef struct {    Time time;    short x, y;} pen_point;/*Bounding box. Structurally identical to XRectangle.*/typedef struct {    short x,y;                    /*Upper left corner.*/    short width,height;           /*Width and height.*/} pen_rect;    /* Button flags - pen's button configuration. */#define TABLET_TIP     0x1	/*tip switch*/#define TABLET_BUTTON1 0x2	/*one barrel switch*/#define TABLET_BUTTON2 0x4	/*two barrel switches*/#define TABLET_BUTTON3 0x8	/*three barrel switches*//* Pen flags - additional state information that can be reported by the pen.*/#define TABLET_PROXIMITY  0x1  /*can report position when pen not in contact*/#define TABLET_RELATIVE   0x2	/*can report relative coords, like mouse*/#define TABLET_ABSOLUTE	  0x4   /*can report absolute co-ordinates*/#define TABLET_RANGE	  0x8   /*can report when pen goes out of range*/#define TABLET_INVERT     0x10	/*can report when pen is inverted*/#define TABLET_TOUCH	  0x20	/*finger can be used as pen*//* Angle flags - reporting of information about the pen angle. */#define TABLET_ANGLEX  0x1	/*can report angle with the x axis*/#define TABLET_ANGLEY  0x2	/*can report angle with the y axis*/#define TABLET_ROTATE  0x4	/*can report barrel rotation*//*  * Sensor flags - configuration and reporting capabilities*  of the tablet's sensor panel.*/#define TABLET_INTEGRATED     0x1     /*sensor panel is integrated with display*/#define TABLET_PRESSURE       0x2     /*sensor panel can report pressure*/#define TABLET_HEIGHT         0x4     /*sensor panel can report height*//* Units flags - in what units x and y coordinate data reported.*/#define TABLET_DIMENSIONLESS 0x1	/*no units*/#define TABLET_ENGLISH	     0x2	/*thousandths of an inch*/#define TABLET_METRIC	     0x4	/*tenths of a millimeter*//* Origin flags - where the tablet's origin is located.*/#define TABLET_ULEFT	0x1		/*upper left corner*/#define TABLET_URIGHT	0x2		/*upper right corner*/#define TABLET_LLEFT    0x4		/*lower left corner*/#define TABLET_LRIGHT	0x8		/*lower right corner*/#define TABLET_CENTER	0x10		/*center of tablet*//* * Tablet  capabilities structure. Defines basic information about tablet * configuration. */typedef struct {	char tc_id[20];			   /*tablet identifier, null terminated*/	u_short tc_button;      	   /*button capabilities*/	u_short tc_pen;		       	   /*pen capabilities*/	u_short tc_angle;         	   /*pen angle reporting*/	u_int tc_sensor : 8;		   /*sensor capabilities*/	u_int tc_units : 8;	   	   /*units for xy reporting*/	u_int tc_default_units : 8; 	   /*default units*/	u_int tc_origin : 8;	   	   /*where origin located*/	short tc_x[2];			   /*minimum/maximum x*/	short tc_y[2];			   /*minimum/maximum y*/	short tc_pressure[2];		   /*minimum/maximum pressure/height*/	u_int tc_sample_rate;		   /*rate of event reporting*/	u_int tc_sample_distance;	   /*xy coords per sample*/} tablet_cap;/* * PEN STROKE DATA*//* * Pen state parameters. "Basic" state is pen up/down, barrel buttons  * (if any), and in/out of range. Others may be reported by particular pens.*/typedef struct {    u_short pt_button;      /*button state - same as tc_button*/    u_short pt_pen;         /*other state - same as tc_pen*/    short pt_pressure;      /*Pressure. + against tablet, - above tablet.*/    double pt_anglex;       /*angle of tilt in the x direction, in radians.*/    double pt_angley;       /*angle of tilt in the y direction, in radians.*/    double pt_barrelrotate; /*angle of barrel rotation, in radians.*/} pen_state;/* * Stroke structure. */typedef struct {    u_int ps_npts;                        /*Number of pen_point in array.*/    pen_point* ps_pts;                    /*Array of points.*/    u_int ps_nstate;			  /*Number of pen_state in array.*/    u_int* ps_trans;			  /*State transition point indicies.*/    pen_state* ps_state;                  /*Array of state.*/} pen_stroke;/* * RECOGNITION CONTEXT*//* Structure for reporting writing area geometric constraints. */typedef struct {	pen_rect pr_area;	short pr_row, pr_col;	double pr_rowpitch, pr_colpitch;} pen_frame; /*User preferences*/#define REC_RIGHTH 0x0		/*Right-handed writer.*/#define REC_LEFTH  0x1          /*Left-handed writer.*//* * Writing direction. There will generally be a preferred and a  * secondary direction (example: English is left to right, then * top to bottom). High byte has preferred, low byte secondary. * The recognizer can ignore this and key off of locale.*/#define REC_DEFAULT           0x0         /*Use default direction.*/#define REC_BOTTOM_TOP        0x1         /*Bottom to top.*/#define REC_LEFT_RIGHT        0x2         /*Left to right.*/#define REC_RIGHT_LEFT        0x3         /*Right to left.*/#define REC_TOP_BOTTOM        0x4         /*Top to bottom.*//*  * Structure for describing a set of letters to constrain recognition.  * ls_type is the same as the re_type field for rec_element below.*/typedef struct _letterset {        char ls_type;        union _ls_set {                char* aval;                wchar_t* wval;        } ls_set;} letterset;/* * Recognition context. Describes the context in which the pen stroke * data was obtained and in which recognition should proceed. */typedef struct {    u_short rc_upref;           /*User preference. */    bool rc_gesture;            /*Look for gesture if true.*/    u_short rc_direction;       /*Primary and secondary writing direction.*/    rec_confidence rc_cutoff;	/*Cut off recognition below this confidence*/    tablet_cap* rc_tinfo;       /*Tablet capabilities.*/    char** rc_subset;           /*Confine recognition to these subsets.*/    pen_frame* rc_frame;        /*If nonNULL, writing area geometry.*/    wordset rc_wordset;         /*If nonNULL, dictionary.*/    letterset rc_letterset;     /*If nonNULL, constrain to these chars.*/    void* rc_context;           /*For recognizer-specific context.*/} rc;/**************************  GESTURES  **************************//* * Gestures. The toolkit initializes the recognizer with a * set of gestures having appropriate callbacks.  * When a gesture is recognized, it is returned as part of a * recognition element. The recognizer fills in the bounding * box and hotspots. The toolkit fills in any additional values, * such as the current window, and calls the callback.*/typedef struct Gesture {    char* g_name;                      /*The gesture's name.*/    u_int g_nhs;                       /*Number of hotspots.*/    pen_point* g_hspots;               /*The hotspots.*/    pen_rect g_bbox;                   /*The bounding box.*/    void (*g_action)(struct Gesture*);       /*Pointer to execution function.*/   void* g_wsinfo;	    	     /*For toolkit to fill in.*/} gesture;typedef void (*xgesture)(gesture*);/*These provide some common gesture names.*/#define COPY	"COPY"		/*Copy target to clipboard*/#define CUT	"CUT"		/*Copy target and delete*/#define PASTE	"PASTE"		/*Paste clipboard into target*/#define UNDO	"UNDO"		/*Undo the previous gesture action*/#define CLEAR	"CLEAR"		/*Clear clipboard*/#define EXTEND	"EXTEND"	/*Extend selection to target location*/#define RETURN	"RETURN"	/*Insert newline/carriage return at target*/#define SPACE	"SPACE"		/*Insert space at target*/#define TAB	"TAB"		/*Insert tab at target*/#define KKCONVERT  "KKCONVERT"	/*Perform kana-kanji conversion on target*//********************* RECOGNITION RETURN VALUES *************************//*Different types in union. "Other" indicates a cast is needed.*/#define REC_NONE    0x0             /*No return value*/#define REC_GESTURE 0x1             /*Gesture.*/#define REC_ASCII   0x2             /*Array of 8 bit ASCII*/#define REC_VAR     0x4             /*Array of variable width characters. */#define REC_WCHAR   0x8             /*Array of Unicode (wide) characters. */#define REC_OTHER   0x10            /*Undefined type.*/#define REC_CORR    0x20	    /*rec_correlation struct*//* * Recognition elements. A recognition element is a structure having a  * confidence level member, and a union, along with a flag indicating  * the union type. The union contains a pointer to the result. This * is the basic recognition return value, corresponding to one * recognized word, letter, or group of letters.*//*Ruse to make types woik*/#define rec_correlation voidtypedef struct {    char re_type;                  /*Union type flag.*/    union {	gesture* gval;             /*Gesture.*/	char* aval;                /*ASCII and variable width.*/	wchar_t* wval;             /*Unicode.*/	rec_correlation* rcval;    /*rec_correlation*/    } re_result;                       rec_confidence re_conf;        /*Confidence (0-100).*/} rec_element;/* * Recognition alternative. The recognition alternative gives * a translated element for a particular segmentation, and * a pointer to an array of alternatives for the next position * in the segmentation thread.*/struct _Rec_alternative {	rec_element ra_elem; 		/*the translated element*/	u_int ra_nalter;		/*number of next alternatives*/	struct _Rec_alternative* ra_next; /*the array of next alternatives*/};typedef struct _Rec_alternative rec_alternative;/* * Recognition correlation. A recognition correlation is a recognition * of the stroke input along with a correlation between the stroke * input and the recognized text. The rec_correlation struct contains * a pointer to an arrray of pointers to strokes, and   two arrays of integers, giving the starting point and * stopping point of each corresponding recogition element returned * in the strokes. */#undef rec_correlationtypedef struct {    rec_element ro_elem;          /*The recognized alternative.*/    u_int ro_nstrokes;            /*Number of strokes.*/    pen_stroke* ro_strokes;       /*Array of strokes.*/    u_int* ro_start;              /*Starting index of points.*/    u_int* ro_stop;               /*Stopping index of points.*/} rec_correlation;#endif

⌨️ 快捷键说明

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