]> Dogcows Code - chaz/openbox/commitdiff
allow users of obrender to change the ellipsize mode of text textures
authorMikael Magnusson <mikachu@comhem.se>
Mon, 4 Jun 2007 23:51:48 +0000 (23:51 +0000)
committerMikael Magnusson <mikachu@comhem.se>
Mon, 4 Jun 2007 23:51:48 +0000 (23:51 +0000)
render/font.c
render/render.h

index 48321aec63a24dd0abd7fef90925850085b2c952..a32bf7ce0a5ae995f3c3bcf567d22917d2c41289 100644 (file)
@@ -109,7 +109,6 @@ RrFont *RrFontOpen(const RrInstance *inst, const gchar *name, gint size,
     /* setup the layout */
     pango_layout_set_font_description(out->layout, out->font_desc);
     pango_layout_set_single_paragraph_mode(out->layout, TRUE);
-    pango_layout_set_ellipsize(out->layout, PANGO_ELLIPSIZE_MIDDLE);
 
     /* get the ascent and descent */
     measure_font(inst, out);
@@ -207,6 +206,7 @@ void RrFontDraw(XftDraw *d, RrTextureText *t, RrRect *area)
     gint mw;
     PangoRectangle rect;
     PangoAttrList *attrlist;
+    PangoEllipsizeMode ell;
 
     /* center the text vertically
        We do this centering based on the 'baseline' since different fonts have
@@ -220,8 +220,24 @@ void RrFontDraw(XftDraw *d, RrTextureText *t, RrRect *area)
     w = area->width - 4;
     h = area->height;
 
+    switch (t->ellipsize) {
+    case RR_ELLIPSIZE_NONE:
+        ell = PANGO_ELLIPSIZE_NONE;
+        break;
+    case RR_ELLIPSIZE_START:
+        ell = PANGO_ELLIPSIZE_START;
+        break;
+    case RR_ELLIPSIZE_MIDDLE:
+        ell = PANGO_ELLIPSIZE_MIDDLE;
+        break;
+    case RR_ELLIPSIZE_END:
+        ell = PANGO_ELLIPSIZE_END;
+        break;
+    }
+
     pango_layout_set_text(t->font->layout, t->string, -1);
     pango_layout_set_width(t->font->layout, w * PANGO_SCALE);
+    pango_layout_set_ellipsize(t->font->layout, ell);
 
     /* * * end of setting up the layout * * */
 
index c13894aab9573f666b1185051cf9ecadcc2cc79e..7a3e596575bfb579e258afaeafe5c87ee6aa0973 100644 (file)
@@ -85,6 +85,14 @@ typedef enum {
     RR_JUSTIFY_RIGHT
 } RrJustify;
 
+/* Put middle first so it's the default */
+typedef enum {
+    RR_ELLIPSIZE_MIDDLE,
+    RR_ELLIPSIZE_NONE,
+    RR_ELLIPSIZE_START,
+    RR_ELLIPSIZE_END
+} RrEllipsizeMode;
+
 typedef enum {
     RR_FONTWEIGHT_LIGHT,
     RR_FONTWEIGHT_NORMAL,
@@ -128,6 +136,7 @@ struct _RrTextureText {
     guchar shadow_alpha;
     gboolean shortcut; /*!< Underline a character */
     guint shortcut_pos; /*!< Position in bytes of the character to underline */
+    RrEllipsizeMode ellipsize;
 };
 
 struct _RrPixmapMask {
This page took 0.027176 seconds and 4 git commands to generate.