+#ifdef USE_GL
#include <GL/gl.h>
+#endif /* USE_GL */
#include <glib.h>
#include "render.h"
#include "gradient.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;
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");