Index: NonGTP/FLTK/include/fltk/gl2opengl.h
===================================================================
--- NonGTP/FLTK/include/fltk/gl2opengl.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/gl2opengl.h	(revision 773)
@@ -0,0 +1,35 @@
+/*	gl.h
+
+	GL to OpenGL translator.
+	If you include this, you might be able to port old GL programs.
+	There are also much better emulators available on the net.
+
+*/
+
+#include <fltk/gl.h>
+#include "gl_draw.h"
+
+inline void clear() {glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);}
+#define RGBcolor(r,g,b) glColor3ub(r,g,b)
+#define bgnline() glBegin(GL_LINE_STRIP)
+#define bgnpolygon() glBegin(GL_POLYGON)
+#define bgnclosedline() glBegin(GL_LINE_LOOP)
+#define endline() glEnd()
+#define endpolygon() glEnd()
+#define endclosedline() glEnd()
+#define v2f(v) glVertex2fv(v)
+#define v2s(v) glVertex2sv(v)
+#define cmov(x,y,z) glRasterPos3f(x,y,z)
+#define charstr(s) gl_draw(s)
+#define fmprstr(s) gl_draw(s)
+typedef float Matrix[4][4];
+inline void pushmatrix() {glPushMatrix();}
+inline void popmatrix() {glPopMatrix();}
+inline void multmatrix(Matrix m) {glMultMatrixf((float *)m);}
+inline void color(int n) {glIndexi(n);}
+inline void rect(int x,int y,int r,int t) {gl_rect(x,y,r-x,t-y);}
+inline void rectf(int x,int y,int r,int t) {glRectf(x,y,r+1,t+1);}
+inline void recti(int x,int y,int r,int t) {gl_rect(x,y,r-x,t-y);}
+inline void rectfi(int x,int y,int r,int t) {glRecti(x,y,r+1,t+1);}
+inline void rects(int x,int y,int r,int t) {gl_rect(x,y,r-x,t-y);}
+inline void rectfs(int x,int y,int r,int t) {glRects(x,y,r+1,t+1);}
Index: NonGTP/FLTK/include/fltk/ProgressBar.h
===================================================================
--- NonGTP/FLTK/include/fltk/ProgressBar.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/ProgressBar.h	(revision 773)
@@ -0,0 +1,62 @@
+//
+// "$Id: ProgressBar.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// Progress indicator with bar that fills up and text showing the
+// job being done and expected time to go. Not fully implemented yet.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_ProgressBar_h
+#define fltk_ProgressBar_h
+
+#include "Widget.h"
+
+namespace fltk {
+
+class FL_API ProgressBar : public Widget {
+protected:
+  double mMin;
+  double mMax;
+  double mPresent;
+  double mStep;
+  bool mShowPct;
+  Color mTextColor;
+  void draw();
+public:
+  ProgressBar(int x, int y, int w, int h, const char *lbl = 0);
+  void range(double min, double max, double step = 1)  { mMin = min; mMax = max; mStep = step; };
+  void step(double step)		{ mPresent += step; redraw(); };
+  double minimum()	{ return mMin; }
+  double maximum()	{ return mMax; }
+  void minimum(double nm) { mMin = nm; };
+  void maximum(double nm) { mMax = nm; };
+  double position()	{ return mPresent; }
+  double step()		{ return mStep; }
+  void position(double pos) 	{ mPresent = pos; redraw(); }
+  void showtext(bool st)	{ mShowPct = st; }
+  bool showtext()		{ return mShowPct; }
+  void text_color(Color col)	{ mTextColor = col; }
+  Color text_color() 	{ return mTextColor; }
+};
+
+}
+#endif
+
Index: NonGTP/FLTK/include/fltk/Tooltip.h
===================================================================
--- NonGTP/FLTK/include/fltk/Tooltip.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Tooltip.h	(revision 773)
@@ -0,0 +1,86 @@
+// "$Id: Tooltip.h 4218 2005-03-31 05:14:08Z spitzak $"
+//
+// Copyright 1998-2005 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Tooltip_h
+#define fltk_Tooltip_h
+
+#include "MenuWindow.h"
+
+namespace fltk {
+
+class FL_API Tooltip : public MenuWindow {
+public:
+  Tooltip();
+  void draw();
+  void layout();
+
+  static float delay() { return delay_; }
+  static void delay(float f) { delay_ = f; }
+  static bool enabled() { return enabled_; }
+  static void enable(bool b = true) { enabled_ = b; }
+  static void disable() { enabled_ = false; }
+
+  typedef const char* (*Generator)(Widget*, void*);
+  static void enter(Widget*, const Rectangle&, Generator, void* = 0);
+  static void enter(Widget*, const Rectangle&, const char* text);
+  static void enter(Widget*);
+  static void current(Widget*);
+  static void exit();
+
+  static Widget* current_widget() { return current_widget_; }
+  static const Rectangle& current_rectangle() { return current_rectangle_; }
+  static Generator current_generator() { return current_generator_; }
+  static void* current_data()	{ return current_data_; }
+  static Tooltip* instance()	{ return instance_; }
+
+  static NamedStyle* default_style;
+#ifdef FLTK_1_WIDGET  // back-compatability section:
+  static Widget* current()	{ return current_widget_; }
+  static Font* font()		{ return default_style->textfont(); }
+  static void font(Font* i)	{ default_style->textfont(i); }
+  static float size()		{ return default_style->labelsize(); }
+  static void size(float s)	{ default_style->labelsize(s); }
+  static void textcolor(Color c){ default_style->labelcolor(c); }
+  static Color textcolor()	{ return default_style->labelcolor(); }
+  static void color(Color c)	{ default_style->color(c); }
+  static Color color()		{ return default_style->color(); }
+  static void box(Box* b)	{ default_style->box(b); }
+  static Box* box()		{ return default_style->box(); }
+#endif
+
+private:
+  static float delay_;
+  static bool enabled_;
+  static Widget* current_widget_;
+  static Rectangle current_rectangle_;
+  static Generator current_generator_;
+  static void* current_data_;
+  static Tooltip* instance_;
+  static void tooltip_timeout(void*);
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Tooltip.h 4218 2005-03-31 05:14:08Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/Threads.h
===================================================================
--- NonGTP/FLTK/include/fltk/Threads.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Threads.h	(revision 773)
@@ -0,0 +1,210 @@
+// Inline classes to provide a "toy" interface for threads and mutexes.
+// These are used by the fltk demo programs. They have been improved
+// quite a bit and may be useful for non-toy programs, too.
+
+#ifndef fltk_Threads_h
+#define fltk_Threads_h
+
+#ifndef _WIN32
+// pthreads:
+
+#include <pthread.h>
+
+namespace fltk {
+/*! \addtogroup multithreading
+  \{ */
+
+/** Hides whatever the system uses to identify a thread. Used so
+  the "toy" interface is portable. */
+typedef pthread_t Thread;
+
+/** Fork a new thread and make it run \a f(p). Returns negative number
+  on error, otherwise \a t is set to the new thread. */
+inline int create_thread(Thread& t, void *(*f) (void *), void* p) {
+  return pthread_create((pthread_t*)&t, 0, f, p);
+}
+
+/**
+  "Mutual-exclusion lock" for simple multithreaded programs.  Calling
+  lock() will wait until nobody else has the lock and then will
+  return. <i>Calling lock() more than once will "deadlock"!</i>
+  To avoid this, use RecursiveMutex.
+*/
+class Mutex {
+  friend class SignalMutex;
+  pthread_mutex_t mutex;
+  Mutex(const Mutex&);
+  Mutex& operator=(const Mutex&);
+protected:
+  Mutex(const pthread_mutexattr_t* a) {pthread_mutex_init(&mutex, a);}
+public:
+  Mutex() {pthread_mutex_init(&mutex, 0);}
+  void lock() {pthread_mutex_lock(&mutex);}
+  void unlock() {pthread_mutex_unlock(&mutex);}
+  bool trylock() {return pthread_mutex_trylock(&mutex) == 0;}
+  ~Mutex() {pthread_mutex_destroy(&mutex);}
+};
+
+/**
+  A portable "semaphore". A thread that holds this lock() can call
+  wait(), which will unlock it, then wait for another thread to
+  call signal(), then lock() it again.
+
+  The other thread can call signal() at any time, though usually
+  it will have called lock() as well, as the lock can be used to
+  protect the data that is actually being shared between the threads.
+
+  If more than one thread is in wait(), then calling signal_one()
+  will only wake one of them up. This may be more efficient, and
+  can be done safely if all threads that call wait() also call
+  signal_one() just before calling unlock().
+
+  Warning: wait() can return even if signal() was not called. You
+  must then check other data (protected by the lock()) to see if
+  the condition really is fulfilled. In many cases this is the
+  best implementation, it is also necessary to work around design
+  errors in Windows, where always returns after 1/2 second to
+  avoid a deadlock due to the non-atomic nature of Windows calls.
+*/
+class SignalMutex : public Mutex {
+  pthread_cond_t cond;
+public:
+  SignalMutex() : Mutex() {pthread_cond_init(&cond, 0);}
+  void signal() {pthread_cond_broadcast(&cond);}
+  void signal_one() {pthread_cond_signal(&cond);}
+  void wait() {pthread_cond_wait(&cond, &mutex);}
+};
+
+// Linux supports recursive locks, use them directly, with some cheating:
+#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) || defined(PTHREAD_MUTEX_RECURSIVE)
+
+extern pthread_mutexattr_t Mutex_attrib;
+
+class RecursiveMutex : public Mutex {
+public:
+  RecursiveMutex() : Mutex(&Mutex_attrib) {}
+};
+
+#else // standard pthread mutexes need a bit of work to be recursive:
+
+/**
+  "Mutual exclusion lock" to protect data in multithreaded programs.
+  This is a "recursive lock". Calling lock() will wait until nobody
+  else has the lock and then will take it. Calling lock() multiple
+  times by the same thread is allowed, and unlock() must then be
+  called the same number of times before another thread can get the
+  lock.
+*/
+class RecursiveMutex : public Mutex {
+  pthread_t owner;
+  int counter;
+public:
+  RecursiveMutex() : Mutex(), counter(0) {}
+  void lock() {
+    if (!counter || owner != pthread_self()) {
+      Mutex::lock();
+      owner = pthread_self();
+      counter = 1;
+    } else {
+      ++counter;
+    }
+  }
+  bool trylock() {
+    if (!counter || owner != pthread_self()) {
+      if (!Mutex::trylock()) return false;
+      owner = pthread_self();
+    }
+    counter++;
+    return true;
+  }
+  void unlock() {if (!--counter) Mutex::unlock();}
+};
+
+#endif
+
+#else // _WIN32:
+
+# define _WIN32_WINNT 0x0500
+# include <Windows.h>
+# include <process.h>
+// undefine some of the more annoying crap:
+# undef DELETE
+# undef ERROR
+# undef IN
+# undef OUT
+# undef POINT
+# undef far
+# undef max
+# undef min
+# undef near
+
+namespace fltk {
+
+typedef unsigned long Thread;
+
+inline int create_thread(Thread& t, void *(*f) (void *), void* p) {
+  return t = (Thread)_beginthread((void( __cdecl * )( void * ))f, 0, p);
+}
+
+class FL_API Mutex {
+  CRITICAL_SECTION cs;
+  Mutex(const Mutex&);
+  Mutex& operator=(const Mutex&);
+public:
+  Mutex() {InitializeCriticalSection(&cs);}
+  void lock() {while (!TryEnterCriticalSection(&cs)) SwitchToThread();}
+  void unlock() {LeaveCriticalSection(&cs);}
+  bool trylock() {return TryEnterCriticalSection(&cs);}
+  ~Mutex() {DeleteCriticalSection(&cs);}
+};
+
+// After many experiments we have determined that this very stupid
+// implementation has the lowest overhead:
+class FL_API SignalMutex : public Mutex {
+public:
+  SignalMutex() : Mutex() {}
+  void signal() {}
+  void signal_one() {}
+  void wait() {
+    // the following three calls should be atomic, sigh...
+    unlock();
+    SwitchToThread();
+    lock();
+  }
+};
+
+typedef Mutex RecursiveMutex;
+
+#endif
+
+/**
+   C++ convienence object for locking a Mutex.
+   Creating a local one of these will lock() the mutex and it means
+   unlock() will be called no matter how a function exits, because
+   the destructor ~Guard() does an unlock().
+
+\code
+   static fltk::Mutex mutex;
+   function() {
+     fltk::Guard guard(mutex);
+     do_stuff;
+     throw_exceptions;
+     if (test()) return;
+     etc;
+   }
+\endcode
+
+*/
+class FL_API Guard {
+  Mutex& lock;
+ public:
+  Guard(Mutex& m) : lock(m) {lock.lock();}
+  Guard(Mutex* m) : lock(*m) {lock.lock();}
+  ~Guard() {lock.unlock();}
+};
+
+/*! \} */
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/FL_API.h
===================================================================
--- NonGTP/FLTK/include/fltk/FL_API.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/FL_API.h	(revision 773)
@@ -0,0 +1,70 @@
+// "$Id: FL_API.h 3861 2004-10-01 07:07:53Z spitzak $"
+//
+// Stuff needed to compile DLL's on Windows. These symbols pollute all
+// the header files. Make sure you put them on anything you want to go
+// into a DLL!
+//
+// I also put here some typedefs that fltk uses everywhere.
+//
+// Copyright 1998-2004 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef FL_API
+
+#if !defined(DOXYGEN) && defined(_WIN32) && defined(FL_SHARED)
+#  ifdef FL_LIBRARY
+#    define FL_API	__declspec(dllexport)
+#  else
+#    define FL_API	__declspec(dllimport)
+#  endif
+#  ifdef FL_IMAGES_LIBRARY
+#    define FL_IMAGES_API	__declspec(dllexport)
+#  else
+#    define FL_IMAGES_API	__declspec(dllimport)
+#  endif
+#  ifdef FL_GLUT_LIBRARY
+#    define FL_GLUT_API		__declspec(dllexport)
+#  else
+#    define FL_GLUT_API		__declspec(dllimport)
+#  endif
+#  ifdef FL_FORMS_LIBRARY
+#    define FL_FORMS_API	__declspec(dllexport)
+#  else
+#    define FL_FORMS_API	__declspec(dllimport)
+#  endif
+#  ifdef FL_GL_LIBRARY
+#    define FL_GL_API		__declspec(dllexport)
+#  else
+#    define FL_GL_API		__declspec(dllimport)
+#  endif
+#else
+#  define FL_API
+#  define FL_IMAGES_API
+#  define FL_GLUT_API
+#  define FL_FORMS_API
+#  define FL_GL_API
+#endif
+
+typedef unsigned char uchar;
+
+#endif
+
+//
+// End of "$Id: FL_API.h 3861 2004-10-01 07:07:53Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/Choice.h
===================================================================
--- NonGTP/FLTK/include/fltk/Choice.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Choice.h	(revision 773)
@@ -0,0 +1,52 @@
+//
+// "$Id: Choice.h 4319 2005-05-08 19:18:50Z spitzak $"
+//
+// Popup list of items that the user can choose one of. Based on Motif
+// but modern equivalent is the OS/X popup choices.
+//
+// This is not a "combo box". You should try this, but if you insist
+// on that use the InputBrowser widget.
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Choice_h
+#define fltk_Choice_h
+
+#include "Menu.h"
+
+namespace fltk {
+
+class FL_API Choice : public Menu {
+public:
+  int handle(int);
+  int handle(int, const Rectangle&);
+  Choice(int,int,int,int,const char * = 0);
+  static NamedStyle* default_style;
+  void draw();
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Choice.h 4319 2005-05-08 19:18:50Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/CycleButton.h
===================================================================
--- NonGTP/FLTK/include/fltk/CycleButton.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/CycleButton.h	(revision 773)
@@ -0,0 +1,52 @@
+//
+// "$Id: CycleButton.h 3887 2004-11-12 06:50:20Z spitzak $"
+//
+// Popup list of items that the user can choose one of. Based on Motif
+// but modern equivalent is the OS/X popup choices.
+//
+// This is not a "combo box". You should try this, but if you insist
+// on that use the InputBrowser widget.
+//
+// Copyright 2004 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_CycleButton_h
+#define fltk_CycleButton_h
+
+#include "Menu.h"
+
+namespace fltk {
+
+class FL_API CycleButton : public Menu {
+public:
+  int handle(int);
+  CycleButton(int,int,int,int,const char * = 0);
+  static NamedStyle* default_style;
+protected:
+  void draw();
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: CycleButton.h 3887 2004-11-12 06:50:20Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/ShapedWindow.h
===================================================================
--- NonGTP/FLTK/include/fltk/ShapedWindow.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/ShapedWindow.h	(revision 773)
@@ -0,0 +1,51 @@
+// "$Id: ShapedWindow.h 3743 2004-08-02 07:35:18Z spitzak $"
+//
+// Copyright 1998-2004 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_ShapedWindow_h
+#define fltk_ShapedWindow_h
+
+#include <fltk/Window.h>
+#include <fltk/xbmImage.h>
+
+namespace fltk {
+
+class FL_API ShapedWindow : public Window {
+  public:
+    ShapedWindow(int W, int H, const char *l = 0)
+      : Window(W,H,l) { shape_ = 0; lw = lh = 0; changed = 0;}
+    ShapedWindow(int X, int Y, int W, int H, const char *l = 0)
+      : Window(X,Y,W,H,l) { shape_ = 0; lw = lh = 0;}
+    void shape(xbmImage* b) { shape_ = b; changed = 1; }
+    void shape(xbmImage& b) { shape_ =&b; changed = 1; }
+
+  protected:
+    virtual void draw();
+    xbmImage* shape_;
+    int lw, lh;
+    int changed;
+};
+
+}
+#endif
+
+//
+// End of "$Id: ShapedWindow.h 3743 2004-08-02 07:35:18Z spitzak $"
+//
Index: NonGTP/FLTK/include/fltk/MultiImage.h
===================================================================
--- NonGTP/FLTK/include/fltk/MultiImage.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/MultiImage.h	(revision 773)
@@ -0,0 +1,137 @@
+//
+// "$Id: MultiImage.h 4303 2005-05-01 03:33:52Z spitzak $"
+//
+// Image type that draws a different image depending on the flags,
+// for instace VALUE or SELECTED or HIGHLIGHT.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_MultiImage_h
+#define fltk_MultiImage_h
+
+#include "Symbol.h"
+
+namespace fltk {
+
+class FL_API MultiImage : public Symbol
+{
+  enum {MAXIMAGES = 8};
+  Symbol* images[MAXIMAGES];
+  Flags flags[MAXIMAGES];
+public:
+  void _measure(int&, int&) const;
+  void _draw(const Rectangle&) const;
+  void inset(Rectangle&) const;
+  bool fills_rectangle() const;
+  bool is_frame() const;
+
+  MultiImage(Symbol& image0,
+		Flags flags1, Symbol& image1) {
+    images[0] = &image0;
+    flags[1] = flags1; images[1] = &image1;
+    images[2] = 0;
+  }
+  MultiImage(Symbol& image0,
+		Flags flags1, Symbol& image1,
+		Flags flags2, Symbol& image2) {
+    images[0] = &image0;
+    flags[1] = flags1; images[1] = &image1;
+    flags[2] = flags2; images[2] = &image2;
+    images[3] = 0;
+  }
+  MultiImage(Symbol& image0,
+		Flags flags1, Symbol& image1,
+		Flags flags2, Symbol& image2,
+		Flags flags3, Symbol& image3) {
+    images[0] = &image0;
+    flags[1] = flags1; images[1] = &image1;
+    flags[2] = flags2; images[2] = &image2;
+    flags[3] = flags3; images[3] = &image3;
+    images[4] = 0;
+  }
+  MultiImage(Symbol& image0,
+		Flags flags1, Symbol& image1,
+		Flags flags2, Symbol& image2,
+		Flags flags3, Symbol& image3,
+		Flags flags4, Symbol& image4) {
+    images[0] = &image0;
+    flags[1] = flags1; images[1] = &image1;
+    flags[2] = flags2; images[2] = &image2;
+    flags[3] = flags3; images[3] = &image3;
+    flags[4] = flags4; images[4] = &image4;
+    images[5] = 0;
+  }
+  MultiImage(Symbol& image0,
+		Flags flags1, Symbol& image1,
+		Flags flags2, Symbol& image2,
+		Flags flags3, Symbol& image3,
+		Flags flags4, Symbol& image4,
+		Flags flags5, Symbol& image5) {
+    images[0] = &image0;
+    flags[1] = flags1; images[1] = &image1;
+    flags[2] = flags2; images[2] = &image2;
+    flags[3] = flags3; images[3] = &image3;
+    flags[4] = flags4; images[4] = &image4;
+    flags[5] = flags5; images[5] = &image5;
+    images[6] = 0;
+  }
+  MultiImage(Symbol& image0,
+		Flags flags1, Symbol& image1,
+		Flags flags2, Symbol& image2,
+		Flags flags3, Symbol& image3,
+		Flags flags4, Symbol& image4,
+		Flags flags5, Symbol& image5,
+		Flags flags6, Symbol& image6) {
+    images[0] = &image0;
+    flags[1] = flags1; images[1] = &image1;
+    flags[2] = flags2; images[2] = &image2;
+    flags[3] = flags3; images[3] = &image3;
+    flags[4] = flags4; images[4] = &image4;
+    flags[5] = flags5; images[5] = &image5;
+    flags[6] = flags6; images[6] = &image6;
+    images[7] = 0;
+  }
+  MultiImage(Symbol& image0,
+		Flags flags1, Symbol& image1,
+		Flags flags2, Symbol& image2,
+		Flags flags3, Symbol& image3,
+		Flags flags4, Symbol& image4,
+		Flags flags5, Symbol& image5,
+		Flags flags6, Symbol& image6,
+		Flags flags7, Symbol& image7) {
+    images[0] = &image0;
+    flags[1] = flags1; images[1] = &image1;
+    flags[2] = flags2; images[2] = &image2;
+    flags[3] = flags3; images[3] = &image3;
+    flags[4] = flags4; images[4] = &image4;
+    flags[5] = flags5; images[5] = &image5;
+    flags[6] = flags6; images[6] = &image6;
+    flags[7] = flags7; images[7] = &image7;
+  }
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: MultiImage.h 4303 2005-05-01 03:33:52Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/ColorChooser.h
===================================================================
--- NonGTP/FLTK/include/fltk/ColorChooser.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/ColorChooser.h	(revision 773)
@@ -0,0 +1,110 @@
+//
+// "$Id: ColorChooser.h 3769 2004-08-07 20:48:36Z spitzak $"
+//
+// Color chooser header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+// The color chooser object and the color chooser popup.  The popup
+// is just a window containing a single color chooser and some boxes
+// to indicate the current and cancelled color.
+
+#ifndef fltk_ColorChooser_h
+#define fltk_ColorChooser_h
+
+#include <fltk/Group.h>
+
+namespace fltk {
+
+class FL_API ccHueBox : public Widget {
+  int px, py;
+protected:
+  void draw();
+public:
+  int handle(int);
+  ccHueBox(int X, int Y, int W, int H) : Widget(X,Y,W,H) {
+  px = py = 0;}
+};
+
+class FL_API ccValueBox : public Widget {
+  int py;
+  bool is_alpha() const;
+protected:
+  void draw();
+public:
+  int handle(int);
+  ccValueBox(int X, int Y, int W, int H) : Widget(X,Y,W,H) {
+  py = 0;}
+};
+
+class FL_API ccCellBox : public Widget {
+public:
+  ccCellBox(int X, int Y, int W, int H) : Widget(X,Y,W,H) {}
+  void draw();
+  int handle(int);
+};
+
+class FL_API ColorChooser : public Group {
+  friend class ccHueBox;
+  friend class ccValueBox;
+  ccHueBox huebox;
+  ccValueBox valuebox;
+  ccValueBox alphabox;
+  ccCellBox cellbox;
+  float hue_, saturation_, value_;
+  float r_, g_, b_, a_;
+public:
+  float h() const {return hue_;}
+  float s() const {return saturation_;}
+  float v() const {return value_;}
+  float r() const {return r_;}
+  float g() const {return g_;}
+  float b() const {return b_;}
+  float a() const {return a_;}
+  Color value() const;
+  bool value(Color);
+  bool hsv(float,float,float);
+  bool rgb(float,float,float);
+  bool a(float);
+  void hide_a();
+  static void hsv2rgb(float, float, float,float&,float&,float&);
+  static void rgb2hsv(float, float, float,float&,float&,float&);
+  ColorChooser(int,int,int,int,const char* = 0);
+  void layout();
+  float setcell(int,float,float,float,float);
+  float getcell(int,float,float,float,float);
+};
+
+// Convience functions to pop-up a control panel:
+
+FL_API bool color_chooser(const char* name, float& r, float& g, float& b);
+FL_API bool color_chooser(const char* name, float& r, float& g, float& b, float& a);
+FL_API bool color_chooser(const char* name, uchar& r, uchar& g, uchar& b);
+FL_API bool color_chooser(const char* name, uchar& r, uchar& g, uchar& b, uchar& a);
+FL_API bool color_chooser(const char* name, Color& c);
+
+}
+
+#endif
+
+//
+// End of "$Id: ColorChooser.h 3769 2004-08-07 20:48:36Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/win32.h
===================================================================
--- NonGTP/FLTK/include/fltk/win32.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/win32.h	(revision 773)
@@ -0,0 +1,163 @@
+//
+// "$Id: win32.h 4571 2005-09-16 08:02:58Z spitzak $"
+//
+// _WIN32 header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+// Do not directly include this file, instead use <fltk/x.h>.  It will
+// include this file if _WIN32 is defined.  This is to encourage
+// portability of even the system-specific code...
+
+#ifndef FL_WIN32_H
+#define FL_WIN32_H
+
+#include <windows.h>
+#include <winuser.h>
+# undef OPAQUE
+# undef DELETE
+# undef ERROR
+# undef IN
+# undef OUT
+# undef POINT
+//# undef far
+# undef max
+# undef min
+//# undef near
+// In some of the distributions, the gcc header files are missing some stuff:
+#ifndef LPMINMAXINFO
+# define LPMINMAXINFO MINMAXINFO*
+#endif
+#ifndef VK_LWIN
+# define VK_LWIN 0x5B
+# define VK_RWIN 0x5C
+# define VK_APPS 0x5D
+#endif
+
+extern "C" {
+
+// Function pointer declarations
+
+typedef HWND (WINAPI *pfCreateWindowExW)(DWORD dwExStyle, LPCWSTR lpClassName, LPCWSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam);
+typedef HMODULE (WINAPI *pfLoadLibraryW)(LPCWSTR lpFileName);
+typedef BOOL (WINAPI *pfPeekMessage)(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg);
+typedef BOOL (WINAPI *pfGetMessage)(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax);
+typedef LRESULT (WINAPI *pfDispatchMessage)(const MSG *lpmsg);
+typedef BOOL (WINAPI *pfSetWindowTextW)(HWND hWnd, LPCWSTR lpString);
+typedef LRESULT (WINAPI *pfDefWindowProc)(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
+typedef BOOL (WINAPI *pfPostMessage)(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
+typedef int (WINAPI *pfMessageBoxW)(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType);
+
+typedef HFONT (WINAPI *pfCreateFontIndirectW)(CONST LOGFONTW *);
+typedef BOOL (WINAPI *pfGetTextMetricsW)(HDC, LPTEXTMETRICW);
+
+extern pfCreateWindowExW __CreateWindowExW;
+extern pfLoadLibraryW	 __LoadLibraryW;
+extern pfPeekMessage	 __PeekMessage;
+extern pfGetMessage	 __GetMessage;
+extern pfDispatchMessage __DispatchMessage;
+extern pfSetWindowTextW	 __SetWindowTextW;
+extern pfDefWindowProc	 __DefWindowProc;
+extern pfPostMessage	 __PostMessage;
+extern pfMessageBoxW	 __MessageBoxW;
+
+extern pfCreateFontIndirectW __CreateFontIndirectW;
+extern pfGetTextMetricsW     __GetTextMetricsW;
+
+}; /* extern "C" */
+
+namespace fltk {
+
+////////////////////////////////////////////////////////////////
+// constant information about the display:
+
+extern FL_API void	open_display();
+extern FL_API void	close_display();
+extern FL_API HINSTANCE	xdisplay;
+extern FL_API HPALETTE	xpalette; // non-zero only on 8-bit displays!
+
+////////////////////////////////////////////////////////////////
+// event handling:
+
+extern FL_API MSG msg;
+
+////////////////////////////////////////////////////////////////
+// drawing functions:
+
+extern FL_API HDC	dc;
+extern FL_API HDC	getDC();
+extern FL_API HFONT	xfont();
+extern FL_API TEXTMETRICW* textmetric();
+extern FL_API COLORREF	current_xpixel;
+extern FL_API COLORREF	xpixel(Color i);
+extern FL_API HPEN	setpen();
+extern FL_API HBRUSH	setbrush();
+extern FL_API void	clip_region(HRGN);
+extern FL_API HRGN	clip_region();
+
+extern FL_API void	draw_into(HBITMAP, int w, int h);
+extern FL_API void	stop_drawing(HBITMAP);
+extern FL_API void	stop_drawing(HWND);
+
+////////////////////////////////////////////////////////////////
+#ifdef fltk_Window_h // only include this if <fltk/Fl_Window.h> was included
+
+// When fltk tells X about a window, one of these objects is created.
+// Warning: this object is highly subject to change!  It's definition
+// is only here so that fl_xid can be declared inline:
+
+class FL_API CreatedWindow {
+public:
+  HWND xid;
+  HDC dc;
+  HBITMAP backbuffer;
+  HDC bdc;
+  Window* window;
+  HRGN region;
+  void expose(const Rectangle&);
+  CreatedWindow* next;
+  bool wait_for_expose;
+  bool backbuffer_bad; // used for XDBE
+  bool overlay; // true if redraw_overlay was called
+  HCURSOR cursor;
+  const Widget* cursor_for;
+  static CreatedWindow* first;
+  static CreatedWindow* find(const Window* window) {return window->i;}
+  void set_minmax(LPMINMAXINFO minmax);
+  static void create(Window*);
+};
+
+// convert xid <-> Window:
+inline HWND xid(const Window*w) {return CreatedWindow::find(w)->xid;}
+Window* find(HWND xid);
+
+extern FL_API HCURSOR default_cursor;
+
+#endif //Fl_Window_H
+////////////////////////////////////////////////////////////////
+
+}
+
+#endif
+
+//
+// End of "$Id: win32.h 4571 2005-09-16 08:02:58Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/LightButton.h
===================================================================
--- NonGTP/FLTK/include/fltk/LightButton.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/LightButton.h	(revision 773)
@@ -0,0 +1,45 @@
+//
+// "$Id: LightButton.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// Forms/XForms/Flame style button with indicator light on left
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Light_Button_h
+#define fltk_Light_Button_h
+
+#include "CheckButton.h"
+
+namespace fltk {
+
+class FL_API LightButton : public CheckButton {
+public:
+  LightButton(int x,int y,int w,int h,const char *l = 0);
+  static NamedStyle* default_style;
+  static void default_glyph(const Widget*, int, int,int,int,int, Flags);
+};
+
+}
+#endif
+
+//
+// End of "$Id: LightButton.h 2973 2003-04-20 03:17:51Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/run.h
===================================================================
--- NonGTP/FLTK/include/fltk/run.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/run.h	(revision 773)
@@ -0,0 +1,103 @@
+//
+// "$Id: run.h 4218 2005-03-31 05:14:08Z spitzak $"
+//
+// The basic fltk runtime. Every program needs to call this somewhere.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_run_h
+#define fltk_run_h
+
+#include "FL_API.h"
+#ifdef check
+# undef check
+#endif
+
+namespace fltk {
+
+/*! \addtogroup startup
+  \{ */
+FL_API float version();
+FL_API void display(const char*);
+FL_API int arg(int, char**, int&);
+FL_API int args(int, char**, int&, int (*)(int,char**,int&) = 0);
+extern FL_API const char* const help;
+FL_API void args(int, char**);
+FL_API bool enable_tablet_events();
+
+/*! \} */
+
+/*! \addtogroup execution
+  \{ */
+FL_API int wait();
+FL_API int wait(float time);
+FL_API int check();
+FL_API int ready();
+FL_API int run();
+FL_API void flush();
+FL_API void redraw();
+extern FL_API int damage_;
+inline void damage(int d) {damage_ = d;}
+inline int damage() {return damage_;}
+
+/*! Type of function passed to add_timeout(), add_check(), and add_idle() */
+typedef void (*TimeoutHandler)(void*);
+
+FL_API void add_timeout(float t, TimeoutHandler, void* v = 0);
+FL_API void repeat_timeout(float t, TimeoutHandler,void* = 0);
+FL_API bool has_timeout(TimeoutHandler, void* = 0);
+FL_API void remove_timeout(TimeoutHandler, void* = 0);
+
+FL_API void add_check(TimeoutHandler, void* = 0);
+FL_API bool has_check(TimeoutHandler, void* = 0);
+FL_API void remove_check(TimeoutHandler, void* = 0);
+
+FL_API void add_idle(TimeoutHandler, void* = 0);
+FL_API bool has_idle(TimeoutHandler, void* = 0);
+FL_API void remove_idle(TimeoutHandler, void* = 0);
+
+// For back-compatability only:
+extern FL_API void (*idle)();
+inline void set_idle(void (*cb)()) {idle = cb;}
+
+/*! Type of function passed to add_fd() */
+typedef void (*FileHandler)(int fd, void*);
+enum {READ = 1, WRITE = 4, EXCEPT = 8};
+FL_API void add_fd(int fd, int when, FileHandler, void* =0);
+FL_API void add_fd(int fd, FileHandler, void* = 0);
+FL_API void remove_fd(int, int when = -1);
+
+/*! \} */
+
+extern FL_API bool in_main_thread_;
+
+/*! \addtogroup multithreading
+  \{ */
+FL_API void lock();
+FL_API void unlock();
+FL_API void awake(void* message = 0);
+FL_API void* thread_message();
+inline bool in_main_thread() {return in_main_thread_;}
+/*! \} */
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/Menu.h
===================================================================
--- NonGTP/FLTK/include/fltk/Menu.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Menu.h	(revision 773)
@@ -0,0 +1,150 @@
+// "$Id: Menu.h 4319 2005-05-08 19:18:50Z spitzak $"
+//
+// Copyright 1998-2005 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Menu_h
+#define fltk_Menu_h
+
+#include "Group.h"
+
+namespace fltk {
+
+class FL_API Menu;
+
+class FL_API List {
+public:
+  virtual int children(const Menu*, const int* indexes, int level);
+  virtual Widget* child(const Menu*, const int* indexes, int level);
+  virtual void flags_changed(const Menu*, Widget*);
+  //virtual ~List() {} // not done as it slows program exit
+};
+
+enum { // Special flag values for add(), you can also use Flags.h values
+  // These match values from Fl_Menu_Item in fltk 1.0:
+  MENU_TOGGLE = 2,
+  MENU_RADIO = 8,
+  SUBMENU = 0x40,
+  MENU_DIVIDER = 0x80
+};
+
+class FL_API Menu : public Group {
+
+public:
+
+  Menu(int,int,int,int, const char* l=0);
+  List* list() const {return list_;}
+  void list(List* l) {list_ = l;}
+  void layout();
+
+  static NamedStyle* default_style;
+
+  int children(const int* indexes, int level) const ;
+  int children(int index) const;
+  int children() const ;
+  Widget* child(const int* indexes, int level) const ;
+  Widget* child(int index) const ;
+
+  Widget* item() const {return item_;}
+  Widget* item(Widget* v) {return item_ = v;}
+
+  bool set_item(const int* indexes, int level);
+  Widget* get_item();
+  int value() const {return Group::focus_index();}
+  bool value(int v);
+  int  size() const {return children();}
+
+  void layout_in(Widget*,const int* indexes, int level) const;
+  void draw_in(Widget*,const int* indexes, int level, int, int) const;
+  int find_selected(Widget*,const int* indexes, int level, int, int) const;
+  Rectangle get_location(Widget*,const int* indexes, int level, int) const;
+
+  int popup(const Rectangle&, const char* title=0,bool menubar=false);
+  int handle_shortcut();
+  static void default_callback(Widget*, void*);
+  void execute(Widget*);
+  void global();
+
+  Widget* find(const char*) const;
+  void remove(const char* l) { delete find(l); }
+  Widget* add(const char*, unsigned shortcut, Callback*, void* = 0, int = 0);
+  Widget* replace(const char*, unsigned shortcut, Callback*, void* = 0, int = 0);
+  Widget* insert(int n, const char*, unsigned shortcut, Callback*, void* = 0, int = 0);
+  Widget* add(const char*, void* = 0);
+  Widget* add_many(const char*);
+  Widget* replace(const char*, void* = 0);
+  Widget* insert(int n, const char*, void* = 0);
+
+  // Undo the overrides of stuff from Group:
+  void add(Widget& o) {Group::add(o);}
+  void add(Widget* o) {add(*o);}
+  void insert(Widget& o, int n) {Group::insert(o, n);}
+  void replace(int index, Widget& o) {Group::replace(index, o);}
+  void replace(Widget& old, Widget& o) {Group::replace(old,o);}
+  void remove(int index) {Group::remove(index);}
+  void remove(Widget& o) {Group::remove(o);}
+  void remove(Widget* o) {Group::remove(o);}
+
+#ifdef Fl_Menu_Item_h
+  // Commented-out methods cannot be emulated.
+//const Fl_Menu_Item* test_shortcut();
+//Fl_Menu_Item* menu() const;
+  void copy(const Fl_Menu_Item* m, void* data = 0) {clear(); m->add_to(this,data);}
+  void menu(const Fl_Menu_Item* m) {copy(m,0);}
+  void replace(int n, const char* s) { child(n)->label(s); }
+  void replace(const char* l, const char* s) { find(l)->label(s); }
+  void shortcut(const char* l, unsigned s) { find(l)->shortcut(s); }
+  void shortcut(unsigned s) {Widget::shortcut(s);}
+  unsigned shortcut() const {return Widget::shortcut();}
+  void shortcut(int i, unsigned s) { child(i)->shortcut(s); }
+//int index(Fl_Menu_Item* m) const { return m - menu_; }
+//int index(const char* label) const;
+//void replace(Fl_Menu_Item* m, const char* s) { replace(index(m), s); }
+//void remove(Fl_Menu_Item* m) { remove(index(m)); }
+//void shortcut(Fl_Menu_Item* m, unsigned s) {shortcut(index(m), s);}
+//void mode(int i,int x);
+//void mode(Fl_Menu_Item* m, int x) {mode(index(m), x);}
+//void mode(const char* l, int x) {mode(index(l), x);}
+  unsigned mode(int i) const {return child(i)->flags() >> 8;}
+//unsigned mode(Fl_Menu_Item* m) const {return mode(index(m));}
+  unsigned mode(const char* l) const {return find(l)->flags() >> 8;}
+
+  // in fltk 1.0 these returned/took an Fl_Menu_Item*:
+  Widget* mvalue() {return item();}
+//void value(Widget* o) {set_item(o);}
+
+  const char *text(int i) const {return i >= 0 ? child(i)->label() : 0;}
+  const char *text() const {Widget* w = item(); return w ? w->label() : 0;}
+#endif
+
+protected:
+  Widget *try_popup(const Rectangle&,const char* title=0,bool menubar=false);
+	
+private:
+  List* list_;
+  Widget* item_;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Menu.h 4319 2005-05-08 19:18:50Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/PackedGroup.h
===================================================================
--- NonGTP/FLTK/include/fltk/PackedGroup.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/PackedGroup.h	(revision 773)
@@ -0,0 +1,55 @@
+//
+// "$Id: PackedGroup.h 3418 2004-05-15 20:52:47Z spitzak $"
+//
+// Group that places all it's child widgets packed against the
+// edges. The edge is decided by the PACK_VERTICAL flag stored on
+// the child and by whether the child is before or after the
+// resizable() child.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_PackedGroup_h
+#define fltk_PackedGroup_h
+
+#include "Group.h"
+
+namespace fltk {
+
+class FL_API PackedGroup : public Group {
+  int spacing_;
+public:
+  enum { // values for type(int), for back-compatability
+    NORMAL	= GROUP_TYPE,
+    ALL_CHILDREN_VERTICAL = GROUP_TYPE+1
+  };
+  void layout();
+  PackedGroup(int x,int y,int w ,int h,const char *l = 0);
+  int spacing() const {return spacing_;}
+  void spacing(int i) {spacing_ = i;}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: PackedGroup.h 3418 2004-05-15 20:52:47Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/SecretInput.h
===================================================================
--- NonGTP/FLTK/include/fltk/SecretInput.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/SecretInput.h	(revision 773)
@@ -0,0 +1,47 @@
+//
+// "$Id: SecretInput.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// One-line text input field that draws asterisks instead of the
+// letters. It also prevents the user from cutting or copying the
+// text and then pasting it somewhere.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_SecretInput_h
+#define fltk_SecretInput_h
+
+#include "Input.h"
+
+namespace fltk {
+
+class SecretInput : public Input {
+public:
+  SecretInput(int x,int y,int w,int h,const char *l = 0)
+    : Input(x,y,w,h,l) {type(SECRET);}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: SecretInput.h 2973 2003-04-20 03:17:51Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/IntInput.h
===================================================================
--- NonGTP/FLTK/include/fltk/IntInput.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/IntInput.h	(revision 773)
@@ -0,0 +1,42 @@
+//
+// "$Id: IntInput.h 3190 2004-01-06 06:43:03Z spitzak $"
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_IntInput_h
+#define fltk_IntInput_h
+
+#include "FloatInput.h"
+
+namespace fltk {
+
+class FL_API IntInput : public FloatInput {
+public:
+  IntInput(int x,int y,int w,int h,const char *l = 0)
+    : FloatInput(x,y,w,h,l) {type(INT);}
+};
+
+}
+#endif
+
+//
+// End of "$Id: IntInput.h 3190 2004-01-06 06:43:03Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/Cursor.h
===================================================================
--- NonGTP/FLTK/include/fltk/Cursor.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Cursor.h	(revision 773)
@@ -0,0 +1,32 @@
+// This is likely to change!
+
+#ifndef fltk_Cursor_h
+#define fltk_Cursor_h
+
+#include "FL_API.h"
+
+namespace fltk {
+
+struct Cursor; // this is not public
+
+class Image;
+Cursor* cursor(Image*, int x, int y);
+extern FL_API Cursor* cursor(void *raw);
+
+extern FL_API Cursor* const CURSOR_DEFAULT; // == NULL
+extern FL_API Cursor* const CURSOR_ARROW;
+extern FL_API Cursor* const CURSOR_CROSS;
+extern FL_API Cursor* const CURSOR_WAIT;
+extern FL_API Cursor* const CURSOR_INSERT;
+extern FL_API Cursor* const CURSOR_HAND;
+extern FL_API Cursor* const CURSOR_HELP;
+extern FL_API Cursor* const CURSOR_MOVE;
+extern FL_API Cursor* const CURSOR_NS;
+extern FL_API Cursor* const CURSOR_WE;
+extern FL_API Cursor* const CURSOR_NWSE;
+extern FL_API Cursor* const CURSOR_NESW;
+extern FL_API Cursor* const CURSOR_NO;
+extern FL_API Cursor* const CURSOR_NONE;
+
+}
+#endif
Index: NonGTP/FLTK/include/fltk/Color.h
===================================================================
--- NonGTP/FLTK/include/fltk/Color.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Color.h	(revision 773)
@@ -0,0 +1,118 @@
+//
+// "$Id: Color.h 3203 2004-01-25 06:55:06Z spitzak $"
+//
+// Color value. These are 32-bit unsigned numbers with RGB as the
+// upper 3 bytes. The lowest-order byte is treated as an "index"
+// for back compatabilty, or as an "alpha", depending on context.
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Color_h
+#define fltk_Color_h
+
+#include "FL_API.h"
+#include "Flags.h"
+
+namespace fltk {
+
+/*! \addtogroup color
+  \{ */
+
+typedef unsigned Color;
+
+/*! Symbolic names for some of the indexed colors.
+
+  The 24-entry "gray ramp" is modified by fltk::set_background() so
+  that the color fltk::GRAY75 is the background color, and the others
+  are a nice range from black to white. These are used to draw box
+  edges. The gray levels are chosen to be evenly spaced, listed here
+  is the actual 8-bit and decimal gray level assigned by default.
+  Also listed here is the letter used for fltk::FrameBox and the old
+  fltk1.1 names used for these levels.
+
+  The remiander of the colormap is a 5x8x5 color cube. This cube is
+  used to dither images on 8-bit screens X colormaps to reduce the
+  number of colors used.
+*/
+enum {
+  NO_COLOR	= 0, /*!< Black, empty place holder in Style */
+
+		      // Hex   Decimal FrameBox Old names
+  GRAY00	= 32, /*!< 00	.00	A       fltk1: GRAY0 GRAY_RAMP */
+  GRAY05	= 33, /*!< 0d	.05	B */
+  GRAY10	= 34, /*!< 1a	.10	C */
+  GRAY15	= 35, /*!< 26	.15	D */
+  GRAY20	= 36, /*!< 31	.19	E */
+  GRAY25	= 37, /*!< 3d	.24	F */
+  GRAY30	= 38, /*!< 48	.28	G */
+  GRAY33	= 39, /*!< 55	.33	H	fltk1: DARK3 */
+  GRAY35	= 40, /*!< 5f	.37	I */
+  GRAY40	= 41, /*!< 6a	.42	J	(18% gray card) */
+  GRAY45	= 42, /*!< 75	.46	K */
+  GRAY50	= 43, /*!< 80	.50	L */
+  GRAY55	= 44, /*!< 8a	.54	M */
+  GRAY60	= 45, /*!< 95	.58	N	fltk1: DARK2 */
+  GRAY65	= 46, /*!< a0	.63	O */
+  GRAY66	= 47, /*!< aa	.67	P	fltk1: DARK1 INACTIVE_COLOR */
+  GRAY70	= 48, /*!< b5	.71	Q */
+  GRAY75	= 49, /*!< c0	.75	R	fltk1: GRAY SELECTION_COLOR */
+  GRAY80	= 50, /*!< cb	.80	S */
+  GRAY85	= 51, /*!< d5	.84	T	fltk1: LIGHT1 */
+  //unnamed entry	   e0	.88	U
+  GRAY90	= 53, /*!< ea	.92	V	fltk1: LIGHT2 */
+  GRAY95	= 54, /*!< f5	.96	W */
+  GRAY99	= 55, /*!< ff  1.00	X	fltk1: LIGHT3 */
+
+  BLACK		= 0x38, /*!< Corner of color cube */
+  RED		= 0x58, /*!< Corner of color cube */
+  GREEN		= 0x3f, /*!< Corner of color cube */
+  YELLOW	= 0x5f, /*!< Corner of color cube */
+  BLUE		= 0xd8, /*!< Corner of color cube */
+  MAGENTA	= 0xf8, /*!< Corner of color cube */
+  CYAN		= 0xdf, /*!< Corner of color cube */
+  WHITE		= 0xff, /*!< Corner of color cube */
+
+  WINDOWS_BLUE	= 0x88 /*!< default selection_color */
+};
+
+inline Color color(unsigned char r, unsigned char g, unsigned char b) {
+  return Color((r<<24)+(g<<16)+(b<<8));}
+inline Color color(unsigned char g) {
+  return Color(g*0x1010100u);}
+FL_API Color color(const char*);
+FL_API Color lerp(Color c0, Color c1, float f);
+FL_API Color inactive(Color);
+FL_API Color inactive(Color, Flags f);
+FL_API Color contrast(Color fg, Color bg);
+FL_API void split_color(Color c, unsigned char& r, unsigned char& g, unsigned char& b);
+FL_API void set_color_index(Color index, Color);
+FL_API Color get_color_index(Color index);
+FL_API void set_background(Color);
+FL_API Color nearest_index(Color);
+
+/* \} */
+}
+
+#endif
+
+//
+// End of "$Id: Color.h 3203 2004-01-25 06:55:06Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/LabelType.h
===================================================================
--- NonGTP/FLTK/include/fltk/LabelType.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/LabelType.h	(revision 773)
@@ -0,0 +1,61 @@
+//
+// "$Id: LabelType.h 4303 2005-05-01 03:33:52Z spitzak $"
+//
+// A LabelType determines how to draw the text of the label. This
+// is not used very much, it can be used to draw engraved or shadowed
+// labels. You could also put in code that interprets the text of
+// the label and draws anything you want with it.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_LabelType_h
+#define fltk_LabelType_h
+
+#include "Flags.h"
+#include "Rectangle.h"
+
+namespace fltk {
+
+class Style;
+
+class FL_API LabelType {
+public:
+  virtual void draw(const char*, const Rectangle&, Flags) const;
+  const char* name;
+  LabelType* next;
+  static LabelType* first;
+  LabelType(const char* n) : name(n), next(first) {first = this;}
+  static LabelType* find(const char* name);
+  // virtual ~LabelType() {} // not done as it slows program exit
+};
+
+// You can use this to draw overlapping patterns
+class FL_API EngravedLabel : public LabelType {
+  const int* data;
+public:
+  void draw(const char*, const Rectangle&, Flags) const;
+  EngravedLabel(const char * n, const int p[][3])
+    : LabelType(n), data((const int*)p) {}
+};
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/MultiLineOutput.h
===================================================================
--- NonGTP/FLTK/include/fltk/MultiLineOutput.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/MultiLineOutput.h	(revision 773)
@@ -0,0 +1,47 @@
+//
+// "$Id: MultiLineOutput.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// Displays a multi-line sequence of text, the user can select text
+// and copy it to other programs. Does not have any scrollbars.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_MultiLineOutput_h
+#define fltk_MultiLineOutput_h
+
+#include "Output.h"
+
+namespace fltk {
+
+// This class is entirely inline.  If that changes, add FL_API to its declaration
+class MultiLineOutput : public Output {
+public:
+    MultiLineOutput(int x,int y,int w,int h,const char *l = 0)
+      : Output(x,y,w,h,l) {type(MULTILINE);}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: MultiLineOutput.h 2973 2003-04-20 03:17:51Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/Scrollbar.h
===================================================================
--- NonGTP/FLTK/include/fltk/Scrollbar.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Scrollbar.h	(revision 773)
@@ -0,0 +1,63 @@
+//
+// "$Id: Scrollbar.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// Scrollbar, controls an integer position of a window of a given
+// size inside a data set of a given total size.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Scrollbar_h
+#define fltk_Scrollbar_h
+
+#include "Slider.h"
+
+namespace fltk {
+
+class FL_API Scrollbar : public Slider {
+
+public:
+  Scrollbar(int x,int y,int w,int h, const char *l = 0);
+  static NamedStyle* default_style;
+
+  int value() {return int(Slider::value());}
+  int value(int position, int size, int top, int total);
+  int handle(int);
+
+  int pagesize() const {return pagesize_;}
+  void pagesize(int a) {pagesize_ = a;}
+
+protected:
+  void draw();
+
+private:
+  int pagesize_;
+  static void timeout_cb(void*);
+  void increment_cb();
+
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Scrollbar.h 2973 2003-04-20 03:17:51Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/TabGroup.h
===================================================================
--- NonGTP/FLTK/include/fltk/TabGroup.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/TabGroup.h	(revision 773)
@@ -0,0 +1,70 @@
+//
+// "$Id: TabGroup.h 4218 2005-03-31 05:14:08Z spitzak $"
+//
+// For making a "tabbed dialog box". Each child widget creates a tab.
+// Only one is visible at a time. This works best if all the children
+// have the same size and they don't cover a strip at the top for the
+// tabs.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_TabGroup_h
+#define fltk_TabGroup_h
+
+#include "Group.h"
+
+namespace fltk {
+
+class FL_API TabGroup : public Group {
+
+public:
+  int handle(int);
+
+  TabGroup(int,int,int,int,const char * = 0);
+  static NamedStyle* default_style;
+
+  int value();
+  bool value(int);
+  int which(int event_x, int event_y);
+  Widget *selected_child();
+  bool selected_child(Widget *);
+  void set_draw_outline( bool draw_outline );
+
+protected:
+  void draw();
+
+private:
+  int push(Widget *);
+  int tab_positions(int*, int*);
+  int tab_height();
+  void draw_tab(int x1, int x2, int W, int H, Widget* o, int sel=0);
+  void draw_tab_background();
+
+  bool _drawOutline;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: TabGroup.h 4218 2005-03-31 05:14:08Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/dirent.h
===================================================================
--- NonGTP/FLTK/include/fltk/dirent.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/dirent.h	(revision 773)
@@ -0,0 +1,31 @@
+//
+// "$Id: dirent.h 4059 2005-03-01 08:46:30Z spitzak $"
+//
+// Directory header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+/* this file is for back-compatability only */
+#include "filename.h"
+
+//
+// End of "$Id: dirent.h 4059 2005-03-01 08:46:30Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/Monitor.h
===================================================================
--- NonGTP/FLTK/include/fltk/Monitor.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Monitor.h	(revision 773)
@@ -0,0 +1,46 @@
+// "$Id: Monitor.h 3961 2005-01-24 08:07:59Z spitzak $"
+//
+// Copyright 1998-2004 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Monitor_h
+#define fltk_Monitor_h
+
+#include "Rectangle.h"
+
+namespace fltk {
+
+class FL_API Monitor : public Rectangle {
+  int depth_;
+  float dpi_x_;
+  float dpi_y_;
+ public:
+  Rectangle work; // Allows you to do rect->work.x(), etc.
+  int depth() const {return depth_;}
+  float dpi_x() const {return dpi_x_;}
+  float dpi_y() const {return dpi_y_;}
+  float dpi() const {return dpi_y_;}
+  static int list(const Monitor**);
+  static const Monitor& all();
+  static const Monitor& find(int x, int y);
+};
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/Box.h
===================================================================
--- NonGTP/FLTK/include/fltk/Box.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Box.h	(revision 773)
@@ -0,0 +1,75 @@
+//
+// "$Id: Box.h 4303 2005-05-01 03:33:52Z spitzak $"
+//
+// Define your own values for box() on a widget by making one of these.
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Box_h
+#define fltk_Box_h
+
+#include "Color.h"
+#include "Flags.h"
+#include "Symbol.h"
+
+namespace fltk {
+
+typedef Symbol Box;
+
+class FL_API FrameBox : public Box {
+protected:
+  const char* data_;
+  const FrameBox* down;
+  int dx, dy, dw, dh;
+public:
+  const char* data() const {return data_;}
+  void _draw(const Rectangle&) const;
+  void inset(Rectangle&) const;
+  bool fills_rectangle() const;
+  bool is_frame() const;
+  FrameBox(const char* n, const char* c, const FrameBox* d=0);
+};
+
+class FL_API FlatBox : public Box {
+public:
+  void _draw(const Rectangle&) const;
+  bool fills_rectangle() const;
+  bool is_frame() const;
+  FlatBox(const char* n);
+};
+
+class FL_API HighlightBox : public FlatBox {
+  const Box* down;
+public:
+  void _draw(const Rectangle&) const;
+  void inset(Rectangle&) const;
+  bool fills_rectangle() const;
+  bool is_frame() const;
+  HighlightBox(const char* n, const Box* d);
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Box.h 4303 2005-05-01 03:33:52Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/FileIcon.h
===================================================================
--- NonGTP/FLTK/include/fltk/FileIcon.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/FileIcon.h	(revision 773)
@@ -0,0 +1,103 @@
+//
+// "$Id: FileIcon.h 2871 2002-12-10 02:01:07Z easysw $"
+//
+// Fl_FileIcon definitions for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1997-1999 by Easy Software Products.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_FileIcon_h
+#define fltk_FileIcon_h
+
+#include "FL_API.h"
+#include "Color.h"
+
+namespace fltk {
+
+  // This should be some kind of subclass of Image
+
+class FL_API FileIcon
+{
+  static FileIcon *first_;	// Pointer to first icon/filetype
+  FileIcon	*next_;		// Pointer to next icon/filetype
+  const char	*pattern_;	// Pattern string
+  int		type_;		// Match only if directory or file?
+  int		num_data_;	// Number of data elements
+  int		alloc_data_;	// Number of allocated elements
+  short		*data_;		// Icon data
+
+  public:
+
+  enum				// File types
+  {
+    ANY,			// Any kind of file
+    PLAIN,			// Only plain files
+    FIFO,			// Only named pipes
+    DEVICE,			// Only character and block devices
+    LINK,			// Only symbolic links
+    DIR 			// Only directories
+  };
+
+  enum				// Data opcodes
+  {
+    END,			// End of primitive/icon
+    COLOR,			// Followed by color index
+    LINE,			// Start of line
+    CLOSEDLINE,			// Start of closed line
+    POLYGON,			// Start of polygon
+    OUTLINEPOLYGON,		// Followed by outline color
+    VERTEX			// Followed by scaled X,Y
+  };
+
+  FileIcon(const char *p, int t, int nd = 0, short *d = 0);
+  ~FileIcon();
+
+  short		*add(short d);
+  short		*add_color(short c)
+		{ short *d = add(COLOR); add(c); return (d); }
+  short		*add_vertex(int x, int y)
+		{ short *d = add(VERTEX); add(x); add(y); return (d); }
+  short		*add_vertex(float x, float y)
+		{ short *d = add(VERTEX); add((int)(x * 10000.0));
+		  add((int)(y * 10000.0)); return (d); }
+  void		clear() { num_data_ = 0; }
+  void		draw(int x, int y, int w, int h, Color ic, int active = 1);
+  //  void		label(Widget *w);
+//  static void	labeltype(const Label *o, int x, int y, int w, int h, Align a);
+  void		load(const char *f);
+  void		load_fti(const char *fti);
+  void		load_xpm(const char *xpm);
+  const char	*pattern() { return (pattern_); }
+  int		size() { return (num_data_); }
+  int		type() { return (type_); }
+  short		*value() { return (data_); }
+
+  static FileIcon *find(const char *filename, int filetype = ANY);
+  static FileIcon *first() { return (first_); }
+  static void	load_system_icons(void);
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: FileIcon.h 2871 2002-12-10 02:01:07Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/error.h
===================================================================
--- NonGTP/FLTK/include/fltk/error.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/error.h	(revision 773)
@@ -0,0 +1,18 @@
+/* Functions to report errors and possibly kill the program */
+
+#ifndef fltk_error_h
+#define fltk_error_h
+
+#include "FL_API.h"
+
+namespace fltk {
+
+/*! \addtogroup execution
+  \{ */
+extern FL_API void (*warning)(const char*, ...);
+extern FL_API void (*error)(const char*, ...);
+extern FL_API void (*fatal)(const char*, ...);
+/*! \} */
+
+}
+#endif
Index: NonGTP/FLTK/include/fltk/math.h
===================================================================
--- NonGTP/FLTK/include/fltk/math.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/math.h	(revision 773)
@@ -0,0 +1,92 @@
+//
+// "$Id: math.h 4303 2005-05-01 03:33:52Z spitzak $"
+//
+// The purpose of this header file is to make math.h look the same as
+// Unix on other operating systems.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fl_math_h
+#define fl_math_h
+
+#include <math.h>
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+/* things missing from <math.h> on Windows: */
+# include <float.h>
+
+# ifndef M_PI
+#  define M_PI		3.14159265358979323846
+#  define M_PI_2	1.57079632679489661923
+#  define M_PI_4	0.78539816339744830962
+#  define M_1_PI	0.31830988618379067154
+#  define M_2_PI	0.63661977236758134308
+#  define M_SQRT2	1.41421356237309504880
+#  define M_SQRT1_2	0.70710678118654752440
+# endif
+
+# define rint(v)	floor((v)+.5)
+# define copysign	_copysign
+# define drand48()	((double)rand()/RAND_MAX)
+# define srand48(n)	srand((n));
+
+#endif
+
+#ifdef __EMX__
+# include <float.h>
+#endif
+
+// define missing 'f' versions of functions:
+#if 1 // All systems seem to be missing rintf:
+# define rintf(v)	floorf((v)+.5f)
+#endif
+#if defined(__APPLE__) || defined(__sun__) || defined(__BORLANDC__)
+# define floorf(a)	((float)floor(a))
+# define ceilf(a)	((float)ceil(a))
+# define fmodf(a,b)	((float)fmod(a,b))
+# undef fabsf
+# define fabsf(a)	((float)fabs(a))
+# define sinf(a)	((float)sin(a))
+# define cosf(a)	((float)cos(a))
+# define tanf(a)	((float)tan(a))
+# define asinf(a)	((float)asin(a))
+# define acosf(a)	((float)acos(a))
+# define atanf(a)	((float)atan(a))
+# define atan2f(a,b)	((float)atan2(a,b))
+# define expf(a)	((float)exp(a))
+# define logf(a)	((float)log(a))
+# define log10f(a)	((float)log10(a))
+# undef sqrtf
+# define sqrtf(a)	((float)sqrt(a))
+#endif
+#ifdef __alpha // powf is broken on alphas, at least in gcc
+# define powf(a,b)	((float)pow(a,b))
+#endif
+#ifdef _WIN32
+# define expm1f(a)	((float)expm1(a))
+# define log1pf(a)	((float)log1p(a))
+#endif
+
+#endif
+
+//
+// End of "$Id: math.h 4303 2005-05-01 03:33:52Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/xbmImage.h
===================================================================
--- NonGTP/FLTK/include/fltk/xbmImage.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/xbmImage.h	(revision 773)
@@ -0,0 +1,48 @@
+//
+// "$Id: xbmImage.h 4419 2005-07-15 05:48:26Z spitzak $"
+//
+// Image subclass for in-memory xbm data (you #include the .xbm file
+// and then construct this).
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_xbmImage_h
+#define fltk_xbmImage_h
+
+#include "Image.h"
+
+namespace fltk {
+
+class FL_API xbmImage : public Image {
+public:
+  const unsigned char *array;
+  xbmImage(const unsigned char *bits, int w,int h) : Image(w,h), array(bits) {}
+  xbmImage(const char *bits, int w, int h) : Image(w,h), array((const unsigned char *)bits) {}
+  void update();
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: xbmImage.h 4419 2005-07-15 05:48:26Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/Flags.h
===================================================================
--- NonGTP/FLTK/include/fltk/Flags.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Flags.h	(revision 773)
@@ -0,0 +1,107 @@
+//
+// "$Id: Flags.h 4245 2005-04-08 06:27:43Z spitzak $"
+//
+// Unified flags set for fltk. These flags control the appearance of
+// boxes and widgets. This same value is used to:
+//
+// 1. store state and other information in a widget or menu item
+// 2. provide hints to boxes, labeltypes, and images for how to draw
+// 3. provide structural information to an array of menu items
+//
+// These are shared because various parts of the code, especially
+// drawing, want all of this information at once, and providing it
+// as a single word is the easiest way.
+//
+
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Flags_h
+#define fltk_Flags_h
+
+namespace fltk {
+
+/*! \addtogroup flags
+  \{ */
+
+/*! Type returned by fltk::Widget::flags() and passed to fltk::Box
+  and many other drawing functions. */
+typedef int Flags;
+
+/*! For back compatability with fltk1.1 */
+typedef Flags Align; // for back compatability
+
+enum {
+  NO_FLAGS		= 0,
+
+  // from Align, values are comptable with fltk 1.0:
+  // These control the location and appearance of labels:
+  // Warning: unused numbers may change behavior!
+  ALIGN_CENTER		= 0,	//!< (0) The label is centered inside widget
+  ALIGN_TOP		= 1,	//!< Label is centered above widget
+  ALIGN_BOTTOM		= 2,	//!< Label is centered below widget
+  ALIGN_LEFTTOP		= 3,	//!< Label is left of widget at top
+  ALIGN_LEFT		= 4,	//!< Label is to left of widget
+  ALIGN_TOPLEFT		= 5,	//!< Label is left-justified above widget
+  ALIGN_BOTTOMLEFT	= 6,	//!< Label is left-justified below widget
+  ALIGN_LEFTBOTTOM	= 7,	//!< Label is left of widget at bottom
+  ALIGN_RIGHT		= 8,	//!< Label is to right of widget
+  ALIGN_TOPRIGHT	= 9,	//!< Label is right-justified above widget
+  ALIGN_BOTTOMRIGHT	= 10,	//!< Label is right-justified below widget
+  ALIGN_RIGHTTOP	= 11,	//!< Label is right of widget at top
+  ALIGN_CENTERLEFT	= 12,	//!< Label is centered in space left of widget
+  ALIGN_RIGHTBOTTOM	= 15,	//!< Label is right of widget at bottom
+  ALIGN_INSIDE		= 16,	//!< Label is inside widget, image centered
+  ALIGN_INSIDE_TOP	= 17,	//!< Label is inside widget at top
+  ALIGN_INSIDE_BOTTOM	= 18,	//!< Label is inside widget at bottom
+  ALIGN_INSIDE_LEFT	= 20,	//!< Label is inside widget at left
+  ALIGN_INSIDE_TOPLEFT	= 21,	//!< Label is inside widget at top left
+  ALIGN_INSIDE_BOTTOMLEFT=22,	//!< Label is inside widget at bottom left
+  ALIGN_INSIDE_RIGHT	= 24,	//!< Label is inside widget at right
+  ALIGN_INSIDE_TOPRIGHT	= 25,	//!< Label is inside widget at top right
+  ALIGN_INSIDE_BOTTOMRIGHT=26,	//!< Label is inside widget bottom right
+  ALIGN_CLIP		= 0x00000040, //!< The label is clipped to the widget
+  ALIGN_WRAP		= 0x00000080, //!< The label is word-wrapped
+  ALIGN_MASK		= 0x000000FF, //!< Used to split align() from flags()
+
+  NOTACTIVE		= 0x00000100, //!< !active()
+  OUTPUT		= 0x00000200, //!< does not get events, draw text colors
+  VALUE			= 0x00000400, //!< true/on state
+  SELECTED		= 0x00000800, //!< chosen in browser/menu, draw selected colors
+  INVISIBLE		= 0x00001000, //!< !visible(), draw_frame()
+  HIGHLIGHT		= 0x00002000, //!< draw highlighted
+  CHANGED		= 0x00004000, //!< value() changed since last callback
+  COPIED_LABEL		= 0x00008000, //!< copy_label() was called
+  RAW_LABEL		= 0x00010000, //!< don't interpret & or @ in label
+  LAYOUT_VERTICAL	= 0x00020000, //!< fltk::Pack puts this widget vertical
+  TAB_TO_FOCUS		= 0x00040000, //!< Widget::tab_to_focus();
+  CLICK_TO_FOCUS	= 0x00080000, //!< Widget::click_to_focus()
+  INACTIVE		= 0x00100000, //!< draw it grayed-out
+  FOCUSED		= 0x00200000, //!< draw with keyboard focus
+  PUSHED		= 0x00400000  //!< draw pushed-in
+};
+/*! \} */
+
+}
+
+#endif
+
+//
+// End of "$Id: Flags.h 4245 2005-04-08 06:27:43Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/ValueInput.h
===================================================================
--- NonGTP/FLTK/include/fltk/ValueInput.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/ValueInput.h	(revision 773)
@@ -0,0 +1,58 @@
+//
+// "$Id: ValueInput.h 4318 2005-05-08 03:10:40Z spitzak $"
+//
+// Text field for inputing a floating-point number
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_ValueInput_h
+#define fltk_ValueInput_h
+
+#include "Valuator.h"
+#include "FloatInput.h"
+
+namespace fltk {
+
+class FL_API ValueInput : public Valuator {
+public:
+  FloatInput input;
+
+  int handle(int);
+  void draw();
+  ValueInput(int x,int y,int w,int h,const char *l=0);
+  ~ValueInput();
+
+protected:
+  void layout();
+  virtual void value_damage(); // cause damage() due to value() changing
+
+private:
+  static void input_cb(Widget*,void*);
+  void increment_cb();
+  static void repeat_callback(void* v);
+};
+
+}
+#endif
+
+//
+// End of "$Id: ValueInput.h 4318 2005-05-08 03:10:40Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/draw.h
===================================================================
--- NonGTP/FLTK/include/fltk/draw.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/draw.h	(revision 773)
@@ -0,0 +1,207 @@
+// "$Id: draw.h 4408 2005-07-09 06:41:56Z spitzak $"
+//
+// Copyright 1998-2005 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_draw_h
+#define fltk_draw_h
+
+#include "Flags.h" // for alignment values
+#include "Color.h"
+#include "Rectangle.h"
+#include "PixelType.h"
+
+namespace fltk {
+
+struct Font;
+class Style;
+
+class FL_API GSave {
+  void* data[4]; // hopefully big enough for everybody...
+ public:
+  GSave();
+  ~GSave();
+};
+
+/*! \addtogroup transformation
+  \{ */
+FL_API void push_matrix();
+FL_API void pop_matrix();
+FL_API void scale(float x, float y);
+FL_API void scale(float x);
+FL_API void translate(float x, float y);
+FL_API void translate(int x, int y);
+FL_API void rotate(float d);
+FL_API void concat(float, float, float, float, float, float);
+FL_API void load_identity();
+
+// get and use transformed positions:
+FL_API void transform(float& x, float& y);
+FL_API void transform_distance(float& x, float& y);
+FL_API void transform(int& x, int& y);
+FL_API void transform(Rectangle&);
+
+/*! \} */
+
+/*! \addtogroup clipping
+  \{ */
+FL_API void push_clip(const Rectangle&);
+FL_API void clipout(const Rectangle&);
+FL_API void pop_clip();
+FL_API void push_no_clip();
+FL_API bool not_clipped(const Rectangle&);
+FL_API int intersect_with_clip(Rectangle&);
+/*! \} */
+
+/*! \addtogroup color
+  \{ */
+FL_API void setcolor(Color);
+extern FL_API Color current_color_;
+inline Color getcolor() {return current_color_;}
+extern FL_API Color current_bgcolor_;
+inline void setbgcolor(Color c) {current_bgcolor_ = c;}
+inline Color getbgcolor() {return current_bgcolor_;}
+
+extern const Style* drawstyle_;
+void FL_API drawstyle(const Style* s, Flags);
+inline const Style* drawstyle() {return drawstyle_;}
+
+extern Flags drawflags_;
+inline void setdrawflags(Flags f) {drawflags_ = f;}
+inline Flags drawflags() {return drawflags_;}
+inline Flags drawflags(Flags f) {return drawflags_ & f;}
+
+// line type:
+FL_API void line_style(int, int width=0, char* dashes=0);
+enum {
+  SOLID	= 0,
+  DASH	= 1,
+  DOT	= 2,
+  DASHDOT	= 3,
+  DASHDOTDOT	= 4,
+
+  CAP_FLAT	= 0x100,
+  CAP_ROUND	= 0x200,
+  CAP_SQUARE	= 0x300,
+
+  JOIN_MITER	= 0x1000,
+  JOIN_ROUND	= 0x2000,
+  JOIN_BEVEL	= 0x3000
+};
+/*! \} */
+
+/*! \addtogroup path
+  \{ */
+FL_API void newpath();
+FL_API void addvertex(float x, float y);
+FL_API void addvertex(int x, int y);
+FL_API void addvertices(int n, const float v[][2]);
+FL_API void addvertices(int n, const int v[][2]);
+FL_API void addvertices_transformed(int n, const float v[][2]);
+FL_API void addcurve(float,float, float,float, float,float, float,float);
+FL_API void addarc(float x,float y,float w,float h, float a1, float a2);
+FL_API void addpie(const Rectangle& r, float a, float a2);
+FL_API void addchord(const Rectangle& r,float a,float a2);
+FL_API void closepath();
+
+FL_API void drawpoints();
+FL_API void strokepath();
+FL_API void fillpath();
+FL_API void fillstrokepath(Color);
+/*! \} */
+
+/*! \addtogroup rectangle
+  \{ */
+FL_API void fillrect(const Rectangle&);
+FL_API void strokerect(const Rectangle&);
+FL_API void drawpoint(int x, int y);
+FL_API void drawpoint(float x, float y);
+FL_API void drawline(int x0, int y0, int x1, int y1);
+FL_API void drawline(float x0, float y0, float x1, float y1);
+/*! \} */
+
+/*! \addtogroup font
+  \{ */
+FL_API void setfont(Font*, float size);
+FL_API void setfont(const char*, float size);
+FL_API void setfont(const char*, int attributes, float size);
+
+// change the encoding used to draw bytes (depreciated)
+extern FL_API const char* encoding_;
+inline const char* get_encoding() {return encoding_;}
+FL_API void set_encoding(const char*);
+
+// information you can get about the current font+size+encoding:
+extern FL_API Font* current_font_;
+extern FL_API float current_size_; // should be 2x2 transformation matrix
+inline Font* getfont() {return current_font_;}
+inline float getsize() {return current_size_;}
+
+// measure things in the current font:
+FL_API float getwidth(const char*);
+FL_API float getwidth(const char*, int length);
+FL_API float getascent();
+FL_API float getdescent();
+
+// draw using current font:
+FL_API void drawtext_transformed(const char*, int n, float x, float y);
+FL_API void drawtext(const char*, float x, float y);
+FL_API void drawtext(const char*, int length, float x, float y);
+
+// the label text formatter:
+FL_API void measure(const char*, int& w, int& h, Flags = 0);
+FL_API void measure(const char*, int length, int& w, int& h, Flags);
+FL_API void drawtext(const char*, const Rectangle&, Flags);
+FL_API void drawtext(const char*, int length, const Rectangle&, Flags);
+// set where \t characters go in label text formatter:
+extern FL_API const int* column_widths_;
+inline const int* column_widths() {return column_widths_;}
+inline void column_widths(const int* i) {column_widths_ = i;}
+// see also Symbol.h for @-sign commands
+/*! \} */
+
+/*! \addtogroup images
+  \{ */
+FL_API void drawimage(const uchar*, PixelType, const Rectangle&);
+FL_API void drawimage(const uchar*, PixelType, const Rectangle&, int linedelta);
+
+typedef const uchar* (*DrawImageCallback)(void* data, int x, int y, int w, uchar* buffer);
+FL_API void drawimage(DrawImageCallback, void*, PixelType, const Rectangle&);
+
+FL_API uchar *readimage(uchar *p, PixelType, const Rectangle&);
+FL_API uchar *readimage(uchar *p, PixelType, const Rectangle&, int linedelta);
+/*! \} */
+
+FL_API void scrollrect(const Rectangle&, int dx, int dy,
+		       void (*draw_area)(void*, const Rectangle&), void*);
+
+// depreciated:
+FL_API int draw_xpm(const char*const* data, int x, int y);
+FL_API int measure_xpm(const char*const* data, int &w, int &h);
+FL_API void overlay_rect(int,int,int,int);
+FL_API void overlay_clear();
+//FL_API int draw_symbol(const char* label, int x,int y,int w,int h, Color);
+
+}
+
+#endif
+
+//
+// End of "$Id: draw.h 4408 2005-07-09 06:41:56Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/ValueOutput.h
===================================================================
--- NonGTP/FLTK/include/fltk/ValueOutput.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/ValueOutput.h	(revision 773)
@@ -0,0 +1,45 @@
+//
+// "$Id: ValueOutput.h 3190 2004-01-06 06:43:03Z spitzak $"
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@easysw.com".
+//
+
+#ifndef fltk_ValueOutput_h
+#define fltk_ValueOutput_h
+
+#include <fltk/Valuator.h>
+
+namespace fltk {
+
+class FL_API ValueOutput : public Valuator {
+public:
+  void draw();
+  int handle(int);
+  ValueOutput(int x,int y,int w,int h,const char *l = 0)
+    : Valuator(x, y, w, h, l) {align(ALIGN_LEFT);}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: ValueOutput.h 3190 2004-01-06 06:43:03Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/InvisibleBox.h
===================================================================
--- NonGTP/FLTK/include/fltk/InvisibleBox.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/InvisibleBox.h	(revision 773)
@@ -0,0 +1,29 @@
+//
+// "$Id: InvisibleBox.h 2877 2002-12-15 10:42:54Z spitzak $"
+//
+// This is a box that is invisible due to not having a box. The
+// label still prints so it can be used to position labels. Also
+// this is useful as a resizable() widget.
+
+#ifndef fltk_InvisibleBox_h
+#define fltk_InvisibleBox_h
+
+#include <fltk/Widget.h>
+
+namespace fltk {
+
+class FL_API InvisibleBox : public fltk::Widget {
+public:
+  InvisibleBox(int x, int y, int w, int h, const char *l=0);
+  InvisibleBox(fltk::Box* b, int x, int y, int w, int h, const char *l);
+  static fltk::NamedStyle* default_style;
+  void draw();
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: InvisibleBox.h 2877 2002-12-15 10:42:54Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/utf.h
===================================================================
--- NonGTP/FLTK/include/fltk/utf.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/utf.h	(revision 773)
@@ -0,0 +1,56 @@
+/* "$Id: utf.h 4115 2005-03-14 04:48:51Z spitzak $"
+ *
+ * Copyright 1998-2005 by Bill Spitzak and others.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Please report all bugs and problems to "fltk-bugs@fltk.org".
+ */
+
+#ifndef fltk_utf_h
+#define fltk_utf_h
+
+#include "FL_API.h"
+#include <stdlib.h>
+
+/*! \addtogroup utilities
+  \{ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+FL_API int	utf8bytes(unsigned ucs);
+FL_API int	utf8len(char firstbyte); /* depreciated */
+
+FL_API unsigned	utf8decode(const char*, const char* end, int* len);
+FL_API int	utf8encode(unsigned, char*);
+FL_API const char* utf8fwd(const char*, const char* start, const char* end);
+FL_API const char* utf8back(const char*, const char* start, const char* end);
+
+FL_API unsigned	utf8towc(const char*, unsigned, wchar_t*, unsigned);
+FL_API unsigned utf8tomb(const char*, unsigned, char*, unsigned);
+FL_API unsigned utf8toa (const char*, unsigned, char*, unsigned);
+FL_API unsigned utf8fromwc(char*, unsigned, const wchar_t*, unsigned);
+FL_API unsigned utf8frommb(char*, unsigned, const char*, unsigned);
+FL_API unsigned utf8froma (char*, unsigned, const char*, unsigned);
+FL_API int utf8locale();
+FL_API int utf8test(const char*, unsigned);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+/*! \} */
+
+#endif
Index: NonGTP/FLTK/include/fltk/Item.h
===================================================================
--- NonGTP/FLTK/include/fltk/Item.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Item.h	(revision 773)
@@ -0,0 +1,54 @@
+//
+// "$Id: Item.h 4443 2005-07-21 03:49:42Z spitzak $"
+//
+// Widget designed to be a menu or browser item.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Item_h
+#define fltk_Item_h
+
+#ifndef fltk_Widget_h
+#include "Widget.h"
+#endif
+
+namespace fltk {
+
+class FL_API Item : public Widget {
+public:
+  enum { // values for type(), should match Button
+    NORMAL = 0,
+    TOGGLE = RESERVED_TYPE+1,
+    RADIO  = RESERVED_TYPE+2
+  };
+  void draw();
+  void layout();
+  int handle(int);
+  Item(const char* label = 0);
+  static NamedStyle* default_style;
+  static void set_style(const Style*, bool menubar);
+  static void set_style(const Widget* w, bool f) {set_style(w->style(),f);}
+  static void clear_style() {set_style(Widget::default_style,false);}
+};
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/mac.h
===================================================================
--- NonGTP/FLTK/include/fltk/mac.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/mac.h	(revision 773)
@@ -0,0 +1,124 @@
+//
+// "$Id: mac.h 4397 2005-06-24 06:35:24Z spitzak $"
+//
+// Mac header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+// Do not directly include this file, instead use <FL/x.h>.  It will
+// include this file if "__APPLE__" is defined and "USE_X11" is UNdefined.
+// This is to encourage portability of even the system-specific code...
+
+#ifndef fltk_mac_h
+#define fltk_mac_h
+
+// Standard MacOS Carbon API includes...
+#define Style XStyle
+#include <Carbon/Carbon.h>
+#undef Style
+
+// Now make some fixes to the headers...
+#undef check			// Dunno where this comes from...
+
+////////////////////////////////////////////////////////////////
+// Emulate X somewhat:
+
+namespace fltk {
+
+////////////////////////////////////////////////////////////////
+// constant information about the display:
+
+//extern FL_API void    *qdisplay;
+extern FL_API void	open_display();
+extern FL_API void	close_display();
+extern FL_API WindowPtr  quartz_window;
+extern FL_API CGContextRef quartz_gc;
+extern FL_API Handle    system_menu;
+extern FL_API class Fl_Sys_Menu_Bar *sys_menu_bar;
+
+////////////////////////////////////////////////////////////////
+// event handling:
+
+// we want some way to access last message from system
+
+////////////////////////////////////////////////////////////////
+// drawing functions:
+
+extern FL_API void	clip_region(RgnHandle);
+extern FL_API RgnHandle	clip_region();
+extern FL_API void	draw_into(CGContextRef xid, int w, int h);
+extern FL_API void	stop_drawing(CGImageRef xid);
+#define HFONT const char* // points at name of font!
+extern FL_API HFONT	xfont();
+
+extern FL_API void clear_quartz_clipping();
+extern FL_API void begin_quartz_image(CGRect&, const Rectangle&);
+extern FL_API void end_quartz_image();
+
+////////////////////////////////////////////////////////////////
+#ifdef fltk_Window_h // only include this if <fltk/Window.h> was included
+
+// When fltk tells X about a window, one of these objects is created.
+// Warning: this object is highly subject to change!  It's definition
+// is only here so that fltk::xid(Window) can be declared inline:
+
+class FL_API CreatedWindow {
+public:
+  WindowPtr xid; // used by main windows
+  Window* window;
+  RgnHandle region; // damage region
+  void expose(const Rectangle&);
+  CreatedWindow* next;
+  RgnHandle subRegion; // region which clips out children
+  CreatedWindow *children, *brother;
+  bool wait_for_expose;
+  bool need_new_subRegion;
+  bool overlay;
+  static CreatedWindow* first;
+  static CreatedWindow* find(const Window* window) {return window->i;}
+  static int borders(const Window* w, int& dx, int& dy, int& dw, int& dh);
+  // Quartz additions:
+  CGContextRef gc;
+};
+
+extern FL_API void fill_quartz_context();
+extern FL_API void release_quartz_context(CreatedWindow *x=0);
+
+// convert xid <-> Window:
+//inline WindowPtr xid(const Window*w) {return CreatedWindow::find(w)->xid;}
+WindowPtr xid(const Window*);
+Window* find(WindowPtr xid);
+
+extern CursHandle default_cursor;
+extern CursHandle current_cursor;
+extern const Widget* cursor_for;
+
+#endif //Fl_Window_H
+////////////////////////////////////////////////////////////////
+
+}
+
+#endif
+
+//
+// End of "$Id: mac.h 4397 2005-06-24 06:35:24Z spitzak $".
+//
+
Index: NonGTP/FLTK/include/fltk/Output.h
===================================================================
--- NonGTP/FLTK/include/fltk/Output.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Output.h	(revision 773)
@@ -0,0 +1,49 @@
+//
+// "$Id: Output.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// One-line text output, the user can select text and copy it
+// to other applications.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Output_h
+#define fltk_Output_h
+
+#include "Input.h"
+
+namespace fltk {
+
+class FL_API Output : public Input {
+  virtual bool replace(int, int, const char*, int); // does nothing
+public:
+  Output(int x, int y, int w, int h, const char *l = 0);
+  int handle(int);
+  // this style is so Motif can have different color for output vs input:
+  static NamedStyle* default_style;
+};
+
+}
+
+#endif 
+
+//
+// End of "$Id: Output.h 2973 2003-04-20 03:17:51Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/file_chooser.h
===================================================================
--- NonGTP/FLTK/include/fltk/file_chooser.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/file_chooser.h	(revision 773)
@@ -0,0 +1,49 @@
+//
+// "$Id: file_chooser.h 3197 2004-01-20 07:27:29Z spitzak $"
+//
+// Popup file chooser.
+// Copyright 1998-2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_file_chooser_h
+#define fltk_file_chooser_h
+
+#include "FL_API.h"
+
+namespace fltk {
+/*! \addtogroup dialogs
+  \{ */
+
+FL_API void use_system_file_chooser(bool = true);
+
+FL_API char *file_chooser(const char *message,
+			  const char *pattern,
+			  const char *filename,
+			  bool save = true);
+FL_API void file_chooser_callback(void (*cb)(const char *));
+
+/* \} */
+}
+
+#endif
+
+//
+// End of "$Id: file_chooser.h 3197 2004-01-20 07:27:29Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/FileChooser.h
===================================================================
--- NonGTP/FLTK/include/fltk/FileChooser.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/FileChooser.h	(revision 773)
@@ -0,0 +1,84 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0000
+
+#ifndef fltk_FileChooser_h
+#define fltk_FileChooser_h
+
+#include <fltk/Window.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <fltk/Choice.h>
+#include <fltk/Button.h>
+#include "filename.h"
+#include <fltk/FileBrowser.h>
+#include <fltk/FileInput.h>
+#include <fltk/ReturnButton.h>
+
+namespace fltk {
+
+class FL_API FileChooser {
+public:
+  enum { SINGLE, MULTI, CREATE };
+  FileChooser(const char *d, const char *p, int t, const char *title);
+  Window *window;
+private:
+  inline void cb_window_i(Window*, void*);
+  static void cb_window(Window*, void*);
+  Choice *dirMenu;
+  inline void cb_dirMenu_i(Choice*, void*);
+  static void cb_dirMenu(Choice*, void*);
+  Button *upButton;
+  inline void cb_upButton_i(Button*, void*);
+  static void cb_upButton(Button*, void*);
+  Button *newButton;
+  inline void cb_newButton_i(Button*, void*);
+  static void cb_newButton(Button*, void*);
+  inline void cb__i(Button*, void*);
+  static void cb_(Button*, void*);
+  FileBrowser *fileList;
+  inline void cb_fileList_i(FileBrowser*, void*);
+  static void cb_fileList(FileBrowser*, void*);
+  FileInput *fileName;
+  inline void cb_fileName_i(FileInput*, void*);
+  static void cb_fileName(FileInput*, void*);
+  ReturnButton *okButton;
+  inline void cb_okButton_i(ReturnButton*, void*);
+  static void cb_okButton(ReturnButton*, void*);
+  inline void cb_Cancel_i(Button*, void*);
+  static void cb_Cancel(Button*, void*);
+  char directory_[1024];
+  int type_;
+  void fileListCB();
+  void fileNameCB();
+  void newdir();
+  void up();
+public:
+  void color(Color c);
+  Color color();
+  int count();
+  void directory(const char *d);
+  char * directory();
+  void exec();
+  void filter(const char *p);
+  const char * filter();
+  void hide();
+  void icon_size(uchar s);
+  uchar icon_size();
+  void label(const char *l);
+  const char * label();
+  void rescan();
+  void textcolor(Color c);
+  Color textcolor();
+  void textfont(Font* f);
+  Font* textfont();
+  void textsize(uchar s);
+  uchar textsize();
+  void type(int t);
+  int type();
+  const char *value(int f = 1);
+  void value(const char *filename);
+  int visible();
+};
+
+}
+#endif
Index: NonGTP/FLTK/include/fltk/visual.h
===================================================================
--- NonGTP/FLTK/include/fltk/visual.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/visual.h	(revision 773)
@@ -0,0 +1,58 @@
+// "$Id: visual.h 4403 2005-06-28 15:42:14Z spitzak $"
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_visual_h
+#define fltk_visual_h
+
+#include "FL_API.h"
+
+namespace fltk {
+
+/*! \addtogroup startup
+  \{
+*/
+
+enum {
+  RGB_COLOR	= 0,
+  INDEXED_COLOR	= 1,
+  SINGLE_BUFFER	= 0,
+  DOUBLE_BUFFER	= 2,
+  ACCUM_BUFFER	= 4,
+  ALPHA_BUFFER	= 8,
+  DEPTH_BUFFER	= 16,
+  STENCIL_BUFFER= 32,
+  RGB24_COLOR	= 64,
+  MULTISAMPLE	= 128,
+  STEREO	= 256
+};
+
+extern FL_API bool visual(int);
+
+extern FL_GL_API bool glVisual(int);
+
+extern FL_API void own_colormap();
+
+/*! \} */
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/events.h
===================================================================
--- NonGTP/FLTK/include/fltk/events.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/events.h	(revision 773)
@@ -0,0 +1,313 @@
+//
+// "$Id: events.h 4571 2005-09-16 08:02:58Z spitzak $"
+//
+// Event types and data. A Widget::handle() method needs this.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_events_h
+#define fltk_events_h
+
+#include "FL_API.h"
+
+namespace fltk {
+
+/*! \addtogroup events
+  \{
+*/
+
+/*! Numbers passed to Widget::handle() and returned by event(). */
+enum {
+  NO_EVENT	= 0,
+  PUSH		= 1,
+  RELEASE	= 2,
+  ENTER		= 3,
+  LEAVE		= 4,
+  DRAG		= 5,
+  FOCUS		= 6,
+  UNFOCUS	= 7,
+  KEY		= 8,
+  KEYUP		= 9,
+  FOCUS_CHANGE	= 10,
+  MOVE		= 11,
+  SHORTCUT	= 12,
+  DEACTIVATE	= 13,
+  ACTIVATE	= 14,
+  HIDE		= 15,
+  SHOW		= 16,
+  PASTE		= 17,
+  TIMEOUT	= 18,
+  MOUSEWHEEL	= 19,
+  DND_ENTER	= 20,
+  DND_DRAG	= 21,
+  DND_LEAVE	= 22,
+  DND_RELEASE	= 23,
+  TOOLTIP	= 24
+};
+
+/*! Values returned by event_key(), passed to event_key_state() and
+  get_key_state(), and used for the low 16 bits of add_shortcut().
+
+  The actual values returned are based on X11 keysym values, though
+  fltk always returns "unshifted" values much like Windows does. A
+  given key always returns the same value no matter what shift keys
+  are held down. Use event_text() to see the results of any shift
+  keys.
+
+  The lowercase letters 'a' through 'z' and the ascii symbols
+  '`', '-', '=', '[', ']', '\\', ',', '.', '/', ';', '\'' and space
+  are used to identify the keys in the main keyboard.
+
+  On X systems unrecognized keys are returned unchanged as their
+  X keysym value. If they have no keysym it uses the scan code
+  or'd with 0x8000, this is what all those blue buttons on a
+  Microsoft keyboard will do. I don't know how to get those
+  buttons on Windows.
+*/
+enum {
+  LeftButton	= 1,		/*!< PUSH/RELEASE set event_key to this */
+  MiddleButton	= 2,		/*!< PUSH/RELEASE set event_key to this */
+  RightButton	= 3,		/*!< PUSH/RELEASE set event_key to this */
+  SpaceKey	= 32,		/*!< Same as ' ' or 32 */
+  // 'a'-'z', and all punctuation go here in numerical order
+  BackSpaceKey	= 0xff08,	/*!< Backspace */
+  TabKey	= 0xff09,	/*!< Tab */
+  ClearKey	= 0xff0b,	/*!< On some systems with NumLock off '5' produces this */
+  ReturnKey	= 0xff0d,	/*!< Main Enter key, Windows and X documentation calls this "Return" */
+  PauseKey	= 0xff13,	/*!< Pause + Break button */
+  ScrollLockKey	= 0xff14,	/*!< Scroll Lock button */
+  EscapeKey	= 0xff1b,	/*!< Esc */
+  HomeKey	= 0xff50,	/*!< Home */
+  LeftKey	= 0xff51,	/*!< Left */
+  UpKey		= 0xff52,	/*!< Up arrow */
+  RightKey	= 0xff53,	/*!< Right arrow */
+  DownKey	= 0xff54,	/*!< Down arrow */
+  PageUpKey	= 0xff55,	/*!< Page Up */
+  PageDownKey	= 0xff56,	/*!< Page Down */
+  EndKey	= 0xff57,	/*!< End */
+  PrintKey	= 0xff61,	/*!< Print Scrn key + SysRq key */
+  InsertKey	= 0xff63,	/*!< Insert */
+  MenuKey	= 0xff67,	/*!< Key in lower-right with picture of popup menu */
+  HelpKey	= 0xff68,	/*!< Help key on Macintosh keyboards */
+  NumLockKey	= 0xff7f,	/*!< NumLock key */
+  Keypad	= 0xff80,	/*!< Add ASCII to get keypad keys */
+  KeypadEnter	= Keypad+'\r',	/*!< Keypad+'\\r' */
+  MultiplyKey	= Keypad+'*',	/*!< Keypad+'*' */
+  AddKey	= Keypad+'+',	/*!< Keypad+'+' */
+  SubtractKey	= Keypad+'-',	/*!< Keypad+'-' */
+  DecimalKey	= Keypad+'.',	/*!< Keypad+'.' */
+  DivideKey	= Keypad+'/',	/*!< Keypad+'/' */
+  Keypad0	= Keypad+'0',	/*!< Keypad+'0' */
+  Keypad1	= Keypad+'1',	/*!< Keypad+'1' */
+  Keypad2	= Keypad+'2',	/*!< Keypad+'2' */
+  Keypad3	= Keypad+'3',	/*!< Keypad+'3' */
+  Keypad4	= Keypad+'4',	/*!< Keypad+'4' */
+  Keypad5	= Keypad+'5',	/*!< Keypad+'5' */
+  Keypad6	= Keypad+'6',	/*!< Keypad+'6' */
+  Keypad7	= Keypad+'7',	/*!< Keypad+'7' */
+  Keypad8	= Keypad+'8',	/*!< Keypad+'8' */
+  Keypad9	= Keypad+'9',	/*!< Keypad+'9' */
+  KeypadLast	= 0xffbd,	/*!< Keypad+'=', largest legal keypad key */
+  F0Key		= 0xffbd,	/*!< Add a number to get function key */
+  F1Key		= F0Key+1,	/*!< F0Key+1 */
+  F2Key		= F0Key+2,	/*!< F0Key+2 */
+  F3Key		= F0Key+3,	/*!< F0Key+3 */
+  F4Key		= F0Key+4,	/*!< F0Key+4 */
+  F5Key		= F0Key+5,	/*!< F0Key+5 */
+  F6Key		= F0Key+6,	/*!< F0Key+6 */
+  F7Key		= F0Key+7,	/*!< F0Key+7 */
+  F8Key		= F0Key+8,	/*!< F0Key+8 */
+  F9Key		= F0Key+9,	/*!< F0Key+9 */
+  F10Key	= F0Key+10,	/*!< F0Key+10 */
+  F11Key	= F0Key+11,	/*!< F0Key+11 */
+  F12Key	= F0Key+12,	/*!< F0Key+12 */
+  // use F0Key+n to get function key n
+  LastFunctionKey = F0Key+35,	/*!< F0Key+35, largest legal function key */
+  LeftShiftKey	= 0xffe1,	/*!< Left-hand Shift */
+  RightShiftKey	= 0xffe2,	/*!< Right-hand Shift */
+  LeftCtrlKey	= 0xffe3,	/*!< Left-hand Ctrl */
+  RightCtrlKey	= 0xffe4,	/*!< Right-hand Ctrl */
+  CapsLockKey	= 0xffe5,	/*!< Caps Lock */
+  LeftMetaKey	= 0xffe7,	/*!< The left "Windows" or the "Apple" key */
+  RightMetaKey	= 0xffe8,	/*!< The right "Windows" or the "Apple" key */
+  LeftAltKey	= 0xffe9,	/*!< Left-hand Alt (option on Mac) */
+  RightAltKey	= 0xffea,	/*!< Right-hand Alt (option on Mac) */
+  DeleteKey	= 0xffff	/*!< Delete */
+};
+
+/*! Flags returned by event_state(), and used as the high 16 bits
+  of Widget::add_shortcut() values (the low 16 bits are all zero, so these
+  may be or'd with key values).
+
+  The inline function BUTTON(n) will turn n (1-8) into the flag for a
+  mouse button.
+*/
+enum {
+  SHIFT		= 0x00010000,	/*!< Either shift key held down */
+  CAPSLOCK	= 0x00020000,	/*!< Caps lock is toggled on */
+  CTRL		= 0x00040000,	/*!< Either ctrl key held down */
+  ALT		= 0x00080000,	/*!< Either alt key held down */
+  NUMLOCK	= 0x00100000,	/*!< Num Lock turned on */
+  META		= 0x00400000,	/*!< "Windows" or the "Apple" keys held down */
+  SCROLLLOCK	= 0x00800000,	/*!< Scroll Lock turned on */
+  BUTTON1	= 0x01000000,	/*!< Left mouse button held down */
+  BUTTON2	= 0x02000000,	/*!< Middle mouse button held down */
+  BUTTON3	= 0x04000000,	/*!< Right mouse button held down */
+  ANY_BUTTON	= 0x7f000000, /*!< Any mouse button (up to 8) */
+#ifdef __APPLE__
+  COMMAND = META /*!< On Apple it is the same as META, on other platforms CTRL. */
+#else
+  COMMAND = CTRL /*!< On Apple it is the same as META, on other platforms CTRL. */
+#endif // __APPLE__
+};
+
+inline unsigned BUTTON(int n) {return 0x00800000 << n;}
+
+/*! Device identifier returned by event_device(). This enumeration
+  is useful to get the device type that caused a PUSH, RELEASE,
+  DRAG or MOVE event 
+*/
+enum {
+  DEVICE_MOUSE    = 0, /*!< Event triggered by the system mouse */
+  DEVICE_STYLUS   = 1, /*!< Event triggered by a pen on a tablet, givin pressure and tilt information */
+  DEVICE_ERASER   = 2, /*!< Event triggered by an eraser on a tablet, givin pressure and tilt information */
+  DEVICE_CURSOR   = 3, /*!< Event triggered by a puck style device on a tablet */
+  DEVICE_AIRBRUSH = 4, /*!< Event triggered by an airbrush on a tablet, giving pressure and tilt information */
+  DEVICE_TOUCH    = 5  /*!< Event triggered by touch a touch screen device */
+};
+
+/*! \} */
+
+class Rectangle;
+class Widget;
+class Window;
+
+////////////////////////////////////////////////////////////////
+// Do not use these variables, they may not exist in future versions:
+
+extern FL_API int e_type;
+extern FL_API int e_x;
+extern FL_API int e_y;
+extern FL_API int e_dx;
+extern FL_API int e_dy;
+extern FL_API int e_x_root;
+extern FL_API int e_y_root;
+extern FL_API unsigned e_state;
+extern FL_API int e_clicks;
+extern FL_API unsigned e_is_click;
+extern FL_API unsigned e_keysym;
+extern FL_API unsigned e_length;
+extern FL_API const char* e_text;
+extern FL_API float e_pressure;
+extern FL_API float e_x_tilt;
+extern FL_API float e_y_tilt;
+extern FL_API int e_device;
+extern FL_API int compose_state;
+extern FL_API Widget* belowmouse_;
+extern FL_API Widget* pushed_;
+extern FL_API Widget* focus_;
+extern FL_API Widget* modal_;
+extern FL_API bool grab_;
+extern FL_API bool exit_modal_;
+
+////////////////////////////////////////////////////////////////
+
+/*! \addtogroup events
+  \{
+*/
+// event information:
+inline int  event()			{return e_type;}
+inline int  event_x()			{return e_x;}
+inline int  event_y()			{return e_y;}
+inline int  event_dx()			{return e_dx;}
+inline int  event_dy()			{return e_dy;}
+inline int  event_x_root()		{return e_x_root;}
+inline int  event_y_root()		{return e_y_root;}
+inline int  event_clicks()		{return e_clicks;}
+inline void event_clicks(int i)		{e_clicks = i;}
+inline bool event_is_click()		{return e_is_click != 0;}
+inline void event_is_click(bool)	{e_is_click = 0;} // only false works!
+inline unsigned event_state()		{return e_state;}
+inline bool event_state(unsigned i)	{return (e_state&i) != 0;}
+inline unsigned event_key()		{return e_keysym;}
+inline unsigned event_button()		{return e_keysym;}
+FL_API bool event_key_state(unsigned);
+inline const char* event_text() 	{return e_text;}
+inline unsigned event_length() 		{return e_length;}
+inline float event_pressure() 	{return e_pressure;}
+inline float event_x_tilt()     {return e_x_tilt;}
+inline float event_y_tilt()     {return e_y_tilt;}
+inline int  event_device()      {return e_device;}
+
+// tests on current event:
+FL_API bool event_inside(const Rectangle&);
+FL_API bool compose(int &del);
+inline void compose_reset()		{compose_state = 0;}
+
+// shortcuts:
+/*! Structure created by Widget::add_shortcut() and returned by list_shortcuts(). */
+struct ShortcutAssignment {Widget* widget; unsigned key;};
+FL_API const ShortcutAssignment* list_shortcuts(unsigned key, unsigned& count);
+FL_API const ShortcutAssignment* list_shortcuts(const Widget*,unsigned& count);
+FL_API const ShortcutAssignment* list_shortcuts(unsigned& count);
+FL_API const ShortcutAssignment* list_matching_shortcuts(unsigned& count);
+FL_API bool try_shortcut();
+FL_API const char* key_name(unsigned key);
+FL_API unsigned key(const char* name);
+
+// get current information, not info from last event:
+FL_API bool get_key_state(unsigned);
+FL_API void get_mouse(int &,int &);
+
+// event destinations:
+FL_API bool handle(int, Window*);
+FL_API void add_event_handler(int (*h)(int, Window*));
+inline Widget* belowmouse() 		{return belowmouse_;}
+FL_API void belowmouse(Widget*);
+inline void belowmouse(Widget& w)	{belowmouse(&w);}
+inline Widget* pushed()			{return pushed_;}
+FL_API void pushed(Widget*);
+inline void pushed(Widget& w)		{pushed(&w);}
+inline Widget* focus()			{return focus_;}
+FL_API void focus(Widget*);
+inline void focus(Widget& w)		{focus(&w);}
+
+// cut/paste/dnd:
+FL_API void copy(const char* stuff, int len, bool clipboard = false);
+FL_API void paste(Widget &receiver, bool clipboard = false);
+FL_API bool dnd();
+
+// Modal widgets (block events going to any other widgets):
+FL_API void modal(Widget*, bool grab = false);
+inline Widget* modal()			{return modal_;}
+inline bool grab()			{return grab_;}
+inline void exit_modal()		{exit_modal_ = true;}
+inline bool exit_modal_flag()		{return exit_modal_;}
+
+/*! \} */
+
+}
+
+#endif
+
+//
+// $Id: events.h 4571 2005-09-16 08:02:58Z spitzak $
+//
Index: NonGTP/FLTK/include/fltk/TiledImage.h
===================================================================
--- NonGTP/FLTK/include/fltk/TiledImage.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/TiledImage.h	(revision 773)
@@ -0,0 +1,51 @@
+//
+// "$Id: TiledImage.h 4303 2005-05-01 03:33:52Z spitzak $"
+//
+// A tiled image completely fills the bounding box passed to it with
+// replications of the internal Image passed to it.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_TiledImage_h
+#define fltk_TiledImage_h
+
+#include "Symbol.h"
+
+namespace fltk {
+
+class FL_API TiledImage : public Symbol {
+protected:
+  const Symbol* image_;
+public:
+  TiledImage(Symbol *i) : Symbol(0), image_(i) {}
+  const Symbol* image() const {return image_;}
+  void image(const Symbol* i) {image_ = i;}
+  void _measure(int& w, int& h) const;
+  void _draw(const Rectangle&) const;
+  void inset(Rectangle&) const;
+};
+
+}
+#endif
+
+//
+// End of "$Id: TiledImage.h 4303 2005-05-01 03:33:52Z spitzak $"
+//
Index: NonGTP/FLTK/include/fltk/xpmImage.h
===================================================================
--- NonGTP/FLTK/include/fltk/xpmImage.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/xpmImage.h	(revision 773)
@@ -0,0 +1,60 @@
+//
+// "$Id: xpmImage.h 4419 2005-07-15 05:48:26Z spitzak $"
+//
+// Image subclass that draws the data from an xpm format file.
+// XPM is a file format designed for small icons in X, it can
+// be convienently #include'd to inline the image into a program.
+// Just pass the pointer defined by the file to the constructor.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_xpmImage_h
+#define fltk_xpmImage_h
+
+#include "Image.h"
+
+namespace fltk {
+
+class FL_API xpmImage : public Image {
+  Color fg, bg; // what color monochrome ones were drawn in
+public:
+  const char * const * data;
+  // XPM files define the data all kinds of ways, so the constructor
+  // is overloaded to accept all the ones we have seen:
+  xpmImage(const char * const * d, const char* name = 0) :
+    Image(-1,0,name), fg(NO_COLOR), bg(NO_COLOR), data(d) {}
+  xpmImage(const unsigned char* const * d, const char* name = 0) :
+    Image(-1,0,name), fg(NO_COLOR), bg(NO_COLOR), data((char**)d) {}
+  xpmImage(char ** d, const char* name = 0) :
+    Image(-1,0,name), fg(NO_COLOR), bg(NO_COLOR), data(d) {}
+
+  void _measure(int&, int&) const;
+  void update();
+
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: xpmImage.h 4419 2005-07-15 05:48:26Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/HelpDialog.h
===================================================================
--- NonGTP/FLTK/include/fltk/HelpDialog.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/HelpDialog.h	(revision 773)
@@ -0,0 +1,58 @@
+// generated by Fast Light User Interface Designer (fluid) version 1.0101
+
+#ifndef Fl_Help_Dialog_H
+#define Fl_Help_Dialog_H
+#include <fltk/DoubleBufferWindow.h>
+#include <fltk/HelpView.h>
+#include <fltk/Button.h>
+
+namespace fltk {
+
+class FL_IMAGES_API HelpDialog {
+  int index_;
+  int max_;
+  int line_[100];
+  char file_[100][256];
+public:
+  HelpDialog ();
+private:
+  DoubleBufferWindow * window_;
+  HelpView *view_;
+  void cb_view__i (HelpView *, void *);
+  static void cb_view_ (HelpView *, void *);
+  void cb_Close_i (Button *, void *);
+  static void cb_Close (Button *, void *);
+  Button *back_;
+  void cb_back__i (Button *, void *);
+  static void cb_back_ (Button *, void *);
+  Button *forward_;
+  void cb_forward__i (Button *, void *);
+  static void cb_forward_ (Button *, void *);
+  Button *smaller_;
+  void cb_smaller__i (Button *, void *);
+  static void cb_smaller_ (Button *, void *);
+  Button *larger_;
+  void cb_larger__i (Button *, void *);
+  static void cb_larger_ (Button *, void *);
+public:
+  ~HelpDialog ();
+  int h ();
+  void hide ();
+  void load (const char *f);
+  void position (int xx, int yy);
+  void resize (int xx, int yy, int ww, int hh);
+  void show ();
+  void show (int argc, char **argv);
+  void textsize (int s);
+  int textsize ();
+  void topline (const char *n);
+  void topline (int n);
+  int visible ();
+  int w ();
+  int x ();
+  int y ();
+};
+ 
+} // namespace fltk
+
+#endif
Index: NonGTP/FLTK/include/fltk/ComboBox.h
===================================================================
--- NonGTP/FLTK/include/fltk/ComboBox.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/ComboBox.h	(revision 773)
@@ -0,0 +1,118 @@
+//
+// 
+//
+// single line input field with predefined choices via popup menu
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_ComboBox_h
+#define fltk_ComboBox_h
+
+#include "Choice.h"
+#include "Input.h"
+
+namespace fltk {
+
+class FL_API ComboBox : public Choice {
+public:
+  ComboBox(int,int,int,int,const char * = 0);
+  ~ComboBox();
+  static NamedStyle* default_style;
+
+  void draw();
+  void layout();
+  int handle(int);
+  int popup(const Rectangle&,const char* title=0,bool menubar=false);
+
+  int choice(int v);
+  int choice() const;
+  int find_choice() const;
+  bool value(const char *txt)
+	{ return text_changed_(input_->value(txt)); }
+  bool value(const char *txt, int n)
+	{ return text_changed_(input_->value(txt, n)); }
+  bool static_value(const char *txt)
+	{ return text_changed_(input_->static_value(txt)); }
+  bool static_value(const char *txt, int n)
+	{ return text_changed_(input_->static_value(txt, n)); }
+  const char* value() const { return input_->value();}
+  char at(int i) const { return input_->at(i); }
+  
+  int size(bool ofText) const 
+	{ return ofText ? input_->size() : Choice::size(); }
+
+  int position() const { return input_->position();}
+  int mark() const { return input_->mark();}
+  void position(int p, int m)
+	{ input_->position(p, m); text_changed_(); }
+  void position(int p) { position(p, p); }
+  void up_down_position(int p, bool m) 
+	{ input_->up_down_position(p, m); text_changed_(); }
+  void mark(int m) { position(position(), m);}
+
+  virtual bool replace(int a, int b, const char *c, int d)
+	{ return text_changed_(input_->replace(a, b, c, d)); }
+  bool cut() {return replace(position(), mark(), 0, 0);}
+  bool cut(int n) {return replace(position(), position()+n, 0, 0);}
+  bool cut(int a, int b) {return replace(a, b, 0, 0);}
+  bool insert(const char* t, int l=0)
+	{ return replace(input_->position(), input_->mark(), t, l); }
+  bool replace(int a, int b, char c) { return replace(a,b,&c,1); }
+  bool copy(bool clipboard = true) { return input_->copy(clipboard); }
+  bool undo() { return text_changed_(input_->undo()); }
+
+  int word_start(int i) const { return input_->word_start(i); }
+  int word_end(int i) const { return input_->word_end(i); }
+  int line_start(int i) const { return input_->line_start(i); }
+  int line_end(int i) const  { return input_->line_end(i); }
+  int mouse_position(const Rectangle& r) const
+	{ return input_->mouse_position(r); }
+  int xscroll() const { return input_->xscroll();}
+  int yscroll() const { return input_->yscroll();}
+
+  uchar when() const { return input_->when(); }
+  void when(uchar w) { input_->when(w); }
+  
+protected:
+  bool text_changed_(bool ret=true);
+
+private:
+  class ComboInput : public Input {
+  public:
+	ComboInput(int,int,int,int,ComboBox*);
+	int handle(int);
+  private:
+	ComboBox *combo_;
+  };  
+  ComboInput *input_;
+#ifdef _WIN32
+ public:
+#endif
+  static void input_callback_(Widget*,void*);
+};
+
+}
+
+#endif
+
+//
+// 
+//
Index: NonGTP/FLTK/include/fltk/Dial.h
===================================================================
--- NonGTP/FLTK/include/fltk/Dial.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Dial.h	(revision 773)
@@ -0,0 +1,64 @@
+//
+// "$Id: Dial.h 2871 2002-12-10 02:01:07Z easysw $"
+//
+// Rotating value control
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Dial_h
+#define fltk_Dial_h
+
+#ifndef fltk_Valuator_h
+#include "Valuator.h"
+#endif
+
+namespace fltk {
+
+class FL_API Dial : public Valuator {
+
+public:
+
+  enum {NORMAL = 0, LINE, FILL}; // values for type()
+  int handle(int);
+  Dial(int x,int y,int w,int h, const char *l = 0);
+  static NamedStyle* default_style;
+  short angle1() const {return a1;}
+  void angle1(short a) {a1 = a;}
+  short angle2() const {return a2;}
+  void angle2(short a) {a2 = a;}
+  void angles(short a, short b) {a1 = a; a2 = b;}
+
+protected:
+
+  void draw();
+
+private:
+
+  short a1,a2;
+
+};
+
+}
+#endif
+
+//
+// End of "$Id: Dial.h 2871 2002-12-10 02:01:07Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/ScrollGroup.h
===================================================================
--- NonGTP/FLTK/include/fltk/ScrollGroup.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/ScrollGroup.h	(revision 773)
@@ -0,0 +1,90 @@
+//
+// "$Id: ScrollGroup.h 4218 2005-03-31 05:14:08Z spitzak $"
+//
+// Group that adds scrollbars so you can scroll around the area
+// covered by all the child widgets. For most uses you will make
+// a single child widget, this child may resize in it's layout()
+// and the scrollbars will adjust to match.
+//
+// Due to clipping problems no subclasses of Window may be used
+// as child widgets.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_ScrollGroup_h
+#define fltk_ScrollGroup_h
+
+#include "Group.h"
+#include "Scrollbar.h"
+
+namespace fltk {
+
+class FL_API ScrollGroup : public Group {
+
+  int xposition_, yposition_;
+  int layoutdx, layoutdy;
+  int scrolldx, scrolldy;
+  bool enable_drag_scroll_;
+  bool drag_scrolling_;
+  bool delegate_alt_click_;
+  int drag_x_, drag_y_, pos_x_, pos_y_;
+  int max_x_scroll_, max_y_scroll_;
+  static void hscrollbar_cb(Widget*, void*);
+  static void scrollbar_cb(Widget*, void*);
+  static void draw_clip(void*,const Rectangle&);
+
+protected:
+
+  void draw();
+
+public:
+
+  void bbox(Rectangle&);
+  Scrollbar scrollbar;
+  Scrollbar hscrollbar;
+
+  void enable_drag_scroll( bool enable ) { enable_drag_scroll_ = true; }
+
+  virtual int handle(int);
+  virtual void layout();
+
+  ScrollGroup(int X,int Y,int W,int H,const char*l=0);
+
+  enum { // values for type()
+    HORIZONTAL = 1,
+    VERTICAL = 2,
+    BOTH = 3,
+    ALWAYS_ON = 4,
+    HORIZONTAL_ALWAYS = 5,
+    VERTICAL_ALWAYS = 6,
+    BOTH_ALWAYS = 7,
+  };
+
+  int xposition() const {return xposition_;}
+  int yposition() const {return yposition_;}
+  void scrollTo(int, int);
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: ScrollGroup.h 4218 2005-03-31 05:14:08Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/ReturnButton.h
===================================================================
--- NonGTP/FLTK/include/fltk/ReturnButton.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/ReturnButton.h	(revision 773)
@@ -0,0 +1,41 @@
+// "$Id: ReturnButton.h 3887 2004-11-12 06:50:20Z spitzak $"
+//
+// Copyright 1998-2004 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_ReturnButton_h
+#define fltk_ReturnButton_h
+
+#include "Button.h"
+
+namespace fltk {
+
+class FL_API ReturnButton : public Button {
+public:
+  ReturnButton(int x,int y,int w,int h,const char *l=0);
+  static NamedStyle* default_style;
+protected:
+  void draw();
+};
+
+}
+
+#endif
+
+// End of "$Id: ReturnButton.h 3887 2004-11-12 06:50:20Z spitzak $".
Index: NonGTP/FLTK/include/fltk/show_colormap.h
===================================================================
--- NonGTP/FLTK/include/fltk/show_colormap.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/show_colormap.h	(revision 773)
@@ -0,0 +1,42 @@
+//
+// "$Id: show_colormap.h 3191 2004-01-07 06:57:06Z spitzak $"
+//
+// Pretty much obsolete popup color chooser that lets you pick one
+// of the 256 indexed colors in fltk.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_show_colormap_h
+#define fltk_show_colormap_h
+
+#include "FL_API.h"
+#include "Color.h"
+
+namespace fltk {
+/*! \addtogroup utilities */
+FL_API Color show_colormap(Color oldcol);
+}
+
+#endif
+
+//
+// End of "$Id: show_colormap.h 3191 2004-01-07 06:57:06Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/rgbImage.h
===================================================================
--- NonGTP/FLTK/include/fltk/rgbImage.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/rgbImage.h	(revision 773)
@@ -0,0 +1,60 @@
+//
+// "$Id: rgbImage.h 4443 2005-07-21 03:49:42Z spitzak $"
+//
+// Image subclass that draws uncompressed 8-bit rgb data from memory.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_rgbImage_h
+#define fltk_rgbImage_h
+
+#include "Image.h"
+
+namespace fltk {
+
+class FL_API rgbImage : public Image {
+  const uchar* pixels_;
+  PixelType pixeltype_;
+  int linedelta_;
+public:
+  PixelType pixeltype() const {return pixeltype_;}
+  int depth() const {return fltk::depth(pixeltype_);}
+  int linedelta() const {return linedelta_;}
+  const uchar* pixels() const {return pixels_;}
+
+  void update();
+  //bool write_jpeg(const char *filename, int quality=75, int dpi=150);
+
+  rgbImage(const uchar* d, PixelType p, int W, int H, const char* name=0) :
+    Image(W,H,name), pixels_(d), pixeltype_(p) {linedelta_=W*depth();}
+
+  rgbImage(const uchar* d, PixelType p, int W, int H, int linedelta) :
+    Image(W,H), pixels_(d), pixeltype_(p), linedelta_(linedelta) {}
+
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: rgbImage.h 4443 2005-07-21 03:49:42Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/layout.h
===================================================================
--- NonGTP/FLTK/include/fltk/layout.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/layout.h	(revision 773)
@@ -0,0 +1,27 @@
+/* Values of the bits stored in Widget::layout_damage(). */
+
+#ifndef fltk_layout_h
+#define fltk_layout_h
+
+namespace fltk {
+
+/*! \addtogroup layout
+  \{ */
+
+enum {
+  LAYOUT_X	= 0x01, /*!< Widget::x() changed by resize() */
+  LAYOUT_Y	= 0x02, /*!< Widget::y() changed by resize() */
+  LAYOUT_XY	= 0x03, /*!< Same as LAYOUT_X|LAYOUT_Y */
+  LAYOUT_W	= 0x04,	/*!< Widget::w() changed by resize() */
+  LAYOUT_H	= 0x08,	/*!< Widget::h() changed by resize() */
+  LAYOUT_WH	= 0x0C, /*!< Same as LAYOUT_W|LAYOUT_H */
+  LAYOUT_XYWH	= 0x0F, /*!< Same as LAYOUT_XY|LAYOUT_WH */
+  LAYOUT_CHILD	= 0x10, /*!< Widget::layout() needs to be called on a child of this group widget. */
+  LAYOUT_USER   = 0x20, /*!< The moving/resizing is being caused by the user and not internal code. */
+  LAYOUT_DAMAGE	= 0x80	/*!< Widget::relayout() was called. */
+};
+/*! \} */
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/ToggleButton.h
===================================================================
--- NonGTP/FLTK/include/fltk/ToggleButton.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/ToggleButton.h	(revision 773)
@@ -0,0 +1,44 @@
+//
+// "$Id: ToggleButton.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// Button that clicks on and off. You get the state with value().
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_ToggleButton_h
+#define fltk_ToggleButton_h
+
+#include "Button.h"
+
+namespace fltk {
+
+class ToggleButton : public Button {
+public:
+  ToggleButton(int x,int y,int w,int h,const char *l=0)
+    : Button(x,y,w,h,l) {type(TOGGLE);}
+};
+
+}
+#endif
+
+//
+// End of "$Id: ToggleButton.h 2973 2003-04-20 03:17:51Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/TextBuffer.h
===================================================================
--- NonGTP/FLTK/include/fltk/TextBuffer.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/TextBuffer.h	(revision 773)
@@ -0,0 +1,263 @@
+//
+// "$Id: TextBuffer.h 4467 2005-08-05 19:17:34Z dejan $"
+//
+// Header file for TextBuffer class.
+//
+// Copyright 2001-2005 by Bill Spitzak and others.
+// Original code Copyright Mark Edel.  Permission to distribute under
+// the LGPL for the FLTK library granted by Mark Edel.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+#ifndef TEXT_BUFFER_H
+#define TEXT_BUFFER_H
+
+#include "FL_API.h"
+
+namespace fltk {
+
+/* Maximum length in characters of a tab or control character expansion
+   of a single buffer character */
+#define TEXT_MAX_EXP_CHAR_LEN 20
+
+class FL_API TextSelection {
+  friend class TextBuffer;
+
+  public:
+    void set(int start, int end);
+    void set_rectangular(int start, int end, int rectStart, int rectEnd);
+    void update(int pos, int nDeleted, int nInserted);
+    char rectangular() { return mRectangular; }
+    int start() { return mStart; }
+    int end() { return mEnd; }
+    int rect_start() { return mRectStart; }
+    int rect_end() { return mRectEnd; }
+    char selected() { return mSelected; }
+    void selected(char b) { mSelected = b; }
+    int includes(int pos, int lineStartPos, int dispIndex);
+    int position(int* start, int* end);
+    int position(int* start, int* end, int* isRect, int* rectStart, int* rectEnd);
+
+
+  protected:
+    char mSelected;
+    char mRectangular;
+    int mStart;
+    int mEnd;
+    int mRectStart;
+    int mRectEnd;
+};
+
+typedef void (*Text_Modify_Cb)(int pos, int nInserted, int nDeleted,
+                                  int nRestyled, const char* deletedText,
+                                  void* cbArg);
+typedef void (*Text_Predelete_Cb)(int pos, int nDeleted, void* cbArg);
+
+class FL_API TextBuffer {
+  public:
+    TextBuffer(int requestedSize = 0);
+    ~TextBuffer();
+
+    int length() { return mLength; }
+    char* text();
+    void text(const char* text);
+    char* text_range(int start, int end);
+    char character(int pos);
+    char* text_in_rectangle(int start, int end, int rectStart, int rectEnd);
+    void insert(int pos, const char* text);
+    void append(const char* t) { insert(length(), t); }
+    void remove(int start, int end);
+    void replace(int start, int end, const char *text);
+    void copy(TextBuffer* fromBuf, int fromStart, int fromEnd, int toPos);
+    int undo(int *cp=0);
+    void canUndo(char flag=1);
+    int insertfile(const char *file, int pos, int buflen = 128*1024);
+    int appendfile(const char *file, int buflen = 128*1024)
+      { return insertfile(file, length(), buflen); }
+    int loadfile(const char *file, int buflen = 128*1024)
+      { select(0, length()); remove_selection(); return appendfile(file, buflen); }
+    int outputfile(const char *file, int start, int end, int buflen = 128*1024);
+    int savefile(const char *file, int buflen = 128*1024)
+      { return outputfile(file, 0, length(), buflen); }
+
+    void insert_column(int column, int startPos, const char* text,
+                       int* charsInserted, int* charsDeleted);
+
+    void replace_rectangular(int start, int end, int rectStart, int rectEnd,
+                             const char* text);
+
+    void overlay_rectangular(int startPos, int rectStart, int rectEnd,
+                             const char* text, int* charsInserted,
+                             int* charsDeleted);
+
+    void remove_rectangular(int start, int end, int rectStart, int rectEnd);
+    void clear_rectangular(int start, int end, int rectStart, int rectEnd);
+    int tab_distance() { return mTabDist; }
+    void tab_distance(int tabDist);
+    void select(int start, int end);
+    int selected() { return mPrimary.selected(); }
+    void unselect();
+    void select_rectangular(int start, int end, int rectStart, int rectEnd);
+    int selection_position(int* start, int* end);
+
+    int selection_position(int* start, int* end, int* isRect, int* rectStart,
+                           int* rectEnd);
+
+    char* selection_text();
+    void remove_selection();
+    void replace_selection(const char* text);
+    void secondary_select(int start, int end);
+    void secondary_unselect();
+
+    void secondary_select_rectangular(int start, int end, int rectStart,
+                                      int rectEnd);
+
+    int secondary_selection_position(int* start, int* end, int* isRect,
+                                     int* rectStart, int* rectEnd);
+
+    char* secondary_selection_text();
+    void remove_secondary_selection();
+    void replace_secondary_selection(const char* text);
+    void highlight(int start, int end);
+    void unhighlight();
+    void highlight_rectangular(int start, int end, int rectStart, int rectEnd);
+
+    int highlight_position(int* start, int* end, int* isRect, int* rectStart,
+                           int* rectEnd);
+
+    char* highlight_text();
+    void add_modify_callback(Text_Modify_Cb bufModifiedCB, void* cbArg);
+    void remove_modify_callback(Text_Modify_Cb bufModifiedCB, void* cbArg);
+
+    void call_modify_callbacks() { call_modify_callbacks(0, 0, 0, 0, 0); }
+
+    void add_predelete_callback(Text_Predelete_Cb bufPredelCB, void* cbArg);
+    void remove_predelete_callback(Text_Predelete_Cb predelCB, void* cbArg);
+
+    void call_predelete_callbacks() { call_predelete_callbacks(0, 0); }
+
+    char* line_text(int pos);
+    int line_start(int pos);
+    int line_end(int pos);
+    int word_start(int pos);
+    int word_end(int pos);
+    int expand_character(int pos, int indent, char *outStr);
+
+    static int expand_character(char c, int indent, char* outStr, int tabDist,
+                                char nullSubsChar);
+
+    static int character_width(char c, int indent, int tabDist, char nullSubsChar);
+    int count_displayed_characters(int lineStartPos, int targetPos);
+    int skip_displayed_characters(int lineStartPos, int nChars);
+    int count_lines(int startPos, int endPos);
+    int skip_lines(int startPos, int nLines);
+    int rewind_lines(int startPos, int nLines);
+    int findchar_forward(int startPos, char searchChar, int* foundPos);
+    int findchar_backward(int startPos, char searchChar, int* foundPos);
+    int findchars_forward(int startPos, const char* searchChars, int* foundPos);
+    int findchars_backward(int startPos, const char* searchChars, int* foundPos);
+
+    int search_forward(int startPos, const char* searchString, int* foundPos,
+                       int matchCase = 0);
+
+    int search_backward(int startPos, const char* searchString, int* foundPos,
+                        int matchCase = 0);
+
+    int substitute_null_characters(char* string, int length);
+    void unsubstitute_null_characters(char* string);
+    char null_substitution_character() { return mNullSubsChar; }
+    TextSelection* primary_selection() { return &mPrimary; }
+    TextSelection* secondary_selection() { return &mSecondary; }
+    TextSelection* highlight_selection() { return &mHighlight; }
+
+  protected:
+    void call_modify_callbacks(int pos, int nDeleted, int nInserted,
+                               int nRestyled, const char* deletedText);
+    void call_predelete_callbacks(int pos, int nDeleted);
+
+    int insert_(int pos, const char* text);
+    void remove_(int start, int end);
+
+    void remove_rectangular_(int start, int end, int rectStart, int rectEnd,
+                             int* replaceLen, int* endPos);
+
+    void insert_column_(int column, int startPos, const char* insText,
+                        int* nDeleted, int* nInserted, int* endPos);
+
+    void overlay_rectangular_(int startPos, int rectStart, int rectEnd,
+                              const char* insText, int* nDeleted,
+                              int* nInserted, int* endPos);
+
+    void redisplay_selection(TextSelection* oldSelection,
+                             TextSelection* newSelection);
+
+    void move_gap(int pos);
+    void reallocate_with_gap(int newGapStart, int newGapLen);
+    char* selection_text_(TextSelection* sel);
+    void remove_selection_(TextSelection* sel);
+    void replace_selection_(TextSelection* sel, const char* text);
+
+    void rectangular_selection_boundaries(int lineStartPos, int rectStart,
+                                          int rectEnd, int* selStart,
+                                          int* selEnd);
+
+    void update_selections(int pos, int nDeleted, int nInserted);
+
+    TextSelection mPrimary; /* highlighted areas */
+    TextSelection mSecondary;
+    TextSelection mHighlight;
+    int mLength;                /* length of the text in the buffer (the length
+                                   of the buffer itself must be calculated:
+                                   gapEnd - gapStart + length) */
+    char* mBuf;                 /* allocated memory where the text is stored */
+    int mGapStart;              /* points to the first character of the gap */
+    int mGapEnd;                /* points to the first char after the gap */
+    // The hardware tab distance used by all displays for this buffer,
+    // and used in computing offsets for rectangular selection operations.
+    int mTabDist;               /* equiv. number of characters in a tab */
+    int mUseTabs;               /* True if buffer routines are allowed to use
+                                   tabs for padding in rectangular operations */
+    int mNModifyProcs;          /* number of modify-redisplay procs attached */
+    Text_Modify_Cb*          /* procedures to call when buffer is */
+    mNodifyProcs;               /* modified to redisplay contents */
+    void** mCbArgs;             /* caller arguments for modifyProcs above */
+    int mNPredeleteProcs;	/* number of pre-delete procs attached */
+    Text_Predelete_Cb*	/* procedure to call before text is deleted */
+	 mPredeleteProcs;	/* from the buffer; at most one is supported. */
+    void **mPredeleteCbArgs;	/* caller argument for pre-delete proc above */
+    int mCursorPosHint;         /* hint for reasonable cursor position after
+                                   a buffer modification operation */
+    char mNullSubsChar;         /* NEdit is based on C null-terminated strings,
+                                   so ascii-nul characters must be substituted
+                                   with something else.  This is the else, but
+                                   of course, things get quite messy when you
+                                   use it */
+    char mCanUndo;		/* if this buffer is used for attributes, it must
+				   not do any undo calls */
+};
+
+}
+#endif
+
+//
+// End of "$Id: TextBuffer.h 4467 2005-08-05 19:17:34Z dejan $".
+//
+
Index: NonGTP/FLTK/include/fltk/LineDial.h
===================================================================
--- NonGTP/FLTK/include/fltk/LineDial.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/LineDial.h	(revision 773)
@@ -0,0 +1,44 @@
+//
+// "$Id: LineDial.h 3190 2004-01-06 06:43:03Z spitzak $"
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_LineDial_h
+#define fltk_LineDial_h
+
+#include "Dial.h"
+
+namespace fltk {
+
+/*! Dial but the constructor sets type() to LINE, so it draws a
+  pointer rather than a dot. */
+class FL_API LineDial : public Dial {
+public:
+  LineDial(int x,int y,int w,int h, const char *l = 0) :
+    Dial(x,y,w,h,l) {type(LINE);}
+};
+
+}
+#endif
+
+//
+// End of "$Id: LineDial.h 3190 2004-01-06 06:43:03Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/PixelType.h
===================================================================
--- NonGTP/FLTK/include/fltk/PixelType.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/PixelType.h	(revision 773)
@@ -0,0 +1,63 @@
+// "$Id: PixelType.h,v 1.1 2005/04/02 03:20:15 spitzak Exp $"
+//
+// Copyright 1998-2005 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_PixelType_h
+#define fltk_PixelType_h
+
+namespace fltk {
+/*! \addtogroup images
+  \{ */
+
+/**
+  Enumeration describing how colors are stored in an array of bytes
+  that is a pixel. This is used as an argument for fltk::drawimage(),
+  fltk::readimage(), and fltk::Symbol::readimage().
+
+  Notice that the order of the bytes in memory of ARGB32 or RGB32 is
+  a,r,g,b on a little-endian machine and b,g,r,a on a big-endian
+  machine. Due to the use of these types by Windows, this is often
+  the fastest form of data, if you have a choice. To convert an
+  fltk::Color to RGB32, shift it right by 8 (for ARGB32 shift the
+  alpha left 24 and or it in).
+
+  More types may be added in the future. The set is as minimal as
+  possible while still covering the types I have actually encountered.
+*/
+enum PixelType {
+  MASK	= 0,	//!< 1 byte of inverted mask, filled with current color
+  MONO	= 1,	//!< 1 byte of gray scale
+  RGBx	= 2,	//!< bytes in r,g,b,a,r,g,b,a... order, a byte is ignored
+  RGB	= 3, 	//!< bytes in r,g,b,r,g,b... order
+  RGBA	= 4,	//!< bytes in r,g,b,a,r,g,b,a... order
+  RGB32 = 5,	//!< 32-bit words containiing 0xaarrggbb (aa is ignored)
+  ARGB32= 6	//!< 32-bit words containing 0xaarrggbb
+};
+
+/**
+   Turn a PixelType into the number of bytes needed to hold a pixel.
+*/
+inline int depth(PixelType t) {return (t<2 ? 1 : t==3 ? 3 : 4);}
+
+/*! \} */
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/WordwrapInput.h
===================================================================
--- NonGTP/FLTK/include/fltk/WordwrapInput.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/WordwrapInput.h	(revision 773)
@@ -0,0 +1,45 @@
+//
+// "$Id: WordwrapInput.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// Small text input field that word-wraps its contents.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_WordwrapInput_h
+#define fltk_WordwrapInput_h
+
+#include "Input.h"
+
+namespace fltk {
+
+// This class is entirely inline.  If that changes, add FL_API to its declaration
+class WordwrapInput : public Input {
+public:
+  WordwrapInput(int x,int y,int w,int h,const char *l = 0)
+    : Input(x,y,w,h,l) {type(WORDWRAP);}
+};
+
+}
+#endif
+
+//
+// End of "$Id: WordwrapInput.h 2973 2003-04-20 03:17:51Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/TextEditor.h
===================================================================
--- NonGTP/FLTK/include/fltk/TextEditor.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/TextEditor.h	(revision 773)
@@ -0,0 +1,116 @@
+//
+// "$Id: TextEditor.h 4467 2005-08-05 19:17:34Z dejan $"
+//
+// Header file for TextEditor class.
+//
+// Copyright 2001-2005 by Bill Spitzak and others.
+// Original code Copyright Mark Edel.  Permission to distribute under
+// the LGPL for the FLTK library granted by Mark Edel.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+
+#ifndef TEXT_EDITOR_H
+#define TEXT_EDITOR_H
+
+#include "TextDisplay.h"
+
+namespace fltk {
+
+// key will match in any state
+#define TEXT_EDITOR_ANY_STATE  (-1L)
+
+class FL_API TextEditor : public TextDisplay {
+  public:
+    typedef int (*Key_Func)(int key, TextEditor* editor);
+
+    struct Key_Binding {
+      int          key;
+      int          state;
+      Key_Func     function;
+      Key_Binding* next;
+    };
+
+    TextEditor(int X, int Y, int W, int H, const char* l = 0);
+    ~TextEditor() { remove_all_key_bindings(); }
+    static NamedStyle* default_style;
+    virtual int handle(int e);
+    void insert_mode(int b) { insert_mode_ = b; }
+    int insert_mode() { return insert_mode_; }
+
+    void add_key_binding(int key, int state, Key_Func f, Key_Binding** list);
+    void add_key_binding(int key, int state, Key_Func f)
+      { add_key_binding(key, state, f, &key_bindings); }
+    void remove_key_binding(int key, int state, Key_Binding** list);
+    void remove_key_binding(int key, int state)
+      { remove_key_binding(key, state, &key_bindings); }
+    void remove_all_key_bindings(Key_Binding** list);
+    void remove_all_key_bindings() { remove_all_key_bindings(&key_bindings); }
+    void add_default_key_bindings(Key_Binding** list);
+    Key_Func bound_key_function(int key, int state, Key_Binding* list);
+    Key_Func bound_key_function(int key, int state)
+      { return bound_key_function(key, state, key_bindings); }
+    void default_key_function(Key_Func f) { default_key_function_ = f; }
+
+    // functions for the built in default bindings
+    static int kf_default(int c, TextEditor* e);
+    static int kf_ignore(int c, TextEditor* e);
+    static int kf_backspace(int c, TextEditor* e);
+    static int kf_enter(int c, TextEditor* e);
+    static int kf_move(int c, TextEditor* e);
+    static int kf_shift_move(int c, TextEditor* e);
+    static int kf_ctrl_move(int c, TextEditor* e);
+    static int kf_c_s_move(int c, TextEditor* e);
+    static int kf_home(int, TextEditor* e);
+    static int kf_end(int c, TextEditor* e);
+    static int kf_left(int c, TextEditor* e);
+    static int kf_up(int c, TextEditor* e);
+    static int kf_right(int c, TextEditor* e);
+    static int kf_down(int c, TextEditor* e);
+    static int kf_page_up(int c, TextEditor* e);
+    static int kf_page_down(int c, TextEditor* e);
+    static int kf_insert(int c, TextEditor* e);
+    static int kf_delete(int c, TextEditor* e);
+    static int kf_copy(int c, TextEditor* e);
+    static int kf_cut(int c, TextEditor* e);
+    static int kf_paste(int c, TextEditor* e);
+    static int kf_select_all(int c, TextEditor* e);
+    static int kf_undo(int c, TextEditor* e);
+
+  protected:
+    int handle_key();
+    void maybe_do_callback();
+
+    int insert_mode_;
+    Key_Binding* key_bindings;
+    static Key_Binding* global_key_bindings;
+    Key_Func default_key_function_;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: TextEditor.h 4467 2005-08-05 19:17:34Z dejan $".
+//
+
+
Index: NonGTP/FLTK/include/fltk/Group.h
===================================================================
--- NonGTP/FLTK/include/fltk/Group.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Group.h	(revision 773)
@@ -0,0 +1,116 @@
+//
+// "$Id: Group.h 4571 2005-09-16 08:02:58Z spitzak $"
+//
+// Group is the base class for all container widgets. For historical
+// reasons it also provides a default version of layout.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Group_h
+#define fltk_Group_h
+
+#ifndef fltk_Widget_h
+# include "Widget.h"
+#endif
+
+namespace fltk {
+
+class FL_API Group : public Widget {
+public:
+
+  int children() const {return children_;}
+  Widget* child(int n) const {return array_[n];}
+
+  void draw();
+  void layout();
+  int handle(int);
+
+  void begin() {current_ = this;}
+  void end() {current_ = (Group*)parent();}
+  static Group *current() {return current_;}
+  static void current(Group *g) {current_ = g;}
+
+  int find(const Widget*) const;
+  int find(const Widget& o) const {return find(&o);}
+
+  Group(int,int,int,int, const char * = 0, bool begin=false);
+  virtual ~Group();
+  void add(Widget&);
+  void add(Widget* o) {add(*o);}
+  void insert(Widget&, int index);
+  void insert(Widget& o, Widget* before) {insert(o,find(before));}
+  void remove(int index);
+  void remove(Widget& o) {remove(find(o));}
+  void remove(Widget* o) {remove(find(*o));}
+  void remove_all();
+  void replace(int index, Widget&);
+  void replace(Widget& old, Widget& o) {replace(find(old),o);}
+  void swap(int indexA, int indexB);
+  void clear();
+
+  void resizable(Widget& o) {resizable_ = &o;}
+  void resizable(Widget* o) {resizable_ = o;}
+  Widget* resizable() const {return resizable_;}
+  void add_resizable(Widget& o) {resizable_ = &o; add(o);}
+  void init_sizes();
+  bool resize(int,int,int,int)	;
+  bool resize(int w, int h) {return resize(x(),y(),w,h);}
+
+  void focus_index(int v) {focus_index_ = v;}
+  void set_focus(Widget* w) {focus_index_ = find(w);}
+  int  focus_index() const {return focus_index_;}
+  static int navigation_key();
+
+  // back compatability function:
+  friend FL_FORMS_API void end_group(); // forms emulation function
+  void fix_old_positions();
+
+  Flags resize_align() const {return resize_align_;}
+  void resize_align(Flags f) {resize_align_ = f;}
+
+protected:
+
+  void draw_child(Widget&) const;
+  void update_child(Widget&) const;
+  void draw_outside_label(Widget&) const ;
+  int* sizes();
+  void layout(const Rectangle&, int layout_damage);
+
+private:
+
+  int children_;
+  int focus_index_;
+  Widget** array_;
+  Widget* resizable_;
+  Flags resize_align_;
+  int *sizes_; // remembered initial sizes of children
+
+  static Group *current_;
+
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Group.h 4571 2005-09-16 08:02:58Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/DoubleBufferWindow.h
===================================================================
--- NonGTP/FLTK/include/fltk/DoubleBufferWindow.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/DoubleBufferWindow.h	(revision 773)
@@ -0,0 +1,27 @@
+// This class is provided for back compatability only with some fltk2.0
+// versions. You can turn on double buffering on a normal window if
+// you want it.
+  
+#ifndef fltk_DoubleBufferWindow_h
+#define fltk_DoubleBufferWindow_h
+
+#ifndef fltk_Window_h
+# include "Window.h"
+#endif
+
+namespace fltk {
+
+class DoubleBufferWindow : public Window {
+
+public:
+  DoubleBufferWindow(int x, int y, int w, int h, const char*l = 0)
+    : Window(x,y,w,h,l) {set_double_buffer();}
+    
+  DoubleBufferWindow(int x, int y, const char*l = 0)
+    : Window(x,y,l) {set_double_buffer();}
+
+};
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/MenuWindow.h
===================================================================
--- NonGTP/FLTK/include/fltk/MenuWindow.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/MenuWindow.h	(revision 773)
@@ -0,0 +1,55 @@
+// "$Id: MenuWindow.h 4044 2005-02-16 07:26:40Z spitzak $"
+//
+// Copyright 1998-2005 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_MenuWindow_h
+#define fltk_MenuWindow_h
+
+#include "Window.h"
+
+namespace fltk {
+
+class FL_API MenuWindow : public Window {
+  enum {NO_OVERLAY = 0x08000000};
+
+public:
+
+  virtual void create();
+  virtual void flush();
+  virtual void destroy();
+
+  static NamedStyle* default_style;
+
+  int overlay() {return !(flags()&NO_OVERLAY);}
+  void set_overlay() {clear_flag(NO_OVERLAY);}
+  void clear_overlay() {set_flag(NO_OVERLAY);}
+  ~MenuWindow();
+  MenuWindow(int W, int H, const char *l = 0);
+  MenuWindow(int X, int Y, int W, int H, const char *l = 0);
+
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: MenuWindow.h 4044 2005-02-16 07:26:40Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/load_plugin.h
===================================================================
--- NonGTP/FLTK/include/fltk/load_plugin.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/load_plugin.h	(revision 773)
@@ -0,0 +1,12 @@
+// This is a convienence function for portable loading of a plugin
+// and possibly returing a symbol in that plugin.
+
+#ifndef fl_load_plugin_h
+#define fl_load_plugin_h
+
+#include "FL_API.h"
+
+/*! \addtogroup utilities */
+FL_API void* load_plugin(const char* name, const char* symbol);
+
+#endif
Index: NonGTP/FLTK/include/fltk/MultiBrowser.h
===================================================================
--- NonGTP/FLTK/include/fltk/MultiBrowser.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/MultiBrowser.h	(revision 773)
@@ -0,0 +1,47 @@
+//
+// "$Id: MultiBrowser.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// Browser that lets the user select more than one item at a time.
+// Most of the implementation is in the base Browser class.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_MultiBrowser_h
+#define fltk_MultiBrowser_h
+
+#include "Browser.h"
+
+namespace fltk {
+
+// This class is entirely inline.  If that changes, add FL_API to its declaration
+class MultiBrowser : public Browser {
+public:
+    MultiBrowser(int x,int y,int w,int h,const char *l=0)
+	: Browser(x,y,w,h,l) {type(MULTI);}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: MultiBrowser.h 2973 2003-04-20 03:17:51Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/Input.h
===================================================================
--- NonGTP/FLTK/include/fltk/Input.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Input.h	(revision 773)
@@ -0,0 +1,125 @@
+//
+// "$Id: Input.h 4245 2005-04-08 06:27:43Z spitzak $"
+//
+// One-line text input field.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Input_h
+#define fltk_Input_h
+
+#ifndef fltk_Widget_h
+#include "Widget.h"
+#endif
+
+namespace fltk {
+
+class FL_API Input : public Widget {
+public:
+  enum { // values for type()
+    NORMAL = 0,
+    // this hole was used by float & int types
+    SECRET = 3,
+    MULTILINE = 4,
+    WORDWRAP = 5
+  };
+
+  Input(int, int, int, int, const char* = 0);
+  ~Input();
+  static NamedStyle* default_style;
+
+  void draw();
+  void draw(const Rectangle&);
+  int handle(int);
+  int handle(int event, const Rectangle&);
+  bool handle_key();
+
+  bool value(const char*);
+  bool value(const char*, int);
+  bool static_value(const char*);
+  bool static_value(const char*, int);
+  const char* value() const {return value_;}
+  char at(int i) const {return value_[i];}
+#ifdef FLTK_1_WIDGET  // back-compatability section:
+  char index(int i) const {return value_[i];}
+#endif
+  int size() const {return size_;}
+  void reserve(int newsize);
+
+  int position() const {return position_;}
+  int mark() const {return mark_;}
+  void position(int p, int m);
+  void position(int p) {position(p, p);}
+  void up_down_position(int position, bool extend);
+  void mark(int m) { position(position(), m);}
+
+  virtual bool replace(int, int, const char*, int);
+  bool cut() {return replace(position(), mark(), 0, 0);}
+  bool cut(int n) {return replace(position(), position()+n, 0, 0);}
+  bool cut(int a, int b) {return replace(a, b, 0, 0);}
+  bool insert(const char* t);
+  bool insert(const char* t, int l){return replace(position_, mark_, t, l);}
+  bool replace(int a, int b, char c) {return replace(a,b,&c,1);}
+  bool copy(bool clipboard = true);
+  bool undo();
+  void maybe_do_callback();
+
+  int word_start(int i) const;
+  int word_end(int i) const;
+  int line_start(int i) const;
+  int line_end(int i) const;
+  int mouse_position(const Rectangle&) const;
+  int xscroll() const {return xscroll_;}
+  int yscroll() const {return yscroll_;}
+
+private:
+
+  const char* value_;
+  char* buffer;
+
+  int size_;
+  int bufsize;
+  int position_;
+  int mark_;
+  int xscroll_, yscroll_;
+  int mu_p;
+  int label_width;
+
+  const char* expand(const char*, char*, int) const;
+  float expandpos(const char*, const char*, const char*, int*) const;
+  void minimal_update(int, int);
+  void minimal_update(int p);
+  void erase_cursor_at(int p);
+
+  void setfont() const;
+
+  void shift_position(int p);
+  void shift_up_down_position(int p);
+
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Input.h 4245 2005-04-08 06:27:43Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/FileInput.h
===================================================================
--- NonGTP/FLTK/include/fltk/FileInput.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/FileInput.h	(revision 773)
@@ -0,0 +1,45 @@
+//
+// "$Id: FileInput.h 2871 2002-12-10 02:01:07Z easysw $"
+//
+// Fl_FileInput definitions for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1997-1999 by Easy Software Products.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_FileInput_h
+#define fltk_FileInput_h
+
+#include <fltk/Input.h>
+
+namespace fltk {
+
+class FL_API FileInput : public Input {
+ public:
+  FileInput(int x, int y, int w, int h, const char *l = 0) :
+      Input(x, y, w, h, l) {}
+  int handle(int);
+};
+
+}
+#endif
+
+//
+// End of "$Id: FileInput.h 2871 2002-12-10 02:01:07Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/gl.h
===================================================================
--- NonGTP/FLTK/include/fltk/gl.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/gl.h	(revision 773)
@@ -0,0 +1,99 @@
+//
+// "$Id: gl.h 4405 2005-06-30 03:50:35Z spitzak $"
+//
+// OpenGL header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// You must include this instead of GL/gl.h to get the Microsoft
+// APIENTRY stuff included (from <windows.h>) prior to the OpenGL
+// header files.
+//
+// This file also provides "missing" OpenGL functions, and
+// gl_start() and gl_finish() to allow OpenGL to be used in any window
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef gl_draw_H
+#define gl_draw_H
+
+#include "Color.h"
+#include "Flags.h"
+
+#ifdef _WIN32
+# include <windows.h>
+# include <GL/gl.h>
+# undef OPAQUE
+# undef DELETE
+# undef ERROR
+# undef IN
+# undef OUT
+# undef POINT
+# undef far
+# undef max
+# undef min
+# undef near
+#elif defined(__APPLE__)
+# include <OpenGL/gl.h>
+#else
+# ifndef APIENTRY
+#  if defined(__CYGWIN__)
+#   define APIENTRY __attribute__ ((__stdcall__))
+#  else
+#   define APIENTRY
+#  endif
+# endif
+# include <GL/gl.h>
+#endif
+
+namespace fltk {
+
+struct Font;
+
+/*! \addtogroup opengl
+  \ingroup drawing
+  \{ */
+FL_GL_API void glstart();
+FL_GL_API void glfinish();
+
+FL_GL_API void glsetcolor(Color);
+
+FL_GL_API void glstrokerect(int x,int y,int w,int h);
+inline void glfillrect(int x,int y,int w,int h) {glRecti(x,y,x+w,y+h);}
+
+FL_GL_API void glsetfont(Font* f, float size);
+FL_GL_API float glgetascent();
+FL_GL_API float glgetdescent();
+FL_GL_API float glgetwidth(const char *);
+FL_GL_API float glgetwidth(const char *, int n);
+
+FL_GL_API void gldrawtext(const char*);
+FL_GL_API void gldrawtext(const char*, int n);
+FL_GL_API void gldrawtext(const char*, float x, float y, float z = 0);
+FL_GL_API void gldrawtext(const char*, int n, float x, float y, float z = 0);
+
+FL_GL_API void gldrawimage(const uchar *, int x,int y,int w,int h, int d=3, int ld=0);
+/*! \} */
+
+}
+#endif
+
+//
+// End of "$Id: gl.h 4405 2005-06-30 03:50:35Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/HighlightButton.h
===================================================================
--- NonGTP/FLTK/include/fltk/HighlightButton.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/HighlightButton.h	(revision 773)
@@ -0,0 +1,45 @@
+//
+// "$Id: HighlightButton.h 2871 2002-12-10 02:01:07Z easysw $"
+//
+// This button highlights even if the default style does not do so.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_HighlightButton_h
+#define fltk_HighlightButton_h
+
+#include "Button.h"
+
+namespace fltk {
+
+class FL_API HighlightButton : public Button {
+public:
+  HighlightButton(int x,int y,int w,int h,const char *l=0);
+  static NamedStyle* default_style;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: HighlightButton.h 2871 2002-12-10 02:01:07Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/Rectangle.h
===================================================================
--- NonGTP/FLTK/include/fltk/Rectangle.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Rectangle.h	(revision 773)
@@ -0,0 +1,109 @@
+// "$Id: Rectangle.h 4306 2005-05-02 06:39:46Z spitzak $"
+//
+// Copyright 1998-2004 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Rectangle_h
+#define fltk_Rectangle_h
+
+#include "FL_API.h"
+
+namespace fltk {
+
+class FL_API Rectangle {
+  int x_, y_, w_, h_;
+
+ public:
+
+  /*! Left edge */
+  int x() const {return x_;}
+  /*! Top edge */
+  int y() const {return y_;}
+  /*! Distance between left and right edges */
+  int w() const {return w_;}
+  /*! Distance between top and bottom edges */
+  int h() const {return h_;}
+  /*! Return x()+w(), the right edge of the rectangle. */
+  int r() const {return x_+w_;}
+  /*! Return y()+h(), the bottom edge of the rectangle. */
+  int b() const {return y_+h_;}
+  /*! Move the rectangle so the left edge is at \a v. */
+  void x(int v) {x_ = v;}
+  /*! Move the rectangle so the top edge is at \a v. */
+  void y(int v) {y_ = v;}
+  /*! Change w() by moving the right edge. x() does not change. */
+  void w(int v) {w_ = v;}
+  /*! Change h() by moving the bottom edge. y() does not change. */
+  void h(int v) {h_ = v;}
+  /*! Change x() without changing r(), by changing the width. */
+  void set_x(int v) {w_ -= v-x_; x_ = v;}
+  /*! Change y() without changing b(), by changing the height. */
+  void set_y(int v) {h_ -= v-y_; y_ = v;}
+  /*! Change r() without changing x(), by changine the width. */
+  void set_r(int v) {w_ = v-x_;}
+  /*! Change b() without changing y(), by changine the height. */
+  void set_b(int v) {h_ = v-y_;}
+  /*! Set x(), y(), w(), and h() all at once. */
+  void set(int x, int y, int w, int h) {x_=x; y_=y; w_=w; h_=h;}
+  /*! Add \a d to x() without changing r() (it reduces w() by \a d). */
+  void move_x(int d) {x_ += d; w_ -= d;}
+  /*! Add \a d to y() without changing b() (it reduces h() by \a d). */
+  void move_y(int d) {y_ += d; h_ -= d;}
+  /*! Add \a d to r() and w(). */
+  void move_r(int d) {w_ += d;}
+  /*! Add \a d to b() and h(). */
+  void move_b(int d) {h_ += d;}
+  /*! Move all edges in by \a d. See also Symbol::inset() */
+  void inset(int d) {x_ += d; y_ += d; w_ -= 2*d; h_ -= 2*d;}
+  /*! Move entire rectangle by given distance in x and y. */
+  void move(int dx, int dy) {x_ += dx; y_ += dy;}
+  /*! True if w() or h() are less or equal to zero. */
+  bool empty() const {return w_ <= 0 || h_ <= 0;}
+  /*! Same as !empty(), true if w() and h() are both greater than zero. */
+  bool not_empty() const {return w_ > 0 && h_ > 0;}
+  /*! Integer center position. Rounded to the left if w() is odd. */
+  int center_x() const {return x_+(w_>>1);}
+  /*! Integer center position. Rounded to lower y if h() is odd. */
+  int center_y() const {return y_+(h_>>1);}
+  /*! Where to put baseline to center current font nicely */
+  int baseline_y() const;
+
+  Rectangle() {}
+
+  /*! Constructor that sets x(), y(), w(), and h(). */
+  Rectangle(int x, int y, int w, int h) : x_(x), y_(y), w_(w), h_(h) {}
+
+  /*! Constructor that sets x() and y() to zero, and sets w() and h(). */
+  Rectangle(int w, int h) : x_(0), y_(0), w_(w), h_(h) {}
+
+  /*! Copy constructor. */
+  Rectangle(const Rectangle& r) : x_(r.x_),y_(r.y_),w_(r.w_),h_(r.h_) {}
+
+  Rectangle(const Rectangle& r, int w, int h, int flags = 0);
+
+  /*! True if rectangle contains the pixel who's upper-left corner is at x,y */
+  bool contains(int x, int y) const {return x>=x_ && y>=y_ && x<x_+w_ && y<y_+h_;}
+  
+};
+
+}
+
+#endif
+
+
Index: NonGTP/FLTK/include/fltk/ThumbWheel.h
===================================================================
--- NonGTP/FLTK/include/fltk/ThumbWheel.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/ThumbWheel.h	(revision 773)
@@ -0,0 +1,54 @@
+//
+// "$Id: ThumbWheel.h 3418 2004-05-15 20:52:47Z spitzak $"
+//
+// Inventor-style thumbwheel control for a single floating point value.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_ThumbWheel_h
+#define fltk_ThumbWheel_h
+
+#ifndef fltk_Valuator_h
+#include "Valuator.h"
+#endif
+
+namespace fltk {
+
+class FL_API ThumbWheel : public Valuator {
+public:
+#ifdef FLTK_1_SLIDER
+  // for back-compatability only
+  enum {HORIZONTAL = 1};
+#endif
+  int handle(int);
+  ThumbWheel(int X,int Y,int W,int H,const char* L=0);
+
+protected:
+  void draw();
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: ThumbWheel.h 3418 2004-05-15 20:52:47Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/string.h
===================================================================
--- NonGTP/FLTK/include/fltk/string.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/string.h	(revision 773)
@@ -0,0 +1,125 @@
+/* "$Id: string.h 4115 2005-03-14 04:48:51Z spitzak $"
+ *
+ * Copyright 1998-2005 by Bill Spitzak and others.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Please report all bugs and problems to "fltk-bugs@fltk.org".
+ */
+
+/* This file is designed to work on Windows, Linux, and BSD systems.
+   It may need to be edited to work on other systems. Please try
+   to do this by adding #if statements so this file remains portable.
+
+   Some versions of fltk wrote this file using autoconf. I never liked
+   this because I could not share the header file between systems, so
+   I have reverted to a constant version.
+*/
+
+#ifndef fltk_string_h
+#define fltk_string_h
+
+#if 1
+# include <string.h>
+#endif
+
+#if 1 /* for va_list */
+# include <stdarg.h>
+#endif
+
+#if 1 /* for sprintf, vsprintf, snprintf and vsnprintf */
+# include <stdio.h>
+#endif
+
+#if 0
+# include <stdlib.h>
+#endif
+
+#if 0
+# include <ctype.h>
+/* Unixware defines these macros in above header for the obsolete BSD
+   functions, get rid of them as it prevents you making a variable
+   named "index"! */
+# ifdef index
+#  undef index
+# endif
+# ifdef rindex
+#  undef rindex
+# endif
+#endif
+
+#if 0
+# include <strings.h>
+#endif
+
+#if 0 /*defined(__MWERKS__)*/
+/* MetroWerks' CodeWarrior put some functions in <extras.h> but that
+   file does not play well with others, so we don't include it. */
+# include <extras.h>
+#endif
+
+/* Windows has equivalent functions, but being Microsoft they added
+   gratuitoius changes to the names to stop code from being portable: */
+#if (defined(_WIN32) && !defined(__CYGWIN__)) || defined(__EMX__)
+# define strcasecmp(s,t)	stricmp(s, t)
+# define strncasecmp(s,t,n)	strnicmp(s, t, n)
+# define vsnprintf		_vsnprintf
+# define snprintf		_snprintf
+#endif
+
+/*! \addtogroup utilities
+  \{ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "FL_API.h"
+
+FL_API extern const char* newstring(const char *);
+
+#if defined(DOXYGEN) || defined(__MWERKS__)
+FL_API extern int strcasecmp(const char *, const char *);
+#endif
+
+#if defined(DOXYGEN) || defined(__MWERKS__)
+FL_API extern int strncasecmp(const char *, const char *, size_t);
+#endif
+
+#if defined(DOXYGEN)
+FL_API extern int snprintf(char *, size_t, const char *, ...);
+#endif
+
+#if defined(DOXYGEN)
+FL_API extern int vsnprintf(char *, size_t, const char *, va_list ap);
+#endif
+
+#if defined(DOXYGEN) || !defined(__BSD__)
+FL_API extern size_t strlcat(char *, const char *, size_t);
+#endif
+
+#if defined(DOXYGEN) || !defined(__BSD__)
+FL_API extern size_t strlcpy(char *, const char *, size_t);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+/*! \} */
+
+#endif
+
+/*
+ * End of "$Id: string.h 4115 2005-03-14 04:48:51Z spitzak $".
+ */
Index: NonGTP/FLTK/include/fltk/Window.h
===================================================================
--- NonGTP/FLTK/include/fltk/Window.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Window.h	(revision 773)
@@ -0,0 +1,145 @@
+//
+// "$Id: Window.h 4242 2005-04-06 06:59:36Z spitzak $"
+//
+// Window widget. This must be the outermost group. You can also put
+// them inside other widgets to use the system's window hierarchy.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Window_h
+#define fltk_Window_h
+
+#include "Group.h"
+
+namespace fltk {
+
+// value for x,y to indicate window system places window
+const int USEDEFAULT = ((int)0x80000000); // same as Win32 value
+
+class CreatedWindow;
+class Monitor;
+
+class FL_API Window : public Group {
+public:
+
+  Window(int,int,int,int, const char* = 0, bool begin = false);
+  Window(int,int, const char* = 0);
+  static NamedStyle* default_style;
+  virtual ~Window();
+
+  const char* label() const	{return Widget::label();}
+  const char* iconlabel() const	{return iconlabel_;}
+  void label(const char*);
+  void iconlabel(const char*);
+  void label(const char* label, const char* iconlabel);
+  void copy_label(const char* c) {Widget::copy_label(c); label(label());}
+  const void* icon() const	{return icon_;}
+  void icon(const void * ic)	{icon_ = ic;}
+  static const char* xclass()	{return xclass_;}
+  static void xclass(const char* v) {xclass_ = v;}
+
+  void clear_border()	{set_flag(NOBORDER);}
+  bool border() const	{return !(flags() & NOBORDER);}
+  void set_override()	{set_flag(NOBORDER|OVERRIDE);}
+  bool override() const {return (flags()&OVERRIDE)!=0; }
+  const Window* child_of() const {return child_of_;}
+  void child_of(const Window* w);
+  void set_modal()	{set_flag(MODAL);} // back compatability only!
+  void set_non_modal()	{set_flag(NON_MODAL);} // back compatability only!
+
+  bool double_buffer() const {return (flags()&DOUBLE)!=0;}
+  void set_double_buffer() {set_flag(DOUBLE);}
+  void clear_double_buffer() {clear_flag(DOUBLE);}
+  void free_backbuffer();
+
+  virtual void draw_overlay();
+  void redraw_overlay();
+  void erase_overlay();
+
+  void hotspot(int x, int y, bool offscreen = false);
+  void hotspot(const Widget*, bool offscreen = false);
+  void hotspot(const Widget& p, bool offscrn = false) {hotspot(&p,offscrn);}
+  void size_range(int a, int b, int c=0, int d=0, int e=0, int f=0)
+    { minw=(short)a; minh=(short)b; maxw=(short)c; maxh=(short)d; dw=(uchar)e; dh=(uchar)f; size_range_(); }
+
+  bool shown() const {return i != 0;}
+  void show();
+  void show(int, char**);
+  void show(const Window* parent);
+  bool exec(const Window* parent = 0, bool grab = false);
+  void show_inside(const Window* parent);
+  void iconize();
+  bool iconic() const;
+  virtual void destroy();
+
+  void fullscreen();
+  void fullscreen(const Monitor&);
+  void fullscreen_off(int,int,int,int);
+
+  static void default_callback(Window*, void* v);
+
+  virtual int handle(int);
+  virtual void layout();
+  virtual void flush();
+  virtual void draw();
+
+  static Window* first();
+  static void first(Window*);
+  Window* next();
+
+  void borders( Rectangle *r ) const;
+
+  static const Window* drawing_window() {return drawing_window_;}
+  static const Window* drawing_window_;
+
+protected:
+  virtual void create();
+
+private:
+
+  friend class CreatedWindow;
+  CreatedWindow *i; // points at the system-specific stuff
+  const Window* child_of_;
+  const char* iconlabel_;
+  const void* icon_;
+  // size_range stuff:
+  short minw, minh, maxw, maxh;
+  unsigned char dw, dh, size_range_set;
+  void size_range_();
+  // values for flags():
+  enum {
+    MODAL	= 0x80000000,
+    NOBORDER 	= 0x40000000,
+    OVERRIDE	= 0x20000000,
+    NON_MODAL	= 0x10000000,
+    DOUBLE	= 0x08000000
+  };
+  static const char* xclass_;
+  void _Window(); // constructor innards
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Window.h 4242 2005-04-06 06:59:36Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/x.h
===================================================================
--- NonGTP/FLTK/include/fltk/x.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/x.h	(revision 773)
@@ -0,0 +1,195 @@
+//
+// "$Id: x.h 4408 2005-07-09 06:41:56Z spitzak $"
+//
+// Copyright 1998-2004 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+// Declarations of internal fltk symbols that are useful for calling
+// Xlib functions. You should include this file if (and ONLY if) you
+// need to call Xlib directly.  You should avoid using this header
+// file in your software if at all possible.  NO FLTK HEADER FILE IS
+// ALLOWED TO INCLUDE THIS.
+//
+// For historic reasons, this file will also include the correct
+// header file for other operating systems. As all three major systems
+// now have multiple drawing libraries (Linux has X11/Cairo, Windows
+// has GDI32/LongHorn/DirectX, and Mac has Carbon/Aqua/X11, and all
+// have OpenGL) not all the symbols in here may be usable with a given
+// compilation of fltk.
+
+#ifndef fltk_x_h
+#define fltk_x_h
+
+#include "draw.h"
+
+#if defined(_WIN32) && !USE_X11
+# include "win32.h"
+
+#elif defined(__APPLE__) && !USE_X11
+# define USE_QUARTZ 1
+# include "mac.h"
+
+#else
+#define USE_X11 1
+
+////////////////////////////////////////////////////////////////
+// Try to get the parts of Xlib.h included while avoiding warnings:
+
+#ifndef DOXYGEN
+# define Window XWindow
+
+// pragmas are to fix the broken SGI Irix Xlib header files:
+# if !defined(__GNUC__) && (defined(_ABIN32) || defined(_ABI64))
+#  pragma set woff 3322
+# endif
+# include <X11/Xlib.h>
+# include <X11/Xutil.h>
+# if !defined(__GNUC__) && (defined(_ABIN32) || defined(_ABI64))
+#  pragma reset woff 3322
+# endif
+
+# include <X11/Xatom.h>
+
+# if USE_XFT
+#  include <X11/Xft/Xft.h>
+# else
+ typedef struct _XftDraw XftDraw;
+# endif
+
+# if USE_CAIRO
+#  include <cairo.h>
+#  include <cairo-xlib.h>
+# else
+ typedef struct cairo cairo_t;
+# endif
+
+#include <X11/extensions/XInput.h>
+#include <X11/extensions/XI.h>
+
+# undef Window
+
+# if defined(__FreeBSD__) || defined(__APPLE__) || defined(__CYGWIN__)
+typedef unsigned long	ulong;
+typedef unsigned int	uint;
+typedef unsigned char	uchar;
+# endif
+
+#endif
+
+extern FL_API Region	XRectangleRegion(int x, int y, int w, int h);
+
+namespace fltk {
+
+////////////////////////////////////////////////////////////////
+// constant info about the X server connection:
+
+extern FL_API void	open_display();
+extern FL_API void	open_display(Display*);
+extern FL_API void	close_display();
+
+extern FL_API Display*	xdisplay;
+extern FL_API XWindow	message_window;
+extern FL_API int	xscreen;
+extern FL_API XVisualInfo* xvisual;
+extern FL_API Colormap	xcolormap;
+
+////////////////////////////////////////////////////////////////
+// event handling:
+
+// feed events into fltk by setting xevent and calling handle:
+extern FL_API XEvent	xevent;
+extern FL_API bool	handle();
+
+// set by last xevent with a timestamp:
+extern FL_API ulong	event_time;
+
+////////////////////////////////////////////////////////////////
+// DnD:
+
+extern FL_API XWindow dnd_source_window;
+extern FL_API Atom *dnd_source_types;
+extern FL_API Atom dnd_type;
+extern FL_API Atom dnd_source_action;
+extern FL_API Atom dnd_action;
+
+////////////////////////////////////////////////////////////////
+// drawing functions:
+
+extern FL_API cairo_t*	cc;
+extern FL_API XftDraw*	xftc;
+extern FL_API GC	gc;
+extern FL_API XWindow	xwindow;
+extern FL_API ulong	current_xpixel;
+extern FL_API ulong	xpixel(Color i);
+extern FL_API void	clip_region(Region);
+extern FL_API Region	clip_region();
+
+extern FL_API void	draw_into(XWindow, int w, int h);
+extern FL_API void	stop_drawing(XWindow);
+
+#define HFONT XFontStruct*
+extern FL_API HFONT	xfont();
+
+////////////////////////////////////////////////////////////////
+// only include this if <fltk/Window.h> was included:
+#if defined(fltk_Window_h) || defined(DOXYGEN)
+
+// When fltk tells X about a window, one of these objects is created.
+// Warning: this object is highly subject to change!  It's definition
+// is only here so that xid(Window) can be declared inline:
+
+class FL_API CreatedWindow {
+public:
+  XWindow xid;
+  XWindow backbuffer;
+  XWindow frontbuffer;
+  Window *window;
+  Region region;
+  void expose(const Rectangle&);
+  CreatedWindow *next;
+  bool wait_for_expose;
+  bool backbuffer_bad; // used for XDBE
+  bool overlay; // true if redraw_overlay was called
+  ::Cursor cursor;
+  const Widget* cursor_for;
+  static CreatedWindow* first;
+  static CreatedWindow* find(const Window* window) {return window->i;}
+  void sendxjunk();
+  static void create(Window*,
+		     XVisualInfo*, Colormap,
+		     int background = -1);
+  static CreatedWindow* set_xid(Window*, XWindow);
+  Rectangle current_size;
+};
+
+// convert xid <-> Window:
+inline XWindow xid(const Window*w) {return CreatedWindow::find(w)->xid;}
+Window* find(XWindow xid);
+
+#endif // Window_h
+////////////////////////////////////////////////////////////////
+
+}
+
+#endif	// not _WIN32
+#endif
+
+//
+// End of "$Id: x.h 4408 2005-07-09 06:41:56Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/SharedImage.h
===================================================================
--- NonGTP/FLTK/include/fltk/SharedImage.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/SharedImage.h	(revision 773)
@@ -0,0 +1,209 @@
+// "$Id: SharedImage.h 4419 2005-07-15 05:48:26Z spitzak $"
+//
+// Copyright 1998-2004 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+/*! \class fltk::SharedImage
+
+Images that are all put in a tree by "name" (usually a filename)
+so that if the same name is used more than once the same instance
+is used.
+
+This is probably obsolete and will be deleted. The base Symbol class
+now has a lookup-by-name function, and the Image class could have
+methods added to it to throw away the pixmaps of lru images.
+
+*/
+
+#ifndef fltk_SharedImage_h
+#define fltk_SharedImage_h
+
+#include "Image.h"
+
+namespace fltk {
+
+struct FL_IMAGES_API ImageType;
+
+class FL_API SharedImage : public Image {
+protected:
+  static const char* shared_image_root;
+
+  static int image_used;
+  static unsigned mem_usage_limit;
+
+  static unsigned mem_used;
+
+  SharedImage* l1;    // Left leaf in the binary tree
+  SharedImage* l2;    // Right leaf in the binary tree
+  const char* 	   name;  // Used to indentify the image, and as filename
+  const uchar* datas; // If non zero, pointers on inlined compressed datas
+  unsigned int     used;  // Last time used, for cache handling purpose
+  int              refcount; // Number of time this image has been get
+
+  SharedImage() { };  // Constructor is private on purpose,
+                          // use the get function rather
+  //~SharedImage();
+
+  void find_less_used();
+  static void check_mem_usage();
+
+  /*! Return the filename obtained from the concatenation
+    of the image root directory and this image name
+    WARNING : the returned pointer will be
+    available only until next call to get_filename */
+  const char* get_filename() const;
+
+  static const char* get_filename(const char*);
+
+  virtual void read() = 0;/*!< decompress the image and create its pixmap */
+
+  static void insert(SharedImage*& p, SharedImage* image);
+  static SharedImage* find(SharedImage* image, const char* name);
+  void remove_from_tree(SharedImage*& p, SharedImage* image);
+
+
+public:
+  static SharedImage  *first_image;
+
+  /*! Return an SharedImage, using the create function if an image with
+    the given name doesn't already exist. Use datas, or read from the
+    file with filename name if datas==0. */
+  static SharedImage* get(SharedImage* (*create)(),
+			  const char* name, const uchar* datas=0);
+
+  /*! Reload the image, useful if it has changed on disk, or if the datas
+    / in memory have changed (you can also give a new pointer on datas) */
+  void reload(const uchar* datas=0);
+  static void reload(const char* name, const uchar* datas=0);
+
+  /*! Remove an image from the database and delete it if its refcount has
+    fallen to zero
+    Each remove() decrements the refcount, each get() increments it
+    Return 1 if it has been really deleted. */
+  int remove();
+  static int remove(const char* name);
+
+  /*! Clear the cache for this image and all of its children in the binary tree */
+  void clear_cache();
+
+  /*! Set the position where images are looked for on disk */
+  static void set_root_directory(const char* d);
+
+  /*! Set the size of the cache (0 = unlimited is the default) */
+  static void set_cache_size(unsigned l);
+
+  void update();
+  void _draw(const Rectangle&) const;
+
+};
+
+////////////////////////////////////////////////////////////////
+
+/*! Description of an Image file format */
+struct FL_IMAGES_API ImageType {
+  // Name of the filetype as it appear in the source code LOWERCASE!!!
+  const char* name;
+  // Function to test the filetype
+  bool (*test)(const uchar* datas, unsigned size);
+  // Function to get/create an image of this type
+  SharedImage* (*get)(const char* name, const uchar* datas);
+};
+extern FL_IMAGES_API ImageType image_filetypes[];
+
+/*! Try to guess the filetype
+  Beware that calling this force you to link in all image types ! */
+FL_IMAGES_API ImageType* guess_image(const char* name, const uchar* datas=0);
+
+////////////////////////////////////////////////////////////////
+
+// 
+// bmp and gif classes are build in libfltk so they are FL_API
+//
+
+class FL_API gifImage : public SharedImage {
+  void read();
+  gifImage() { }
+  static SharedImage* create() { return new gifImage; }
+public:
+  static bool test(const uchar* datas, unsigned size=0);
+  void _measure(int& W, int& H) const;
+  static SharedImage* get(const char* name, const uchar* datas = 0) {
+    return SharedImage::get(create, name, datas);
+  }
+};
+
+class FL_API bmpImage : public SharedImage {
+  void read();
+  bmpImage() { }
+  static SharedImage* create() { return new bmpImage; }
+public:
+  static bool test(const uchar* datas, unsigned size=0);
+  void _measure(int& W, int& H) const;
+  static SharedImage* get(const char* name, const uchar* datas = 0) {
+    return SharedImage::get(create, name, datas);
+  }
+};
+
+// Name collision with xpmImage:
+class FL_IMAGES_API xpmFileImage : public SharedImage {
+  void read();
+  xpmFileImage() { }
+  static SharedImage* create() { return new xpmFileImage; }
+public:
+  static bool test(const uchar* datas, unsigned size=0);
+  void _measure(int& W, int& H) const;
+  static SharedImage* get(const char* name, const uchar* datas = 0) {
+    return SharedImage::get(create, name, datas);
+  }
+};
+
+// 
+// jpeg and png classes are in libfltk_images so they are FL_IMAGES_API
+//
+
+class FL_IMAGES_API jpegImage : public SharedImage {
+  void read();
+  jpegImage() { }
+  static SharedImage* create() { return new jpegImage; }
+public:
+  static bool test(const uchar* datas, unsigned size=0);
+  void _measure(int& W, int& H) const;
+  static SharedImage* get(const char* name, const uchar* datas = 0) {
+    return SharedImage::get(create, name, datas);
+  }
+};
+
+class FL_IMAGES_API pngImage : public SharedImage {
+  void read();		// Uncompress PNG datas
+  pngImage() { }
+  static SharedImage* create() { return new pngImage; } // Instantiate
+public:
+// Check the given buffer if it is in PNG format
+  static bool test(const uchar* datas, unsigned size=0);
+  void _measure(int& W, int& H) const;
+  static SharedImage* get(const char* name, const uchar* datas = 0) {
+    return SharedImage::get(create, name, datas);
+  }
+};
+
+}
+
+#endif
+
+// End of "$Id: SharedImage.h 4419 2005-07-15 05:48:26Z spitzak $"
Index: NonGTP/FLTK/include/fltk/glut.h
===================================================================
--- NonGTP/FLTK/include/fltk/glut.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/glut.h	(revision 773)
@@ -0,0 +1,486 @@
+//
+// "$Id: glut.h 3961 2005-01-24 08:07:59Z spitzak $"
+//
+// GLUT emulation header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+// Emulation of Glut using fltk.
+
+// GLUT is Copyright (c) Mark J. Kilgard, 1994, 1995, 1996:
+// "This program is freely distributable without licensing fees  and is
+// provided without guarantee or warrantee expressed or  implied. This
+// program is -not- in the public domain."
+
+// Although I have copied the GLUT API, none of my code is based on
+// any Glut implementation details and is therefore covered by the LGPL.
+
+// Fltk does not include the Glut drawing functions (such as
+// glutWireTeapot()) or the stroke fonts but the declarations for the
+// drawing functions are included here because otherwise there is no
+// way to get them along with this.  To use them you will have to
+// link in the original Glut library, put -lglut *after* -lfltk.
+
+// Commented out lines indicate parts of Glut that are not emulated.
+
+#ifndef __glut_h__
+#define __glut_h__
+
+#include <fltk/run.h>
+#include <fltk/GlWindow.h>
+#include <fltk/gl.h>
+#include <fltk/events.h>
+#include <fltk/visual.h>
+//#include <GL/glu.h>
+
+////////////////////////////////////////////////////////////////
+// Glut is emulated using this window class and these static variables
+// (plus several more static variables hidden in glut.C):
+
+class FL_GLUT_API Fl_Glut_Window : public fltk::GlWindow {
+  void _init();
+  int mouse_down;
+protected:
+  void draw();
+  void draw_overlay();
+  int handle(int);
+public: // so the inline functions work
+  int number;
+  int menu[3];
+  void make_current();
+  void (*display)();
+  void (*overlaydisplay)();
+  void (*reshape)(int w, int h);
+  void (*keyboard)(uchar, int x, int y);
+  void (*mouse)(int b, int state, int x, int y);
+  void (*motion)(int x, int y);
+  void (*passivemotion)(int x, int y);
+  void (*entry)(int);
+  void (*visibility)(int);
+  void (*special)(int, int x, int y);
+  Fl_Glut_Window(int w, int h, const char *);
+  Fl_Glut_Window(int x, int y, int w, int h, const char *);
+  ~Fl_Glut_Window();
+};
+
+extern FL_GLUT_API Fl_Glut_Window *glut_window;	// the current window
+extern FL_GLUT_API int glut_menu;			// the current menu
+
+// function pointers that are not per-window:
+extern FL_GLUT_API void (*glut_idle_function)();
+extern FL_GLUT_API void (*glut_menustate_function)(int);
+extern FL_GLUT_API void (*glut_menustatus_function)(int,int,int);
+
+////////////////////////////////////////////////////////////////
+
+//#define GLUT_API_VERSION This does not match any version of Glut exactly...
+
+FL_GLUT_API void glutInit(int *argcp, char **argv); // creates first window
+
+FL_GLUT_API void glutInitDisplayMode(unsigned int mode);
+// the FL_ symbols have the same value as the GLUT ones:
+enum {
+  GLUT_RGB	= fltk::RGB_COLOR,
+  GLUT_RGBA	= fltk::RGB_COLOR,
+  GLUT_INDEX	= fltk::INDEXED_COLOR,
+  GLUT_SINGLE	= fltk::SINGLE_BUFFER,
+  GLUT_DOUBLE	= fltk::DOUBLE_BUFFER,
+  GLUT_ACCUM	= fltk::ACCUM_BUFFER,
+  GLUT_ALPHA	= fltk::ALPHA_BUFFER,
+  GLUT_DEPTH	= fltk::DEPTH_BUFFER,
+  GLUT_STENCIL	= fltk::STENCIL_BUFFER,
+  GLUT_MULTISAMPLE = fltk::MULTISAMPLE,
+  GLUT_STEREO	= fltk::STEREO
+//GLUT_LUMINANCE = 512
+};
+
+FL_GLUT_API void glutInitWindowPosition(int x, int y);
+
+FL_GLUT_API void glutInitWindowSize(int w, int h);
+
+FL_GLUT_API void glutMainLoop();
+
+FL_GLUT_API int glutCreateWindow(const char *title);
+
+FL_GLUT_API int glutCreateSubWindow(int win, int x, int y, int width, int height);
+
+FL_GLUT_API void glutDestroyWindow(int win);
+
+inline void glutPostRedisplay() {glut_window->redraw();}
+
+FL_GLUT_API void glutSwapBuffers();
+
+inline int glutGetWindow() {return glut_window->number;}
+
+FL_GLUT_API void glutSetWindow(int win);
+
+inline void glutSetWindowTitle(const char *t) {glut_window->label(t);}
+
+inline void glutSetIconTitle(const char *t) {glut_window->iconlabel(t);}
+
+inline void glutPositionWindow(int x, int y) {glut_window->position(x,y);}
+
+inline void glutReshapeWindow(int w, int h) {glut_window->resize(w,h);}
+
+inline void glutPopWindow() {glut_window->show();}
+
+//inline void glutPushWindow();
+
+inline void glutIconifyWindow() {glut_window->iconize();}
+
+inline void glutShowWindow() {glut_window->show();}
+
+inline void glutHideWindow() {glut_window->hide();}
+
+inline void glutFullScreen() {glut_window->fullscreen();}
+
+inline void glutSetCursor(fltk::Cursor* cursor) {glut_window->cursor(cursor);}
+
+//#define GLUT_CURSOR_RIGHT_ARROW
+//#define GLUT_CURSOR_LEFT_ARROW
+#define GLUT_CURSOR_INFO	fltk::CURSOR_HAND
+//#define GLUT_CURSOR_DESTROY
+#define GLUT_CURSOR_HELP	fltk::CURSOR_HELP
+//#define GLUT_CURSOR_CYCLE
+//#define GLUT_CURSOR_SPRAY
+#define GLUT_CURSOR_WAIT	fltk::CURSOR_WAIT
+#define GLUT_CURSOR_TEXT	fltk::CURSOR_INSERT
+#define GLUT_CURSOR_CROSSHAIR	fltk::CURSOR_CROSS
+#define GLUT_CURSOR_UP_DOWN	fltk::CURSOR_NS
+#define GLUT_CURSOR_TOP_SIDE	fltk::CURSOR_NS
+#define GLUT_CURSOR_BOTTOM_SIDE	fltk::CURSOR_NS
+#define GLUT_CURSOR_LEFT_RIGHT	fltk::CURSOR_WE
+#define GLUT_CURSOR_LEFT_SIDE	fltk::CURSOR_WE
+#define GLUT_CURSOR_RIGHT_SIDE	fltk::CURSOR_WE
+#define GLUT_CURSOR_TOP_LEFT_CORNER	fltk::CURSOR_NWSE
+#define GLUT_CURSOR_TOP_RIGHT_CORNER	fltk::CURSOR_NESW
+#define GLUT_CURSOR_BOTTOM_RIGHT_CORNER	fltk::CURSOR_NWSE
+#define GLUT_CURSOR_BOTTOM_LEFT_CORNER	fltk::CURSOR_NESW
+#define GLUT_CURSOR_INHERIT		fltk::CURSOR_DEFAULT
+#define GLUT_CURSOR_NONE		fltk::CURSOR_NONE
+#define GLUT_CURSOR_FULL_CROSSHAIR	fltk::CURSOR_CROSS
+
+//inline void glutWarpPointer(int x, int y);
+
+inline void glutEstablishOverlay() {glut_window->make_overlay_current();}
+
+inline void glutRemoveOverlay() {glut_window->hide_overlay();}
+
+inline void glutUseLayer(GLenum layer) {
+  layer ? glut_window->make_overlay_current() : glut_window->make_current();}
+enum {GLUT_NORMAL, GLUT_OVERLAY};
+
+inline void glutPostOverlayRedisplay() {glut_window->redraw_overlay();}
+
+inline void glutShowOverlay() {glut_window->redraw_overlay();}
+
+inline void glutHideOverlay() {glut_window->hide_overlay();}
+
+FL_GLUT_API int glutCreateMenu(void (*)(int));
+
+FL_GLUT_API void glutDestroyMenu(int menu);
+
+inline int glutGetMenu() {return glut_menu;}
+
+inline void glutSetMenu(int m) {glut_menu = m;}
+
+FL_GLUT_API void glutAddMenuEntry(const char *label, int value);
+
+FL_GLUT_API void glutAddSubMenu(const char *label, int submenu);
+
+FL_GLUT_API void glutChangeToMenuEntry(int item, const char *label, int value);
+
+FL_GLUT_API void glutChangeToSubMenu(int item, const char *label, int submenu);
+
+FL_GLUT_API void glutRemoveMenuItem(int item);
+
+inline void glutAttachMenu(int b) {glut_window->menu[b] = glut_menu;}
+
+inline void glutDetachMenu(int b) {glut_window->menu[b] = 0;}
+
+inline void glutDisplayFunc(void (*f)()) {glut_window->display = f;}
+
+inline void glutReshapeFunc(void (*f)(int w, int h)) {glut_window->reshape=f;}
+
+inline void glutKeyboardFunc(void (*f)(uchar key, int x, int y)) {
+  glut_window->keyboard = f;}
+
+inline void glutMouseFunc(void (*f)(int b, int state, int x, int y)) {
+  glut_window->mouse = f;}
+enum {
+  GLUT_LEFT_BUTTON	= 0,
+  GLUT_MIDDLE_BUTTON	= 1,
+  GLUT_RIGHT_BUTTON	= 2,
+  GLUT_DOWN		= 0,
+  GLUT_UP		= 1
+};
+
+inline void glutMotionFunc(void (*f)(int x, int y)) {glut_window->motion= f;}
+
+inline void glutPassiveMotionFunc(void (*f)(int x, int y)) {
+  glut_window->passivemotion= f;}
+
+inline void glutEntryFunc(void (*f)(int s)) {glut_window->entry = f;}
+enum {GLUT_LEFT, GLUT_ENTERED};
+
+inline void glutVisibilityFunc(void (*f)(int s)) {glut_window->visibility=f;}
+enum {GLUT_NOT_VISIBLE, GLUT_VISIBLE};
+
+inline void glutIdleFunc(void (*f)()) {fltk::set_idle(f);}
+
+// Warning: this cast may not work on all machines:
+inline void glutTimerFunc(unsigned int msec, void (*f)(int), int value) {
+  fltk::add_timeout(msec*.001f, (fltk::TimeoutHandler)f, (void *)value);
+}
+
+inline void glutMenuStateFunc(void (*f)(int state)) {
+  glut_menustate_function = f;}
+
+inline void glutMenuStatusFunc(void (*f)(int status, int x, int y)) {
+  glut_menustatus_function = f;}
+enum {GLUT_MENU_NOT_IN_USE, GLUT_MENU_IN_USE};
+
+inline void glutSpecialFunc(void (*f)(int key, int x, int y)) {
+  glut_window->special = f;}
+enum {
+  GLUT_KEY_F1		= 1,
+  GLUT_KEY_F2		= 2,
+  GLUT_KEY_F3		= 3,
+  GLUT_KEY_F4		= 4,
+  GLUT_KEY_F5		= 5,
+  GLUT_KEY_F6		= 6,
+  GLUT_KEY_F7		= 7,
+  GLUT_KEY_F8		= 8,
+  GLUT_KEY_F9		= 9,
+  GLUT_KEY_F10		= 10,
+  GLUT_KEY_F11		= 11,
+  GLUT_KEY_F12		= 12,
+// WARNING: Different values than Glut uses:
+  GLUT_KEY_LEFT		= fltk::LeftKey,
+  GLUT_KEY_UP		= fltk::UpKey,
+  GLUT_KEY_RIGHT	= fltk::RightKey,
+  GLUT_KEY_DOWN		= fltk::DownKey,
+  GLUT_KEY_PAGE_UP	= fltk::PageUpKey,
+  GLUT_KEY_PAGE_DOWN	= fltk::PageDownKey,
+  GLUT_KEY_HOME		= fltk::HomeKey,
+  GLUT_KEY_END		= fltk::EndKey,
+  GLUT_KEY_INSERT	= fltk::InsertKey
+};
+
+//inline void glutSpaceballMotionFunc(void (*)(int x, int y, int z));
+
+//inline void glutSpaceballRotateFunc(void (*)(int x, int y, int z));
+
+//inline void glutSpaceballButtonFunc(void (*)(int button, int state));
+
+//inline void glutButtonBoxFunc(void (*)(int button, int state));
+
+//inline void glutDialsFunc(void (*)(int dial, int value));
+
+//inline void glutTabletMotionFunc(void (*)(int x, int y));
+
+//inline void glutTabletButtonFunc(void (*)(int button, int state, int x, int y));
+
+inline void glutOverlayDisplayFunc(void (*f)()) {
+  glut_window->overlaydisplay = f;}
+
+//inline void glutWindowStatusFunc(void (*)(int state));
+//enum {GLUT_HIDDEN, GLUT_FULLY_RETAINED, GLUT_PARTIALLY_RETAINED,
+//	GLUT_FULLY_COVERED};
+
+//inline void glutSetColor(int, GLfloat red, GLfloat green, GLfloat blue);
+
+//inline GLfloat glutGetColor(int ndx, int component);
+//#define GLUT_RED			0
+//#define GLUT_GREEN			1
+//#define GLUT_BLUE			2
+
+//inline void glutCopyColormap(int win);
+
+// Warning: values are changed from Glut!
+// Also relies on the GL_ symbols having values greater than 100
+FL_GLUT_API int glutGet(GLenum type);
+enum {
+  GLUT_RETURN_ZERO = 0,
+  GLUT_WINDOW_X,
+  GLUT_WINDOW_Y,
+  GLUT_WINDOW_WIDTH,
+  GLUT_WINDOW_HEIGHT,
+  GLUT_WINDOW_PARENT,
+//GLUT_WINDOW_NUM_CHILDREN,
+//GLUT_WINDOW_CURSOR,
+  GLUT_SCREEN_WIDTH,
+  GLUT_SCREEN_HEIGHT,
+//GLUT_SCREEN_WIDTH_MM,
+//GLUT_SCREEN_HEIGHT_MM,
+  GLUT_MENU_NUM_ITEMS,
+  GLUT_DISPLAY_MODE_POSSIBLE,
+  GLUT_INIT_WINDOW_X,
+  GLUT_INIT_WINDOW_Y,
+  GLUT_INIT_WINDOW_WIDTH,
+  GLUT_INIT_WINDOW_HEIGHT,
+  GLUT_INIT_DISPLAY_MODE,
+//GLUT_ELAPSED_TIME,
+  GLUT_WINDOW_BUFFER_SIZE
+};
+
+#define GLUT_WINDOW_STENCIL_SIZE	GL_STENCIL_BITS
+#define GLUT_WINDOW_DEPTH_SIZE		GL_DEPTH_BITS
+#define GLUT_WINDOW_RED_SIZE		GL_RED_BITS
+#define GLUT_WINDOW_GREEN_SIZE		GL_GREEN_BITS
+#define GLUT_WINDOW_BLUE_SIZE		GL_BLUE_BITS
+#define GLUT_WINDOW_ALPHA_SIZE		GL_ALPHA_BITS
+#define GLUT_WINDOW_ACCUM_RED_SIZE	GL_ACCUM_RED_BITS
+#define GLUT_WINDOW_ACCUM_GREEN_SIZE	GL_ACCUM_GREEN_BITS
+#define GLUT_WINDOW_ACCUM_BLUE_SIZE	GL_ACCUM_BLUE_BITS
+#define GLUT_WINDOW_ACCUM_ALPHA_SIZE	GL_ACCUM_ALPHA_BITS
+#define GLUT_WINDOW_DOUBLEBUFFER	GL_DOUBLEBUFFER
+#define GLUT_WINDOW_RGBA		GL_RGBA
+#define GLUT_WINDOW_COLORMAP_SIZE	GL_INDEX_BITS
+#ifdef GL_SAMPLES_SGIS
+#define GLUT_WINDOW_NUM_SAMPLES		GL_SAMPLES_SGIS
+#else
+#define GLUT_WINDOW_NUM_SAMPLES		GLUT_RETURN_ZERO
+#endif
+#define GLUT_WINDOW_STEREO		GL_STEREO
+
+//int glutDeviceGet(GLenum type);
+//#define GLUT_HAS_KEYBOARD		600
+//#define GLUT_HAS_MOUSE		601
+//#define GLUT_HAS_SPACEBALL		602
+//#define GLUT_HAS_DIAL_AND_BUTTON_BOX	603
+//#define GLUT_HAS_TABLET		604
+//#define GLUT_NUM_MOUSE_BUTTONS	605
+//#define GLUT_NUM_SPACEBALL_BUTTONS	606
+//#define GLUT_NUM_BUTTON_BOX_BUTTONS	607
+//#define GLUT_NUM_DIALS		608
+//#define GLUT_NUM_TABLET_BUTTONS	609
+
+// WARNING: these values are different than Glut uses:
+enum {
+  GLUT_ACTIVE_SHIFT	= fltk::SHIFT,
+  GLUT_ACTIVE_CTRL	= fltk::CTRL,
+  GLUT_ACTIVE_ALT	= fltk::ALT
+};
+inline int glutGetModifiers() { return fltk::event_state() & (GLUT_ACTIVE_SHIFT | GLUT_ACTIVE_CTRL | GLUT_ACTIVE_ALT) ;}
+
+FL_GLUT_API int glutLayerGet(GLenum);
+#define GLUT_OVERLAY_POSSIBLE		800
+//#define GLUT_LAYER_IN_USE		801
+//#define GLUT_HAS_OVERLAY		802
+#define GLUT_TRANSPARENT_INDEX		803
+#define GLUT_NORMAL_DAMAGED		804
+#define GLUT_OVERLAY_DAMAGED		805
+
+//inline int glutVideoResizeGet(GLenum param);
+//#define GLUT_VIDEO_RESIZE_POSSIBLE	900
+//#define GLUT_VIDEO_RESIZE_IN_USE	901
+//#define GLUT_VIDEO_RESIZE_X_DELTA	902
+//#define GLUT_VIDEO_RESIZE_Y_DELTA	903
+//#define GLUT_VIDEO_RESIZE_WIDTH_DELTA	904
+//#define GLUT_VIDEO_RESIZE_HEIGHT_DELTA 905
+//#define GLUT_VIDEO_RESIZE_X		906
+//#define GLUT_VIDEO_RESIZE_Y		907
+//#define GLUT_VIDEO_RESIZE_WIDTH	908
+//#define GLUT_VIDEO_RESIZE_HEIGHT	909
+
+//inline void glutSetupVideoResizing();
+
+//inline void glutStopVideoResizing();
+
+//inline void glutVideoResize(int x, int y, int width, int height);
+
+//inline void glutVideoPan(int x, int y, int width, int height);
+
+////////////////////////////////////////////////////////////////
+// Emulated Glut drawing functions:
+
+// Font argument must be a void* for compatability, so...
+extern FL_GLUT_API struct Glut_Bitmap_Font {fltk::Font* font; int size;}
+  glutBitmap9By15, glutBitmap8By13, glutBitmapTimesRoman10,
+  glutBitmapTimesRoman24, glutBitmapHelvetica10, glutBitmapHelvetica12,
+  glutBitmapHelvetica18;
+#define GLUT_BITMAP_9_BY_15             (&glutBitmap9By15)
+#define GLUT_BITMAP_8_BY_13             (&glutBitmap8By13)
+#define GLUT_BITMAP_TIMES_ROMAN_10      (&glutBitmapTimesRoman10)
+#define GLUT_BITMAP_TIMES_ROMAN_24      (&glutBitmapTimesRoman24)
+#define GLUT_BITMAP_HELVETICA_10        (&glutBitmapHelvetica10)
+#define GLUT_BITMAP_HELVETICA_12        (&glutBitmapHelvetica12)
+#define GLUT_BITMAP_HELVETICA_18        (&glutBitmapHelvetica18)
+
+FL_GLUT_API void glutBitmapCharacter(void *font, int character);
+FL_GLUT_API int glutBitmapWidth(void *font, int character);
+
+////////////////////////////////////////////////////////////////
+// Glut drawing functions.  These are NOT emulated but you can
+// link in the glut library to get them.  This assummes the object
+// files in Glut remain as they currently are so that there are
+// not symbol conflicts with the above.
+
+extern "C" {
+#ifndef APIENTRY
+# define APIENTRY
+#endif
+
+extern int APIENTRY glutExtensionSupported(const char *name);
+
+/* Stroke font constants (use these in GLUT program). */
+#ifdef _WIN32
+# define GLUT_STROKE_ROMAN		((void*)0)
+# define GLUT_STROKE_MONO_ROMAN		((void*)1)
+#else
+extern void *glutStrokeRoman;
+# define GLUT_STROKE_ROMAN		(&glutStrokeRoman)
+extern void *glutStrokeMonoRoman;
+# define GLUT_STROKE_MONO_ROMAN		(&glutStrokeMonoRoman)
+#endif
+
+/* GLUT font sub-API */
+extern void APIENTRY glutStrokeCharacter(void *font, int character);
+extern int APIENTRY glutStrokeWidth(void *font, int character);
+
+/* GLUT pre-built models sub-API */
+extern void APIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks);
+extern void APIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);
+extern void APIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
+extern void APIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
+extern void APIENTRY glutWireCube(GLdouble size);
+extern void APIENTRY glutSolidCube(GLdouble size);
+extern void APIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
+extern void APIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
+extern void APIENTRY glutWireDodecahedron();
+extern void APIENTRY glutSolidDodecahedron();
+extern void APIENTRY glutWireTeapot(GLdouble size);
+extern void APIENTRY glutSolidTeapot(GLdouble size);
+extern void APIENTRY glutWireOctahedron();
+extern void APIENTRY glutSolidOctahedron();
+extern void APIENTRY glutWireTetrahedron();
+extern void APIENTRY glutSolidTetrahedron();
+extern void APIENTRY glutWireIcosahedron();
+extern void APIENTRY glutSolidIcosahedron();
+
+}
+
+#endif                  /* __glut_h__ */
+
+//
+// End of "$Id: glut.h 3961 2005-01-24 08:07:59Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/string.h.in
===================================================================
--- NonGTP/FLTK/include/fltk/string.h.in	(revision 773)
+++ NonGTP/FLTK/include/fltk/string.h.in	(revision 773)
@@ -0,0 +1,130 @@
+/* "$Id: string.h.in 4115 2005-03-14 04:48:51Z spitzak $"
+ *
+ * Copyright 1998-2005 by Bill Spitzak and others.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Please report all bugs and problems to "fltk-bugs@fltk.org".
+ */
+
+/* This file was produced by the fltk configure script, and is thus
+   platform-specific. You may be able to use the unmodified string.h
+   included in the fltk source instead, it has different #if statements
+   to make it portable to the most popular platforms.
+*/
+
+#ifndef fltk_string_h
+#define fltk_string_h
+
+#undef HAVE_STRING_H
+#undef HAVE_STRINGS_H
+
+#undef HAVE_VSNPRINTF
+#undef HAVE_SNPRINTF
+#undef HAVE_STRCASECMP
+#undef HAVE_STRLCAT
+#undef HAVE_STRLCPY
+#undef HAVE_STRNCASECMP
+
+#include "FL_API.h"
+
+#ifdef HAVE_STRING_H
+# include <string.h>
+#elif defined(HAVE_STRINGS_H)
+# include <strings.h>
+#endif
+
+#if 1 /* for va_list */
+# include <stdarg.h>
+#endif
+
+#if 1 /* for sprintf, vsprintf, snprintf and vsnprintf */
+# include <stdio.h>
+#endif
+
+#if 0
+# include <stdlib.h>
+#endif
+
+#if 0
+# include <ctype.h>
+/* Unixware defines these macros in above header for the obsolete BSD
+   functions, get rid of them as it prevents you making a variable
+   named "index"! */
+# ifdef index
+#  undef index
+# endif
+# ifdef rindex
+#  undef rindex
+# endif
+#endif
+
+#if 0 /*defined(__MWERKS__)*/
+/* MetroWerks' CodeWarrior put some functions in <extras.h> but that
+   file does not play well with others, so we don't include it. */
+# include <extras.h>
+#endif
+
+/* Windows has equivalent functions, but being Microsoft they added
+   gratuitoius changes to the names to stop code from being portable: */
+#if (defined(_WIN32) && !defined(__CYGWIN__)) || defined(__EMX__)
+# define strcasecmp(s,t)	stricmp(s, t)
+# define strncasecmp(s,t,n)	strnicmp(s, t, n)
+# define vsnprintf		_vsnprintf
+# define snprintf		_snprintf
+#endif
+
+/*! \addtogroup utilities
+  \{ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+FL_API extern const char* newstring(const char *);
+
+#if defined(DOXYGEN) || !defined(HAVE_STRCASECMP)
+FL_API extern int strcasecmp(const char *, const char *);
+#endif
+
+#if defined(DOXYGEN) || !defined(HAVE_STRNCASECMP)
+FL_API extern int strncasecmp(const char *, const char *, size_t);
+#endif
+
+#if defined(DOXYGEN) || !defined(HAVE_SNPRINTF)
+FL_API extern int snprintf(char *, size_t, const char *, ...);
+#endif
+
+#if defined(DOXYGEN) || !defined(HAVE_VSNPRINTF)
+FL_API extern int vsnprintf(char *, size_t, const char *, va_list ap);
+#endif
+
+#if defined(DOXYGEN) || !defined(HAVE_STRLCAT)
+FL_API extern size_t strlcat(char *, const char *, size_t);
+#endif
+
+#if defined(DOXYGEN) || !defined(HAVE_STRLCPY)
+FL_API extern size_t strlcpy(char *, const char *, size_t);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+/*! \} */
+
+#endif
+
+/*
+ * End of "$Id: string.h.in 4115 2005-03-14 04:48:51Z spitzak $".
+ */
Index: NonGTP/FLTK/include/fltk/StyleSet.h
===================================================================
--- NonGTP/FLTK/include/fltk/StyleSet.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/StyleSet.h	(revision 773)
@@ -0,0 +1,48 @@
+//
+// "$Id: StyleSet.h 3038 2003-06-24 07:10:48Z spitzak $"
+//
+// Saves and restores all the styles used by Widget constructors. Fluid
+// uses this so you can preview a style without fluid's own control
+// panels changing. I think this is broken, anybody want to fix it?
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_StyleSet_h
+#define fltk_StyleSet_h
+
+#include "Style.h"
+
+namespace fltk {
+
+class FL_API StyleSet {
+  NamedStyle* first_style;
+  Theme theme;
+  Color background;
+  void* reserved; // pointer to extra saved stuff
+public:
+  StyleSet();
+  void make_current();
+  ~StyleSet();
+};
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/RadioItem.h
===================================================================
--- NonGTP/FLTK/include/fltk/RadioItem.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/RadioItem.h	(revision 773)
@@ -0,0 +1,41 @@
+//
+// "$Id: RadioItem.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// This widget makes a radio item in a popup or pulldown Menu.
+// It's behavior in a Browser or other group is undefined.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_RadioItem_h
+#define fltk_RadioItem_h
+
+#include "Item.h"
+
+namespace fltk {
+
+class RadioItem : public Item {
+public:
+  RadioItem(const char* l = 0) : Item(l) {type(RADIO);}
+};
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/ValueSlider.h
===================================================================
--- NonGTP/FLTK/include/fltk/ValueSlider.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/ValueSlider.h	(revision 773)
@@ -0,0 +1,52 @@
+//
+// "$Id: ValueSlider.h 4366 2005-05-23 05:11:51Z spitzak $"
+//
+// Copyright 1998-2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Value_Slider_h
+#define fltk_Value_Slider_h
+
+#include "Slider.h"
+#include "FloatInput.h"
+
+namespace fltk {
+
+class FL_API ValueSlider : public Slider {
+public:
+  FloatInput input;
+  int handle(int);
+  void draw();
+  ValueSlider(int x,int y,int w,int h, const char *l = 0);
+  ~ValueSlider();
+  void layout();
+  virtual void value_damage(); // cause damage() due to value() changing
+
+private:
+  static void input_cb(Widget*,void*);
+  void slider_rect(Rectangle&);
+};
+
+}
+#endif
+
+//
+// End of "$Id: ValueSlider.h 4366 2005-05-23 05:11:51Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/BarGroup.h
===================================================================
--- NonGTP/FLTK/include/fltk/BarGroup.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/BarGroup.h	(revision 773)
@@ -0,0 +1,60 @@
+//
+// "$Id: BarGroup.h 3961 2005-01-24 08:07:59Z spitzak $"
+//
+// The BarGroup is a closable strip that can be put in the edges of a Pack,
+// usually it contains toolbars or buttons.
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_BarGroup_h
+#define fltk_BarGroup_h
+
+#include <fltk/Group.h>
+
+namespace fltk {
+
+class FL_API BarGroup : public Group {
+  bool open_;
+  bool highlighted;
+  bool pushed;
+  int glyph_size_;
+  int saved_size;
+  void glyph_box(Rectangle&) const;
+public:
+  BarGroup(int x,int y,int w ,int h,const char *l = 0);
+  static NamedStyle* default_style;
+  void layout();
+  int handle(int);
+  void draw();
+  bool opened() const {return open_;}
+  bool opened(bool);
+  bool open() {return opened(true);}
+  bool close() {return opened(false);}
+  int glyph_size() const {return glyph_size_;}
+  void glyph_size(int v) {glyph_size_ = v;}
+};
+
+}
+#endif
+
+//
+// End of "$Id: BarGroup.h 3961 2005-01-24 08:07:59Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/RadioLightButton.h
===================================================================
--- NonGTP/FLTK/include/fltk/RadioLightButton.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/RadioLightButton.h	(revision 773)
@@ -0,0 +1,45 @@
+//
+// "$Id: RadioLightButton.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// LightButton that toggles off all others in the group when turned on.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_RadioLightButton_h
+#define fltk_RadioLightButton_h
+
+#include "LightButton.h"
+
+namespace fltk {
+
+class RadioLightButton : public LightButton {
+public:
+  RadioLightButton(int x, int y, int w, int h, const char *l=0)
+    : LightButton(x,y,w,h,l) {type(RADIO);}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: RadioLightButton.h 2973 2003-04-20 03:17:51Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/NumericInput.h
===================================================================
--- NonGTP/FLTK/include/fltk/NumericInput.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/NumericInput.h	(revision 773)
@@ -0,0 +1,54 @@
+//
+// "$Id: NumericInput.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// One-line text input field, which handles up/down arrows to
+// change the digit to the right of the cursor. This still allows
+// arbitrary text such as a math expression to be typed, if you
+// want to restrict the user to a number use FloatInput or IntInput.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_NumericInput_h
+#define fltk_NumericInput_h
+
+#include "Input.h"
+
+namespace fltk {
+
+class FL_API NumericInput : public Input {
+ protected:
+  int handle_arrow(int);
+ public:
+  NumericInput(int x,int y, int w,int h,const char* l = 0) :
+    Input(x,y,w,h,l) {when(WHEN_ENTER_KEY|WHEN_RELEASE);}
+  void value(double);
+  void value(int);
+  void value(const char* s) {Input::value(s);}
+  const char* value() const {return Input::value();}
+  int handle(int);
+};
+
+}
+#endif
+
+//
+// End of "$Id: NumericInput.h 2973 2003-04-20 03:17:51Z easysw $"
+//
Index: NonGTP/FLTK/include/fltk/MultiLineInput.h
===================================================================
--- NonGTP/FLTK/include/fltk/MultiLineInput.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/MultiLineInput.h	(revision 773)
@@ -0,0 +1,48 @@
+//
+// "$Id: MultiLineInput.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// Allows you to edit a *small* number of lines of text. Does not have
+// any scrollbars. You may want a TextEditor instead, it is designed for
+// large amounts of text.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_MultiLineInput_h
+#define fltk_MultiLineInput_h
+
+#include "Input.h"
+
+namespace fltk {
+
+// This class is entirely inline.  If that changes, add FL_API to its declaration
+class MultiLineInput : public Input {
+public:
+    MultiLineInput(int x,int y,int w,int h,const char *l = 0)
+      : Input(x,y,w,h,l) {type(MULTILINE);}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: MultiLineInput.h 2973 2003-04-20 03:17:51Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/Slider.h
===================================================================
--- NonGTP/FLTK/include/fltk/Slider.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Slider.h	(revision 773)
@@ -0,0 +1,96 @@
+//
+// "$Id: Slider.h 4303 2005-05-01 03:33:52Z spitzak $"
+//
+// Slider value control. By default it moves vertically with the
+// minimum number at the bottom. See HorizontalSlider for one that
+// moves across (which is usually the default in other toolkits).
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Slider_h
+#define fltk_Slider_h
+
+#ifndef fltk_Valuator_h
+#include "Valuator.h"
+#endif
+
+namespace fltk {
+
+class FL_API Slider : public Valuator {
+
+  unsigned short slider_size_;
+  unsigned short tick_size_;
+  unsigned short old_position;
+
+public:
+
+  enum { // bit flags for type():
+    LINEAR		= 0,
+    TICK_ABOVE		= 2,
+    TICK_LEFT		= TICK_ABOVE,
+    TICK_BELOW		= 4,
+    TICK_RIGHT		= TICK_BELOW,
+    TICK_BOTH		= TICK_ABOVE|TICK_BELOW,
+    LOG			= 8
+#ifdef FLTK_1_SLIDER
+    // for back-compatability only
+    ,VERTICAL		= 0,
+    HORIZONTAL		= 1,
+    FILL		= 16
+#endif
+  };
+  bool horizontal() const {return !(flags()&LAYOUT_VERTICAL) || (type()&1);}
+  bool log() const {return (type()&LOG)!=0;}
+
+  void draw();
+  int handle(int);
+
+  Slider(int x,int y,int w,int h, const char *l = 0);
+  static NamedStyle* default_style;
+
+  unsigned short slider_size() const {return slider_size_;}
+  void slider_size(int n) {slider_size_ = (unsigned short)n;}
+  unsigned short tick_size() const {return tick_size_;}
+  void tick_size(int n) {tick_size_ = (unsigned short)n;}
+  
+#ifdef FLTK_1_SLIDER
+  // back comptability:
+  Box* slider() const {return buttonbox();}
+  void slider(Box* b) {buttonbox(b);}
+  void slider_size(double v) {slider_size(int(v*w()));}
+#endif
+
+  //protected:
+
+  int slider_position(double value, int w);
+  double position_value(int x, int w);
+  int handle(int event, const Rectangle&);
+  void draw_ticks(const Rectangle&, int min_spacing);
+  bool draw(const Rectangle&, Flags flags, bool slot);
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Slider.h 4303 2005-05-01 03:33:52Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/HelpView.h
===================================================================
--- NonGTP/FLTK/include/fltk/HelpView.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/HelpView.h	(revision 773)
@@ -0,0 +1,223 @@
+//
+// "$Id: HelpView.h 3491 2004-07-04 17:43:01Z laza2000 $"
+//
+// Help Viewer widget definitions.
+//
+// Copyright 1997-2003 by Easy Software Products.
+// Image support donated by Matthias Melcher, Copyright 2000.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef HelpView_H
+#  define HelpView_H
+
+//
+// Include necessary header files...
+//
+
+#  include <stdio.h>
+#  include <fltk/Group.h>
+#  include <fltk/Scrollbar.h>
+#  include <fltk/draw.h>
+#  include <fltk/SharedImage.h>
+
+namespace fltk {
+
+//
+// HelpFunc type - link callback function for files...
+//
+
+
+typedef const char *(HelpFunc) (Widget *, const char *);
+
+
+//
+// HelpBlock structure...
+//
+
+struct HelpBlock {
+  const char *start,            // Start of text
+   *end;                        // End of text
+  uchar border;                 // Draw border?
+  Color bgcolor;             // Background color
+  int x,                        // Indentation/starting X coordinate
+    y,                          // Starting Y coordinate
+    w,                          // Width
+    h;                          // Height
+  int line[32];                 // Left starting position for each line
+};
+
+//
+// HelpLink structure...
+//
+
+struct HelpLink {
+  char filename[192],           // Reference filename
+    name[32];                   // Link target (blank if none)
+  int x,                        // X offset of link text
+    y,                          // Y offset of link text
+    w,                          // Width of link text
+    h;                          // Height of link text
+};
+
+//
+// HelpTarget structure...
+//
+
+struct HelpTarget {
+  char name[32];                // Target name
+  int y;                        // Y offset of target
+};
+
+//
+// HelpView class...
+//
+
+class FL_IMAGES_API HelpView : public Group    //// Help viewer widget
+{
+  enum { RIGHT = -1, CENTER, LEFT };    // Alignments
+
+  char title_[1024];            // Title string
+  Color defcolor_,           // Default text color
+    bgcolor_,                   // Background color
+    textcolor_,                 // Text color
+    linkcolor_;                 // Link color
+  Font *textfont_;              // Default font for text
+  int textsize_;                  // Default font size
+  const char *value_;           // HTML text value
+
+  int nblocks_,                 // Number of blocks/paragraphs
+    ablocks_;                   // Allocated blocks
+  HelpBlock *blocks_;       // Blocks
+
+  int nfonts_;                  // Number of fonts in stack
+  Font *fonts_[100];         // Font stack
+  int fontsizes_[100];
+
+  HelpFunc *link_;          // Link transform function
+
+  int nlinks_,                  // Number of links
+    alinks_;                    // Allocated links
+  HelpLink *links_;         // Links
+
+  int ntargets_,                // Number of targets
+    atargets_;                  // Allocated targets
+  HelpTarget *targets_;     // Targets
+
+  char directory_[1024];        // Directory for current file
+  char filename_[1024];         // Current filename
+  int topline_,                 // Top line in document
+    leftline_,                  // Lefthand position
+    size_,                      // Total document length
+    hsize_;                     // Maximum document width
+  Scrollbar *scrollbar_,      // Vertical scrollbar for document
+    *hscrollbar_;                // Horizontal scrollbar
+
+  HelpBlock *add_block (const char *s, int xx, int yy, int ww, int hh,
+                            uchar border = 0);
+  void add_link (const char *n, int xx, int yy, int ww, int hh);
+  void add_target (const char *n, int yy);
+  static int compare_targets (const HelpTarget * t0,
+                              const HelpTarget * t1);
+  int do_align (HelpBlock * block, int line, int xx, int a, int &l);
+  void draw ();
+  void format ();
+  void format_table (int *table_width, int *columns, const char *table);
+  int get_align (const char *p, int a);
+  const char *get_attr (const char *p, const char *n, char *buf, int bufsize);
+  Color get_color (const char *n, Color c);
+  SharedImage *get_image (const char *name, int W, int H);
+  int get_length (const char *l);
+  int handle (int);
+
+  void initfont (Font *&f, int &s) {
+    nfonts_ = 0;
+	f = fonts_[0] = textfont_;
+	s = fontsizes_[0] = textsize_;
+    setfont (f, (float)s-1);
+  } 
+  void pushfont (Font *f, int s) {
+    if (nfonts_ < 99) nfonts_++;
+	fonts_[nfonts_] = f;
+	fontsizes_[nfonts_] = s;
+    setfont (f, (float)s-1);
+  }
+  void popfont (Font *&f, int &s) {
+    if (nfonts_ > 0) nfonts_--;
+    f = fonts_[nfonts_];
+	s = fontsizes_[nfonts_];
+    setfont(f, (float)s-1);
+  }
+
+public:
+
+  HelpView (int xx, int yy, int ww, int hh, const char *l = 0);
+
+  ~HelpView ();
+  const char *directory () const {
+    if (directory_[0])
+      return (directory_);
+    else
+      return ((const char *) 0);
+  } 
+  const char *filename () const {
+    if (filename_[0])
+      return (filename_);
+    else
+      return ((const char *) 0);
+  } void link (HelpFunc * fn) {
+    link_ = fn;
+  }
+  int load (const char *f);
+  void resize (int, int, int, int);
+  void layout();
+  int size () const { return (size_); } 
+  void textcolor (Color c) {
+    if (textcolor_ == defcolor_)
+      textcolor_ = c;
+    defcolor_ = c;
+  }
+  Color textcolor () const { return (defcolor_); } 
+  void textfont (Font *f) {
+    textfont_ = f;
+    format();
+  }
+  Font *textfont () const { return (textfont_); } 
+  void textsize (int s) {
+    textsize_ = s;
+    format ();
+  }
+  int textsize () const { return (textsize_); } 
+  const char *title () { return (title_); }
+  void topline (const char *n);
+  void topline (int);
+  int topline () const { return (topline_); } 
+  void leftline (int);
+  int leftline () const { return (leftline_); } 
+  void value (const char *v);
+  const char *value () const { return (value_); }
+};
+
+} // namespace fltk
+
+#endif // !HelpView_H
+
+//
+// End of "$Id: HelpView.h 3491 2004-07-04 17:43:01Z laza2000 $".
+//
Index: NonGTP/FLTK/include/fltk/FloatInput.h
===================================================================
--- NonGTP/FLTK/include/fltk/FloatInput.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/FloatInput.h	(revision 773)
@@ -0,0 +1,51 @@
+//
+// "$Id: FloatInput.h 3195 2004-01-18 18:35:29Z spitzak $"
+//
+// NumericInput modified to only allow floating point to by
+// typed. Currently this is implemented by the base class by checking
+// type() but this may change in the future.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_FloatInput_h
+#define fltk_FloatInput_h
+
+#include "NumericInput.h"
+
+namespace fltk {
+
+class FL_API FloatInput : public NumericInput {
+  virtual bool replace(int, int, const char*, int);
+public:
+  enum {FLOAT = 0, INT = 1};
+  FloatInput(int x,int y,int w,int h,const char *l = 0)
+    : NumericInput(x,y,w,h,l) {}
+  long lvalue() const;
+  int ivalue() const {return int(lvalue());}
+  double fvalue() const;
+};
+
+}
+#endif
+
+//
+// End of "$Id: FloatInput.h 3195 2004-01-18 18:35:29Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/WordwrapOutput.h
===================================================================
--- NonGTP/FLTK/include/fltk/WordwrapOutput.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/WordwrapOutput.h	(revision 773)
@@ -0,0 +1,45 @@
+//
+// "$Id: WordwrapOutput.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// Small text output field that word-wraps its contents.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_WordwrapOutput_h
+#define fltk_WordwrapOutput_h
+
+#include "Output.h"
+
+namespace fltk {
+
+// This class is entirely inline.  If that changes, add FL_API to its declaration
+class WordwrapOutput : public Output {
+public:
+  WordwrapOutput(int x,int y,int w,int h,const char *l = 0)
+    : Output(x,y,w,h,l) {type(WORDWRAP);}
+};
+
+}
+#endif
+
+//
+// End of "$Id: WordwrapOutput.h 2973 2003-04-20 03:17:51Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/PopupMenu.h
===================================================================
--- NonGTP/FLTK/include/fltk/PopupMenu.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/PopupMenu.h	(revision 773)
@@ -0,0 +1,56 @@
+//
+// "$Id: PopupMenu.h 2871 2002-12-10 02:01:07Z easysw $"
+//
+// Setting the type to POPUP* will make an invisible widget that can
+// overlap any other widgets and provides a popup menu. The default
+// type gives you something similar to a Choice except it does not
+// display the current value.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_PopupMenu_h
+#define fltk_PopupMenu_h
+
+#include "Menu.h"
+
+namespace fltk {
+
+class FL_API PopupMenu : public Menu {
+public:
+  // values for type:
+  enum {NORMAL = GROUP_TYPE, POPUP1, POPUP2, POPUP12,
+	POPUP3, POPUP13, POPUP23, POPUP123};
+  int handle(int);
+  int popup();
+  PopupMenu(int,int,int,int,const char * =0);
+  static NamedStyle* default_style;
+
+protected:
+  void draw();
+
+};
+
+}
+#endif
+
+//
+// End of "$Id: PopupMenu.h 2871 2002-12-10 02:01:07Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/MenuBar.h
===================================================================
--- NonGTP/FLTK/include/fltk/MenuBar.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/MenuBar.h	(revision 773)
@@ -0,0 +1,51 @@
+//
+// "$Id: MenuBar.h 3988 2005-01-30 21:15:07Z mikko $"
+//
+// Menu bar, each submenu is a pull-down menu. Any items act like
+// a button in the menu bar.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_MenuBar_h
+#define fltk_MenuBar_h
+
+#include "Menu.h"
+
+namespace fltk {
+
+class FL_API MenuBar : public Menu {
+public:
+  MenuBar(int x,int y,int w,int h,const char *l=0);
+  static NamedStyle* default_style;
+  int handle(int);
+protected:
+  void draw();
+private:
+  int highlight_, last_;
+  Widget *lastfocus_;
+};
+
+}
+#endif
+
+//
+// End of "$Id: MenuBar.h 3988 2005-01-30 21:15:07Z mikko $".
+//
Index: NonGTP/FLTK/include/fltk/FillSlider.h
===================================================================
--- NonGTP/FLTK/include/fltk/FillSlider.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/FillSlider.h	(revision 773)
@@ -0,0 +1,44 @@
+//
+// "$Id: FillSlider.h 3190 2004-01-06 06:43:03Z spitzak $"
+//
+// Copyright 2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_FillSlider_h
+#define fltk_FillSlider_h
+
+#include "Slider.h"
+
+namespace fltk {
+
+/*! Vertical Slider that is filled from the end (like a progress bar) */
+class FL_API FillSlider : public Slider {
+public:
+  FillSlider(int x,int y,int w,int h,const char *l=0)
+    : Slider(x,y,w,h,l) {slider_size(0);}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: FillSlider.h 3190 2004-01-06 06:43:03Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/RadioButton.h
===================================================================
--- NonGTP/FLTK/include/fltk/RadioButton.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/RadioButton.h	(revision 773)
@@ -0,0 +1,46 @@
+//
+// "$Id: RadioButton.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// Button with a circle indicator to it's left, turning it on turns
+// off all other radio buttons in the same Group.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_RadioButton_h
+#define fltk_RadioButton_h
+
+#include "CheckButton.h"
+
+namespace fltk {
+
+class FL_API RadioButton : public CheckButton {
+public:
+  RadioButton(int x, int y, int w, int h, const char *l=0);
+  static NamedStyle* default_style;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: RadioButton.h 2973 2003-04-20 03:17:51Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/GlWindow.h
===================================================================
--- NonGTP/FLTK/include/fltk/GlWindow.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/GlWindow.h	(revision 773)
@@ -0,0 +1,102 @@
+//
+// "$Id: GlWindow.h 4309 2005-05-02 10:58:21Z dejan $"
+//
+// OpenGL window. You must subclass this and implement draw() if
+// you want this to work.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_GlWindow_h
+#define fltk_GlWindow_h
+
+#include "Window.h"
+
+#ifndef GLContext
+typedef void* GLContext; // actually a GLXContext or HGLDC
+#endif
+
+namespace fltk {
+
+class GlChoice; // structure to hold result of glXChooseVisual
+class GlOverlay; // used by X version for the overlay
+
+enum {
+  NO_AUTO_SWAP = 1024,
+  NO_ERASE_OVERLAY = 2048
+};
+
+class FL_GL_API GlWindow : public Window {
+
+public:
+
+  void create();
+  void flush();
+  void destroy();
+  void layout();
+
+  char valid() const {return valid_;}
+  void valid(char i) {valid_ = i;}
+  void invalidate();
+
+  int mode() const {return mode_;}
+  bool mode(int a);
+  static bool can_do(int);
+  bool can_do() {return can_do(mode_);}
+
+  void* context() const {return context_;}
+  void context(void*, bool destroy_flag = false);
+  void make_current();
+  void swap_buffers();
+  void ortho();
+
+  bool can_do_overlay();
+  void redraw_overlay();
+  void hide_overlay();
+  void make_overlay_current();
+
+  ~GlWindow();
+  GlWindow(int W, int H, const char *l=0) : Window(W,H,l) {init();}
+  GlWindow(int X, int Y, int W, int H, const char *l=0)
+    : Window(X,Y,W,H,l) {init();}
+
+private:
+
+  int mode_;
+  GlChoice *gl_choice;
+  GLContext context_;
+  char valid_;
+  char damage1_; // damage() of back buffer
+  virtual void draw_overlay();
+  void init();
+
+  void *overlay;
+  void make_overlay();
+  friend class GlOverlay;
+
+  void draw_swap();
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: GlWindow.h 4309 2005-05-02 10:58:21Z dejan $".
+//
Index: NonGTP/FLTK/include/fltk/Clock.h
===================================================================
--- NonGTP/FLTK/include/fltk/Clock.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Clock.h	(revision 773)
@@ -0,0 +1,68 @@
+//
+// "$Id: Clock.h 3039 2003-06-25 06:11:43Z spitzak $"
+//
+// Copyright 1998-2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Clock_h
+#define fltk_Clock_h
+
+#include <fltk/Widget.h>
+
+namespace fltk {
+
+// a ClockOutput can be used to display a program-supplied time:
+
+class FL_API ClockOutput : public Widget {
+public:
+  enum {SQUARE = 0, ANALOG = 0, ROUND, DIGITAL};
+  ClockOutput(int x,int y,int w,int h, const char *l = 0);
+  void value(unsigned long v);	// set to this Unix time
+  void value(int,int,int);	// set hour, minute, second
+  unsigned long value() const {return value_;}
+  int hour() const {return hour_;}
+  int minute() const {return minute_;}
+  int second() const {return second_;}
+protected:
+  void draw(int, int, int, int);
+  void draw();
+private:
+  int hour_, minute_, second_;
+  unsigned long value_;
+  void drawhands(Color, Color); // part of draw
+};
+
+// a Clock displays the current time always by using a timeout:
+
+class FL_API Clock : public ClockOutput {
+public:
+  int handle(int);
+  void update();
+  Clock(int x,int y,int w,int h, const char *l = 0);
+  static NamedStyle* default_style;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Clock.h 3039 2003-06-25 06:11:43Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/Valuator.h
===================================================================
--- NonGTP/FLTK/include/fltk/Valuator.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Valuator.h	(revision 773)
@@ -0,0 +1,99 @@
+//
+// "$Id: Valuator.h 4326 2005-05-10 03:55:14Z trilec $"
+//
+// Base class for all the widgets that control a single floating-point
+// value.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Valuator_h
+#define fltk_Valuator_h
+
+#ifndef fltk_Widget_h
+#include "Widget.h"
+#endif
+
+namespace fltk {
+
+class FL_API Valuator : public Widget {
+
+public:
+
+  double value() const {return value_;}
+  int value(double);
+
+  float minimum() const {return minimum_;}
+  void minimum(double a) {minimum_ = float(a);}
+
+  float maximum() const {return maximum_;}
+  void maximum(double a) {maximum_ = float(a);}
+
+  void range(double a, double b) {minimum_ = float(a); maximum_ = float(b);}
+
+  float step() const {return step_;}
+  void step(double a) {step_ = float(a);}
+
+  float linesize() const {return linesize_;}
+  void linesize(double a) {linesize_ = float(a);}
+
+  virtual int format(char*);
+
+  int handle(int);
+
+#ifdef FLTK_1_SLIDER
+  void step(double a, int b) {step(a/b);}
+  void bounds(double a, double b) {minimum_=float(a); maximum_=float(b);}
+  void precision(int p) {
+    int B = 1;
+    for (int i=0; i<p; i++) B *= 10;
+    step_ = 1.0f/B;
+  }
+#endif
+
+//protected:
+
+  Valuator(int X, int Y, int W, int H, const char* L);
+  double previous_value() const {return previous_value_;}
+  void handle_push() {previous_value_ = value_;}
+  void handle_drag(double newvalue);
+  void handle_release();
+
+  virtual void value_damage(); // callback whenever value changes
+  void set_value(double v) {value_ = v;} // change w/o doing value_damage
+
+private:
+
+  double value_;
+  static double previous_value_;
+  float minimum_;
+  float maximum_;
+  float step_;
+  float linesize_;
+
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Valuator.h 4326 2005-05-10 03:55:14Z trilec $".
+//
Index: NonGTP/FLTK/include/fltk/Style.h
===================================================================
--- NonGTP/FLTK/include/fltk/Style.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Style.h	(revision 773)
@@ -0,0 +1,241 @@
+//
+// "$Id: Style.h 4303 2005-05-01 03:33:52Z spitzak $"
+//
+// Style structure used by Widgets
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Style_h
+#define fltk_Style_h
+
+#include "Color.h"
+
+namespace fltk {
+
+class FL_API Widget;
+class FL_API Rectangle;
+class FL_API Symbol;
+typedef Symbol Box;
+
+extern FL_API Box* const UP_BOX;
+extern FL_API Box* const DOWN_BOX;
+extern FL_API Box* const THIN_UP_BOX;
+extern FL_API Box* const THIN_DOWN_BOX;
+extern FL_API Box* const ENGRAVED_BOX;
+extern FL_API Box* const EMBOSSED_BOX;
+extern FL_API Box* const BORDER_BOX;
+extern FL_API Box* const FLAT_BOX;
+extern FL_API Box* const HIGHLIGHT_UP_BOX;
+extern FL_API Box* const HIGHLIGHT_DOWN_BOX;
+extern FL_API Box* const ROUND_UP_BOX;
+extern FL_API Box* const ROUND_DOWN_BOX;
+extern FL_API Box* const DIAMOND_UP_BOX;
+extern FL_API Box* const DIAMOND_DOWN_BOX;
+extern FL_API Box* const NO_BOX;
+extern FL_API Box* const SHADOW_BOX;
+extern FL_API Box* const ROUNDED_BOX;
+extern FL_API Box* const RSHADOW_BOX;
+extern FL_API Box* const RFLAT_BOX;
+extern FL_API Box* const OVAL_BOX;
+extern FL_API Box* const OSHADOW_BOX;
+extern FL_API Box* const OFLAT_BOX;
+extern FL_API Box* const BORDER_FRAME;
+extern FL_API Box* const DOTTED_FRAME;
+extern FL_API Box* const PLASTIC_UP_BOX;
+extern FL_API Box* const PLASTIC_DOWN_BOX;
+
+struct Font;
+FL_API Font* font(const char* name, int attrib = 0);
+enum {  // values for attributes:
+  BOLD = 1,
+  ITALIC = 2,
+  BOLD_ITALIC = 3
+};
+extern FL_API Font* const HELVETICA;
+extern FL_API Font* const HELVETICA_BOLD;
+extern FL_API Font* const HELVETICA_ITALIC;
+extern FL_API Font* const HELVETICA_BOLD_ITALIC;
+extern FL_API Font* const COURIER;
+extern FL_API Font* const COURIER_BOLD;
+extern FL_API Font* const COURIER_ITALIC;
+extern FL_API Font* const COURIER_BOLD_ITALIC;
+extern FL_API Font* const TIMES;
+extern FL_API Font* const TIMES_BOLD;
+extern FL_API Font* const TIMES_ITALIC;
+extern FL_API Font* const TIMES_BOLD_ITALIC;
+extern FL_API Font* const SYMBOL_FONT;
+extern FL_API Font* const SCREEN_FONT;
+extern FL_API Font* const SCREEN_BOLD_FONT;
+extern FL_API Font* const ZAPF_DINGBATS;
+FL_API Font* font(int);
+
+class LabelType;
+extern FL_API LabelType* const NO_LABEL;
+extern FL_API LabelType* const NORMAL_LABEL;
+extern FL_API LabelType* const SYMBOL_LABEL; // same as NORMAL_LABEL
+extern FL_API LabelType* const SHADOW_LABEL;
+extern FL_API LabelType* const ENGRAVED_LABEL;
+extern FL_API LabelType* const EMBOSSED_LABEL;
+
+class Style;
+
+/*! \addtogroup glyphs
+  \{ */
+typedef void (*GlyphStyle)(int number, const Rectangle&);
+/*! Numbers understood by fltk::Widget::default_glyph(). All other numbers
+  draw the same as GLYPH_BOX. The numbers
+  0-99 are reserved for per-Widget glyphs, for instance for parts
+  of the fltk::Slider or for the checkmark drawn by fltk::CheckButton.
+*/
+enum GlyphNumber {
+  GLYPH_BOX = 100,	//!< Draw an empty buttonbox
+  GLYPH_UP,		//!< draw an up arrow
+  GLYPH_DOWN,		//!< draw a down arrow
+  GLYPH_LEFT,		//!< draw a left arrow
+  GLYPH_RIGHT,		//!< draw a right arrow
+  GLYPH_UP_BUTTON,	//!< draw an up arrow in a buttonbox
+  GLYPH_DOWN_BUTTON,	//!< draw a down arrow in a buttonbox
+  GLYPH_LEFT_BUTTON,	//!< draw a left arrow in a buttonbox
+  GLYPH_RIGHT_BUTTON	//!< draw a right arrow in a buttonbox
+};
+/*! \} */
+
+class FL_API Style {
+ public:
+  // Everything is public for various back-compatability hacks:
+  const Style* parent_;
+  Box*		box_;
+  Box*		buttonbox_;
+  Box*		focusbox_;
+  GlyphStyle	glyph_;
+  Font*		labelfont_;
+  Font*		textfont_;
+  LabelType*	labeltype_;
+  Color		color_;
+  Color		textcolor_;
+  Color		selection_color_;
+  Color		selection_textcolor_;
+  Color		buttoncolor_;
+  Color		labelcolor_;
+  Color		highlight_color_;
+  Color		highlight_textcolor_;
+  float		labelsize_;
+  float		textsize_;
+  float		leading_;
+  unsigned char	scrollbar_align_;
+  unsigned char	scrollbar_width_;
+  bool		dynamic_;
+  // global settings:
+  static bool	hide_underscore_;
+  static bool   draw_boxes_inactive_;
+  static int	wheel_scroll_lines_;
+
+  // Get functions, which search parents if value is zero:
+  Box*		box()		const;
+  Box*		buttonbox()	const;
+  Box*		focusbox()	const;
+  GlyphStyle	glyph()		const;
+  Font*		labelfont()	const;
+  Font*		textfont()	const;
+  LabelType*	labeltype()	const;
+  Color		color()		const;
+  Color		textcolor()	const;
+  Color		selection_color() const;
+  Color		selection_textcolor() const;
+  Color		buttoncolor()	const;
+  Color		labelcolor()	const;
+  Color		highlight_color() const;
+  Color		highlight_textcolor() const;
+  float		labelsize()	const;
+  float		textsize()	const;
+  float		leading()	const;
+  unsigned char	scrollbar_align() const;
+  unsigned char	scrollbar_width() const;
+
+  bool		hide_underscore() const {return hide_underscore_;}
+  bool		draw_boxes_inactive() const {return draw_boxes_inactive_;}
+  int		wheel_scroll_lines() const {return wheel_scroll_lines_;}
+
+  // Set functions:
+  void box		(Box* v)	{box_ = v;		}
+  void buttonbox	(Box* v)	{buttonbox_ = v;	}
+  void focusbox		(Box* v)	{focusbox_ = v;		}
+  void glyph		(GlyphStyle v)	{glyph_ = v; 		}
+  void labelfont	(Font* v)	{labelfont_ = v;	}
+  void textfont		(Font* v)	{textfont_ = v;		}
+  void labeltype	(LabelType* v)	{labeltype_ = v; 	}
+  void color		(Color v)	{color_ = v; 		}
+  void textcolor	(Color v)	{textcolor_ = v; 	}
+  void selection_color	(Color v)	{selection_color_ = v;	}
+  void selection_textcolor(Color v)	{selection_textcolor_ = v;}
+  void buttoncolor	(Color v)	{buttoncolor_ = v; 	}
+  void labelcolor	(Color v)	{labelcolor_ = v; 	}
+  void highlight_color	(Color v)	{highlight_color_ = v; 	}
+  void highlight_textcolor(Color v)	{highlight_textcolor_ = v;}
+  void labelsize	(float v)	{labelsize_ = v;	}
+  void textsize		(float v)	{textsize_ = v;		}
+  void leading		(float v)	{leading_ = v;		}
+  void scrollbar_align	(unsigned char v) {scrollbar_align_ = v;}	
+  void scrollbar_width	(unsigned char v) {scrollbar_width_ = v;}	
+
+  void hide_underscore	(bool v)	{hide_underscore_ = v;	}
+  void draw_boxes_inactive(bool v)	{draw_boxes_inactive_ = v;}
+  void wheel_scroll_lines(int v)	{wheel_scroll_lines_ = v;}
+
+  Style();
+  bool dynamic() const {return dynamic_;}
+
+  static Style* find(const char* name);
+};
+
+struct FL_API NamedStyle : public Style {
+  const char* name;
+  void  (*revertfunc)(Style*);
+  NamedStyle** back_pointer; // used by StyleSet
+  static NamedStyle* first;
+  NamedStyle* next;
+  NamedStyle(const char* name, void (*revert)(Style*), NamedStyle** backptr);
+};
+
+/*! \addtogroup themes
+  \{ */
+extern "C" {typedef bool (*Theme)();}
+extern FL_API Theme theme_;
+inline Theme theme() {return theme_;}
+inline void theme(Theme f) {theme_ = f;}
+FL_API void load_theme();
+FL_API void reload_theme();
+FL_API bool reset_theme();
+/*! \} */ // Doxygen bug(?) requires this
+
+}
+
+/*! \addtogroup themes
+  \{ */
+extern "C" FL_API bool fltk_theme();
+/*! \} */
+
+
+#endif
+
+//
+// End of "$Id: Style.h 4303 2005-05-01 03:33:52Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/StringList.h
===================================================================
--- NonGTP/FLTK/include/fltk/StringList.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/StringList.h	(revision 773)
@@ -0,0 +1,48 @@
+//
+// "$Id: StringList.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// List that can be used in a Menu (and Browser) where each item
+// displays one string from an array.  It is pretty much impossible to
+// describe a menu in less space than this.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_StringList_h
+#define fltk_StringList_h
+
+#include "Menu.h"
+
+namespace fltk {
+
+class FL_API StringList : public List {
+  const char* const * array;
+  int children_;
+public:
+  virtual int children(const Menu*, const int* indexes, int level);
+  virtual Widget* child(const Menu*, const int* indexes, int level);
+  StringList(const char*const* a, int n) : array(a), children_(n) {}
+  StringList(const char*const* a); // null-terminated array
+  StringList(const char* S); // nul-seperated string, double nul at end
+};
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/InputBrowser.h
===================================================================
--- NonGTP/FLTK/include/fltk/InputBrowser.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/InputBrowser.h	(revision 773)
@@ -0,0 +1,96 @@
+//
+// "$Id: InputBrowser.h 4538 2005-08-26 10:29:43Z dejan $"
+//
+// MicroSoft style "ComboBox" with the menu appearing below with a
+// scrollbar. I would like to use the name "ComboBox" or "InputChoice"
+// for a more user-friendly version which uses pop-up menus and
+// positions the menu with the cursor pointing at the current item,
+// but this version can be used to get what MicroSoft users expect.
+// The implementation is a good example of how to get a widget to appear
+// in a modal pop-up window.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_InputBrowser_h
+#define fltk_InputBrowser_h
+
+#include <fltk/Menu.h>
+#include <fltk/Input.h>
+
+class ComboBrowser;
+class ComboWindow;
+
+namespace fltk {
+
+class FL_API InputBrowser : public Menu {
+public:
+  enum { // values for type()
+    NORMAL = 0,
+    NONEDITABLE = 1,
+    INDENTED = 2,
+    NONEDITABLE_INDENTED = 3
+  };
+
+  InputBrowser(int,int,int,int,const char * = 0);
+  ~InputBrowser();
+  static NamedStyle* default_style;
+
+  void popup();
+  void hide_popup();
+  virtual int popup(int x, int y, int w, int h) { InputBrowser::popup(); return Menu::popup(Rectangle(x,y,w,h)); }
+  
+  virtual int handle(int);
+  
+  Widget* item() const ;
+  Widget* item(Widget* v) const ;
+
+  void maxw(int i) { maxw_ = i; }
+  void maxh(int i) { maxh_ = i; }
+  int maxw() { return maxw_; }
+  int maxh() { return maxh_; }
+
+  void value(const char *v) { m_input.value(v); }
+  const char *value() { return m_input.value(); }
+
+protected:
+  virtual void draw();
+  static void input_cb(Input *w, InputBrowser *ib);
+
+  Input m_input;
+  
+    ComboWindow *win;
+    ComboBrowser *list;
+
+    friend class ComboWindow;
+    friend class ComboBrowser;
+
+  
+  int minw_, minh_, maxw_, maxh_;
+  int over_now, over_last;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: InputBrowser.h 4538 2005-08-26 10:29:43Z dejan $".
+//
Index: NonGTP/FLTK/include/fltk/Symbol.h
===================================================================
--- NonGTP/FLTK/include/fltk/Symbol.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Symbol.h	(revision 773)
@@ -0,0 +1,83 @@
+//
+// "$Id: Symbol.h 4303 2005-05-01 03:33:52Z spitzak $"
+//
+// The fltk drawing library
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Symbol_h
+#define fltk_Symbol_h
+
+#include "FL_API.h"
+#include "Color.h"
+#include "Rectangle.h"
+#include "PixelType.h"
+
+namespace fltk {
+
+class Style;
+
+class FL_API Symbol {
+  const char* name_;
+  static const char* text_;
+
+  // Forbid use of copy contructor and assign operator
+  Symbol & operator=(const Symbol &);
+  Symbol(const Symbol &);
+
+ public:
+
+  Symbol(const char* name=0);
+  const char* name() const {return name_;}
+  void name(const char*);
+
+  virtual void _measure(int& w, int& h) const;
+  void measure(int& w, int& h) const {_measure(w,h);}
+
+  virtual void _draw(const Rectangle&) const = 0;
+  void draw(const Rectangle& r) const {_draw(r);}
+  void draw(const Rectangle& r, const Style*, Flags) const;
+
+  uchar* readimage(uchar*, const Rectangle&) const;
+  uchar* readimage(uchar*, const Rectangle&, int delta) const;
+  uchar* readimage(uchar*, const Rectangle&, int delta, int linedelta) const;
+
+  // Hints for widgets:
+  virtual void inset(Rectangle& r) const;
+  virtual bool fills_rectangle() const;
+  virtual bool is_frame() const;
+
+  // hash table lookup:
+  static const Symbol* find(const char* name);
+  static const Symbol* find(const char* start, const char* end);
+  static const Symbol* iterate(int& index);
+  static void text(const char* s) {text_=s;}
+  static const char* text() {return text_;}
+  
+  // virtual ~Symbol() {}  // not done as it slows program exit
+};
+
+// Back-compatability constructor:
+FL_API void add_symbol(const char* name, void (*drawit)(Color), int scalable);
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/FL_VERSION.h
===================================================================
--- NonGTP/FLTK/include/fltk/FL_VERSION.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/FL_VERSION.h	(revision 773)
@@ -0,0 +1,21 @@
+/* The FLTK version number; this is changed slightly from the beta versions
+ * because the old "const double" definition would not allow for conditional
+ * compilation...
+
+ * FL_VERSION is a double that describes the major, minor, and patch version
+ * numbers.  Version 1.1 is actually stored as 1.01 to allow for more than 9
+ * minor releases.  Similarly, version 1.0.5 is stored as 1.0005.
+
+ * The FL_MAJOR_VERSION, FL_MINOR_VERSION, and FL_PATCH_VERSION constants
+ * give the integral values for the major, minor, and patch releases
+ * respectively.
+ */
+
+#ifndef FL_VERSION
+
+# define FL_MAJOR_VERSION	2
+# define FL_MINOR_VERSION	1
+# define FL_PATCH_VERSION	0
+# define FL_VERSION		2.0100
+
+#endif
Index: NonGTP/FLTK/include/fltk/Font.h
===================================================================
--- NonGTP/FLTK/include/fltk/Font.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Font.h	(revision 773)
@@ -0,0 +1,58 @@
+//
+// "$Id: Font.h 3203 2004-01-25 06:55:06Z spitzak $"
+//
+// Copyright 2004 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Font_h
+#define fltk_Font_h
+
+#include "Style.h"
+
+namespace fltk {
+
+struct FL_API Font {
+  const char* name_;
+  int attributes_;
+  // other fields are added here!
+
+  const char* name() const;
+
+  const char* name(int* p) {*p = attributes_; return name_;}
+
+  Font* plus(int attributes);
+  Font* bold() {return plus(BOLD);}
+  Font* italic() {return plus(ITALIC);}
+
+  int sizes(int*&);
+
+  int encodings(const char**&);
+
+  const char* system_name();
+
+  static const char* current_name();
+
+};
+
+// Find and return every font on the system.
+FL_API int list_fonts(Font**& arrayp);
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/README
===================================================================
--- NonGTP/FLTK/include/fltk/README	(revision 773)
+++ NonGTP/FLTK/include/fltk/README	(revision 773)
@@ -0,0 +1,8 @@
+This directory is for the public include files used by fltk. The
+directory is named "fltk" so that fltk's source and test programs can
+be compiled with these headers by using -I.. as a switch to the
+compiler.
+
+FLTK developers: please notice that this is for *PUBLIC* header
+files. If you have a private structure that is shared between fltk
+source files, put it in the same directory as the source files!
Index: NonGTP/FLTK/include/fltk/AlignGroup.h
===================================================================
--- NonGTP/FLTK/include/fltk/AlignGroup.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/AlignGroup.h	(revision 773)
@@ -0,0 +1,64 @@
+// Layout header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_AlignGroup_h
+#define fltk_AlignGroup_h
+
+#include <fltk/Group.h>
+
+namespace fltk {
+
+class FL_API AlignGroup : public Group {
+  bool vertical_;
+  uchar n_to_break_,dw_,dh_;
+  Flags align_;
+
+public:
+
+  void layout();
+
+  AlignGroup(int X, int Y, int W, int H, const char* L = 0,
+	     uchar n_to_break = 0, bool vertical = 1,
+	     Flags align = ALIGN_LEFT,
+	     uchar dw = 0,uchar dh = 0)
+    : Group(X,Y,W,H,L),
+      vertical_(vertical), n_to_break_(n_to_break), dw_(dw), dh_(dh),
+      align_(align) {}
+
+  bool vertical() const {return vertical_;}
+  void vertical(bool v) {vertical_ = v;}
+
+  uchar n_to_break() const {return n_to_break_;}
+  void n_to_break(uchar n) {n_to_break_ = n;}
+
+  uchar dw() const {return dw_;}
+  void dw(uchar d) {dw_ = d;}
+  uchar dh() const {return dh_;}
+  void dh(uchar d) {dh_ = d;}
+
+  Flags align() const {return align_;}
+  void align(Flags a) {align_ = a;}
+};
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/CheckButton.h
===================================================================
--- NonGTP/FLTK/include/fltk/CheckButton.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/CheckButton.h	(revision 773)
@@ -0,0 +1,46 @@
+//
+// "$Id: CheckButton.h 3954 2004-12-28 19:06:03Z laza2000 $"
+//
+// Button with a checkmark to the left of it.
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_CheckButton_h
+#define fltk_CheckButton_h
+
+#include "Button.h"
+
+namespace fltk {
+
+class FL_API CheckButton : public Button {
+public:
+  CheckButton(int x,int y,int w,int h,const char *l = 0);
+  static NamedStyle* default_style;
+
+  virtual void draw();
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: CheckButton.h 3954 2004-12-28 19:06:03Z laza2000 $".
+//
Index: NonGTP/FLTK/include/fltk/TextDisplay.h
===================================================================
--- NonGTP/FLTK/include/fltk/TextDisplay.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/TextDisplay.h	(revision 773)
@@ -0,0 +1,304 @@
+//
+// "$Id: TextDisplay.h 4467 2005-08-05 19:17:34Z dejan $"
+//
+// Header file for TextDisplay class.
+//
+// Copyright 2001-2005 by Bill Spitzak and others.
+// Original code Copyright Mark Edel.  Permission to distribute under
+// the LGPL for the FLTK library granted by Mark Edel.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+#ifndef TEXT_DISPLAY_H
+#define TEXT_DISPLAY_H
+
+#include "draw.h"
+#include "Group.h"
+#include "Widget.h"
+#include "Scrollbar.h"
+#include "TextBuffer.h"
+#include "Font.h"
+
+namespace fltk {
+
+class FL_API TextDisplay: public Group {
+  public:
+    enum {
+      NORMAL_CURSOR, CARET_CURSOR, DIM_CURSOR,
+      BLOCK_CURSOR, HEAVY_CURSOR
+    };
+
+    enum {
+      CURSOR_POS, CHARACTER_POS
+    };
+
+    // drag types- they match Fl::event_clicks() so that single clicking to
+    // start a collection selects by character, double clicking selects by
+    // word and triple clicking selects by line.
+    enum {
+      DRAG_CHAR = 0, DRAG_WORD = 1, DRAG_LINE = 2
+    };
+
+    typedef void (*UnfinishedStyleCb)(int, void *);
+
+    // style attributes - currently not implemented!
+    enum {
+      ATTR_NONE = 0,
+      ATTR_UNDERLINE = 1,
+      ATTR_HIDDEN = 2
+    };
+
+    struct StyleTableEntry {
+      Color	color;
+      Font*	font;
+      int	size;
+      unsigned	attr;
+    };
+
+    TextDisplay(int X, int Y, int W, int H, const char *l = 0);
+    ~TextDisplay();
+
+    virtual int handle(int e);
+    void buffer(TextBuffer* buf);
+    void buffer(TextBuffer& buf) { buffer(&buf); }
+    TextBuffer* buffer() { return mBuffer; }
+    void redisplay_range(int start, int end);
+    void scroll(int topLineNum, int horizOffset);
+    void insert(const char* text);
+    void overstrike(const char* text);
+    void insert_position(int newPos);
+    int insert_position() { return mCursorPos; }
+    int in_selection(int x, int y);
+    void show_insert_position();
+    int move_right();
+    int move_left();
+    int move_up();
+    int move_down();
+    int count_lines(int start, int end, bool start_pos_is_line_start);
+    int line_start(int pos);
+    int line_end(int pos, bool start_pos_is_line_start);
+    int skip_lines(int startPos, int nLines, bool startPosIsLineStart);
+    int rewind_lines(int startPos, int nLines);
+    void next_word(void);
+    void previous_word(void);
+    void show_cursor(int b = 1);
+    void hide_cursor() { show_cursor(0); }
+    void cursor_style(int style);
+    Color cursor_color() const {return mCursor_color;}
+    void cursor_color(Color n) {mCursor_color = n;}
+    int scrollbar_width() { return scrollbar_width_; }
+    Align scrollbar_align() { return scrollbar_align_; }
+    void scrollbar_width(int W) { scrollbar_width_ = W; }
+    void scrollbar_align(Align a) { scrollbar_align_ = a; }
+    int word_start(int pos) { return buffer()->word_start(pos); }
+    int word_end(int pos) { return buffer()->word_end(pos); }
+
+    
+    void highlight_data(TextBuffer *styleBuffer,
+                        StyleTableEntry *styleTable,
+                        int nStyles, char unfinishedStyle,
+                        UnfinishedStyleCb unfinishedHighlightCB,
+                        void *cbArg);
+
+    int position_style(int lineStartPos, int lineLen, int lineIndex,
+                       int dispIndex);
+
+    //Font textfont() const {return (Font)textfont_;}
+    //void textfont(uchar s) {textfont_ = s;}
+    uchar textsize() const {return textsize_;}
+    void textsize(uchar s) {textsize_ = s;}
+    Color textcolor() const {return (Color)textcolor_;}
+    void textcolor(unsigned n) {textcolor_ = n;}
+
+    int wrapped_column(int row, int column);
+    int wrapped_row(int row);
+    void wrap_mode(int wrap, int wrap_margin);
+
+    //virtual void resize(int X, int Y, int W, int H);
+
+  protected:
+    // Most (all?) of this stuff should only be called from resize() or
+    // draw().
+    // Anything with "vline" indicates thats it deals with currently
+    // visible lines.
+
+    virtual void draw();
+    virtual void layout();
+
+    void draw_text(int X, int Y, int W, int H);
+    void draw_range(int start, int end);
+    void draw_cursor(int, int);
+
+    void draw_string(int style, int x, int y, int toX, const char *string,
+                     int nChars);
+
+    void draw_vline(int visLineNum, int leftClip, int rightClip,
+                    int leftCharIndex, int rightCharIndex);
+
+    void draw_line_numbers(bool clearAll);
+
+    void clear_rect(int style, int x, int y, int width, int height);
+    void display_insert();
+
+    void offset_line_starts(int newTopLineNum);
+
+    void calc_line_starts(int startLine, int endLine);
+
+    void update_line_starts(int pos, int charsInserted, int charsDeleted,
+                            int linesInserted, int linesDeleted, int *scrolled);
+
+    void calc_last_char();
+
+    int position_to_line( int pos, int* lineNum );
+    int string_width(const char* string, int length, int style);
+
+    static void buffer_predelete_cb(int pos, int nDeleted, void* cbArg);
+    static void buffer_modified_cb(int pos, int nInserted, int nDeleted,
+                                   int nRestyled, const char* deletedText,
+                                   void* cbArg);
+
+    static void h_scrollbar_cb(Scrollbar* w, TextDisplay* d);
+    static void v_scrollbar_cb( Scrollbar* w, TextDisplay* d);
+    void update_v_scrollbar();
+    void update_h_scrollbar();
+    int measure_vline(int visLineNum);
+    int longest_vline();
+    int empty_vlines();
+    int vline_length(int visLineNum);
+    int xy_to_position(int x, int y, int PosType = CHARACTER_POS);
+
+    void xy_to_rowcol(int x, int y, int* row, int* column,
+                      int PosType = CHARACTER_POS);
+
+    int position_to_xy(int pos, int* x, int* y);
+    void maintain_absolute_top_line_number(int state);
+    int get_absolute_top_line_number();
+    void absolute_top_line_number(int oldFirstChar);
+    int maintaining_absolute_top_line_number();
+    void reset_absolute_top_line_number();
+    int position_to_linecol(int pos, int* lineNum, int* column);
+    void scroll_(int topLineNum, int horizOffset);
+
+    void extend_range_for_styles(int* start, int* end);
+
+    void find_wrap_range(const char *deletedText, int pos, int nInserted,
+                           int nDeleted, int *modRangeStart, int *modRangeEnd,
+                           int *linesInserted, int *linesDeleted);
+    void measure_deleted_lines(int pos, int nDeleted);
+    void wrapped_line_counter(TextBuffer *buf, int startPos, int maxPos,
+                               int maxLines, bool startPosIsLineStart,
+                               int styleBufOffset, int *retPos, int *retLines,
+                               int *retLineStart, int *retLineEnd,
+                               bool countLastLineMissingNewLine = true);
+    void find_line_end(int pos, bool start_pos_is_line_start, int *lineEnd,
+                         int *nextLineStart);
+    int measure_proportional_character(char c, int colNum, int pos);
+    int wrap_uses_character(int lineEndPos);
+    int range_touches_selection(TextSelection *sel, int rangeStart,
+                                 int rangeEnd);
+    void text_drag_me(int pos);
+
+    int damage_range1_start, damage_range1_end;
+    int damage_range2_start, damage_range2_end;
+    int mCursorPos;
+    int mCursorOn;
+    int mCursorOldY;		/* Y pos. of cursor for blanking */
+    int mCursorToHint;		/* Tells the buffer modified callback
+                                   where to move the cursor, to reduce
+                                   the number of redraw calls */
+    int mCursorStyle;           /* One of enum cursorStyles above */
+    int mCursorPreferredCol;    /* Column for vert. cursor movement */
+    int mNVisibleLines;         /* # of visible (displayed) lines */
+    int mNBufferLines;          /* # of newlines in the buffer */
+    TextBuffer* mBuffer;    /* Contains text to be displayed */
+    TextBuffer* mStyleBuffer; /* Optional parallel buffer containing
+                                     color and font information */
+    int mFirstChar, mLastChar;  /* Buffer positions of first and last
+                                   displayed character (lastChar points
+                                   either to a newline or one character
+                                   beyond the end of the buffer) */
+    int mContinuousWrap;     	  /* Wrap long lines when displaying */
+    int mWrapMargin; 	    	  /* Margin in # of char positions for
+    	    	    	    	    	   wrapping in continuousWrap mode */
+    int* mLineStarts;
+    int mTopLineNum;            /* Line number of top displayed line
+                                   of file (first line of file is 1) */
+    int mAbsTopLineNum;			/* In continuous wrap mode, the line
+    					   number of the top line if the text
+					   were not wrapped (note that this is
+					   only maintained as needed). */
+    int mNeedAbsTopLineNum;	/* Externally settable flag to continue
+    					   maintaining absTopLineNum even if
+					   it isn't needed for line # display */
+    int mHorizOffset;           /* Horizontal scroll pos. in pixels */
+    int mTopLineNumHint;        /* Line number of top displayed line
+                                   of file (first line of file is 1) */
+    int mHorizOffsetHint;       /* Horizontal scroll pos. in pixels */
+    int mNStyles;               /* Number of entries in styleTable */
+    const StyleTableEntry *mStyleTable; /* Table of fonts and colors for
+                                   coloring/syntax-highlighting */
+    char mUnfinishedStyle;      /* Style buffer entry which triggers
+                                   on-the-fly reparsing of region */
+    UnfinishedStyleCb mUnfinishedHighlightCB; /* Callback to parse "unfinished" */
+                                /* regions */
+    void* mHighlightCBArg;      /* Arg to unfinishedHighlightCB */
+
+    int mMaxsize;
+
+    int mFixedFontWidth;        /* Font width if all current fonts are
+                                   fixed and match in width, else -1 */
+    int mSuppressResync;		/* Suppress resynchronization of line
+                                           starts during buffer updates */
+    int mNLinesDeleted;			/* Number of lines deleted during
+					   buffer modification (only used
+				           when resynchronization is suppressed) */
+    int mModifyingTabDistance;	/* Whether tab distance is being
+    					   modified */
+
+    Color mCursor_color;
+
+    Scrollbar* mHScrollBar;
+    Scrollbar* mVScrollBar;
+    int scrollbar_width_;
+    Align scrollbar_align_;
+    int dragPos, dragType, dragging;
+    int display_insert_position_hint;
+    //struct { int x, y, w, h; } text_area;
+    Rectangle text_area;
+
+    uchar textfont_;
+    uchar textsize_;
+    unsigned textcolor_;
+
+	 // The following are not presently used from the original NEdit code,
+	 // but are being put here so that future versions of TextDisplay
+	 // can implement line numbers without breaking binary compatibility.
+    int mLineNumLeft, mLineNumWidth;
+				/* Line number margin and width */
+};
+
+}
+#endif
+
+//
+// End of "$Id: TextDisplay.h 4467 2005-08-05 19:17:34Z dejan $".
+//
+
Index: NonGTP/FLTK/include/fltk/ItemGroup.h
===================================================================
--- NonGTP/FLTK/include/fltk/ItemGroup.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/ItemGroup.h	(revision 773)
@@ -0,0 +1,46 @@
+//
+// "$Id: ItemGroup.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// Widget designed to be a nested list in a menu or browser. This
+// copies the drawing and style code from Item. I did not modify the
+// base Menu class this way because the style inheritance would mess
+// up the styles of MenuButton and MenuBar. Code is in Item.cxx
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_ItemGroup_h
+#define fltk_ItemGroup_h
+
+#include "Menu.h"
+
+namespace fltk {
+
+class FL_API ItemGroup : public Menu {
+public:
+  void draw();
+  void layout();
+  int handle(int);
+  ItemGroup(const char* label = 0);
+};
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/Button.h
===================================================================
--- NonGTP/FLTK/include/fltk/Button.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Button.h	(revision 773)
@@ -0,0 +1,63 @@
+//
+// "$Id: Button.h 4319 2005-05-08 19:18:50Z spitzak $"
+//
+// Push button widget
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Button_h
+#define fltk_Button_h
+
+#ifndef fltk_Widget_h
+#include "Widget.h"
+#endif
+
+namespace fltk {
+
+class FL_API Button : public Widget {
+public:
+  enum { // values for type()
+    NORMAL = 0,
+    TOGGLE = RESERVED_TYPE+1,
+    RADIO  = RESERVED_TYPE+2,
+    HIDDEN = 3
+  };
+  bool  value() const {return Widget::value();}
+  bool	value(bool);
+  bool	set();
+  bool	clear();
+  void	setonly();
+  int handle(int);
+  int handle(int event, const Rectangle&);
+  Button(int,int,int,int,const char * = 0);
+  static NamedStyle* default_style;
+
+  virtual void draw();
+  void draw(int glyph, int glyph_width) const;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Button.h 4319 2005-05-08 19:18:50Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/RepeatButton.h
===================================================================
--- NonGTP/FLTK/include/fltk/RepeatButton.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/RepeatButton.h	(revision 773)
@@ -0,0 +1,47 @@
+//
+// "$Id: RepeatButton.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// This button does it's callback repeatedly (about 10/second) while
+// the user holds the button down.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_RepeatButton_h
+#define fltk_RepeatButton_h
+
+#include "Button.h"
+
+namespace fltk {
+
+class FL_API RepeatButton : public Button {
+  static void repeat_callback(void *);
+public:
+  int handle(int);
+  RepeatButton(int x,int y,int w,int h,const char *l=0) : Button(x,y,w,h,l) {}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: RepeatButton.h 2973 2003-04-20 03:17:51Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/TiledGroup.h
===================================================================
--- NonGTP/FLTK/include/fltk/TiledGroup.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/TiledGroup.h	(revision 773)
@@ -0,0 +1,49 @@
+//
+// "$Id: TiledGroup.h 2973 2003-04-20 03:17:51Z easysw $"
+//
+// The child widgets are expected to be all laid out to touch each other
+// and fill this group. The user can then move the boundaries between
+// them by grabbing the junctions between the children.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_TiledGroup_h
+#define fltk_TiledGroup_h
+
+#include "Group.h"
+
+namespace fltk {
+
+class FL_API TiledGroup : public Group {
+protected:
+  void layout();
+public:
+  int handle(int);
+  TiledGroup(int X,int Y,int W,int H,const char*l=0) : Group(X,Y,W,H,l) {}
+  void position(int, int, int, int);
+};
+
+}
+#endif
+
+//
+// End of "$Id: TiledGroup.h 2973 2003-04-20 03:17:51Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/ask.h
===================================================================
--- NonGTP/FLTK/include/fltk/ask.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/ask.h	(revision 773)
@@ -0,0 +1,64 @@
+//
+// "$Id: ask.h 3880 2004-10-29 06:42:56Z spitzak $"
+//
+// Utility pop-up windows for fltk
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_ask_h
+#define fltk_ask_h
+
+#include "FL_API.h"
+#include "Style.h"
+
+namespace fltk {
+
+class Widget;
+
+/*! \addtogroup dialogs
+  \{ */
+FL_API void message(const char *, ...);
+FL_API void alert(const char *, ...);
+FL_API int ask(const char *, ...);
+FL_API int choice(const char *q,
+		  const char *b0, const char *b1, const char *b2, ...);
+FL_API int choice_alert(const char *q,
+		  const char *b0, const char *b1, const char *b2, ...);
+FL_API const char *input(const char *label, const char *deflt = 0, ...);
+FL_API const char *password(const char *label, const char *deflt = 0, ...);
+
+extern FL_API NamedStyle* icon_style;
+extern FL_API NamedStyle* message_style;
+
+// pointers you can use to change FLTK to a foreign language:
+extern FL_API const char* no;
+extern FL_API const char* yes;
+extern FL_API const char* ok;
+extern FL_API const char* cancel;
+
+/*! \} */
+
+}
+
+#endif
+
+//
+// End of "$Id: ask.h 3880 2004-10-29 06:42:56Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/damage.h
===================================================================
--- NonGTP/FLTK/include/fltk/damage.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/damage.h	(revision 773)
@@ -0,0 +1,26 @@
+/* Values of the bits stored in Widget::damage(). */
+
+#ifndef fltk_damage_h
+#define fltk_damage_h
+
+namespace fltk {
+
+/*! \addtogroup damage
+ \{ */
+enum {
+  DAMAGE_VALUE		= 0x01,
+  DAMAGE_PUSHED		= 0x02,
+  DAMAGE_SCROLL		= 0x04,
+  DAMAGE_OVERLAY	= 0x04, // reused value
+  DAMAGE_HIGHLIGHT	= 0x08,
+  DAMAGE_CHILD		= 0x10,
+  DAMAGE_CHILD_LABEL	= 0x20,
+  DAMAGE_EXPOSE		= 0x40,
+  DAMAGE_CONTENTS	= 0x40, // reused value
+  DAMAGE_ALL		= 0x80
+};
+/*! \} */
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/FillDial.h
===================================================================
--- NonGTP/FLTK/include/fltk/FillDial.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/FillDial.h	(revision 773)
@@ -0,0 +1,44 @@
+//
+// "$Id: FillDial.h 3778 2004-08-21 19:33:02Z leka $"
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_FillDial_h
+#define fltk_FillDial_h
+
+#include "Dial.h"
+
+namespace fltk {
+
+/*! Dial but the constructor sets type() to FILL, so it draws a pie slice. */
+class FL_API FillDial : public Dial {
+public:
+    FillDial(int x,int y,int w,int h, const char *l = 0)
+      : Dial(x,y,w,h,l) {type(FILL);}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: FillDial.h 3778 2004-08-21 19:33:02Z leka $".
+//
Index: NonGTP/FLTK/include/fltk/filename.h
===================================================================
--- NonGTP/FLTK/include/fltk/filename.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/filename.h	(revision 773)
@@ -0,0 +1,100 @@
+// "$Id: filename.h 4350 2005-05-13 21:56:07Z dejan $"
+
+/* Copyright 1998-2005 by Bill Spitzak and others.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Please report all bugs and problems to "fltk-bugs@fltk.org".
+ *
+ * These functions are not in the fltk namespace because they really
+ * should not be part of fltk. They are used by the file chooser.
+ */
+
+#ifndef fltk_filename_h
+#define fltk_filename_h
+
+#include "FL_API.h"
+
+/*! \addtogroup utilities
+  \{ */
+
+FL_API const char* filename_normalize(char* output, int length, const char* input, const char* directory=0);
+inline char* filename_normalize(char* o, int l, char* i, const char* d=0) {return (char*)(filename_normalize(o,l,(const char*)i,d));}
+FL_API const char *filename_name(const char *);
+inline char* filename_name(char* a) {return (char*)(filename_name((const char*)a));}
+FL_API const char *filename_ext(const char *);
+inline char* filename_ext(char* a) {return (char*)(filename_ext((const char*)a));}
+FL_API bool filename_match(const char *, const char *pattern); // glob match
+FL_API bool filename_isdir(const char*);
+FL_API double filename_size(const char *); // return size of file
+FL_API long int filename_mtime(const char *); // return modification time
+
+/*! \} */
+
+////////////////////////////////////////////////////////////////
+// dirent (what a pain)...
+
+#if defined(__WATCOMC__)
+
+# include <sys/types.h>
+# include "direct.h"
+
+#elif defined(_WIN32) && !defined(__CYGWIN__) && !defined(__MINGW32__)
+// Dummy version used on win32 that just holds a name:
+
+struct dirent {char d_name[1];};
+
+#elif defined(__linux)
+// Newest Linux libc is broken when it emulates the 32-bit dirent, it
+// generates errors when the data like the inode number does not fit, even
+// though we are not going to look at anything other than the name. This
+// code seems to force the 64-bit version to be used:
+
+# ifndef _GNU_SOURCE
+#  define _GNU_SOURCE
+# endif
+# include <features.h>
+# include <sys/types.h>
+# include <dirent.h>
+# define dirent dirent64
+# define scandir scandir64
+
+#else
+// warning: on some systems (very few nowadays?) <dirent.h> may not exist.
+// The correct information is in one of these three files:
+//  #include <sys/ndir.h>
+//  #include <sys/dir.h>
+//  #include <ndir.h>
+// plus you must do the following #define:
+//  #define dirent direct
+// I recommend you create a /usr/include/dirent.h containing the correct info
+
+# include <sys/types.h>
+# include <dirent.h>
+
+#endif
+
+/*! \addtogroup utilities */
+FL_API int filename_list(const char *d, struct dirent ***);
+
+#ifndef PATH_MAX
+# ifdef _MAX_PATH
+#  define PATH_MAX _MAX_PATH
+# else
+#  define PATH_MAX 1024
+# endif
+#endif
+
+#endif
+
+// End of "$Id: filename.h 4350 2005-05-13 21:56:07Z dejan $".
Index: NonGTP/FLTK/include/fltk/Adjuster.h
===================================================================
--- NonGTP/FLTK/include/fltk/Adjuster.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Adjuster.h	(revision 773)
@@ -0,0 +1,58 @@
+//
+// "$Id: Adjuster.h 2871 2002-12-10 02:01:07Z easysw $"
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+// Undocumented valuator provided for back-compatability.
+// This may be removed before the final version.
+// 3-button "slider", made for Nuke
+
+#ifndef fltk_Adjuster_h
+#define fltk_Adjuster_h
+
+#include "Valuator.h"
+
+namespace fltk {
+
+class FL_API Adjuster : public Valuator {
+public:
+  Adjuster(int x, int y, int w, int h, const char *l=0);
+  static NamedStyle* default_style;
+  void soft(int x) {soft_ = x;}
+  int soft() const {return soft_;}
+  int handle(int);
+
+protected:
+  void draw();
+  void value_damage();
+
+private:
+  int drag, highlight, last;
+  int ix;
+  int soft_;
+};
+
+}
+#endif
+
+//
+// End of "$Id: Adjuster.h 2871 2002-12-10 02:01:07Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/Image.h
===================================================================
--- NonGTP/FLTK/include/fltk/Image.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Image.h	(revision 773)
@@ -0,0 +1,81 @@
+// "$Id: Image.h 4571 2005-09-16 08:02:58Z spitzak $"
+//
+// Copyright 1998-2005 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Image_h
+#define fltk_Image_h
+
+#include "Symbol.h"
+# undef OPAQUE // fix for windows.h
+
+namespace fltk {
+
+class FL_API Widget;
+class FL_API xbmImage;
+class DrawImageHelper;
+
+class FL_API Image : public Symbol {
+
+  void* picture;	// system-specific data for the drawn image
+  int flags;		// flags indicating the state of picture
+  friend class xbmImage;
+  friend class DrawImageHelper;
+  enum {DRAWN=1, OPAQUE=2, MASK=4, USES_FG=8, USES_BG=16};
+
+protected:
+  int w_, h_;
+
+public:
+  Image(const char* name=0) : Symbol(name), picture(0), flags(0), w_(-1), h_(-1) {}
+  Image(int w, int h, const char* name=0) : Symbol(name), picture(0), flags(0), w_(w), h_(h) {}
+
+  int w() const {return w_;}
+  int width() const {return w_;}
+  int h() const {return h_;}
+  int height() const {return h_;}
+
+  virtual void update() = 0;
+  bool drawn() const;
+  void redraw() {flags &= ~DRAWN;}
+  void destroy();
+  void setsize(int w, int h);
+  void make_current();
+  void over(const Rectangle& from, const Rectangle& to) const;
+
+  // implementation as Symbol subclass:
+  void _draw(const Rectangle&) const;
+  void _measure(int& W, int& H) const;
+  bool fills_rectangle() const;
+
+  void draw(int x, int y) const;
+  void draw(const Rectangle& r) const {_draw(r);} // un-hide the base class
+
+  // for back compatability with fltk1 only:
+  void label(Widget* o);
+
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Image.h 4571 2005-09-16 08:02:58Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/Browser.h
===================================================================
--- NonGTP/FLTK/include/fltk/Browser.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Browser.h	(revision 773)
@@ -0,0 +1,182 @@
+//
+// "$Id: Browser.h 4368 2005-05-24 04:35:49Z spitzak $"
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Browser_h
+#define fltk_Browser_h
+
+#include "Menu.h"
+#include "Scrollbar.h"
+
+namespace fltk {
+
+class FL_API Browser : public Menu {
+public:
+
+  int handle(int);
+  void layout();
+  void draw();
+
+  Browser(int X,int Y,int W,int H,const char*l=0);
+  static NamedStyle* default_style;
+  ~Browser();
+
+  enum { // values for type()
+    NORMAL = 0,
+    MULTI = 1
+  };
+
+  int width() const {return width_;}
+  int height() const {return height_;}
+  int box_width() const {return interior.w();}
+  int box_height() const {return interior.h();}
+  int xposition() const {return xposition_;}
+  void xposition(int);
+  int yposition() const {return yposition_;}
+  void yposition(int);
+  bool indented() const {return indented_;}
+  void indented(bool v) {indented_ = v;}
+
+  Scrollbar scrollbar;
+  Scrollbar hscrollbar;
+
+  Widget* goto_top();
+  Widget* goto_focus() {return goto_mark(FOCUS);}
+  Widget* goto_position(int y);
+  Widget* goto_index(const int* indexes, int level);
+  Widget* goto_index(int);
+  Widget* goto_index(int,int,int=-1,int=-1,int=-1);
+  Widget* next();
+  Widget* next_visible();
+  Widget* previous_visible();
+  bool item_is_visible() const;
+  bool item_is_parent() const;
+  bool item_is_open() const;
+  int item_h() const;
+
+  bool set_focus();
+  bool set_item_selected(bool value = true, int do_callback = 0);
+  bool select_only_this(int do_callback = 0);
+  bool deselect(int do_callback = 0);
+  enum linepos { NOSCROLL, TOP, MIDDLE, BOTTOM };
+  bool make_item_visible(linepos = NOSCROLL);
+  void damage_item() {damage_item(HERE);}
+  bool set_item_opened(bool);
+  bool set_item_visible(bool);
+
+  int current_level() const {return item_level[HERE];}
+  const int* current_index() const {return item_index[HERE];}
+  int current_position() const {return item_position[HERE];}
+
+  int focus_level() const {return item_level[FOCUS];}
+  const int* focus_index() const {return item_index[FOCUS];}
+  int focus_position() const {return item_position[FOCUS];}
+  void value(int v) {goto_index(v); set_focus();}
+  int value() const {return focus_index()[0];}
+
+  // Maybe these should be moved to base Menu class:
+  const int *column_widths() const { return column_widths_p; }
+  void column_widths(const int *pWidths);
+  const char **column_labels() const { return column_labels_; }
+  void column_labels(const char **pLabels);
+  int selected_column() { return selected_column_; }
+  int set_column_start(int column, int x);
+
+  // Convienence functions for flat browsers:
+  bool select(int line, bool value = true);
+  bool selected(int line);
+  int topline() const {return item_index[FIRST_VISIBLE][0];}
+  void topline(int line) {goto_index(line); make_item_visible(TOP);}
+  void bottomline(int line) {goto_index(line); make_item_visible(BOTTOM);}
+  void middleline(int line) {goto_index(line); make_item_visible();}
+  bool displayed(int line);
+  bool display(int line, bool value = true);
+
+  Widget *header(int col) { if(col<0 || col>=nHeader) return 0; return header_[col]; }
+  int nheader() const { return nHeader; }
+
+  int load(const char *filename);
+
+private:
+
+  bool indented_;
+  const int *column_widths_; // original column widths
+  int *column_widths_i;      // original column widths after user interaction
+  int *column_widths_p;      // actual column widths
+  const char **column_labels_;
+  int xposition_, yposition_;
+  int width_, height_;
+  int scrolldx, scrolldy;
+  static void hscrollbar_cb(Widget*, void*);
+  static void scrollbar_cb(Widget*, void*);
+  void draw_item(int);
+  void draw_clip(const Rectangle&);
+  static void draw_clip_cb(void*,const Rectangle&);
+  Rectangle interior; // inside box edges and scrollbars
+  
+  Widget **header_;
+  int nHeader, nColumn, selected_column_;
+
+  int multi() const {return type()&MULTI;}
+
+  // Marks serve as "indexes" into the hierarchial browser. We probably
+  // need to make some sort of public interface but I have not figured
+  // it out completely.
+  enum { // predefined marks
+    HERE = 0,	// current item, the one moved by all the calls
+    FOCUS,	// what the user thinks is the curren item
+    FIRST_VISIBLE, // item at top of scroll region
+    REDRAW_0,	// item that needs to be redrawn
+    REDRAW_1,	// a second item that needs to be redrawn
+    OPEN,	// this and all parents are open
+    TEMP,	// scratch space
+    TEMP2,	// scratch space, currently unused
+    NUMMARKS
+  };
+  Widget* goto_mark(int mark); // set HERE to mark
+  Widget* goto_visible_focus(); // set HERE to focus if visible
+  void set_mark(int dest, int mark); // set dest to mark
+  int compare_marks(int mark1, int mark2); // returns >0 if mark1 after mark2
+  bool at_mark(int mark) { return !compare_marks(HERE,mark); }
+  void unset_mark(int mark);  // makes mark have illegal value
+  bool is_set(int mark);  // false if unset_mark was called
+  void damage_item(int mark); // make this item redraw
+  int siblings; // # of children of parent of HERE item
+
+  // For each mark:
+  unsigned char item_level[NUMMARKS]; // depth in hierarchy of the item
+  unsigned char open_level[NUMMARKS]; // depth of highest closed parent
+  int item_position[NUMMARKS]; // distance in pixels from top of browser
+  int* item_index[NUMMARKS]; // indexes at each level of hierarchy
+  int levels; // maximum depth of all items encountered so far
+  void set_level(int); // increases levels by reallocating the arrays
+
+  static void column_click_cb_(Widget*, void*);
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Browser.h 4368 2005-05-24 04:35:49Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/FileBrowser.h
===================================================================
--- NonGTP/FLTK/include/fltk/FileBrowser.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/FileBrowser.h	(revision 773)
@@ -0,0 +1,70 @@
+//
+// "$Id: FileBrowser.h 2871 2002-12-10 02:01:07Z easysw $"
+//
+// Fl_FileBrowser definitions for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1997-1999 by Easy Software Products.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+//
+// Include necessary header files...
+//
+
+#ifndef fltk_FileBrowser_h
+#define fltk_FileBrowser_h
+
+#include <fltk/Browser.h>
+#include <fltk/FileIcon.h>
+
+namespace fltk {
+
+class FL_API FileBrowser : public Browser
+{
+  const char	*directory_;
+  uchar		icon_size_;
+  const char	*pattern_;
+
+  int		item_height(void *) const;
+  int		item_width(void *) const;
+  void		item_draw(void *, int, int, int, int) const;
+  int		incr_height() const { return (item_height(0)); }
+
+public:
+  FileBrowser(int, int, int, int, const char * = 0);
+
+  uchar		icon_size() const { return (icon_size_); };
+  void		icon_size(uchar s) { icon_size_ = s; redraw(); };
+
+  void		directory(const char *directory) { load(directory); }
+  const char	*directory(void) const { return (directory_); }
+
+  void		filter(const char *pattern);
+  const char	*filter() const { return (pattern_); };
+
+  int		load(const char *directory);
+
+};
+
+}
+#endif
+
+//
+// End of "$Id: FileBrowser.h 2871 2002-12-10 02:01:07Z easysw $".
+//
Index: NonGTP/FLTK/include/fltk/Widget.h
===================================================================
--- NonGTP/FLTK/include/fltk/Widget.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Widget.h	(revision 773)
@@ -0,0 +1,312 @@
+//
+// "$Id: Widget.h 4366 2005-05-23 05:11:51Z spitzak $"
+//
+// The base class of all widgets.
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Widget_h
+#define fltk_Widget_h
+
+#include "Style.h"
+#include "Rectangle.h"
+
+namespace fltk {
+
+class FL_API Widget;
+class FL_API Window;
+class FL_API Symbol;
+class FL_API Group;
+struct Cursor;
+
+typedef void (Callback )(Widget*, void*);
+typedef Callback* Callback_p; // needed for BORLAND
+typedef void (Callback0)(Widget*);
+typedef void (Callback1)(Widget*, long);
+
+class FL_API Widget : public Rectangle {
+  // disable the copy assignment/constructors:
+  Widget & operator=(const Widget &);
+  Widget(const Widget &);
+
+public:
+
+  Widget(int,int,int,int,const char* =0);
+  virtual ~Widget();
+
+  virtual void draw();
+  virtual int handle(int);
+  int	send(int event);
+  virtual void layout();
+
+  const Style* style() const { return style_; }
+  void	style(const Style* s) { style_ = s; }
+  void	style(const Style& s) { style_ = &s; }
+  bool	copy_style(const Style* s);
+  static NamedStyle* default_style;
+  static void default_glyph(int, const Rectangle&);
+
+  Group* parent() const	{ return parent_; }
+  void	parent(Group* w)	{ parent_ = w; }
+  Window* window() const	;
+
+  enum { // values for type():
+    RESERVED_TYPE	= 0x64,
+    GROUP_TYPE		= 0xe0,
+    WINDOW_TYPE		= 0xf0
+  };
+  uchar	type() const		{ return type_; }
+  void	type(uchar t)		{ type_ = t; }
+  bool	is_group() const	{ return type_ >= GROUP_TYPE; }
+  bool	is_window() const	{ return type_ >= WINDOW_TYPE; }
+
+  bool  resize(int x,int y,int w,int h);
+  bool	position(int x, int y)	;
+  bool	resize(int w, int h)	;
+
+  void  get_absolute_rect( Rectangle *rect ) const;
+
+  const char* label() const	{ return label_; }
+  void	label(const char* a);
+  void	copy_label(const char* a);
+
+  const Symbol* image() const	{ return image_; }
+  void	image(const Symbol* a)	{ image_ = a; }
+  void	image(const Symbol& a)	{ image_ = &a; }
+
+  const char *tooltip() const	{ return tooltip_; }
+  void	tooltip(const char *t)	{ tooltip_ = t; }
+
+  unsigned shortcut() const	;
+  bool	shortcut(unsigned key)	;
+  bool	add_shortcut(unsigned key);
+  bool	remove_shortcut(unsigned key);
+  bool  remove_shortcuts()	;
+  unsigned label_shortcut() const;
+  bool	test_label_shortcut() const;
+  bool	test_shortcut() const	;
+  bool  test_shortcut(bool) const;
+
+  Callback_p callback() const	{ return callback_; }
+  void	callback(Callback* c, void* p) { callback_=c; user_data_=p; }
+  void	callback(Callback* c)	{ callback_=c; }
+  void	callback(Callback0*c)	{ callback_=(Callback*)c; }
+  void	callback(Callback1*c, long p=0) { callback_=(Callback*)c; user_data_=(void*)p; }
+  void*	user_data() const	{ return user_data_; }
+  void	user_data(void* v)	{ user_data_ = v; }
+  long	argument() const	{ return (long)user_data_; }
+  void	argument(long v)	{ user_data_ = (void*)v; }
+  uchar when() const		{ return when_; }
+  void	when(uchar i)		{ when_ = i; }
+
+  static void default_callback(Widget*, void*);
+  void	do_callback()		{ callback_(this,user_data_); }
+  void	do_callback(Widget* o,void* arg=0) { callback_(o,arg); }
+  void	do_callback(Widget* o,long arg) { callback_(o,(void*)arg); }
+  bool	contains(const Widget*) const;
+  bool	inside(const Widget* o) const { return o && o->contains(this); }
+  bool	pushed() const		;
+  bool	focused() const		;
+  bool	belowmouse() const	;
+
+  Flags flags() const		{ return flags_; }
+  Flags flags(Flags f)		{ return flags_ = f; }
+  Flags set_flag(int c)		{ return flags_ |= c; }
+  Flags clear_flag(int c)	{ return flags_ &= ~c; }
+  Flags invert_flag(int c)	{ return flags_ ^= c; }
+
+  Flags align() const		{ return flags_&ALIGN_MASK; }
+  void	align(unsigned a)	{ flags_ = (flags_ & (~ALIGN_MASK)) | a; }
+  bool	visible() const		{ return !(flags_&INVISIBLE); }
+  bool	visible_r() const	;
+  void	show()			;
+  void	hide()			;
+  void	set_visible()		{ flags_ &= ~INVISIBLE; }
+  void	clear_visible()		{ flags_ |= INVISIBLE; }
+  bool	active() const		{ return !(flags_&NOTACTIVE); }
+  bool	active_r() const	;
+  void	activate()		;
+  void	activate(int b)		{ if (b) activate(); else deactivate(); }
+  void	deactivate()		;
+  bool	output() const		{ return (flags_&OUTPUT)!=0; }
+  void	set_output()		{ flags_ |= OUTPUT; }
+  void	clear_output()		{ flags_ &= ~OUTPUT; }
+  bool	takesevents() const	{ return !(flags_&(OUTPUT|INVISIBLE|NOTACTIVE)); }
+  bool	changed() const		{ return (flags_&CHANGED)!=0; }
+  void	set_changed()		{ flags_ |= CHANGED; }
+  void	clear_changed()		{ flags_ &= ~CHANGED; }
+  bool	value() const		{ return (flags_&VALUE)!=0; }
+  void	set_value()		{ flags_ |= VALUE; }
+  void	clear_value()		{ flags_ &= ~VALUE; }
+  bool	selected() const	{ return (flags_&SELECTED)!=0; }
+  void	set_selected()		{ flags_ |= SELECTED; }
+  void	clear_selected()	{ flags_ &= ~SELECTED; }
+  bool	click_to_focus()	{ return (flags_ & CLICK_TO_FOCUS) != 0; }
+  void  set_click_to_focus()	{ flags_ |= CLICK_TO_FOCUS; }
+  void	clear_click_to_focus()	{ flags_ &= ~CLICK_TO_FOCUS; }
+  bool	tab_to_focus()		{ return (flags_ & TAB_TO_FOCUS) != 0; }
+  void  set_tab_to_focus()	{ flags_ |= TAB_TO_FOCUS; }
+  void	clear_tab_to_focus()	{ flags_ &= ~(TAB_TO_FOCUS|CLICK_TO_FOCUS); }
+  bool  horizontal() const	{ return !(flags_&LAYOUT_VERTICAL);}
+  bool  vertical() const	{ return (flags_&LAYOUT_VERTICAL)!=0;}
+  void	set_horizontal()	{ flags_ &= ~LAYOUT_VERTICAL; }
+  void	set_vertical()		{ flags_ |= LAYOUT_VERTICAL; }
+
+  bool	take_focus()		;
+  void	throw_focus()		;
+
+  void	redraw()		;
+  void	redraw(uchar c)		;
+  void	redraw_label()		;
+  void	redraw_highlight()	;
+  void	redraw(const Rectangle&);
+  uchar	damage() const		{ return damage_; }
+  void	set_damage(uchar c)	{ damage_ = c; } // should be called damage(c)
+
+  void  relayout()		;
+  void	relayout(uchar damage)	;
+  uchar layout_damage() const	{ return layout_damage_; }
+  void	layout_damage(uchar c)	{ layout_damage_ = c; }
+
+  void	add_timeout(float)	;
+  void	repeat_timeout(float)	;
+  void  remove_timeout()	;
+
+  void	make_current() const	;
+  void	draw_background() const	;
+  void  draw_frame() const	;
+  void  draw_box() const	;
+  void  draw_glyph(int t, const Rectangle& r) const {glyph()(t,r);}
+  void	draw_label() const	;
+  void  draw_label(const Rectangle&, Flags) const ;
+  void	cursor(Cursor*) const	;
+
+  void	measure_label(int&, int&) const ;
+
+  Box*	box()			const;
+  Box*	buttonbox()		const;
+  Box*	focusbox()		const;
+  GlyphStyle glyph()		const;
+  Font*	labelfont()		const;
+  Font*	textfont()		const;
+  LabelType* labeltype()	const;
+  Color	color()			const;
+  Color	textcolor()		const;
+  Color	selection_color()	const;
+  Color	selection_textcolor()	const;
+  Color	buttoncolor()		const;
+  Color	labelcolor()		const;
+  Color	highlight_color()	const;
+  Color	highlight_textcolor()	const;
+  float labelsize()		const;
+  float textsize()		const;
+  float leading()		const;
+  unsigned char scrollbar_align() const;
+  unsigned char scrollbar_width() const;
+
+  void box(Box*)		;
+  void buttonbox(Box*)		;
+  void focusbox(Box*)		;
+  void glyph(GlyphStyle)	;
+  void labelfont(Font*)		;
+  void textfont(Font*)		;
+  void labeltype(LabelType*)	;
+  void color(Color)		;
+  void textcolor(Color a)	;
+  void selection_color(Color)	;
+  void selection_textcolor(Color);
+  void buttoncolor(Color)	;
+  void labelcolor(Color)	;
+  void highlight_color(Color)	;
+  void highlight_textcolor(Color);
+  void labelsize(float a)	;
+  void textsize(float a)	;
+  void leading(float a)		;
+  void scrollbar_align(unsigned char);
+  void scrollbar_width(unsigned char);
+
+#ifdef FLTK_1_WIDGET  // back-compatability section:
+
+  Box*	down_box()		const { return box(); }
+  Box*	slider()		const { return buttonbox(); }
+  Box*	box2()			const { return box(); }
+  Box*	fly_box()		const { return box(); }
+  Color	color2()		const { return selection_color(); }
+  Color	color3()		const { return buttoncolor(); }
+  Color	down_labelcolor()	const { return selection_textcolor(); }
+  Color	fly_color()		const { return highlight_color(); }
+  Color	selected_textcolor()	const { return selection_textcolor(); }
+  Color	cursor_color()		const { return selection_color(); }
+  float text_size()		const { return textsize(); }
+  float label_size()		const { return labelsize(); }
+
+  void down_box(Box* a)		{ box(a); }
+  void slider(Box* a)		{ buttonbox(a); }
+  void fly_box(Box*)		{ }
+  void color(Color a, Color b)	{ color(a); selection_color(b); }
+  void color2(Color a)		{ selection_color(a); }
+  void color3(Color a)		{ buttoncolor(a); }
+  void down_labelcolor(Color a)	{ selection_textcolor(a); }
+  void labelfont(unsigned a)	{ labelfont(font(a)); }
+  void fly_color(Color a)	{ highlight_color(a); }
+  void textfont(unsigned a)	{ textfont(font(a)); }
+  void selected_textcolor(Color a) { selection_textcolor(a); }
+  void cursor_color(Color a)	{ selection_color(a); }
+  void text_size(float n)	{ textsize(n); }
+  void label_size(float n)	{ labelsize(n); }
+
+#endif
+
+private:
+
+  const char*		label_;
+  const Symbol*		image_;
+  unsigned		flags_;
+  const Style*		style_;
+  Callback*		callback_;
+  void*			user_data_;
+  const char*		tooltip_; // make this into another widget?
+  Group*		parent_;
+  uchar			type_;
+  uchar			damage_;
+  uchar			layout_damage_;
+  uchar			when_;
+
+};
+
+enum { // Widget::when() values
+  WHEN_NEVER		= 0,
+  WHEN_CHANGED		= 1,
+  WHEN_RELEASE		= 4,
+  WHEN_RELEASE_ALWAYS	= 6,
+  WHEN_ENTER_KEY	= 8,
+  WHEN_ENTER_KEY_ALWAYS	=10,
+  WHEN_ENTER_KEY_CHANGED=11,
+  WHEN_NOT_CHANGED	= 2 // modifier bit to disable changed() test
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Widget.h 4366 2005-05-23 05:11:51Z spitzak $".
+//
Index: NonGTP/FLTK/include/fltk/Divider.h
===================================================================
--- NonGTP/FLTK/include/fltk/Divider.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/Divider.h	(revision 773)
@@ -0,0 +1,45 @@
+//
+// "$Id: Divider.h 2923 2003-01-21 07:53:39Z spitzak $"
+//
+// Widget to draw a divider line in a menu
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Divider_h
+#define fltk_Divider_h
+
+#ifndef fltk_Widget_h
+# include "Widget.h"
+#endif
+
+namespace fltk {
+
+class FL_API Divider : public Widget {
+public:
+  void draw();
+  void layout();
+  int handle(int);
+  Divider();
+};
+
+}
+
+#endif
Index: NonGTP/FLTK/include/fltk/forms.h
===================================================================
--- NonGTP/FLTK/include/fltk/forms.h	(revision 773)
+++ NonGTP/FLTK/include/fltk/forms.h	(revision 773)
@@ -0,0 +1,854 @@
+//
+// "$Id: forms.h 3887 2004-11-12 06:50:20Z spitzak $"
+//
+// Forms emulation header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef __FORMS_H__
+#define __FORMS_H__
+
+#include <fltk/Fl.h>
+#include <fltk/Fl_Group.h>
+#include <fltk/Fl_Window.h>
+#include <fltk/fl_draw.h>
+
+typedef Fl_Widget FL_OBJECT;
+typedef Fl_Window FL_FORM;
+
+////////////////////////////////////////////////////////////////
+// Random constants & symbols defined by forms.h file:
+
+#ifndef NULL
+#define NULL 0
+#endif
+#ifndef FALSE
+#define FALSE 0
+#define TRUE 1
+#endif
+
+#define FL_ON		1
+#define FL_OK		1
+#define FL_VALID	1
+#define FL_PREEMPT	1
+#define FL_AUTO		2
+#define FL_WHEN_NEEDED	FL_AUTO
+#define FL_OFF		0
+#define FL_NONE		0
+#define FL_CANCEL	0
+#define FL_INVALID	0
+#define FL_IGNORE	-1
+#define FL_CLOSE	-2
+
+#define FL_LCOL		FL_BLACK
+#define FL_COL1		FL_GRAY
+#define FL_MCOL		FL_LIGHT1
+#define FL_LEFT_BCOL	FL_LIGHT3 // 53 is better match
+#define FL_TOP_BCOL	FL_LIGHT2 // 51
+#define FL_BOTTOM_BCOL	FL_DARK2  // 40
+#define FL_RIGHT_BCOL	FL_DARK3  // 36
+#define FL_INACTIVE	FL_INACTIVE_COLOR
+#define FL_INACTIVE_COL	FL_INACTIVE_COLOR
+#define FL_FREE_COL1	FL_FREE_COLOR
+#define FL_FREE_COL2	((Fl_Color)(FL_FREE_COLOR+1))
+#define FL_FREE_COL3	((Fl_Color)(FL_FREE_COLOR+2))
+#define FL_FREE_COL4	((Fl_Color)(FL_FREE_COLOR+3))
+#define FL_FREE_COL5	((Fl_Color)(FL_FREE_COLOR+4))
+#define FL_FREE_COL6	((Fl_Color)(FL_FREE_COLOR+5))
+#define FL_FREE_COL7	((Fl_Color)(FL_FREE_COLOR+6))
+#define FL_FREE_COL8	((Fl_Color)(FL_FREE_COLOR+7))
+#define FL_FREE_COL9	((Fl_Color)(FL_FREE_COLOR+8))
+#define FL_FREE_COL10	((Fl_Color)(FL_FREE_COLOR+9))
+#define FL_FREE_COL11	((Fl_Color)(FL_FREE_COLOR+10))
+#define FL_FREE_COL12	((Fl_Color)(FL_FREE_COLOR+11))
+#define FL_FREE_COL13	((Fl_Color)(FL_FREE_COLOR+12))
+#define FL_FREE_COL14	((Fl_Color)(FL_FREE_COLOR+13))
+#define FL_FREE_COL15	((Fl_Color)(FL_FREE_COLOR+14))
+#define FL_FREE_COL16	((Fl_Color)(FL_FREE_COLOR+15))
+#define FL_TOMATO	((Fl_Color)(131))
+#define FL_INDIANRED	((Fl_Color)(164))
+#define FL_SLATEBLUE	((Fl_Color)(195))
+#define FL_DARKGOLD	((Fl_Color)(84))
+#define FL_PALEGREEN	((Fl_Color)(157))
+#define FL_ORCHID	((Fl_Color)(203))
+#define FL_DARKCYAN	((Fl_Color)(189))
+#define FL_DARKTOMATO	((Fl_Color)(113))
+#define FL_WHEAT	((Fl_Color)(174))
+
+#define FL_ALIGN_BESIDE	FL_ALIGN_INSIDE
+
+#define FL_PUP_TOGGLE	2 // FL_MENU_TOGGLE
+#define FL_PUP_INACTIVE 1 // FL_MENU_INACTIVE
+#define FL_NO_FRAME	FL_NO_BOX
+#define FL_ROUNDED3D_UPBOX 	FL_ROUND_UP_BOX
+#define FL_ROUNDED3D_DOWNBOX	FL_ROUND_DOWN_BOX
+#define FL_OVAL3D_UPBOX		FL_ROUND_UP_BOX
+#define FL_OVAL3D_DOWNBOX	FL_ROUND_DOWN_BOX
+
+#define FL_MBUTTON1	1
+#define FL_LEFTMOUSE	1
+#define FL_MBUTTON2	2
+#define FL_MIDDLEMOUSE	2
+#define FL_MBUTTON3	3
+#define FL_RIGHTMOUSE	3
+#define FL_MBUTTON4	4
+#define FL_MBUTTON5	5
+
+#define FL_INVALID_STYLE 255
+#define FL_NORMAL_STYLE	0
+#define FL_BOLD_STYLE	1
+#define FL_ITALIC_STYLE	2
+#define FL_BOLDITALIC_STYLE 3
+#define FL_FIXED_STYLE	4
+#define FL_FIXEDBOLD_STYLE 5
+#define FL_FIXEDITALIC_STYLE 6
+#define FL_FIXEDBOLDITALIC_STYLE 7
+#define FL_TIMES_STYLE	8
+#define FL_TIMESBOLD_STYLE 9
+#define FL_TIMESITALIC_STYLE 10
+#define FL_TIMESBOLDITALIC_STYLE 11
+
+// hacks to change the labeltype() when passed to fl_set_object_lstyle():
+#define FL_SHADOW_STYLE		0x100
+#define FL_ENGRAVED_STYLE	0x200
+#define FL_EMBOSSED_STYLE	0x300
+
+// size values are different from XForms, match older Forms:
+#define FL_TINY_SIZE	8
+#define FL_SMALL_SIZE	11 // 10
+#undef FL_NORMAL_SIZE
+#define FL_NORMAL_SIZE	14 // 12
+#define FL_MEDIUM_SIZE	18 // 14
+#define FL_LARGE_SIZE	24 // 18
+#define FL_HUGE_SIZE	32 // 24
+#define FL_DEFAULT_SIZE	FL_SMALL_SIZE
+#define FL_TINY_FONT	FL_TINY_SIZE
+#define FL_SMALL_FONT	FL_SMALL_SIZE
+#define FL_NORMAL_FONT	FL_NORMAL_SIZE
+#define FL_MEDIUM_FONT	FL_MEDIUM_SIZE
+#define FL_LARGE_FONT	FL_LARGE_SIZE
+#define FL_HUGE_FONT	FL_HUGE_SIZE
+#define FL_NORMAL_FONT1	FL_SMALL_FONT
+#define FL_NORMAL_FONT2	FL_NORMAL_FONT
+#define FL_DEFAULT_FONT	FL_SMALL_FONT
+
+#define FL_RETURN_END_CHANGED	FL_WHEN_RELEASE
+#define FL_RETURN_CHANGED	FL_WHEN_CHANGED
+#define FL_RETURN_END		FL_WHEN_RELEASE_ALWAYS
+#define FL_RETURN_ALWAYS	(FL_WHEN_CHANGED|FL_WHEN_NOT_CHANGED)
+
+#define FL_BOUND_WIDTH	3
+
+typedef int FL_Coord;
+typedef int FL_COLOR;
+
+////////////////////////////////////////////////////////////////
+// fltk interaction:
+
+#define FL_CMD_OPT void
+extern FL_FORMS_API void fl_initialize(int*, char*[], const char*, FL_CMD_OPT*, int);
+inline void fl_finish() {}
+
+typedef void (*FL_IO_CALLBACK) (int, void*);
+inline void fl_add_io_callback(int fd, short w, FL_IO_CALLBACK cb, void* v) {
+  Fl::add_fd(fd,w,cb,v);}
+inline void fl_remove_io_callback(int fd, short, FL_IO_CALLBACK) {
+  Fl::remove_fd(fd);} // removes all the callbacks!
+
+// type of callback is different and no "id" number is returned:
+inline void fl_add_timeout(long msec, void (*cb)(void*), void* v) {
+  Fl::add_timeout(msec*.001, (Fl_Timeout_Handler)cb, v);}
+inline void fl_remove_timeout(int) {}
+
+// type of callback is different!
+inline void fl_set_idle_callback(void (*cb)()) {Fl::set_idle(cb);}
+
+FL_FORMS_API Fl_Widget* fl_do_forms(void);
+FL_FORMS_API Fl_Widget* fl_check_forms();
+inline Fl_Widget* fl_do_only_forms(void) {return fl_do_forms();}
+inline Fl_Widget* fl_check_only_forms(void) {return fl_check_forms();}
+
+// because of new redraw behavior, these are no-ops:
+inline void fl_freeze_object(Fl_Widget*) {}
+inline void fl_unfreeze_object(Fl_Widget*) {}
+inline void fl_freeze_form(Fl_Window*) {}
+inline void fl_unfreeze_form(Fl_Window*) {}
+inline void fl_freeze_all_forms() {}
+inline void fl_unfreeze_all_forms() {}
+
+inline void fl_set_focus_object(Fl_Window*, Fl_Widget* o) {Fl::focus(o);}
+inline void fl_reset_focus_object(Fl_Widget* o) {Fl::focus(o);}
+#define fl_set_object_focus fl_set_focus_object
+
+// void fl_set_form_atclose(Fl_Window*w,int (*cb)(Fl_Window*,void*),void* v)
+// void fl_set_atclose(int (*cb)(Fl_Window*,void*),void*)
+// fl_set_form_atactivate/atdeactivate not implemented!
+
+////////////////////////////////////////////////////////////////
+// Fl_Widget:
+
+inline void fl_set_object_boxtype(Fl_Widget* o, Fl_Boxtype a) {o->box(a);}
+inline void fl_set_object_lsize(Fl_Widget* o,int s) {o->label_size(s);}
+FL_FORMS_API void fl_set_object_lstyle(Fl_Widget* o,int a);
+inline void fl_set_object_lcol(Fl_Widget* o, unsigned a) {o->label_color((Fl_Color)a);}
+#define fl_set_object_lcolor  fl_set_object_lcol
+inline void fl_set_object_lalign(Fl_Widget* o, Fl_Align a) { o->clear_flag(FL_ALIGN_MASK); o->set_flag(a);}
+#define fl_set_object_align fl_set_object_lalign
+inline void fl_set_object_color(Fl_Widget* o,unsigned a,unsigned b) {o->color((Fl_Color)a); o->selection_color((Fl_Color)b);}
+inline void fl_set_object_label(Fl_Widget* o, const char* a) {o->label(a); o->redraw();}
+inline void fl_set_object_position(Fl_Widget*o,int x,int y) {o->position(x,y);}
+inline void fl_set_object_size(Fl_Widget* o, int w, int h) {o->size(w,h);}
+inline void fl_set_object_geometry(Fl_Widget* o,int x,int y,int w,int h) {o->resize(x,y,w,h);}
+
+inline void fl_get_object_geometry(Fl_Widget* o,int*x,int*y,int*w,int*h) {
+  *x = o->x(); *y = o->y(); *w = o->w(); *h = o->h();}
+inline void fl_get_object_position(Fl_Widget* o,int*x,int*y) {
+  *x = o->x(); *y = o->y();}
+
+typedef void (*Forms_CB)(Fl_Widget*, long);
+inline void fl_set_object_callback(Fl_Widget*o,Forms_CB c,long a) {o->callback(c,a);}
+#define fl_set_call_back      fl_set_object_callback
+inline void fl_call_object_callback(Fl_Widget* o) {o->do_callback();}
+inline void fl_trigger_object(Fl_Widget* o) {o->do_callback();}
+inline void fl_set_object_return(Fl_Widget* o, int v) {
+  o->when(v|FL_WHEN_RELEASE);}
+
+inline void fl_redraw_object(Fl_Widget* o) {o->redraw();}
+inline void fl_show_object(Fl_Widget* o) {o->show();}
+inline void fl_hide_object(Fl_Widget* o) {o->hide();}
+inline void fl_free_object(Fl_Widget* x) {delete x;}
+inline void fl_delete_object(Fl_Widget* o) {((Fl_Group*)(o->parent()))->remove(*o);}
+inline void fl_activate_object(Fl_Widget* o) {o->activate();}
+inline void fl_deactivate_object(Fl_Widget* o) {o->deactivate();}
+
+inline void fl_add_object(Fl_Window* f, Fl_Widget* x) {f->add(x);}
+inline void fl_insert_object(Fl_Widget* o, Fl_Widget* b) {
+    ((Fl_Group*)(b->parent()))->insert(*o,b);}
+
+inline Fl_Window* FL_ObjWin(Fl_Widget* o) {return o->window();}
+
+////////////////////////////////////////////////////////////////
+// things that appered in the demos a lot that I don't emulate, but
+// I did not want to edit out of all the demos...
+
+inline int fl_get_border_width() {return 3;}
+inline void fl_set_border_width(int) {}
+inline void fl_set_object_dblbuffer(Fl_Widget*, int) {}
+inline void fl_set_form_dblbuffer(Fl_Window*, int) {}
+
+////////////////////////////////////////////////////////////////
+// Fl_Window:
+
+inline void fl_free_form(Fl_Window* x) {delete x;}
+inline void fl_redraw_form(Fl_Window* f) {f->redraw();}
+
+inline Fl_Window* fl_bgn_form(Fl_Boxtype b,int w,int h) {
+  Fl_Window* g = new Fl_Window(w,h,0);
+  g->box(b);
+  return g;
+}
+inline void fl_addto_form(Fl_Window* f) {f->begin();}
+inline Fl_Group* fl_bgn_group() {return new Fl_Group(0,0,0,0,0);}
+inline void fl_addto_group(Fl_Widget* o) {((Fl_Group* )o)->begin();}
+FL_FORMS_API void fl_end_group();
+FL_FORMS_API void fl_end_form();
+#define resizebox _ddfdesign_kludge()
+
+inline void fl_scale_form(Fl_Window* f, double x, double y) {
+  f->resizable(f); f->size(int(f->w()*x),int(f->h()*y));}
+inline void fl_set_form_position(Fl_Window* f,int x,int y) {f->position(x,y);}
+inline void fl_set_form_size(Fl_Window* f, int w, int h) {f->size(w,h);}
+inline void fl_set_form_geometry(Fl_Window* f,int x,int y,int w,int h) {
+  f->resize(x,y,w,h);}
+#define fl_set_initial_placement fl_set_form_geometry
+inline void fl_adjust_form_size(Fl_Window*) {}
+
+FL_FORMS_API void fl_show_form(Fl_Window* f,int p,int b,const char* n);
+enum {	// "p" argument values:
+  FL_PLACE_FREE = 0,	// make resizable
+  FL_PLACE_MOUSE = 1,	// mouse centered on form
+  FL_PLACE_CENTER = 2,	// center of the screen
+  FL_PLACE_POSITION = 4,// fixed position, resizable
+  FL_PLACE_SIZE = 8,	// fixed size, normal fltk behavior
+  FL_PLACE_GEOMETRY =16,// fixed size and position
+  FL_PLACE_ASPECT = 32,	// keep aspect ratio (ignored)
+  FL_PLACE_FULLSCREEN=64,// fill screen
+  FL_PLACE_HOTSPOT = 128,// enables hotspot
+  FL_PLACE_ICONIC = 256,// iconic (ignored)
+  FL_FREE_SIZE=(1<<14),	// force resizable
+  FL_FIX_SIZE =(1<<15)	// force off resizable
+};
+#define FL_PLACE_FREE_CENTER (FL_PLACE_CENTER|FL_FREE_SIZE)
+#define FL_PLACE_CENTERFREE  (FL_PLACE_CENTER|FL_FREE_SIZE)
+enum {	// "b" arguement values:
+  FL_NOBORDER = 0,
+  FL_FULLBORDER,
+  FL_TRANSIENT
+//FL_MODAL = (1<<8)	// not implemented yet in Forms
+};
+inline void fl_set_form_hotspot(Fl_Window* w,int x,int y) {w->hotspot(x,y);}
+inline void fl_set_form_hotobject(Fl_Window* w, Fl_Widget* o) {w->hotspot(o);}
+extern FL_FORMS_API char fl_flip;	// in forms.C
+inline void fl_flip_yorigin() {fl_flip = 1;}
+
+#define fl_prepare_form_window fl_show_form
+inline void fl_show_form_window(Fl_Window*) {}
+
+inline void fl_raise_form(Fl_Window* f) {f->show();}
+
+inline void fl_hide_form(Fl_Window* f) {f->hide();}
+inline void fl_pop_form(Fl_Window* f) {f->show();}
+
+extern FL_FORMS_API char fl_modal_next; // in forms.C
+inline void fl_activate_all_forms() {}
+inline void fl_deactivate_all_forms() {fl_modal_next = 1;}
+inline void fl_deactivate_form(Fl_Window*w) {w->deactivate();}
+inline void fl_activate_form(Fl_Window*w) {w->activate();}
+
+inline void fl_set_form_title(Fl_Window* f, const char* s) {f->label(s);}
+inline void fl_title_form(Fl_Window* f, const char* s) {f->label(s);}
+
+typedef void (*Forms_FormCB)(Fl_Widget*);
+inline void fl_set_form_callback(Fl_Window* f,Forms_FormCB c) {f->callback(c);}
+#define fl_set_form_call_back fl_set_form_callback
+
+inline void fl_init() {}
+inline void fl_set_graphics_mode(int r, int /*d*/) {
+  Fl::visual(r ? FL_RGB : FL_INDEX);
+  // d should add FL_DOUBLE, but that always fails in fltk 2.0
+}
+
+inline int fl_form_is_visible(Fl_Window* f) {return f->visible();}
+
+inline int fl_mouse_button() {return Fl::event_button();}
+#define fl_mousebutton fl_mouse_button
+
+#define fl_free       free
+#define fl_malloc     malloc
+#define fl_calloc     calloc
+#define fl_realloc    realloc
+
+////////////////////////////////////////////////////////////////
+// Drawing functions.  Only usable inside an Fl_Free object?
+
+#if 0
+inline void fl_drw_box(Fl_Boxtype b,int x,int y,int w,int h,Fl_Color bgc,int=3) {
+    b->draw(x,y,w,h,bgc);}
+inline void fl_drw_frame(Fl_Boxtype b,int x,int y,int w,int h,Fl_Color bgc,int=3) {
+    b->draw(x,y,w,h,bgc,FL_FRAME_ONLY);}
+#endif
+
+inline void fl_drw_text(Fl_Align align, int x, int y, int w, int h,
+		  Fl_Color fgcolor, int size, Fl_Font style,
+		  const char* s) {
+  fl_font(style,size);
+  fl_color(fgcolor);
+  fl_draw(s,x,y,w,h,align);
+}
+
+// this does not work except for CENTER...
+inline void fl_drw_text_beside(Fl_Align align, int x, int y, int w, int h,
+		  Fl_Color fgcolor, int size, Fl_Font style,
+		  const char* s) {
+  fl_font(style,size);
+  fl_color(fgcolor);
+  fl_draw(s,x,y,w,h,align);
+}
+
+//inline void fl_set_font_name(Fl_Font n,const char* s) {fl_set_font(n,s);}
+
+inline void fl_mapcolor(Fl_Color c, uchar r, uchar g, uchar b) {
+  fl_set_color(c,fl_rgb(r,g,b));}
+#define fl_set_clipping(x,y,w,h) fl_clip(x,y,w,h)
+#define fl_unset_clipping() fl_pop_clip()
+
+////////////////////////////////////////////////////////////////
+// Forms classes:
+
+inline Fl_Widget* fl_add_new(Fl_Widget* p) {return p;}
+inline Fl_Widget* fl_add_new(uchar t,Fl_Widget* p) {p->type(t); return p;}
+
+#define forms_constructor(type,name) \
+inline type* name(uchar t,int x,int y,int w,int h,const char* l) { \
+ return (type*)(fl_add_new(t, new type(x,y,w,h,l)));}
+#define forms_constructort(type,name) \
+inline type* name(uchar t,int x,int y,int w,int h,const char* l) { \
+ return (type*)(fl_add_new(new type(t,x,y,w,h,l)));}
+#define forms_constructorb(type,name) \
+inline type* name(Fl_Boxtype t,int x,int y,int w,int h,const char* l) { \
+ return (type*)(fl_add_new(new type(t,x,y,w,h,l)));}
+
+#include "Fl_FormsBitmap.h"
+#define FL_NORMAL_BITMAP FL_NO_BOX
+forms_constructorb(Fl_FormsBitmap, fl_add_bitmap)
+inline void fl_set_bitmap_data(Fl_Widget* o, int w, int h, const uchar* b) {
+    ((Fl_FormsBitmap*)o)->set(w,h,b);
+}
+
+#include "Fl_FormsPixmap.h"
+#define FL_NORMAL_PIXMAP FL_NO_BOX
+forms_constructorb(Fl_FormsPixmap, fl_add_pixmap)
+inline void fl_set_pixmap_data(Fl_Widget* o, char*const* b) {
+    ((Fl_FormsPixmap*)o)->set(b);
+}
+//inline void fl_set_pixmap_file(Fl_Widget*, const char*);
+inline void fl_set_pixmap_align(Fl_Widget* o,Fl_Align a,int,int) { o->clear_flag(FL_ALIGN_MASK); o->set_flag(a);}
+//inline void fl_set_pixmap_colorcloseness(int, int, int);
+
+#include <fltk/Fl_Box.h>
+forms_constructorb(Fl_Box, fl_add_box)
+
+#include <fltk/Fl_Browser.h>
+forms_constructor(Fl_Browser, fl_add_browser)
+
+inline void fl_clear_browser(Fl_Widget* o) {
+    ((Fl_Browser*)o)->clear();}
+inline void fl_add_browser_line(Fl_Widget* o, const char* s) {
+    ((Fl_Browser*)o)->add(s);}
+inline void fl_addto_browser(Fl_Widget* o, const char* s) {
+    ((Fl_Browser*)o)->add(s);} /* should also scroll to bottom */
+//inline void fl_addto_browser_chars(Fl_Widget*, const char*)
+//#define fl_append_browser fl_addto_browser_chars
+inline void fl_insert_browser_line(Fl_Widget* o, int n, const char* s) {
+    ((Fl_Browser*)o)->insert(n,s);}
+inline void fl_delete_browser_line(Fl_Widget* o, int n) {
+    ((Fl_Browser*)o)->remove(n);}
+inline void fl_replace_browser_line(Fl_Widget* o, int n, const char* s) {
+    ((Fl_Browser*)o)->replace(n,s);}
+inline char* fl_get_browser_line(Fl_Widget* o, int n) {
+    return (char*)(((Fl_Browser*)o)->text(n));}
+FL_FORMS_API int fl_load_browser(Fl_Widget* o, const char* f);
+inline void fl_select_browser_line(Fl_Widget* o, int n) {
+    ((Fl_Browser*)o)->select(n,1);}
+inline void fl_deselect_browser_line(Fl_Widget* o, int n) {
+    ((Fl_Browser*)o)->select(n,0);}
+inline void fl_deselect_browser(Fl_Widget* o) {
+    ((Fl_Browser*)o)->deselect();}
+inline int fl_isselected_browser_line(Fl_Widget* o, int n) {
+    return ((Fl_Browser*)o)->selected(n);}
+inline int fl_get_browser_topline(Fl_Widget* o) {
+    return ((Fl_Browser*)o)->topline();}
+inline int fl_get_browser(Fl_Widget* o) {
+    return ((Fl_Browser*)o)->value();}
+inline int fl_get_browser_maxline(Fl_Widget* o) {
+    return ((Fl_Browser*)o)->size();}
+//linline int fl_get_browser_screenlines(Fl_Widget*);
+inline void fl_set_browser_topline(Fl_Widget* o, int n) {
+    ((Fl_Browser*)o)->topline(n);}
+inline void fl_set_browser_fontsize(Fl_Widget* o, int s) {
+    ((Fl_Browser*)o)->text_size(s);}
+inline void fl_set_browser_fontstyle(Fl_Widget* o, int s) {
+    ((Fl_Browser*)o)->text_font(fl_fonts+s);}
+inline void fl_set_browser_specialkey(Fl_Widget* o, char c) {
+    ((Fl_Browser*)o)->format_char(c);}
+//inline void fl_set_browser_vscrollbar(Fl_Widget*, int);
+//inline void fl_set_browser_hscrollbar(Fl_Widget*, int);
+//inline void fl_set_browser_leftslider(Fl_Widget*, int);
+//#define fl_set_browser_leftscrollbar fl_set_browser_leftslider
+//inline void fl_set_browser_line_selectable(Fl_Widget*, int, int);
+//inline void fl_get_browser_dimension(Fl_Widget*,int*,int*,int*,int*);
+//inline void fl_set_browser_dblclick_callback(Fl_Widget*,FL_CALLBACKPTR,long);
+//inline void fl_set_browser_xoffset(Fl_Widget*, FL_Coord);
+//inline void fl_set_browser_scrollbarsize(Fl_Widget*, int, int);
+inline void fl_setdisplayed_browser_line(Fl_Widget* o, int n, int i) {
+    ((Fl_Browser*)o)->display(n,i);}
+inline int fl_isdisplayed_browser_line(Fl_Widget* o, int n) {
+    return ((Fl_Browser*)o)->displayed(n);}
+
+#include <fltk/Fl_Button.h>
+
+#define FL_NORMAL_BUTTON	0
+//#define FL_HIDDEN_BUTTON
+#define FL_TOUCH_BUTTON		4
+#define FL_INOUT_BUTTON		5
+#define FL_RETURN_BUTTON	6
+#define FL_HIDDEN_RET_BUTTON	7
+#define FL_PUSH_BUTTON		FL_TOGGLE_BUTTON
+#define FL_MENU_BUTTON		9
+
+FL_FORMS_API Fl_Button* fl_add_button(uchar t,int x,int y,int w,int h,const char* l);
+inline int fl_get_button(Fl_Widget* b) {return ((Fl_Button*)b)->value();}
+inline void fl_set_button(Fl_Widget* b, int v) {((Fl_Button*)b)->value(v);}
+inline int fl_get_button_numb(Fl_Widget*) {return Fl::event_button();}
+inline void fl_set_object_shortcut(Fl_Widget* b, const char* s, int=0) {
+  b->shortcut(fltk::key(s));}
+#define fl_set_button_shortcut fl_set_object_shortcut
+
+#include <fltk/Fl_Light_Button.h>
+forms_constructor(Fl_Light_Button, fl_add_lightbutton)
+
+#include <fltk/Fl_Round_Button.h>
+forms_constructor(Fl_Round_Button, fl_add_roundbutton)
+forms_constructor(Fl_Round_Button, fl_add_round3dbutton)
+
+#include <fltk/Fl_Check_Button.h>
+forms_constructor(Fl_Check_Button, fl_add_checkbutton)
+
+inline Fl_Widget* fl_add_bitmapbutton(int t,int x,int y,int w,int h,const char* l) {Fl_Widget* o = fl_add_button(t,x,y,w,h,l); return o;}
+inline void fl_set_bitmapbutton_data(Fl_Widget* o,int a,int b,uchar* c) {
+  (new Fl_Bitmap(c,a,b))->label(o);}  // does not delete old Fl_Bitmap!
+
+inline Fl_Widget* fl_add_pixmapbutton(int t,int x,int y,int w,int h,const char* l) {Fl_Widget* o = fl_add_button(t,x,y,w,h,l); return o;}
+inline void fl_set_pixmapbutton_data(Fl_Widget* o, const char*const* c) {
+  (new Fl_Pixmap(c))->label(o);}  // does not delete old Fl_Pixmap!
+
+// Fl_Canvas object not yet implemented!
+
+#include "Fl_Chart.h"
+
+forms_constructor(Fl_Chart, fl_add_chart)
+inline void fl_clear_chart(Fl_Widget* o) {
+  ((Fl_Chart*)o)->clear();}
+inline void fl_add_chart_value(Fl_Widget* o,double v,const char* s,uchar c){
+  ((Fl_Chart*)o)->add(v,s,c);}
+inline void fl_insert_chart_value(Fl_Widget* o, int i, double v, const char* s, uchar c) {
+  ((Fl_Chart*)o)->insert(i,v,s,c);}
+inline void fl_replace_chart_value(Fl_Widget* o, int i, double v, const char* s, uchar c) {
+  ((Fl_Chart*)o)->replace(i,v,s,c);}
+inline void fl_set_chart_bounds(Fl_Widget* o, double a, double b) {
+  ((Fl_Chart*)o)->bounds(a,b);}
+inline void fl_set_chart_maxnumb(Fl_Widget* o, int v) {
+  ((Fl_Chart*)o)->maxsize(v);}
+inline void fl_set_chart_autosize(Fl_Widget* o, int v) {
+  ((Fl_Chart*)o)->autosize(v);}
+inline void fl_set_chart_lstyle(Fl_Widget* o, Fl_Font v) {
+  ((Fl_Chart*)o)->text_font(v);}
+inline void fl_set_chart_lsize(Fl_Widget* o, int v) {
+  ((Fl_Chart*)o)->text_size(v);}
+inline void fl_set_chart_lcolor(Fl_Widget* o, unsigned v) {
+  ((Fl_Chart*)o)->text_color((Fl_Color)v);}
+#define fl_set_chart_lcol   fl_set_chart_lcolor
+
+#include <fltk/Fl_Choice.h>
+
+#define FL_NORMAL_CHOICE	0
+#define FL_NORMAL_CHOICE2	0
+#define FL_DROPLIST_CHOICE	0
+
+forms_constructor(Fl_Choice, fl_add_choice)
+inline void fl_clear_choice(Fl_Widget* o) {
+    ((Fl_Choice*)o)->clear();}
+inline void fl_addto_choice(Fl_Widget* o, const char* s) {
+    ((Fl_Choice*)o)->add(s);}
+inline void fl_replace_choice(Fl_Widget* o, int i, const char* s) {
+    ((Fl_Choice*)o)->replace(i-1,s);}
+inline void fl_delete_choice(Fl_Widget* o, int i) {
+    ((Fl_Choice*)o)->remove(i-1);}
+inline void fl_set_choice(Fl_Widget* o, int i) {
+    ((Fl_Choice*)o)->value(i-1);}
+// inline void fl_set_choice_text(Fl_Widget*, const char*);
+inline int fl_get_choice(Fl_Widget* o) {
+    return ((Fl_Choice*)o)->value()+1;}
+// inline const char* fl_get_choice_item_text(Fl_Widget*, int);
+// inline int fl_get_choice_maxitems(Fl_Widget*);
+inline const char* fl_get_choice_text(Fl_Widget* o) {
+    return ((Fl_Choice*)o)->text();}
+inline void fl_set_choice_fontsize(Fl_Widget* o, int x) {
+    ((Fl_Choice*)o)->text_size(x);}
+inline void fl_set_choice_fontstyle(Fl_Widget* o, Fl_Font x) {
+    ((Fl_Choice*)o)->text_font(x);}
+// inline void fl_set_choice_item_mode(Fl_Widget*, int, unsigned);
+// inline void fl_set_choice_item_shortcut(Fl_Widget*, int, const char*);
+
+#include <fltk/Fl_Clock.h>
+forms_constructor(Fl_Clock, fl_add_clock)
+inline void fl_get_clock(Fl_Widget* o, int* h, int* m, int* s) {
+    *h = ((Fl_Clock*)o)->hour();
+    *m = ((Fl_Clock*)o)->minute();
+    *s = ((Fl_Clock*)o)->second();
+}
+
+#include <fltk/Fl_Counter.h>
+forms_constructor(Fl_Counter, fl_add_counter)
+inline void fl_set_counter_value(Fl_Widget* o, double v) {
+    ((Fl_Counter*)o)->value(v);}
+inline void fl_set_counter_bounds(Fl_Widget* o, double a, double b) {
+    ((Fl_Counter*)o)->range(a,b);}
+inline void fl_set_counter_step(Fl_Widget* o, double a, double b) {
+    ((Fl_Counter*)o)->step(a / b);}
+inline void fl_set_counter_precision(Fl_Widget* o, int v) {
+//    ((Fl_Counter*)o)->precision(v);}
+    ((Fl_Counter*)o)->step(1/(10^v));}
+inline void fl_set_counter_return(Fl_Widget* o, int v) {
+    ((Fl_Counter*)o)->when(v|FL_WHEN_RELEASE);}
+inline double fl_get_counter_value(Fl_Widget* o) {
+    return ((Fl_Counter*)o)->value();}
+inline void fl_get_counter_bounds(Fl_Widget* o, float* a, float* b) {
+  *a = float(((Fl_Counter*)o)->minimum());
+  *b = float(((Fl_Counter*)o)->maximum());
+}
+//inline void fl_set_counter_filter(Fl_Widget*,const char* (*)(Fl_Widget*,double,int));
+
+// Cursor stuff cannot be emulated because it uses X stuff
+inline void fl_set_cursor(Fl_Window* w, Fl_Cursor c) {w->cursor(c);}
+#define FL_INVISIBLE_CURSOR FL_CURSOR_NONE
+#define FL_DEFAULT_CURSOR FL_CURSOR_DEFAULT
+
+#include <fltk/Fl_Dial.h>
+
+#define FL_DIAL_COL1 FL_GRAY
+#define FL_DIAL_COL2 37
+
+forms_constructor(Fl_Dial, fl_add_dial)
+inline void fl_set_dial_value(Fl_Widget* o, double v) {
+  ((Fl_Dial*)o)->value(v);}
+inline double fl_get_dial_value(Fl_Widget* o) {
+  return ((Fl_Dial*)o)->value();}
+inline void fl_set_dial_bounds(Fl_Widget* o, double a, double b) {
+  ((Fl_Dial*)o)->range(a, b);}
+inline void fl_get_dial_bounds(Fl_Widget* o, float* a, float* b) {
+  *a = float(((Fl_Dial*)o)->minimum());
+  *b = float(((Fl_Dial*)o)->maximum());
+}
+inline void fl_set_dial_return(Fl_Widget* o, int i) {
+  ((Fl_Dial*)o)->when(i|FL_WHEN_RELEASE);}
+inline void fl_set_dial_angles(Fl_Widget* o, int a, int b) {
+  ((Fl_Dial*)o)->angles(a, b);}
+//inline void fl_set_dial_cross(Fl_Widget* o, int);
+// inline void fl_set_dial_direction(Fl_Widget* o, uchar d) {
+//   ((Fl_Dial*)o)->direction(d);}
+inline void fl_set_dial_step(Fl_Widget* o, double v) {
+  ((Fl_Dial*)o)->step(v);}
+
+// Frames:
+
+inline Fl_Widget* fl_add_frame(Fl_Boxtype i,int x,int y,int w,int h,const char* l) {
+  return fl_add_box(i,x-3,y-3,w+6,h+6,l);}
+
+// labelframe nyi
+inline Fl_Widget* fl_add_labelframe(Fl_Boxtype i,int x,int y,int w,int h,const char* l) {
+  Fl_Widget* o = fl_add_box(i,x-3,y-3,w+6,h+6,l);
+  o->clear_flag(FL_ALIGN_MASK); 
+  o->set_flag(FL_ALIGN_TOP | FL_ALIGN_LEFT);
+  return o;
+}
+
+#include "Fl_Free.h"
+inline Fl_Free*
+fl_add_free(int t,double x,double y,double w,double h,const char* l,
+	    FL_HANDLEPTR hdl) {
+ return (Fl_Free*)(fl_add_new(
+   new Fl_Free(t,int(x),int(y),int(w),int(h),l,hdl)));
+}
+
+#include <fltk/fl_ask.h>
+#include <fltk/fl_show_colormap.h>
+
+inline int fl_show_question(const char* c, int = 0) {return fl_ask(c);}
+FL_FORMS_API void fl_show_message(const char *,const char *,const char *);
+FL_FORMS_API void fl_show_alert(const char *,const char *,const char *,int=0);
+FL_FORMS_API int fl_show_question(const char *,const char *,const char *);
+inline const char *fl_show_input(const char *l,const char*d=0) {return fl_input(l,d);}
+/*const*/ char *fl_show_simple_input(const char *label, const char *deflt = 0);
+int fl_show_choice(
+    const char *m1,
+    const char *m2,
+    const char *m3,
+    int numb,
+    const char *b0,
+    const char *b1,
+    const char *b2);
+
+inline void fl_set_goodies_font(int a, unsigned b) {
+  fl_message_style->label_font = fl_fonts+a;
+  fl_message_style->label_size = b;
+}
+#define fl_show_messages fl_message
+inline int fl_show_choices(const char* c,int n,const char* b1,const char* b2,
+			   const char* b3, int) {
+  return fl_show_choice(0,c,0,n,b1,b2,b3);
+}
+
+#include <fltk/filename.h>
+#include <fltk/fl_file_chooser.h>
+inline int do_matching(char* a, const char* b) {return filename_match(a,b);}
+
+// Forms-compatable file chooser (implementation in fselect.C):
+FL_FORMS_API char* fl_show_file_selector(const char* message,const char* dir,
+			    const char* pat,const char* fname);
+FL_FORMS_API char*	fl_get_directory();
+FL_FORMS_API char*	fl_get_pattern();
+FL_FORMS_API char*	fl_get_filename();
+
+#include <fltk/Fl_Input.h>
+forms_constructor(Fl_Input, fl_add_input)
+inline void fl_set_input(Fl_Widget* o, const char* v) {
+    ((Fl_Input*)o)->value(v);}
+inline void fl_set_input_return(Fl_Widget* o, int x) {
+    ((Fl_Input*)o)->when(x | FL_WHEN_RELEASE);}
+inline void fl_set_input_color(Fl_Widget* o, unsigned a, unsigned /*b*/) {
+    ((Fl_Input*)o)->text_color((Fl_Color)a);
+//  ((Fl_Input*)o)->cursor_color((Fl_Color)b);
+}
+// inline void fl_set_input_scroll(Fl_Widget*, int);
+inline void fl_set_input_cursorpos(Fl_Widget* o, int x, int /*y*/) {
+  ((Fl_Input*)o)->position(x);}
+// inline void fl_set_input_selected(Fl_Widget*, int);
+// inline void fl_set_input_selected_range(Fl_Widget*, int, int);
+// inline void fl_set_input_maxchars(Fl_Widget*, int);
+// inline void fl_set_input_format(Fl_Widget*, int, int);
+// inline void fl_set_input_hscrollbar(Fl_Widget*, int);
+// inline void fl_set_input_vscrollbar(Fl_Widget*, int);
+// inline void fl_set_input_xoffset(Fl_Widget*, int);
+// inline void fl_set_input_topline(Fl_Widget*, int);
+// inline void fl_set_input_scrollbarsize(Fl_Widget*, int, int);
+// inline int fl_get_input_topline(Fl_Widget*);
+// inline int fl_get_input_screenlines(Fl_Widget*);
+inline int fl_get_input_cursorpos(Fl_Widget* o, int*x, int*y) {
+  *x = ((Fl_Input*)o)->position(); *y = 0; return *x;}
+// inline int fl_get_input_numberoflines(Fl_Widget*);
+// inline void fl_get_input_format(Fl_Widget*, int*, int*);
+inline const char* fl_get_input(Fl_Widget* o) {return ((Fl_Input*)o)->value();}
+
+#include <fltk/Fl_Menu_Button.h>
+
+// types are not implemented, they all act like FL_PUSH_MENU:
+#define FL_TOUCH_MENU		0
+#define FL_PUSH_MENU		1
+#define FL_PULLDOWN_MENU	2
+forms_constructor(Fl_Menu_Button, fl_add_menu)
+
+inline void fl_clear_menu(Fl_Widget* o) {
+    ((Fl_Menu_Button*)o)->clear();}
+inline void fl_set_menu(Fl_Widget* o, const char* s) {
+    ((Fl_Menu_Button*)o)->clear(); ((Fl_Menu_Button*)o)->add(s);}
+inline void fl_addto_menu(Fl_Widget* o, const char* s) {
+    ((Fl_Menu_Button*)o)->add(s);}
+inline void fl_replace_menu_item(Fl_Widget* o, int i, const char* s) {
+    ((Fl_Menu_Button*)o)->replace(i-1,s);}
+inline void fl_delete_menu_item(Fl_Widget* o, int i) {
+    ((Fl_Menu_Button*)o)->remove(i-1);}
+inline void fl_set_menu_item_shortcut(Fl_Widget* o, int i, const char* s) {
+    ((Fl_Menu_Button*)o)->shortcut(i-1,fltk::key(s));}
+// inline void fl_set_menu_item_mode(Fl_Widget* o, int i, long x) {
+//     ((Fl_Menu_Button*)o)->mode(i-1,x);}
+inline void fl_show_menu_symbol(Fl_Widget*, int ) {
+/*    ((Fl_Menu_Button*)o)->show_menu_symbol(i); */}
+// inline void fl_set_menu_popup(Fl_Widget*, int);
+inline int fl_get_menu(Fl_Widget* o) {
+    return ((Fl_Menu_Button*)o)->value()+1;}
+inline const char* fl_get_menu_item_text(Fl_Widget* o, int i) {
+    return ((Fl_Menu_Button*)o)->text(i);}
+inline int fl_get_menu_maxitems(Fl_Widget* o) {
+    return ((Fl_Menu_Button*)o)->size();}
+inline int fl_get_menu_item_mode(Fl_Widget* o, int i) {
+    return ((Fl_Menu_Button*)o)->mode(i);}
+inline const char* fl_get_menu_text(Fl_Widget* o) {
+    return ((Fl_Menu_Button*)o)->text();}
+
+#include "Fl_Positioner.h"
+#define FL_NORMAL_POSITIONER	0
+forms_constructor(Fl_Positioner, fl_add_positioner)
+inline void fl_set_positioner_xvalue(Fl_Widget* o, double v) {
+    ((Fl_Positioner*)o)->xvalue(v);}
+inline double fl_get_positioner_xvalue(Fl_Widget* o) {
+    return ((Fl_Positioner*)o)->xvalue();}
+inline void fl_set_positioner_xbounds(Fl_Widget* o, double a, double b) {
+    ((Fl_Positioner*)o)->xbounds(a,b);}
+inline void fl_get_positioner_xbounds(Fl_Widget* o, float* a, float* b) {
+  *a = float(((Fl_Positioner*)o)->xminimum());
+  *b = float(((Fl_Positioner*)o)->xmaximum());
+}
+inline void fl_set_positioner_yvalue(Fl_Widget* o, double v) {
+    ((Fl_Positioner*)o)->yvalue(v);}
+inline double fl_get_positioner_yvalue(Fl_Widget* o) {
+    return ((Fl_Positioner*)o)->yvalue();}
+inline void fl_set_positioner_ybounds(Fl_Widget* o, double a, double b) {
+    ((Fl_Positioner*)o)->ybounds(a,b);}
+inline void fl_get_positioner_ybounds(Fl_Widget* o, float* a, float* b) {
+  *a = float(((Fl_Positioner*)o)->yminimum());
+  *b = float(((Fl_Positioner*)o)->ymaximum());
+}
+inline void fl_set_positioner_xstep(Fl_Widget* o, double v) {
+    ((Fl_Positioner*)o)->xstep(v);}
+inline void fl_set_positioner_ystep(Fl_Widget* o, double v) {
+    ((Fl_Positioner*)o)->ystep(v);}
+inline void fl_set_positioner_return(Fl_Widget* o, int v) {
+    ((Fl_Positioner*)o)->when(v|FL_WHEN_RELEASE);}
+
+#include <fltk/Fl_Slider.h>
+
+#define FL_HOR_BROWSER_SLIDER FL_HOR_SLIDER
+#define FL_VERT_BROWSER_SLIDER FL_VERT_SLIDER
+
+forms_constructor(Fl_Slider, fl_add_slider)
+#define FL_SLIDER_COL1 FL_GRAY
+inline void fl_set_slider_value(Fl_Widget* o, double v) {
+    ((Fl_Slider*)o)->value(v);}
+inline double fl_get_slider_value(Fl_Widget* o) {
+    return ((Fl_Slider*)o)->value();}
+inline void fl_set_slider_bounds(Fl_Widget* o, double a, double b) {
+    ((Fl_Slider*)o)->range(a, b);}
+inline void fl_get_slider_bounds(Fl_Widget* o, float* a, float* b) {
+  *a = float(((Fl_Slider*)o)->minimum());
+  *b = float(((Fl_Slider*)o)->maximum());
+}
+inline void fl_set_slider_return(Fl_Widget* o, int i) {
+    ((Fl_Slider*)o)->when(i|FL_WHEN_RELEASE);}
+inline void fl_set_slider_step(Fl_Widget* o, double v) {
+    ((Fl_Slider*)o)->step(v);}
+// inline void fl_set_slider_increment(Fl_Widget* o, double v, double);
+inline void fl_set_slider_size(Fl_Widget* o, double v) {
+    ((Fl_Slider*)o)->slider_size(v);}
+
+#include <fltk/Fl_Value_Slider.h>
+forms_constructor(Fl_Value_Slider, fl_add_valslider)
+
+inline void fl_set_slider_precision(Fl_Widget* o, int i) {
+  double v = 1.0;
+  while (i--) v /= 10.0;
+  ((Fl_Value_Slider*)o)->step(v);
+}
+
+// The forms text object was the same as an Fl_Box except it inverted the
+// meaning of FL_ALIGN_INSIDE.  Implementation in forms.C
+class FL_FORMS_API Fl_FormsText : public Fl_Widget {
+protected:
+    void draw();
+public:
+    Fl_FormsText(Fl_Boxtype b, int x, int y, int w, int h, const char* l=0)
+	: Fl_Widget(x,y,w,h,l) {box(b); clear_flag(FL_ALIGN_MASK); set_flag(FL_ALIGN_LEFT);}
+};
+#define FL_NORMAL_TEXT FL_NO_BOX
+forms_constructorb(Fl_FormsText, fl_add_text)
+
+#include "Fl_Timer.h"
+forms_constructort(Fl_Timer, fl_add_timer)
+inline void fl_set_timer(Fl_Widget* o, double v) {((Fl_Timer*)o)->value(v);}
+inline double fl_get_timer(Fl_Widget* o) {return ((Fl_Timer*)o)->value();}
+inline void fl_suspend_timer(Fl_Widget* o) {((Fl_Timer*)o)->suspended(1);}
+inline void fl_resume_timer(Fl_Widget* o) {((Fl_Timer*)o)->suspended(0);}
+inline void fl_set_timer_countup(Fl_Widget* o,char d) {((Fl_Timer*)o)->direction(d);}
+FL_FORMS_API void fl_gettime(long* sec, long* usec);
+
+// Fl_XYPlot nyi
+
+
+// stuff from DDForms:
+
+inline int fl_double_click() {return Fl::event_clicks();}
+inline void fl_draw() {Fl::flush();}
+
+#endif	/* define __FORMS_H__ */
+
+//
+// End of "$Id: forms.h 3887 2004-11-12 06:50:20Z spitzak $".
+//
Index: NonGTP/FLTK/include/FL/Fl_Check_Button.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Check_Button.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Check_Button.H	(revision 773)
@@ -0,0 +1,8 @@
+#ifndef Fl_Check_Button_H
+#define Fl_Check_Button_H
+
+#include <fltk/CheckButton.h>
+typedef fltk::CheckButton Fl_Check_Button;
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Single_Window.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Single_Window.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Single_Window.H	(revision 773)
@@ -0,0 +1,8 @@
+#ifndef Fl_Single_Window_H
+#define Fl_Single_Window_H
+
+#include "Fl_Window.H"
+typedef Fl_Window Fl_Single_Window;
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Int_Input.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Int_Input.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Int_Input.H	(revision 773)
@@ -0,0 +1,8 @@
+#ifndef Fl_Int_Input_H
+#define Fl_Int_Input_H
+
+#include <fltk/IntInput.h>
+typedef fltk::IntInput Fl_Int_Input;
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Text_Buffer.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Text_Buffer.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Text_Buffer.H	(revision 773)
@@ -0,0 +1,8 @@
+#ifndef Fl_Text_Buffer_H
+#define Fl_Text_Buffer_H
+
+#include "Fl_Widget.H"
+#include <fltk/TextBuffer.h>
+typedef fltk::TextBuffer Fl_Text_Buffer;
+
+#endif
Index: NonGTP/FLTK/include/FL/Fl_Value_Slider.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Value_Slider.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Value_Slider.H	(revision 773)
@@ -0,0 +1,14 @@
+#ifndef Fl_Value_Slider_H
+#define Fl_Value_Slider_H
+
+#include "Fl_Slider.H"
+#include <fltk/ValueSlider.h>
+
+class Fl_Value_Slider : public fltk::ValueSlider {
+public:
+  Fl_Value_Slider(int x, int y, int w, int h, const char*l = 0)
+    : fltk::ValueSlider(x,y,w,h,l) {set_vertical();}
+};
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Counter.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Counter.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Counter.H	(revision 773)
@@ -0,0 +1,15 @@
+#ifndef Fl_Counter_H
+#define Fl_Counter_H
+
+#include <fltk/ValueInput.h>
+class Fl_Counter : public fltk::ValueInput {
+public:
+  Fl_Counter(int x, int y, int w, int h, const char* l = 0)
+    : fltk::ValueInput(x,y,w,h,l) {align(fltk::ALIGN_BOTTOM);}
+};
+
+// these don't do anything:
+#define FL_NORMAL_COUNTER	0
+#define FL_SIMPLE_COUNTER	1
+
+#endif
Index: NonGTP/FLTK/include/FL/gl.h
===================================================================
--- NonGTP/FLTK/include/FL/gl.h	(revision 773)
+++ NonGTP/FLTK/include/FL/gl.h	(revision 773)
@@ -0,0 +1,19 @@
+#ifndef FL_gl_H
+#define FL_gl_H
+
+#include <fltk/gl.h>
+
+#define gl_start	fltk::glstart
+#define	gl_finish	fltk::glfinish
+#define gl_color	fltk::glsetcolor
+#define	gl_rect		fltk::glstrokerect
+#define gl_rectf	fltk::glfillrect
+#define gl_font		fltk::glsetfont
+inline float gl_height() {return fltk::glgetascent()+fltk::glgetdescent();}
+#define gl_descent	fltk::glgetdescent
+#define gl_width	fltk::glgetwidth
+#define gl_draw		fltk::gldrawtext
+//void gl_measure(const char*, int& x, int& y);
+#define gl_draw_image	fltk::gldrawimage
+
+#endif // !FL_gl_H
Index: NonGTP/FLTK/include/FL/Fl_Select_Browser.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Select_Browser.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Select_Browser.H	(revision 773)
@@ -0,0 +1,8 @@
+#ifndef Fl_Select_Browser_H
+#define Fl_Select_Browser_H
+
+#include "Fl_Browser.H"
+typedef Fl_Browser Fl_Select_Browser;
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Slider.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Slider.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Slider.H	(revision 773)
@@ -0,0 +1,24 @@
+#ifndef Fl_Slider_H
+#define Fl_Slider_H
+
+#include "Fl_Widget.H"
+#define FLTK_1_SLIDER 1
+#include <fltk/Slider.h>
+
+class Fl_Slider : public fltk::Slider {
+public:
+  Fl_Slider(int x, int y, int w, int h, const char*l = 0)
+    : fltk::Slider(x,y,w,h,l) {set_vertical();}
+};
+
+enum {
+  FL_VERT_SLIDER	= fltk::Slider::LINEAR,
+  FL_HOR_SLIDER		= fltk::Slider::HORIZONTAL,
+  FL_VERT_FILL_SLIDER	= fltk::Slider::FILL,
+  FL_HOR_FILL_SLIDER	= fltk::Slider::HORIZONTAL+fltk::Slider::FILL,
+  FL_VERT_NICE_SLIDER	= fltk::Slider::LINEAR,
+  FL_HOR_NICE_SLIDER	= fltk::Slider::HORIZONTAL
+};
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Browser.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Browser.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Browser.H	(revision 773)
@@ -0,0 +1,24 @@
+#ifndef Fl_Browser_H
+#define Fl_Browser_H
+
+#include "Fl_Scrollbar.H"
+#include "Fl_Menu_.H"
+#include <fltk/Browser.h>
+class Fl_Browser : public fltk::Browser {
+public:
+  Fl_Browser(int x, int y, int w, int h, const char* l = 0)
+    :fltk::Browser(x,y,w,h,l) {}
+
+  void make_visible(int n) {goto_index(n); make_item_visible();}
+  bool load(const char* fname) {/* NYI */ return true;}
+  void position(int y) {goto_position(y);}
+};
+
+enum {
+  FL_NORMAL_BROWSER	= fltk::Browser::NORMAL,
+  FL_SELECT_BROWSER	= fltk::Browser::NORMAL,
+  FL_HOLD_BROWSER	= fltk::Browser::NORMAL,
+  FL_MULTI_BROWSER	= fltk::Browser::MULTI
+};
+
+#endif
Index: NonGTP/FLTK/include/FL/fl_message.H
===================================================================
--- NonGTP/FLTK/include/FL/fl_message.H	(revision 773)
+++ NonGTP/FLTK/include/FL/fl_message.H	(revision 773)
@@ -0,0 +1,1 @@
+#include "fl_ask.H"
Index: NonGTP/FLTK/include/FL/Fl_Hor_Value_Slider.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Hor_Value_Slider.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Hor_Value_Slider.H	(revision 773)
@@ -0,0 +1,8 @@
+#ifndef Fl_Hor_Value_Slider_H
+#define Fl_Hor_Value_Slider_H
+
+#include "Fl_Value_Slider.H"
+typedef fltk::ValueSlider Fl_Hor_Value_Slider;
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Enumerations.H
===================================================================
--- NonGTP/FLTK/include/FL/Enumerations.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Enumerations.H	(revision 773)
@@ -0,0 +1,357 @@
+//
+// "$Id: Enumerations.H 3184 2003-12-13 11:06:54Z spitzak $"
+//
+// Enumerations for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef Fl_Enumerations_H
+#define Fl_Enumerations_H
+
+# include <fltk/FL_API.h>
+# include <fltk/FL_VERSION.h>
+
+enum Fl_Event {	// these should match fltk/events.h
+  FL_NO_EVENT		= 0,
+  FL_PUSH		= 1,
+  FL_RELEASE		= 2,
+  FL_ENTER		= 3,
+  FL_LEAVE		= 4,
+  FL_DRAG		= 5,
+  FL_FOCUS		= 6,
+  FL_UNFOCUS		= 7,
+  FL_KEYDOWN		= 8,
+  FL_KEYBOARD		= FL_KEYDOWN,
+  FL_KEYUP		= 9,
+  //FL_CLOSE		= 10, // not in fltk2.0
+  FL_MOVE		= 11,
+  FL_SHORTCUT		= 12,
+  FL_DEACTIVATE		= 13,
+  FL_ACTIVATE		= 14,
+  FL_HIDE		= 15,
+  FL_SHOW		= 16,
+  FL_PASTE		= 17,
+  //FL_SELECTIONCLEAR	= 18, // not in fltk2.0
+  FL_MOUSEWHEEL		= 19,
+  FL_DND_ENTER		= 20,
+  FL_DND_DRAG		= 21,
+  FL_DND_LEAVE		= 22,
+  FL_DND_RELEASE	= 23
+};
+
+enum Fl_When { // These should match values in fltk/Widget.h
+  FL_WHEN_NEVER		= 0,
+  FL_WHEN_CHANGED	= 1,
+  FL_WHEN_RELEASE	= 4,
+  FL_WHEN_RELEASE_ALWAYS= 6,
+  FL_WHEN_ENTER_KEY	= 8,
+  FL_WHEN_ENTER_KEY_ALWAYS=10,
+  FL_WHEN_ENTER_KEY_CHANGED=11,
+  FL_WHEN_NOT_CHANGED	= 2 // modifier bit to disable changed() test
+};
+
+// These should match symbols in fltk/events.h:
+#define FL_Button	0 // old value was 0xfee8
+#define FL_LEFT_MOUSE	1
+#define FL_MIDDLE_MOUSE	2
+#define FL_RIGHT_MOUSE	3
+#define FL_BackSpace	0xff08
+#define FL_Tab		0xff09
+#define FL_Enter	0xff0d
+#define FL_Pause	0xff13
+#define FL_Scroll_Lock	0xff14
+#define FL_Escape	0xff1b
+#define FL_Home		0xff50
+#define FL_Left		0xff51
+#define FL_Up		0xff52
+#define FL_Right	0xff53
+#define FL_Down		0xff54
+#define FL_Page_Up	0xff55
+#define FL_Page_Down	0xff56
+#define FL_End		0xff57
+#define FL_Print	0xff61
+#define FL_Insert	0xff63
+#define FL_Menu		0xff67 // the "menu/apps" key on XFree86
+#define FL_Help		0xff68 // the 'help' key on Mac keyboards
+#define FL_Num_Lock	0xff7f
+#define FL_KP		0xff80 // use FL_KP+'x' for 'x' on numeric keypad
+#define FL_KP_Enter	0xff8d // same as Fl_KP+'\r'
+#define FL_KP_Last	0xffbd // use to range-check keypad
+#define FL_F		0xffbd // use FL_F+n for function key n
+#define FL_F_Last	0xffe0 // use to range-check function keys
+#define FL_Shift_L	0xffe1
+#define FL_Shift_R	0xffe2
+#define FL_Control_L	0xffe3
+#define FL_Control_R	0xffe4
+#define FL_Caps_Lock	0xffe5
+#define FL_Meta_L	0xffe7
+#define FL_Meta_R	0xffe8
+#define FL_Alt_L	0xffe9
+#define FL_Alt_R	0xffea
+#define FL_Delete	0xffff
+
+#define FL_SHIFT	0x00010000
+#define FL_CAPS_LOCK	0x00020000
+#define FL_CTRL		0x00040000
+#define FL_ALT		0x00080000
+#define FL_NUM_LOCK	0x00100000 // most X servers do this?
+#define FL_META		0x00400000
+#define FL_SCROLL_LOCK	0x00800000
+#define FL_BUTTON1	0x01000000
+#define FL_BUTTON2	0x02000000
+#define FL_BUTTON3	0x04000000
+#define FL_BUTTONS	0x7f000000 // All possible buttons
+#define FL_BUTTON(n)	(0x00800000<<(n))
+
+#ifdef __APPLE__
+#  define FL_COMMAND	FL_META
+#else
+#  define FL_COMMAND	FL_CTRL
+#endif // __APPLE__
+
+#include <fltk/Style.h>
+
+typedef fltk::Box* Fl_Boxtype;
+
+// Box types. Many of the FRAME types are deleted in fltk2.0, these have
+// been replaced with the equivalent BOX which draws it's inner area:
+#define FL_NO_BOX		fltk::NO_BOX
+#define FL_FLAT_BOX		fltk::FLAT_BOX
+#define FL_UP_BOX		fltk::UP_BOX
+#define FL_DOWN_BOX		fltk::DOWN_BOX
+#define FL_UP_FRAME		fltk::UP_BOX //
+#define FL_DOWN_FRAME		fltk::DOWN_BOX //
+#define FL_THIN_UP_BOX		fltk::THIN_UP_BOX
+#define FL_THIN_DOWN_BOX	fltk::THIN_DOWN_BOX
+#define FL_THIN_UP_FRAME	fltk::THIN_UP_BOX //
+#define FL_THIN_DOWN_FRAME	fltk::THIN_DOWN_BOX //
+#define FL_ENGRAVED_BOX		fltk::ENGRAVED_BOX
+#define FL_EMBOSSED_BOX		fltk::EMBOSSED_BOX
+#define FL_ENGRAVED_FRAME	fltk::ENGRAVED_BOX //
+#define FL_EMBOSSED_FRAME	fltk::EMBOSSED_BOX //
+#define FL_BORDER_BOX		fltk::BORDER_BOX
+#define FL_SHADOW_BOX		fltk::SHADOW_BOX
+#define FL_BORDER_FRAME		fltk::BORDER_FRAME
+#define FL_SHADOW_FRAME		fltk::SHADOW_BOX //
+#define FL_ROUNDED_BOX		fltk::ROUNDED_BOX
+#define FL_RSHADOW_BOX		fltk::RSHADOW_BOX
+#define FL_ROUNDED_FRAME	fltk::ROUNDED_BOX //
+#define FL_RFLAT_BOX		fltk::RFLAT_BOX
+#define FL_ROUND_UP_BOX		fltk::ROUND_UP_BOX
+#define FL_ROUND_DOWN_BOX	fltk::ROUND_DOWN_BOX
+#define FL_DIAMOND_UP_BOX	fltk::DIAMOND_UP_BOX
+#define FL_DIAMOND_DOWN_BOX	fltk::DIAMOND_DOWN_BOX
+#define FL_OVAL_BOX		fltk::OVAL_BOX
+#define FL_OSHADOW_BOX		fltk::OSHADOW_BOX
+#define FL_OVAL_FRAME		fltk::OVAL_BOX //
+#define FL_OFLAT_BOX		fltk::OFLAT_BOX
+#define FL_PLASTIC_UP_BOX	fltk::PLASTIC_UP_BOX
+#define FL_PLASTIC_DOWN_BOX	fltk::PLASTIC_DOWN_BOX
+#define FL_PLASTIC_UP_FRAME	fltk::PLASTIC_UP_BOX //
+#define FL_PLASTIC_DOWN_FRAME	fltk::PLASTIC_DOWN_BOX //
+//#define FL_FREE_BOXTYPE not used in fltk 2.0
+
+// conversions of box types to other boxtypes:
+//inline Fl_Boxtype fl_down(Fl_Boxtype b) // not implemented
+//inline Fl_Boxtype fl_frame(Fl_Boxtype b)
+
+// back-compatability box types:
+#define FL_FRAME		FL_ENGRAVED_FRAME
+#define FL_FRAME_BOX		FL_ENGRAVED_BOX
+#define FL_CIRCLE_BOX		FL_ROUND_DOWN_BOX
+#define FL_DIAMOND_BOX		FL_DIAMOND_DOWN_BOX
+
+// labeltypes:
+#define FL_NO_LABEL		fltk::NO_LABEL
+#define FL_NORMAL_LABEL		fltk::NORMAL_LABEL
+#define FL_SHADOW_LABEL		fltk::SHADOW_LABEL
+#define FL_ENGRAVED_LABEL	fltk::ENGRAVED_LABEL
+#define FL_EMBOSSED_LABEL	fltk::EMBOSSED_LABEL
+//#define FL_FREE_LABELTYPE not used in fltk2.0
+#define FL_SYMBOL_LABEL		FL_NORMAL_LABEL
+
+#define Fl_Align		fltk::Flags
+enum {
+  FL_ALIGN_CENTER		= 0,
+  FL_ALIGN_TOP			= fltk::ALIGN_TOP,
+  FL_ALIGN_BOTTOM		= fltk::ALIGN_BOTTOM,
+  FL_ALIGN_LEFT			= fltk::ALIGN_LEFT,
+  FL_ALIGN_RIGHT		= fltk::ALIGN_RIGHT,
+  FL_ALIGN_INSIDE		= fltk::ALIGN_INSIDE,
+  FL_ALIGN_TEXT_OVER_IMAGE	= fltk::ALIGN_BOTTOM|fltk::ALIGN_INSIDE, //
+  FL_ALIGN_IMAGE_OVER_TEXT	= 0,
+  FL_ALIGN_CLIP			= fltk::ALIGN_CLIP,
+  FL_ALIGN_WRAP			= fltk::ALIGN_WRAP,
+  FL_ALIGN_MASK			= fltk::ALIGN_MASK,
+  FL_ALIGN_TOP_LEFT		= FL_ALIGN_TOP | FL_ALIGN_LEFT,
+  FL_ALIGN_TOP_RIGHT		= FL_ALIGN_TOP | FL_ALIGN_RIGHT,
+  FL_ALIGN_BOTTOM_LEFT		= FL_ALIGN_BOTTOM | FL_ALIGN_LEFT,
+  FL_ALIGN_BOTTOM_RIGHT		= FL_ALIGN_BOTTOM | FL_ALIGN_RIGHT,
+  FL_ALIGN_LEFT_TOP		= FL_ALIGN_TOP_LEFT,
+  FL_ALIGN_RIGHT_TOP		= FL_ALIGN_TOP_RIGHT,
+  FL_ALIGN_LEFT_BOTTOM		= FL_ALIGN_BOTTOM_LEFT,
+  FL_ALIGN_RIGHT_BOTTOM		= FL_ALIGN_BOTTOM_RIGHT,
+  FL_ALIGN_NOWRAP		= 0
+};
+
+#define FL_HELVETICA		fltk::HELVETICA
+#define FL_HELVETICA_BOLD	fltk::HELVETICA_BOLD
+#define FL_HELVETICA_ITALIC	fltk::HELVETICA_ITALIC
+#define FL_HELVETICA_BOLD_ITALIC fltk::HELVETICA_BOLD_ITALIC
+#define FL_COURIER		fltk::COURIER
+#define FL_COURIER_BOLD		fltk::COURIER_BOLD
+#define FL_COURIER_ITALIC	fltk::COURIER_ITALIC
+#define FL_COURIER_BOLD_ITALIC	fltk::COURIER_BOLD_ITALIC
+#define FL_TIMES		fltk::TIMES
+#define FL_TIMES_BOLD		fltk::TIMES_BOLD
+#define FL_TIMES_ITALIC		fltk::TIMES_ITALIC
+#define FL_TIMES_BOLD_ITALIC	fltk::TIMES_BOLD_ITALIC
+#define FL_SYMBOL		fltk::SYMBOL_FONT
+#define FL_SCREEN		fltk::SCREEN_FONT
+#define FL_SCREEN_BOLD		fltk::SCREEN_BOLD_FONT
+#define FL_ZAPF_DINGBATS	fltk::ZAPF_DINGBATS
+//#define FL_FREE_FONT
+// These used to be added to the above fonts but were sometimes used alone
+// because FL_HELVETICA was zero. Only using these by themselves works now:
+#define FL_BOLD			fltk::HELVETICA_BOLD
+#define FL_ITALIC		fltk::HELVETICA_ITALIC
+
+#define FL_NORMAL_SIZE (fltk::Widget::default_style->label_size_)
+#define FL_FOREGROUND_COLOR (fltk::Widget::default_style->label_color_)
+#define FL_BACKGROUND2_COLOR (fltk::Widget::default_style->color_)
+#define FL_SELECTION_COLOR (fltk::Widget::default_style->selection_color_)
+
+#define Fl_Color	fltk::Color
+enum {
+  FL_GRAY0		= fltk::GRAY00,
+  FL_DARK3		= fltk::GRAY33,
+  FL_DARK2		= fltk::GRAY60,
+  FL_DARK1		= fltk::GRAY66,
+  FL_GRAY		= fltk::GRAY75,
+  FL_BACKGROUND_COLOR	= fltk::GRAY75,
+  FL_LIGHT1		= fltk::GRAY85,
+  FL_LIGHT2		= fltk::GRAY90,
+  FL_LIGHT3		= fltk::GRAY99,
+
+  FL_BLACK		= fltk::BLACK,
+  FL_RED		= fltk::RED,
+  FL_GREEN		= fltk::GREEN,
+  FL_YELLOW		= fltk::YELLOW,
+  FL_BLUE		= fltk::BLUE,
+  FL_MAGENTA		= fltk::MAGENTA,
+  FL_CYAN		= fltk::CYAN,
+  FL_DARK_RED		= 72,
+
+  FL_DARK_GREEN		= 60,
+  FL_DARK_YELLOW	= 76,
+  FL_DARK_BLUE		= 136,
+  FL_DARK_MAGENTA	= 152,
+  FL_DARK_CYAN		= 140,
+
+  FL_WHITE		= fltk::WHITE,
+
+  FL_FREE_COLOR		= 16,
+  FL_NUM_FREE_COLOR	= 16,
+  FL_GRAY_RAMP		= fltk::GRAY00,
+  FL_NUM_GRAY		= 24,
+  FL_COLOR_CUBE		= fltk::BLACK,
+  FL_NUM_RED		= 5,
+  FL_NUM_GREEN		= 8,
+  FL_NUM_BLUE		= 5
+};
+
+#define fl_inactive(c)		fltk::inactive(c)
+#define fl_contrast(a,b)	fltk::contrast(a,b)
+#define fl_color_average(a,b,c)	fltk::lerp(b,a,c)
+#define fl_lighter(c)		fltk::lerp(fltk::WHITE,c,.67f)
+#define fl_darker(c)		fltk::lerp(fltk::BLACK,c,.67f)
+#define fl_rgb_color		fltk::color
+#define fl_gray_ramp(i)		(fltk::GRAY00+(i))
+#define fl_color_cube(r,g,b)	(((b)*5+(r))*8+(g)+fltk::BLACK)
+
+#include <fltk/Cursor.h>
+#define Fl_Cursor		fltk::Cursor*
+#define FL_CURSOR_DEFAULT	fltk::CURSOR_DEFAULT
+#define FL_CURSOR_ARROW		fltk::CURSOR_ARROW
+#define FL_CURSOR_CROSS		fltk::CURSOR_CROSS
+#define FL_CURSOR_WAIT		fltk::CURSOR_WAIT
+#define FL_CURSOR_INSERT	fltk::CURSOR_INSERT
+#define FL_CURSOR_HAND		fltk::CURSOR_HAND
+#define FL_CURSOR_HELP		fltk::CURSOR_HELP
+#define FL_CURSOR_MOVE		fltk::CURSOR_MOVE
+#define FL_CURSOR_NS		fltk::CURSOR_NS
+#define FL_CURSOR_WE		fltk::CURSOR_WE
+#define FL_CURSOR_NWSE		fltk::CURSOR_NWSE
+#define FL_CURSOR_NESW		fltk::CURSOR_NESW
+#define FL_CURSOR_NO		fltk::CURSOR_NO
+#define FL_CURSOR_NONE		fltk::CURSOR_NONE
+#define FL_CURSOR_N		fltk::CURSOR_NS
+#define FL_CURSOR_NE		fltk::CURSOR_NESW
+#define FL_CURSOR_E		fltk::CURSOR_WE
+#define FL_CURSOR_SE		fltk::CURSOR_NWSE
+#define FL_CURSOR_S		fltk::CURSOR_NS
+#define FL_CURSOR_SW		fltk::CURSOR_NESW
+#define FL_CURSOR_W		fltk::CURSOR_WE
+#define FL_CURSOR_NW		fltk::CURSOR_NWSE
+
+enum { // must match values in fltk/run.h
+  FL_READ = 1,
+  FL_WRITE = 4,
+  FL_EXCEPT = 8
+};
+
+enum Fl_Mode { // must match values in fltk/visual.h
+  FL_RGB	= 0,
+  FL_INDEX	= 1,
+  FL_SINGLE	= 0,
+  FL_DOUBLE	= 2,
+  FL_ACCUM	= 4,
+  FL_ALPHA	= 8,
+  FL_DEPTH	= 16,
+  FL_STENCIL	= 32,
+  FL_RGB8	= 64,
+  FL_MULTISAMPLE= 128,
+  FL_STEREO     = 256,
+  FL_FAKE_SINGLE = 512	// Fake single buffered windows using double-buffer
+};
+
+#include <fltk/damage.h>
+enum Fl_Damage {
+  FL_DAMAGE_CHILD    = fltk::DAMAGE_CHILD,
+  FL_DAMAGE_EXPOSE   = fltk::DAMAGE_EXPOSE,
+  FL_DAMAGE_SCROLL   = fltk::DAMAGE_SCROLL,
+  FL_DAMAGE_OVERLAY  = fltk::DAMAGE_OVERLAY,
+  FL_DAMAGE_ALL      = fltk::DAMAGE_ALL
+};
+
+// FLTK 1.0.x compatibility definitions...
+#  ifdef FLTK_1_0_COMPAT
+#    define contrast	fl_contrast
+#    define down	fl_down
+#    define frame	fl_frame
+#    define inactive	fl_inactive
+#  endif // FLTK_1_0_COMPAT
+
+#endif
+
+//
+// End of "$Id: Enumerations.H 3184 2003-12-13 11:06:54Z spitzak $".
+//
Index: NonGTP/FLTK/include/FL/Fl_Tabs.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Tabs.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Tabs.H	(revision 773)
@@ -0,0 +1,15 @@
+#ifndef Fl_Tabs_H
+#define Fl_Tabs_H
+
+#include "Fl_Group.H"
+#include <fltk/TabGroup.h>
+
+class Fl_Tabs : public fltk::TabGroup {
+
+public:
+  Fl_Tabs(int x, int y, int w, int h, const char*l = 0)
+    : fltk::TabGroup(x,y,w,h,l) {begin();}
+};
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Hor_Slider.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Hor_Slider.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Hor_Slider.H	(revision 773)
@@ -0,0 +1,8 @@
+#ifndef Fl_Hor_Slider_H
+#define Fl_Hor_Slider_H
+
+#include "Fl_Slider.H"
+typedef fltk::Slider Fl_Hor_Slider;
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Text_Editor.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Text_Editor.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Text_Editor.H	(revision 773)
@@ -0,0 +1,9 @@
+#ifndef Fl_Text_Editor_H
+#define Fl_Text_Editor_H
+
+#include "Fl_Text_Buffer.H"
+#include <fltk/TextEditor.h>
+typedef fltk::TextEditor Fl_Text_Editor;
+#define Style_Table_Entry StyleTableEntry
+
+#endif
Index: NonGTP/FLTK/include/FL/Fl_Value_Input.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Value_Input.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Value_Input.H	(revision 773)
@@ -0,0 +1,7 @@
+#ifndef Fl_Value_Input_H
+#define Fl_Value_Input_H
+
+#include <fltk/ValueInput.h>
+typedef fltk::ValueInput Fl_Value_Input;
+
+#endif
Index: NonGTP/FLTK/include/FL/Fl_Value_Output.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Value_Output.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Value_Output.H	(revision 773)
@@ -0,0 +1,11 @@
+#ifndef Fl_Value_Output_H
+#define Fl_Value_Output_H
+
+// The fltk1.1 allowed the user to change the value by dragging the mouse.
+// The fltk2.0 version is strictly for displaying a numeric value.
+// If you want the user to be able to change it, replace with a Value_Input.
+
+#include <fltk/ValueOutput.h>
+typedef fltk::ValueOutput Fl_Value_Output;
+
+#endif
Index: NonGTP/FLTK/include/FL/Fl_Group.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Group.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Group.H	(revision 773)
@@ -0,0 +1,16 @@
+#ifndef Fl_Group_H
+#define Fl_Group_H
+
+#include "Fl_Widget.H"
+#include <fltk/Group.h>
+
+class Fl_Group : public fltk::Group {
+
+public:
+  Fl_Group(int x, int y, int w, int h, const char*l = 0)
+    : fltk::Group(x,y,w,h,l) {begin();}
+  static Fl_Group* current() {return (Fl_Group*)(fltk::Group::current());}
+};
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Valuator.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Valuator.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Valuator.H	(revision 773)
@@ -0,0 +1,12 @@
+#ifndef Fl_Valuator_H
+#define Fl_Valuator_H
+
+#include <fltk/Valuator.h>
+#define Fl_Valuator fltk::Valuator
+
+enum {
+  FL_VERTICAL		= 0,
+  FL_HORIZONTAL		= 1
+};
+
+#endif
Index: NonGTP/FLTK/include/FL/Fl_Tile.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Tile.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Tile.H	(revision 773)
@@ -0,0 +1,15 @@
+#ifndef Fl_Tile_H
+#define Fl_Tile_H
+
+#include "Fl_Widget.H"
+#include <fltk/TiledGroup.h>
+
+class Fl_Tile : public fltk::TiledGroup {
+
+public:
+  Fl_Tile(int x, int y, int w, int h, const char*l = 0)
+    : fltk::TiledGroup(x,y,w,h,l) {begin();}
+};
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Scroll.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Scroll.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Scroll.H	(revision 773)
@@ -0,0 +1,15 @@
+#ifndef Fl_Scroll_H
+#define Fl_Scroll_H
+
+#include "Fl_Group.H"
+#include <fltk/ScrollGroup.h>
+
+class Fl_Scroll : public fltk::ScrollGroup {
+
+public:
+  Fl_Scroll(int x, int y, int w, int h, const char*l = 0)
+    : fltk::ScrollGroup(x,y,w,h,l) {begin();}
+};
+
+#endif
+
Index: NonGTP/FLTK/include/FL/filename.H
===================================================================
--- NonGTP/FLTK/include/FL/filename.H	(revision 773)
+++ NonGTP/FLTK/include/FL/filename.H	(revision 773)
@@ -0,0 +1,21 @@
+#ifndef fl_filename_H
+#define fl_filename_H
+
+#include <fltk/filename.h>
+#include <string.h>
+
+#define fl_filename_name	filename_name
+#define fl_filename_ext		filename_ext
+#define fl_filename_match	filename_match
+#define fl_filename_isdir	filename_isdir
+#define fl_filename_list	filename_list
+
+inline char *fl_filename_setext(char * name, const char *ext) {
+  strcpy(filename_ext(name), ext ? ext : "");
+  return name;
+}
+#define FL_PATH_MAX PATH_MAX // all buffers are assummed to be at least this long
+FL_API bool fl_filename_expand(char *, const char *from);
+FL_API bool fl_filename_absolute(char *, const char *from, const char* pwd=0);
+
+#endif
Index: NonGTP/FLTK/include/FL/Fl_Input.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Input.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Input.H	(revision 773)
@@ -0,0 +1,27 @@
+#ifndef Fl_Input_H
+#define Fl_Input_H
+
+#include "Fl_Widget.H"
+#include <fltk/Input.h>
+class Fl_Input : public fltk::Input {
+public:
+  Fl_Input(int x, int y, int w, int h, const char* l=0) : fltk::Input(x,y,w,h,l) {}
+  int wrap() const { return type() == fltk::Input::WORDWRAP; }
+  void wrap(int b) { type(b ? fltk::Input::WORDWRAP : fltk::Input::MULTILINE);}
+};
+
+enum {
+  FL_NORMAL_INPUT	= fltk::Input::NORMAL,
+  FL_FLOAT_INPUT	= 1, // probably needs the IntInput subclass!
+  FL_INT_INPUT		= 2,
+//FL_HIDDEN_INPUT	// not in fltk2.0
+  FL_MULTILINE_INPUT	= fltk::Input::MULTILINE,
+  FL_SECRET_INPUT	= fltk::Input::SECRET,
+//FL_INPUT_TYPE		= 7,
+//FL_INPUT_READONLY	= 8,
+  FL_INPUT_WRAP		= fltk::Input::WORDWRAP,
+  FL_MULTILINE_INPUT_WRAP = fltk::Input::WORDWRAP
+};
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Roller.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Roller.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Roller.H	(revision 773)
@@ -0,0 +1,13 @@
+#ifndef Fl_Roller_H
+#define Fl_Roller_H
+
+#include "Fl_Valuator.H"
+#include <fltk/ThumbWheel.h>
+
+class Fl_Roller : public fltk::ThumbWheel {
+public:
+  Fl_Roller(int x, int y, int w, int h, const char*l = 0)
+    : fltk::ThumbWheel(x,y,w,h,l) {set_vertical();}
+};
+
+#endif
Index: NonGTP/FLTK/include/FL/Fl_Output.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Output.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Output.H	(revision 773)
@@ -0,0 +1,15 @@
+#ifndef Fl_Output_H
+#define Fl_Output_H
+
+#include "Fl_Input.H"
+#include <fltk/Output.h>
+typedef fltk::Output Fl_Output;
+
+enum {
+  FL_NORMAL_OUTPUT	= fltk::Input::NORMAL,
+  FL_MULTILINE_OUTPUT	= fltk::Input::MULTILINE,
+  FL_MULTILINE_OUTPUT_WRAP = fltk::Input::WORDWRAP
+};
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_File_Chooser.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_File_Chooser.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_File_Chooser.H	(revision 773)
@@ -0,0 +1,16 @@
+#ifndef Fl_File_Chooser_H
+#define Fl_File_Chooser_H
+
+#include "Fl_Widget.H"
+
+#include <fltk/FileChooser.h>
+typedef fltk::FileChooser Fl_File_Chooser;
+
+#include <fltk/file_chooser.h>
+
+//char *fl_dir_chooser(const char *message,const char *fname,int relative=0);
+inline char *fl_file_chooser(const char *message,const char *pat,const char *fname,int /*relative*/ = 0) {
+  return fltk::file_chooser(message, pat, fname);
+}
+
+#endif
Index: NonGTP/FLTK/include/FL/Fl_Double_Window.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Double_Window.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Double_Window.H	(revision 773)
@@ -0,0 +1,18 @@
+#ifndef Fl_Double_Window_H
+#define Fl_Double_Window_H
+
+#include "Fl_Window.H"
+
+class Fl_Double_Window : public Fl_Window {
+
+public:
+  Fl_Double_Window(int x, int y, int w, int h, const char*l = 0)
+    : Fl_Window(x,y,w,h,l) {set_double_buffer();}
+    
+  Fl_Double_Window(int x, int y, const char*l = 0)
+    : Fl_Window(x,y,l) {set_double_buffer();}
+
+};
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Chart.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Chart.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Chart.H	(revision 773)
@@ -0,0 +1,83 @@
+//
+// "$Id: Fl_Chart.H 2918 2003-01-19 07:55:01Z spitzak $"
+//
+// Forms chart header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef Fl_Chart_H
+#define Fl_Chart_H
+
+#include <fltk/Widget.h>
+
+// values for type()
+#define FL_BAR_CHART		0
+#define FL_HORBAR_CHART		1
+#define FL_LINE_CHART		2
+#define FL_FILL_CHART		3
+#define FL_SPIKE_CHART		4
+#define FL_PIE_CHART		5
+#define FL_SPECIALPIE_CHART	6
+
+#define FL_FILLED_CHART  FL_FILL_CHART	// compatibility
+
+#define FL_CHART_MAX		128
+#define FL_CHART_LABEL_MAX	18
+
+struct FL_FORMS_API FL_CHART_ENTRY {
+   float val;
+   uchar col;
+   char str[FL_CHART_LABEL_MAX+1];
+};
+
+class FL_FORMS_API Fl_Chart : public fltk::Widget {
+public:
+  Fl_Chart(int,int,int,int,const char * = 0);
+  ~Fl_Chart();
+  void clear();
+  void add(double, const char * =0, uchar=0);
+  void insert(int, double, const char * =0, uchar=0);
+  void replace(int, double, const char * =0, uchar=0);
+  void bounds(double *a,double *b) const {*a = min; *b = max;}
+  void bounds(double a,double b);
+  int size() const {return numb;}
+  int maxsize() const {return maxnumb;}
+  void maxsize(int);
+  uchar autosize() const {return autosize_;}
+  void autosize(uchar n) {autosize_ = n;}
+
+protected:
+  void draw();
+
+private:
+  uchar autosize_;
+  int numb;
+  int maxnumb;
+  int sizenumb;
+  FL_CHART_ENTRY *entries;
+  double min,max;
+};
+
+#endif
+
+//
+// End of "$Id: Fl_Chart.H 2918 2003-01-19 07:55:01Z spitzak $".
+//
Index: NonGTP/FLTK/include/FL/Fl_Light_Button.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Light_Button.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Light_Button.H	(revision 773)
@@ -0,0 +1,9 @@
+#ifndef Fl_Light_Button_H
+#define Fl_Light_Button_H
+
+#include "Fl_Button.H"
+#include <fltk/LightButton.h>
+typedef fltk::LightButton Fl_Light_Button;
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Toggle_Light_Button.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Toggle_Light_Button.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Toggle_Light_Button.H	(revision 773)
@@ -0,0 +1,10 @@
+#ifndef Fl_Toggle_Light_Button_H
+#define Fl_Toggle_Light_Button_H
+
+
+#include "Fl_Button.H"
+#include <fltk/LightButton.h>
+typedef fltk::LightButton Fl_Toggle_Light_Button;
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Menu_.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Menu_.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Menu_.H	(revision 773)
@@ -0,0 +1,8 @@
+#ifndef Fl_Menu__H
+#define Fl_Menu__H
+
+#include "Fl_Menu_Item.H"
+#include <fltk/Menu.h>
+typedef fltk::Menu Fl_Menu_;
+
+#endif
Index: NonGTP/FLTK/include/FL/forms.H
===================================================================
--- NonGTP/FLTK/include/FL/forms.H	(revision 773)
+++ NonGTP/FLTK/include/FL/forms.H	(revision 773)
@@ -0,0 +1,857 @@
+//
+// "$Id: forms.H 2918 2003-01-19 07:55:01Z spitzak $"
+//
+// Forms emulation header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef __FORMS_H__
+#define __FORMS_H__
+
+#include <fltk/Window.h>
+#include <fltk/run.h>
+#include <fltk/draw.h>
+#include <fltk/Color.h>
+#include <fltk/Style.h>
+
+typedef fltk::Widget FL_OBJECT;
+typedef fltk::Window FL_FORM;
+
+////////////////////////////////////////////////////////////////
+// Random constants & symbols defined by forms.h file:
+
+#ifndef NULL
+#define NULL 0
+#endif
+#ifndef FALSE
+#define FALSE 0
+#define TRUE 1
+#endif
+
+#define FL_ON		1
+#define FL_OK		1
+#define FL_VALID	1
+#define FL_PREEMPT	1
+#define FL_AUTO		2
+#define FL_WHEN_NEEDED	FL_AUTO
+#define FL_OFF		0
+#define FL_NONE		0
+#define FL_CANCEL	0
+#define FL_INVALID	0
+#define FL_IGNORE	-1
+#define FL_CLOSE	-2
+
+#define FL_LCOL		fltk::BLACK
+#define FL_COL1		fltk::GRAY75
+#define FL_MCOL		fltk::GRAY85
+#define FL_LEFT_BCOL	fltk::GRAY99
+#define FL_TOP_BCOL	fltk::GRAY90
+#define FL_BOTTOM_BCOL	fltk::GRAY35
+#define FL_RIGHT_BCOL	fltk::GRAY20
+#define FL_INACTIVE	fltk::GRAY66
+#define FL_INACTIVE_COL	fltk::GRAY66
+#define FL_FREE_COL1	fltk::Color(16)
+#define FL_FREE_COL2	fltk::Color(17)
+#define FL_FREE_COL3	fltk::Color(18)
+#define FL_FREE_COL4	fltk::Color(19)
+#define FL_FREE_COL5	fltk::Color(20)
+#define FL_FREE_COL6	fltk::Color(21)
+#define FL_FREE_COL7	fltk::Color(22)
+#define FL_FREE_COL8	fltk::Color(23)
+#define FL_FREE_COL9	fltk::Color(24)
+#define FL_FREE_COL10	fltk::Color(25)
+#define FL_FREE_COL11	fltk::Color(26)
+#define FL_FREE_COL12	fltk::Color(27)
+#define FL_FREE_COL13	fltk::Color(28)
+#define FL_FREE_COL14	fltk::Color(29)
+#define FL_FREE_COL15	fltk::Color(30)
+#define FL_FREE_COL16	fltk::Color(31)
+#define FL_TOMATO	fltk::Color(131)
+#define FL_INDIANRED	fltk::Color(164)
+#define FL_SLATEBLUE	fltk::Color(195)
+#define FL_DARKGOLD	fltk::Color(84)
+#define FL_PALEGREEN	fltk::Color(157)
+#define FL_ORCHID	fltk::Color(203)
+#define FL_DARKCYAN	fltk::Color(189)
+#define FL_DARKTOMATO	fltk::Color(113)
+#define FL_WHEAT	fltk::Color(174)
+
+#define FL_ALIGN_BESIDE	fltk::ALIGN_INSIDE
+
+#define FL_PUP_TOGGLE	2 // FL_MENU_TOGGLE
+#define FL_PUP_INACTIVE 1 // FL_MENU_INACTIVE
+#define FL_NO_FRAME	fltk::NO_BOX
+#define FL_ROUNDED3D_UPBOX 	fltk::ROUND_UP_BOX
+#define FL_ROUNDED3D_DOWNBOX	fltk::ROUND_DOWN_BOX
+#define FL_OVAL3D_UPBOX		fltk::ROUND_UP_BOX
+#define FL_OVAL3D_DOWNBOX	fltk::ROUND_DOWN_BOX
+
+#define FL_MBUTTON1	1
+#define FL_LEFTMOUSE	1
+#define FL_MBUTTON2	2
+#define FL_MIDDLEMOUSE	2
+#define FL_MBUTTON3	3
+#define FL_RIGHTMOUSE	3
+#define FL_MBUTTON4	4
+#define FL_MBUTTON5	5
+
+#define FL_INVALID_STYLE 255
+#define FL_NORMAL_STYLE	0
+#define FL_BOLD_STYLE	1
+#define FL_ITALIC_STYLE	2
+#define FL_BOLDITALIC_STYLE 3
+#define FL_FIXED_STYLE	4
+#define FL_FIXEDBOLD_STYLE 5
+#define FL_FIXEDITALIC_STYLE 6
+#define FL_FIXEDBOLDITALIC_STYLE 7
+#define FL_TIMES_STYLE	8
+#define FL_TIMESBOLD_STYLE 9
+#define FL_TIMESITALIC_STYLE 10
+#define FL_TIMESBOLDITALIC_STYLE 11
+
+// hacks to change the labeltype() when passed to fl_set_object_lstyle():
+#define FL_SHADOW_STYLE		0x100
+#define FL_ENGRAVED_STYLE	0x200
+#define FL_EMBOSSED_STYLE	0x300
+
+// size values are different from XForms, match older Forms:
+#define FL_TINY_SIZE	8
+#define FL_SMALL_SIZE	11 // 10
+#undef FL_NORMAL_SIZE
+#define FL_NORMAL_SIZE	14 // 12
+#define FL_MEDIUM_SIZE	18 // 14
+#define FL_LARGE_SIZE	24 // 18
+#define FL_HUGE_SIZE	32 // 24
+#define FL_DEFAULT_SIZE	FL_SMALL_SIZE
+#define FL_TINY_FONT	FL_TINY_SIZE
+#define FL_SMALL_FONT	FL_SMALL_SIZE
+#define FL_NORMAL_FONT	FL_NORMAL_SIZE
+#define FL_MEDIUM_FONT	FL_MEDIUM_SIZE
+#define FL_LARGE_FONT	FL_LARGE_SIZE
+#define FL_HUGE_FONT	FL_HUGE_SIZE
+#define FL_NORMAL_FONT1	FL_SMALL_FONT
+#define FL_NORMAL_FONT2	FL_NORMAL_FONT
+#define FL_DEFAULT_FONT	FL_SMALL_FONT
+
+#define FL_RETURN_END_CHANGED	FL_WHEN_RELEASE
+#define FL_RETURN_CHANGED	FL_WHEN_CHANGED
+#define FL_RETURN_END		FL_WHEN_RELEASE_ALWAYS
+#define FL_RETURN_ALWAYS	(FL_WHEN_CHANGED|FL_WHEN_NOT_CHANGED)
+
+#define FL_BOUND_WIDTH	3
+
+typedef int FL_Coord;
+typedef int FL_COLOR;
+
+////////////////////////////////////////////////////////////////
+// fltk interaction:
+
+#define FL_CMD_OPT void
+extern FL_FORMS_API void fl_initialize(int*, char*[], const char*, FL_CMD_OPT*, int);
+inline void fl_finish() {}
+
+typedef void (*FL_IO_CALLBACK) (int, void*);
+inline void fl_add_io_callback(int fd, short w, FL_IO_CALLBACK cb, void* v) {
+  Fl::add_fd(fd,w,cb,v);}
+inline void fl_remove_io_callback(int fd, short, FL_IO_CALLBACK) {
+  Fl::remove_fd(fd);} // removes all the callbacks!
+
+// type of callback is different and no "id" number is returned:
+inline void fl_add_timeout(long msec, void (*cb)(void*), void* v) {
+  Fl::add_timeout(msec*.001, (Fl_Timeout_Handler)cb, v);}
+inline void fl_remove_timeout(int) {}
+
+// type of callback is different!
+inline void fl_set_idle_callback(void (*cb)()) {Fl::set_idle(cb);}
+
+FL_FORMS_API Fl_Widget* fl_do_forms(void);
+FL_FORMS_API Fl_Widget* fl_check_forms();
+inline Fl_Widget* fl_do_only_forms(void) {return fl_do_forms();}
+inline Fl_Widget* fl_check_only_forms(void) {return fl_check_forms();}
+
+// because of new redraw behavior, these are no-ops:
+inline void fl_freeze_object(Fl_Widget*) {}
+inline void fl_unfreeze_object(Fl_Widget*) {}
+inline void fl_freeze_form(Fl_Window*) {}
+inline void fl_unfreeze_form(Fl_Window*) {}
+inline void fl_freeze_all_forms() {}
+inline void fl_unfreeze_all_forms() {}
+
+inline void fl_set_focus_object(Fl_Window*, Fl_Widget* o) {Fl::focus(o);}
+inline void fl_reset_focus_object(Fl_Widget* o) {Fl::focus(o);}
+#define fl_set_object_focus fl_set_focus_object
+
+// void fl_set_form_atclose(Fl_Window*w,int (*cb)(Fl_Window*,void*),void* v)
+// void fl_set_atclose(int (*cb)(Fl_Window*,void*),void*)
+// fl_set_form_atactivate/atdeactivate not implemented!
+
+////////////////////////////////////////////////////////////////
+// Fl_Widget:
+
+inline void fl_set_object_boxtype(Fl_Widget* o, Fl_Boxtype a) {o->box(a);}
+inline void fl_set_object_lsize(Fl_Widget* o,int s) {o->label_size(s);}
+FL_FORMS_API void fl_set_object_lstyle(Fl_Widget* o,int a);
+inline void fl_set_object_lcol(Fl_Widget* o, unsigned a) {o->label_color((Fl_Color)a);}
+#define fl_set_object_lcolor  fl_set_object_lcol
+inline void fl_set_object_lalign(Fl_Widget* o, Fl_Align a) { o->clear_flag(FL_ALIGN_MASK); o->set_flag(a);}
+#define fl_set_object_align fl_set_object_lalign
+inline void fl_set_object_color(Fl_Widget* o,unsigned a,unsigned b) {o->color((Fl_Color)a); o->selection_color((Fl_Color)b);}
+inline void fl_set_object_label(Fl_Widget* o, const char* a) {o->label(a); o->redraw();}
+inline void fl_set_object_position(Fl_Widget*o,int x,int y) {o->position(x,y);}
+inline void fl_set_object_size(Fl_Widget* o, int w, int h) {o->size(w,h);}
+inline void fl_set_object_geometry(Fl_Widget* o,int x,int y,int w,int h) {o->resize(x,y,w,h);}
+
+inline void fl_get_object_geometry(Fl_Widget* o,int*x,int*y,int*w,int*h) {
+  *x = o->x(); *y = o->y(); *w = o->w(); *h = o->h();}
+inline void fl_get_object_position(Fl_Widget* o,int*x,int*y) {
+  *x = o->x(); *y = o->y();}
+
+typedef void (*Forms_CB)(Fl_Widget*, long);
+inline void fl_set_object_callback(Fl_Widget*o,Forms_CB c,long a) {o->callback(c,a);}
+#define fl_set_call_back      fl_set_object_callback
+inline void fl_call_object_callback(Fl_Widget* o) {o->do_callback();}
+inline void fl_trigger_object(Fl_Widget* o) {o->do_callback();}
+inline void fl_set_object_return(Fl_Widget* o, int v) {
+  o->when(v|FL_WHEN_RELEASE);}
+
+inline void fl_redraw_object(Fl_Widget* o) {o->redraw();}
+inline void fl_show_object(Fl_Widget* o) {o->show();}
+inline void fl_hide_object(Fl_Widget* o) {o->hide();}
+inline void fl_free_object(Fl_Widget* x) {delete x;}
+inline void fl_delete_object(Fl_Widget* o) {((Fl_Group*)(o->parent()))->remove(*o);}
+inline void fl_activate_object(Fl_Widget* o) {o->activate();}
+inline void fl_deactivate_object(Fl_Widget* o) {o->deactivate();}
+
+inline void fl_add_object(Fl_Window* f, Fl_Widget* x) {f->add(x);}
+inline void fl_insert_object(Fl_Widget* o, Fl_Widget* b) {
+    ((Fl_Group*)(b->parent()))->insert(*o,b);}
+
+inline Fl_Window* FL_ObjWin(Fl_Widget* o) {return o->window();}
+
+////////////////////////////////////////////////////////////////
+// things that appered in the demos a lot that I don't emulate, but
+// I did not want to edit out of all the demos...
+
+inline int fl_get_border_width() {return 3;}
+inline void fl_set_border_width(int) {}
+inline void fl_set_object_dblbuffer(Fl_Widget*, int) {}
+inline void fl_set_form_dblbuffer(Fl_Window*, int) {}
+
+////////////////////////////////////////////////////////////////
+// Fl_Window:
+
+inline void fl_free_form(Fl_Window* x) {delete x;}
+inline void fl_redraw_form(Fl_Window* f) {f->redraw();}
+
+inline Fl_Window* fl_bgn_form(Fl_Boxtype b,int w,int h) {
+  Fl_Window* g = new Fl_Window(w,h,0);
+  g->box(b);
+  return g;
+}
+inline void fl_addto_form(Fl_Window* f) {f->begin();}
+inline Fl_Group* fl_bgn_group() {return new Fl_Group(0,0,0,0,0);}
+inline void fl_addto_group(Fl_Widget* o) {((Fl_Group* )o)->begin();}
+FL_FORMS_API void fl_end_group();
+FL_FORMS_API void fl_end_form();
+#define resizebox _ddfdesign_kludge()
+
+inline void fl_scale_form(Fl_Window* f, double x, double y) {
+  f->resizable(f); f->size(int(f->w()*x),int(f->h()*y));}
+inline void fl_set_form_position(Fl_Window* f,int x,int y) {f->position(x,y);}
+inline void fl_set_form_size(Fl_Window* f, int w, int h) {f->size(w,h);}
+inline void fl_set_form_geometry(Fl_Window* f,int x,int y,int w,int h) {
+  f->resize(x,y,w,h);}
+#define fl_set_initial_placement fl_set_form_geometry
+inline void fl_adjust_form_size(Fl_Window*) {}
+
+FL_FORMS_API void fl_show_form(Fl_Window* f,int p,int b,const char* n);
+enum {	// "p" argument values:
+  FL_PLACE_FREE = 0,	// make resizable
+  FL_PLACE_MOUSE = 1,	// mouse centered on form
+  FL_PLACE_CENTER = 2,	// center of the screen
+  FL_PLACE_POSITION = 4,// fixed position, resizable
+  FL_PLACE_SIZE = 8,	// fixed size, normal fltk behavior
+  FL_PLACE_GEOMETRY =16,// fixed size and position
+  FL_PLACE_ASPECT = 32,	// keep aspect ratio (ignored)
+  FL_PLACE_FULLSCREEN=64,// fill screen
+  FL_PLACE_HOTSPOT = 128,// enables hotspot
+  FL_PLACE_ICONIC = 256,// iconic (ignored)
+  FL_FREE_SIZE=(1<<14),	// force resizable
+  FL_FIX_SIZE =(1<<15)	// force off resizable
+};
+#define FL_PLACE_FREE_CENTER (FL_PLACE_CENTER|FL_FREE_SIZE)
+#define FL_PLACE_CENTERFREE  (FL_PLACE_CENTER|FL_FREE_SIZE)
+enum {	// "b" arguement values:
+  FL_NOBORDER = 0,
+  FL_FULLBORDER,
+  FL_TRANSIENT
+//FL_MODAL = (1<<8)	// not implemented yet in Forms
+};
+inline void fl_set_form_hotspot(Fl_Window* w,int x,int y) {w->hotspot(x,y);}
+inline void fl_set_form_hotobject(Fl_Window* w, Fl_Widget* o) {w->hotspot(o);}
+extern FL_FORMS_API char fl_flip;	// in forms.C
+inline void fl_flip_yorigin() {fl_flip = 1;}
+
+#define fl_prepare_form_window fl_show_form
+inline void fl_show_form_window(Fl_Window*) {}
+
+inline void fl_raise_form(Fl_Window* f) {f->show();}
+
+inline void fl_hide_form(Fl_Window* f) {f->hide();}
+inline void fl_pop_form(Fl_Window* f) {f->show();}
+
+extern FL_FORMS_API char fl_modal_next; // in forms.C
+inline void fl_activate_all_forms() {}
+inline void fl_deactivate_all_forms() {fl_modal_next = 1;}
+inline void fl_deactivate_form(Fl_Window*w) {w->deactivate();}
+inline void fl_activate_form(Fl_Window*w) {w->activate();}
+
+inline void fl_set_form_title(Fl_Window* f, const char* s) {f->label(s);}
+inline void fl_title_form(Fl_Window* f, const char* s) {f->label(s);}
+
+typedef void (*Forms_FormCB)(Fl_Widget*);
+inline void fl_set_form_callback(Fl_Window* f,Forms_FormCB c) {f->callback(c);}
+#define fl_set_form_call_back fl_set_form_callback
+
+inline void fl_init() {}
+inline void fl_set_graphics_mode(int r, int /*d*/) {
+  Fl::visual(r ? FL_RGB : FL_INDEX);
+  // d should add FL_DOUBLE, but that always fails in fltk 2.0
+}
+
+inline int fl_form_is_visible(Fl_Window* f) {return f->visible();}
+
+inline int fl_mouse_button() {return Fl::event_button();}
+#define fl_mousebutton fl_mouse_button
+
+#define fl_free       free
+#define fl_malloc     malloc
+#define fl_calloc     calloc
+#define fl_realloc    realloc
+
+////////////////////////////////////////////////////////////////
+// Drawing functions.  Only usable inside an Fl_Free object?
+
+#if 0
+inline void fl_drw_box(Fl_Boxtype b,int x,int y,int w,int h,Fl_Color bgc,int=3) {
+    b->draw(x,y,w,h,bgc);}
+inline void fl_drw_frame(Fl_Boxtype b,int x,int y,int w,int h,Fl_Color bgc,int=3) {
+    b->draw(x,y,w,h,bgc,FL_FRAME_ONLY);}
+#endif
+
+inline void fl_drw_text(Fl_Align align, int x, int y, int w, int h,
+		  Fl_Color fgcolor, int size, Fl_Font style,
+		  const char* s) {
+  fl_font(style,size);
+  fl_color(fgcolor);
+  fl_draw(s,x,y,w,h,align);
+}
+
+// this does not work except for CENTER...
+inline void fl_drw_text_beside(Fl_Align align, int x, int y, int w, int h,
+		  Fl_Color fgcolor, int size, Fl_Font style,
+		  const char* s) {
+  fl_font(style,size);
+  fl_color(fgcolor);
+  fl_draw(s,x,y,w,h,align);
+}
+
+//inline void fl_set_font_name(Fl_Font n,const char* s) {fl_set_font(n,s);}
+
+inline void fl_mapcolor(Fl_Color c, uchar r, uchar g, uchar b) {
+  fl_set_color(c,fl_rgb(r,g,b));}
+#define fl_set_clipping(x,y,w,h) fl_clip(x,y,w,h)
+#define fl_unset_clipping() fl_pop_clip()
+
+////////////////////////////////////////////////////////////////
+// Forms classes:
+
+inline Fl_Widget* fl_add_new(Fl_Widget* p) {return p;}
+inline Fl_Widget* fl_add_new(uchar t,Fl_Widget* p) {p->type(t); return p;}
+
+#define forms_constructor(type,name) \
+inline type* name(uchar t,int x,int y,int w,int h,const char* l) { \
+ return (type*)(fl_add_new(t, new type(x,y,w,h,l)));}
+#define forms_constructort(type,name) \
+inline type* name(uchar t,int x,int y,int w,int h,const char* l) { \
+ return (type*)(fl_add_new(new type(t,x,y,w,h,l)));}
+#define forms_constructorb(type,name) \
+inline type* name(Fl_Boxtype t,int x,int y,int w,int h,const char* l) { \
+ return (type*)(fl_add_new(new type(t,x,y,w,h,l)));}
+
+#include "Fl_FormsBitmap.h"
+#define FL_NORMAL_BITMAP FL_NO_BOX
+forms_constructorb(Fl_FormsBitmap, fl_add_bitmap)
+inline void fl_set_bitmap_data(Fl_Widget* o, int w, int h, const uchar* b) {
+    ((Fl_FormsBitmap*)o)->set(w,h,b);
+}
+
+#include "Fl_FormsPixmap.h"
+#define FL_NORMAL_PIXMAP FL_NO_BOX
+forms_constructorb(Fl_FormsPixmap, fl_add_pixmap)
+inline void fl_set_pixmap_data(Fl_Widget* o, char*const* b) {
+    ((Fl_FormsPixmap*)o)->set(b);
+}
+//inline void fl_set_pixmap_file(Fl_Widget*, const char*);
+inline void fl_set_pixmap_align(Fl_Widget* o,Fl_Align a,int,int) { o->clear_flag(FL_ALIGN_MASK); o->set_flag(a);}
+//inline void fl_set_pixmap_colorcloseness(int, int, int);
+
+#include <fltk/Fl_Box.h>
+forms_constructorb(Fl_Box, fl_add_box)
+
+#include <fltk/Fl_Browser.h>
+forms_constructor(Fl_Browser, fl_add_browser)
+
+inline void fl_clear_browser(Fl_Widget* o) {
+    ((Fl_Browser*)o)->clear();}
+inline void fl_add_browser_line(Fl_Widget* o, const char* s) {
+    ((Fl_Browser*)o)->add(s);}
+inline void fl_addto_browser(Fl_Widget* o, const char* s) {
+    ((Fl_Browser*)o)->add(s);} /* should also scroll to bottom */
+//inline void fl_addto_browser_chars(Fl_Widget*, const char*)
+//#define fl_append_browser fl_addto_browser_chars
+inline void fl_insert_browser_line(Fl_Widget* o, int n, const char* s) {
+    ((Fl_Browser*)o)->insert(n,s);}
+inline void fl_delete_browser_line(Fl_Widget* o, int n) {
+    ((Fl_Browser*)o)->remove(n);}
+inline void fl_replace_browser_line(Fl_Widget* o, int n, const char* s) {
+    ((Fl_Browser*)o)->replace(n,s);}
+inline char* fl_get_browser_line(Fl_Widget* o, int n) {
+    return (char*)(((Fl_Browser*)o)->text(n));}
+FL_FORMS_API int fl_load_browser(Fl_Widget* o, const char* f);
+inline void fl_select_browser_line(Fl_Widget* o, int n) {
+    ((Fl_Browser*)o)->select(n,1);}
+inline void fl_deselect_browser_line(Fl_Widget* o, int n) {
+    ((Fl_Browser*)o)->select(n,0);}
+inline void fl_deselect_browser(Fl_Widget* o) {
+    ((Fl_Browser*)o)->deselect();}
+inline int fl_isselected_browser_line(Fl_Widget* o, int n) {
+    return ((Fl_Browser*)o)->selected(n);}
+inline int fl_get_browser_topline(Fl_Widget* o) {
+    return ((Fl_Browser*)o)->topline();}
+inline int fl_get_browser(Fl_Widget* o) {
+    return ((Fl_Browser*)o)->value();}
+inline int fl_get_browser_maxline(Fl_Widget* o) {
+    return ((Fl_Browser*)o)->size();}
+//linline int fl_get_browser_screenlines(Fl_Widget*);
+inline void fl_set_browser_topline(Fl_Widget* o, int n) {
+    ((Fl_Browser*)o)->topline(n);}
+inline void fl_set_browser_fontsize(Fl_Widget* o, int s) {
+    ((Fl_Browser*)o)->text_size(s);}
+inline void fl_set_browser_fontstyle(Fl_Widget* o, int s) {
+    ((Fl_Browser*)o)->text_font(fl_fonts+s);}
+inline void fl_set_browser_specialkey(Fl_Widget* o, char c) {
+    ((Fl_Browser*)o)->format_char(c);}
+//inline void fl_set_browser_vscrollbar(Fl_Widget*, int);
+//inline void fl_set_browser_hscrollbar(Fl_Widget*, int);
+//inline void fl_set_browser_leftslider(Fl_Widget*, int);
+//#define fl_set_browser_leftscrollbar fl_set_browser_leftslider
+//inline void fl_set_browser_line_selectable(Fl_Widget*, int, int);
+//inline void fl_get_browser_dimension(Fl_Widget*,int*,int*,int*,int*);
+//inline void fl_set_browser_dblclick_callback(Fl_Widget*,FL_CALLBACKPTR,long);
+//inline void fl_set_browser_xoffset(Fl_Widget*, FL_Coord);
+//inline void fl_set_browser_scrollbarsize(Fl_Widget*, int, int);
+inline void fl_setdisplayed_browser_line(Fl_Widget* o, int n, int i) {
+    ((Fl_Browser*)o)->display(n,i);}
+inline int fl_isdisplayed_browser_line(Fl_Widget* o, int n) {
+    return ((Fl_Browser*)o)->displayed(n);}
+
+#include <fltk/Fl_Button.h>
+
+#define FL_NORMAL_BUTTON	0
+//#define FL_HIDDEN_BUTTON
+#define FL_TOUCH_BUTTON		4
+#define FL_INOUT_BUTTON		5
+#define FL_RETURN_BUTTON	6
+#define FL_HIDDEN_RET_BUTTON	7
+#define FL_PUSH_BUTTON		FL_TOGGLE_BUTTON
+#define FL_MENU_BUTTON		9
+
+extern FL_FORMS_API int fl_old_shortcut(const char*);
+
+FL_FORMS_API Fl_Button* fl_add_button(uchar t,int x,int y,int w,int h,const char* l);
+inline int fl_get_button(Fl_Widget* b) {return ((Fl_Button*)b)->value();}
+inline void fl_set_button(Fl_Widget* b, int v) {((Fl_Button*)b)->value(v);}
+inline int fl_get_button_numb(Fl_Widget*) {return Fl::event_button();}
+inline void fl_set_object_shortcut(Fl_Widget* b, const char* s, int=0) {
+  b->shortcut(fl_old_shortcut(s));}
+#define fl_set_button_shortcut fl_set_object_shortcut
+
+#include <fltk/Fl_Light_Button.h>
+forms_constructor(Fl_Light_Button, fl_add_lightbutton)
+
+#include <fltk/Fl_Round_Button.h>
+forms_constructor(Fl_Round_Button, fl_add_roundbutton)
+forms_constructor(Fl_Round_Button, fl_add_round3dbutton)
+
+#include <fltk/Fl_Check_Button.h>
+forms_constructor(Fl_Check_Button, fl_add_checkbutton)
+
+inline Fl_Widget* fl_add_bitmapbutton(int t,int x,int y,int w,int h,const char* l) {Fl_Widget* o = fl_add_button(t,x,y,w,h,l); return o;}
+inline void fl_set_bitmapbutton_data(Fl_Widget* o,int a,int b,uchar* c) {
+  (new Fl_Bitmap(c,a,b))->label(o);}  // does not delete old Fl_Bitmap!
+
+inline Fl_Widget* fl_add_pixmapbutton(int t,int x,int y,int w,int h,const char* l) {Fl_Widget* o = fl_add_button(t,x,y,w,h,l); return o;}
+inline void fl_set_pixmapbutton_data(Fl_Widget* o, const char*const* c) {
+  (new Fl_Pixmap(c))->label(o);}  // does not delete old Fl_Pixmap!
+
+// Fl_Canvas object not yet implemented!
+
+#include "Fl_Chart.h"
+
+forms_constructor(Fl_Chart, fl_add_chart)
+inline void fl_clear_chart(Fl_Widget* o) {
+  ((Fl_Chart*)o)->clear();}
+inline void fl_add_chart_value(Fl_Widget* o,double v,const char* s,uchar c){
+  ((Fl_Chart*)o)->add(v,s,c);}
+inline void fl_insert_chart_value(Fl_Widget* o, int i, double v, const char* s, uchar c) {
+  ((Fl_Chart*)o)->insert(i,v,s,c);}
+inline void fl_replace_chart_value(Fl_Widget* o, int i, double v, const char* s, uchar c) {
+  ((Fl_Chart*)o)->replace(i,v,s,c);}
+inline void fl_set_chart_bounds(Fl_Widget* o, double a, double b) {
+  ((Fl_Chart*)o)->bounds(a,b);}
+inline void fl_set_chart_maxnumb(Fl_Widget* o, int v) {
+  ((Fl_Chart*)o)->maxsize(v);}
+inline void fl_set_chart_autosize(Fl_Widget* o, int v) {
+  ((Fl_Chart*)o)->autosize(v);}
+inline void fl_set_chart_lstyle(Fl_Widget* o, Fl_Font v) {
+  ((Fl_Chart*)o)->text_font(v);}
+inline void fl_set_chart_lsize(Fl_Widget* o, int v) {
+  ((Fl_Chart*)o)->text_size(v);}
+inline void fl_set_chart_lcolor(Fl_Widget* o, unsigned v) {
+  ((Fl_Chart*)o)->text_color((Fl_Color)v);}
+#define fl_set_chart_lcol   fl_set_chart_lcolor
+
+#include <fltk/Fl_Choice.h>
+
+#define FL_NORMAL_CHOICE	0
+#define FL_NORMAL_CHOICE2	0
+#define FL_DROPLIST_CHOICE	0
+
+forms_constructor(Fl_Choice, fl_add_choice)
+inline void fl_clear_choice(Fl_Widget* o) {
+    ((Fl_Choice*)o)->clear();}
+inline void fl_addto_choice(Fl_Widget* o, const char* s) {
+    ((Fl_Choice*)o)->add(s);}
+inline void fl_replace_choice(Fl_Widget* o, int i, const char* s) {
+    ((Fl_Choice*)o)->replace(i-1,s);}
+inline void fl_delete_choice(Fl_Widget* o, int i) {
+    ((Fl_Choice*)o)->remove(i-1);}
+inline void fl_set_choice(Fl_Widget* o, int i) {
+    ((Fl_Choice*)o)->value(i-1);}
+// inline void fl_set_choice_text(Fl_Widget*, const char*);
+inline int fl_get_choice(Fl_Widget* o) {
+    return ((Fl_Choice*)o)->value()+1;}
+// inline const char* fl_get_choice_item_text(Fl_Widget*, int);
+// inline int fl_get_choice_maxitems(Fl_Widget*);
+inline const char* fl_get_choice_text(Fl_Widget* o) {
+    return ((Fl_Choice*)o)->text();}
+inline void fl_set_choice_fontsize(Fl_Widget* o, int x) {
+    ((Fl_Choice*)o)->text_size(x);}
+inline void fl_set_choice_fontstyle(Fl_Widget* o, Fl_Font x) {
+    ((Fl_Choice*)o)->text_font(x);}
+// inline void fl_set_choice_item_mode(Fl_Widget*, int, unsigned);
+// inline void fl_set_choice_item_shortcut(Fl_Widget*, int, const char*);
+
+#include <fltk/Fl_Clock.h>
+forms_constructor(Fl_Clock, fl_add_clock)
+inline void fl_get_clock(Fl_Widget* o, int* h, int* m, int* s) {
+    *h = ((Fl_Clock*)o)->hour();
+    *m = ((Fl_Clock*)o)->minute();
+    *s = ((Fl_Clock*)o)->second();
+}
+
+#include <fltk/Fl_Counter.h>
+forms_constructor(Fl_Counter, fl_add_counter)
+inline void fl_set_counter_value(Fl_Widget* o, double v) {
+    ((Fl_Counter*)o)->value(v);}
+inline void fl_set_counter_bounds(Fl_Widget* o, double a, double b) {
+    ((Fl_Counter*)o)->range(a,b);}
+inline void fl_set_counter_step(Fl_Widget* o, double a, double b) {
+    ((Fl_Counter*)o)->step(a / b);}
+inline void fl_set_counter_precision(Fl_Widget* o, int v) {
+//    ((Fl_Counter*)o)->precision(v);}
+    ((Fl_Counter*)o)->step(1/(10^v));}
+inline void fl_set_counter_return(Fl_Widget* o, int v) {
+    ((Fl_Counter*)o)->when(v|FL_WHEN_RELEASE);}
+inline double fl_get_counter_value(Fl_Widget* o) {
+    return ((Fl_Counter*)o)->value();}
+inline void fl_get_counter_bounds(Fl_Widget* o, float* a, float* b) {
+  *a = float(((Fl_Counter*)o)->minimum());
+  *b = float(((Fl_Counter*)o)->maximum());
+}
+//inline void fl_set_counter_filter(Fl_Widget*,const char* (*)(Fl_Widget*,double,int));
+
+// Cursor stuff cannot be emulated because it uses X stuff
+inline void fl_set_cursor(Fl_Window* w, Fl_Cursor c) {w->cursor(c);}
+#define FL_INVISIBLE_CURSOR FL_CURSOR_NONE
+#define FL_DEFAULT_CURSOR FL_CURSOR_DEFAULT
+
+#include <fltk/Fl_Dial.h>
+
+#define FL_DIAL_COL1 FL_GRAY
+#define FL_DIAL_COL2 37
+
+forms_constructor(Fl_Dial, fl_add_dial)
+inline void fl_set_dial_value(Fl_Widget* o, double v) {
+  ((Fl_Dial*)o)->value(v);}
+inline double fl_get_dial_value(Fl_Widget* o) {
+  return ((Fl_Dial*)o)->value();}
+inline void fl_set_dial_bounds(Fl_Widget* o, double a, double b) {
+  ((Fl_Dial*)o)->range(a, b);}
+inline void fl_get_dial_bounds(Fl_Widget* o, float* a, float* b) {
+  *a = float(((Fl_Dial*)o)->minimum());
+  *b = float(((Fl_Dial*)o)->maximum());
+}
+inline void fl_set_dial_return(Fl_Widget* o, int i) {
+  ((Fl_Dial*)o)->when(i|FL_WHEN_RELEASE);}
+inline void fl_set_dial_angles(Fl_Widget* o, int a, int b) {
+  ((Fl_Dial*)o)->angles(a, b);}
+//inline void fl_set_dial_cross(Fl_Widget* o, int);
+// inline void fl_set_dial_direction(Fl_Widget* o, uchar d) {
+//   ((Fl_Dial*)o)->direction(d);}
+inline void fl_set_dial_step(Fl_Widget* o, double v) {
+  ((Fl_Dial*)o)->step(v);}
+
+// Frames:
+
+inline Fl_Widget* fl_add_frame(Fl_Boxtype i,int x,int y,int w,int h,const char* l) {
+  return fl_add_box(i,x-3,y-3,w+6,h+6,l);}
+
+// labelframe nyi
+inline Fl_Widget* fl_add_labelframe(Fl_Boxtype i,int x,int y,int w,int h,const char* l) {
+  Fl_Widget* o = fl_add_box(i,x-3,y-3,w+6,h+6,l);
+  o->clear_flag(FL_ALIGN_MASK); 
+  o->set_flag(FL_ALIGN_TOP | FL_ALIGN_LEFT);
+  return o;
+}
+
+#include "Fl_Free.h"
+inline Fl_Free*
+fl_add_free(int t,double x,double y,double w,double h,const char* l,
+	    FL_HANDLEPTR hdl) {
+ return (Fl_Free*)(fl_add_new(
+   new Fl_Free(t,int(x),int(y),int(w),int(h),l,hdl)));
+}
+
+#include <fltk/fl_ask.h>
+#include <fltk/fl_show_colormap.h>
+
+inline int fl_show_question(const char* c, int = 0) {return fl_ask(c);}
+FL_FORMS_API void fl_show_message(const char *,const char *,const char *);
+FL_FORMS_API void fl_show_alert(const char *,const char *,const char *,int=0);
+FL_FORMS_API int fl_show_question(const char *,const char *,const char *);
+inline const char *fl_show_input(const char *l,const char*d=0) {return fl_input(l,d);}
+/*const*/ char *fl_show_simple_input(const char *label, const char *deflt = 0);
+int fl_show_choice(
+    const char *m1,
+    const char *m2,
+    const char *m3,
+    int numb,
+    const char *b0,
+    const char *b1,
+    const char *b2);
+
+inline void fl_set_goodies_font(int a, unsigned b) {
+  fl_message_style->label_font = fl_fonts+a;
+  fl_message_style->label_size = b;
+}
+#define fl_show_messages fl_message
+inline int fl_show_choices(const char* c,int n,const char* b1,const char* b2,
+			   const char* b3, int) {
+  return fl_show_choice(0,c,0,n,b1,b2,b3);
+}
+
+#include <fltk/filename.h>
+#include <fltk/fl_file_chooser.h>
+inline int do_matching(char* a, const char* b) {return filename_match(a,b);}
+
+// Forms-compatable file chooser (implementation in fselect.C):
+FL_FORMS_API char* fl_show_file_selector(const char* message,const char* dir,
+			    const char* pat,const char* fname);
+FL_FORMS_API char*	fl_get_directory();
+FL_FORMS_API char*	fl_get_pattern();
+FL_FORMS_API char*	fl_get_filename();
+
+#include <fltk/Fl_Input.h>
+forms_constructor(Fl_Input, fl_add_input)
+inline void fl_set_input(Fl_Widget* o, const char* v) {
+    ((Fl_Input*)o)->value(v);}
+inline void fl_set_input_return(Fl_Widget* o, int x) {
+    ((Fl_Input*)o)->when(x | FL_WHEN_RELEASE);}
+inline void fl_set_input_color(Fl_Widget* o, unsigned a, unsigned /*b*/) {
+    ((Fl_Input*)o)->text_color((Fl_Color)a);
+//  ((Fl_Input*)o)->cursor_color((Fl_Color)b);
+}
+// inline void fl_set_input_scroll(Fl_Widget*, int);
+inline void fl_set_input_cursorpos(Fl_Widget* o, int x, int /*y*/) {
+  ((Fl_Input*)o)->position(x);}
+// inline void fl_set_input_selected(Fl_Widget*, int);
+// inline void fl_set_input_selected_range(Fl_Widget*, int, int);
+// inline void fl_set_input_maxchars(Fl_Widget*, int);
+// inline void fl_set_input_format(Fl_Widget*, int, int);
+// inline void fl_set_input_hscrollbar(Fl_Widget*, int);
+// inline void fl_set_input_vscrollbar(Fl_Widget*, int);
+// inline void fl_set_input_xoffset(Fl_Widget*, int);
+// inline void fl_set_input_topline(Fl_Widget*, int);
+// inline void fl_set_input_scrollbarsize(Fl_Widget*, int, int);
+// inline int fl_get_input_topline(Fl_Widget*);
+// inline int fl_get_input_screenlines(Fl_Widget*);
+inline int fl_get_input_cursorpos(Fl_Widget* o, int*x, int*y) {
+  *x = ((Fl_Input*)o)->position(); *y = 0; return *x;}
+// inline int fl_get_input_numberoflines(Fl_Widget*);
+// inline void fl_get_input_format(Fl_Widget*, int*, int*);
+inline const char* fl_get_input(Fl_Widget* o) {return ((Fl_Input*)o)->value();}
+
+#include <fltk/Fl_Menu_Button.h>
+
+// types are not implemented, they all act like FL_PUSH_MENU:
+#define FL_TOUCH_MENU		0
+#define FL_PUSH_MENU		1
+#define FL_PULLDOWN_MENU	2
+forms_constructor(Fl_Menu_Button, fl_add_menu)
+
+inline void fl_clear_menu(Fl_Widget* o) {
+    ((Fl_Menu_Button*)o)->clear();}
+inline void fl_set_menu(Fl_Widget* o, const char* s) {
+    ((Fl_Menu_Button*)o)->clear(); ((Fl_Menu_Button*)o)->add(s);}
+inline void fl_addto_menu(Fl_Widget* o, const char* s) {
+    ((Fl_Menu_Button*)o)->add(s);}
+inline void fl_replace_menu_item(Fl_Widget* o, int i, const char* s) {
+    ((Fl_Menu_Button*)o)->replace(i-1,s);}
+inline void fl_delete_menu_item(Fl_Widget* o, int i) {
+    ((Fl_Menu_Button*)o)->remove(i-1);}
+inline void fl_set_menu_item_shortcut(Fl_Widget* o, int i, const char* s) {
+    ((Fl_Menu_Button*)o)->shortcut(i-1,fl_old_shortcut(s));}
+// inline void fl_set_menu_item_mode(Fl_Widget* o, int i, long x) {
+//     ((Fl_Menu_Button*)o)->mode(i-1,x);}
+inline void fl_show_menu_symbol(Fl_Widget*, int ) {
+/*    ((Fl_Menu_Button*)o)->show_menu_symbol(i); */}
+// inline void fl_set_menu_popup(Fl_Widget*, int);
+inline int fl_get_menu(Fl_Widget* o) {
+    return ((Fl_Menu_Button*)o)->value()+1;}
+inline const char* fl_get_menu_item_text(Fl_Widget* o, int i) {
+    return ((Fl_Menu_Button*)o)->text(i);}
+inline int fl_get_menu_maxitems(Fl_Widget* o) {
+    return ((Fl_Menu_Button*)o)->size();}
+inline int fl_get_menu_item_mode(Fl_Widget* o, int i) {
+    return ((Fl_Menu_Button*)o)->mode(i);}
+inline const char* fl_get_menu_text(Fl_Widget* o) {
+    return ((Fl_Menu_Button*)o)->text();}
+
+#include "Fl_Positioner.h"
+#define FL_NORMAL_POSITIONER	0
+forms_constructor(Fl_Positioner, fl_add_positioner)
+inline void fl_set_positioner_xvalue(Fl_Widget* o, double v) {
+    ((Fl_Positioner*)o)->xvalue(v);}
+inline double fl_get_positioner_xvalue(Fl_Widget* o) {
+    return ((Fl_Positioner*)o)->xvalue();}
+inline void fl_set_positioner_xbounds(Fl_Widget* o, double a, double b) {
+    ((Fl_Positioner*)o)->xbounds(a,b);}
+inline void fl_get_positioner_xbounds(Fl_Widget* o, float* a, float* b) {
+  *a = float(((Fl_Positioner*)o)->xminimum());
+  *b = float(((Fl_Positioner*)o)->xmaximum());
+}
+inline void fl_set_positioner_yvalue(Fl_Widget* o, double v) {
+    ((Fl_Positioner*)o)->yvalue(v);}
+inline double fl_get_positioner_yvalue(Fl_Widget* o) {
+    return ((Fl_Positioner*)o)->yvalue();}
+inline void fl_set_positioner_ybounds(Fl_Widget* o, double a, double b) {
+    ((Fl_Positioner*)o)->ybounds(a,b);}
+inline void fl_get_positioner_ybounds(Fl_Widget* o, float* a, float* b) {
+  *a = float(((Fl_Positioner*)o)->yminimum());
+  *b = float(((Fl_Positioner*)o)->ymaximum());
+}
+inline void fl_set_positioner_xstep(Fl_Widget* o, double v) {
+    ((Fl_Positioner*)o)->xstep(v);}
+inline void fl_set_positioner_ystep(Fl_Widget* o, double v) {
+    ((Fl_Positioner*)o)->ystep(v);}
+inline void fl_set_positioner_return(Fl_Widget* o, int v) {
+    ((Fl_Positioner*)o)->when(v|FL_WHEN_RELEASE);}
+
+#include <fltk/Fl_Slider.h>
+
+#define FL_HOR_BROWSER_SLIDER FL_HOR_SLIDER
+#define FL_VERT_BROWSER_SLIDER FL_VERT_SLIDER
+
+forms_constructor(Fl_Slider, fl_add_slider)
+#define FL_SLIDER_COL1 FL_GRAY
+inline void fl_set_slider_value(Fl_Widget* o, double v) {
+    ((Fl_Slider*)o)->value(v);}
+inline double fl_get_slider_value(Fl_Widget* o) {
+    return ((Fl_Slider*)o)->value();}
+inline void fl_set_slider_bounds(Fl_Widget* o, double a, double b) {
+    ((Fl_Slider*)o)->range(a, b);}
+inline void fl_get_slider_bounds(Fl_Widget* o, float* a, float* b) {
+  *a = float(((Fl_Slider*)o)->minimum());
+  *b = float(((Fl_Slider*)o)->maximum());
+}
+inline void fl_set_slider_return(Fl_Widget* o, int i) {
+    ((Fl_Slider*)o)->when(i|FL_WHEN_RELEASE);}
+inline void fl_set_slider_step(Fl_Widget* o, double v) {
+    ((Fl_Slider*)o)->step(v);}
+// inline void fl_set_slider_increment(Fl_Widget* o, double v, double);
+inline void fl_set_slider_size(Fl_Widget* o, double v) {
+    ((Fl_Slider*)o)->slider_size(v);}
+
+#include <fltk/Fl_Value_Slider.h>
+forms_constructor(Fl_Value_Slider, fl_add_valslider)
+
+inline void fl_set_slider_precision(Fl_Widget* o, int i) {
+  double v = 1.0;
+  while (i--) v /= 10.0;
+  ((Fl_Value_Slider*)o)->step(v);
+}
+
+// The forms text object was the same as an Fl_Box except it inverted the
+// meaning of FL_ALIGN_INSIDE.  Implementation in forms.C
+class FL_FORMS_API Fl_FormsText : public Fl_Widget {
+protected:
+    void draw();
+public:
+    Fl_FormsText(Fl_Boxtype b, int x, int y, int w, int h, const char* l=0)
+	: Fl_Widget(x,y,w,h,l) {box(b); clear_flag(FL_ALIGN_MASK); set_flag(FL_ALIGN_LEFT);}
+};
+#define FL_NORMAL_TEXT FL_NO_BOX
+forms_constructorb(Fl_FormsText, fl_add_text)
+
+#include "Fl_Timer.h"
+forms_constructort(Fl_Timer, fl_add_timer)
+inline void fl_set_timer(Fl_Widget* o, double v) {((Fl_Timer*)o)->value(v);}
+inline double fl_get_timer(Fl_Widget* o) {return ((Fl_Timer*)o)->value();}
+inline void fl_suspend_timer(Fl_Widget* o) {((Fl_Timer*)o)->suspended(1);}
+inline void fl_resume_timer(Fl_Widget* o) {((Fl_Timer*)o)->suspended(0);}
+inline void fl_set_timer_countup(Fl_Widget* o,char d) {((Fl_Timer*)o)->direction(d);}
+FL_FORMS_API void fl_gettime(long* sec, long* usec);
+
+// Fl_XYPlot nyi
+
+
+// stuff from DDForms:
+
+inline int fl_double_click() {return Fl::event_clicks();}
+inline void fl_draw() {Fl::flush();}
+
+#endif	/* define __FORMS_H__ */
+
+//
+// End of "$Id: forms.H 2918 2003-01-19 07:55:01Z spitzak $".
+//
Index: NonGTP/FLTK/include/FL/Fl_Overlay_Window.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Overlay_Window.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Overlay_Window.H	(revision 773)
@@ -0,0 +1,8 @@
+#ifndef Fl_Overlay_Window_H
+#define Fl_Overlay_Window_H
+
+#include "Fl_Window.H"
+typedef Fl_Window Fl_Overlay_Window;
+
+#endif
+
Index: NonGTP/FLTK/include/FL/math.h
===================================================================
--- NonGTP/FLTK/include/FL/math.h	(revision 773)
+++ NonGTP/FLTK/include/FL/math.h	(revision 773)
@@ -0,0 +1,1 @@
+#include <fltk/math.h>
Index: NonGTP/FLTK/include/FL/menubar.h
===================================================================
--- NonGTP/FLTK/include/FL/menubar.h	(revision 773)
+++ NonGTP/FLTK/include/FL/menubar.h	(revision 773)
@@ -0,0 +1,65 @@
+// This is an additional header file for "DDForms", which was our internal
+// enhancement of Forms.  This defines the precursor of the Fl_Menu class.
+//
+// Unfortunately it defined the callbacks as taking a long rather
+// than a void* argument, requiring some dubious casts to emulate it:
+
+#include "Fl_Menu_Bar.h"
+
+struct FL_API MenuEntry {
+  const char *text;	/*initial character indicates "type", 0 = end of menu*/
+  ulong bind;	/* key binding in forms format (#x, etc) */
+  void (*cb)(Fl_Widget *,long);	/* callback */
+  long data;		/* value for callback */
+  int flags;		/* see below for flags */
+  uchar labeltype;
+  uchar labelfont;
+  uchar labelsize;
+  uchar labelcolor;
+};
+
+#define CHECKED FL_MENU_CHECK
+#define UNCHECKED FL_MENU_BOX
+#define DISABLED FL_MENU_INACTIVE
+
+/* Turn a box into a menu bar: */
+inline void MenuBar(Fl_Widget *o,MenuEntry *m) {
+    Fl_Menu_Bar *mb = new Fl_Menu_Bar(o->x(),o->y(),o->w(),o->h());
+    mb->menu((Fl_Menu_Item*)m);
+    mb->box(0);
+    Fl_Group *g = (Fl_Group *)(o->parent());
+    int i = g->find(*o);
+    g->insert(*mb, i<g->children()-1 ? g->child(i+1) : 0);
+}
+
+/* advance to the Nth item in menu, skipping submenus: */
+inline MenuEntry *MenuGetEntry(MenuEntry *m,int i) {
+    return (MenuEntry*)(((Fl_Menu_Item*)m)->next(i));
+}
+
+/* Init the shortcuts for a widget with a popup menu: */
+inline void MenuSetShortcuts(Fl_Widget *, MenuEntry *) {}
+
+inline void MenuAdd(
+    MenuEntry m[],
+    int, /* number of entries in menutable, ignored here */
+    const char *text,
+    const char *bind,
+    void (*cb)(Fl_Widget *,long),
+    long data,
+    int flags) {
+    ((Fl_Menu_Item*)m)->add(text,bind,(Fl_Callback*)cb,(void *)data,flags);
+}
+
+inline MenuEntry *MenuPopup(Fl_Widget *o,const char *title,MenuEntry *m,
+			    int x, int y) {
+    const Fl_Menu_Item* v = ((Fl_Menu_Item*)m)->popup(x,y,title);
+    if (v && v->callback_) v->do_callback(o);
+    return (MenuEntry *)v;
+}
+
+inline MenuEntry *MenuHandleShortcut(Fl_Widget *o,MenuEntry *m,char) {
+    const Fl_Menu_Item* v = ((Fl_Menu_Item*)m)->test_shortcut();
+    if (v && v->callback_) v->do_callback(o);
+    return (MenuEntry *)v;
+}
Index: NonGTP/FLTK/include/FL/Fl_Dial.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Dial.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Dial.H	(revision 773)
@@ -0,0 +1,15 @@
+#ifndef Fl_Dial_H
+#define Fl_Dial_H
+
+#include "Fl_Widget.H"
+#include <fltk/Dial.h>
+typedef fltk::Dial Fl_Dial;
+
+enum {
+  FL_NORMAL_DIAL	= fltk::Dial::NORMAL,
+  FL_LINE_DIAL		= fltk::Dial::LINE,
+  FL_FILL_DIAL		= fltk::Dial::FILL
+};
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Return_Button.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Return_Button.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Return_Button.H	(revision 773)
@@ -0,0 +1,8 @@
+#ifndef Fl_Return_Button_H
+#define Fl_Return_Button_H
+
+#include <fltk/ReturnButton.h>
+typedef fltk::ReturnButton Fl_Return_Button;
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Button.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Button.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Button.H	(revision 773)
@@ -0,0 +1,16 @@
+#ifndef Fl_Button_H
+#define Fl_Button_H
+
+#include "Fl_Widget.H"
+#include <fltk/Button.h>
+typedef fltk::Button Fl_Button;
+
+enum {
+  FL_NORMAL_BUTTON	= fltk::Button::NORMAL,
+  FL_TOGGLE_BUTTON	= fltk::Button::TOGGLE,
+  FL_RADIO_BUTTON	= fltk::Button::RADIO,
+  FL_HIDDEN_BUTTON	= fltk::Button::HIDDEN // may not work in 2.0
+};
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Toggle_Button.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Toggle_Button.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Toggle_Button.H	(revision 773)
@@ -0,0 +1,12 @@
+#ifndef Fl_Toggle_Button_H
+#define Fl_Toggle_Button_H
+
+#include "Fl_Button.H"
+
+class Fl_Toggle_Button : public Fl_Button {
+public:
+    Fl_Toggle_Button(int X,int Y,int W,int H,const char *l=0)
+	: Fl_Button(X,Y,W,H,l) {type(FL_TOGGLE_BUTTON);}
+};
+
+#endif
Index: NonGTP/FLTK/include/FL/fl_ask.H
===================================================================
--- NonGTP/FLTK/include/FL/fl_ask.H	(revision 773)
+++ NonGTP/FLTK/include/FL/fl_ask.H	(revision 773)
@@ -0,0 +1,13 @@
+#ifndef fl_ask_H
+#define fl_ask_H
+
+#include <fltk/ask.h>
+
+#define fl_message	fltk::message
+#define fl_alert	fltk::alert
+#define fl_ask		fltk::ask
+#define fl_choice	fltk::choice
+#define fl_input	fltk::input
+#define fl_password	fltk::password
+
+#endif
Index: NonGTP/FLTK/include/FL/Fl.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl.H	(revision 773)
@@ -0,0 +1,66 @@
+#ifndef Fl_H
+#  define Fl_H
+
+#include "Enumerations.H"
+#include <fltk/run.h>
+#include <fltk/events.h>
+#include <fltk/Color.h>
+#include <fltk/Font.h>
+#include <fltk/Box.h>
+#include <fltk/error.h>
+#include <fltk/visual.h>
+#include <fltk/Monitor.h>
+
+namespace Fl = fltk;
+
+typedef fltk::TimeoutHandler Fl_Timeout_Handler;
+
+namespace fltk {
+
+  class Widget;
+
+  // fltk2 does not keep track of selection owner:
+  inline fltk::Widget* selection_owner() {return 0;}
+  inline void selection_owner(fltk::Widget*) {}
+  inline void selection(fltk::Widget &owner, const char* b, int len) {copy(b,len,false);}
+
+  inline void visible_focus(int) {} // fltk2 always acts like this is off
+
+  inline int x() {return Monitor::all().x();}
+  inline int y() {return Monitor::all().y();}
+  inline int w() {return Monitor::all().w();}
+  inline int h() {return Monitor::all().h();}
+
+  inline void set_color(Color c, uchar r, uchar g, uchar b) {
+    set_color_index(c,color(r,g,b));
+  }
+  inline void set_color(Color c, Color d) {set_color_index(c,d);}
+  inline Color get_color(Color c) {return get_color_index(c);}
+  inline void get_color(Color c, uchar&r, uchar&g, uchar&b) {split_color(c,r,g,b);}
+  //inline void free_color(Color, bool overlay=false);
+
+  inline const char* get_font(Font* f) {return f->system_name();}
+  inline const char* get_font_name(Font* f, int* attributes = 0) {
+    if (attributes) return f->name(attributes);
+    else return f->name();
+  }
+  inline int get_font_sizes(Font* f, int*& sizep) {return f->sizes(sizep);}
+
+#if 0
+  // these could be emulated by making a 0x0 rectangle and calling b->inset
+  inline int box_dx(const Box* b) {return b->dx();}
+  inline int box_dy(const Box* b) {return b->dy();}
+  inline int box_dw(const Box* b) {return b->dw();}
+  inline int box_dh(const Box* b) {return b->dh();}
+#endif
+
+  inline int event_key(int k) {return event_key_state(k);}
+
+  inline void add_handler(int (*h)(int)) {
+    // rather unsafe typecast of function:
+    add_event_handler((int(*)(int,Window*))(h));
+  }
+
+}
+
+#endif
Index: NonGTP/FLTK/include/FL/Fl_Adjuster.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Adjuster.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Adjuster.H	(revision 773)
@@ -0,0 +1,7 @@
+#ifndef Fl_Adjuster_H
+#define Fl_Adjuster_H
+
+#include <fltk/Adjuster.h>
+typedef fltk::Adjuster Fl_Adjuster;
+
+#endif
Index: NonGTP/FLTK/include/FL/Fl_Menu_Item.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Menu_Item.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Menu_Item.H	(revision 773)
@@ -0,0 +1,163 @@
+//
+// "$Id: Fl_Menu_Item.H 2918 2003-01-19 07:55:01Z spitzak $"
+//
+// Back-compatability menu items for FLTK.  The new fltk::Menu class
+// converts these tables into child fltk::Item and fltk::ItemGroup widgets.
+// You should not use this for new programs.
+//
+// Copyright 1998-2000 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef Fl_Menu_Item_h
+#define Fl_Menu_Item_h
+
+#include <fltk/Widget.h>
+
+enum { // values for flags:
+  FL_MENU_INACTIVE = 1,
+  FL_MENU_TOGGLE= 2,
+  FL_MENU_VALUE = 4,
+  FL_MENU_RADIO = 8,
+  FL_MENU_INVISIBLE = 0x10,
+  FL_SUBMENU_POINTER = 0x20,
+  FL_SUBMENU = 0x40,
+  FL_MENU_DIVIDER = 0x80,
+  FL_MENU_HORIZONTAL = 0x100 // not used!
+};
+
+namespace fltk {
+  class FL_API Menu;
+}
+
+struct FL_API Fl_Menu_Item {
+  const char *text;
+  int shortcut_;
+  fltk::Callback *callback_;
+  void *user_data_;
+  int flags;
+  fltk::LabelType* labeltype_;
+  fltk::Font* labelfont_;
+  unsigned labelsize_;
+  fltk::Color labelcolor_;
+
+  // Used to add or set an fltk::Menu widget:
+  void add_to(fltk::Menu*, void* data = 0) const;
+
+  // popup menus without using an fltk::Menu widget:
+  // Warning: this is now quite expensive, as it creates a temporary
+  // fltk::Menu and child widgets!  These also do not match the fltk 1.0
+  // calls, if there is any callback it is called directly (with the
+  // dummy fltk::Menu as an argument).
+  const Fl_Menu_Item*
+	pulldown(int X, int Y, int W, int H,
+		 const Fl_Menu_Item* picked = 0,
+		 const char* title = 0) const;
+  const Fl_Menu_Item*
+	popup(int X, int Y, const char* title=0,
+	      const Fl_Menu_Item* picked = 0) const {
+    return pulldown(X, Y, 0, 0, picked, title);}
+  const Fl_Menu_Item*
+	test_shortcut() const;
+
+  // return offset of terminating null item:
+  int size() const ;
+
+  // advance a pointer by N items, skipping submenus:
+  const Fl_Menu_Item *next(int=1) const;
+  Fl_Menu_Item *next(int i=1) {
+    return (Fl_Menu_Item*)(((const Fl_Menu_Item*)this)->next(i));}
+
+  const char* label() const {return text;}
+  fltk::LabelType* labeltype() const {return labeltype_;}
+  fltk::Color labelcolor() const {return labelcolor_;}
+  fltk::Font* labelfont() const {return labelfont_;}
+  unsigned labelsize() const {return labelsize_;}
+  fltk::Callback_p callback() const {return callback_;}
+  void* user_data() const {return user_data_;}
+  long argument() const {return (long)user_data_;}
+  int shortcut() const {return shortcut_;}
+  int submenu() const {return flags&(FL_SUBMENU|FL_SUBMENU_POINTER);}
+  int checkbox() const {return flags&FL_MENU_TOGGLE;}
+  int radio() const {return flags&FL_MENU_RADIO;}
+  int value() const {return flags&FL_MENU_VALUE;}
+  int visible() const {return !(flags&FL_MENU_INVISIBLE);}
+  int active() const {return !(flags&FL_MENU_INACTIVE);}
+  int activevisible() const {return !(flags&0x11);}
+
+  void label(const char* a) {text=a;}
+  void label(fltk::LabelType* a,const char* b) {labeltype_ = a; text = b;}
+  void labeltype(fltk::LabelType* a) {labeltype_ = a;}
+  void labelcolor(uchar a) {labelcolor_ = a;}
+  void labelfont(fltk::Font* a) {labelfont_ = a;}
+  void labelsize(uchar a) {labelsize_ = a;}
+  void callback(fltk::Callback* c, void* p) {callback_=c; user_data_=p;}
+  void callback(fltk::Callback* c) {callback_=c;}
+  void callback(fltk::Callback0*c) {callback_=(fltk::Callback*)c;}
+  void callback(fltk::Callback1*c, long p=0) {callback_=(fltk::Callback*)c; user_data_=(void*)p;}
+  void user_data(void* v) {user_data_ = v;}
+  void argument(long v) {user_data_ = (void*)v;}
+  void shortcut(int s) {shortcut_ = s;}
+  void set() {flags |= FL_MENU_VALUE;}
+  void clear() {flags &= ~FL_MENU_VALUE;}
+  void setonly();
+  void show() {flags &= ~FL_MENU_INVISIBLE;}
+  void hide() {flags |= FL_MENU_INVISIBLE;}
+  void activate() {flags &= ~FL_MENU_INACTIVE;}
+  void deactivate() {flags |= FL_MENU_INACTIVE;}
+
+  const Fl_Menu_Item* find_shortcut(int *ip=0) const;
+
+  void do_callback(fltk::Widget* o) const {callback_(o, user_data_);}
+  void do_callback(fltk::Widget* o,void* arg) const {callback_(o, arg);}
+  void do_callback(fltk::Widget* o,long arg) const {callback_(o, (void*)arg);}
+
+  // back-compatability, do not use:
+  int checked() const {return flags&FL_MENU_VALUE;}
+  void check() {flags |= FL_MENU_VALUE;}
+  void uncheck() {flags &= ~FL_MENU_VALUE;}
+
+#if 0
+  int add(const char*, int shortcut, fltk::Callback*, void* =0, int = 0);
+  int add(const char*a, const char* b, fltk::Callback* c,
+	  void* d = 0, int e = 0) {
+    return add(a,fltk::old_shortcut(b),c,d,e);}
+#endif
+};
+
+typedef Fl_Menu_Item Fl_Menu; // back compatability with fltk < 1.0
+
+enum {	// back-compatability enum:
+  FL_PUP_NONE	= 0,
+  FL_PUP_GREY	= FL_MENU_INACTIVE,
+  FL_PUP_GRAY	= FL_MENU_INACTIVE,
+  FL_MENU_BOX	= FL_MENU_TOGGLE,
+  FL_PUP_BOX	= FL_MENU_TOGGLE,
+  FL_MENU_CHECK	= FL_MENU_VALUE,
+  FL_PUP_CHECK	= FL_MENU_VALUE,
+  FL_PUP_RADIO	= FL_MENU_RADIO,
+  FL_PUP_INVISIBLE = FL_MENU_INVISIBLE,
+  FL_PUP_SUBMENU = FL_SUBMENU_POINTER
+};
+
+#endif
+
+//
+// End of "$Id: Fl_Menu_Item.H 2918 2003-01-19 07:55:01Z spitzak $".
+//
Index: NonGTP/FLTK/include/FL/Fl_Scrollbar.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Scrollbar.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Scrollbar.H	(revision 773)
@@ -0,0 +1,13 @@
+#ifndef Fl_Scrollbar_H
+#define Fl_Scrollbar_H
+
+#include "Fl_Slider.H"
+#include <fltk/Scrollbar.h>
+
+class Fl_Scrollbar : public fltk::Scrollbar {
+public:
+  Fl_Scrollbar(int x, int y, int w, int h, const char*l = 0)
+    : fltk::Scrollbar(x,y,w,h,l) {set_vertical();}
+};
+
+#endif
Index: NonGTP/FLTK/include/FL/Fl_Widget.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Widget.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Widget.H	(revision 773)
@@ -0,0 +1,19 @@
+#ifndef Fl_Widget_H
+#define Fl_Widget_H
+
+#include "Enumerations.H"
+#define FLTK_1_WIDGET 1
+#include <fltk/Widget.h>
+
+typedef fltk::Widget Fl_Widget;
+
+typedef fltk::Callback Fl_Callback;
+typedef Fl_Callback* Fl_Callback_p; // needed for BORLAND
+typedef fltk::Callback0 Fl_Callback0;
+typedef fltk::Callback1 Fl_Callback1;
+
+enum {
+  FL_RESERVED_TYPE 	= fltk::Widget::RESERVED_TYPE
+};
+
+#endif
Index: NonGTP/FLTK/include/FL/README
===================================================================
--- NonGTP/FLTK/include/FL/README	(revision 773)
+++ NonGTP/FLTK/include/FL/README	(revision 773)
@@ -0,0 +1,35 @@
+These header files are for back-compatability with fltk1.x.  Do not
+use these header files in new programs. Use the ones in the fltk
+directory.
+
+Most fltk1.x programs should compile with no changes by using these
+header files and linking with the fltk2.0 library.
+
+Known changes that must be done to fltk1.1 code to make them compile:
+
+Widgets inside groups will need their x,y coordinates fixed as they
+are now relative to the group, not the window.
+
+FL_BOLD, FL_ITALIC - these symbols used to be added to fonts to get
+bold and italic. This no longer works. You should replace them with
+the single symbol for the font (like FL_HELVETICA_BOLD in place of
+FL_HELVETICA+FL_BOLD) or use font->plus(attributes).
+
+Drawing functions are only roughly emulated. You may need to add casts
+to float to get your compiler to locate the correct functions. And if
+you offset by the x,y of the widget you need to remove these offsets.
+
+Some new members of widgets may hide global data. For instance "width"
+and "height" are now members. You can fix this by putting "::" in
+front of the global data names.
+
+If you use the Fl_Browser you are probably going to have trouble. All
+the indexes are offset by 1 from fltk1.1, ie the first item has an
+index of zero, not 1. Adding items with forward slashes in them will
+produce a hierarchy, which is pretty confusing when you don't plan on
+it.
+
+Menu and browser callbacks: the widget passed is the item, not the
+menu or browser. If you use o->parent() to find what window it is in
+you will have to change this, in most cases you can use o->window().
+
Index: NonGTP/FLTK/include/FL/x.H
===================================================================
--- NonGTP/FLTK/include/FL/x.H	(revision 773)
+++ NonGTP/FLTK/include/FL/x.H	(revision 773)
@@ -0,0 +1,24 @@
+// This emulation header was designed to get flwm to compile. It
+// probably does not work for any other x fltk program.
+
+#ifndef Fl_X_H
+#define Fl_X_H
+
+#include "Enumerations.H"
+#include <fltk/x.h>
+
+#define Fl_X		fltk::CreatedWindow
+#define fl_display	fltk::xdisplay
+#define fl_screen	fltk::xscreen
+#define fl_xevent	(&fltk::xevent)
+#define fl_colormap	fltk::xcolormap
+#define fl_open_display	fltk::open_display
+#define fl_visual	fltk::xvisual
+#define fl_xid(w)	fltk::xid(w)
+#define fl_event_time	fltk::event_time
+#define fl_xpixel(x)	fltk::xpixel(x)
+#define fl_window	fltk::xwindow
+#define fl_gc		fltk::gc
+#define fl_xfont	fltk::xfont()
+
+#endif
Index: NonGTP/FLTK/include/FL/Fl_Menu_Bar.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Menu_Bar.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Menu_Bar.H	(revision 773)
@@ -0,0 +1,8 @@
+#ifndef Fl_Menu_Bar_H
+#define Fl_Menu_Bar_H
+
+#include "Fl_Menu_.H"
+#include <fltk/MenuBar.h>
+typedef fltk::MenuBar Fl_Menu_Bar;
+
+#endif
Index: NonGTP/FLTK/include/FL/Fl_Box.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Box.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Box.H	(revision 773)
@@ -0,0 +1,17 @@
+//
+// "$Id: Fl_Box.H 2921 2003-01-19 22:37:00Z spitzak $"
+//
+// Back-compatability widget.
+
+#ifndef Fl_Box_H
+#define Fl_Box_H
+
+#include "Fl_Widget.H"
+#include <fltk/InvisibleBox.h>
+typedef fltk::InvisibleBox Fl_Box;
+
+#endif
+
+//
+// End of "$Id: Fl_Box.H 2921 2003-01-19 22:37:00Z spitzak $".
+//
Index: NonGTP/FLTK/include/FL/Fl_Hold_Browser.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Hold_Browser.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Hold_Browser.H	(revision 773)
@@ -0,0 +1,8 @@
+#ifndef Fl_Hold_Browser_H
+#define Fl_Hold_Browser_H
+
+#include "Fl_Browser.H"
+typedef Fl_Browser Fl_Hold_Browser;
+
+#endif
+
Index: NonGTP/FLTK/include/FL/Fl_Gl_Window.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Gl_Window.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Gl_Window.H	(revision 773)
@@ -0,0 +1,9 @@
+#ifndef Fl_Gl_Window_H
+#define Fl_Gl_Window_H
+
+#include "Fl_Window.H"
+
+#include <fltk/GlWindow.h>
+typedef fltk::GlWindow Fl_Gl_Window;
+
+#endif
Index: NonGTP/FLTK/include/FL/mac.r
===================================================================
--- NonGTP/FLTK/include/FL/mac.r	(revision 773)
+++ NonGTP/FLTK/include/FL/mac.r	(revision 773)
@@ -0,0 +1,13 @@
+data 'MBAR' (128) {
+	$"0001 0080"                                          /* ...x */
+};
+
+data 'MENU' (128, "Apple") {
+	$"0080 0000 0000 0000 0000 FFFF FFFB 0114"            /* .x........xxxx.. */
+	$"0A41 626F 7574 2046 4C54 4B00 0000 0001"            /* xAbout FLTK..... */
+	$"2D00 0000 0000"                                     /* -..... */
+};
+
+data 'carb' (0) {
+};
+
Index: NonGTP/FLTK/include/FL/Fl_Choice.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Choice.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Choice.H	(revision 773)
@@ -0,0 +1,8 @@
+#ifndef Fl_Choice_H
+#define Fl_Choice_H
+
+#include "Fl_Menu_.H"
+#include <fltk/Choice.h>
+typedef fltk::Choice Fl_Choice;
+
+#endif
Index: NonGTP/FLTK/include/FL/glut.H
===================================================================
--- NonGTP/FLTK/include/FL/glut.H	(revision 773)
+++ NonGTP/FLTK/include/FL/glut.H	(revision 773)
@@ -0,0 +1,2 @@
+#include "Fl_Widget.H"
+#include <fltk/glut.h>
Index: NonGTP/FLTK/include/FL/Fl_Clock.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Clock.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Clock.H	(revision 773)
@@ -0,0 +1,18 @@
+#ifndef Fl_Clock_H
+#define Fl_Clock_H
+
+#include "Fl_Widget.H"
+#include <fltk/Clock.h>
+
+typedef fltk::ClockOutput Fl_Clock_Output;
+typedef fltk::Clock Fl_Clock;
+
+enum {
+  FL_SQUARE_CLOCK	= fltk::Clock::SQUARE,
+  FL_ROUND_CLOCK	= fltk::Clock::ROUND,
+  FL_ANALOG_CLOCK	= fltk::Clock::SQUARE,
+  FL_DIGITAL_CLOCK	= fltk::Clock::DIGITAL // nyi
+};
+
+#endif
+
Index: NonGTP/FLTK/include/FL/fl_draw.H
===================================================================
--- NonGTP/FLTK/include/FL/fl_draw.H	(revision 773)
+++ NonGTP/FLTK/include/FL/fl_draw.H	(revision 773)
@@ -0,0 +1,210 @@
+#ifndef fl_draw_H
+#define fl_draw_H
+
+#include "Enumerations.H"
+#include <fltk/draw.h>
+
+inline void fl_color(fltk::Color c) {fltk::setcolor(c);}
+inline void fl_color(uchar r, uchar g, uchar b) {fltk::setcolor(fltk::color(r,g,b));}
+inline fltk::Color fl_color() {return fltk::getcolor();}
+
+// clip:
+inline void fl_push_clip(int x, int y, int w, int h) {fltk::push_clip(fltk::Rectangle(x,y,w,h));}
+#define fl_clip		fl_push_clip
+#define fl_pop_clip	fltk::pop_clip
+inline int fl_not_clipped(int x, int y, int w, int h) {return fltk::not_clipped(fltk::Rectangle(x,y,w,h));}
+inline int fl_clip_box(int X, int Y, int W, int H, int& x, int& y, int& w, int& h) {
+  fltk::Rectangle r(X,Y,W,H);
+  int i = intersect_with_clip(r);
+  x = r.x(); y = r.y(); w = r.w(); h = r.h();
+  return i;
+}
+
+// points:
+inline void fl_point(int x, int y) {fltk::addvertex(x,y); fltk::drawpoints();}
+
+// line type:
+#define fl_line_style	fltk::line_style
+enum {
+  FL_SOLID	= fltk::SOLID,
+  FL_DASH	= fltk::DASH,
+  FL_DOT	= fltk::DOT,
+  FL_DASHDOT	= fltk::DASHDOT,
+  FL_DASHDOTDOT	= fltk::DASHDOTDOT,
+  FL_CAP_FLAT	= fltk::CAP_FLAT,
+  FL_CAP_ROUND	= fltk::CAP_ROUND,
+  FL_CAP_SQUARE	= fltk::CAP_SQUARE,
+  FL_JOIN_MITER	= fltk::JOIN_MITER,
+  FL_JOIN_ROUND	= fltk::JOIN_ROUND,
+  FL_JOIN_BEVEL	= fltk::JOIN_BEVEL
+};
+
+// rectangles tweaked to exactly fill the pixel rectangle:
+inline void fl_rect(int x, int y, int w, int h) {fltk::strokerect(fltk::Rectangle(x,y,w,h));}
+inline void fl_rect(int x, int y, int w, int h, fltk::Color c) {fltk::setcolor(c); fltk::strokerect(fltk::Rectangle(x,y,w,h));}
+inline void fl_rectf(int x, int y, int w, int h) {fltk::fillrect(fltk::Rectangle(x,y,w,h));}
+inline void fl_rectf(int x, int y, int w, int h, fltk::Color c) {fltk::setcolor(c); fltk::fillrect(fltk::Rectangle(x,y,w,h));}
+
+// line segments:
+inline void fl_line(int x0,int y0, int x1,int y1) {fltk::drawline(x0,y0,x1,y1);}
+inline void fl_line(int x0,int y0, int x1,int y1, int x2,int y2) {
+  fltk::addvertex(x0,y0);
+  fltk::addvertex(x1,y1);
+  fltk::addvertex(x2,y2);
+  fltk::strokepath();
+}
+
+// closed line segments:
+inline void fl_loop(int x0,int y0, int x1,int y1, int x2,int y2) {
+  fltk::addvertex(x0,y0);
+  fltk::addvertex(x1,y1);
+  fltk::addvertex(x2,y2);
+  fltk::closepath();
+  fltk::strokepath();
+}
+inline void fl_loop(int x0,int y0, int x1,int y1, int x2,int y2, int x3,int y3) {
+  fltk::addvertex(x0,y0);
+  fltk::addvertex(x1,y1);
+  fltk::addvertex(x2,y2);
+  fltk::addvertex(x3,y3);
+  fltk::closepath();
+  fltk::strokepath();
+}
+
+// filled polygons
+inline void fl_polygon(int x0,int y0, int x1,int y1, int x2,int y2) {
+  fltk::addvertex(x0,y0);
+  fltk::addvertex(x1,y1);
+  fltk::addvertex(x2,y2);
+  fltk::closepath();
+  fltk::fillpath();
+}
+inline void fl_polygon(int x0,int y0, int x1,int y1, int x2,int y2, int x3,int y3) {
+  fltk::addvertex(x0,y0);
+  fltk::addvertex(x1,y1);
+  fltk::addvertex(x2,y2);
+  fltk::addvertex(x3,y3);
+  fltk::closepath();
+  fltk::fillpath();
+}
+
+// draw rectilinear lines, horizontal segment first:
+inline void fl_xyline(int x, int y, int x1) {
+  fltk::drawline(x,y,x1,y);
+}
+inline void fl_xyline(int x, int y, int x1, int y2) {
+  fltk::addvertex(x,y);
+  fltk::addvertex(x1,y);
+  fltk::addvertex(x1,y2);
+  fltk::strokepath();
+}
+inline void fl_xyline(int x, int y, int x1, int y2, int x3) {
+  fltk::addvertex(x,y);
+  fltk::addvertex(x1,y);
+  fltk::addvertex(x1,y2);
+  fltk::addvertex(x3,y2);
+  fltk::strokepath();
+}
+
+// draw rectilinear lines, vertical segment first:
+inline void fl_yxline(int x, int y, int y1) {
+  fltk::drawline(x,y,x,y1);
+}
+inline void fl_yxline(int x, int y, int y1, int x2) {
+  fltk::addvertex(x,y);
+  fltk::addvertex(x,y1);
+  fltk::addvertex(x2,y1);
+  fltk::strokepath();
+}
+inline void fl_yxline(int x, int y, int y1, int x2, int y3) {
+  fltk::addvertex(x,y);
+  fltk::addvertex(x,y1);
+  fltk::addvertex(x2,y1);
+  fltk::addvertex(x2,y3);
+  fltk::strokepath();
+}
+
+inline void fl_arc(int x,int y,int w,int h,float a,float a2) {fltk::addchord(fltk::Rectangle(x,y,w,h),a,a2); fltk::strokepath();}
+inline void fl_pie(int x,int y,int w,int h,float a,float a2) {fltk::addpie(fltk::Rectangle(x,y,w,h),a,a2); fltk::fillpath();}
+inline void fl_chord(int x,int y,int w,int h,float a,float a2) {fltk::addchord(fltk::Rectangle(x,y,w,h),a,a2); fltk::fillpath();}
+
+// scalable drawing code (code in fl_vertex.C and fl_arc.C):
+#define fl_push_matrix	fltk::push_matrix
+#define fl_pop_matrix	fltk::pop_matrix
+#define fl_scale	fltk::scale
+#define fl_translate	fltk::translate
+#define fl_rotate	fltk::rotate
+#define fl_mult_matrix	fltk::concat
+#define fl_begin_points	fltk::newpath
+#define fl_begin_line	fltk::newpath
+#define fl_begin_loop	fltk::newpath
+#define fl_begin_polygon fltk::newpath
+#define fl_vertex	fltk::addvertex
+#define fl_curve	fltk::addcurve
+inline void fl_arc(float x,float y,float r, float a1, float a2) {fltk::addarc(x-r,y-r,2*r,2*r,a1,a2);}
+#define fl_circle	fltk::addcircle
+#define fl_end_points	fltk::drawpoints
+#define fl_end_line	fltk::strokepath
+inline void fl_end_loop() {fltk::closepath();fltk::strokepath();}
+#define fl_end_polygon	fltk::fillpath
+#define fl_begin_complex_polygon fltk::newpath
+#define fl_gap		fltk::closepath
+#define fl_end_complex_polygon	fltk::fillpath
+
+// current font: (size was an int in fltk1.1)
+inline void fl_font(fltk::Font* f, float size) {fltk::setfont(f,size);}
+inline void fl_font(int f, float size) {fltk::setfont(fltk::font(f),size);}
+inline fltk::Font* fl_font() {return fltk::getfont();}
+inline float fl_size() {return fltk::getsize();}
+
+// information you can get about the current font:
+inline float fl_height() {return fltk::getascent()+fltk::getdescent();}
+inline float fl_height(int, float size) {return size;}
+inline float fl_descent() {return fltk::getdescent();}
+inline float fl_width(const char* c) {return fltk::getwidth(c);}
+inline float fl_width(const char* c, int n) {return fltk::getwidth(c,n);}
+inline float fl_width(char c) {return fltk::getwidth(&c,1);}
+
+// draw using current font:
+inline void fl_draw(const char* s, int x, int y) {fltk::drawtext(s,x,y);}
+inline void fl_draw(const char* s, int n, int x, int y) {fltk::drawtext(s,n,x,y);}
+inline void fl_measure(const char* s, int& x, int& y) {fltk::measure(s,x,y);}
+inline void fl_draw(const char* s, int x,int y,int w,int h, fltk::Flags f) {fltk::drawtext(s,fltk::Rectangle(x,y,w,h),f);}
+
+// boxtypes:
+//void fl_frame(const char* s, int x, int y, int w, int h);
+//void fl_frame2(const char* s, int x, int y, int w, int h);
+// This no longer works because boxes take a style, not a color:
+//  #include <fltk/Box.h>
+//  inline void fl_draw_box(fltk::Box* b, int x, int y, int w, int h, fltk::Color c) {b->draw(x,y,w,h,c);}
+
+// images:
+static inline fltk::PixelType fromdelta(int d) {return d==1?fltk::MONO:d==3?fltk::RGB:fltk::RGBx;}
+inline void fl_draw_image(const uchar* p, int x,int y,int w,int h, int delta, int ldelta) {fltk::drawimage(p,fromdelta(delta),fltk::Rectangle(x,y,w,h),ldelta);}
+inline void fl_draw_image(const uchar* p, int x,int y,int w,int h, int delta) {fltk::drawimage(p,fromdelta(delta),fltk::Rectangle(x,y,w,h));}
+
+inline void fl_draw_image_mono(const uchar* p, int x,int y,int w,int h, int delta, int ldelta) {fltk::drawimage(p,fltk::MONO,fltk::Rectangle(x,y,w,h),ldelta);}
+inline void fl_draw_image_mono(const uchar* p, int x,int y,int w,int h, int delta=1) {fltk::drawimage(p,fltk::MONO,fltk::Rectangle(x,y,w,h));}
+
+typedef fltk::DrawImageCallback Fl_Draw_Image_Cb;
+inline void fl_draw_image(Fl_Draw_Image_Cb cb, void* p, int x,int y,int w,int h, int delta=3) {fltk::drawimage(cb,p,fromdelta(delta),fltk::Rectangle(x,y,w,h));}
+inline void fl_draw_image_mono(Fl_Draw_Image_Cb cb, void* p, int x,int y,int w,int h, int delta=1) {fltk::drawimage(cb,p,fltk::MONO,fltk::Rectangle(x,y,w,h));}
+
+inline uchar *fl_read_image(uchar *p, int x,int y, int w, int h, int alpha=0) {return fltk::readimage(p, alpha?fltk::RGBA:fltk::RGB, fltk::Rectangle(x,y,w,h));}
+
+inline void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) {fltk::setcolor(fltk::color(r,g,b)); fltk::fillrect(fltk::Rectangle(x,y,w,h));}
+
+#define fl_draw_pixmap		fltk::draw_xpm
+#define fl_measure_pixmap	fltk::measure_xpm
+#define fl_scroll		fltk::scrollrect
+#define fl_shortcut_label	fltk::key_name
+#define fl_overlay_rect		fltk::overlay_rect
+#define fl_overlay_clear	fltk::overlay_clear
+#define fl_draw_symbol		fltk::draw_symbol
+#define fl_add_symbol		fltk::add_symbol
+
+#endif
+
+//
+// End of "$Id: fl_draw.H 4408 2005-07-09 06:41:56Z spitzak $".
+//
Index: NonGTP/FLTK/include/FL/Fl_Menu_Button.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Menu_Button.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Menu_Button.H	(revision 773)
@@ -0,0 +1,8 @@
+#ifndef Fl_Menu_Button_H
+#define Fl_Menu_Button_H
+
+#include "Fl_Menu_.H"
+#include <fltk/PopupMenu.h>
+typedef fltk::PopupMenu Fl_Menu_Button;
+
+#endif
Index: NonGTP/FLTK/include/FL/Fl_Color_Chooser.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Color_Chooser.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Color_Chooser.H	(revision 773)
@@ -0,0 +1,8 @@
+#ifndef Fl_Color_Chooser_H
+#define Fl_Color_Chooser_H
+
+#include <fltk/ColorChooser.h>
+typedef fltk::ColorChooser Fl_Color_Chooser;
+#define fl_color_chooser fltk::color_chooser
+
+#endif
Index: NonGTP/FLTK/include/FL/Fl_Window.H
===================================================================
--- NonGTP/FLTK/include/FL/Fl_Window.H	(revision 773)
+++ NonGTP/FLTK/include/FL/Fl_Window.H	(revision 773)
@@ -0,0 +1,22 @@
+#ifndef Fl_Window_H
+#define Fl_Window_H
+
+#include "Fl_Group.H"
+#include <fltk/Window.h>
+
+class Fl_Window : public fltk::Window {
+
+public:
+  Fl_Window(int x, int y, int w, int h, const char*l = 0)
+    : fltk::Window(x,y,w,h,l) {begin();}
+    
+  Fl_Window(int x, int y, const char*l = 0)
+    : fltk::Window(x,y,l) {begin();}
+
+  void border(bool v) {
+    if (!v) clear_border(); // set_border does not work
+  }
+};
+
+#endif
+
