#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include <sys/time.h>
#include <unistd.h>
#include <FL/Fl.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Scrollbar.H>
#include <FL/Fl_Scroll.H>
#include <FL/Fl_Output.H>
#include <FL/Fl_Input.H>
#include <FL/Fl_Float_Input.H>
#include <FL/Fl_Int_Input.H>
#include <FL/Fl_Secret_Input.H>
#include <FL/Fl_Multiline_Input.H>
#include <FL/fl_utf8.h>
#include <FL/Fl_Box.H>
//#include <GL/glut.h>
//#include <GL/gl.h>



/*
#if !HAVE_GL || !HAVE_GL_GLU_H
#include <FL/Fl.H>
#include <FL/fl_message.H>
int main(int, char**) {
  fl_alert("This demo does not work without GL and GLU");
  return 1;
}
#else
*/

//gl.h         gl2opengl.h  gl_draw.H    gl_draw.h    glu.h        glut.H       glut.h
#include <FL/glut.h>
#include <FL/glut.H>    // changed for fltk
#include <FL/glu.h> 
#include <FL/gl.h>

//void draw();

Fl_Double_Window *win = 0;
Fl_Button *a = 0;
Fl_Button *b = 0;



void OpenGLInit(void)
{
    glShadeModel( GL_FLAT );
    glClearColor( 0.0, 0.0, 0.0, 0.0 );
    glClearDepth( 1.0 );
    glEnable( GL_DEPTH_TEST );  
}


static void Animate(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef ( 100, 50, 50 );
glColor3f( 1.0, 1.0, 0.0 );
glutSolidSphere( 0.50, 300, 300 );
        glFlush();
        glutSwapBuffers();
        glutPostRedisplay();
}


void button1_cb(Fl_Widget *,void *) {
/*
glColor3f(1.0, 0.0, 0.0);
glutSolidSphere( 0.50, 300, 300 );


glLoadIdentity();
glTranslatef ( 0.0, 0.0, -25 );


glColor3f(1.0, 0.0, 0.0);
glutSolidSphere( 0.50, 300, 300 );
glutWireCube(2.5);
*/


glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH );
    glutInitWindowPosition( 0, 0 );
    glutInitWindowSize( 1600, 1200 );
    glutCreateWindow( "lspong v0.1.2" );


//glBegin(GL_QUADS);
OpenGLInit();
glutDisplayFunc( Animate);

//glutWireCube(250);
//glColor3f(1.0, 0.0, 0.0);
//glutSolidSphere( 0.50, 300, 300 );
	//glNormal3fv(0, 1);

	//glVertex3f(0, 1);


//        glFlush();
//        glutSwapBuffers();
//        glutPostRedisplay();            // Req



//sleep(10);


//glEnd();


//        win->redraw();


}


void button2_cb(Fl_Widget *,void *) {
        //win->label(titleinput->value());
        win->redraw();
}



int main(int argc, char **argv) {
        
        win = new Fl_Double_Window(800,600,"test");

        a = new Fl_Button(0,575,50,25,"start");
        a->callback(button1_cb);

        b = new Fl_Button(55,575,50,25,"stop");
        b->callback(button2_cb);


        win->resizable(win);
        
        win->end();
        win->show();
        //Scrollbar_CB(0,0);                  // show scrollbar's initial position
        return(Fl::run());
}

