]> Dogcows Code - chaz/openbox/blobdiff - render/gradient.c
this is going to break the kernel/ building.
[chaz/openbox] / render / gradient.c
index aedd3bbe8d29eed24f8cfc690f197344601ce6a4..feb4ad08466c97f2e5c02a7c1dc1c32c89704d47 100644 (file)
@@ -1,39 +1,37 @@
-#include <GL/gl.h>
-#include <glib.h>
 #include "render.h"
 #include "gradient.h"
-#include "../kernel/openbox.h"
 #include "color.h"
+#include <glib.h>
 
-void gradient_render(Surface *sf, int w, int h)
+void gradient_render(RrSurface *sf, int w, int h)
 {
-    pixel32 *data = sf->data.planar.pixel_data;
+    pixel32 *data = sf->pixel_data;
     pixel32 current;
     unsigned int r,g,b;
     int off, x;
 
-    switch (sf->data.planar.grad) {
-    case Background_Solid: /* already handled */
+    switch (sf->grad) {
+    case RR_SURFACE_SOLID: /* already handled */
         return;
-    case Background_Vertical:
+    case RR_SURFACE_VERTICAL:
         gradient_vertical(sf, w, h);
         break;
-    case Background_Horizontal:
+    case RR_SURFACE_HORIZONTAL:
         gradient_horizontal(sf, w, h);
         break;
-    case Background_Diagonal:
+    case RR_SURFACE_DIAGONAL:
         gradient_diagonal(sf, w, h);
         break;
-    case Background_CrossDiagonal:
+    case RR_SURFACE_CROSS_DIAGONAL:
         gradient_crossdiagonal(sf, w, h);
         break;
-    case Background_Pyramid:
+    case RR_SURFACE_PYRAMID:
         gradient_pyramid(sf, w, h);
         break;
-    case Background_PipeCross:
+    case RR_SURFACE_PIPECROSS:
         gradient_pipecross(sf, w, h);
         break;
-    case Background_Rectangle:
+    case RR_SURFACE_RECTANGLE:
         gradient_rectangle(sf, w, h);
         break;
     default:
@@ -41,10 +39,10 @@ void gradient_render(Surface *sf, int w, int h)
         return;
     }
   
-    if (sf->data.planar.relief == Flat && sf->data.planar.border) {
-        r = sf->data.planar.border_color->r;
-        g = sf->data.planar.border_color->g;
-        b = sf->data.planar.border_color->b;
+    if (sf->relief == RR_RELIEF_FLAT && sf->border) {
+        r = sf->border_color->r;
+        g = sf->border_color->g;
+        b = sf->border_color->b;
         current = (r << default_red_offset)
             + (g << default_green_offset)
             + (b << default_blue_offset);
@@ -58,54 +56,54 @@ void gradient_render(Surface *sf, int w, int h)
         }
     }
 
-    if (sf->data.planar.relief != Flat) {
-        if (sf->data.planar.bevel == Bevel1) {
+    if (sf->relief != RR_RELIEF_FLAT) {
+        if (sf->bevel == RR_BEVEL_1) {
             for (off = 1, x = 1; x < w - 1; ++x, off++)
                 highlight(data + off,
                           data + off + (h-1) * w,
-                          sf->data.planar.relief==Raised);
+                          sf->relief==RR_RELIEF_RAISED);
             for (off = 0, x = 0; x < h; ++x, off++)
                 highlight(data + off * w,
                           data + off * w + w - 1,
-                          sf->data.planar.relief==Raised);
+                          sf->relief==RR_RELIEF_RAISED);
         }
 
-        if (sf->data.planar.bevel == Bevel2) {
+        if (sf->bevel == RR_BEVEL_2) {
             for (off = 2, x = 2; x < w - 2; ++x, off++)
                 highlight(data + off + w,
                           data + off + (h-2) * w,
-                          sf->data.planar.relief==Raised);
+                          sf->relief==RR_RELIEF_RAISED);
             for (off = 1, x = 1; x < h-1; ++x, off++)
                 highlight(data + off * w + 1,
                           data + off * w + w - 2,
-                          sf->data.planar.relief==Raised);
+                          sf->relief==RR_RELIEF_RAISED);
         }
     }
 }
 
 
 
-void gradient_vertical(Surface *sf, int w, int h)
+void gradient_vertical(RrSurface *sf, int w, int h)
 {
-    pixel32 *data = sf->data.planar.pixel_data;
+    pixel32 *data = sf->pixel_data;
     pixel32 current;
     float dr, dg, db;
     unsigned int r,g,b;
     int x, y;
 
-    dr = (float)(sf->data.planar.secondary->r - sf->data.planar.primary->r);
+    dr = (float)(sf->secondary->r - sf->primary->r);
     dr/= (float)h;
 
-    dg = (float)(sf->data.planar.secondary->g - sf->data.planar.primary->g);
+    dg = (float)(sf->secondary->g - sf->primary->g);
     dg/= (float)h;
 
-    db = (float)(sf->data.planar.secondary->b - sf->data.planar.primary->b);
+    db = (float)(sf->secondary->b - sf->primary->b);
     db/= (float)h;
 
     for (y = 0; y < h; ++y) {
-        r = sf->data.planar.primary->r + (int)(dr * y);
-        g = sf->data.planar.primary->g + (int)(dg * y);
-        b = sf->data.planar.primary->b + (int)(db * y);
+        r = sf->primary->r + (int)(dr * y);
+        g = sf->primary->g + (int)(dg * y);
+        b = sf->primary->b + (int)(db * y);
         current = (r << default_red_offset)
             + (g << default_green_offset)
             + (b << default_blue_offset);
@@ -114,27 +112,27 @@ void gradient_vertical(Surface *sf, int w, int h)
     }
 }
 
-void gradient_horizontal(Surface *sf, int w, int h)
+void gradient_horizontal(RrSurface *sf, int w, int h)
 {
-    pixel32 *data = sf->data.planar.pixel_data;
+    pixel32 *data = sf->pixel_data;
     pixel32 current;
     float dr, dg, db;
     unsigned int r,g,b;
     int x, y;
 
-    dr = (float)(sf->data.planar.secondary->r - sf->data.planar.primary->r);
+    dr = (float)(sf->secondary->r - sf->primary->r);
     dr/= (float)w;
 
-    dg = (float)(sf->data.planar.secondary->g - sf->data.planar.primary->g);
+    dg = (float)(sf->secondary->g - sf->primary->g);
     dg/= (float)w;
 
-    db = (float)(sf->data.planar.secondary->b - sf->data.planar.primary->b);
+    db = (float)(sf->secondary->b - sf->primary->b);
     db/= (float)w;
 
     for (x = 0; x < w; ++x, ++data) {
-        r = sf->data.planar.primary->r + (int)(dr * x);
-        g = sf->data.planar.primary->g + (int)(dg * x);
-        b = sf->data.planar.primary->b + (int)(db * x);
+        r = sf->primary->r + (int)(dr * x);
+        g = sf->primary->g + (int)(dg * x);
+        b = sf->primary->b + (int)(db * x);
         current = (r << default_red_offset)
             + (g << default_green_offset)
             + (b << default_blue_offset);
@@ -143,35 +141,35 @@ void gradient_horizontal(Surface *sf, int w, int h)
     }
 }
 
-void gradient_diagonal(Surface *sf, int w, int h)
+void gradient_diagonal(RrSurface *sf, int w, int h)
 {
-    pixel32 *data = sf->data.planar.pixel_data;
+    pixel32 *data = sf->pixel_data;
     pixel32 current;
     float drx, dgx, dbx, dry, dgy, dby;
     unsigned int r,g,b;
     int x, y;
 
     for (y = 0; y < h; ++y) {
-        drx = (float)(sf->data.planar.secondary->r -
-                      sf->data.planar.primary->r);
+        drx = (float)(sf->secondary->r -
+                      sf->primary->r);
         dry = drx/(float)h;
         drx/= (float)w;
 
-        dgx = (float)(sf->data.planar.secondary->g -
-                      sf->data.planar.primary->g);
+        dgx = (float)(sf->secondary->g -
+                      sf->primary->g);
         dgy = dgx/(float)h;
         dgx/= (float)w;
 
-        dbx = (float)(sf->data.planar.secondary->b -
-                      sf->data.planar.primary->b);
+        dbx = (float)(sf->secondary->b -
+                      sf->primary->b);
         dby = dbx/(float)h;
         dbx/= (float)w;
         for (x = 0; x < w; ++x, ++data) {
-            r = sf->data.planar.primary->r +
+            r = sf->primary->r +
                 ((int)(drx * x) + (int)(dry * y))/2;
-            g = sf->data.planar.primary->g +
+            g = sf->primary->g +
                 ((int)(dgx * x) + (int)(dgy * y))/2;
-            b = sf->data.planar.primary->b +
+            b = sf->primary->b +
                 ((int)(dbx * x) + (int)(dby * y))/2;
             current = (r << default_red_offset)
                 + (g << default_green_offset)
@@ -181,35 +179,35 @@ void gradient_diagonal(Surface *sf, int w, int h)
     }
 }
 
-void gradient_crossdiagonal(Surface *sf, int w, int h)
+void gradient_crossdiagonal(RrSurface *sf, int w, int h)
 {
-    pixel32 *data = sf->data.planar.pixel_data;
+    pixel32 *data = sf->pixel_data;
     pixel32 current;
     float drx, dgx, dbx, dry, dgy, dby;
     unsigned int r,g,b;
     int x, y;
 
     for (y = 0; y < h; ++y) {
-        drx = (float)(sf->data.planar.secondary->r -
-                      sf->data.planar.primary->r);
+        drx = (float)(sf->secondary->r -
+                      sf->primary->r);
         dry = drx/(float)h;
         drx/= (float)w;
 
-        dgx = (float)(sf->data.planar.secondary->g -
-                      sf->data.planar.primary->g);
+        dgx = (float)(sf->secondary->g -
+                      sf->primary->g);
         dgy = dgx/(float)h;
         dgx/= (float)w;
 
-        dbx = (float)(sf->data.planar.secondary->b -
-                      sf->data.planar.primary->b);
+        dbx = (float)(sf->secondary->b -
+                      sf->primary->b);
         dby = dbx/(float)h;
         dbx/= (float)w;
         for (x = w; x > 0; --x, ++data) {
-            r = sf->data.planar.primary->r +
+            r = sf->primary->r +
                 ((int)(drx * (x-1)) + (int)(dry * y))/2;
-            g = sf->data.planar.primary->g +
+            g = sf->primary->g +
                 ((int)(dgx * (x-1)) + (int)(dgy * y))/2;
-            b = sf->data.planar.primary->b +
+            b = sf->primary->b +
                 ((int)(dbx * (x-1)) + (int)(dby * y))/2;
             current = (r << default_red_offset)
                 + (g << default_green_offset)
@@ -253,41 +251,41 @@ void highlight(pixel32 *x, pixel32 *y, gboolean raised)
         + (b << default_blue_offset);
 }
 
-static void create_bevel_colors(Appearance *l)
+static void create_bevel_colors(RrAppearance *l)
 {
     int r, g, b;
 
     /* light color */
-    r = l->surface.data.planar.primary->r;
+    r = l->surface.primary->r;
     r += r >> 1;
-    g = l->surface.data.planar.primary->g;
+    g = l->surface.primary->g;
     g += g >> 1;
-    b = l->surface.data.planar.primary->b;
+    b = l->surface.primary->b;
     b += b >> 1;
     if (r > 0xFF) r = 0xFF;
     if (g > 0xFF) g = 0xFF;
     if (b > 0xFF) b = 0xFF;
-    g_assert(!l->surface.data.planar.bevel_light);
-    l->surface.data.planar.bevel_light = color_new(r, g, b);
-    color_allocate_gc(l->surface.data.planar.bevel_light);
+    g_assert(!l->surface.bevel_light);
+    l->surface.bevel_light = RrColorNew(l->inst, r, g, b);
+    color_allocate_gc(l->surface.bevel_light);
 
     /* dark color */
-    r = l->surface.data.planar.primary->r;
+    r = l->surface.primary->r;
     r = (r >> 1) + (r >> 2);
-    g = l->surface.data.planar.primary->g;
+    g = l->surface.primary->g;
     g = (g >> 1) + (g >> 2);
-    b = l->surface.data.planar.primary->b;
+    b = l->surface.primary->b;
     b = (b >> 1) + (b >> 2);
-    g_assert(!l->surface.data.planar.bevel_dark);
-    l->surface.data.planar.bevel_dark = color_new(r, g, b);
-    color_allocate_gc(l->surface.data.planar.bevel_dark);
+    g_assert(!l->surface.bevel_dark);
+    l->surface.bevel_dark = RrColorNew(l->inst, r, g, b);
+    color_allocate_gc(l->surface.bevel_dark);
 }
 
-void gradient_solid(Appearance *l, int x, int y, int w, int h) 
+void gradient_solid(RrAppearance *l, int x, int y, int w, int h) 
 {
     pixel32 pix;
     int i, a, b;
-    PlanarSurface *sp = &l->surface.data.planar;
+    RrSurface *sp = &l->surface;
     int left = x, top = y, right = x + w - 1, bottom = y + h - 1;
 
     if (sp->primary->gc == None)
@@ -296,50 +294,50 @@ void gradient_solid(Appearance *l, int x, int y, int w, int h)
         + (sp->primary->g << default_green_offset)
         + (sp->primary->b << default_blue_offset);
 
-    for (a = 0; a < l->area.width; a++)
-        for (b = 0; b < l->area.height; b++)
-            sp->pixel_data[a + b*l->area.width] = pix;
+    for (a = 0; a < w; a++)
+        for (b = 0; b < h; b++)
+            sp->pixel_data[a + b * w] = pix;
 
-    XFillRectangle(ob_display, l->pixmap, sp->primary->gc,
+    XFillRectangle(RrDisplay(l->inst), l->pixmap, sp->primary->gc,
                    x, y, w, h);
 
     if (sp->interlaced) {
         if (sp->secondary->gc == None)
             color_allocate_gc(sp->secondary);
         for (i = y; i < h; i += 2)
-            XDrawLine(ob_display, l->pixmap, sp->secondary->gc,
+            XDrawLine(RrDisplay(l->inst), l->pixmap, sp->secondary->gc,
                       x, i, w, i);
     }
 
     switch (sp->relief) {
-    case Raised:
+    case RR_RELIEF_RAISED:
         if (!sp->bevel_dark)
             create_bevel_colors(l);
 
         switch (sp->bevel) {
-        case Bevel1:
-            XDrawLine(ob_display, l->pixmap, sp->bevel_dark->gc,
+        case RR_BEVEL_1:
+            XDrawLine(RrDisplay(l->inst), l->pixmap, sp->bevel_dark->gc,
                       left, bottom, right, bottom);
-            XDrawLine(ob_display, l->pixmap, sp->bevel_dark->gc,
+            XDrawLine(RrDisplay(l->inst), l->pixmap, sp->bevel_dark->gc,
                       right, bottom, right, top);
                 
-            XDrawLine(ob_display, l->pixmap, sp->bevel_light->gc,
+            XDrawLine(RrDisplay(l->inst), l->pixmap, sp->bevel_light->gc,
                       left, top, right, top);
-            XDrawLine(ob_display, l->pixmap, sp->bevel_light->gc,
+            XDrawLine(RrDisplay(l->inst), l->pixmap, sp->bevel_light->gc,
                       left, bottom, left, top);
             break;
-        case Bevel2:
-            XDrawLine(ob_display, l->pixmap,
+        case RR_BEVEL_2:
+            XDrawLine(RrDisplay(l->inst), l->pixmap,
                       sp->bevel_dark->gc,
                       left + 1, bottom - 2, right - 2, bottom - 2);
-            XDrawLine(ob_display, l->pixmap,
+            XDrawLine(RrDisplay(l->inst), l->pixmap,
                       sp->bevel_dark->gc,
                       right - 2, bottom - 2, right - 2, top + 1);
 
-            XDrawLine(ob_display, l->pixmap,
+            XDrawLine(RrDisplay(l->inst), l->pixmap,
                       sp->bevel_light->gc,
                       left + 1, top + 1, right - 2, top + 1);
-            XDrawLine(ob_display, l->pixmap,
+            XDrawLine(RrDisplay(l->inst), l->pixmap,
                       sp->bevel_light->gc,
                       left + 1, bottom - 2, left + 1, top + 1);
             break;
@@ -347,31 +345,31 @@ void gradient_solid(Appearance *l, int x, int y, int w, int h)
             g_assert_not_reached(); /* unhandled BevelType */
         }
         break;
-    case Sunken:
+    case RR_RELIEF_SUNKEN:
         if (!sp->bevel_dark)
             create_bevel_colors(l);
 
         switch (sp->bevel) {
-        case Bevel1:
-            XDrawLine(ob_display, l->pixmap, sp->bevel_light->gc,
+        case RR_BEVEL_1:
+            XDrawLine(RrDisplay(l->inst), l->pixmap, sp->bevel_light->gc,
                       left, bottom, right, bottom);
-            XDrawLine(ob_display, l->pixmap, sp->bevel_light->gc,
+            XDrawLine(RrDisplay(l->inst), l->pixmap, sp->bevel_light->gc,
                       right, bottom, right, top);
       
-            XDrawLine(ob_display, l->pixmap, sp->bevel_dark->gc,
+            XDrawLine(RrDisplay(l->inst), l->pixmap, sp->bevel_dark->gc,
                       left, top, right, top);
-            XDrawLine(ob_display, l->pixmap, sp->bevel_dark->gc,
+            XDrawLine(RrDisplay(l->inst), l->pixmap, sp->bevel_dark->gc,
                       left, bottom, left, top);
             break;
-        case Bevel2:
-            XDrawLine(ob_display, l->pixmap, sp->bevel_light->gc,
+        case RR_BEVEL_2:
+            XDrawLine(RrDisplay(l->inst), l->pixmap, sp->bevel_light->gc,
                       left + 1, bottom - 2, right - 2, bottom - 2);
-            XDrawLine(ob_display, l->pixmap, sp->bevel_light->gc,
+            XDrawLine(RrDisplay(l->inst), l->pixmap, sp->bevel_light->gc,
                       right - 2, bottom - 2, right - 2, top + 1);
       
-            XDrawLine(ob_display, l->pixmap, sp->bevel_dark->gc,
+            XDrawLine(RrDisplay(l->inst), l->pixmap, sp->bevel_dark->gc,
                       left + 1, top + 1, right - 2, top + 1);
-            XDrawLine(ob_display, l->pixmap, sp->bevel_dark->gc,
+            XDrawLine(RrDisplay(l->inst), l->pixmap, sp->bevel_dark->gc,
                       left + 1, bottom - 2, left + 1, top + 1);
 
             break;
@@ -379,11 +377,11 @@ void gradient_solid(Appearance *l, int x, int y, int w, int h)
             g_assert_not_reached(); /* unhandled BevelType */
         }
         break;
-    case Flat:
+    case RR_RELIEF_FLAT:
         if (sp->border) {
             if (sp->border_color->gc == None)
                 color_allocate_gc(sp->border_color);
-            XDrawRectangle(ob_display, l->pixmap, sp->border_color->gc,
+            XDrawRectangle(RrDisplay(l->inst), l->pixmap, sp->border_color->gc,
                            left, top, right, bottom);
         }
         break;
@@ -392,35 +390,37 @@ void gradient_solid(Appearance *l, int x, int y, int w, int h)
     }
 }
 
-void gradient_pyramid(Surface *sf, int inw, int inh)
+void gradient_pyramid(RrSurface *sf, int inw, int inh)
 {
-    pixel32 *data = sf->data.planar.pixel_data;
+    pixel32 *data = sf->pixel_data;
     pixel32 *end = data + inw*inh - 1;
     pixel32 current;
     float drx, dgx, dbx, dry, dgy, dby;
     unsigned int r,g,b;
     int x, y, h=(inh/2) + 1, w=(inw/2) + 1;
-    for (y = 0; y < h; ++y) {
-        drx = (float)(sf->data.planar.secondary->r -
-                      sf->data.planar.primary->r);
-        dry = drx/(float)h;
-        drx/= (float)w;
 
-        dgx = (float)(sf->data.planar.secondary->g -
-                      sf->data.planar.primary->g);
-        dgy = dgx/(float)h;
-        dgx/= (float)w;
+    drx = (float)(sf->secondary->r -
+                  sf->primary->r);
+    dry = drx/(float)h;
+    drx/= (float)w;
 
-        dbx = (float)(sf->data.planar.secondary->b -
-                      sf->data.planar.primary->b);
-        dby = dbx/(float)h;
-        dbx/= (float)w;
+    dgx = (float)(sf->secondary->g -
+                  sf->primary->g);
+    dgy = dgx/(float)h;
+    dgx/= (float)w;
+
+    dbx = (float)(sf->secondary->b -
+                  sf->primary->b);
+    dby = dbx/(float)h;
+    dbx/= (float)w;
+
+    for (y = 0; y < h; ++y) {
         for (x = 0; x < w; ++x, data) {
-            r = sf->data.planar.primary->r +
+            r = sf->primary->r +
                 ((int)(drx * x) + (int)(dry * y))/2;
-            g = sf->data.planar.primary->g +
+            g = sf->primary->g +
                 ((int)(dgx * x) + (int)(dgy * y))/2;
-            b = sf->data.planar.primary->b +
+            b = sf->primary->b +
                 ((int)(dbx * x) + (int)(dby * y))/2;
             current = (r << default_red_offset)
                 + (g << default_green_offset)
@@ -435,38 +435,41 @@ void gradient_pyramid(Surface *sf, int inw, int inh)
     }
 }
 
-void gradient_rectangle(Surface *sf, int inw, int inh)
+void gradient_rectangle(RrSurface *sf, int inw, int inh)
 {
-    pixel32 *data = sf->data.planar.pixel_data;
+    pixel32 *data = sf->pixel_data;
     pixel32 *end = data + inw*inh - 1;
     pixel32 current;
     float drx, dgx, dbx, dry, dgy, dby;
     unsigned int r,g,b;
     int x, y, h=(inh/2) + 1, w=(inw/2) + 1;
-    int val;
 
-    for (y = 0; y < h; ++y) {
-        drx = (float)(sf->data.planar.primary->r -
-                      sf->data.planar.secondary->r);
-        dry = drx/(float)h;
-        drx/= (float)w;
+    drx = (float)(sf->primary->r -
+                  sf->secondary->r);
+    dry = drx/(float)h;
+    drx/= (float)w;
 
-        dgx = (float)(sf->data.planar.primary->g -
-                      sf->data.planar.secondary->g);
-        dgy = dgx/(float)h;
-        dgx/= (float)w;
+    dgx = (float)(sf->primary->g -
+                  sf->secondary->g);
+    dgy = dgx/(float)h;
+    dgx/= (float)w;
 
-        dbx = (float)(sf->data.planar.primary->b -
-                      sf->data.planar.secondary->b);
-        dby = dbx/(float)h;
-        dbx/= (float)w;
-        for (x = 0; x < w; ++x, data) {
-            if ((float)x/(float)w < (float)y/(float)h) val = (int)(drx * x);
-            else val = (int)(dry * y);
+    dbx = (float)(sf->primary->b -
+                  sf->secondary->b);
+    dby = dbx/(float)h;
+    dbx/= (float)w;
 
-            r = sf->data.planar.secondary->r + val;
-            g = sf->data.planar.secondary->g + val;
-            b = sf->data.planar.secondary->b + val;
+    for (y = 0; y < h; ++y) {
+        for (x = 0; x < w; ++x, data) {
+            if ((float)x/(float)w < (float)y/(float)h) {
+                r = sf->primary->r + (drx * x);
+                g = sf->primary->g + (dgx * x);
+                b = sf->primary->b + (dbx * x);
+            } else {
+                r = sf->primary->r + (dry * x);
+                g = sf->primary->g + (dgy * x);
+                b = sf->primary->b + (dby * x);
+            }
             current = (r << default_red_offset)
                 + (g << default_green_offset)
                 + (b << default_blue_offset);
@@ -480,38 +483,41 @@ void gradient_rectangle(Surface *sf, int inw, int inh)
     }
 }
 
-void gradient_pipecross(Surface *sf, int inw, int inh)
+void gradient_pipecross(RrSurface *sf, int inw, int inh)
 {
-    pixel32 *data = sf->data.planar.pixel_data;
+    pixel32 *data = sf->pixel_data;
     pixel32 *end = data + inw*inh - 1;
     pixel32 current;
     float drx, dgx, dbx, dry, dgy, dby;
     unsigned int r,g,b;
     int x, y, h=(inh/2) + 1, w=(inw/2) + 1;
-    int val;
 
-    for (y = 0; y < h; ++y) {
-        drx = (float)(sf->data.planar.secondary->r -
-                      sf->data.planar.primary->r);
-        dry = drx/(float)h;
-        drx/= (float)w;
+    drx = (float)(sf->secondary->r -
+                  sf->primary->r);
+    dry = drx/(float)h;
+    drx/= (float)w;
 
-        dgx = (float)(sf->data.planar.secondary->g -
-                      sf->data.planar.primary->g);
-        dgy = dgx/(float)h;
-        dgx/= (float)w;
+    dgx = (float)(sf->secondary->g -
+                  sf->primary->g);
+    dgy = dgx/(float)h;
+    dgx/= (float)w;
 
-        dbx = (float)(sf->data.planar.secondary->b -
-                      sf->data.planar.primary->b);
-        dby = dbx/(float)h;
-        dbx/= (float)w;
-        for (x = 0; x < w; ++x, data) {
-            if ((float)x/(float)w > (float)y/(float)h) val = (int)(drx * x);
-            else val = (int)(dry * y);
+    dbx = (float)(sf->secondary->b -
+                  sf->primary->b);
+    dby = dbx/(float)h;
+    dbx/= (float)w;
 
-            r = sf->data.planar.primary->r + val;
-            g = sf->data.planar.primary->g + val;
-            b = sf->data.planar.primary->b + val;
+    for (y = 0; y < h; ++y) {
+        for (x = 0; x < w; ++x, data) {
+            if ((float)x/(float)w > (float)y/(float)h) {
+                r = sf->primary->r + (drx * x);
+                g = sf->primary->g + (dgx * x);
+                b = sf->primary->b + (dbx * x);
+            } else {
+                r = sf->primary->r + (dry * x);
+                g = sf->primary->g + (dgy * x);
+                b = sf->primary->b + (dby * x);
+            }
             current = (r << default_red_offset)
                 + (g << default_green_offset)
                 + (b << default_blue_offset);
@@ -524,139 +530,3 @@ void gradient_pipecross(Surface *sf, int inw, int inh)
         end-=inw;
     }
 }
-#ifdef USE_GL
-void render_gl_gradient(Surface *sf, int x, int y, int w, int h)
-{
-    float pr,pg,pb;
-    float sr, sg, sb;
-    float ar, ag, ab;
-
-    pr = (float)sf->data.planar.primary->r/255.0;
-    pg = (float)sf->data.planar.primary->g/255.0;
-    pb = (float)sf->data.planar.primary->b/255.0;
-    if (sf->data.planar.secondary) {
-        sr = (float)sf->data.planar.secondary->r/255.0;
-        sg = (float)sf->data.planar.secondary->g/255.0;
-        sb = (float)sf->data.planar.secondary->b/255.0;
-    }
-    switch (sf->data.planar.grad) {
-    case Background_Solid: /* already handled */
-        glBegin(GL_TRIANGLES);
-        glColor3f(pr, pg, pb);
-        glVertex3i(x, y, 0);
-        glVertex3i(x+w, y, 0);
-        glVertex3i(x+w, y+h, 0);
-
-        glVertex3i(x+w, y+h, 0);
-        glVertex3i(x, y+h, 0);
-        glVertex3i(x, y, 0);
-        glEnd();
-        return;
-    case Background_Horizontal:
-        glBegin(GL_TRIANGLES);
-        glColor3f(pr, pg, pb);
-        glVertex3i(x, y, 0);
-        glColor3f(sr, sg, sb);
-        glVertex3i(x+w, y, 0);
-        glVertex3i(x+w, y+h, 0);
-
-        glVertex3i(x+w, y+h, 0);
-        glColor3f(pr, pg, pb);
-        glVertex3i(x, y+h, 0);
-        glVertex3i(x, y, 0);
-        glEnd();
-        break;
-    case Background_Vertical:
-        glBegin(GL_TRIANGLES);
-        glColor3f(pr, pg, pb);
-        glVertex3i(x, y, 0);
-        glVertex3i(x+w, y, 0);
-        glColor3f(sr, sg, sb);
-        glVertex3i(x+w, y+h, 0);
-
-        glVertex3i(x+w, y+h, 0);
-        glVertex3i(x, y+h, 0);
-        glColor3f(pr, pg, pb);
-        glVertex3i(x, y, 0);
-        glEnd();
-        break;
-    case Background_Diagonal:
-       ar = (pr + sr) / 2.0;
-       ag = (pg + sg) / 2.0;
-       ab = (pb + sb) / 2.0;
-        glBegin(GL_TRIANGLES);
-        glColor3f(ar, ag, ab);
-        glVertex3i(x, y, 0);
-        glColor3f(pr, pg, pb);
-        glVertex3i(x+w, y, 0);
-        glColor3f(ar, ag, ab);
-        glVertex3i(x+w, y+h, 0);
-
-        glColor3f(ar, ag, ab);
-        glVertex3i(x+w, y+h, 0);
-        glColor3f(sr, sg, sb);
-        glVertex3i(x, y+h, 0);
-        glColor3f(ar, ag, ab);
-        glVertex3i(x, y, 0);
-        glEnd();
-        break;
-    case Background_CrossDiagonal:
-       ar = (pr + sr) / 2.0;
-       ag = (pg + sg) / 2.0;
-       ab = (pb + sb) / 2.0;
-        glBegin(GL_TRIANGLES);
-        glColor3f(pr, pg, pb);
-        glVertex3i(x, y, 0);
-        glColor3f(ar, ag, ab);
-        glVertex3i(x+w, y, 0);
-        glColor3f(sr, sg, sb);
-        glVertex3i(x+w, y+h, 0);
-
-        glColor3f(sr, sg, sb);
-        glVertex3i(x+w, y+h, 0);
-        glColor3f(ar, ag, ab);
-        glVertex3i(x, y+h, 0);
-        glColor3f(pr, pg, pb);
-        glVertex3i(x, y, 0);
-        glEnd();
-        break;
-    case Background_Pyramid:
-printf("pyramid\n");
-        break;
-    case Background_PipeCross:
-        break;
-    case Background_Rectangle:
-        glBegin(GL_TRIANGLES);
-        glColor3f(pr, pg, pb);
-        glVertex3i(x, y, 0);
-        glColor3f(sr, sg, sb);
-        glVertex3i(x+w/2, y+h/2, 0);
-        glColor3f(pr, pg, pb);
-        glVertex3i(x, y+h, 0);
-
-        glVertex3i(x, y+h, 0);
-        glColor3f(sr, sg, sb);
-        glVertex3i(x+w/2, y+h/2, 0);
-        glColor3f(pr, pg, pb);
-        glVertex3i(x+w, y+h, 0);
-
-        glVertex3i(x+w, y+h, 0);
-        glColor3f(sr, sg, sb);
-        glVertex3i(x+w/2, y+h/2, 0);
-        glColor3f(pr, pg, pb);
-        glVertex3i(x+w, y, 0);
-
-        glVertex3i(x+w, y, 0);
-        glColor3f(sr, sg, sb);
-        glVertex3i(x+w/2, y+h/2, 0);
-        glColor3f(pr, pg, pb);
-        glVertex3i(x, y, 0);
-
-        glEnd();
-        break;
-    default:
-        g_message("unhandled gradient");
-        return;
-    }
-}
-#endif /* USE_GL */
This page took 0.044616 seconds and 4 git commands to generate.