[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.68 and 1.69

version 1.68, 2019/02/09 21:02:47 version 1.69, 2019/03/16 21:35:48
Line 46  static void tbl_fill_border(struct termp *, int, size_
Line 46  static void tbl_fill_border(struct termp *, int, size_
 static  void    tbl_fill_char(struct termp *, char, size_t);  static  void    tbl_fill_char(struct termp *, char, size_t);
 static  void    tbl_fill_string(struct termp *, const char *, size_t);  static  void    tbl_fill_string(struct termp *, const char *, size_t);
 static  void    tbl_hrule(struct termp *, const struct tbl_span *,  static  void    tbl_hrule(struct termp *, const struct tbl_span *,
                         const struct tbl_span *, int);                          const struct tbl_span *, const struct tbl_span *,
                           int);
 static  void    tbl_literal(struct termp *, const struct tbl_dat *,  static  void    tbl_literal(struct termp *, const struct tbl_dat *,
                         const struct roffcol *);                          const struct roffcol *);
 static  void    tbl_number(struct termp *, const struct tbl_opts *,  static  void    tbl_number(struct termp *, const struct tbl_opts *,
Line 222  term_tbl(struct termp *tp, const struct tbl_span *sp)
Line 223  term_tbl(struct termp *tp, const struct tbl_span *sp)
   
                 if (tp->enc == TERMENC_ASCII &&                  if (tp->enc == TERMENC_ASCII &&
                     sp->opts->opts & TBL_OPT_DBOX)                      sp->opts->opts & TBL_OPT_DBOX)
                         tbl_hrule(tp, NULL, sp, TBL_OPT_DBOX);                          tbl_hrule(tp, NULL, sp, sp, TBL_OPT_DBOX);
                 if (sp->opts->opts & (TBL_OPT_DBOX | TBL_OPT_BOX))                  if (sp->opts->opts & (TBL_OPT_DBOX | TBL_OPT_BOX))
                         tbl_hrule(tp, NULL, sp, TBL_OPT_BOX);                          tbl_hrule(tp, NULL, sp, sp, TBL_OPT_BOX);
         }          }
   
         /* Set up the columns. */          /* Set up the columns. */
Line 342  term_tbl(struct termp *tp, const struct tbl_span *sp)
Line 343  term_tbl(struct termp *tp, const struct tbl_span *sp)
   
                 more = 0;                  more = 0;
                 if (horiz)                  if (horiz)
                         tbl_hrule(tp, sp->prev, sp, 0);                          tbl_hrule(tp, sp->prev, sp, sp->next, 0);
                 else {                  else {
                         cp = sp->layout->first;                          cp = sp->layout->first;
                         cpn = sp->next == NULL ? NULL :                          cpn = sp->next == NULL ? NULL :
Line 557  term_tbl(struct termp *tp, const struct tbl_span *sp)
Line 558  term_tbl(struct termp *tp, const struct tbl_span *sp)
         tp->tcol->rmargin = tp->maxrmargin;          tp->tcol->rmargin = tp->maxrmargin;
         if (sp->next == NULL) {          if (sp->next == NULL) {
                 if (sp->opts->opts & (TBL_OPT_DBOX | TBL_OPT_BOX)) {                  if (sp->opts->opts & (TBL_OPT_DBOX | TBL_OPT_BOX)) {
                         tbl_hrule(tp, sp, NULL, TBL_OPT_BOX);                          tbl_hrule(tp, sp, sp, NULL, TBL_OPT_BOX);
                         tp->skipvsp = 1;                          tp->skipvsp = 1;
                 }                  }
                 if (tp->enc == TERMENC_ASCII &&                  if (tp->enc == TERMENC_ASCII &&
                     sp->opts->opts & TBL_OPT_DBOX) {                      sp->opts->opts & TBL_OPT_DBOX) {
                         tbl_hrule(tp, sp, NULL, TBL_OPT_DBOX);                          tbl_hrule(tp, sp, sp, NULL, TBL_OPT_DBOX);
                         tp->skipvsp = 2;                          tp->skipvsp = 2;
                 }                  }
                 assert(tp->tbl.cols);                  assert(tp->tbl.cols);
Line 571  term_tbl(struct termp *tp, const struct tbl_span *sp)
Line 572  term_tbl(struct termp *tp, const struct tbl_span *sp)
         } else if (horiz == 0 && sp->opts->opts & TBL_OPT_ALLBOX &&          } else if (horiz == 0 && sp->opts->opts & TBL_OPT_ALLBOX &&
             (sp->next == NULL || sp->next->pos == TBL_SPAN_DATA ||              (sp->next == NULL || sp->next->pos == TBL_SPAN_DATA ||
              sp->next->next != NULL))               sp->next->next != NULL))
                 tbl_hrule(tp, sp, sp->next, TBL_OPT_ALLBOX);                  tbl_hrule(tp, sp, sp, sp->next, TBL_OPT_ALLBOX);
   
         tp->tcol->offset = save_offset;          tp->tcol->offset = save_offset;
         tp->flags &= ~TERMP_NONOSPACE;          tp->flags &= ~TERMP_NONOSPACE;
Line 579  term_tbl(struct termp *tp, const struct tbl_span *sp)
Line 580  term_tbl(struct termp *tp, const struct tbl_span *sp)
   
 static void  static void
 tbl_hrule(struct termp *tp, const struct tbl_span *spp,  tbl_hrule(struct termp *tp, const struct tbl_span *spp,
     const struct tbl_span *spn, int flags)      const struct tbl_span *sp, const struct tbl_span *spn, int flags)
 {  {
         const struct tbl_cell   *cpp;    /* Layout cell above this line. */          const struct tbl_cell   *cpp;    /* Layout cell above this line. */
           const struct tbl_cell   *cp;     /* Layout cell in this line. */
         const struct tbl_cell   *cpn;    /* Layout cell below this line. */          const struct tbl_cell   *cpn;    /* Layout cell below this line. */
         const struct tbl_dat    *dpn;    /* Data cell below this line. */          const struct tbl_dat    *dpn;    /* Data cell below this line. */
         const struct roffcol    *col;    /* Contains width and spacing. */          const struct roffcol    *col;    /* Contains width and spacing. */
Line 592  tbl_hrule(struct termp *tp, const struct tbl_span *spp
Line 594  tbl_hrule(struct termp *tp, const struct tbl_span *spp
         int                      uw, dw; /* Vertical line widths. */          int                      uw, dw; /* Vertical line widths. */
   
         cpp = spp == NULL ? NULL : spp->layout->first;          cpp = spp == NULL ? NULL : spp->layout->first;
           cp  = sp  == NULL ? NULL : sp->layout->first;
         cpn = spn == NULL ? NULL : spn->layout->first;          cpn = spn == NULL ? NULL : spn->layout->first;
         dpn = NULL;          dpn = NULL;
         if (spn != NULL) {          if (spn != NULL) {
Line 600  tbl_hrule(struct termp *tp, const struct tbl_span *spp
Line 603  tbl_hrule(struct termp *tp, const struct tbl_span *spp
                 else if (spn->next != NULL)                  else if (spn->next != NULL)
                         dpn = spn->next->first;                          dpn = spn->next->first;
         }          }
         opts = spn == NULL ? spp->opts->opts : spn->opts->opts;          opts = sp->opts->opts;
         bw = opts & TBL_OPT_DBOX ? (tp->enc == TERMENC_UTF8 ? 2 : 1) :          bw = opts & TBL_OPT_DBOX ? (tp->enc == TERMENC_UTF8 ? 2 : 1) :
             opts & (TBL_OPT_BOX | TBL_OPT_ALLBOX) ? 1 : 0;              opts & (TBL_OPT_BOX | TBL_OPT_ALLBOX) ? 1 : 0;
         hw = flags == TBL_OPT_DBOX || flags == TBL_OPT_BOX ? bw :          hw = flags == TBL_OPT_DBOX || flags == TBL_OPT_BOX ? bw :
             spn->pos == TBL_SPAN_DHORIZ ? 2 : 1;              sp->pos == TBL_SPAN_DHORIZ ? 2 : 1;
   
         /* Print the left end of the line. */          /* Print the left end of the line. */
   
Line 620  tbl_hrule(struct termp *tp, const struct tbl_span *spp
Line 623  tbl_hrule(struct termp *tp, const struct tbl_span *spp
                      cpn->pos != TBL_CELL_DOWN ? BRIGHT * hw : 0), 1);                       cpn->pos != TBL_CELL_DOWN ? BRIGHT * hw : 0), 1);
   
         for (;;) {          for (;;) {
                 col = tp->tbl.cols + (cpn == NULL ? cpp->col : cpn->col);                  col = tp->tbl.cols + cp->col;
   
                 /* Print the horizontal line inside this column. */                  /* Print the horizontal line inside this column. */
   
Line 646  tbl_hrule(struct termp *tp, const struct tbl_span *spp
Line 649  tbl_hrule(struct termp *tp, const struct tbl_span *spp
                         }                          }
                         cpp = cpp->next;                          cpp = cpp->next;
                 }                  }
                   if (cp != NULL)
                           cp = cp->next;
                 if (cpn != NULL) {                  if (cpn != NULL) {
                         if (flags != TBL_OPT_DBOX) {                          if (flags != TBL_OPT_DBOX) {
                                 dw = cpn->vert;                                  dw = cpn->vert;
Line 656  tbl_hrule(struct termp *tp, const struct tbl_span *spp
Line 661  tbl_hrule(struct termp *tp, const struct tbl_span *spp
                         while (dpn != NULL && dpn->layout != cpn)                          while (dpn != NULL && dpn->layout != cpn)
                                 dpn = dpn->next;                                  dpn = dpn->next;
                 }                  }
                 if (cpp == NULL && cpn == NULL)                  if (cpp == NULL && cp == NULL && cpn == NULL)
                         break;                          break;
   
                 /* Vertical lines do not cross spanned cells. */                  /* Vertical lines do not cross spanned cells. */

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

CVSweb