[BACK]Return to tbl_term.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/tbl_term.c between version 1.67 and 1.68

version 1.67, 2019/01/31 16:06:22 version 1.68, 2019/02/09 21:02:47
Line 166  term_tbl(struct termp *tp, const struct tbl_span *sp)
Line 166  term_tbl(struct termp *tp, const struct tbl_span *sp)
         size_t                   save_offset;          size_t                   save_offset;
         size_t                   coloff, tsz;          size_t                   coloff, tsz;
         int                      hspans, ic, more;          int                      hspans, ic, more;
         int                      dvert, fc, horiz, line, uvert;          int                      dvert, fc, horiz, lhori, rhori, uvert;
   
         /* Inhibit printing of spaces: we do padding ourselves. */          /* Inhibit printing of spaces: we do padding ourselves. */
   
Line 325  term_tbl(struct termp *tp, const struct tbl_span *sp)
Line 325  term_tbl(struct termp *tp, const struct tbl_span *sp)
                     (horiz || (IS_HORIZ(sp->layout->first) &&                      (horiz || (IS_HORIZ(sp->layout->first) &&
                       !IS_HORIZ(sp->prev->layout->first))))                        !IS_HORIZ(sp->prev->layout->first))))
                         uvert = sp->prev->layout->vert;                          uvert = sp->prev->layout->vert;
                 line = sp->pos == TBL_SPAN_DHORIZ ||                  rhori = sp->pos == TBL_SPAN_DHORIZ ||
                       (sp->first != NULL && sp->first->pos == TBL_DATA_DHORIZ) ||
                     sp->layout->first->pos == TBL_CELL_DHORIZ ? 2 :                      sp->layout->first->pos == TBL_CELL_DHORIZ ? 2 :
                     sp->pos == TBL_SPAN_HORIZ ||                      sp->pos == TBL_SPAN_HORIZ ||
                       (sp->first != NULL && sp->first->pos == TBL_DATA_HORIZ) ||
                     sp->layout->first->pos == TBL_CELL_HORIZ ? 1 : 0;                      sp->layout->first->pos == TBL_CELL_HORIZ ? 1 : 0;
                 fc = BUP * uvert + BDOWN * dvert + BRIGHT * line;                  fc = BUP * uvert + BDOWN * dvert + BRIGHT * rhori;
                 if (uvert > 0 || dvert > 0 || (horiz && sp->opts->lvert)) {                  if (uvert > 0 || dvert > 0 || (horiz && sp->opts->lvert)) {
                         (*tp->advance)(tp, tp->tcols->offset);                          (*tp->advance)(tp, tp->tcols->offset);
                         tp->viscol = tp->tcol->offset;                          tp->viscol = tp->tcol->offset;
Line 402  term_tbl(struct termp *tp, const struct tbl_span *sp)
Line 404  term_tbl(struct termp *tp, const struct tbl_span *sp)
                                         cpn = cpn->next;                                          cpn = cpn->next;
                                 }                                  }
   
                                   lhori = (cp != NULL &&
                                        cp->pos == TBL_CELL_DHORIZ) ||
                                       (dp != NULL &&
                                        dp->pos == TBL_DATA_DHORIZ) ? 2 :
                                       (cp != NULL &&
                                        cp->pos == TBL_CELL_HORIZ) ||
                                       (dp != NULL &&
                                        dp->pos == TBL_DATA_HORIZ) ? 1 : 0;
   
                                 /*                                  /*
                                  * Skip later cells in a span,                                   * Skip later cells in a span,
                                  * figure out whether to start a span,                                   * figure out whether to start a span,
Line 454  term_tbl(struct termp *tp, const struct tbl_span *sp)
Line 465  term_tbl(struct termp *tp, const struct tbl_span *sp)
                                 }                                  }
                                 while (tp->viscol < tp->tcol->rmargin +                                  while (tp->viscol < tp->tcol->rmargin +
                                     tp->tbl.cols[ic].spacing / 2)                                      tp->tbl.cols[ic].spacing / 2)
                                         tbl_direct_border(tp, fc, 1);                                          tbl_direct_border(tp,
                                               BHORIZ * lhori, 1);
   
                                 if (tp->tcol + 1 == tp->tcols + tp->lasttcol)                                  if (tp->tcol + 1 == tp->tcols + tp->lasttcol)
                                         continue;                                          continue;
   
                                 if (cp != NULL) {                                  if (cp != NULL)
                                         switch (cp->pos) {  
                                         case TBL_CELL_HORIZ:  
                                                 fc = BLEFT;  
                                                 break;  
                                         case TBL_CELL_DHORIZ:  
                                                 fc = BLEFT * 2;  
                                                 break;  
                                         default:  
                                                 fc = 0;  
                                                 break;  
                                         }  
                                         cp = cp->next;                                          cp = cp->next;
                                 }  
                                 if (cp != NULL) {                                  rhori = (cp != NULL &&
                                         switch (cp->pos) {                                       cp->pos == TBL_CELL_DHORIZ) ||
                                         case TBL_CELL_HORIZ:                                      (dp != NULL &&
                                                 fc += BRIGHT;                                       dp->pos == TBL_DATA_DHORIZ) ? 2 :
                                                 break;                                      (cp != NULL &&
                                         case TBL_CELL_DHORIZ:                                       cp->pos == TBL_CELL_HORIZ) ||
                                                 fc += BRIGHT * 2;                                      (dp != NULL &&
                                                 break;                                       dp->pos == TBL_DATA_HORIZ) ? 1 : 0;
                                         default:  
                                                 break;  
                                         }  
                                 }  
                                 if (tp->tbl.cols[ic].spacing)                                  if (tp->tbl.cols[ic].spacing)
                                         tbl_direct_border(tp, fc +                                          tbl_direct_border(tp,
                                               BLEFT * lhori + BRIGHT * rhori +
                                             BUP * uvert + BDOWN * dvert, 1);                                              BUP * uvert + BDOWN * dvert, 1);
   
                                 if (tp->enc == TERMENC_UTF8)                                  if (tp->enc == TERMENC_UTF8)
                                         uvert = dvert = 0;                                          uvert = dvert = 0;
   
                                 if (fc != 0) {  
                                         if (cp != NULL &&  
                                             cp->pos == TBL_CELL_HORIZ)  
                                                 fc = BHORIZ;  
                                         else if (cp != NULL &&  
                                             cp->pos == TBL_CELL_DHORIZ)  
                                                 fc = BHORIZ * 2;  
                                         else  
                                                 fc = 0;  
                                 }  
                                 if (tp->tbl.cols[ic].spacing > 2 &&                                  if (tp->tbl.cols[ic].spacing > 2 &&
                                     (uvert > 1 || dvert > 1 || fc != 0))                                      (uvert > 1 || dvert > 1 || rhori))
                                         tbl_direct_border(tp, fc +                                          tbl_direct_border(tp,
                                               BHORIZ * rhori +
                                             BUP * (uvert > 1) +                                              BUP * (uvert > 1) +
                                             BDOWN * (dvert > 1), 1);                                              BDOWN * (dvert > 1), 1);
                         }                          }
Line 528  term_tbl(struct termp *tp, const struct tbl_span *sp)
Line 518  term_tbl(struct termp *tp, const struct tbl_span *sp)
                     (horiz || (IS_HORIZ(sp->layout->last) &&                      (horiz || (IS_HORIZ(sp->layout->last) &&
                      !IS_HORIZ(sp->prev->layout->last))))                       !IS_HORIZ(sp->prev->layout->last))))
                         uvert = sp->prev->layout->last->vert;                          uvert = sp->prev->layout->last->vert;
                 line = sp->pos == TBL_SPAN_DHORIZ ||                  lhori = sp->pos == TBL_SPAN_DHORIZ ||
                       (sp->last != NULL &&
                        sp->last->pos == TBL_DATA_DHORIZ &&
                        sp->last->layout->col + 1 == sp->opts->cols) ||
                     (sp->layout->last->pos == TBL_CELL_DHORIZ &&                      (sp->layout->last->pos == TBL_CELL_DHORIZ &&
                      sp->layout->last->col + 1 == sp->opts->cols) ? 2 :                       sp->layout->last->col + 1 == sp->opts->cols) ? 2 :
                     sp->pos == TBL_SPAN_HORIZ ||                      sp->pos == TBL_SPAN_HORIZ ||
                       (sp->last != NULL &&
                        sp->last->pos == TBL_DATA_HORIZ &&
                        sp->last->layout->col + 1 == sp->opts->cols) ||
                     (sp->layout->last->pos == TBL_CELL_HORIZ &&                      (sp->layout->last->pos == TBL_CELL_HORIZ &&
                      sp->layout->last->col + 1 == sp->opts->cols) ? 1 : 0;                       sp->layout->last->col + 1 == sp->opts->cols) ? 1 : 0;
                 fc = BUP * uvert + BDOWN * dvert + BLEFT * line;                  fc = BUP * uvert + BDOWN * dvert + BLEFT * lhori;
                 if (uvert > 0 || dvert > 0 || (horiz && sp->opts->rvert)) {                  if (uvert > 0 || dvert > 0 || (horiz && sp->opts->rvert)) {
                         if (horiz == 0 && (IS_HORIZ(sp->layout->last) == 0 ||                          if (horiz == 0 && (IS_HORIZ(sp->layout->last) == 0 ||
                             sp->layout->last->col + 1 < sp->opts->cols)) {                              sp->layout->last->col + 1 < sp->opts->cols)) {
                                 tp->tcol++;                                  tp->tcol++;
                                 (*tp->advance)(tp,                                  do {
                                     tp->tcol->offset > tp->viscol ?                                          tbl_direct_border(tp,
                                     tp->tcol->offset - tp->viscol : 1);                                              BHORIZ * lhori, 1);
                                   } while (tp->viscol < tp->tcol->offset);
                         }                          }
                         tbl_direct_border(tp, fc, 1);                          tbl_direct_border(tp, fc, 1);
                 }                  }

Legend:
Removed from v.1.67  
changed lines
  Added in v.1.68

CVSweb