diff options
author | Drew DeVault <sir@cmpwn.com> | 2016-04-17 11:35:22 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2016-04-17 11:36:03 -0400 |
commit | 84fae94ab9ca7fd148c786d224c49205a212882e (patch) | |
tree | d3d3e8a16f96e400ee07cc44e2f9110195bea02a /wayland | |
parent | Merge pull request #590 from mikkeloscar/i686-warnings (diff) | |
download | sway-84fae94ab9ca7fd148c786d224c49205a212882e.tar.gz sway-84fae94ab9ca7fd148c786d224c49205a212882e.tar.zst sway-84fae94ab9ca7fd148c786d224c49205a212882e.zip |
Flesh out pango markup implementation
Diffstat (limited to 'wayland')
-rw-r--r-- | wayland/pango.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/wayland/pango.c b/wayland/pango.c index da0b0bfc..f143aa6c 100644 --- a/wayland/pango.c +++ b/wayland/pango.c | |||
@@ -4,11 +4,16 @@ | |||
4 | #include <stdlib.h> | 4 | #include <stdlib.h> |
5 | #include <string.h> | 5 | #include <string.h> |
6 | #include <stdio.h> | 6 | #include <stdio.h> |
7 | #include <stdbool.h> | ||
7 | #include "log.h" | 8 | #include "log.h" |
8 | 9 | ||
9 | PangoLayout *get_pango_layout(cairo_t *cairo, const char *font, const char *text) { | 10 | PangoLayout *get_pango_layout(cairo_t *cairo, const char *font, const char *text, bool markup) { |
10 | PangoLayout *layout = pango_cairo_create_layout(cairo); | 11 | PangoLayout *layout = pango_cairo_create_layout(cairo); |
11 | pango_layout_set_markup(layout, text, -1); | 12 | if (markup) { |
13 | pango_layout_set_markup(layout, text, -1); | ||
14 | } else { | ||
15 | pango_layout_set_text(layout, text, -1); | ||
16 | } | ||
12 | PangoFontDescription *desc = pango_font_description_from_string(font); | 17 | PangoFontDescription *desc = pango_font_description_from_string(font); |
13 | pango_layout_set_font_description(layout, desc); | 18 | pango_layout_set_font_description(layout, desc); |
14 | pango_layout_set_single_paragraph_mode(layout, 1); | 19 | pango_layout_set_single_paragraph_mode(layout, 1); |
@@ -16,7 +21,8 @@ PangoLayout *get_pango_layout(cairo_t *cairo, const char *font, const char *text | |||
16 | return layout; | 21 | return layout; |
17 | } | 22 | } |
18 | 23 | ||
19 | void get_text_size(cairo_t *cairo, const char *font, int *width, int *height, const char *fmt, ...) { | 24 | void get_text_size(cairo_t *cairo, const char *font, int *width, int *height, |
25 | bool markup, const char *fmt, ...) { | ||
20 | char *buf = malloc(2048); | 26 | char *buf = malloc(2048); |
21 | 27 | ||
22 | va_list args; | 28 | va_list args; |
@@ -26,7 +32,7 @@ void get_text_size(cairo_t *cairo, const char *font, int *width, int *height, co | |||
26 | } | 32 | } |
27 | va_end(args); | 33 | va_end(args); |
28 | 34 | ||
29 | PangoLayout *layout = get_pango_layout(cairo, font, buf); | 35 | PangoLayout *layout = get_pango_layout(cairo, font, buf, markup); |
30 | pango_cairo_update_layout(cairo, layout); | 36 | pango_cairo_update_layout(cairo, layout); |
31 | 37 | ||
32 | pango_layout_get_pixel_size(layout, width, height); | 38 | pango_layout_get_pixel_size(layout, width, height); |
@@ -36,7 +42,7 @@ void get_text_size(cairo_t *cairo, const char *font, int *width, int *height, co | |||
36 | free(buf); | 42 | free(buf); |
37 | } | 43 | } |
38 | 44 | ||
39 | void pango_printf(cairo_t *cairo, const char *font, const char *fmt, ...) { | 45 | void pango_printf(cairo_t *cairo, const char *font, bool markup, const char *fmt, ...) { |
40 | char *buf = malloc(2048); | 46 | char *buf = malloc(2048); |
41 | 47 | ||
42 | va_list args; | 48 | va_list args; |
@@ -46,7 +52,7 @@ void pango_printf(cairo_t *cairo, const char *font, const char *fmt, ...) { | |||
46 | } | 52 | } |
47 | va_end(args); | 53 | va_end(args); |
48 | 54 | ||
49 | PangoLayout *layout = get_pango_layout(cairo, font, buf); | 55 | PangoLayout *layout = get_pango_layout(cairo, font, buf, markup); |
50 | pango_cairo_update_layout(cairo, layout); | 56 | pango_cairo_update_layout(cairo, layout); |
51 | 57 | ||
52 | pango_cairo_show_layout(cairo, layout); | 58 | pango_cairo_show_layout(cairo, layout); |