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