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

Diff for /mandoc/term.c between version 1.243 and 1.247

version 1.243, 2015/01/21 20:33:25 version 1.247, 2015/04/04 17:47:18
Line 7 
Line 7 
  * purpose with or without fee is hereby granted, provided that the above   * purpose with or without fee is hereby granted, provided that the above
  * copyright notice and this permission notice appear in all copies.   * copyright notice and this permission notice appear in all copies.
  *   *
  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES
  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
Line 49  term_free(struct termp *p)
Line 49  term_free(struct termp *p)
   
 void  void
 term_begin(struct termp *p, term_margin head,  term_begin(struct termp *p, term_margin head,
                 term_margin foot, const void *arg)                  term_margin foot, const struct roff_meta *arg)
 {  {
   
         p->headf = head;          p->headf = head;
Line 363  term_fontpush(struct termp *p, enum termfont f)
Line 363  term_fontpush(struct termp *p, enum termfont f)
         p->fontq[p->fonti] = f;          p->fontq[p->fonti] = f;
 }  }
   
 /* Retrieve pointer to current font. */  
 const enum termfont *  
 term_fontq(struct termp *p)  
 {  
   
         return(&p->fontq[p->fonti]);  
 }  
   
 /* Flush to make the saved pointer current again. */  /* Flush to make the saved pointer current again. */
 void  void
 term_fontpopq(struct termp *p, const enum termfont *key)  term_fontpopq(struct termp *p, int i)
 {  {
   
         while (p->fonti >= 0 && key < p->fontq + p->fonti)          assert(i >= 0);
                 p->fonti--;          if (p->fonti > i)
         assert(p->fonti >= 0);                  p->fonti = i;
 }  }
   
 /* Pop one font off the stack. */  /* Pop one font off the stack. */
Line 421  term_word(struct termp *p, const char *word)
Line 413  term_word(struct termp *p, const char *word)
                 p->flags |= TERMP_NOSPACE;                  p->flags |= TERMP_NOSPACE;
   
         p->flags &= ~(TERMP_SENTENCE | TERMP_NONEWLINE);          p->flags &= ~(TERMP_SENTENCE | TERMP_NONEWLINE);
           p->skipvsp = 0;
   
         while ('\0' != *word) {          while ('\0' != *word) {
                 if ('\\' != *word) {                  if ('\\' != *word) {
Line 568  encode1(struct termp *p, int c)
Line 561  encode1(struct termp *p, int c)
         if (p->col + 6 >= p->maxcols)          if (p->col + 6 >= p->maxcols)
                 adjbuf(p, p->col + 6);                  adjbuf(p, p->col + 6);
   
         f = *term_fontq(p);          f = p->fontq[p->fonti];
   
         if (TERMFONT_UNDER == f || TERMFONT_BI == f) {          if (TERMFONT_UNDER == f || TERMFONT_BI == f) {
                 p->buf[p->col++] = '_';                  p->buf[p->col++] = '_';
Line 600  encode(struct termp *p, const char *word, size_t sz)
Line 593  encode(struct termp *p, const char *word, size_t sz)
          * character by character.           * character by character.
          */           */
   
         if (*term_fontq(p) == TERMFONT_NONE) {          if (p->fontq[p->fonti] == TERMFONT_NONE) {
                 if (p->col + sz >= p->maxcols)                  if (p->col + sz >= p->maxcols)
                         adjbuf(p, p->col + sz);                          adjbuf(p, p->col + sz);
                 for (i = 0; i < sz; i++)                  for (i = 0; i < sz; i++)
Line 626  void
Line 619  void
 term_setwidth(struct termp *p, const char *wstr)  term_setwidth(struct termp *p, const char *wstr)
 {  {
         struct roffsu    su;          struct roffsu    su;
         size_t           width;          int              iop, width;
         int              iop;  
   
         iop = 0;          iop = 0;
         width = 0;          width = 0;
Line 838  term_vspan(const struct termp *p, const struct roffsu 
Line 830  term_vspan(const struct termp *p, const struct roffsu 
         return(ri < 66 ? ri : 1);          return(ri < 66 ? ri : 1);
 }  }
   
   /*
    * Convert a scaling width to basic units, rounding down.
    */
 int  int
 term_hspan(const struct termp *p, const struct roffsu *su)  term_hspan(const struct termp *p, const struct roffsu *su)
 {  {
         double           v;  
   
         v = (*p->hspan)(p, su);          return((*p->hspan)(p, su));
         return(v > 0.0 ? v + 0.0005 : v - 0.0005);  
 }  }

Legend:
Removed from v.1.243  
changed lines
  Added in v.1.247

CVSweb