1*3e12c5d1SDavid du Colombier #include "e.h"
2*3e12c5d1SDavid du Colombier #include <ctype.h>
3*3e12c5d1SDavid du Colombier
setsize(char * p)4*3e12c5d1SDavid du Colombier void setsize(char *p) /* set size as found in p */
5*3e12c5d1SDavid du Colombier {
6*3e12c5d1SDavid du Colombier nszstack++;
7*3e12c5d1SDavid du Colombier szstack[nszstack] = 0; /* assume relative */
8*3e12c5d1SDavid du Colombier if (*p == '+') {
9*3e12c5d1SDavid du Colombier ps += atoi(p+1);
10*3e12c5d1SDavid du Colombier if (szstack[nszstack-1] != 0) /* propagate absolute size */
11*3e12c5d1SDavid du Colombier szstack[nszstack] = ps;
12*3e12c5d1SDavid du Colombier } else if (*p == '-') {
13*3e12c5d1SDavid du Colombier ps -= atoi(p+1);
14*3e12c5d1SDavid du Colombier if (szstack[nszstack-1] != 0)
15*3e12c5d1SDavid du Colombier szstack[nszstack] = ps;
16*3e12c5d1SDavid du Colombier } else if (isdigit(*p)) {
17*3e12c5d1SDavid du Colombier if (szstack[nszstack-1] == 0)
18*3e12c5d1SDavid du Colombier printf(".nr %d \\n(.s\n", 99-nszstack);
19*3e12c5d1SDavid du Colombier else
20*3e12c5d1SDavid du Colombier printf(".nr %d %d\n", 99-nszstack, ps);
21*3e12c5d1SDavid du Colombier szstack[nszstack] = ps = atoi(p);
22*3e12c5d1SDavid du Colombier } else {
23*3e12c5d1SDavid du Colombier ERROR "illegal size %s ignored", p WARNING;
24*3e12c5d1SDavid du Colombier }
25*3e12c5d1SDavid du Colombier dprintf(".\tsetsize %s; ps = %d\n", p, ps);
26*3e12c5d1SDavid du Colombier }
27*3e12c5d1SDavid du Colombier
size(int p1,int p2)28*3e12c5d1SDavid du Colombier void size(int p1, int p2)
29*3e12c5d1SDavid du Colombier {
30*3e12c5d1SDavid du Colombier /* old size in p1, new in ps */
31*3e12c5d1SDavid du Colombier yyval = p2;
32*3e12c5d1SDavid du Colombier dprintf(".\tS%d <- \\s%d %d \\s%d; b=%g, h=%g\n",
33*3e12c5d1SDavid du Colombier yyval, ps, p2, p1, ebase[yyval], eht[yyval]);
34*3e12c5d1SDavid du Colombier if (szstack[nszstack] != 0) {
35*3e12c5d1SDavid du Colombier printf(".ds %d %s\\*(%d\\s\\n(%d\n", yyval, ABSPS(ps), p2, 99-nszstack);
36*3e12c5d1SDavid du Colombier } else
37*3e12c5d1SDavid du Colombier printf(".ds %d %s\\*(%d%s\n", yyval, DPS(p1,ps), p2, DPS(ps,p1));
38*3e12c5d1SDavid du Colombier nszstack--;
39*3e12c5d1SDavid du Colombier ps = p1;
40*3e12c5d1SDavid du Colombier }
41*3e12c5d1SDavid du Colombier
globsize(void)42*3e12c5d1SDavid du Colombier void globsize(void)
43*3e12c5d1SDavid du Colombier {
44*3e12c5d1SDavid du Colombier char temp[20];
45*3e12c5d1SDavid du Colombier
46*3e12c5d1SDavid du Colombier getstr(temp, sizeof(temp));
47*3e12c5d1SDavid du Colombier if (temp[0] == '+') {
48*3e12c5d1SDavid du Colombier gsize += atoi(temp+1);
49*3e12c5d1SDavid du Colombier if (szstack[0] != 0)
50*3e12c5d1SDavid du Colombier szstack[0] = gsize;
51*3e12c5d1SDavid du Colombier } else if (temp[0] == '-') {
52*3e12c5d1SDavid du Colombier gsize -= atoi(temp+1);
53*3e12c5d1SDavid du Colombier if (szstack[0] != 0)
54*3e12c5d1SDavid du Colombier szstack[0] = gsize;
55*3e12c5d1SDavid du Colombier } else if (isdigit(temp[0])) {
56*3e12c5d1SDavid du Colombier gsize = atoi(temp);
57*3e12c5d1SDavid du Colombier szstack[0] = gsize;
58*3e12c5d1SDavid du Colombier printf(".nr 99 \\n(.s\n");
59*3e12c5d1SDavid du Colombier } else {
60*3e12c5d1SDavid du Colombier ERROR "illegal gsize %s ignored", temp WARNING;
61*3e12c5d1SDavid du Colombier }
62*3e12c5d1SDavid du Colombier yyval = eqnreg = 0;
63*3e12c5d1SDavid du Colombier ps = gsize;
64*3e12c5d1SDavid du Colombier if (gsize < 12 && !dps_set) /* sub and sup size change */
65*3e12c5d1SDavid du Colombier deltaps = gsize / 3;
66*3e12c5d1SDavid du Colombier else if (gsize < 20)
67*3e12c5d1SDavid du Colombier deltaps = gsize / 4;
68*3e12c5d1SDavid du Colombier else
69*3e12c5d1SDavid du Colombier deltaps = gsize / 5;
70*3e12c5d1SDavid du Colombier }
71