mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-07 04:06:07 -05:00
rgba: drop alpha channel support
This commit is contained in:
parent
69e7744e5d
commit
1e2a7e77f0
4 changed files with 43 additions and 53 deletions
50
csi.c
50
csi.c
|
|
@ -16,29 +16,29 @@
|
|||
|
||||
#define min(x, y) ((x) < (y) ? (x) : (y))
|
||||
|
||||
static const struct rgba colors_regular[] = {
|
||||
{0.000000, 0.000000, 0.000000, 1.000000}, /* 0x000000ff */
|
||||
{0.800000, 0.576471, 0.576471, 1.000000}, /* 0xcc9393ff */
|
||||
{0.498039, 0.623529, 0.498039, 1.000000}, /* 0x7f9f7fff */
|
||||
{0.815686, 0.749020, 0.560784, 1.000000}, /* 0xd0bf8fff */
|
||||
{0.423529, 0.627451, 0.639216, 1.000000}, /* 0x6ca0a3ff */
|
||||
{0.862745, 0.549020, 0.764706, 1.000000}, /* 0xdc8cc3ff */
|
||||
{0.576471, 0.878431, 0.890196, 1.000000}, /* 0x93e0e3ff */
|
||||
{0.862745, 0.862745, 0.800000, 1.000000}, /* 0xdcdcccff */
|
||||
static const struct rgb colors_regular[] = {
|
||||
{0.000000, 0.000000, 0.000000}, /* 0x000000 */
|
||||
{0.800000, 0.576471, 0.576471}, /* 0xcc9393 */
|
||||
{0.498039, 0.623529, 0.498039}, /* 0x7f9f7f */
|
||||
{0.815686, 0.749020, 0.560784}, /* 0xd0bf8f */
|
||||
{0.423529, 0.627451, 0.639216}, /* 0x6ca0a3 */
|
||||
{0.862745, 0.549020, 0.764706}, /* 0xdc8cc3 */
|
||||
{0.576471, 0.878431, 0.890196}, /* 0x93e0e3 */
|
||||
{0.862745, 0.862745, 0.800000}, /* 0xdcdccc */
|
||||
};
|
||||
|
||||
static const struct rgba colors_bright[] = {
|
||||
{0.000000, 0.000000, 0.000000, 1.000000}, /* 0x000000ff */
|
||||
{0.862745, 0.639216, 0.639216, 1.000000}, /* 0xdca3a3ff */
|
||||
{0.749020, 0.921569, 0.749020, 1.000000}, /* 0xbfebbfff */
|
||||
{0.941176, 0.874510, 0.686275, 1.000000}, /* 0xf0dfafff */
|
||||
{0.549020, 0.815686, 0.827451, 1.000000}, /* 0x8cd0d3ff */
|
||||
{0.862745, 0.549020, 0.764706, 1.000000}, /* 0xdc8cc3ff */
|
||||
{0.576471, 0.878431, 0.890196, 1.000000}, /* 0x93e0e3ff */
|
||||
{1.000000, 1.000000, 1.000000, 1.000000}, /* 0xffffffff */
|
||||
static const struct rgb colors_bright[] = {
|
||||
{0.000000, 0.000000, 0.000000}, /* 0x000000 */
|
||||
{0.862745, 0.639216, 0.639216}, /* 0xdca3a3 */
|
||||
{0.749020, 0.921569, 0.749020}, /* 0xbfebbf */
|
||||
{0.941176, 0.874510, 0.686275}, /* 0xf0dfaf */
|
||||
{0.549020, 0.815686, 0.827451}, /* 0x8cd0d3 */
|
||||
{0.862745, 0.549020, 0.764706}, /* 0xdc8cc3 */
|
||||
{0.576471, 0.878431, 0.890196}, /* 0x93e0e3 */
|
||||
{1.000000, 1.000000, 1.000000}, /* 0xffffff */
|
||||
};
|
||||
|
||||
static struct rgba colors256[256];
|
||||
static struct rgb colors256[256];
|
||||
|
||||
static void __attribute__((constructor))
|
||||
initialize_colors256(void)
|
||||
|
|
@ -51,22 +51,20 @@ initialize_colors256(void)
|
|||
for (size_t r = 0; r < 6; r++) {
|
||||
for (size_t g = 0; g < 6; g++) {
|
||||
for (size_t b = 0; b < 6; b++) {
|
||||
colors256[16 + r * 6 * 6 + g * 6 + b] = (struct rgba) {
|
||||
colors256[16 + r * 6 * 6 + g * 6 + b] = (struct rgb) {
|
||||
r * 51 / 255.0,
|
||||
g * 51 / 255.0,
|
||||
b * 51 / 255.0,
|
||||
1.0,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < 24; i++){
|
||||
colors256[232 + i] = (struct rgba) {
|
||||
colors256[232 + i] = (struct rgb) {
|
||||
i * 11 / 255.0,
|
||||
i * 11 / 255.0,
|
||||
i * 11 / 255.0,
|
||||
1.0
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -152,11 +150,10 @@ csi_sgr(struct terminal *term)
|
|||
uint8_t r = term->vt.params.v[i + 2].value;
|
||||
uint8_t g = term->vt.params.v[i + 3].value;
|
||||
uint8_t b = term->vt.params.v[i + 4].value;
|
||||
term->vt.attrs.foreground = (struct rgba) {
|
||||
term->vt.attrs.foreground = (struct rgb) {
|
||||
r / 255.0,
|
||||
g / 255.0,
|
||||
b / 255.0,
|
||||
1.0,
|
||||
};
|
||||
term->vt.attrs.have_foreground = true;
|
||||
i += 4;
|
||||
|
|
@ -199,11 +196,10 @@ csi_sgr(struct terminal *term)
|
|||
uint8_t r = term->vt.params.v[i + 2].value;
|
||||
uint8_t g = term->vt.params.v[i + 3].value;
|
||||
uint8_t b = term->vt.params.v[i + 4].value;
|
||||
term->vt.attrs.background = (struct rgba) {
|
||||
term->vt.attrs.background = (struct rgb) {
|
||||
r / 255.0,
|
||||
g / 255.0,
|
||||
b / 255.0,
|
||||
1.0
|
||||
};
|
||||
term->vt.attrs.have_background = true;
|
||||
i += 4;
|
||||
|
|
|
|||
4
main.c
4
main.c
|
|
@ -32,8 +32,8 @@
|
|||
#define min(x, y) ((x) < (y) ? (x) : (y))
|
||||
#define max(x, y) ((x) > (y) ? (x) : (y))
|
||||
|
||||
static const struct rgba default_foreground = {0.86, 0.86, 0.86, 1.0};
|
||||
static const struct rgba default_background = {0.067, 0.067, 0.067, 1.0};
|
||||
static const struct rgb default_foreground = {0.86, 0.86, 0.86};
|
||||
static const struct rgb default_background = {0.067, 0.067, 0.067};
|
||||
|
||||
static void
|
||||
shm_format(void *data, struct wl_shm *wl_shm, uint32_t format)
|
||||
|
|
|
|||
32
render.c
32
render.c
|
|
@ -28,7 +28,7 @@ struct glyph_sequence {
|
|||
int count;
|
||||
|
||||
struct attributes attrs;
|
||||
struct rgba foreground;
|
||||
struct rgb foreground;
|
||||
};
|
||||
|
||||
static struct glyph_sequence gseq;
|
||||
|
|
@ -47,28 +47,22 @@ render_cell(struct terminal *term, struct buffer *buf, const struct cell *cell,
|
|||
double x = col * width;
|
||||
double y = row * height;
|
||||
|
||||
const struct rgba *foreground = cell->attrs.have_foreground
|
||||
const struct rgb *foreground = cell->attrs.have_foreground
|
||||
? &cell->attrs.foreground
|
||||
: !term->reverse ? &term->foreground : &term->background;
|
||||
const struct rgba *background = cell->attrs.have_background
|
||||
const struct rgb *background = cell->attrs.have_background
|
||||
? &cell->attrs.background
|
||||
: !term->reverse ? &term->background : &term->foreground;
|
||||
|
||||
if (has_cursor) {
|
||||
const struct rgba *swap = foreground;
|
||||
foreground = background;
|
||||
background = swap;
|
||||
}
|
||||
|
||||
if (cell->attrs.reverse) {
|
||||
const struct rgba *swap = foreground;
|
||||
/* If *one* is set, we reverse */
|
||||
if (has_cursor != cell->attrs.reverse) {
|
||||
const struct rgb *swap = foreground;
|
||||
foreground = background;
|
||||
background = swap;
|
||||
}
|
||||
|
||||
/* Background */
|
||||
cairo_set_source_rgba(
|
||||
buf->cairo, background->r, background->g, background->b, background->a);
|
||||
cairo_set_source_rgb(buf->cairo, background->r, background->g, background->b);
|
||||
cairo_rectangle(buf->cairo, x, y, width, height);
|
||||
cairo_fill(buf->cairo);
|
||||
|
||||
|
|
@ -95,9 +89,9 @@ render_cell(struct terminal *term, struct buffer *buf, const struct cell *cell,
|
|||
LOG_WARN("hit glyph limit");
|
||||
|
||||
cairo_set_scaled_font(buf->cairo, attrs_to_font(term, &gseq.attrs));
|
||||
cairo_set_source_rgba(
|
||||
cairo_set_source_rgb(
|
||||
buf->cairo, gseq.foreground.r, gseq.foreground.g,
|
||||
gseq.foreground.b, gseq.foreground.a);
|
||||
gseq.foreground.b);
|
||||
|
||||
cairo_show_glyphs(buf->cairo, gseq.glyphs, gseq.count);
|
||||
|
||||
|
|
@ -469,9 +463,9 @@ grid_render(struct terminal *term)
|
|||
int rmargin_width = term->width - rmargin;
|
||||
int bmargin_height = term->height - bmargin;
|
||||
|
||||
const struct rgba *bg = !term->reverse ?
|
||||
const struct rgb *bg = !term->reverse ?
|
||||
&term->background : &term->foreground;
|
||||
cairo_set_source_rgba(buf->cairo, bg->r, bg->g, bg->b, bg->a);
|
||||
cairo_set_source_rgb(buf->cairo, bg->r, bg->g, bg->b);
|
||||
|
||||
cairo_rectangle(buf->cairo, rmargin, 0, rmargin_width, term->height);
|
||||
cairo_rectangle(buf->cairo, 0, bmargin, term->width, bmargin_height);
|
||||
|
|
@ -599,9 +593,9 @@ grid_render(struct terminal *term)
|
|||
|
||||
if (gseq.count > 0) {
|
||||
cairo_set_scaled_font(buf->cairo, attrs_to_font(term, &gseq.attrs));
|
||||
cairo_set_source_rgba(
|
||||
cairo_set_source_rgb(
|
||||
buf->cairo, gseq.foreground.r, gseq.foreground.g,
|
||||
gseq.foreground.b, gseq.foreground.a);
|
||||
gseq.foreground.b);
|
||||
cairo_show_glyphs(buf->cairo, gseq.glyphs, gseq.count);
|
||||
}
|
||||
|
||||
|
|
|
|||
10
terminal.h
10
terminal.h
|
|
@ -36,7 +36,7 @@ struct wayland {
|
|||
struct xdg_toplevel *xdg_toplevel;
|
||||
};
|
||||
|
||||
struct rgba { double r, g, b, a; } __attribute__((packed));
|
||||
struct rgb { double r, g, b; } __attribute__((packed));
|
||||
|
||||
struct attributes {
|
||||
#if 0
|
||||
|
|
@ -60,8 +60,8 @@ struct attributes {
|
|||
uint8_t have_foreground:1;
|
||||
uint8_t have_background:1;
|
||||
#endif
|
||||
struct rgba foreground; /* Only valid when have_foreground == true */
|
||||
struct rgba background; /* Only valid when have_background == true */
|
||||
struct rgb foreground; /* Only valid when have_foreground == true */
|
||||
struct rgb background; /* Only valid when have_background == true */
|
||||
} __attribute__((packed));
|
||||
|
||||
struct cell {
|
||||
|
|
@ -231,8 +231,8 @@ struct terminal {
|
|||
bool print_needs_wrap;
|
||||
struct scroll_region scroll_region;
|
||||
|
||||
struct rgba foreground;
|
||||
struct rgba background;
|
||||
struct rgb foreground;
|
||||
struct rgb background;
|
||||
|
||||
struct {
|
||||
int col;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue