URI:
       tt5.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tt5.c (1746B)
       ---
            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 }