Blame


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