xref: /plan9/sys/src/cmd/eqn/eqnbox.c (revision 3e12c5d1bb89fc02707907988834ef147769ddaf)
1*3e12c5d1SDavid du Colombier #include "e.h"
2*3e12c5d1SDavid du Colombier 
eqnbox(int p1,int p2,int lu)3*3e12c5d1SDavid du Colombier void eqnbox(int p1, int p2, int lu)
4*3e12c5d1SDavid du Colombier {
5*3e12c5d1SDavid du Colombier 	double b, h;
6*3e12c5d1SDavid du Colombier 	char *sh;
7*3e12c5d1SDavid du Colombier 	extern char *IRspace;
8*3e12c5d1SDavid du Colombier 
9*3e12c5d1SDavid du Colombier 	yyval = p1;
10*3e12c5d1SDavid du Colombier 	b = max(ebase[p1], ebase[p2]);
11*3e12c5d1SDavid du Colombier 	eht[yyval] = h = b + max(eht[p1]-ebase[p1],
12*3e12c5d1SDavid du Colombier 		eht[p2]-ebase[p2]);
13*3e12c5d1SDavid du Colombier 	ebase[yyval] = b;
14*3e12c5d1SDavid du Colombier 	dprintf(".\tS%d <- %d %d; b=%g, h=%g\n", yyval, p1, p2, b, h);
15*3e12c5d1SDavid du Colombier 	sh = pad(class[rclass[p1]][lclass[p2]]);
16*3e12c5d1SDavid du Colombier 	if (lu) {
17*3e12c5d1SDavid du Colombier 		printf(".nr %d \\w'\\*(%d%s'\n", p1, p1, sh);
18*3e12c5d1SDavid du Colombier 		printf(".ds %d \\h'|\\n(09u-\\n(%du'\\*(%d\n", p1, p1, p1);
19*3e12c5d1SDavid du Colombier 	}
20*3e12c5d1SDavid du Colombier 	printf(".as %d \"%s\\*(%d\n", yyval, sh, p2);
21*3e12c5d1SDavid du Colombier 	rfont[p1] = rfont[p2];
22*3e12c5d1SDavid du Colombier 	rclass[p1] = rclass[p2];
23*3e12c5d1SDavid du Colombier 	sfree(p2);
24*3e12c5d1SDavid du Colombier }
25