[PATCH 1/3] [label] factorize some font init code

Anisse Astier anisse at astier.eu
Thu Sep 2 07:59:36 PDT 2010


---
 src/plugins/controls/label/plugin.c |   40 ++++++++++++++++++++++------------
 1 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/src/plugins/controls/label/plugin.c b/src/plugins/controls/label/plugin.c
index 7babb9e..c9c744e 100644
--- a/src/plugins/controls/label/plugin.c
+++ b/src/plugins/controls/label/plugin.c
@@ -135,6 +135,30 @@ get_cairo_context_for_sizing (ply_label_plugin_control_t *label)
   return cairo_context;
 }
 
+static PangoLayout*
+init_pango_text_layout (cairo_t *cairo_context,
+			char *text,
+			char *font_description)
+{
+  PangoLayout          *pango_layout;
+  PangoFontDescription *description;
+
+  pango_layout = pango_cairo_create_layout (cairo_context);
+
+  if (!font_description)
+    description = pango_font_description_from_string ("Sans 12");
+  else
+    description = pango_font_description_from_string (font_description);
+
+  pango_layout_set_font_description (pango_layout, description);
+  pango_font_description_free (description);
+
+  pango_layout_set_text (pango_layout, text, -1);
+  pango_cairo_update_layout (cairo_context, pango_layout);
+
+  return pango_layout;
+}
+
 static void
 size_control (ply_label_plugin_control_t *label)
 {
@@ -149,14 +173,8 @@ size_control (ply_label_plugin_control_t *label)
 
   cairo_context = get_cairo_context_for_sizing (label);
 
-  pango_layout = pango_cairo_create_layout (cairo_context);
-
-  description = pango_font_description_from_string ("Sans 12");
-  pango_layout_set_font_description (pango_layout, description);
-  pango_font_description_free (description);
+  pango_layout = init_pango_text_layout(cairo_context, label->text, "Sans 12");
 
-  pango_layout_set_text (pango_layout, label->text, -1);
-  pango_cairo_update_layout (cairo_context, pango_layout);
   pango_layout_get_size (pango_layout, &text_width, &text_height);
   label->area.width = (long) ((double) text_width / PANGO_SCALE);
   label->area.height = (long) ((double) text_height / PANGO_SCALE);
@@ -184,14 +202,8 @@ draw_control (ply_label_plugin_control_t *label,
 
   cairo_context = get_cairo_context_for_pixel_buffer (label, pixel_buffer);
 
-  pango_layout = pango_cairo_create_layout (cairo_context);
-
-  description = pango_font_description_from_string ("Sans 12");
-  pango_layout_set_font_description (pango_layout, description);
-  pango_font_description_free (description);
+  pango_layout = init_pango_text_layout(cairo_context, label->text, "Sans 12");
 
-  pango_layout_set_text (pango_layout, label->text, -1);
-  pango_cairo_update_layout (cairo_context, pango_layout);
   pango_layout_get_size (pango_layout, &text_width, &text_height);
   label->area.width = (long) ((double) text_width / PANGO_SCALE);
   label->area.height = (long) ((double) text_height / PANGO_SCALE);
-- 
1.7.0.6



More information about the plymouth mailing list