#include "cs148.h"


int winw = 800;
int winh = 500;

void init(void)  {
   
}

void display(void)
{

   glClearColor (1.0, 1.0, 1.0, 0.0);
   glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   glEnable(GL_DEPTH_TEST);

   glPushMatrix();
   glTranslatef(-0.6,0,0);
   
   GLfloat mat_diffuse1[] = { 0.9, 0.9, 0.9, 1.0 };
   GLfloat mat_specular1[] = { 0.0, 0.0, 0.0, 1.0 };
   GLfloat mat_amb1[] = { 0.5, 0.5, 0.5, 1.0 };
   GLfloat mat_shininess1[] = { 50.0 };
   GLfloat light_position1[] = { -1.0, 1.0, 1.0, 0.0 };
   GLfloat light_diffuse1[] = { 0.8, 0.8, 0.8, 1.0 };
   GLfloat light_amb1[] = { 0.2, 0.2, 0.2, 0.0 };
   GLfloat light_spec1[] = { 1.0, 1.0, 1.0, 1.0 };
   glEnable(GL_LIGHTING);   
   glDisable(GL_LIGHT1);
   glEnable(GL_LIGHT0);
   glShadeModel (GL_FLAT);
   glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse1);
   glMaterialfv(GL_FRONT, GL_AMBIENT, mat_amb1);
   glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular1);
   glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess1);
   glLightfv(GL_LIGHT0, GL_POSITION, light_position1);
   glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse1);
   glLightfv(GL_LIGHT0, GL_AMBIENT, light_amb1);
   glLightfv(GL_LIGHT0, GL_SPECULAR, light_spec1);
   
   glutSolidSphere (0.5, 10, 10);
   //glutSolidCube(0.5);
   glPopMatrix();


   glPushMatrix();
   glTranslatef(0.6,0,0);
   
   GLfloat mat_diffuse2[] = { 0.9, 0.9, 0.9, 1.0 };
   GLfloat mat_specular2[] = { 0.0, 0.0, 0.0, 1.0 };
   GLfloat mat_amb2[] = { 0.5, 0.5, 0.5, 1.0 };
   GLfloat mat_shininess2[] = { 50.0 };
   GLfloat light_position2[] = { -1.0, 1.0, 1.0, 0.0 };
   GLfloat light_diffuse2[] = { 0.8, 0.8, 0.8, 1.0 };
   GLfloat light_amb2[] = { 0.2, 0.2, 0.2, 0.0 };
   GLfloat light_spec2[] = { 1.0, 1.0, 1.0, 1.0 };
   glEnable(GL_LIGHTING);   
   glDisable(GL_LIGHT0);
   glEnable(GL_LIGHT1);
   glShadeModel (GL_SMOOTH);
   glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse2);
   glMaterialfv(GL_FRONT, GL_AMBIENT, mat_amb2);
   glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular2);
   glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess2);
   glLightfv(GL_LIGHT1, GL_POSITION, light_position2);
   glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse2);
   glLightfv(GL_LIGHT1, GL_AMBIENT, light_amb2);
   glLightfv(GL_LIGHT1, GL_SPECULAR, light_spec2);

   glutSolidSphere (0.5, 10, 10);
   //glutSolidCube(0.5);
   
   glPopMatrix();

   glFlush ();
}

void reshape (int w, int h)
{
   glViewport (0, 0, (GLsizei) w, (GLsizei) h);
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity();
   gluPerspective(30.0,((float)winw)/((float)winh),1.0,10.0);
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
   gluLookAt(0,0,3.0,0,0,0,0,1,0);
}

int main(int argc, char** argv)
{
   glutInit(&argc, argv);
   glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
   glutInitWindowSize (winw, winh); 
   glutInitWindowPosition (100, 100);
   glutCreateWindow (argv[0]);
   init ();
   glutDisplayFunc(display); 
   glutReshapeFunc(reshape);
   glutMainLoop();
   return 0;
}

