rectangle and diagonal grads yay

gl > *
This commit is contained in:
Derek Foreman 2003-05-25 02:46:35 +00:00
parent 10e2807d06
commit d6652d0a90
2 changed files with 69 additions and 9 deletions

View file

@ -529,6 +529,7 @@ void render_gl_gradient(Surface *sf, int x, int y, int w, int h)
{ {
float pr,pg,pb; float pr,pg,pb;
float sr, sg, sb; float sr, sg, sb;
float ar, ag, ab;
pr = (float)sf->data.planar.primary->r/255.0; pr = (float)sf->data.planar.primary->r/255.0;
pg = (float)sf->data.planar.primary->g/255.0; pg = (float)sf->data.planar.primary->g/255.0;
@ -551,7 +552,7 @@ void render_gl_gradient(Surface *sf, int x, int y, int w, int h)
glVertex3i(x, y, 0); glVertex3i(x, y, 0);
glEnd(); glEnd();
return; return;
case Background_Vertical: case Background_Horizontal:
glBegin(GL_TRIANGLES); glBegin(GL_TRIANGLES);
glColor3f(pr, pg, pb); glColor3f(pr, pg, pb);
glVertex3i(x, y, 0); glVertex3i(x, y, 0);
@ -565,7 +566,7 @@ void render_gl_gradient(Surface *sf, int x, int y, int w, int h)
glVertex3i(x, y, 0); glVertex3i(x, y, 0);
glEnd(); glEnd();
break; break;
case Background_Horizontal: case Background_Vertical:
glBegin(GL_TRIANGLES); glBegin(GL_TRIANGLES);
glColor3f(pr, pg, pb); glColor3f(pr, pg, pb);
glVertex3i(x, y, 0); glVertex3i(x, y, 0);
@ -580,19 +581,78 @@ void render_gl_gradient(Surface *sf, int x, int y, int w, int h)
glEnd(); glEnd();
break; break;
case Background_Diagonal: 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);
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; break;
case Background_CrossDiagonal: 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);
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; break;
case Background_Pyramid: case Background_Pyramid:
printf("pyramid\n"); printf("pyramid\n");
break; break;
case Background_PipeCross: case Background_PipeCross:
printf("pipecross\n");
break; break;
case Background_Rectangle: case Background_Rectangle:
printf("rect\n"); 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; break;
default: default:
g_message("unhandled gradient"); g_message("unhandled gradient");

View file

@ -51,9 +51,9 @@ int main()
render_startup(); render_startup();
look = appearance_new(Surface_Planar, 0); look = appearance_new(Surface_Planar, 0);
look->surface.data.planar.grad = Background_Horizontal; look->surface.data.planar.grad = Background_Rectangle;
look->surface.data.planar.secondary = color_new(0xFF, 0xFF, 0xFF); look->surface.data.planar.secondary = color_parse("Yellow");
look->surface.data.planar.primary = color_parse("Black"); look->surface.data.planar.primary = color_parse("Blue");
look->surface.data.planar.interlaced = FALSE; look->surface.data.planar.interlaced = FALSE;
look->area.x = 0; look->area.x = 0;
look->area.y = 0; look->area.y = 0;