- r = sf->primary->r;
- r += r >> 2;
- g = sf->primary->g;
- g += g >> 2;
- b = sf->primary->b;
- b += b >> 2;
- if (r > 0xFF) r = 0xFF;
- if (g > 0xFF) g = 0xFF;
- if (b > 0xFF) b = 0xFF;
- primary_light = RrColorNew(a->inst, r, g, b);
-
- r = sf->secondary->r;
- r += r >> 4;
- g = sf->secondary->g;
- g += g >> 4;
- b = sf->secondary->b;
- b += b >> 4;
- if (r > 0xFF) r = 0xFF;
- if (g > 0xFF) g = 0xFF;
- if (b > 0xFF) b = 0xFF;
- secondary_light = RrColorNew(a->inst, r, g, b);
-
- 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;
+ }