//Traduzione in C del codice python alla pagina: http://davideaversa.it/slashcode/2010/05/opengl-animazione/
//Compile with: gcc opengl2.c -lglut

#include <stdio.h>  
#include <GL/gl.h>   // File header per la libreria OpenGL
#include <GL/glut.h> // File header per la libreria GLUT

float spin = 0;

void init()
{
	glClearColor(0,0,0,0);
	glShadeModel(GL_FLAT);
}

void display()
{
	glClear(GL_COLOR_BUFFER_BIT);
	glPushMatrix();
	glRotatef(spin, 0, 0, 1);
	glColor3f(1, 1, 1);
	glRectf(-25, -25, 25, 25);
	glPopMatrix();
	glutSwapBuffers();
}

void reshape(int w, int h)
{
	glViewport(0, 0, w, h);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(-50, 50, -50, 50, -1, 1);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
}

void spinDisplay()
{

	spin += 0.5;
	if (spin > 360)
		spin = spin - 360;
	glutPostRedisplay();
}

void mouse(int button, int state, int x, int y)
{
	if (button == GLUT_LEFT_BUTTON)
	{	
		if (state == GLUT_DOWN)
			glutIdleFunc(spinDisplay);
	}
	else if (button == GLUT_MIDDLE_BUTTON)
		if (state == GLUT_DOWN)
			glutIdleFunc(NULL);
}

int main (int argc, char **argv)
{
	glutInit (&argc, argv);

	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
	glutInitWindowSize(250, 250);
	glutInitWindowPosition(100, 100);
	glutCreateWindow("Quadrato Rotante");
	init();

	glutMouseFunc(mouse);
	glutDisplayFunc(display);
	glutReshapeFunc(reshape);

	glutMainLoop();

	return 0;
}


