summaryrefslogtreecommitdiff
path: root/render/render.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2008-02-06 22:12:54 -0500
committerDana Jansens <danakj@orodu.net>2008-02-14 14:24:07 -0500
commit7867ced6222e1edb9624bd25122a11b808164041 (patch)
treec8a7997e0e86f936bf0d0e67f448ee11369c6ecc /render/render.c
parentc313b219a226c3b968ff312b96120eef0c527d91 (diff)
allow font rendering to use multiple lines
Diffstat (limited to 'render/render.c')
-rw-r--r--render/render.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/render/render.c b/render/render.c
index 2147df01..75dead16 100644
--- a/render/render.c
+++ b/render/render.c
@@ -180,8 +180,6 @@ RrAppearance *RrAppearanceNew(const RrInstance *inst, gint numtex)
void RrAppearanceRemoveTextures(RrAppearance *a)
{
- gint i;
-
g_free(a->texture);
a->textures = 0;
}
@@ -387,6 +385,7 @@ gint RrMinWidth(RrAppearance *a)
a->texture[i].data.text.string,
a->texture[i].data.text.shadow_offset_x,
a->texture[i].data.text.shadow_offset_y,
+ a->texture[i].data.text.flow,
a->texture[i].data.text.maxwidth);
w = MAX(w, m->width);
g_free(m);
@@ -413,6 +412,7 @@ gint RrMinHeight(RrAppearance *a)
{
gint i;
gint l, t, r, b;
+ RrSize *m;
gint h = 0;
for (i = 0; i < a->textures; ++i) {
@@ -423,8 +423,24 @@ gint RrMinHeight(RrAppearance *a)
h = MAX(h, a->texture[i].data.mask.mask->height);
break;
case RR_TEXTURE_TEXT:
- h += MAX(h, RrFontHeight(a->texture[i].data.text.font,
- a->texture[i].data.text.shadow_offset_y));
+ if (a->texture[i].data.text.flow) {
+ g_assert(a->texture[i].data.text.string != NULL);
+
+ m = RrFontMeasureString
+ (a->texture[i].data.text.font,
+ a->texture[i].data.text.string,
+ a->texture[i].data.text.shadow_offset_x,
+ a->texture[i].data.text.shadow_offset_y,
+ a->texture[i].data.text.flow,
+ a->texture[i].data.text.maxwidth);
+ h += MAX(h, m->height);
+ g_free(m);
+ }
+ else
+ h += MAX(h,
+ RrFontHeight
+ (a->texture[i].data.text.font,
+ a->texture[i].data.text.shadow_offset_y));
break;
case RR_TEXTURE_RGBA:
h += MAX(h, a->texture[i].data.rgba.height);