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