]> Dogcows Code - chaz/openbox/blobdiff - render/gradient.c
80 cols everywhere
[chaz/openbox] / render / gradient.c
index 41514ac43296bac8ce059e1034cadf0aa35e4fb5..e4bfc5404b9a764195458719faff74243c2c4e27 100644 (file)
@@ -23,7 +23,8 @@
 #include "color.h"
 #include <glib.h>
 
-static void highlight(RrSurface *s, RrPixel32 *x, RrPixel32 *y, gboolean raised);
+static void highlight(RrSurface *s, RrPixel32 *x, RrPixel32 *y,
+                      gboolean raised);
 static void gradient_parentrelative(RrAppearance *a, gint w, gint h);
 static void gradient_solid(RrAppearance *l, gint w, gint h);
 static void gradient_splitvertical(RrAppearance *a, gint w, gint h);
@@ -431,15 +432,24 @@ static void gradient_splitvertical(RrAppearance *a, gint w, gint h)
     VARS(y2);
     VARS(y3);
 
-
-    y1sz = MAX(h/2 - 1, 1);
-    /* setup to get the colors _in between_ these other 2 */
-    y2sz = (h < 3 ? 0 : (h % 2 ? 3 : 2));
-    y3sz = MAX(h/2 - 1, 0);
+    /* if h <= 5, then a 0 or 1px middle gradient.
+       if h > 5, then always a 1px middle gradient.
+    */
+    if (h <= 5) {
+        y1sz = MAX(h/2, 0);
+        y2sz = (h < 3 ? 0 : h % 2);
+        y3sz = MAX(h/2, 1);
+    }
+    else {
+        y1sz = h/2 - (1 - (h % 2));
+        y2sz = 1;
+        y3sz = h/2;
+    }
 
     SETUP(y1, sf->split_primary, sf->primary, y1sz);
     if (y2sz) {
-        SETUP(y2, sf->primary, sf->secondary, y2sz);
+        /* setup to get the colors _in between_ these other 2 */
+        SETUP(y2, sf->primary, sf->secondary, y2sz + 2);
         NEXT(y2); /* skip the first one, its the same as the last of y1 */
     }
     SETUP(y3, sf->secondary, sf->split_secondary,  y3sz);
This page took 0.020681 seconds and 4 git commands to generate.