|
|
1.1 ! root 1: # include "e.h" ! 2: ! 3: lpile(type, p1, p2) int type, p1, p2; { ! 4: int bi, hi, i, gap, h, b, nlist, nlist2, mid; ! 5: yyval = oalloc(); ! 6: gap = VERT( (ps*6*4)/10 ); /* 4/10 m between blocks */ ! 7: if( type=='-' ) gap = 0; ! 8: nlist = p2 - p1; ! 9: nlist2 = (nlist+1)/2; ! 10: mid = p1 + nlist2 -1; ! 11: h = 0; ! 12: for( i=p1; i<p2; i++ ) ! 13: h += eht[lp[i]]; ! 14: eht[yyval] = h + (nlist-1)*gap; ! 15: b = 0; ! 16: for( i=p2-1; i>mid; i-- ) ! 17: b += eht[lp[i]] + gap; ! 18: ebase[yyval] = (nlist%2) ? b + ebase[lp[mid]] ! 19: : b - VERT( (ps*6*5)/10 ) - gap; ! 20: if(dbg) { ! 21: printf(".\tS%d <- %c pile of:", yyval, type); ! 22: for( i=p1; i<p2; i++) ! 23: printf(" S%d", lp[i]); ! 24: printf(";h=%d b=%d\n", eht[yyval], ebase[yyval]); ! 25: } ! 26: nrwid(lp[p1], ps, lp[p1]); ! 27: printf(".nr %d \\n(%d\n", yyval, lp[p1]); ! 28: for( i = p1+1; i<p2; i++ ) { ! 29: nrwid(lp[i], ps, lp[i]); ! 30: printf(".if \\n(%d>\\n(%d .nr %d \\n(%d\n", ! 31: lp[i], yyval, yyval, lp[i]); ! 32: } ! 33: printf(".ds %d \\v'%du'\\h'%du*\\n(%du'\\\n", yyval, ebase[yyval], ! 34: type=='R' ? 1 : 0, yyval); ! 35: for(i = p2-1; i >=p1; i--) { ! 36: hi = eht[lp[i]]; ! 37: bi = ebase[lp[i]]; ! 38: switch(type) { ! 39: ! 40: case 'L': ! 41: printf("\\v'%du'\\*(%d\\h'-\\n(%du'\\v'0-%du'\\\n", ! 42: -bi, lp[i], lp[i], hi-bi+gap); ! 43: continue; ! 44: case 'R': ! 45: printf("\\v'%du'\\h'-\\n(%du'\\*(%d\\v'0-%du'\\\n", ! 46: -bi, lp[i], lp[i], hi-bi+gap); ! 47: continue; ! 48: case 'C': ! 49: case '-': ! 50: printf("\\v'%du'\\h'\\n(%du-\\n(%du/2u'\\*(%d", ! 51: -bi, yyval, lp[i], lp[i]); ! 52: printf("\\h'-\\n(%du-\\n(%du/2u'\\v'0-%du'\\\n", ! 53: yyval, lp[i], hi-bi+gap); ! 54: continue; ! 55: } ! 56: } ! 57: printf("\\v'%du'\\h'%du*\\n(%du'\n", eht[yyval]-ebase[yyval]+gap, ! 58: type!='R' ? 1 : 0, yyval); ! 59: for( i=p1; i<p2; i++ ) ! 60: ofree(lp[i]); ! 61: lfont[yyval] = rfont[yyval] = 0; ! 62: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.