/* ti.c: classify line intersections */ | |
# include "t.h" | |
/* determine local environment for intersections */ | |
int | |
interv(int i, int c) | |
{ | |
int ku, kl; | |
if (c >= ncol || c == 0) { | |
if (dboxflg) { | |
if (i == 0) | |
return(BOT); | |
if (i >= nlin) | |
return(TOP); | |
return(THRU); | |
} | |
if (c >= ncol) | |
return(0); | |
} | |
ku = i > 0 ? lefdata(i - 1, c) : 0; | |
if (i + 1 >= nlin && allh(i)) | |
kl = 0; | |
else | |
kl = lefdata(allh(i) ? i + 1 : i, c); | |
if (ku == 2 && kl == 2) | |
return(THRU); | |
if (ku == 2) | |
return(TOP); | |
if (kl == BOT) | |
return(2); | |
return(0); | |
} | |
int | |
interh(int i, int c) | |
{ | |
int kl, kr; | |
if (fullbot[i] == '=' || (dboxflg && (i == 0 || i >= nlin - 1))) { | |
if (c == ncol) | |
return(LEFT); | |
if (c == 0) | |
return(RIGHT); | |
return(THRU); | |
} | |
if (i >= nlin) | |
return(0); | |
kl = c > 0 ? thish (i, c - 1) : 0; | |
if (kl <= 1 && i > 0 && allh(up1(i))) | |
kl = c > 0 ? thish(up1(i), c - 1) : 0; | |
kr = thish(i, c); | |
if (kr <= 1 && i > 0 && allh(up1(i))) | |
kr = c > 0 ? thish(up1(i), c) : 0; | |
if (kl == '=' && kr == '=') | |
return(THRU); | |
if (kl == '=') | |
return(LEFT); | |
if (kr == '=') | |
return(RIGHT); | |
return(0); | |
} | |
int | |
up1(int i) | |
{ | |
i--; | |
while (instead[i] && i > 0) | |
i--; | |
return(i); | |
} | |