// gcc -o configNotify configNotify.c gl.o -L/usr/X11/lib -lforms -lGLU -lGL -lm -lX11 -I/usr/X11/include/

#include <stdlib.h>

#include <GL/gl.h>
#include <GL/glx.h>

#include "forms.h"

#define TRUE 1

typedef struct {
	FL_FORM *worldView;
	void *vdata;
	char *cdata;
	long  ldata;
	FL_OBJECT *worldViewCanvas;
} FD_worldView;

FD_worldView *create_form_worldView(void)
{
  FL_OBJECT *obj;
  FD_worldView *fdui = (FD_worldView *) fl_calloc(1, sizeof(*fdui));

  fdui->worldView = fl_bgn_form(FL_NO_BOX, 640, 480);
  obj = fl_add_box(FL_UP_BOX,0,0,640,480,"");
  fdui->worldViewCanvas = obj = fl_add_glcanvas(FL_NORMAL_CANVAS,0,0,640,480,"");
  fl_end_form();

  fdui->worldView->fdui = fdui;

  return fdui;
}

int
worldView_configure_notify_handler(FL_OBJECT *obj, Window win, int w, int h,
				   XEvent *xev, void *data)
{
  printf("Configure notify\n");

  return TRUE;
}

int
main(int argc, char *argv[])
{
  FL_OBJECT *obj;
  FD_worldView *form;
  const int attributeList[] = { GLX_RGBA, GLX_DOUBLEBUFFER,
				GLX_DEPTH_SIZE, 16,None };

  fl_initialize(&argc, argv, 0, 0, 0);

  fl_set_glcanvas_defaults(attributeList);

  form = create_form_worldView();

  obj = form->worldViewCanvas;
  fl_add_canvas_handler(obj, ConfigureNotify,
			&worldView_configure_notify_handler, 0);

  fl_show_form(form->worldView, FL_PLACE_POSITION, FL_FULLBORDER, "worldView");

  fl_do_forms();

  return 0;
}
