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

Diff for /mandoc/term.c between version 1.107 and 1.111

version 1.107, 2009/10/18 19:03:37 version 1.111, 2009/10/26 07:18:23
Line 130  void
Line 130  void
 term_flushln(struct termp *p)  term_flushln(struct termp *p)
 {  {
         int              i, j;          int              i, j;
         size_t           vbl, vsz, vis, maxvis, mmax, bp, os;          size_t           vbl, vsz, vis, maxvis, mmax, bp;
         static int       overstep = 0;          static int       overstep = 0;
   
         /*          /*
Line 143  term_flushln(struct termp *p)
Line 143  term_flushln(struct termp *p)
         assert(p->offset < p->rmargin);          assert(p->offset < p->rmargin);
         assert((int)(p->rmargin - p->offset) - overstep > 0);          assert((int)(p->rmargin - p->offset) - overstep > 0);
   
         /* Save the overstep. */  
         os = (size_t)overstep;  
   
         maxvis = /* LINTED */          maxvis = /* LINTED */
                 p->rmargin - p->offset - overstep;                  p->rmargin - p->offset - overstep;
         mmax = /* LINTED */          mmax = /* LINTED */
Line 153  term_flushln(struct termp *p)
Line 150  term_flushln(struct termp *p)
   
         bp = TERMP_NOBREAK & p->flags ? mmax : maxvis;          bp = TERMP_NOBREAK & p->flags ? mmax : maxvis;
         vis = 0;          vis = 0;
         overstep = 0;  
   
         /*          /*
          * If in the standard case (left-justified), then begin with our           * If in the standard case (left-justified), then begin with our
Line 208  term_flushln(struct termp *p)
Line 204  term_flushln(struct termp *p)
                                 vis = 0;                                  vis = 0;
                         }                          }
                         /* Remove the overstep width. */                          /* Remove the overstep width. */
                         bp += os;                          bp += overstep;
                         os = 0;                          overstep = 0;
                 } else {                  } else {
                         for (j = 0; j < (int)vbl; j++)                          for (j = 0; j < (int)vbl; j++)
                                 putchar(' ');                                  putchar(' ');
Line 226  term_flushln(struct termp *p)
Line 222  term_flushln(struct termp *p)
                 }                  }
                 vis += vsz;                  vis += vsz;
         }          }
   
         p->col = 0;          p->col = 0;
           overstep = 0;
   
         if ( ! (TERMP_NOBREAK & p->flags)) {          if ( ! (TERMP_NOBREAK & p->flags)) {
                 putchar('\n');                  putchar('\n');
Line 548  encode(struct termp *p, char c)
Line 546  encode(struct termp *p, char c)
 {  {
   
         if (' ' != c) {          if (' ' != c) {
                 if (p->bold) {  
                         buffer(p, c);  
                         buffer(p, 8);  
                 }  
                 if (p->under) {                  if (p->under) {
                         buffer(p, '_');                          buffer(p, '_');
                         buffer(p, 8);                          buffer(p, 8);
                 }                  }
                   if (p->bold) {
                           buffer(p, c);
                           buffer(p, 8);
                   }
         }          }
         buffer(p, c);          buffer(p, c);
 }  }
Line 602  term_hspan(const struct roffsu *su)
Line 600  term_hspan(const struct roffsu *su)
 {  {
         double           r;          double           r;
   
           /* XXX: CM, IN, and PT are approximations. */
   
         switch (su->unit) {          switch (su->unit) {
         case (SCALE_CM):          case (SCALE_CM):
                 r = (4 * su->scale) + 2; /* FIXME: double-check. */                  r = 4 * su->scale;
                 break;                  break;
         case (SCALE_IN):          case (SCALE_IN):
                 r = (10 * su->scale) + 2; /* FIXME: double-check. */                  /* XXX: this is an approximation. */
                   r = 10 * su->scale;
                 break;                  break;
         case (SCALE_PC):          case (SCALE_PC):
                 r = (10 * su->scale) / 6; /* FIXME: double-check. */                  r = (10 * su->scale) / 6;
                 break;                  break;
         case (SCALE_PT):          case (SCALE_PT):
                 r = (10 * su->scale) / 72; /* FIXME: double-check. */                  r = (10 * su->scale) / 72;
                 break;                  break;
         case (SCALE_MM):          case (SCALE_MM):
                 r = su->scale / 1000; /* FIXME: double-check. */                  r = su->scale / 1000; /* FIXME: double-check. */

Legend:
Removed from v.1.107  
changed lines
  Added in v.1.111

CVSweb