From 9215ca0f01f7d155191d11fd9caa2574387c6f84 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 8 Sep 2018 16:19:31 +1000 Subject: 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. --- common/pango.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'common/pango.c') diff --git a/common/pango.c b/common/pango.c index 92703f80..ea71ac4a 100644 --- a/common/pango.c +++ b/common/pango.c @@ -103,7 +103,7 @@ PangoLayout *get_pango_layout(cairo_t *cairo, const char *font, } 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, ...) { static char buf[2048]; va_list args; @@ -116,6 +116,9 @@ void get_text_size(cairo_t *cairo, const char *font, int *width, int *height, PangoLayout *layout = get_pango_layout(cairo, font, buf, scale, markup); pango_cairo_update_layout(cairo, layout); pango_layout_get_pixel_size(layout, width, height); + if (baseline) { + *baseline = pango_layout_get_baseline(layout) / PANGO_SCALE; + } g_object_unref(layout); } -- cgit v1.2.3-54-g00ecf