version 1.282, 2014/09/17 20:18:58 |
version 1.288, 2014/10/30 20:10:02 |
|
|
|
|
static size_t a2width(const struct termp *, const char *); |
static size_t a2width(const struct termp *, const char *); |
static size_t a2height(const struct termp *, const char *); |
static size_t a2height(const struct termp *, const char *); |
static size_t a2offs(const struct termp *, const char *); |
|
|
|
static void print_bvspace(struct termp *, |
static void print_bvspace(struct termp *, |
const struct mdoc_node *, |
const struct mdoc_node *, |
Line 261 terminal_mdoc(void *arg, const struct mdoc *mdoc) |
|
Line 260 terminal_mdoc(void *arg, const struct mdoc *mdoc) |
|
p->rmargin = p->maxrmargin = p->defrmargin; |
p->rmargin = p->maxrmargin = p->defrmargin; |
p->tabwidth = term_len(p, 5); |
p->tabwidth = term_len(p, 5); |
|
|
if (NULL == p->symtab) |
|
p->symtab = mchars_alloc(); |
|
|
|
n = mdoc_node(mdoc)->child; |
n = mdoc_node(mdoc)->child; |
meta = mdoc_meta(mdoc); |
meta = mdoc_meta(mdoc); |
|
|
Line 344 print_mdoc_node(DECL_ARGS) |
|
Line 340 print_mdoc_node(DECL_ARGS) |
|
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
break; |
break; |
case MDOC_EQN: |
case MDOC_EQN: |
|
if ( ! (n->flags & MDOC_LINE)) |
|
p->flags |= TERMP_NOSPACE; |
term_eqn(p, n->eqn); |
term_eqn(p, n->eqn); |
|
if (n->next != NULL && ! (n->next->flags & MDOC_LINE)) |
|
p->flags |= TERMP_NOSPACE; |
break; |
break; |
case MDOC_TBL: |
case MDOC_TBL: |
term_tbl(p, n->span); |
term_tbl(p, n->span); |
Line 541 a2width(const struct termp *p, const char *v) |
|
Line 541 a2width(const struct termp *p, const char *v) |
|
struct roffsu su; |
struct roffsu su; |
|
|
assert(v); |
assert(v); |
if ( ! a2roffsu(v, &su, SCALE_MAX)) |
if ( ! a2roffsu(v, &su, SCALE_MAX)) { |
SCALE_HS_INIT(&su, term_strlen(p, v)); |
SCALE_HS_INIT(&su, term_strlen(p, v)); |
|
su.scale /= term_strlen(p, "0"); |
|
} |
|
|
return(term_hspan(p, &su)); |
return(term_hspan(p, &su)); |
} |
} |
|
|
static size_t |
|
a2offs(const struct termp *p, const char *v) |
|
{ |
|
struct roffsu su; |
|
|
|
if ('\0' == *v) |
|
return(0); |
|
else if (0 == strcmp(v, "left")) |
|
return(0); |
|
else if (0 == strcmp(v, "indent")) |
|
return(term_len(p, p->defindent + 1)); |
|
else if (0 == strcmp(v, "indent-two")) |
|
return(term_len(p, (p->defindent + 1) * 2)); |
|
else if ( ! a2roffsu(v, &su, SCALE_MAX)) |
|
SCALE_HS_INIT(&su, term_strlen(p, v)); |
|
|
|
return(term_hspan(p, &su)); |
|
} |
|
|
|
/* |
/* |
* Determine how much space to print out before block elements of `It' |
* Determine how much space to print out before block elements of `It' |
* (and thus `Bl') and `Bd'. And then go ahead and print that space, |
* (and thus `Bl') and `Bd'. And then go ahead and print that space, |
Line 654 termp_it_pre(DECL_ARGS) |
|
Line 637 termp_it_pre(DECL_ARGS) |
|
width = offset = 0; |
width = offset = 0; |
|
|
if (bl->norm->Bl.offs) |
if (bl->norm->Bl.offs) |
offset = a2offs(p, bl->norm->Bl.offs); |
offset = a2width(p, bl->norm->Bl.offs); |
|
|
switch (type) { |
switch (type) { |
case LIST_column: |
case LIST_column: |
Line 1576 termp_bd_pre(DECL_ARGS) |
|
Line 1559 termp_bd_pre(DECL_ARGS) |
|
} else if (MDOC_HEAD == n->type) |
} else if (MDOC_HEAD == n->type) |
return(0); |
return(0); |
|
|
if (n->norm->Bd.offs) |
/* Handle the -offset argument. */ |
p->offset += a2offs(p, n->norm->Bd.offs); |
|
|
if (n->norm->Bd.offs == NULL || |
|
! strcmp(n->norm->Bd.offs, "left")) |
|
/* nothing */; |
|
else if ( ! strcmp(n->norm->Bd.offs, "indent")) |
|
p->offset += term_len(p, p->defindent + 1); |
|
else if ( ! strcmp(n->norm->Bd.offs, "indent-two")) |
|
p->offset += term_len(p, (p->defindent + 1) * 2); |
|
else |
|
p->offset += a2width(p, n->norm->Bd.offs); |
|
|
/* |
/* |
* If -ragged or -filled are specified, the block does nothing |
* If -ragged or -filled are specified, the block does nothing |