X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=render%2Fgradient.c;h=31d4c73034eb65a230b72fae283ee3e676e9d670;hb=ddeb066ed4b112d9e8b1b7941addfea06b5c2a99;hp=3a963406c33b0385165cac42fbdd3cdea7173c8b;hpb=48a75b80d6148afe88d250f24a3f337677cf9c18;p=chaz%2Fopenbox diff --git a/render/gradient.c b/render/gradient.c index 3a963406..31d4c730 100644 --- a/render/gradient.c +++ b/render/gradient.c @@ -1,4 +1,6 @@ +#ifdef USE_GL #include +#endif /* USE_GL */ #include #include "render.h" #include "gradient.h" @@ -529,6 +531,7 @@ 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; @@ -542,57 +545,210 @@ void render_gl_gradient(Surface *sf, int x, int y, int w, int h) 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); + glVertex2i(x, y); + glVertex2i(x+w, y); + glVertex2i(x+w, y+h); - glVertex3i(x+w, y+h, 0); - glVertex3i(x, y+h, 0); - glVertex3i(x, y, 0); + glVertex2i(x+w, y+h); + glVertex2i(x, y+h); + glVertex2i(x, y); glEnd(); return; - case Background_Vertical: + case Background_Horizontal: glBegin(GL_TRIANGLES); glColor3f(pr, pg, pb); - glVertex3i(x, y, 0); + glVertex2i(x, y); glColor3f(sr, sg, sb); - glVertex3i(x+w, y, 0); - glVertex3i(x+w, y+h, 0); + glVertex2i(x+w, y); + glVertex2i(x+w, y+h); - glVertex3i(x+w, y+h, 0); + glVertex2i(x+w, y+h); glColor3f(pr, pg, pb); - glVertex3i(x, y+h, 0); - glVertex3i(x, y, 0); + glVertex2i(x, y+h); + glVertex2i(x, y); glEnd(); break; - case Background_Horizontal: + case Background_Vertical: glBegin(GL_TRIANGLES); glColor3f(pr, pg, pb); - glVertex3i(x, y, 0); - glVertex3i(x+w, y, 0); + glVertex2i(x, y); + glVertex2i(x+w, y); glColor3f(sr, sg, sb); - glVertex3i(x+w, y+h, 0); + glVertex2i(x+w, y+h); - glVertex3i(x+w, y+h, 0); - glVertex3i(x, y+h, 0); + glVertex2i(x+w, y+h); + glVertex2i(x, y+h); glColor3f(pr, pg, pb); - glVertex3i(x, y, 0); + glVertex2i(x, y); glEnd(); break; case Background_Diagonal: -printf("diagonal\n"); + ar = (pr + sr) / 2.0; + ag = (pg + sg) / 2.0; + ab = (pb + sb) / 2.0; + glBegin(GL_TRIANGLES); + glColor3f(ar, ag, ab); + glVertex2i(x, y); + glColor3f(pr, pg, pb); + glVertex2i(x+w, y); + glColor3f(ar, ag, ab); + glVertex2i(x+w, y+h); + + glColor3f(ar, ag, ab); + glVertex2i(x+w, y+h); + glColor3f(sr, sg, sb); + glVertex2i(x, y+h); + glColor3f(ar, ag, ab); + glVertex2i(x, y); + glEnd(); break; case Background_CrossDiagonal: -printf("crossdiagonal\n"); + ar = (pr + sr) / 2.0; + ag = (pg + sg) / 2.0; + ab = (pb + sb) / 2.0; + glBegin(GL_TRIANGLES); + glColor3f(pr, pg, pb); + glVertex2i(x, y); + glColor3f(ar, ag, ab); + glVertex2i(x+w, y); + glColor3f(sr, sg, sb); + glVertex2i(x+w, y+h); + + glColor3f(sr, sg, sb); + glVertex2i(x+w, y+h); + glColor3f(ar, ag, ab); + glVertex2i(x, y+h); + glColor3f(pr, pg, pb); + glVertex2i(x, y); + glEnd(); break; case Background_Pyramid: -printf("pyramid\n"); + ar = (pr + sr) / 2.0; + ag = (pg + sg) / 2.0; + ab = (pb + sb) / 2.0; + glBegin(GL_TRIANGLES); + glColor3f(pr, pg, pb); + glVertex2i(x, y); + glColor3f(sr, sg, sb); + glVertex2i(x+w/2, y+h/2); + glColor3f(ar, ag, ab); + glVertex2i(x, y+h/2); + + glVertex2i(x, y+h/2); + glColor3f(sr, sg, sb); + glVertex2i(x+w/2, y+h/2); + glColor3f(pr, pg, pb); + glVertex2i(x, y+h); + + glVertex2i(x, y+h); + glColor3f(sr, sg, sb); + glVertex2i(x+w/2, y+h/2); + glColor3f(ar, ag, ab); + glVertex2i(x+w/2, y+h); + + glVertex2i(x+w/2, y+h); + glColor3f(sr, sg, sb); + glVertex2i(x+w/2, y+h/2); + glColor3f(pr, pg, pb); + glVertex2i(x+w, y+h); + + glVertex2i(x+w, y+h); + glColor3f(sr, sg, sb); + glVertex2i(x+w/2, y+h/2); + glColor3f(ar, ag, ab); + glVertex2i(x+w, y+h/2); + + glVertex2i(x+w, y+h/2); + glColor3f(sr, sg, sb); + glVertex2i(x+w/2, y+h/2); + glColor3f(pr, pg, pb); + glVertex2i(x+w, y); + + glVertex2i(x+w, y); + glColor3f(sr, sg, sb); + glVertex2i(x+w/2, y+h/2); + glColor3f(ar, ag, ab); + glVertex2i(x+w/2, y); + + glVertex2i(x+w/2, y); + glColor3f(sr, sg, sb); + glVertex2i(x+w/2, y+h/2); + glColor3f(pr, pg, pb); + glVertex2i(x, y); + glEnd(); break; case Background_PipeCross: -printf("pipecross\n"); + glBegin(GL_TRIANGLES); + glColor3f(pr, pg, pb); + glVertex2i(x, y); + glColor3f(sr, sg, sb); + glVertex2i(x+w/2, y+h/2); + glVertex2i(x, y+h/2); + + glVertex2i(x, y+h/2); + glVertex2i(x+w/2, y+h/2); + glColor3f(pr, pg, pb); + glVertex2i(x, y+h); + + glVertex2i(x, y+h); + glColor3f(sr, sg, sb); + glVertex2i(x+w/2, y+h/2); + glVertex2i(x+w/2, y+h); + + glVertex2i(x+w/2, y+h); + glVertex2i(x+w/2, y+h/2); + glColor3f(pr, pg, pb); + glVertex2i(x+w, y+h); + + glVertex2i(x+w, y+h); + glColor3f(sr, sg, sb); + glVertex2i(x+w/2, y+h/2); + glVertex2i(x+w, y+h/2); + + glVertex2i(x+w, y+h/2); + glVertex2i(x+w/2, y+h/2); + glColor3f(pr, pg, pb); + glVertex2i(x+w, y); + + glVertex2i(x+w, y); + glColor3f(sr, sg, sb); + glVertex2i(x+w/2, y+h/2); + glVertex2i(x+w/2, y); + + glVertex2i(x+w/2, y); + glVertex2i(x+w/2, y+h/2); + glColor3f(pr, pg, pb); + glVertex2i(x, y); + glEnd(); break; case Background_Rectangle: -printf("rect\n"); + glBegin(GL_TRIANGLES); + glColor3f(pr, pg, pb); + glVertex2i(x, y); + glColor3f(sr, sg, sb); + glVertex2i(x+w/2, y+h/2); + glColor3f(pr, pg, pb); + glVertex2i(x, y+h); + + glVertex2i(x, y+h); + glColor3f(sr, sg, sb); + glVertex2i(x+w/2, y+h/2); + glColor3f(pr, pg, pb); + glVertex2i(x+w, y+h); + + glVertex2i(x+w, y+h); + glColor3f(sr, sg, sb); + glVertex2i(x+w/2, y+h/2); + glColor3f(pr, pg, pb); + glVertex2i(x+w, y); + + glVertex2i(x+w, y); + glColor3f(sr, sg, sb); + glVertex2i(x+w/2, y+h/2); + glColor3f(pr, pg, pb); + glVertex2i(x, y); + + glEnd(); break; default: g_message("unhandled gradient");