diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2009-10-18 11:52:18 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2009-10-18 11:52:18 +0000 |
commit | d660ba0e3c47d58e65b98928db03d6cbc5332121 (patch) | |
tree | 881fd4787248b50f3c91e26e7629ab7aa58afecf | |
parent | 33af1e8c26b73c1e820b7803550a5bee0d7bf5c2 (diff) | |
download | mandoc-d660ba0e3c47d58e65b98928db03d6cbc5332121.tar.gz |
Fitted -man -Tascii with scaling units (.5i, etc.).
-rw-r--r-- | man_term.c | 45 |
1 files changed, 44 insertions, 1 deletions
@@ -140,6 +140,7 @@ static void print_foot(struct termp *, static void fmt_block_vspace(struct termp *, const struct man_node *); static int a2width(const char *); +static int a2height(const char *); void @@ -196,6 +197,46 @@ fmt_block_vspace(struct termp *p, const struct man_node *n) static int +a2height(const char *p) +{ + struct roffsu su; + double r; + + if ( ! a2roffsu(p, &su)) + return(1); + + switch (su.unit) { + case (SCALE_CM): + r = su.scale * 2; + break; + case (SCALE_IN): + r = su.scale * 6; + break; + case (SCALE_PC): + r = su.scale; + break; + case (SCALE_PT): + r = su.scale / 8; + break; + case (SCALE_MM): + r = su.scale / 1000; + break; + case (SCALE_VS): + r = su.scale; + break; + default: + r = su.scale - 1; + break; + } + + if (r < 0.0) + r = 0.0; + return(/* LINTED */(int) + r); +} + + +static int a2width(const char *p) { struct roffsu su; @@ -435,7 +476,9 @@ pre_sp(DECL_ARGS) return(0); } - len = atoi(n->child->string); + assert(MAN_TEXT == n->child->type); + len = a2height(n->child->string); + if (0 == len) term_newln(p); for (i = 0; i < len; i++) |