aboutsummaryrefslogtreecommitdiffstats
path: root/common/pango.c
diff options
context:
space:
mode:
authorLibravatar Simon Ser <contact@emersion.fr>2023-02-28 16:43:05 +0100
committerLibravatar Simon Ser <contact@emersion.fr>2023-04-14 18:34:54 +0200
commit08c1946d71039e583696842c3558b337aede1cbf (patch)
tree3873db2edfb31146bd6cd17dae63f068aef34f05 /common/pango.c
parentcommon/gesture: use format_str() (diff)
downloadsway-08c1946d71039e583696842c3558b337aede1cbf.tar.gz
sway-08c1946d71039e583696842c3558b337aede1cbf.tar.zst
sway-08c1946d71039e583696842c3558b337aede1cbf.zip
Use format_str() throughout
Diffstat (limited to 'common/pango.c')
-rw-r--r--common/pango.c20
1 files changed, 4 insertions, 16 deletions
diff --git a/common/pango.c b/common/pango.c
index e04bf80f..288569b3 100644
--- a/common/pango.c
+++ b/common/pango.c
@@ -84,18 +84,11 @@ void get_text_size(cairo_t *cairo, const PangoFontDescription *desc, int *width,
84 int *baseline, double scale, bool markup, const char *fmt, ...) { 84 int *baseline, double scale, bool markup, const char *fmt, ...) {
85 va_list args; 85 va_list args;
86 va_start(args, fmt); 86 va_start(args, fmt);
87 // Add one since vsnprintf excludes null terminator. 87 char *buf = vformat_str(fmt, args);
88 int length = vsnprintf(NULL, 0, fmt, args) + 1;
89 va_end(args); 88 va_end(args);
90
91 char *buf = malloc(length);
92 if (buf == NULL) { 89 if (buf == NULL) {
93 sway_log(SWAY_ERROR, "Failed to allocate memory");
94 return; 90 return;
95 } 91 }
96 va_start(args, fmt);
97 vsnprintf(buf, length, fmt, args);
98 va_end(args);
99 92
100 PangoLayout *layout = get_pango_layout(cairo, desc, buf, scale, markup); 93 PangoLayout *layout = get_pango_layout(cairo, desc, buf, scale, markup);
101 pango_cairo_update_layout(cairo, layout); 94 pango_cairo_update_layout(cairo, layout);
@@ -104,6 +97,7 @@ void get_text_size(cairo_t *cairo, const PangoFontDescription *desc, int *width,
104 *baseline = pango_layout_get_baseline(layout) / PANGO_SCALE; 97 *baseline = pango_layout_get_baseline(layout) / PANGO_SCALE;
105 } 98 }
106 g_object_unref(layout); 99 g_object_unref(layout);
100
107 free(buf); 101 free(buf);
108} 102}
109 103
@@ -125,18 +119,11 @@ void render_text(cairo_t *cairo, const PangoFontDescription *desc,
125 double scale, bool markup, const char *fmt, ...) { 119 double scale, bool markup, const char *fmt, ...) {
126 va_list args; 120 va_list args;
127 va_start(args, fmt); 121 va_start(args, fmt);
128 // Add one since vsnprintf excludes null terminator. 122 char *buf = vformat_str(fmt, args);
129 int length = vsnprintf(NULL, 0, fmt, args) + 1;
130 va_end(args); 123 va_end(args);
131
132 char *buf = malloc(length);
133 if (buf == NULL) { 124 if (buf == NULL) {
134 sway_log(SWAY_ERROR, "Failed to allocate memory");
135 return; 125 return;
136 } 126 }
137 va_start(args, fmt);
138 vsnprintf(buf, length, fmt, args);
139 va_end(args);
140 127
141 PangoLayout *layout = get_pango_layout(cairo, desc, buf, scale, markup); 128 PangoLayout *layout = get_pango_layout(cairo, desc, buf, scale, markup);
142 cairo_font_options_t *fo = cairo_font_options_create(); 129 cairo_font_options_t *fo = cairo_font_options_create();
@@ -146,5 +133,6 @@ void render_text(cairo_t *cairo, const PangoFontDescription *desc,
146 pango_cairo_update_layout(cairo, layout); 133 pango_cairo_update_layout(cairo, layout);
147 pango_cairo_show_layout(cairo, layout); 134 pango_cairo_show_layout(cairo, layout);
148 g_object_unref(layout); 135 g_object_unref(layout);
136
149 free(buf); 137 free(buf);
150} 138}