fix min-size calculations for lineart textures
authorDana Jansens <danakj@orodu.net>
Thu, 14 Feb 2008 17:31:51 +0000 (12:31 -0500)
committerDana Jansens <danakj@orodu.net>
Thu, 14 Feb 2008 19:24:37 +0000 (14:24 -0500)
render/render.c

index 75dead1..2813dda 100644 (file)
@@ -373,6 +373,8 @@ gint RrMinWidth(RrAppearance *a)
     gint l, t, r, b;
     gint w = 0;
 
+    RrMargins(a, &l, &t, &r, &b);
+
     for (i = 0; i < a->textures; ++i) {
         switch (a->texture[i].type) {
         case RR_TEXTURE_NONE:
@@ -394,14 +396,12 @@ gint RrMinWidth(RrAppearance *a)
             w += MAX(w, a->texture[i].data.rgba.width);
             break;
         case RR_TEXTURE_LINE_ART:
-            w += MAX(w, MAX(a->texture[i].data.lineart.x1,
-                            a->texture[i].data.lineart.x2));
+            w = MAX(w, MAX(a->texture[i].data.lineart.x1 - l - r,
+                           a->texture[i].data.lineart.x2 - l - r));
             break;
         }
     }
 
-    RrMargins(a, &l, &t, &r, &b);
-
     w += l + r;
 
     if (w < 1) w = 1;
@@ -415,6 +415,8 @@ gint RrMinHeight(RrAppearance *a)
     RrSize *m;
     gint h = 0;
 
+    RrMargins(a, &l, &t, &r, &b);
+
     for (i = 0; i < a->textures; ++i) {
         switch (a->texture[i].type) {
         case RR_TEXTURE_NONE:
@@ -446,14 +448,12 @@ gint RrMinHeight(RrAppearance *a)
             h += MAX(h, a->texture[i].data.rgba.height);
             break;
         case RR_TEXTURE_LINE_ART:
-            h += MAX(h, MAX(a->texture[i].data.lineart.y1,
-                            a->texture[i].data.lineart.y2));
+            h = MAX(h, MAX(a->texture[i].data.lineart.y1 - t - b,
+                           a->texture[i].data.lineart.y2 - t - b));
             break;
         }
     }
 
-    RrMargins(a, &l, &t, &r, &b);
-
     h += t + b;
 
     if (h < 1) h = 1;