summaryrefslogtreecommitdiff
path: root/render
diff options
context:
space:
mode:
authorMikael Magnusson <mikachu@comhem.se>2007-06-04 23:51:48 +0000
committerMikael Magnusson <mikachu@comhem.se>2007-06-04 23:51:48 +0000
commitb265acbd45dc5bcad1ebf1c11bb97821cfa4ad90 (patch)
tree5c953803f3ff0347af69ac63c78278ae2798f77c /render
parentf5e08ae50f28be0e5e436613648098de3f4b7a75 (diff)
allow users of obrender to change the ellipsize mode of text textures
Diffstat (limited to 'render')
-rw-r--r--render/font.c18
-rw-r--r--render/render.h9
2 files changed, 26 insertions, 1 deletions
diff --git a/render/font.c b/render/font.c
index 48321aec..a32bf7ce 100644
--- a/render/font.c
+++ b/render/font.c
@@ -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 * * */
diff --git a/render/render.h b/render/render.h
index c13894aa..7a3e5965 100644
--- a/render/render.h
+++ b/render/render.h
@@ -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 {