1 3ebbd193 2017-06-19 rsc #include <stdio.h>
2 3ebbd193 2017-06-19 rsc #include "pic.h"
3 3ebbd193 2017-06-19 rsc #include "y.tab.h"
5 3ebbd193 2017-06-19 rsc obj *movegen(void)
7 3ebbd193 2017-06-19 rsc static double prevdx, prevdy;
9 3ebbd193 2017-06-19 rsc double defx, defy, dx, dy;
12 3ebbd193 2017-06-19 rsc static int xtab[] = { 1, 0, -1, 0 }; /* R=0, U=1, L=2, D=3 */
13 3ebbd193 2017-06-19 rsc static int ytab[] = { 0, 1, 0, -1 };
16 3ebbd193 2017-06-19 rsc defx = getfval("movewid");
17 3ebbd193 2017-06-19 rsc defy = getfval("moveht");
18 3ebbd193 2017-06-19 rsc dx = dy = some = 0;
19 3ebbd193 2017-06-19 rsc for (i = 0; i < nattr; i++) {
20 3ebbd193 2017-06-19 rsc ap = &attr[i];
21 3ebbd193 2017-06-19 rsc switch (ap->a_type) {
22 3ebbd193 2017-06-19 rsc case TEXTATTR:
23 3ebbd193 2017-06-19 rsc savetext(ap->a_sub, ap->a_val.p);
31 3ebbd193 2017-06-19 rsc dx -= (ap->a_sub==DEFAULT) ? defx : ap->a_val.f;
33 3ebbd193 2017-06-19 rsc hvmode = L_DIR;
36 3ebbd193 2017-06-19 rsc dx += (ap->a_sub==DEFAULT) ? defx : ap->a_val.f;
38 3ebbd193 2017-06-19 rsc hvmode = R_DIR;
41 3ebbd193 2017-06-19 rsc dy += (ap->a_sub==DEFAULT) ? defy : ap->a_val.f;
43 3ebbd193 2017-06-19 rsc hvmode = U_DIR;
46 3ebbd193 2017-06-19 rsc dy -= (ap->a_sub==DEFAULT) ? defy : ap->a_val.f;
48 3ebbd193 2017-06-19 rsc hvmode = D_DIR;
51 3ebbd193 2017-06-19 rsc ppos = ap->a_val.o;
52 3ebbd193 2017-06-19 rsc dx = ppos->o_x - curx;
53 3ebbd193 2017-06-19 rsc dy = ppos->o_y - cury;
57 3ebbd193 2017-06-19 rsc ppos = ap->a_val.o;
58 3ebbd193 2017-06-19 rsc dx = ppos->o_x;
59 3ebbd193 2017-06-19 rsc dy = ppos->o_y;
64 3ebbd193 2017-06-19 rsc ppos = ap->a_val.o;
65 3ebbd193 2017-06-19 rsc curx = ppos->o_x;
66 3ebbd193 2017-06-19 rsc cury = ppos->o_y;
74 3ebbd193 2017-06-19 rsc defx *= xtab[hvmode];
75 3ebbd193 2017-06-19 rsc defy *= ytab[hvmode];
77 3ebbd193 2017-06-19 rsc prevdx = defx;
78 3ebbd193 2017-06-19 rsc prevdy = defy;
79 3ebbd193 2017-06-19 rsc extreme(curx, cury);
80 3ebbd193 2017-06-19 rsc curx += defx;
81 3ebbd193 2017-06-19 rsc cury += defy;
82 3ebbd193 2017-06-19 rsc extreme(curx, cury);
83 3ebbd193 2017-06-19 rsc p = makenode(MOVE, 0);
84 3ebbd193 2017-06-19 rsc dprintf("M %g %g\n", curx, cury);