diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-07-11 14:17:34 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-07-11 14:17:34 +0000 |
| commit | 0bfe6c1e5242d27df3b5063fb873fa1d3b0c283d (patch) | |
| tree | 8ffebed5817c93cf730348ca99419a7b2bc76a4f /render | |
| parent | e4c0504058024ae7450d287a5726186c1bfb5444 (diff) | |
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.
Diffstat (limited to 'render')
| -rw-r--r-- | render/gradient.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/render/gradient.c b/render/gradient.c index 41514ac4..4cd3c18f 100644 --- a/render/gradient.c +++ b/render/gradient.c @@ -431,15 +431,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); |
