no more crash in splitvertical. i think i changed the size of the middle gradient too. it's always 1px now unless the texture is very small, then it can be 0. if theres a discrepency, the bottom color gets the extra pixel.

This commit is contained in:
Dana Jansens 2007-07-11 14:17:34 +00:00
parent e4c0504058
commit 0bfe6c1e52

View file

@ -431,15 +431,24 @@ static void gradient_splitvertical(RrAppearance *a, gint w, gint h)
VARS(y2); VARS(y2);
VARS(y3); VARS(y3);
/* if h <= 5, then a 0 or 1px middle gradient.
y1sz = MAX(h/2 - 1, 1); if h > 5, then always a 1px middle gradient.
/* setup to get the colors _in between_ these other 2 */ */
y2sz = (h < 3 ? 0 : (h % 2 ? 3 : 2)); if (h <= 5) {
y3sz = MAX(h/2 - 1, 0); 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); SETUP(y1, sf->split_primary, sf->primary, y1sz);
if (y2sz) { 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 */ NEXT(y2); /* skip the first one, its the same as the last of y1 */
} }
SETUP(y3, sf->secondary, sf->split_secondary, y3sz); SETUP(y3, sf->secondary, sf->split_secondary, y3sz);