[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.23 and 1.26

version 1.23, 2012/05/27 17:59:23 version 1.26, 2014/03/28 23:26:25
Line 1 
Line 1 
 /*      $Id$ */  /*      $Id$ */
 /*  /*
  * Copyright (c) 2009, 2011 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2009, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2011, 2012 Ingo Schwarze <schwarze@openbsd.org>   * Copyright (c) 2011, 2012, 2014 Ingo Schwarze <schwarze@openbsd.org>
  *   *
  * Permission to use, copy, modify, and distribute this software for any   * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above   * purpose with or without fee is hereby granted, provided that the above
Line 31 
Line 31 
 static  size_t  term_tbl_len(size_t, void *);  static  size_t  term_tbl_len(size_t, void *);
 static  size_t  term_tbl_strlen(const char *, void *);  static  size_t  term_tbl_strlen(const char *, void *);
 static  void    tbl_char(struct termp *, char, size_t);  static  void    tbl_char(struct termp *, char, size_t);
 static  void    tbl_data(struct termp *, const struct tbl *,  static  void    tbl_data(struct termp *, const struct tbl_opts *,
                         const struct tbl_dat *,                          const struct tbl_dat *,
                         const struct roffcol *);                          const struct roffcol *);
 static  size_t  tbl_rulewidth(struct termp *, const struct tbl_head *);  static  size_t  tbl_rulewidth(struct termp *, const struct tbl_head *);
 static  void    tbl_hframe(struct termp *, const struct tbl_span *, int);  static  void    tbl_hframe(struct termp *, 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 *,  static  void    tbl_number(struct termp *, const struct tbl_opts *,
                         const struct tbl_dat *,                          const struct tbl_dat *,
                         const struct roffcol *);                          const struct roffcol *);
 static  void    tbl_hrule(struct termp *, const struct tbl_span *);  static  void    tbl_hrule(struct termp *, const struct tbl_span *);
Line 96  term_tbl(struct termp *tp, const struct tbl_span *sp)
Line 96  term_tbl(struct termp *tp, const struct tbl_span *sp)
         /* Horizontal frame at the start of boxed tables. */          /* Horizontal frame at the start of boxed tables. */
   
         if (TBL_SPAN_FIRST & sp->flags) {          if (TBL_SPAN_FIRST & sp->flags) {
                 if (TBL_OPT_DBOX & sp->tbl->opts)                  if (TBL_OPT_DBOX & sp->opts->opts)
                         tbl_hframe(tp, sp, 1);                          tbl_hframe(tp, sp, 1);
                 if (TBL_OPT_DBOX & sp->tbl->opts ||                  if (TBL_OPT_DBOX & sp->opts->opts ||
                     TBL_OPT_BOX  & sp->tbl->opts)                      TBL_OPT_BOX  & sp->opts->opts)
                         tbl_hframe(tp, sp, 0);                          tbl_hframe(tp, sp, 0);
         }          }
   
         /* Vertical frame at the start of each row. */          /* Vertical frame at the start of each row. */
   
         if (TBL_OPT_BOX & sp->tbl->opts || TBL_OPT_DBOX & sp->tbl->opts)          if ((TBL_OPT_BOX | TBL_OPT_DBOX) & sp->opts->opts ||
               sp->head->vert)
                 term_word(tp, TBL_SPAN_HORIZ == sp->pos ||                  term_word(tp, TBL_SPAN_HORIZ == sp->pos ||
                         TBL_SPAN_DHORIZ == sp->pos ? "+" : "|");                          TBL_SPAN_DHORIZ == sp->pos ? "+" : "|");
   
Line 142  term_tbl(struct termp *tp, const struct tbl_span *sp)
Line 143  term_tbl(struct termp *tp, const struct tbl_span *sp)
                                 tbl_vrule(tp, hp);                                  tbl_vrule(tp, hp);
   
                         col = &tp->tbl.cols[hp->ident];                          col = &tp->tbl.cols[hp->ident];
                         tbl_data(tp, sp->tbl, dp, col);                          tbl_data(tp, sp->opts, dp, col);
   
                         /*                          /*
                          * Go to the next data cell and assign the                           * Go to the next data cell and assign the
Line 159  term_tbl(struct termp *tp, const struct tbl_span *sp)
Line 160  term_tbl(struct termp *tp, const struct tbl_span *sp)
   
         /* Vertical frame at the end of each row. */          /* Vertical frame at the end of each row. */
   
         if (TBL_OPT_BOX & sp->tbl->opts || TBL_OPT_DBOX & sp->tbl->opts)          if ((TBL_OPT_BOX | TBL_OPT_DBOX) & sp->opts->opts ||
               sp->layout->vert)
                 term_word(tp, TBL_SPAN_HORIZ == sp->pos ||                  term_word(tp, TBL_SPAN_HORIZ == sp->pos ||
                         TBL_SPAN_DHORIZ == sp->pos ? "+" : " |");                          TBL_SPAN_DHORIZ == sp->pos ? "+" : " |");
         term_flushln(tp);          term_flushln(tp);
Line 170  term_tbl(struct termp *tp, const struct tbl_span *sp)
Line 172  term_tbl(struct termp *tp, const struct tbl_span *sp)
          */           */
   
         if (TBL_SPAN_LAST & sp->flags) {          if (TBL_SPAN_LAST & sp->flags) {
                 if (TBL_OPT_DBOX & sp->tbl->opts ||                  if (TBL_OPT_DBOX & sp->opts->opts ||
                     TBL_OPT_BOX  & sp->tbl->opts)                      TBL_OPT_BOX  & sp->opts->opts) {
                         tbl_hframe(tp, sp, 0);                          tbl_hframe(tp, sp, 0);
                 if (TBL_OPT_DBOX & sp->tbl->opts)                          tp->skipvsp = 1;
                   }
                   if (TBL_OPT_DBOX & sp->opts->opts) {
                         tbl_hframe(tp, sp, 1);                          tbl_hframe(tp, sp, 1);
                           tp->skipvsp = 2;
                   }
                 assert(tp->tbl.cols);                  assert(tp->tbl.cols);
                 free(tp->tbl.cols);                  free(tp->tbl.cols);
                 tp->tbl.cols = NULL;                  tp->tbl.cols = NULL;
Line 250  tbl_hframe(struct termp *tp, const struct tbl_span *sp
Line 256  tbl_hframe(struct termp *tp, const struct tbl_span *sp
 }  }
   
 static void  static void
 tbl_data(struct termp *tp, const struct tbl *tbl,  tbl_data(struct termp *tp, const struct tbl_opts *opts,
                 const struct tbl_dat *dp,                  const struct tbl_dat *dp,
                 const struct roffcol *col)                  const struct roffcol *col)
 {  {
Line 296  tbl_data(struct termp *tp, const struct tbl *tbl,
Line 302  tbl_data(struct termp *tp, const struct tbl *tbl,
                 tbl_literal(tp, dp, col);                  tbl_literal(tp, dp, col);
                 break;                  break;
         case (TBL_CELL_NUMBER):          case (TBL_CELL_NUMBER):
                 tbl_number(tp, tbl, dp, col);                  tbl_number(tp, opts, dp, col);
                 break;                  break;
         case (TBL_CELL_DOWN):          case (TBL_CELL_DOWN):
                 tbl_char(tp, ASCII_NBRSP, col->width);                  tbl_char(tp, ASCII_NBRSP, col->width);
Line 377  tbl_literal(struct termp *tp, const struct tbl_dat *dp
Line 383  tbl_literal(struct termp *tp, const struct tbl_dat *dp
 }  }
   
 static void  static void
 tbl_number(struct termp *tp, const struct tbl *tbl,  tbl_number(struct termp *tp, const struct tbl_opts *opts,
                 const struct tbl_dat *dp,                  const struct tbl_dat *dp,
                 const struct roffcol *col)                  const struct roffcol *col)
 {  {
Line 395  tbl_number(struct termp *tp, const struct tbl *tbl,
Line 401  tbl_number(struct termp *tp, const struct tbl *tbl,
   
         sz = term_strlen(tp, dp->string);          sz = term_strlen(tp, dp->string);
   
         buf[0] = tbl->decimal;          buf[0] = opts->decimal;
         buf[1] = '\0';          buf[1] = '\0';
   
         psz = term_strlen(tp, buf);          psz = term_strlen(tp, buf);
   
         if (NULL != (cp = strrchr(dp->string, tbl->decimal))) {          if (NULL != (cp = strrchr(dp->string, opts->decimal))) {
                 buf[1] = '\0';                  buf[1] = '\0';
                 for (ssz = 0, i = 0; cp != &dp->string[i]; i++) {                  for (ssz = 0, i = 0; cp != &dp->string[i]; i++) {
                         buf[0] = dp->string[i];                          buf[0] = dp->string[i];

Legend:
Removed from v.1.23  
changed lines
  Added in v.1.26

CVSweb