#include "cs148.h"

int enable_culling = 1;

// Initialization function - called when we start up
void myinit (void) {
   
  glEnable(GL_CULL_FACE);
  glCullFace(GL_BACK);
  glFrontFace(GL_CCW);

}



void display(void) {

  glClear(GL_COLOR_BUFFER_BIT);

  if (enable_culling) glEnable(GL_CULL_FACE);
  else glDisable(GL_CULL_FACE);

  glBegin(GL_TRIANGLES);

  // A counterclockwise triangle
  glColor3f(1,0,0);
  glVertex2i(0,0);
  glVertex2i(100,0);
  glVertex2i(100,100);

  // A clockwise triangle
  glColor3f(0,1,0);
  glVertex2i(100,0);
  glVertex2i(200,100);
  glVertex2i(200,0);
  
  glEnd();

  glutSwapBuffers();
}


void myReshape(int w, int h) {
    
  glViewport(0, 0, w, h);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluOrtho2D (0,w,0,h); 
  glMatrixMode(GL_MODELVIEW);

}


void key(unsigned char key, int x, int y) {
  if (key == 'c') {
    enable_culling = 1 - enable_culling;
    printf("Culling is %s\n",enable_culling ? "enabled" : "disabled");
  }
  glutPostRedisplay();
}


int main(int argc, char ** argv) {
   glutInit(&argc, argv);
   glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
   glutInitWindowSize (640, 480); 
   glutInitWindowPosition (0, 0);
   glutCreateWindow (argv[0]);
   myinit ();
   glutKeyboardFunc(key);
   glutDisplayFunc(display); 
   glutReshapeFunc(myReshape);
   glutMainLoop();
   return 0;

}

