X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=censuslogo;a=blobdiff_plain;f=src%2Fmain.c;h=23b9878b30482fc8e63f6c4844b2ac6a8bbd6cb0;hp=06477c1d0f3817425e7d37ddbc959444513bd9b8;hb=4fa7b4065b3c9630c638013f0fed7e2a36efd264;hpb=fc0cfd2c7c9f5efddddb21fc94a15cc42685ca1d diff --git a/src/main.c b/src/main.c index 06477c1..23b9878 100644 --- a/src/main.c +++ b/src/main.c @@ -1,26 +1,57 @@ #include #include +#include +#include #include #include #include "logo.h" -#define BEZ_SEG 16 +#ifndef GL_MULTISAMPLE +#define GL_MULTISAMPLE 0x809d +#endif + +#define MSAA int init(void); void display(void); +void idle(void); void reshape(int x, int y); void keyb(unsigned char key, int x, int y); +int parse_args(int argc, char **argv); +void print_usage(const char *argv0); + +int win_width, win_height; +int nverts = 256; +long start_time; +int msaa = 1; +int fullscr = 0; -void draw_bezier(float *cp, int sub); int main(int argc, char **argv) { + unsigned int flags = GLUT_RGB | GLUT_DOUBLE; + glutInit(&argc, argv); - glutInitWindowSize(800, 600); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); + if(parse_args(argc, argv) == -1) { + return 1; + } + +#ifdef MSAA + if(msaa) { + flags |= GLUT_MULTISAMPLE; + } +#endif + + glutInitWindowSize(1280, 800); + glutInitDisplayMode(flags); glutCreateWindow("census"); + if(fullscr) { + glutFullScreen(); + } + glutDisplayFunc(display); + glutIdleFunc(idle); glutReshapeFunc(reshape); glutKeyboardFunc(keyb); @@ -34,24 +65,108 @@ int main(int argc, char **argv) int init(void) { - glEnable(GL_LINE_SMOOTH); + if(init_logo("data/census.curves") == -1) { + return -1; + } + +#ifdef MSAA + if(msaa) { + glEnable(GL_MULTISAMPLE); + } +#endif + + start_time = glutGet(GLUT_ELAPSED_TIME); return 0; } +static void draw_disc(float x, float y, float rad, int sub) +{ + int i; + glBegin(GL_TRIANGLE_FAN); + glVertex2f(x, y); + for(i=0; i 1.0f) alpha = 1.0f; + + dt = (anim > 1.0f ? 1.0f : anim) / (float)(nverts - 1); + + glColor4f(1, 1, 1, alpha); + for(i=0; i 0.0f) { + eval_logo(a, 0); + draw_disc(a[0], a[1], 0.05, 18); + } + if(anim >= 1.0f) { + eval_logo(b, 1); + draw_disc(b[0], b[1], 0.05, 18); + } + glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glLineWidth(2.0); - glColor3f(1, 1, 1); - nseg = LOGOCP_SIZE / 4; - for(i=0; i