1:  /* tv.c: draw vertical lines */
   2: # include "t..c"
   3: drawvert(start,end, c, lwid)
   4: {
   5: char *exb=0, *ext=0;
   6: int tp=0, sl, ln, pos, epb, ept, vm;
   7: end++;
   8: vm='v';
   9: /* note: nr 35 has value of 1m outside of linesize */
  10: while (instead[end]) end++;
  11: for(ln=0; ln<lwid; ln++)
  12:     {
  13:     epb=ept=0;
  14:     pos = 2*ln-lwid+1;
  15:     if (pos!=tp) fprintf(tabout, "\\h'%dp'", pos-tp);
  16:     tp = pos;
  17:     if (end<nlin)
  18:         {
  19:         if (fullbot[end]|| (!instead[end] && allh(end)))
  20:             epb=2;
  21:         else
  22:         switch (midbar(end,c))
  23:             {
  24:             case '-':
  25:             exb = "1v-.5m"; break;
  26:             case '=':
  27:             exb = "1v-.5m";
  28:             epb = 1; break;
  29:             }
  30:         }
  31:     if (lwid>1)
  32:     switch(interh(end, c))
  33:         {
  34:         case THRU: epb -= 1; break;
  35:         case RIGHT: epb += (ln==0 ? 1 : -1); break;
  36:         case LEFT: epb += (ln==1 ? 1 : -1); break;
  37:         }
  38:     if (lwid==1)
  39:     switch(interh(end,c))
  40:         {
  41:         case THRU: epb -= 1; break;
  42:         case RIGHT: case LEFT: epb += 1; break;
  43:         }
  44:     if (start>0)
  45:         {
  46:         sl = start-1;
  47:         while (sl>=0 && instead[sl]) sl--;
  48:         if (sl>=0 && (fullbot[sl] || allh(sl)))
  49:             ept=0;
  50:         else
  51:         if (sl>=0)
  52:         switch(midbar(sl,c))
  53:             {
  54:             case '-':
  55:             ext = ".5m"; break;
  56:             case '=':
  57:             ext= ".5m"; ept = -1; break;
  58:             default:
  59:                 vm = 'm'; break;
  60:             }
  61:         else
  62:             ept = -4;
  63:         }
  64:     else if (start==0 && allh(0))
  65:         {
  66:         ept=0;
  67:         vm = 'm';
  68:         }
  69:     if (lwid>1)
  70:         switch(interh(start,c))
  71:             {
  72:             case THRU: ept += 1; break;
  73:             case LEFT: ept += (ln==0 ? 1 : -1); break;
  74:             case RIGHT: ept += (ln==1 ? 1 : -1); break;
  75:             }
  76:     else if (lwid==1)
  77:         switch(interh(start,c))
  78:             {
  79:             case THRU: ept += 1; break;
  80:             case LEFT: case RIGHT: ept -= 1; break;
  81:             }
  82:     if (exb)
  83:         fprintf(tabout, "\\v'%s'", exb);
  84:     if (epb)
  85:         fprintf(tabout, "\\v'%dp'", epb);
  86:     fprintf(tabout, "\\s\\n(%d",LSIZE);
  87:     if (linsize)
  88:         fprintf(tabout, "\\v'-\\n(%dp/6u'", LSIZE);
  89:     fprintf(tabout, "\\h'-\\n(#~u'"); /* adjustment for T450 nroff boxes */
  90:     fprintf(tabout, "\\L'|\\n(#%cu-%s", linestop[start]+'a'-1, vm=='v'? "1v" : "\\n(35u");
  91:     if (ext)
  92:         fprintf(tabout, "-(%s)",ext);
  93:     if (exb)
  94:         fprintf(tabout, "-(%s)", exb);
  95:     pos = ept-epb;
  96:     if (pos)
  97:         fprintf(tabout, "%s%dp", pos>=0? "+" : "", pos);
  98:     /* the string #d is either "nl" or ".d" depending
  99: 	   on diversions; on GCOS not the same */
 100:     fprintf(tabout, "'\\s0\\v'\\n(\\*(#du-\\n(#%cu+%s", linestop[start]+'a'-1,vm=='v' ? "1v" : "\\n(35u");
 101:     if (ext)
 102:         fprintf(tabout, "+%s",ext);
 103:     if (ept)
 104:         fprintf(tabout, "%s%dp", (-ept)>0 ? "+" : "", (-ept));
 105:     fprintf(tabout, "'");
 106:     if (linsize)
 107:         fprintf(tabout, "\\v'\\n(%dp/6u'", LSIZE);
 108:     }
 109: }
 110: 
 111: 
 112: midbar(i,c)
 113: {
 114: int k;
 115: k = midbcol(i,c);
 116: if (k==0 && c>0)
 117:     k = midbcol(i, c-1);
 118: return(k);
 119: }
 120: midbcol(i,c)
 121: {
 122: int ct;
 123: while ( (ct=ctype(i,c)) == 's')
 124:     c--;
 125: if (ct=='-' || ct == '=')
 126:     return(ct);
 127: if (ct=barent(table[i][c].col))
 128:     return(ct);
 129: return(0);
 130: }
 131: 
 132: barent(s)
 133:     char *s;
 134: {
 135: if (s==0) return (1);
 136: if (s[0]== '\\') s++;
 137: if (s[1]!= 0)
 138:     return(0);
 139: switch(s[0])
 140:     {
 141:     case '_':
 142:         return('-');
 143:     case '=':
 144:         return('=');
 145:     }
 146: return(0);
 147: }

Defined functions

barent defined in line 132; used 4 times
drawvert defined in line 3; used 4 times
midbar defined in line 112; used 2 times
midbcol defined in line 120; used 2 times
Last modified: 1981-07-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 780
Valid CSS Valid XHTML 1.0 Strict