diff options
Diffstat (limited to 'common/pango.c')
-rw-r--r-- | common/pango.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/common/pango.c b/common/pango.c index fc3d0688..abc18281 100644 --- a/common/pango.c +++ b/common/pango.c | |||
@@ -1,4 +1,4 @@ | |||
1 | #include <cairo/cairo.h> | 1 | #include <cairo.h> |
2 | #include <pango/pangocairo.h> | 2 | #include <pango/pangocairo.h> |
3 | #include <stdarg.h> | 3 | #include <stdarg.h> |
4 | #include <stdbool.h> | 4 | #include <stdbool.h> |
@@ -6,7 +6,7 @@ | |||
6 | #include <stdio.h> | 6 | #include <stdio.h> |
7 | #include <stdlib.h> | 7 | #include <stdlib.h> |
8 | #include <string.h> | 8 | #include <string.h> |
9 | #include "cairo.h" | 9 | #include "cairo_util.h" |
10 | #include "log.h" | 10 | #include "log.h" |
11 | #include "stringop.h" | 11 | #include "stringop.h" |
12 | 12 | ||
@@ -109,7 +109,23 @@ void get_text_size(cairo_t *cairo, const char *font, int *width, int *height, | |||
109 | free(buf); | 109 | free(buf); |
110 | } | 110 | } |
111 | 111 | ||
112 | void pango_printf(cairo_t *cairo, const char *font, | 112 | void get_text_metrics(const char *font, int *height, int *baseline) { |
113 | cairo_t *cairo = cairo_create(NULL); | ||
114 | PangoContext *pango = pango_cairo_create_context(cairo); | ||
115 | PangoFontDescription *description = pango_font_description_from_string(font); | ||
116 | // When passing NULL as a language, pango uses the current locale. | ||
117 | PangoFontMetrics *metrics = pango_context_get_metrics(pango, description, NULL); | ||
118 | |||
119 | *baseline = pango_font_metrics_get_ascent(metrics) / PANGO_SCALE; | ||
120 | *height = *baseline + pango_font_metrics_get_descent(metrics) / PANGO_SCALE; | ||
121 | |||
122 | pango_font_metrics_unref(metrics); | ||
123 | pango_font_description_free(description); | ||
124 | g_object_unref(pango); | ||
125 | cairo_destroy(cairo); | ||
126 | } | ||
127 | |||
128 | void render_text(cairo_t *cairo, const char *font, | ||
113 | double scale, bool markup, const char *fmt, ...) { | 129 | double scale, bool markup, const char *fmt, ...) { |
114 | va_list args; | 130 | va_list args; |
115 | va_start(args, fmt); | 131 | va_start(args, fmt); |