Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature_fixcpp/sys/src/cmd/htmlroff/t5.c – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include "a.h"
2
 
3
/*
4
 * 5.  Vertical spacing.
5
 */
6
 
7
/* set vertical baseline spacing */
8
void
9
vs(int v)
10
{
11
	if(v == 0)
12
		v = getnr(L(".v0"));
13
	nr(L(".v0"), getnr(L(".v")));
14
	nr(L(".v"), v);
15
}
16
 
17
void
18
r_vs(int argc, Rune **argv)
19
{
20
	if(argc < 2)
21
		vs(eval(L("12p")));
22
	else if(argv[1][0] == '+')
23
		vs(getnr(L(".v"))+evalscale(argv[1]+1, 'p'));
24
	else if(argv[1][0] == '-')
25
		vs(getnr(L(".v"))-evalscale(argv[1]+1, 'p'));
26
	else
27
		vs(evalscale(argv[1], 'p'));
28
}
29
 
30
/* set line spacing */
31
void
32
ls(int v)
33
{
34
	if(v == 0)
35
		v = getnr(L(".ls0"));
36
	nr(L(".ls0"), getnr(L(".ls")));
37
	nr(L(".ls"), v);
38
}
39
void
40
r_ls(int argc, Rune **argv)
41
{
42
	ls(argc < 2 ? 0 : eval(argv[1]));
43
}
44
 
45
/* .sp - space vertically */
46
/* .sv - save a contiguous vertical block */
47
void
48
sp(int v)
49
{
50
	Rune buf[100];
51
	double fv;
52
 
53
	br();
54
	fv = v * 1.0/UPI;
55
	if(fv > 5)
56
		fv = eval(L("1v")) * 1.0/UPI;
57
	runesnprint(buf, nelem(buf), "<p style=\"margin-top: 0; margin-bottom: %.2fin\"></p>\n", fv);
58
	outhtml(buf);
59
}
60
void
61
r_sp(int argc, Rune **argv)
62
{
63
	if(getnr(L(".ns")))
64
		return;
65
	if(argc < 2)
66
		sp(eval(L("1v")));
67
	else{
68
		if(argv[1][0] == '|'){
69
			/* XXX if there's no output yet, do the absolute! */
70
			if(verbose)
71
				warn("ignoring absolute .sp %d", eval(argv[1]+1));
72
			return;
73
		}
74
		sp(evalscale(argv[1], 'v'));
75
	}
76
}
77
 
78
void
79
r_ns(int argc, Rune **argv)
80
{
81
	USED(argc);
82
	USED(argv);
83
	nr(L(".ns"), 1);
84
}
85
 
86
void
87
r_rs(int argc, Rune **argv)
88
{
89
	USED(argc);
90
	USED(argv);
91
	nr(L(".ns"), 0);
92
}
93
 
94
void
95
t5init(void)
96
{	
97
	addreq(L("vs"), r_vs, -1);
98
	addreq(L("ls"), r_ls, -1);
99
	addreq(L("sp"), r_sp, -1);
100
	addreq(L("sv"), r_sp, -1);
101
	addreq(L("os"), r_nop, -1);
102
	addreq(L("ns"), r_ns, 0);
103
	addreq(L("rs"), r_rs, 0);
104
 
105
	nr(L(".v"), eval(L("12p")));
106
	nr(L(".v0"), eval(L("12p")));
107
	nr(L(".ls"), 1);
108
	nr(L(".ls0"), 1);
109
}
110