#ifndef __chgsize_h
#define __chgsize_h

#include "GL/gl.h"
#include "GL/glx.h"
#include "forms.h"
#include <sstream>
#include <string>

/**** Forms and Objects ****/

typedef struct {
	FL_FORM *chgsize;
	void* vdata;
	char* cdata;
	long  ldata;
	FL_OBJECT* canvas;
} FD_chgsize;

#define MAXSHORT 32767
class ChgSize
{
    FD_chgsize *chgsize;

    bool    bZoom;

    int imagemenu;
    int nXSize;
    int nYSize;
    int nZoom;
    
    GLfloat  redlut [256];
    GLfloat  greenlut [256];
    GLfloat  bluelut [256];
    GLuint rangebase; // for font
    
    GLXContext DefaultContext; // for image
    enum {RED, GREEN, BLUE, MONO, LUT, INVMONO};

    char szMsg[256];
    
    Window window; //XForms Display Window
    
public:
    ChgSize();
    ~ChgSize();
    void Run(int arg, char** argv);
    
    int  InitForm(int arg, char** argv);
    void ProcessAction(int value);
    void ConfigNotify();
    void OnKeyPress(int key);
    void OnRButtonDown();

    void DisplayImage();
    void OnZoom();
        
    void ImageMenu(int arg);
    void makeFont(char* fontname);

    void displaystring(int x, int y, int color, const char *s);
    bool CheckGLError();

    FL_FORM* Form() {return chgsize->chgsize;}
    static int Ydim;
    static int ProcessEvent(FL_OBJECT *ob, Window win, int w, int h, XEvent *xev, void *ud);
    static ChgSize* GetThis(FL_OBJECT *obj); 

};

FD_chgsize *create_form_chgsize(void);

#endif

