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

Diff for /mandoc/term.c between version 1.104 and 1.106

version 1.104, 2009/10/10 11:05:23 version 1.106, 2009/10/18 13:34:17
Line 24 
Line 24 
 #include "term.h"  #include "term.h"
 #include "man.h"  #include "man.h"
 #include "mdoc.h"  #include "mdoc.h"
   #include "main.h"
   #include "out.h"
   
 /* FIXME: accomodate non-breaking, non-collapsing white-space. */  /* FIXME: accomodate non-breaking, non-collapsing white-space. */
 /* FIXME: accomodate non-breaking, collapsing white-space. */  /* FIXME: accomodate non-breaking, collapsing white-space. */
   
 extern  void              man_run(struct termp *,  
                                 const struct man *);  
 extern  void              mdoc_run(struct termp *,  
                                 const struct mdoc *);  
   
 static  struct termp     *term_alloc(enum termenc);  static  struct termp     *term_alloc(enum termenc);
 static  void              term_free(struct termp *);  static  void              term_free(struct termp *);
   
Line 54  ascii_alloc(void)
Line 51  ascii_alloc(void)
   
   
 void  void
 terminal_man(void *arg, const struct man *man)  
 {  
         struct termp    *p;  
   
         p = (struct termp *)arg;  
         if (NULL == p->symtab)  
                 p->symtab = chars_init(CHARS_ASCII);  
   
         man_run(p, man);  
 }  
   
   
 void  
 terminal_mdoc(void *arg, const struct mdoc *mdoc)  
 {  
         struct termp    *p;  
   
         p = (struct termp *)arg;  
         if (NULL == p->symtab)  
                 p->symtab = chars_init(CHARS_ASCII);  
   
         mdoc_run(p, mdoc);  
 }  
   
   
 void  
 terminal_free(void *arg)  terminal_free(void *arg)
 {  {
   
Line 588  encode(struct termp *p, char c)
Line 559  encode(struct termp *p, char c)
         }          }
         buffer(p, c);          buffer(p, c);
 }  }
   
   
   int
   a2height(const char *p)
   {
           struct roffsu    su;
           double           r;
   
           if ( ! a2roffsu(p, &su))
                   return(-1);
   
           switch (su.unit) {
           case (SCALE_CM):
                   r = su.scale * 2;
                   break;
           case (SCALE_IN):
                   r = su.scale * 6;
                   break;
           case (SCALE_PC):
                   r = su.scale;
                   break;
           case (SCALE_PT):
                   r = su.scale / 8;
                   break;
           case (SCALE_MM):
                   r = su.scale / 1000;
                   break;
           case (SCALE_VS):
                   r = su.scale;
                   break;
           default:
                   r = su.scale - 1;
                   break;
           }
   
           if (r < 0.0)
                   r = 0.0;
           return(/* LINTED */(int)
                           r);
   }
   
   
   int
   a2width(const char *p)
   {
           struct roffsu    su;
           double           r;
   
           if ( ! a2roffsu(p, &su))
                   return(-1);
   
           switch (su.unit) {
           case (SCALE_CM):
                   r = (4 * su.scale) + 2; /* FIXME: double-check. */
                   break;
           case (SCALE_IN):
                   r = (10 * su.scale) + 2; /* FIXME: double-check. */
                   break;
           case (SCALE_PC):
                   r = (10 * su.scale) / 6; /* FIXME: double-check. */
                   break;
           case (SCALE_PT):
                   r = (10 * su.scale) / 72; /* FIXME: double-check. */
                   break;
           case (SCALE_MM):
                   r = su.scale / 1000; /* FIXME: double-check. */
                   break;
           case (SCALE_VS):
                   r = su.scale * 2 - 1; /* FIXME: double-check. */
                   break;
           default:
                   r = su.scale + 2;
                   break;
           }
   
           if (r < 0.0)
                   r = 0.0;
           return((int)/* LINTED */
                           r);
   }
   
   

Legend:
Removed from v.1.104  
changed lines
  Added in v.1.106

CVSweb