more italic support

There might be some follow-ups to this.
This commit is contained in:
nhmall
2024-01-29 08:40:05 -05:00
parent 74a1caf536
commit 0dfe92ac61
9 changed files with 169 additions and 117 deletions

View File

@@ -124,10 +124,13 @@ putstr(window, attr, str)
Multiple putstr()s are output on separate lines. Attributes
can be one of
ATR_NONE (or 0)
ATR_ULINE
ATR_BOLD
ATR_DIM
ATR_ITALIC
ATR_ULINE
ATR_BLINK
ATR_INVERSE
If a window-port does not support all of these, it may map
unsupported attributes to a supported one (e.g. map them
all to ATR_INVERSE). putstr() may compress spaces out of
@@ -158,10 +161,13 @@ putmixed(window, attr, str)
Multiple putmixed()s are output on separate lines.
Attributes can be one of
ATR_NONE (or 0)
ATR_ULINE
ATR_BOLD
ATR_DIM
ATR_ITALIC
ATR_ULINE
ATR_BLINK
ATR_INVERSE
If a window-port does not support all of these, it may map
unsupported attributes to a supported one (e.g. map them
all to ATR_INVERSE). putmixed() may compress spaces out of
@@ -374,10 +380,13 @@ add_menu(windid window, glyphinfo, const anything identifier, char accelerator,
with the default object class symbols.
-- attr attributes can be one of
ATR_NONE (or 0)
ATR_ULINE
ATR_BOLD
ATR_DIM
ATR_ITALIC
ATR_ULINE
ATR_BLINK
ATR_INVERSE
If a window-port does not support all of these, it may map
unsupported attributes to a supported one (e.g. map them
all to ATR_INVERSE).
@@ -575,17 +584,24 @@ status_update(int fldindex, genericptr_t ptr, int chg, int percentage, \
+------+----------------------+--------------------+
| 15 | CLR_WHITE | |
+------+----------------------+--------------------+
| 16 | HL_ATTCLR_DIM | | CLR_MAX
| 16 | HL_ATTCLR_UNDEF | | CLR_MAX
+------+----------------------+--------------------+
| 17 | HL_ATTCLR_BLINK | |
| 17 | HL_ATTCLR_NONE | | CLR_MAX + 1
+------+----------------------+--------------------+
| 18 | HL_ATTCLR_ULINE | |
| 18 | HL_ATTCLR_BOLD | | CLR_MAX + 2
+------+----------------------+--------------------+
| 19 | HL_ATTCLR_INVERSE | 00010110 |
| 19 | HL_ATTCLR_DIM | | CLR_MAX + 3
+------+----------------------+--------------------+
| 20 | HL_ATTCLR_BOLD | |
| 20 | HL_ATTCLR_ITALIC | | CLR_MAX + 4
+------+----------------------+--------------------+
| 21 | beyond array boundary| | BL_ATTCLR_MAX
| 21 | HL_ATTCLR_ULINE | | CLR_MAX + 5
+------+----------------------+--------------------+
| 22 | HL_ATTCLR_BLINK | | CLR_MAX + 6
+------+----------------------+--------------------+
| 23 | HL_ATTCLR_INVERSE | | CLR_MAX + 7
+------+----------------------+--------------------+
| 24 | beyond array boundary| | BL_ATTCLR_MAX
The window port can AND (&) the bits passed in the
ptr argument to status_update() with any non-zero

View File

@@ -201,10 +201,18 @@ extern int cond_idx[CONDITION_COUNT];
/* #ifdef STATUS_HILITES */
/* hilite status field behavior - coloridx values */
#define BL_HILITE_NONE -1 /* no hilite of this field */
#define BL_HILITE_INVERSE -2 /* inverse hilite */
#define BL_HILITE_BOLD -3 /* bold hilite */
/* or any CLR_ index (0 - 15) */
#define BL_HILITE_NONE -1 /* no hilite of this field */
#if 0
#define BL_HILITE_BOLD -2 /* bold hilite */
#define BL_HILITE_DIM -3 /* dim hilite */
#define BL_HILITE_ITALIC -4 /* italic hilite */
#define BL_HILITE_ULINE -5 /* underline hilite */
#define BL_HILITE_BLINK -6 /* blink hilite */
#define BL_HILITE_INVERSE -7 /* inverse hilite */
/* or any CLR_ index (0 - 15) */
#endif
#define BL_TH_NONE 0
#define BL_TH_VAL_PERCENTAGE 100 /* threshold is percentage */
#define BL_TH_VAL_ABSOLUTE 101 /* threshold is particular value */
@@ -214,21 +222,24 @@ extern int cond_idx[CONDITION_COUNT];
#define BL_TH_ALWAYS_HILITE 105 /* highlight regardless of value */
#define BL_TH_CRITICALHP 106 /* highlight critically low HP */
#define HL_ATTCLR_DIM CLR_MAX + 0
#define HL_ATTCLR_BLINK CLR_MAX + 1
#define HL_ATTCLR_ULINE CLR_MAX + 2
#define HL_ATTCLR_INVERSE CLR_MAX + 3
#define HL_ATTCLR_BOLD CLR_MAX + 4
#define BL_ATTCLR_MAX CLR_MAX + 5
#define HL_ATTCLR_NONE CLR_MAX + 1
#define HL_ATTCLR_BOLD CLR_MAX + 2
#define HL_ATTCLR_DIM CLR_MAX + 3
#define HL_ATTCLR_ITALIC CLR_MAX + 4
#define HL_ATTCLR_ULINE CLR_MAX + 5
#define HL_ATTCLR_BLINK CLR_MAX + 6
#define HL_ATTCLR_INVERSE CLR_MAX + 7
#define BL_ATTCLR_MAX CLR_MAX + 8
enum hlattribs {
HL_UNDEF = 0x00,
HL_NONE = 0x01,
HL_BOLD = 0x02,
HL_INVERSE = 0x04,
HL_ULINE = 0x08,
HL_BLINK = 0x10,
HL_DIM = 0x20
HL_DIM = 0x04,
HL_ITALIC = 0x08,
HL_ULINE = 0x10,
HL_BLINK = 0x20,
HL_INVERSE = 0x40
};
#define MAXVALWIDTH 80 /* actually less, but was using 80 to allocate title

View File

@@ -2734,16 +2734,18 @@ parse_status_hl2(char (*s)[QBUFSZ], boolean from_configfile)
for (i = 0; i < sf; ++i) {
int a = match_str2attr(subfields[i], FALSE);
if (a == ATR_DIM)
if (a == ATR_BOLD)
disp_attrib |= HL_BOLD;
else if (a == ATR_DIM)
disp_attrib |= HL_DIM;
else if (a == ATR_BLINK)
disp_attrib |= HL_BLINK;
else if (a == ATR_ITALIC)
disp_attrib |= HL_ITALIC;
else if (a == ATR_ULINE)
disp_attrib |= HL_ULINE;
else if (a == ATR_BLINK)
disp_attrib |= HL_BLINK;
else if (a == ATR_INVERSE)
disp_attrib |= HL_INVERSE;
else if (a == ATR_BOLD)
disp_attrib |= HL_BOLD;
else if (a == ATR_NONE)
disp_attrib = HL_NONE;
else {
@@ -2967,7 +2969,7 @@ parse_condition(char (*s)[QBUFSZ], int sidx)
* bitmasks indexed by the color chosen
* (0 to (CLR_MAX - 1))
* and/or attributes chosen
* (HL_ATTCLR_DIM to (BL_ATTCLR_MAX - 1))
* (HL_ATTCLR_NONE to (BL_ATTCLR_MAX - 1))
* We still have to parse the colors and attributes out.
*/
@@ -2993,34 +2995,31 @@ parse_condition(char (*s)[QBUFSZ], int sidx)
* We have the following additional array offsets to
* use for storing the attributes beyond the end of
* the color indexes, all of which are less than CLR_MAX.
* HL_ATTCLR_DIM = CLR_MAX
* HL_ATTCLR_BLINK = CLR_MAX + 1
* HL_ATTCLR_ULINE = CLR_MAX + 2
* HL_ATTCLR_INVERSE = CLR_MAX + 3
* HL_ATTCLR_BOLD = CLR_MAX + 4
* HL_ATTCLR_MAX = CLR_MAX + 5 (this is past array boundary)
*
*/
for (i = 0; i < sf; ++i) {
int a = match_str2attr(subfields[i], FALSE);
if (a == ATR_DIM)
if (a == ATR_BOLD)
gc.cond_hilites[HL_ATTCLR_BOLD] |= conditions_bitmask;
else if (a == ATR_DIM)
gc.cond_hilites[HL_ATTCLR_DIM] |= conditions_bitmask;
else if (a == ATR_BLINK)
gc.cond_hilites[HL_ATTCLR_BLINK] |= conditions_bitmask;
else if (a == ATR_ITALIC)
gc.cond_hilites[HL_ATTCLR_ITALIC] |= conditions_bitmask;
else if (a == ATR_ULINE)
gc.cond_hilites[HL_ATTCLR_ULINE] |= conditions_bitmask;
else if (a == ATR_BLINK)
gc.cond_hilites[HL_ATTCLR_BLINK] |= conditions_bitmask;
else if (a == ATR_INVERSE)
gc.cond_hilites[HL_ATTCLR_INVERSE] |= conditions_bitmask;
else if (a == ATR_BOLD)
gc.cond_hilites[HL_ATTCLR_BOLD] |= conditions_bitmask;
else if (a == ATR_NONE) {
gc.cond_hilites[HL_ATTCLR_DIM] &= ~conditions_bitmask;
gc.cond_hilites[HL_ATTCLR_BLINK] &= ~conditions_bitmask;
gc.cond_hilites[HL_ATTCLR_ULINE] &= ~conditions_bitmask;
gc.cond_hilites[HL_ATTCLR_INVERSE] &= ~conditions_bitmask;
gc.cond_hilites[HL_ATTCLR_BOLD] &= ~conditions_bitmask;
gc.cond_hilites[HL_ATTCLR_DIM] &= ~conditions_bitmask;
gc.cond_hilites[HL_ATTCLR_ITALIC] &= ~conditions_bitmask;
gc.cond_hilites[HL_ATTCLR_ULINE] &= ~conditions_bitmask;
gc.cond_hilites[HL_ATTCLR_BLINK] &= ~conditions_bitmask;
gc.cond_hilites[HL_ATTCLR_INVERSE] &= ~conditions_bitmask;
} else {
int k = match_str2clr(subfields[i]);
@@ -3075,14 +3074,16 @@ hlattr2attrname(int attrib, char *buf, size_t bufsz)
if (attrib & HL_BOLD)
Strcat(attbuf, first++ ? "+bold" : "bold");
if (attrib & HL_INVERSE)
Strcat(attbuf, first++ ? "+inverse" : "inverse");
if (attrib & HL_DIM)
Strcat(attbuf, first++ ? "+dim" : "dim");
if (attrib & HL_ITALIC)
Strcat(attbuf, first++ ? "+italic" : "italic");
if (attrib & HL_ULINE)
Strcat(attbuf, first++ ? "+underline" : "underline");
if (attrib & HL_BLINK)
Strcat(attbuf, first++ ? "+blink" : "blink");
if (attrib & HL_DIM)
Strcat(attbuf, first++ ? "+dim" : "dim");
if (attrib & HL_INVERSE)
Strcat(attbuf, first++ ? "+inverse" : "inverse");
k = strlen(attbuf);
if (k < (size_t)(bufsz - 1))
@@ -3198,14 +3199,16 @@ status_hilite_linestr_gather_conditions(void)
clr = j;
break;
}
if (gc.cond_hilites[HL_ATTCLR_DIM] & conditions[i].mask)
atr |= HL_DIM;
if (gc.cond_hilites[HL_ATTCLR_BOLD] & conditions[i].mask)
atr |= HL_BOLD;
if (gc.cond_hilites[HL_ATTCLR_BLINK] & conditions[i].mask)
atr |= HL_BLINK;
if (gc.cond_hilites[HL_ATTCLR_DIM] & conditions[i].mask)
atr |= HL_DIM;
if (gc.cond_hilites[HL_ATTCLR_ITALIC] & conditions[i].mask)
atr |= HL_ITALIC;
if (gc.cond_hilites[HL_ATTCLR_ULINE] & conditions[i].mask)
atr |= HL_ULINE;
if (gc.cond_hilites[HL_ATTCLR_BLINK] & conditions[i].mask)
atr |= HL_BLINK;
if (gc.cond_hilites[HL_ATTCLR_INVERSE] & conditions[i].mask)
atr |= HL_INVERSE;
if (atr != HL_NONE)
@@ -3931,22 +3934,25 @@ status_hilite_menu_add(int origfld)
char attrbuf[BUFSZ];
char *tmpattr;
if (atr & HL_DIM)
gc.cond_hilites[HL_ATTCLR_DIM] |= cond;
if (atr & HL_BLINK)
gc.cond_hilites[HL_ATTCLR_BLINK] |= cond;
if (atr & HL_ULINE)
gc.cond_hilites[HL_ATTCLR_ULINE] |= cond;
if (atr & HL_INVERSE)
gc.cond_hilites[HL_ATTCLR_INVERSE] |= cond;
if (atr & HL_BOLD)
gc.cond_hilites[HL_ATTCLR_BOLD] |= cond;
if (atr & HL_DIM)
gc.cond_hilites[HL_ATTCLR_DIM] |= cond;
if (atr & HL_ITALIC)
gc.cond_hilites[HL_ATTCLR_ITALIC] |= cond;
if (atr & HL_ULINE)
gc.cond_hilites[HL_ATTCLR_ULINE] |= cond;
if (atr & HL_BLINK)
gc.cond_hilites[HL_ATTCLR_BLINK] |= cond;
if (atr & HL_INVERSE)
gc.cond_hilites[HL_ATTCLR_INVERSE] |= cond;
if (atr == HL_NONE) {
gc.cond_hilites[HL_ATTCLR_DIM] &= ~cond;
gc.cond_hilites[HL_ATTCLR_BLINK] &= ~cond;
gc.cond_hilites[HL_ATTCLR_ULINE] &= ~cond;
gc.cond_hilites[HL_ATTCLR_INVERSE] &= ~cond;
gc.cond_hilites[HL_ATTCLR_BOLD] &= ~cond;
gc.cond_hilites[HL_ATTCLR_DIM] &= ~cond;
gc.cond_hilites[HL_ATTCLR_ITALIC] &= ~cond;
gc.cond_hilites[HL_ATTCLR_ULINE] &= ~cond;
gc.cond_hilites[HL_ATTCLR_BLINK] &= ~cond;
gc.cond_hilites[HL_ATTCLR_INVERSE] &= ~cond;
}
gc.cond_hilites[clr] |= cond;
(void) strNsubst(strcpy(clrbuf, clr2colorname(clr)), " ", "-", 0);
@@ -3999,10 +4005,11 @@ status_hilite_remove(int id)
for (i = 0; i < CLR_MAX; i++)
gc.cond_hilites[i] &= ~hlstr->mask;
gc.cond_hilites[HL_ATTCLR_DIM] &= ~hlstr->mask;
gc.cond_hilites[HL_ATTCLR_BOLD] &= ~hlstr->mask;
gc.cond_hilites[HL_ATTCLR_BLINK] &= ~hlstr->mask;
gc.cond_hilites[HL_ATTCLR_DIM] &= ~hlstr->mask;
gc.cond_hilites[HL_ATTCLR_ITALIC] &= ~hlstr->mask;
gc.cond_hilites[HL_ATTCLR_ULINE] &= ~hlstr->mask;
gc.cond_hilites[HL_ATTCLR_BLINK] &= ~hlstr->mask;
gc.cond_hilites[HL_ATTCLR_INVERSE] &= ~hlstr->mask;
return TRUE;
} else {

View File

@@ -7476,23 +7476,26 @@ query_attr(const char *prompt, int dflt_attr)
j = picks[i].item.a_int - 1;
if (attrnames[j].attr != ATR_NONE || pick_cnt == 1) {
switch (attrnames[j].attr) {
case ATR_DIM:
k |= HL_DIM;
break;
case ATR_BLINK:
k |= HL_BLINK;
break;
case ATR_ULINE:
k |= HL_ULINE;
break;
case ATR_INVERSE:
k |= HL_INVERSE;
case ATR_NONE:
k = HL_NONE;
break;
case ATR_BOLD:
k |= HL_BOLD;
break;
case ATR_NONE:
k = HL_NONE;
case ATR_DIM:
k |= HL_DIM;
break;
case ATR_ITALIC:
k |= HL_ITALIC;
break;
case ATR_ULINE:
k |= HL_ULINE;
break;
case ATR_BLINK:
k |= HL_BLINK;
break;
case ATR_INVERSE:
k |= HL_INVERSE;
break;
}
}

View File

@@ -1035,11 +1035,12 @@ void js_constants_init() {
SET_CONSTANT("COLORS", CLR_MAX);
// color attributes (?)
SET_CONSTANT("COLOR_ATTR", HL_ATTCLR_DIM);
SET_CONSTANT("COLOR_ATTR", HL_ATTCLR_BLINK);
SET_CONSTANT("COLOR_ATTR", HL_ATTCLR_ULINE);
SET_CONSTANT("COLOR_ATTR", HL_ATTCLR_INVERSE);
SET_CONSTANT("COLOR_ATTR", HL_ATTCLR_BOLD);
SET_CONSTANT("COLOR_ATTR", HL_ATTCLR_DIM);
SET_CONSTANT("COLOR_ATTR", HL_ATTCLR_ITALIC);
SET_CONSTANT("COLOR_ATTR", HL_ATTCLR_ULINE);
SET_CONSTANT("COLOR_ATTR", HL_ATTCLR_BLINK);
SET_CONSTANT("COLOR_ATTR", HL_ATTCLR_INVERSE);
SET_CONSTANT("COLOR_ATTR", BL_ATTCLR_MAX);
}

View File

@@ -220,21 +220,24 @@ condattr(long bm, unsigned long *bmarray)
for (i = HL_ATTCLR_DIM; i < BL_ATTCLR_MAX; ++i) {
if (bmarray[i] && (bm & bmarray[i])) {
switch(i) {
case HL_ATTCLR_BOLD:
attr |= HL_BOLD;
break;
case HL_ATTCLR_DIM:
attr |= HL_DIM;
break;
case HL_ATTCLR_BLINK:
attr |= HL_BLINK;
case HL_ATTCLR_ITALIC:
attr |= HL_ITALIC;
break;
case HL_ATTCLR_ULINE:
attr |= HL_ULINE;
break;
case HL_ATTCLR_BLINK:
attr |= HL_BLINK;
break;
case HL_ATTCLR_INVERSE:
attr |= HL_INVERSE;
break;
case HL_ATTCLR_BOLD:
attr |= HL_BOLD;
break;
}
}
}

View File

@@ -1273,24 +1273,25 @@ condattr(long bm, unsigned long *bmarray)
if (bm && bmarray) {
for (i = HL_ATTCLR_DIM; i < BL_ATTCLR_MAX; ++i) {
if ((bmarray[i] & bm) != 0) {
switch (i) {
switch(i) {
case HL_ATTCLR_BOLD:
attr |= HL_BOLD;
break;
case HL_ATTCLR_DIM:
attr |= HL_DIM;
break;
case HL_ATTCLR_BLINK:
attr |= HL_BLINK;
case HL_ATTCLR_ITALIC:
attr |= HL_ITALIC;
break;
case HL_ATTCLR_ULINE:
attr |= HL_ULINE;
break;
case HL_ATTCLR_BLINK:
attr |= HL_BLINK;
break;
case HL_ATTCLR_INVERSE:
attr |= HL_INVERSE;
break;
case HL_ATTCLR_BOLD:
attr |= HL_BOLD;
break;
default:
break;
}
}
}
@@ -1306,14 +1307,16 @@ nhattr2curses(int attrmask)
if (attrmask & HL_BOLD)
result |= A_BOLD;
if (attrmask & HL_INVERSE)
result |= A_REVERSE;
if (attrmask & HL_DIM)
result |= A_DIM;
if (attrmask & HL_ITALIC)
result |= A_ITALIC;
if (attrmask & HL_ULINE)
result |= A_UNDERLINE;
if (attrmask & HL_BLINK)
result |= A_BLINK;
if (attrmask & HL_DIM)
result |= A_DIM;
if (attrmask & HL_INVERSE)
result |= A_REVERSE;
return result;
}

View File

@@ -4824,21 +4824,24 @@ condattr(long bm, unsigned long *bmarray)
for (i = HL_ATTCLR_DIM; i < BL_ATTCLR_MAX; ++i) {
if ((bm & bmarray[i]) != 0) {
switch (i) {
case HL_ATTCLR_BOLD:
attr |= HL_BOLD;
break;
case HL_ATTCLR_DIM:
attr |= HL_DIM;
break;
case HL_ATTCLR_BLINK:
attr |= HL_BLINK;
case HL_ATTCLR_ITALIC:
attr |= HL_ITALIC;
break;
case HL_ATTCLR_ULINE:
attr |= HL_ULINE;
break;
case HL_ATTCLR_BLINK:
attr |= HL_BLINK;
break;
case HL_ATTCLR_INVERSE:
attr |= HL_INVERSE;
break;
case HL_ATTCLR_BOLD:
attr |= HL_BOLD;
break;
}
}
}
@@ -4851,28 +4854,32 @@ condattr(long bm, unsigned long *bmarray)
if (m) { \
if ((m) & HL_BOLD) \
term_start_attr(ATR_BOLD); \
if ((m) & HL_INVERSE) \
term_start_attr(ATR_INVERSE); \
if ((m) & HL_DIM) \
term_start_attr(ATR_DIM); \
if ((m) & HL_ITALIC) \
term_start_attr(ATR_ITALIC); \
if ((m) & HL_ULINE) \
term_start_attr(ATR_ULINE); \
if ((m) & HL_BLINK) \
term_start_attr(ATR_BLINK); \
if ((m) & HL_DIM) \
term_start_attr(ATR_DIM); \
if ((m) & HL_INVERSE) \
term_start_attr(ATR_INVERSE); \
} \
} while (0)
#define End_Attr(m) \
do { \
if (m) { \
if ((m) & HL_DIM) \
term_end_attr(ATR_DIM); \
if ((m) & HL_INVERSE) \
term_end_attr(ATR_INVERSE); \
if ((m) & HL_BLINK) \
term_end_attr(ATR_BLINK); \
if ((m) & HL_ULINE) \
term_end_attr(ATR_ULINE); \
if ((m) & HL_INVERSE) \
term_end_attr(ATR_INVERSE); \
if ((m) & HL_ITALIC) \
term_end_attr(ATR_ITALIC); \
if ((m) & HL_DIM) \
term_end_attr(ATR_DIM); \
if ((m) & HL_BOLD) \
term_end_attr(ATR_BOLD); \
} \

View File

@@ -3068,11 +3068,12 @@ static int
mswin_condattr(long bm, unsigned long *bmarray)
{
if (bm && bmarray) {
if (bm & bmarray[HL_ATTCLR_DIM]) return HL_DIM;
if (bm & bmarray[HL_ATTCLR_BLINK]) return HL_BLINK;
if (bm & bmarray[HL_ATTCLR_ULINE]) return HL_ULINE;
if (bm & bmarray[HL_ATTCLR_BOLD]) return HL_BOLD;
if (bm & bmarray[HL_ATTCLR_DIM]) return HL_DIM;
if (bm & bmarray[HL_ATTCLR_ITALIC]) return HL_ITALIC;
if (bm & bmarray[HL_ATTCLR_ULINE]) return HL_ULINE;
if (bm & bmarray[HL_ATTCLR_BLINK]) return HL_BLINK;
if (bm & bmarray[HL_ATTCLR_INVERSE]) return HL_INVERSE;
if (bm & bmarray[HL_ATTCLR_BOLD]) return HL_BOLD;
}
return HL_NONE;