xC/xP: fix colour values, and render them with CSS
This commit is contained in:
9
xC.c
9
xC.c
@@ -1480,7 +1480,7 @@ struct formatter_item
|
||||
{
|
||||
enum formatter_item_type type : 16; ///< Type of this item
|
||||
int attribute : 16; ///< Attribute ID or a TEXT_* mask
|
||||
int color; ///< Colour
|
||||
int color; ///< Colour ([256 << 16] | 16)
|
||||
char *text; ///< String
|
||||
};
|
||||
|
||||
@@ -3114,6 +3114,9 @@ relay_prepare_buffer_line (struct app_context *ctx, struct buffer *buffer,
|
||||
union relay_item_data *p = e->items = xcalloc (len * 6, sizeof *e->items);
|
||||
for (struct formatter_item *i = line->items; len--; i++)
|
||||
{
|
||||
// XXX: See attr_printer_decode_color(), this is a footgun.
|
||||
int16_t c16 = i->color;
|
||||
int16_t c256 = i->color >> 16;
|
||||
switch (i->type)
|
||||
{
|
||||
case FORMATTER_ITEM_TEXT:
|
||||
@@ -3125,11 +3128,11 @@ relay_prepare_buffer_line (struct app_context *ctx, struct buffer *buffer,
|
||||
(p++)->kind = RELAY_ITEM_RESET;
|
||||
break;
|
||||
case FORMATTER_ITEM_FG_COLOR:
|
||||
p->fg_color.color = i->color;
|
||||
p->fg_color.color = c256 <= 0 ? c16 : c256;
|
||||
(p++)->kind = RELAY_ITEM_FG_COLOR;
|
||||
break;
|
||||
case FORMATTER_ITEM_BG_COLOR:
|
||||
p->bg_color.color = i->color;
|
||||
p->bg_color.color = c256 <= 0 ? c16 : c256;
|
||||
(p++)->kind = RELAY_ITEM_BG_COLOR;
|
||||
break;
|
||||
case FORMATTER_ITEM_SIMPLE:
|
||||
|
||||
Reference in New Issue
Block a user