glamtk
diff test.c @ 2:3d661dd17af3
- initial textbox implementation added
- made the test program slightly more interesting
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Fri, 31 Dec 2010 01:54:53 +0200 |
parents | dfbd12d1f566 |
children | 038e5577d527 |
line diff
1.1 --- a/test.c Thu Dec 30 15:10:25 2010 +0200 1.2 +++ b/test.c Fri Dec 31 01:54:53 2010 +0200 1.3 @@ -1,5 +1,6 @@ 1.4 #include <stdio.h> 1.5 #include <stdlib.h> 1.6 +#include <assert.h> 1.7 #ifndef __APPLE__ 1.8 #include <GL/glut.h> 1.9 #else 1.10 @@ -17,9 +18,14 @@ 1.11 void mouse(int bn, int state, int x, int y); 1.12 void motion(int x, int y); 1.13 1.14 +int xsz, ysz; 1.15 1.16 int main(int argc, char **argv) 1.17 { 1.18 + float lpos[] = {-1, 1, 1, 0}; 1.19 + float white[] = {1, 1, 1, 1}; 1.20 + float color[] = {0.9, 0.8, 0.73, 1}; 1.21 + 1.22 glutInitWindowSize(800, 600); 1.23 glutInit(&argc, argv); 1.24 glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); 1.25 @@ -35,54 +41,100 @@ 1.26 glutMotionFunc(motion); 1.27 glutPassiveMotionFunc(motion); 1.28 1.29 + glEnable(GL_DEPTH_TEST); 1.30 + glEnable(GL_CULL_FACE); 1.31 + glEnable(GL_LIGHTING); 1.32 + glEnable(GL_LIGHT0); 1.33 + glLightfv(GL_LIGHT0, GL_POSITION, lpos); 1.34 + 1.35 + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); 1.36 + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, white); 1.37 + glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 60.0); 1.38 + 1.39 glutMainLoop(); 1.40 return 0; 1.41 } 1.42 1.43 void disp(void) 1.44 { 1.45 - glClearColor(0.6, 0.6, 0.6, 0.0); 1.46 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 1.47 1.48 + glViewport(200, 0, xsz - 200, ysz); 1.49 + 1.50 + glMatrixMode(GL_PROJECTION); 1.51 + glLoadIdentity(); 1.52 + gluPerspective(45.0, (float)(xsz - 200) / (float)ysz, 1.0, 1000.0); 1.53 + 1.54 + glMatrixMode(GL_MODELVIEW); 1.55 + glLoadIdentity(); 1.56 + glTranslatef(0, 0, -8); 1.57 + glRotatef(25, 1, 0, 0); 1.58 + 1.59 + glFrontFace(GL_CW); 1.60 + glutSolidTeapot(1.0); 1.61 + glFrontFace(GL_CCW); 1.62 + 1.63 + 1.64 + glViewport(0, 0, 200, ysz); 1.65 + imtk_inp_reshape(200, ysz); 1.66 + 1.67 gui(); 1.68 1.69 glutSwapBuffers(); 1.70 + assert(glGetError() == GL_NO_ERROR); 1.71 } 1.72 1.73 void gui(void) 1.74 { 1.75 static int bnshow; 1.76 + static char textbuf[256]; 1.77 + static char textbuf2[256]; 1.78 1.79 imtk_begin(); 1.80 1.81 - if(imtk_button(IMUID, "foobar", 100, 100)) { 1.82 - printf("clicked button 0\n"); 1.83 + glBegin(GL_QUADS); 1.84 + glColor3f(0.6, 0.6, 0.6); 1.85 + glVertex2f(0, 0); 1.86 + glVertex2f(200, 0); 1.87 + glVertex2f(200, glutGet(GLUT_WINDOW_HEIGHT)); 1.88 + glVertex2f(0, glutGet(GLUT_WINDOW_HEIGHT)); 1.89 + glEnd(); 1.90 + 1.91 + if(imtk_button(IMUID, "red", 30, 50)) { 1.92 + float color[] = {1, 0.4, 0.3, 1}; 1.93 + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); 1.94 + glutPostRedisplay(); 1.95 } 1.96 - if(imtk_button(IMUID, "xyzzy", 100, 200)) { 1.97 - printf("clicked button 1\n"); 1.98 - } 1.99 - if(imtk_button(IMUID, "Quit", 100, 500)) { 1.100 - exit(0); 1.101 + if(imtk_button(IMUID, "blue", 30, 100)) { 1.102 + float color[] = {0.3, 0.4, 1, 1}; 1.103 + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); 1.104 + glutPostRedisplay(); 1.105 } 1.106 1.107 - if((bnshow = imtk_checkbox(IMUID, "show hidden button", 100, 260, bnshow))) { 1.108 - if(imtk_button(IMUID, "I was hidden!", 130, 300)) { 1.109 - printf("you clicked the hidden button!\n"); 1.110 + imtk_textbox(IMUID, textbuf, sizeof textbuf, 30, 200); 1.111 + imtk_textbox(IMUID, textbuf2, sizeof textbuf2, 30, 250); 1.112 + 1.113 + if((bnshow = imtk_checkbox(IMUID, "show hidden button", 30, 300, bnshow))) { 1.114 + if(imtk_button(IMUID, "yellow", 50, 340)) { 1.115 + float color[] = {0.8, 0.75, 0.3, 1}; 1.116 + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color); 1.117 + glutPostRedisplay(); 1.118 } 1.119 } 1.120 1.121 + if(imtk_button(IMUID, "Quit", 30, 500)) { 1.122 + exit(0); 1.123 + } 1.124 + 1.125 imtk_end(); 1.126 } 1.127 1.128 void reshape(int x, int y) 1.129 { 1.130 + xsz = x; 1.131 + ysz = y; 1.132 + 1.133 glViewport(0, 0, x, y); 1.134 - imtk_inp_reshape(x, y); 1.135 - 1.136 - glMatrixMode(GL_PROJECTION); 1.137 - glLoadIdentity(); 1.138 - glTranslatef(-1, -1, 0); 1.139 - glScalef(2.0 / x, 2.0 / y, 1.0); 1.140 } 1.141 1.142 void keyb(unsigned char key, int x, int y)