… | |
… | |
149 | |
149 | |
150 | text_t t = l.t[x]; |
150 | text_t t = l.t[x]; |
151 | |
151 | |
152 | if (t != NOCHAR || !x) |
152 | if (t != NOCHAR || !x) |
153 | { |
153 | { |
154 | iso14755_51 (l.t[x], l.r[x], x, y); |
154 | iso14755_51 (l.t[x], l.r[x], x, y, view_start); |
155 | iso14755buf = ISO_14755_54; |
155 | iso14755buf = ISO_14755_54; |
156 | break; |
156 | break; |
157 | } |
157 | } |
158 | |
158 | |
159 | x--; |
159 | x--; |
160 | } |
160 | } |
161 | } |
161 | } |
162 | |
162 | |
163 | void ecb_cold |
163 | void ecb_cold |
164 | rxvt_term::iso14755_51 (unicode_t ch, rend_t r, int x, int y) |
164 | rxvt_term::iso14755_51 (unicode_t ch, rend_t r, int x, int y, int y2) |
165 | { |
165 | { |
166 | rxvt_fontset *fs = FONTSET (r); |
166 | rxvt_fontset *fs = FONTSET (r); |
167 | wchar_t *chr, *alloc, ch2, **fname; |
167 | wchar_t *chr, *alloc, ch2, **fname; |
168 | int len; |
168 | int len; |
169 | |
169 | |
… | |
… | |
181 | |
181 | |
182 | alloc = 0; |
182 | alloc = 0; |
183 | chr = &ch2; |
183 | chr = &ch2; |
184 | len = 1; |
184 | len = 1; |
185 | } |
185 | } |
|
|
186 | |
|
|
187 | char rowcol[40]; |
|
|
188 | snprintf (rowcol, sizeof rowcol, "col %d row %d @%d", x, y, y2); |
186 | |
189 | |
187 | char attr[80]; // plenty |
190 | char attr[80]; // plenty |
188 | |
191 | |
189 | sprintf (attr, "%08x = fg %d bg %d%s%s%s%s%s%s", |
192 | sprintf (attr, "%08x = fg %d bg %d%s%s%s%s%s%s", |
190 | (int)r, |
193 | (int)r, |
… | |
… | |
203 | rxvt_font *f = (*fs)[fs->find_font_idx (chr[i])]; |
206 | rxvt_font *f = (*fs)[fs->find_font_idx (chr[i])]; |
204 | fname[i] = rxvt_utf8towcs (f->name); |
207 | fname[i] = rxvt_utf8towcs (f->name); |
205 | max_it (width, wcswidth (fname[i], wcslen (fname[i]))); |
208 | max_it (width, wcswidth (fname[i], wcslen (fname[i]))); |
206 | } |
209 | } |
207 | |
210 | |
208 | max_it (width, 8+5); // for char + hex |
|
|
209 | max_it (width, strlen (attr)); |
211 | max_it (width, strlen (attr)); |
210 | |
212 | |
211 | if (y >= 0) |
213 | if (y >= 0) |
212 | { |
214 | { |
213 | y = (y >= nrow - len - 4 && x < width + 2) ? 0 : -1; |
215 | y = (y >= nrow - len - 4 && x < width + 2) ? 0 : -1; |
214 | x = 0; |
216 | x = 0; |
215 | } |
217 | } |
216 | |
218 | |
217 | scr_overlay_new (x, y, width, len * 2 + 1); |
219 | scr_overlay_new (x, y, width, len * 2 + 2); |
|
|
220 | |
|
|
221 | scr_overlay_set (0, 0, rowcol); |
218 | |
222 | |
219 | r = SET_STYLE (OVERLAY_RSTYLE, GET_STYLE (r)); |
223 | r = SET_STYLE (OVERLAY_RSTYLE, GET_STYLE (r)); |
220 | |
224 | |
221 | for (int y = 0; y < len; y++) |
225 | for (int y = 0; y < len; y++) |
222 | { |
226 | { |
223 | char buf[9]; |
227 | char buf[9]; |
224 | |
228 | |
225 | ch = *chr++; |
229 | ch = *chr++; |
226 | |
230 | |
227 | sprintf (buf, "%8x", ch); |
231 | sprintf (buf, "%8x", ch); |
228 | scr_overlay_set (0, y, buf); |
232 | scr_overlay_set (0, y + 1, buf); |
229 | scr_overlay_set (9, y, '='); |
233 | scr_overlay_set (9, y + 1, '='); |
230 | # if !UNICODE_3 |
234 | # if !UNICODE_3 |
231 | if (ch >= 0x10000) |
235 | if (ch >= 0x10000) |
232 | ch = 0xfffd; |
236 | ch = 0xfffd; |
233 | # endif |
237 | # endif |
234 | scr_overlay_set (11, y, ch, r); |
238 | scr_overlay_set (11, y + 1, ch, r); |
235 | |
239 | |
236 | if (WCWIDTH (ch) >= 2) |
240 | if (WCWIDTH (ch) >= 2) |
237 | scr_overlay_set (12, y, NOCHAR, r); |
241 | scr_overlay_set (12, y + 1, NOCHAR, r); |
238 | } |
242 | } |
239 | |
243 | |
240 | // { |
244 | // { |
241 | // char buf[4+4+3+1]; |
245 | // char buf[4+4+3+1]; |
242 | // snprintf (buf, sizeof (buf), "(%.4d|%.4d)", x, y); |
246 | // snprintf (buf, sizeof (buf), "(%.4d|%.4d)", x, y); |
243 | // scr_overlay_set (0, 0, buf); |
247 | // scr_overlay_set (0, 0, buf); |
244 | // } |
248 | // } |
245 | scr_overlay_set (0, len , attr); |
249 | scr_overlay_set (0, len + 1, attr); |
246 | for (int i = 0; i < len; i++) |
250 | for (int i = 0; i < len; i++) |
247 | { |
251 | { |
248 | scr_overlay_set (0, len + 1 + i, fname[i]); |
252 | scr_overlay_set (0, len + 2 + i, fname[i]); |
249 | free (fname[i]); |
253 | free (fname[i]); |
250 | } |
254 | } |
251 | |
255 | |
252 | # if ENABLE_COMBINING |
256 | # if ENABLE_COMBINING |
253 | if (alloc) |
257 | if (alloc) |