]> Dogcows Code - chaz/openbox/blobdiff - render/gradient.c
add an obscured flag that tracks if the frame is at all obscured
[chaz/openbox] / render / gradient.c
index a819a4bee9e988b859155ad73f94951b94a06422..55a2fd27238c3d07ddc25a0a1976e04bdc37b672 100644 (file)
@@ -13,7 +13,7 @@ static void gradient_pyramid(RrSurface *sf, int inw, int inh);
 
 void RrRender(RrAppearance *a, int w, int h)
 {
-    RrPixel32 *data = a->surface.RrPixel_data;
+    RrPixel32 *data = a->surface.pixel_data;
     RrPixel32 current;
     unsigned int r,g,b;
     int off, x;
@@ -21,7 +21,7 @@ void RrRender(RrAppearance *a, int w, int h)
     switch (a->surface.grad) {
     case RR_SURFACE_SOLID:
         gradient_solid(a, w, h);
-        return;
+        break;
     case RR_SURFACE_VERTICAL:
         gradient_vertical(&a->surface, w, h);
         break;
@@ -38,7 +38,7 @@ void RrRender(RrAppearance *a, int w, int h)
         gradient_pyramid(&a->surface, w, h);
         break;
     default:
-        g_message("unhandled gradient");
+        g_assert_not_reached(); /* unhandled gradient */
         return;
     }
   
@@ -163,7 +163,7 @@ static void gradient_solid(RrAppearance *l, int w, int h)
 
     for (a = 0; a < w; a++)
         for (b = 0; b < h; b++)
-            sp->RrPixel_data[a + b * w] = pix;
+            sp->pixel_data[a + b * w] = pix;
 
     XFillRectangle(RrDisplay(l->inst), l->pixmap, sp->primary->gc,
                    0, 0, w, h);
@@ -304,6 +304,9 @@ static void gradient_solid(RrAppearance *l, int w, int h)
      (color##x[1] << RrDefaultGreenOffset) + \
      (color##x[2] << RrDefaultBlueOffset))
 
+#define INCREMENT(x, i) \
+    (inc##x[i])
+
 #define NEXT(x)                                           \
 {                                                         \
     int i;                                                \
@@ -314,13 +317,13 @@ static void gradient_solid(RrAppearance *l, int w, int h)
             /* Y (color) is dependant on X */             \
             error##x[i] += cdelta##x[i];                  \
             if ((error##x[i] << 1) >= len##x) {           \
-                color##x[i] += inc##x[i];                 \
+                color##x[i] += INCREMENT(x, i);           \
                 error##x[i] -= len##x;                    \
             }                                             \
         } else {                                          \
             /* X is dependant on Y (color) */             \
             while (1) {                                   \
-                color##x[i] += inc##x[i];                 \
+                color##x[i] += INCREMENT(x, i);           \
                 error##x[i] += len##x;                    \
                 if ((error##x[i] << 1) >= cdelta##x[i]) { \
                     error##x[i] -= cdelta##x[i];          \
@@ -334,7 +337,7 @@ static void gradient_solid(RrAppearance *l, int w, int h)
 static void gradient_horizontal(RrSurface *sf, int w, int h)
 {
     int x, y;
-    RrPixel32 *data = sf->RrPixel_data, *datav;
+    RrPixel32 *data = sf->pixel_data, *datav;
     RrPixel32 current;
 
     VARS(x);
@@ -359,7 +362,7 @@ static void gradient_horizontal(RrSurface *sf, int w, int h)
 static void gradient_vertical(RrSurface *sf, int w, int h)
 {
     int x, y;
-    RrPixel32 *data = sf->RrPixel_data;
+    RrPixel32 *data = sf->pixel_data;
     RrPixel32 current;
 
     VARS(y);
@@ -381,7 +384,7 @@ static void gradient_vertical(RrSurface *sf, int w, int h)
 static void gradient_diagonal(RrSurface *sf, int w, int h)
 {
     int x, y;
-    RrPixel32 *data = sf->RrPixel_data;
+    RrPixel32 *data = sf->pixel_data;
     RrColor left, right;
     RrColor extracorner;
 
@@ -428,7 +431,7 @@ static void gradient_diagonal(RrSurface *sf, int w, int h)
 static void gradient_crossdiagonal(RrSurface *sf, int w, int h)
 {
     int x, y;
-    RrPixel32 *data = sf->RrPixel_data;
+    RrPixel32 *data = sf->pixel_data;
     RrColor left, right;
     RrColor extracorner;
 
@@ -475,7 +478,7 @@ static void gradient_crossdiagonal(RrSurface *sf, int w, int h)
 static void gradient_pyramid(RrSurface *sf, int inw, int inh)
 {
     int x, y, w = (inw >> 1) + 1, h = (inh >> 1) + 1;
-    RrPixel32 *data = sf->RrPixel_data;
+    RrPixel32 *data = sf->pixel_data;
     RrPixel32 *end = data + inw*inh - 1;
     RrPixel32 current;
     RrColor left, right;
@@ -533,6 +536,7 @@ static void gradient_pyramid(RrSurface *sf, int inw, int inh)
         
         NEXT(x);
     }
+    current = COLOR(x);
     *(data+x) = current;
     *(data+inw-x) = current;
     *(end-x) = current;
This page took 0.0273 seconds and 4 git commands to generate.