X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=render%2Fgradient.c;h=60a0a5556a7157ea08ea63fe2d00594609acb8e4;hb=a92c209fc1845cf3f3acdfa3f9e8f0930fd53eb3;hp=fc75047f3a570b3f266025fb1c30206893bac1bc;hpb=6bda8c29038649f4bd4c54ce011473b1344bb291;p=chaz%2Fopenbox diff --git a/render/gradient.c b/render/gradient.c index fc75047f..60a0a555 100644 --- a/render/gradient.c +++ b/render/gradient.c @@ -41,7 +41,7 @@ void RrRender(RrAppearance *a, gint w, gint h) RrPixel32 *data = a->surface.pixel_data; RrPixel32 current; guint r,g,b; - gint off, x; + register gint off, x; switch (a->surface.grad) { case RR_SURFACE_PARENTREL: @@ -136,7 +136,7 @@ void RrRender(RrAppearance *a, gint w, gint h) static void highlight(RrSurface *s, RrPixel32 *x, RrPixel32 *y, gboolean raised) { - gint r, g, b; + register gint r, g, b; RrPixel32 *up, *down; if (raised) { @@ -171,7 +171,7 @@ static void highlight(RrSurface *s, RrPixel32 *x, RrPixel32 *y, gboolean raised) static void create_bevel_colors(RrAppearance *l) { - gint r, g, b; + register gint r, g, b; /* light color */ r = l->surface.primary->r; @@ -205,7 +205,7 @@ static void create_bevel_colors(RrAppearance *l) */ static inline void repeat_pixel(RrPixel32 *start, gint w) { - gint x; + register gint x; RrPixel32 *dest; dest = start + 1; @@ -268,7 +268,8 @@ static inline void repeat_pixel(RrPixel32 *start, gint w) static void gradient_parentrelative(RrAppearance *a, gint w, gint h) { RrPixel32 *source, *dest; - gint sw, sh, partial_w, partial_h, i; + gint sw, sh, partial_w, partial_h; + register gint i; g_assert (a->surface.parent); g_assert (a->surface.parent->w); @@ -318,7 +319,7 @@ static void gradient_parentrelative(RrAppearance *a, gint w, gint h) static void gradient_solid(RrAppearance *l, gint w, gint h) { - gint i; + register gint i; RrPixel32 pix; RrPixel32 *data = l->surface.pixel_data; RrSurface *sp = &l->surface; @@ -414,9 +415,10 @@ static void gradient_solid(RrAppearance *l, gint w, gint h) /* * * * * * * * * * * * * * GRADIENT MAGIC WOOT * * * * * * * * * * * * * * */ -#define VARS(x) \ - guint color##x[3]; \ - gint len##x, cdelta##x[3], error##x[3] = { 0, 0, 0 }, inc##x[3]; \ +#define VARS(x) \ + register gint len##x; \ + guint color##x[3]; \ + gint cdelta##x[3], error##x[3] = { 0, 0, 0 }, inc##x[3]; \ gboolean bigslope##x[3] /* color slope > 1 */ #define SETUP(x, from, to, w) \ @@ -464,7 +466,7 @@ static void gradient_solid(RrAppearance *l, gint w, gint h) #define NEXT(x) \ { \ - gint i; \ + register gint i; \ for (i = 2; i >= 0; --i) { \ if (!cdelta##x[i]) continue; \ \ @@ -491,10 +493,10 @@ static void gradient_solid(RrAppearance *l, gint w, gint h) static void gradient_splitvertical(RrAppearance *a, gint w, gint h) { - gint y1, y2, y3; + register gint y1, y2, y3; RrSurface *sf = &a->surface; RrPixel32 *data; - gint y1sz, y2sz, y3sz; + register gint y1sz, y2sz, y3sz; VARS(y1); VARS(y2); @@ -505,11 +507,11 @@ static void gradient_splitvertical(RrAppearance *a, gint w, gint h) */ if (h <= 5) { y1sz = MAX(h/2, 0); - y2sz = (h < 3 ? 0 : h % 2); + y2sz = (h < 3) ? 0 : (h & 1); y3sz = MAX(h/2, 1); } else { - y1sz = h/2 - (1 - (h % 2)); + y1sz = h/2 - (1 - (h & 1)); y2sz = 1; y3sz = h/2; } @@ -532,13 +534,15 @@ static void gradient_splitvertical(RrAppearance *a, gint w, gint h) } *data = COLOR(y1); data += w; - for (y2 = y2sz-1; y2 > 0; --y2) { + if (y2sz) { + for (y2 = y2sz-1; y2 > 0; --y2) { + *data = COLOR(y2); + data += w; + NEXT(y2); + } *data = COLOR(y2); data += w; - NEXT(y2); } - *data = COLOR(y2); - data += w; for (y3 = y3sz-1; y3 > 0; --y3) { *data = COLOR(y3); data += w; @@ -556,7 +560,7 @@ static void gradient_splitvertical(RrAppearance *a, gint w, gint h) static void gradient_horizontal(RrSurface *sf, gint w, gint h) { - gint x, y, cpbytes; + register gint x, y, cpbytes; RrPixel32 *data = sf->pixel_data, *datav; gchar *datac; @@ -588,7 +592,7 @@ static void gradient_horizontal(RrSurface *sf, gint w, gint h) static void gradient_mirrorhorizontal(RrSurface *sf, gint w, gint h) { - gint x, y, half1, half2, cpbytes; + register gint x, y, half1, half2, cpbytes; RrPixel32 *data = sf->pixel_data, *datav; gchar *datac; @@ -635,7 +639,7 @@ static void gradient_mirrorhorizontal(RrSurface *sf, gint w, gint h) static void gradient_vertical(RrSurface *sf, gint w, gint h) { - gint y; + register gint y; RrPixel32 *data; VARS(y); @@ -659,10 +663,9 @@ static void gradient_vertical(RrSurface *sf, gint w, gint h) } } - static void gradient_diagonal(RrSurface *sf, gint w, gint h) { - gint x, y; + register gint x, y; RrPixel32 *data = sf->pixel_data; RrColor left, right; RrColor extracorner; @@ -709,7 +712,7 @@ static void gradient_diagonal(RrSurface *sf, gint w, gint h) static void gradient_crossdiagonal(RrSurface *sf, gint w, gint h) { - gint x, y; + register gint x, y; RrPixel32 *data = sf->pixel_data; RrColor left, right; RrColor extracorner; @@ -760,7 +763,7 @@ static void gradient_pyramid(RrSurface *sf, gint w, gint h) RrPixel32 *cp; RrColor left, right; RrColor extracorner; - gint x, y, halfw, halfh, midx, midy; + register gint x, y, halfw, halfh, midx, midy; VARS(lefty); VARS(righty);