]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/htmlroff/t5.c
ndb/dns: remove single-ip-address assuptions
[plan9front.git] / sys / src / cmd / htmlroff / t5.c
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