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