#include #include #include #include "triangle.h" float x[3]={-0.5,0.5,0.0}, y[3]={-0.5,-0.5,0.5}, z[3]={0.0,0.0,0.0}; //Oggetti triangle t(x,y,z); //Dichiarazione GLUT int win; //Dichiarazioni GLUI GLUI *winGLUI; float spinnerColorR=1.0; float spinnerColorG=0.0; float spinnerColorB=0.0; GLUI_Spinner *spinRED; GLUI_Spinner *spinGREEN; GLUI_Spinner *spinBLUE; GLUI_Listbox *colors; int colori; void display(void){ // printf("DISPLAY\n"); glClearColor(0.0,0.0,0.0,0.0); glClear(GL_COLOR_BUFFER_BIT); //Funzioni di disegno t.Draw(); glFlush(); glutSwapBuffers(); } void reshape(int w, int h){ int tx, ty, tw, th; GLUI_Master.get_viewport_area(&tx, &ty, &tw, &th); glViewport(tx, ty, tw,th); //GLUI_Master.auto_set_viewport(); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-1.0,-1.0,1.0,1.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void spinCOLOR(int ID){ switch(ID){ case 1: t.setColorRGB(spinnerColorR,spinnerColorG,spinnerColorB); break; case 2: t.setColorRGB(spinnerColorR, spinnerColorG, spinnerColorB); break; case 3: t.setColorRGB(spinnerColorR, spinnerColorG, spinnerColorB); break; default: break; } } void listCOL(int ID){ switch(colori){ case 1: spinnerColorR=1.0; spinnerColorG=0.0; spinnerColorB=0.0; t.setColorRGB(1.0,0.0,0.0); break; case 2: spinnerColorR=0.0; spinnerColorG=1.0; spinnerColorB=0.0; t.setColorRGB(0.0,1.0,0.0); break; case 3: spinnerColorR=0.0; spinnerColorG=0.0; spinnerColorB=1.0; t.setColorRGB(0.0,0.0,1.0); break; default: break; } GLUI_Master.sync_live_all(); } void initGLUT_GLUI(){ glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE); win=glutCreateWindow("COLORED Triangle"); glutDisplayFunc(display); GLUI_Master.set_glutReshapeFunc(reshape); //CREO L'INTERFACCIA GLUI winGLUI = GLUI_Master.create_glui_subwindow(win,GLUI_SUBWINDOW_RIGHT); spinRED=winGLUI->add_spinner("RED",GLUI_SPINNER_FLOAT,&spinnerColorR,1,spinCOLOR); spinGREEN=winGLUI->add_spinner("GREEN",GLUI_SPINNER_FLOAT,&spinnerColorG,2,spinCOLOR); spinBLUE=winGLUI->add_spinner("BLUE",GLUI_SPINNER_FLOAT,&spinnerColorB,3,spinCOLOR); spinRED->set_speed(0.5); spinRED->set_float_limits(0.0,1.0,GLUI_LIMIT_CLAMP); spinGREEN->set_float_limits(0.0,1.0,GLUI_LIMIT_CLAMP); spinBLUE->set_float_limits(0.0,1.0,GLUI_LIMIT_CLAMP); colors=winGLUI->add_listbox("Colori",&colori,1,listCOL); colors->add_item(1,"ROSSO"); colors->add_item(2,"VERDE"); colors->add_item(3,"BLUE"); winGLUI->set_main_gfx_window(win); } void main(int argc, char *argv[]){ glutInit(&argc, argv); initGLUT_GLUI(); glutMainLoop(); }