Align titles to baseline

This does the following:

* Adds a baseline argument to get_text_size (the baseline is the
distance from the top of the texture to the baseline).
* Stores the baseline in the container when calculating the title
height.
* Takes the baseline into account when calculating the config's max font
height.
* When rendering, pads the textures according to the baseline so they
line up.
This commit is contained in:
Ryan Dwyer 2018-09-08 16:19:31 +10:00
parent 9226aad58c
commit 9215ca0f01
11 changed files with 49 additions and 32 deletions

View file

@ -20,7 +20,7 @@ int escape_markup_text(const char *src, char *dest, int dest_length);
PangoLayout *get_pango_layout(cairo_t *cairo, const char *font,
const char *text, double scale, bool markup);
void get_text_size(cairo_t *cairo, const char *font, int *width, int *height,
double scale, bool markup, const char *fmt, ...);
int *baseline, double scale, bool markup, const char *fmt, ...);
void pango_printf(cairo_t *cairo, const char *font,
double scale, bool markup, const char *fmt, ...);

View file

@ -349,6 +349,7 @@ struct sway_config {
enum sway_container_layout default_layout;
char *font;
size_t font_height;
size_t font_baseline;
bool pango_markup;
size_t urgent_timeout;
enum sway_fowa focus_on_window_activation;

View file

@ -117,6 +117,7 @@ struct sway_container {
struct wlr_texture *title_unfocused;
struct wlr_texture *title_urgent;
size_t title_height;
size_t title_baseline;
struct {
struct wl_signal destroy;