Implement set_font_colors.
This paves the way for other font rendering backends. Fonts and colors shouldn't be specified manually from now on.
This commit is contained in:
committed by
Michael Stapelberg
parent
eafc7af606
commit
344c04af12
@ -131,16 +131,15 @@ static int handle_expose(xcb_connection_t *conn, xcb_expose_event_t *event) {
|
||||
xcb_poly_fill_rectangle(conn, pixmap, pixmap_gc, 1, &rect);
|
||||
|
||||
/* restore font color */
|
||||
uint32_t values[3];
|
||||
values[0] = color_text;
|
||||
values[1] = color_background;
|
||||
xcb_change_gc(conn, pixmap_gc, XCB_GC_FOREGROUND | XCB_GC_BACKGROUND, values);
|
||||
draw_text(prompt, strlen(prompt), false, pixmap, pixmap_gc, 4 + 4, 4 + 4);
|
||||
set_font_colors(pixmap_gc, color_text, color_background);
|
||||
draw_text(prompt, strlen(prompt), false, pixmap, pixmap_gc,
|
||||
4 + 4, 4 + 4, rect.width - 4 - 4);
|
||||
|
||||
/* render close button */
|
||||
int line_width = 4;
|
||||
int w = 20;
|
||||
int y = rect.width;
|
||||
uint32_t values[3];
|
||||
values[0] = color_button_background;
|
||||
values[1] = line_width;
|
||||
xcb_change_gc(conn, pixmap_gc, XCB_GC_FOREGROUND | XCB_GC_LINE_WIDTH, values);
|
||||
@ -158,11 +157,10 @@ static int handle_expose(xcb_connection_t *conn, xcb_expose_event_t *event) {
|
||||
};
|
||||
xcb_poly_line(conn, XCB_COORD_MODE_ORIGIN, pixmap, pixmap_gc, 5, points);
|
||||
|
||||
values[0] = color_text;
|
||||
values[1] = color_button_background;
|
||||
values[2] = 1;
|
||||
xcb_change_gc(conn, pixmap_gc, XCB_GC_FOREGROUND | XCB_GC_BACKGROUND | XCB_GC_LINE_WIDTH, values);
|
||||
draw_text("X", 1, false, pixmap, pixmap_gc, y - w - line_width + w / 2 - 4, 4 + 4 - 1);
|
||||
values[0] = 1;
|
||||
set_font_colors(pixmap_gc, color_text, color_button_background);
|
||||
draw_text("X", 1, false, pixmap, pixmap_gc, y - w - line_width + w / 2 - 4,
|
||||
4 + 4 - 1, rect.width - y + w + line_width - w / 2 + 4);
|
||||
y -= w;
|
||||
|
||||
y -= 20;
|
||||
@ -191,9 +189,9 @@ static int handle_expose(xcb_connection_t *conn, xcb_expose_event_t *event) {
|
||||
|
||||
values[0] = color_text;
|
||||
values[1] = color_button_background;
|
||||
xcb_change_gc(conn, pixmap_gc, XCB_GC_FOREGROUND | XCB_GC_BACKGROUND, values);
|
||||
set_font_colors(pixmap_gc, color_text, color_button_background);
|
||||
draw_text(buttons[c].label, strlen(buttons[c].label), false, pixmap, pixmap_gc,
|
||||
y - w - line_width + 6, 4 + 3);
|
||||
y - w - line_width + 6, 4 + 3, rect.width - y + w + line_width - 6);
|
||||
|
||||
y -= w;
|
||||
}
|
||||
@ -386,9 +384,6 @@ int main(int argc, char *argv[]) {
|
||||
xcb_create_pixmap(conn, root_screen->root_depth, pixmap, win, 500, font.height + 8);
|
||||
xcb_create_gc(conn, pixmap_gc, pixmap, 0, 0);
|
||||
|
||||
/* Create graphics context */
|
||||
xcb_change_gc(conn, pixmap_gc, XCB_GC_FONT, (uint32_t[]){ font.id });
|
||||
|
||||
/* Grab the keyboard to get all input */
|
||||
xcb_flush(conn);
|
||||
|
||||
@ -430,9 +425,6 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
xcb_create_pixmap(conn, root_screen->root_depth, pixmap, win, rect.width, rect.height);
|
||||
xcb_create_gc(conn, pixmap_gc, pixmap, 0, 0);
|
||||
|
||||
/* Create graphics context */
|
||||
xcb_change_gc(conn, pixmap_gc, XCB_GC_FONT, (uint32_t[]){ font.id });
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user