xref: /plan9/sys/src/libscribble/li_recognizer_internal.h (revision 80ee5cbfe36716af62da8896207e9763b8e3d760)
1*80ee5cbfSDavid du Colombier /*
2*80ee5cbfSDavid du Colombier  *  li_recognizer_internal.h
3*80ee5cbfSDavid du Colombier  *
4*80ee5cbfSDavid du Colombier  *  Adapted from cmu_recognizer_internal.h.
5*80ee5cbfSDavid du Colombier  *  Credit to Dean Rubine, Jim Kempf, and Ari Rapkin.
6*80ee5cbfSDavid du Colombier  */
7*80ee5cbfSDavid du Colombier 
8*80ee5cbfSDavid du Colombier #define MAXSCLASSES 100
9*80ee5cbfSDavid du Colombier 
10*80ee5cbfSDavid du Colombier typedef struct PointList {
11*80ee5cbfSDavid du Colombier 	Stroke;
12*80ee5cbfSDavid du Colombier 	int xrange, yrange;
13*80ee5cbfSDavid du Colombier 	struct PointList* next;
14*80ee5cbfSDavid du Colombier } point_list;
15*80ee5cbfSDavid du Colombier 
16*80ee5cbfSDavid du Colombier typedef struct {
17*80ee5cbfSDavid du Colombier     char*		file_name;			/*The classifier file name.*/
18*80ee5cbfSDavid du Colombier     int		nclasses;				/*Number of symbols in class */
19*80ee5cbfSDavid du Colombier     point_list*	ex[MAXSCLASSES];		/*The training examples.*/
20*80ee5cbfSDavid du Colombier     char*		cnames[MAXSCLASSES];	/*The class names.*/
21*80ee5cbfSDavid du Colombier     point_list*	canonex[MAXSCLASSES];	/*Canonicalized vrsions of strokes */
22*80ee5cbfSDavid du Colombier     point_list*	dompts[MAXSCLASSES];	/*Dominant points */
23*80ee5cbfSDavid du Colombier } rClassifier;
24*80ee5cbfSDavid du Colombier 
25*80ee5cbfSDavid du Colombier 
26*80ee5cbfSDavid du Colombier /*This structure contains extra fields for instance-specific data.*/
27*80ee5cbfSDavid du Colombier 
28*80ee5cbfSDavid du Colombier typedef struct {
29*80ee5cbfSDavid du Colombier     /*Instance-specific data.*/
30*80ee5cbfSDavid du Colombier     uint li_magic;            /*Just to make sure nobody's cheating.*/
31*80ee5cbfSDavid du Colombier     rClassifier li_rc;         /*The character classifier.*/
32*80ee5cbfSDavid du Colombier } li_recognizer;
33*80ee5cbfSDavid du Colombier 
34*80ee5cbfSDavid du Colombier 
35*80ee5cbfSDavid du Colombier /*Name of the default classifier file.*/
36*80ee5cbfSDavid du Colombier #define LI_DEFAULT_CLASSIFIER_FILE   "default.cl"
37*80ee5cbfSDavid du Colombier 
38*80ee5cbfSDavid du Colombier /*Classifier file extension.*/
39*80ee5cbfSDavid du Colombier #define LI_CLASSIFIER_EXTENSION ".cl"
40*80ee5cbfSDavid du Colombier 
41*80ee5cbfSDavid du Colombier /*Locale supported by recognizer.*/
42*80ee5cbfSDavid du Colombier #define LI_SUPPORTED_LOCALE  REC_DEFAULT_LOCALE
43