summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--render/gradient.c54
-rw-r--r--render/test.c2
2 files changed, 54 insertions, 2 deletions
diff --git a/render/gradient.c b/render/gradient.c
index ce066b21..6b22c6ba 100644
--- a/render/gradient.c
+++ b/render/gradient.c
@@ -621,7 +621,59 @@ void render_gl_gradient(Surface *sf, int x, int y, int w, int h)
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:
glBegin(GL_TRIANGLES);
diff --git a/render/test.c b/render/test.c
index f737748f..7c3c83b3 100644
--- a/render/test.c
+++ b/render/test.c
@@ -51,7 +51,7 @@ int main()
render_startup();
look = appearance_new(Surface_Planar, 0);
- look->surface.data.planar.grad = Background_PipeCross;
+ look->surface.data.planar.grad = Background_Pyramid;
look->surface.data.planar.secondary = color_parse("Yellow");
look->surface.data.planar.primary = color_parse("Blue");
look->surface.data.planar.interlaced = FALSE;