Merge pull request #6 from jepler/sextant
This commit is contained in:
commit
a3ded925b0
4 changed files with 487 additions and 12 deletions
32
chargen.c
32
chargen.c
|
|
@ -496,8 +496,38 @@ static void master_write(void *user_data, void *buffer_in, size_t len) {
|
|||
}
|
||||
}
|
||||
|
||||
static int map_unicode(void *unused, int n) {
|
||||
static int map_unicode(void *user_data, int n, lw_cell_t *attr) {
|
||||
struct lw_terminal_vt100 *vt100 = (struct lw_terminal_vt100 *)user_data;
|
||||
if (n >= 0x1fb00 && n <= 0x1fb3b) {
|
||||
n = n - 0x1fb00 +
|
||||
129; // 1fb00 is sextant-1, which lives at position 129
|
||||
if (n >= 169)
|
||||
n++; // the 135 and 246 sextants are elsewhere
|
||||
if (n >= 149)
|
||||
n++;
|
||||
if (n >= 160) { // half of sextants are inverted
|
||||
struct lw_parsed_attr tmp_attr = vt100->parsed_attr;
|
||||
tmp_attr.inverse = !tmp_attr.inverse;
|
||||
n ^= 0x3f;
|
||||
*attr = vt100->encode_attr(vt100, &tmp_attr);
|
||||
}
|
||||
return n;
|
||||
}
|
||||
switch (n) {
|
||||
case 9608: {
|
||||
struct lw_parsed_attr tmp_attr = vt100->parsed_attr;
|
||||
tmp_attr.inverse = !tmp_attr.inverse;
|
||||
*attr = vt100->encode_attr(vt100, &tmp_attr);
|
||||
return 32; // FULL BLOCK U+2588
|
||||
}
|
||||
case 9612:
|
||||
return 149; // LEFT HALF BLOCK U+258c
|
||||
case 9616: {
|
||||
struct lw_parsed_attr tmp_attr = vt100->parsed_attr;
|
||||
tmp_attr.inverse = !tmp_attr.inverse;
|
||||
*attr = vt100->encode_attr(vt100, &tmp_attr);
|
||||
return 149; // RIGHT HALF BLOCK U+2590
|
||||
}
|
||||
case 9670:
|
||||
return 1;
|
||||
case 9618:
|
||||
|
|
|
|||
|
|
@ -334,7 +334,12 @@ x Pm = 97 / 107 fg/bg Bright White
|
|||
x Pm = 99 / 109 fg/bg Bright Default
|
||||
*/
|
||||
|
||||
static int default_map_unicode(void *user_data, int c) { return '?'; }
|
||||
static int default_map_unicode(void *user_data, int c, lw_cell_t *attr) {
|
||||
(void)user_data;
|
||||
(void)c;
|
||||
(void)attr;
|
||||
return '?';
|
||||
}
|
||||
|
||||
static lw_cell_t default_encode_attr(void *user_data,
|
||||
const struct lw_parsed_attr *attr) {
|
||||
|
|
@ -471,10 +476,10 @@ static void CUP(struct lw_terminal *term_emul) {
|
|||
if ((unsigned int)arg0 > vt100->margin_bottom)
|
||||
arg0 = vt100->margin_bottom;
|
||||
}
|
||||
if (arg0 >= vt100->height) {
|
||||
if (arg0 >= (int)vt100->height) {
|
||||
arg0 = vt100->height - 1;
|
||||
}
|
||||
if (arg1 >= vt100->width) {
|
||||
if (arg1 >= (int)vt100->width) {
|
||||
arg1 = vt100->width - 1;
|
||||
}
|
||||
vt100->y = arg0;
|
||||
|
|
@ -861,7 +866,7 @@ static void DCH(struct lw_terminal *term_emul) {
|
|||
|
||||
for (x = vt100->x; x < vt100->width; ++x) {
|
||||
int x1 = x + arg0;
|
||||
if (x1 >= vt100->width) {
|
||||
if (x1 >= (int)vt100->width) {
|
||||
set(vt100, x, y, ' ');
|
||||
} else {
|
||||
aset(vt100, x, y, aget(vt100, x1, y));
|
||||
|
|
@ -1028,19 +1033,35 @@ static void vt100_write_unicode(struct lw_terminal *term_emul, int c) {
|
|||
if (c < ' ') {
|
||||
return;
|
||||
}
|
||||
|
||||
lw_cell_t attr = vt100->attr;
|
||||
|
||||
if (vt100->x == vt100->width) {
|
||||
if (MODE_IS_SET(vt100, DECAWM))
|
||||
NEL(term_emul);
|
||||
else
|
||||
vt100->x -= 1;
|
||||
}
|
||||
if (!vt100->selected_charset && c >= 95 && c < 127) {
|
||||
c = c - 95;
|
||||
if (!vt100->selected_charset && c > 95 && c < 127) {
|
||||
c = c - 95; // you can't hit the glyph at 0 this way, oh well
|
||||
}
|
||||
if (!vt100->unicode && !vt100->selected_charset && c > 32 && c <= 95) {
|
||||
// extension: In the alternate character set, there are also
|
||||
// sixels/sextant chars. Because there's only room for 32 of the 64
|
||||
// in the character bitmap (at 128-160) half are displayed in
|
||||
// inverse video instead.
|
||||
c = c + 64;
|
||||
if (c >= 160) {
|
||||
struct lw_parsed_attr tmp_attr = vt100->parsed_attr;
|
||||
tmp_attr.inverse = !tmp_attr.inverse;
|
||||
c ^= 0x1f;
|
||||
attr = vt100->encode_attr(vt100, &tmp_attr);
|
||||
}
|
||||
}
|
||||
if (c >= 0x100) {
|
||||
c = vt100->map_unicode(vt100, c);
|
||||
c = vt100->map_unicode(vt100, c, &attr);
|
||||
}
|
||||
set(vt100, vt100->x, vt100->y, c);
|
||||
aset(vt100, vt100->x, vt100->y, c | attr);
|
||||
vt100->x += 1;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ struct lw_terminal_vt100 {
|
|||
void (*master_write)(void *user_data, void *buffer, size_t len);
|
||||
lw_cell_t (*encode_attr)(void *user_data,
|
||||
const struct lw_parsed_attr *attr);
|
||||
int (*map_unicode)(void *user_data, int c);
|
||||
int (*map_unicode)(void *user_data, int c, lw_cell_t *attr);
|
||||
void *user_data;
|
||||
};
|
||||
|
||||
|
|
|
|||
428
mkfont/5x9.bdf
428
mkfont/5x9.bdf
|
|
@ -26,9 +26,8 @@ QUAD_WIDTH 5
|
|||
FONT_ASCENT 7
|
||||
FONT_DESCENT 2
|
||||
DEFAULT_CHAR 0
|
||||
_XMBDFED_INFO "Edited with xmbdfed 4.5."
|
||||
ENDPROPERTIES
|
||||
CHARS 223
|
||||
CHARS 255
|
||||
STARTCHAR char0
|
||||
ENCODING 0
|
||||
SWIDTH 640 0
|
||||
|
|
@ -1674,6 +1673,431 @@ DWIDTH 5 0
|
|||
BBX 0 0 0 0
|
||||
BITMAP
|
||||
ENDCHAR
|
||||
STARTCHAR char128
|
||||
ENCODING 128
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 0 0 0 0
|
||||
BITMAP
|
||||
ENDCHAR
|
||||
STARTCHAR char129
|
||||
ENCODING 129
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 3 3 0 4
|
||||
BITMAP
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char130
|
||||
ENCODING 130
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 3 3 2 4
|
||||
BITMAP
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char131
|
||||
ENCODING 131
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 3 0 4
|
||||
BITMAP
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
ENDCHAR
|
||||
STARTCHAR char132
|
||||
ENCODING 132
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 3 3 0 1
|
||||
BITMAP
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char133
|
||||
ENCODING 133
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 3 6 0 1
|
||||
BITMAP
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char134
|
||||
ENCODING 134
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 6 0 1
|
||||
BITMAP
|
||||
38
|
||||
38
|
||||
38
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char135
|
||||
ENCODING 135
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 6 0 1
|
||||
BITMAP
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char136
|
||||
ENCODING 136
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 3 3 2 1
|
||||
BITMAP
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char137
|
||||
ENCODING 137
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 6 0 1
|
||||
BITMAP
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
38
|
||||
38
|
||||
38
|
||||
ENDCHAR
|
||||
STARTCHAR char138
|
||||
ENCODING 138
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 3 6 2 1
|
||||
BITMAP
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char139
|
||||
ENCODING 139
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 6 0 1
|
||||
BITMAP
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
38
|
||||
38
|
||||
38
|
||||
ENDCHAR
|
||||
STARTCHAR char140
|
||||
ENCODING 140
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 3 0 1
|
||||
BITMAP
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
ENDCHAR
|
||||
STARTCHAR char141
|
||||
ENCODING 141
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 6 0 1
|
||||
BITMAP
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
ENDCHAR
|
||||
STARTCHAR char142
|
||||
ENCODING 142
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 6 0 1
|
||||
BITMAP
|
||||
38
|
||||
38
|
||||
38
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
ENDCHAR
|
||||
STARTCHAR char143
|
||||
ENCODING 143
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 6 0 1
|
||||
BITMAP
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
ENDCHAR
|
||||
STARTCHAR char145
|
||||
ENCODING 144
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 3 3 0 -2
|
||||
BITMAP
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char146
|
||||
ENCODING 145
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 3 9 0 -2
|
||||
BITMAP
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
00
|
||||
00
|
||||
00
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char147
|
||||
ENCODING 146
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 9 0 -2
|
||||
BITMAP
|
||||
38
|
||||
38
|
||||
38
|
||||
00
|
||||
00
|
||||
00
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char148
|
||||
ENCODING 147
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 9 0 -2
|
||||
BITMAP
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
00
|
||||
00
|
||||
00
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char149
|
||||
ENCODING 148
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 3 6 0 -2
|
||||
BITMAP
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char150
|
||||
ENCODING 149
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 3 9 0 -2
|
||||
BITMAP
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char151
|
||||
ENCODING 150
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 9 0 -2
|
||||
BITMAP
|
||||
38
|
||||
38
|
||||
38
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char135
|
||||
ENCODING 151
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 9 0 -2
|
||||
BITMAP
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char136
|
||||
ENCODING 152
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 6 0 -2
|
||||
BITMAP
|
||||
38
|
||||
38
|
||||
38
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char137
|
||||
ENCODING 153
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 9 0 -2
|
||||
BITMAP
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
38
|
||||
38
|
||||
38
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char138
|
||||
ENCODING 154
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 9 0 -2
|
||||
BITMAP
|
||||
38
|
||||
38
|
||||
38
|
||||
38
|
||||
38
|
||||
38
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char139
|
||||
ENCODING 155
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 9 0 -2
|
||||
BITMAP
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
38
|
||||
38
|
||||
38
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char140
|
||||
ENCODING 156
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 6 0 -2
|
||||
BITMAP
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char141
|
||||
ENCODING 157
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 9 0 -2
|
||||
BITMAP
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char142
|
||||
ENCODING 158
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 9 0 -2
|
||||
BITMAP
|
||||
38
|
||||
38
|
||||
38
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR char143
|
||||
ENCODING 159
|
||||
SWIDTH 640 0
|
||||
DWIDTH 5 0
|
||||
BBX 5 9 0 -2
|
||||
BITMAP
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
F8
|
||||
E0
|
||||
E0
|
||||
E0
|
||||
ENDCHAR
|
||||
STARTCHAR exclamdown
|
||||
ENCODING 161
|
||||
SWIDTH 640 0
|
||||
|
|
|
|||
Loading…
Reference in a new issue