1*14514Ssam #ifndef lint 2*14514Ssam static char sccsid[] = "@(#)tt.c 4.2 08/11/83"; 3*14514Ssam #endif 411045Sshannon 511045Sshannon /* tt.c: subroutines for drawing horizontal lines */ 611045Sshannon # include "t..c" 711045Sshannon ctype(il, ic) 811045Sshannon { 911045Sshannon if (instead[il]) 1011045Sshannon return(0); 1111045Sshannon if (fullbot[il]) 1211045Sshannon return(0); 1311045Sshannon il = stynum[il]; 1411045Sshannon return(style[il][ic]); 1511045Sshannon } 1611045Sshannon min(a,b) 1711045Sshannon { 1811045Sshannon return(a<b ? a : b); 1911045Sshannon } 2011045Sshannon fspan(i,c) 2111045Sshannon { 2211045Sshannon c++; 2311045Sshannon return(c<ncol && ctype(i,c)=='s'); 2411045Sshannon } 2511045Sshannon lspan(i,c) 2611045Sshannon { 2711045Sshannon int k; 2811045Sshannon if (ctype(i,c) != 's') return(0); 2911045Sshannon c++; 3011045Sshannon if (c < ncol && ctype(i,c)== 's') 3111045Sshannon return(0); 3211045Sshannon for(k=0; ctype(i,--c) == 's'; k++); 3311045Sshannon return(k); 3411045Sshannon } 3511045Sshannon ctspan(i,c) 3611045Sshannon { 3711045Sshannon int k; 3811045Sshannon c++; 3911045Sshannon for(k=1; c<ncol && ctype(i,c)=='s'; k++) 4011045Sshannon c++; 4111045Sshannon return(k); 4211045Sshannon } 4311045Sshannon tohcol(ic) 4411045Sshannon { 4511045Sshannon if (ic==0) 4611045Sshannon fprintf(tabout, "\\h'|0'"); 4711045Sshannon else 4811045Sshannon fprintf(tabout, "\\h'(|\\n(%du+|\\n(%du)/2u'", ic+CLEFT, ic+CRIGHT-1); 4911045Sshannon } 5011045Sshannon allh(i) 5111045Sshannon { 5211045Sshannon /* return true if every element in line i is horizontal */ 5311045Sshannon /* also at least one must be horizontl */ 5411045Sshannon int c, one, k; 5511045Sshannon if (fullbot[i]) return(1); 5611045Sshannon for(one=c=0; c<ncol; c++) 5711045Sshannon { 5811045Sshannon k = thish(i,c); 5911045Sshannon if (k==0) return(0); 6011045Sshannon if (k==1) continue; 6111045Sshannon one=1; 6211045Sshannon } 6311045Sshannon return(one); 6411045Sshannon } 6511045Sshannon thish(i,c) 6611045Sshannon { 6711045Sshannon int t; 6811045Sshannon char *s; 6911045Sshannon struct colstr *pc; 7011045Sshannon if (c<0)return(0); 7111045Sshannon if (i<0) return(0); 7211045Sshannon t = ctype(i,c); 7311045Sshannon if (t=='_' || t == '-') 7411045Sshannon return('-'); 7511045Sshannon if (t=='=')return('='); 7611045Sshannon if (t=='^') return(1); 7711045Sshannon if (fullbot[i] ) 7811045Sshannon return(fullbot[i]); 7911045Sshannon if (t=='s') return(thish(i,c-1)); 8011045Sshannon if (t==0) return(1); 8111045Sshannon pc = &table[i][c]; 8211045Sshannon s = (t=='a' ? pc->rcol : pc->col); 8311045Sshannon if (s==0 || (point(s) && *s==0)) 8411045Sshannon return(1); 8511045Sshannon if (vspen(s)) return(1); 8611045Sshannon if (t=barent( s)) 8711045Sshannon return(t); 8811045Sshannon return(0); 8911045Sshannon } 90