1 #include <stdio.h>
2 #include "handwave.h"
3 #include "internal.h"
4 
5 #define MARGIN_SIDE 72
6 #define MARGIN_TOP 72
7 #define LINEHEIGHT 16
8 #define GEST_SPACE 12
9 #define TEXT_MARGIN 108
10 
psroutine(val,size)11 char *psroutine(val, size)
12 int val;
13 int *size;
14 {
15     int tmp;
16     if (!size)
17 	size = (&tmp);
18 
19     switch (val) {
20 	case Gesture_PALM:
21 	    *size = GEST_SPACE;
22 	    return "showpalm";
23 	case Gesture_DIGIT:
24 	    *size = GEST_SPACE;
25 	    return "showdigit";
26 	case Gesture_FINGERS:
27 	    *size = GEST_SPACE;
28 	    return "showfinger";
29 	case Gesture_WAVE:
30 	    *size = GEST_SPACE;
31 	    return "showwave";
32 	case Gesture_SNAP:
33 	    *size = GEST_SPACE;
34 	    return "showsnap";
35 	case Gesture_CLAPHALF:
36 	    *size = GEST_SPACE;
37 	    return "showclap";
38 	case Gesture_PALM | Gesture_DOUBLE:
39 	    *size = 17;
40 	    return "showpalm2";
41 	case Gesture_DIGIT | Gesture_DOUBLE:
42 	    *size = 17;
43 	    return "showdigit2";
44 	case Gesture_FINGERS | Gesture_DOUBLE:
45 	    *size = GEST_SPACE;
46 	    return "showfinger2";
47 	case Gesture_WAVE | Gesture_DOUBLE:
48 	    *size = 17;
49 	    return "showwave2";
50 	case Gesture_SNAP | Gesture_DOUBLE:
51 	    *size = 17;
52 	    return "showsnap2";
53 	case Gesture_CLAPHALF | Gesture_DOUBLE:
54 	    *size = GEST_SPACE;
55 	    return "showclap2";
56 	default:
57 	    *size = GEST_SPACE;
58 	    return "nullact";
59     }
60 }
61 
dump_list(topedge,leftedge,filter)62 void dump_list(topedge, leftedge, filter)
63 int topedge, leftedge;
64 int (*filter)();
65 {
66     int ix, gx;
67     int xpos, ypos, xval;
68     int val, hop;
69     char *cx;
70     struct spelldef *spel;
71 
72     for (ix=0; ix<NUMSPELLS-1; ix++) {
73 	xpos = leftedge + MARGIN_SIDE;
74 	ypos = topedge - (ix*LINEHEIGHT);
75 
76 	xval = xpos;
77 	if (filter)
78 	    spel = &(spelllist[(*filter)(ix)]);
79 	else
80 	    spel = &(spelllist[ix]);
81 	for (gx=0; gx<spel->length; gx++) {
82 	    val = spel->gests[gx];
83 	    cx = psroutine(val, &hop);
84 	    printf("%d %d %s\n", xval, ypos-1, cx);
85 	    xval += hop;
86 	}
87 	printf("%d %d moveto  %d %d lineto stroke\n", xval+3, ypos+4,
88 			xpos+TEXT_MARGIN-4, ypos+4);
89 	printf("%d %d moveto (%s) show\n", xpos+TEXT_MARGIN, ypos, spel->name);
90     }
91 }
92 
alphasort(val)93 int alphasort(val)
94 int val;
95 {
96     return alphabet_sort_list[val];
97 }
98 
main()99 main()
100 {
101     printf("/Times-Roman findfont 12 scalefont setfont\n");
102     printf("0.5 setlinewidth\n");
103 
104     dump_list(772 - MARGIN_TOP, 0, NULL);
105     dump_list(772 - MARGIN_TOP, 264, alphasort);
106 
107     printf("/Times-Bold findfont 14 scalefont setfont\n");
108     printf("306 752 moveto\n");
109     printf("(SpellCast spell lists -- sorted by gesture and name) centershow\n");
110     printf("\nshowpage\n");
111 }
112