xref: /plan9/sys/src/cmd/htmlroff/t11.c (revision 426d2b71458df9b491ba6c167f699b3f1f7b0428)
1*426d2b71SDavid du Colombier #include "a.h"
2*426d2b71SDavid du Colombier 
3*426d2b71SDavid du Colombier /*
4*426d2b71SDavid du Colombier  * 11. Local Horizontal and Vertical Motions, and the Width Function.
5*426d2b71SDavid du Colombier  */
6*426d2b71SDavid du Colombier 
7*426d2b71SDavid du Colombier int
e_0(void)8*426d2b71SDavid du Colombier e_0(void)
9*426d2b71SDavid du Colombier {
10*426d2b71SDavid du Colombier 	/* digit-width space */
11*426d2b71SDavid du Colombier 	return ' ';
12*426d2b71SDavid du Colombier }
13*426d2b71SDavid du Colombier 
14*426d2b71SDavid du Colombier int
dv(int d)15*426d2b71SDavid du Colombier dv(int d)
16*426d2b71SDavid du Colombier {
17*426d2b71SDavid du Colombier 	Rune sub[6];
18*426d2b71SDavid du Colombier 
19*426d2b71SDavid du Colombier 	d += getnr(L(".dv"));
20*426d2b71SDavid du Colombier 	nr(L(".dv"), d);
21*426d2b71SDavid du Colombier 
22*426d2b71SDavid du Colombier 	runestrcpy(sub, L("<sub>"));
23*426d2b71SDavid du Colombier 	sub[0] = Ult;
24*426d2b71SDavid du Colombier 	sub[4] = Ugt;
25*426d2b71SDavid du Colombier 	if(d < 0){
26*426d2b71SDavid du Colombier 		sub[3] = 'p';
27*426d2b71SDavid du Colombier 		ihtml(L(".dv"), sub);
28*426d2b71SDavid du Colombier 	}else if(d > 0)
29*426d2b71SDavid du Colombier 		ihtml(L(".dv"), sub);
30*426d2b71SDavid du Colombier 	else
31*426d2b71SDavid du Colombier 		ihtml(L(".dv"), nil);
32*426d2b71SDavid du Colombier 	return 0;
33*426d2b71SDavid du Colombier }
34*426d2b71SDavid du Colombier 
35*426d2b71SDavid du Colombier int
e_v(void)36*426d2b71SDavid du Colombier e_v(void)
37*426d2b71SDavid du Colombier {
38*426d2b71SDavid du Colombier 	dv(eval(getqarg()));
39*426d2b71SDavid du Colombier 	return 0;
40*426d2b71SDavid du Colombier }
41*426d2b71SDavid du Colombier 
42*426d2b71SDavid du Colombier int
e_u(void)43*426d2b71SDavid du Colombier e_u(void)
44*426d2b71SDavid du Colombier {
45*426d2b71SDavid du Colombier 	dv(eval(L("-0.5m")));
46*426d2b71SDavid du Colombier 	return 0;
47*426d2b71SDavid du Colombier }
48*426d2b71SDavid du Colombier 
49*426d2b71SDavid du Colombier int
e_d(void)50*426d2b71SDavid du Colombier e_d(void)
51*426d2b71SDavid du Colombier {
52*426d2b71SDavid du Colombier 	dv(eval(L("0.5m")));
53*426d2b71SDavid du Colombier 	return 0;
54*426d2b71SDavid du Colombier }
55*426d2b71SDavid du Colombier 
56*426d2b71SDavid du Colombier int
e_r(void)57*426d2b71SDavid du Colombier e_r(void)
58*426d2b71SDavid du Colombier {
59*426d2b71SDavid du Colombier 	dv(eval(L("-1m")));
60*426d2b71SDavid du Colombier 	return 0;
61*426d2b71SDavid du Colombier }
62*426d2b71SDavid du Colombier 
63*426d2b71SDavid du Colombier int
e_h(void)64*426d2b71SDavid du Colombier e_h(void)
65*426d2b71SDavid du Colombier {
66*426d2b71SDavid du Colombier 	getqarg();
67*426d2b71SDavid du Colombier 	return 0;
68*426d2b71SDavid du Colombier }
69*426d2b71SDavid du Colombier 
70*426d2b71SDavid du Colombier int
e_w(void)71*426d2b71SDavid du Colombier e_w(void)
72*426d2b71SDavid du Colombier {
73*426d2b71SDavid du Colombier 	Rune *a;
74*426d2b71SDavid du Colombier 	Rune buf[40];
75*426d2b71SDavid du Colombier 
76*426d2b71SDavid du Colombier 	a = getqarg();
77*426d2b71SDavid du Colombier 	runesnprint(buf, sizeof buf, "%ld", runestrlen(a));
78*426d2b71SDavid du Colombier 	pushinputstring(buf);
79*426d2b71SDavid du Colombier 	nr(L("st"), 0);
80*426d2b71SDavid du Colombier 	nr(L("sb"), 0);
81*426d2b71SDavid du Colombier 	nr(L("ct"), 0);
82*426d2b71SDavid du Colombier 	return 0;
83*426d2b71SDavid du Colombier }
84*426d2b71SDavid du Colombier 
85*426d2b71SDavid du Colombier int
e_k(void)86*426d2b71SDavid du Colombier e_k(void)
87*426d2b71SDavid du Colombier {
88*426d2b71SDavid du Colombier 	getname();
89*426d2b71SDavid du Colombier 	warn("%Ck not available", backslash);
90*426d2b71SDavid du Colombier 	return 0;
91*426d2b71SDavid du Colombier }
92*426d2b71SDavid du Colombier 
93*426d2b71SDavid du Colombier void
t11init(void)94*426d2b71SDavid du Colombier t11init(void)
95*426d2b71SDavid du Colombier {
96*426d2b71SDavid du Colombier 	addesc('|', e_nop, 0);
97*426d2b71SDavid du Colombier 	addesc('^', e_nop, 0);
98*426d2b71SDavid du Colombier 	addesc('v', e_v, 0);
99*426d2b71SDavid du Colombier 	addesc('h', e_h, 0);
100*426d2b71SDavid du Colombier 	addesc('w', e_w, 0);
101*426d2b71SDavid du Colombier 	addesc('0', e_0, 0);
102*426d2b71SDavid du Colombier 	addesc('u', e_u, 0);
103*426d2b71SDavid du Colombier 	addesc('d', e_d, 0);
104*426d2b71SDavid du Colombier 	addesc('r', e_r, 0);
105*426d2b71SDavid du Colombier 	addesc('k', e_k, 0);
106*426d2b71SDavid du Colombier }
107*426d2b71SDavid du Colombier 
108