FLTK logo

[Library] r7368 - in branches/branch-3.0: . FL fltk fltk3 ide/Xcode3/FLTK.xcodeproj src src/xutf8 test

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.commit  ]
 
Previous Message ]Next Message ]

[Library] r7368 - in branches/branch-3.0: . FL fltk fltk3 ide/Xcode3/FLTK.xcodeproj src src/xutf8 test fltk-dev Mar 30, 2010  
 
Author: matt
Date: 2010-03-30 12:10:49 -0700 (Tue, 30 Mar 2010)
New Revision: 7368
Log:
Another huge one: moved headers to fltk3, add fltk2 headers in fltk

Added:
   branches/branch-3.0/fltk/
   branches/branch-3.0/fltk/Adjuster.h
   branches/branch-3.0/fltk/AlignGroup.h
   branches/branch-3.0/fltk/AnsiWidget.h
   branches/branch-3.0/fltk/BarGroup.h
   branches/branch-3.0/fltk/Box.h
   branches/branch-3.0/fltk/Browser.h
   branches/branch-3.0/fltk/Button.h
   branches/branch-3.0/fltk/CheckButton.h
   branches/branch-3.0/fltk/Choice.h
   branches/branch-3.0/fltk/Clock.h
   branches/branch-3.0/fltk/Color.h
   branches/branch-3.0/fltk/ColorChooser.h
   branches/branch-3.0/fltk/ComboBox.h
   branches/branch-3.0/fltk/Cursor.h
   branches/branch-3.0/fltk/CycleButton.h
   branches/branch-3.0/fltk/Dial.h
   branches/branch-3.0/fltk/Divider.h
   branches/branch-3.0/fltk/DoubleBufferWindow.h
   branches/branch-3.0/fltk/FL_API.h
   branches/branch-3.0/fltk/FL_VERSION.h
   branches/branch-3.0/fltk/FileBrowser.h
   branches/branch-3.0/fltk/FileChooser.h
   branches/branch-3.0/fltk/FileIcon.h
   branches/branch-3.0/fltk/FileInput.h
   branches/branch-3.0/fltk/FillDial.h
   branches/branch-3.0/fltk/FillSlider.h
   branches/branch-3.0/fltk/Flags.h
   branches/branch-3.0/fltk/FloatInput.h
   branches/branch-3.0/fltk/Font.h
   branches/branch-3.0/fltk/GlWindow.h
   branches/branch-3.0/fltk/Group.h
   branches/branch-3.0/fltk/HelpDialog.h
   branches/branch-3.0/fltk/HelpView.h
   branches/branch-3.0/fltk/HighlightButton.h
   branches/branch-3.0/fltk/Image.h
   branches/branch-3.0/fltk/Input.h
   branches/branch-3.0/fltk/InputBrowser.h
   branches/branch-3.0/fltk/IntInput.h
   branches/branch-3.0/fltk/InvisibleBox.h
   branches/branch-3.0/fltk/Item.h
   branches/branch-3.0/fltk/ItemGroup.h
   branches/branch-3.0/fltk/LabelType.h
   branches/branch-3.0/fltk/LightButton.h
   branches/branch-3.0/fltk/LineDial.h
   branches/branch-3.0/fltk/Menu.h
   branches/branch-3.0/fltk/MenuBar.h
   branches/branch-3.0/fltk/MenuBuild.h
   branches/branch-3.0/fltk/MenuWindow.h
   branches/branch-3.0/fltk/Monitor.h
   branches/branch-3.0/fltk/MultiBrowser.h
   branches/branch-3.0/fltk/MultiImage.h
   branches/branch-3.0/fltk/MultiLineInput.h
   branches/branch-3.0/fltk/MultiLineOutput.h
   branches/branch-3.0/fltk/NumericInput.h
   branches/branch-3.0/fltk/Output.h
   branches/branch-3.0/fltk/PackedGroup.h
   branches/branch-3.0/fltk/PixelType.h
   branches/branch-3.0/fltk/PopupMenu.h
   branches/branch-3.0/fltk/Preferences.h
   branches/branch-3.0/fltk/ProgressBar.h
   branches/branch-3.0/fltk/README
   branches/branch-3.0/fltk/RadioButton.h
   branches/branch-3.0/fltk/RadioItem.h
   branches/branch-3.0/fltk/RadioLightButton.h
   branches/branch-3.0/fltk/Rectangle.h
   branches/branch-3.0/fltk/RepeatButton.h
   branches/branch-3.0/fltk/ReturnButton.h
   branches/branch-3.0/fltk/ScrollGroup.h
   branches/branch-3.0/fltk/Scrollbar.h
   branches/branch-3.0/fltk/SecretInput.h
   branches/branch-3.0/fltk/ShapedWindow.h
   branches/branch-3.0/fltk/SharedImage.h
   branches/branch-3.0/fltk/Slider.h
   branches/branch-3.0/fltk/StatusBarGroup.h
   branches/branch-3.0/fltk/StringList.h
   branches/branch-3.0/fltk/Style.h
   branches/branch-3.0/fltk/StyleSet.h
   branches/branch-3.0/fltk/Symbol.h
   branches/branch-3.0/fltk/SystemMenuBar.h
   branches/branch-3.0/fltk/TabGroup.h
   branches/branch-3.0/fltk/TextBuffer.h
   branches/branch-3.0/fltk/TextDisplay.h
   branches/branch-3.0/fltk/TextEditor.h
   branches/branch-3.0/fltk/Threads.h
   branches/branch-3.0/fltk/ThumbWheel.h
   branches/branch-3.0/fltk/TiledGroup.h
   branches/branch-3.0/fltk/TiledImage.h
   branches/branch-3.0/fltk/ToggleButton.h
   branches/branch-3.0/fltk/ToggleItem.h
   branches/branch-3.0/fltk/Tooltip.h
   branches/branch-3.0/fltk/Valuator.h
   branches/branch-3.0/fltk/ValueInput.h
   branches/branch-3.0/fltk/ValueOutput.h
   branches/branch-3.0/fltk/ValueSlider.h
   branches/branch-3.0/fltk/Widget.h
   branches/branch-3.0/fltk/WidgetAssociation.h
   branches/branch-3.0/fltk/Window.h
   branches/branch-3.0/fltk/WizardGroup.h
   branches/branch-3.0/fltk/WordwrapInput.h
   branches/branch-3.0/fltk/WordwrapOutput.h
   branches/branch-3.0/fltk/ask.h
   branches/branch-3.0/fltk/damage.h
   branches/branch-3.0/fltk/dirent.h
   branches/branch-3.0/fltk/draw.h
   branches/branch-3.0/fltk/error.h
   branches/branch-3.0/fltk/events.h
   branches/branch-3.0/fltk/file_chooser.h
   branches/branch-3.0/fltk/filename.h
   branches/branch-3.0/fltk/fltk_cairo.h
   branches/branch-3.0/fltk/forms.h
   branches/branch-3.0/fltk/gl.h
   branches/branch-3.0/fltk/gl2opengl.h
   branches/branch-3.0/fltk/glut.h
   branches/branch-3.0/fltk/layout.h
   branches/branch-3.0/fltk/load_plugin.h
   branches/branch-3.0/fltk/mac.r
   branches/branch-3.0/fltk/math.h
   branches/branch-3.0/fltk/osx.h
   branches/branch-3.0/fltk/pnmImage.h
   branches/branch-3.0/fltk/rgbImage.h
   branches/branch-3.0/fltk/run.h
   branches/branch-3.0/fltk/show_colormap.h
   branches/branch-3.0/fltk/string.h
   branches/branch-3.0/fltk/string.h.in
   branches/branch-3.0/fltk/utf.h
   branches/branch-3.0/fltk/visual.h
   branches/branch-3.0/fltk/win32.h
   branches/branch-3.0/fltk/x.h
   branches/branch-3.0/fltk/x11.h
   branches/branch-3.0/fltk/xbmImage.h
   branches/branch-3.0/fltk/xpmImage.h
   branches/branch-3.0/fltk3/Group.h
   branches/branch-3.0/fltk3/Widget.h
   branches/branch-3.0/fltk3/Window.h
   branches/branch-3.0/fltk3/run.h
   branches/branch-3.0/test/hello1.cxx
   branches/branch-3.0/test/hello2.cxx
Removed:
   branches/branch-3.0/fltk3/Fl.H
   branches/branch-3.0/fltk3/Fl_Group.H
   branches/branch-3.0/fltk3/Fl_Widget.H
   branches/branch-3.0/fltk3/Fl_Window.H
Modified:
   branches/branch-3.0/FL/Fl_File_Input.H
   branches/branch-3.0/FL/Fl_Native_File_Chooser.H
   branches/branch-3.0/FL/Fl_Native_File_Chooser_FLTK.H
   branches/branch-3.0/FL/Fl_PSfile_Device.H
   branches/branch-3.0/FL/Fl_Tree_Item_Array.H
   branches/branch-3.0/FL/Fl_Tree_Prefs.H
   branches/branch-3.0/FL/filename.H
   branches/branch-3.0/FL/fl_utf8.h
   branches/branch-3.0/FL/gl2opengl.h
   branches/branch-3.0/FL/math.h
   branches/branch-3.0/fltk3/Fl_Box.H
   branches/branch-3.0/fltk3/Fl_Browser_.H
   branches/branch-3.0/fltk3/Fl_Button.H
   branches/branch-3.0/fltk3/Fl_Cairo_Window.H
   branches/branch-3.0/fltk3/Fl_Chart.H
   branches/branch-3.0/fltk3/Fl_Check_Browser.H
   branches/branch-3.0/fltk3/Fl_Clock.H
   branches/branch-3.0/fltk3/Fl_Color_Chooser.H
   branches/branch-3.0/fltk3/Fl_Double_Window.H
   branches/branch-3.0/fltk3/Fl_File_Chooser.H
   branches/branch-3.0/fltk3/Fl_File_Icon.H
   branches/branch-3.0/fltk3/Fl_Free.H
   branches/branch-3.0/fltk3/Fl_Gl_Window.H
   branches/branch-3.0/fltk3/Fl_Help_Dialog.H
   branches/branch-3.0/fltk3/Fl_Help_View.H
   branches/branch-3.0/fltk3/Fl_Input_.H
   branches/branch-3.0/fltk3/Fl_Input_Choice.H
   branches/branch-3.0/fltk3/Fl_Menu_.H
   branches/branch-3.0/fltk3/Fl_Menu_Item.H
   branches/branch-3.0/fltk3/Fl_Object.H
   branches/branch-3.0/fltk3/Fl_Pack.H
   branches/branch-3.0/fltk3/Fl_Positioner.H
   branches/branch-3.0/fltk3/Fl_Progress.H
   branches/branch-3.0/fltk3/Fl_Repeat_Button.H
   branches/branch-3.0/fltk3/Fl_Scroll.H
   branches/branch-3.0/fltk3/Fl_Single_Window.H
   branches/branch-3.0/fltk3/Fl_Spinner.H
   branches/branch-3.0/fltk3/Fl_Table.H
   branches/branch-3.0/fltk3/Fl_Tabs.H
   branches/branch-3.0/fltk3/Fl_Text_Display.H
   branches/branch-3.0/fltk3/Fl_Tile.H
   branches/branch-3.0/fltk3/Fl_Timer.H
   branches/branch-3.0/fltk3/Fl_Tooltip.H
   branches/branch-3.0/fltk3/Fl_Tree.H
   branches/branch-3.0/fltk3/Fl_Tree_Item.H
   branches/branch-3.0/fltk3/Fl_Valuator.H
   branches/branch-3.0/fltk3/Fl_Wizard.H
   branches/branch-3.0/fltk3/fl_draw.H
   branches/branch-3.0/fltk3/forms.H
   branches/branch-3.0/fltk3/glut.H
   branches/branch-3.0/fltk3/mac.H
   branches/branch-3.0/fltk3/win32.H
   branches/branch-3.0/fltk3/x.H
   branches/branch-3.0/ide/Xcode3/FLTK.xcodeproj/project.pbxproj
   branches/branch-3.0/src/Fl.cxx
   branches/branch-3.0/src/Fl_Abstract_Printer.cxx
   branches/branch-3.0/src/Fl_Adjuster.cxx
   branches/branch-3.0/src/Fl_Bitmap.cxx
   branches/branch-3.0/src/Fl_Box.cxx
   branches/branch-3.0/src/Fl_Browser.cxx
   branches/branch-3.0/src/Fl_Browser_.cxx
   branches/branch-3.0/src/Fl_Browser_load.cxx
   branches/branch-3.0/src/Fl_Button.cxx
   branches/branch-3.0/src/Fl_Chart.cxx
   branches/branch-3.0/src/Fl_Check_Button.cxx
   branches/branch-3.0/src/Fl_Choice.cxx
   branches/branch-3.0/src/Fl_Clock.cxx
   branches/branch-3.0/src/Fl_Color_Chooser.cxx
   branches/branch-3.0/src/Fl_Counter.cxx
   branches/branch-3.0/src/Fl_Device.cxx
   branches/branch-3.0/src/Fl_Dial.cxx
   branches/branch-3.0/src/Fl_Double_Window.cxx
   branches/branch-3.0/src/Fl_File_Icon.cxx
   branches/branch-3.0/src/Fl_File_Icon2.cxx
   branches/branch-3.0/src/Fl_File_Input.cxx
   branches/branch-3.0/src/Fl_Font.H
   branches/branch-3.0/src/Fl_GDI_Printer.cxx
   branches/branch-3.0/src/Fl_GIF_Image.cxx
   branches/branch-3.0/src/Fl_Gl_Choice.cxx
   branches/branch-3.0/src/Fl_Gl_Device_Plugin.cxx
   branches/branch-3.0/src/Fl_Gl_Overlay.cxx
   branches/branch-3.0/src/Fl_Gl_Window.cxx
   branches/branch-3.0/src/Fl_Group.cxx
   branches/branch-3.0/src/Fl_Help_View.cxx
   branches/branch-3.0/src/Fl_Image.cxx
   branches/branch-3.0/src/Fl_Input.cxx
   branches/branch-3.0/src/Fl_Input_.cxx
   branches/branch-3.0/src/Fl_Light_Button.cxx
   branches/branch-3.0/src/Fl_Menu.cxx
   branches/branch-3.0/src/Fl_Menu_.cxx
   branches/branch-3.0/src/Fl_Menu_Bar.cxx
   branches/branch-3.0/src/Fl_Menu_Button.cxx
   branches/branch-3.0/src/Fl_Menu_Window.cxx
   branches/branch-3.0/src/Fl_Menu_global.cxx
   branches/branch-3.0/src/Fl_Multi_Label.cxx
   branches/branch-3.0/src/Fl_Native_File_Chooser_MAC.cxx
   branches/branch-3.0/src/Fl_Native_File_Chooser_WIN32.cxx
   branches/branch-3.0/src/Fl_Native_File_Chooser_common.cxx
   branches/branch-3.0/src/Fl_Overlay_Window.cxx
   branches/branch-3.0/src/Fl_PNG_Image.cxx
   branches/branch-3.0/src/Fl_PNM_Image.cxx
   branches/branch-3.0/src/Fl_PS_Printer.cxx
   branches/branch-3.0/src/Fl_Pack.cxx
   branches/branch-3.0/src/Fl_Pixmap.cxx
   branches/branch-3.0/src/Fl_Positioner.cxx
   branches/branch-3.0/src/Fl_Preferences.cxx
   branches/branch-3.0/src/Fl_Progress.cxx
   branches/branch-3.0/src/Fl_Quartz_Printer.mm
   branches/branch-3.0/src/Fl_Repeat_Button.cxx
   branches/branch-3.0/src/Fl_Return_Button.cxx
   branches/branch-3.0/src/Fl_Roller.cxx
   branches/branch-3.0/src/Fl_Round_Button.cxx
   branches/branch-3.0/src/Fl_Scroll.cxx
   branches/branch-3.0/src/Fl_Scrollbar.cxx
   branches/branch-3.0/src/Fl_Shared_Image.cxx
   branches/branch-3.0/src/Fl_Slider.cxx
   branches/branch-3.0/src/Fl_Sys_Menu_Bar.cxx
   branches/branch-3.0/src/Fl_Table_Row.cxx
   branches/branch-3.0/src/Fl_Tabs.cxx
   branches/branch-3.0/src/Fl_Text_Buffer.cxx
   branches/branch-3.0/src/Fl_Text_Display.cxx
   branches/branch-3.0/src/Fl_Text_Editor.cxx
   branches/branch-3.0/src/Fl_Tile.cxx
   branches/branch-3.0/src/Fl_Tiled_Image.cxx
   branches/branch-3.0/src/Fl_Tree_Item.cxx
   branches/branch-3.0/src/Fl_Tree_Prefs.cxx
   branches/branch-3.0/src/Fl_Valuator.cxx
   branches/branch-3.0/src/Fl_Value_Input.cxx
   branches/branch-3.0/src/Fl_Value_Output.cxx
   branches/branch-3.0/src/Fl_Value_Slider.cxx
   branches/branch-3.0/src/Fl_Widget.cxx
   branches/branch-3.0/src/Fl_Window.cxx
   branches/branch-3.0/src/Fl_Window_fullscreen.cxx
   branches/branch-3.0/src/Fl_Window_hotspot.cxx
   branches/branch-3.0/src/Fl_Wizard.cxx
   branches/branch-3.0/src/Fl_XBM_Image.cxx
   branches/branch-3.0/src/Fl_XColor.H
   branches/branch-3.0/src/Fl_XPM_Image.cxx
   branches/branch-3.0/src/Fl_abort.cxx
   branches/branch-3.0/src/Fl_add_idle.cxx
   branches/branch-3.0/src/Fl_arg.cxx
   branches/branch-3.0/src/Fl_cocoa.mm
   branches/branch-3.0/src/Fl_compose.cxx
   branches/branch-3.0/src/Fl_display.cxx
   branches/branch-3.0/src/Fl_get_key.cxx
   branches/branch-3.0/src/Fl_get_key_mac.cxx
   branches/branch-3.0/src/Fl_get_system_colors.cxx
   branches/branch-3.0/src/Fl_grab.cxx
   branches/branch-3.0/src/Fl_lock.cxx
   branches/branch-3.0/src/Fl_mac.cxx
   branches/branch-3.0/src/Fl_own_colormap.cxx
   branches/branch-3.0/src/Fl_visual.cxx
   branches/branch-3.0/src/Fl_win32.cxx
   branches/branch-3.0/src/Fl_x.cxx
   branches/branch-3.0/src/fl_ask.cxx
   branches/branch-3.0/src/fl_boxtype.cxx
   branches/branch-3.0/src/fl_color.cxx
   branches/branch-3.0/src/fl_color_mac.cxx
   branches/branch-3.0/src/fl_color_win32.cxx
   branches/branch-3.0/src/fl_cursor.cxx
   branches/branch-3.0/src/fl_diamond_box.cxx
   branches/branch-3.0/src/fl_dnd_mac.cxx
   branches/branch-3.0/src/fl_dnd_win32.cxx
   branches/branch-3.0/src/fl_dnd_x.cxx
   branches/branch-3.0/src/fl_draw.cxx
   branches/branch-3.0/src/fl_draw_image.cxx
   branches/branch-3.0/src/fl_draw_image_mac.cxx
   branches/branch-3.0/src/fl_draw_image_win32.cxx
   branches/branch-3.0/src/fl_draw_pixmap.cxx
   branches/branch-3.0/src/fl_engraved_label.cxx
   branches/branch-3.0/src/fl_font.cxx
   branches/branch-3.0/src/fl_gtk.cxx
   branches/branch-3.0/src/fl_labeltype.cxx
   branches/branch-3.0/src/fl_line_style.cxx
   branches/branch-3.0/src/fl_oval_box.cxx
   branches/branch-3.0/src/fl_overlay_visual.cxx
   branches/branch-3.0/src/fl_plastic.cxx
   branches/branch-3.0/src/fl_read_image.cxx
   branches/branch-3.0/src/fl_rect.cxx
   branches/branch-3.0/src/fl_round_box.cxx
   branches/branch-3.0/src/fl_rounded_box.cxx
   branches/branch-3.0/src/fl_scroll_area.cxx
   branches/branch-3.0/src/fl_set_font.cxx
   branches/branch-3.0/src/fl_set_fonts.cxx
   branches/branch-3.0/src/fl_shadow_box.cxx
   branches/branch-3.0/src/fl_shortcut.cxx
   branches/branch-3.0/src/fl_show_colormap.cxx
   branches/branch-3.0/src/fl_symbols.cxx
   branches/branch-3.0/src/fl_vertex.cxx
   branches/branch-3.0/src/flstring.h
   branches/branch-3.0/src/forms_free.cxx
   branches/branch-3.0/src/forms_timer.cxx
   branches/branch-3.0/src/gl_draw.cxx
   branches/branch-3.0/src/gl_start.cxx
   branches/branch-3.0/src/print_panel.h
   branches/branch-3.0/src/ps_image.cxx
   branches/branch-3.0/src/scandir_win32.c
   branches/branch-3.0/src/screen_xywh.cxx
   branches/branch-3.0/src/xutf8/keysym2Ucs.c
   branches/branch-3.0/src/xutf8/utf8Input.c
   branches/branch-3.0/src/xutf8/utf8Utils.c
   branches/branch-3.0/src/xutf8/utf8Wrap.c
   branches/branch-3.0/test/hello.cxx

Modified: branches/branch-3.0/FL/Fl_File_Input.H
===================================================================
--- branches/branch-3.0/FL/Fl_File_Input.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/Fl_File_Input.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 #ifndef Fl_File_Input_H
 #  define Fl_File_Input_H
 
-#  include <FL/Fl_Input.H>
+#  include <fltk3/Fl_Input.H>
 
 /**
   \class Fl_File_Input

Modified: branches/branch-3.0/FL/Fl_Native_File_Chooser.H
===================================================================
--- branches/branch-3.0/FL/Fl_Native_File_Chooser.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/Fl_Native_File_Chooser.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,17 +31,17 @@
 
 // Use Windows' chooser
 #ifdef WIN32
-#include <FL/Fl_Native_File_Chooser_WIN32.H>
+#include <fltk3/Fl_Native_File_Chooser_WIN32.H>
 #endif
 
 // Use Apple's chooser
 #ifdef __APPLE__
-#include <FL/Fl_Native_File_Chooser_MAC.H>
+#include <fltk3/Fl_Native_File_Chooser_MAC.H>
 #endif
 
 // All else falls back to FLTK's own chooser
 #if ! defined(__APPLE__) && !defined(WIN32)
-#include <FL/Fl_Native_File_Chooser_FLTK.H>
+#include <fltk3/Fl_Native_File_Chooser_FLTK.H>
 #endif
 
 #endif /*FL_NATIVE_FILE_CHOOSER_H*/

Modified: branches/branch-3.0/FL/Fl_Native_File_Chooser_FLTK.H
===================================================================
--- branches/branch-3.0/FL/Fl_Native_File_Chooser_FLTK.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/Fl_Native_File_Chooser_FLTK.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
 /* \file
    Fl_Native_File_Chooser widget. */
 
-#include <FL/Fl_File_Chooser.H>
+#include <fltk3/Fl_File_Chooser.H>
 #include <unistd.h>		// _POSIX_NAME_MAX
 
 /**
@@ -43,7 +43,7 @@
   <P>
   \code
   // Create and post the local native file chooser
-  #include <FL/Fl_Native_File_Chooser.H>
+  #include <fltk3/Fl_Native_File_Chooser.H>
   [..]
   Fl_Native_File_Chooser fnfc;
   fnfc.title("Pick a file");

Modified: branches/branch-3.0/FL/Fl_PSfile_Device.H
===================================================================
--- branches/branch-3.0/FL/Fl_PSfile_Device.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/Fl_PSfile_Device.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl_Printer.H> // must stay here
+#include <fltk3/Fl_Printer.H> // must stay here
 
 #ifndef Fl_PSfile_Device_H
 #define Fl_PSfile_Device_H

Modified: branches/branch-3.0/FL/Fl_Tree_Item_Array.H
===================================================================
--- branches/branch-3.0/FL/Fl_Tree_Item_Array.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/Fl_Tree_Item_Array.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -9,7 +9,7 @@
 				// or doxygen will not document our class..
 
 //////////////////////////
-// FL/Fl_Tree_Item_Array.H
+// fltk3/Fl_Tree_Item_Array.H
 //////////////////////////
 //
 // Fl_Tree -- This file is part of the Fl_Tree widget for FLTK

Modified: branches/branch-3.0/FL/Fl_Tree_Prefs.H
===================================================================
--- branches/branch-3.0/FL/Fl_Tree_Prefs.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/Fl_Tree_Prefs.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -6,7 +6,7 @@
 #define FL_TREE_PREFS_H
 
 //////////////////////
-// FL/Fl_Tree_Prefs.H
+// fltk3/Fl_Tree_Prefs.H
 //////////////////////
 //
 // Fl_Tree -- This file is part of the Fl_Tree widget for FLTK

Modified: branches/branch-3.0/FL/filename.H
===================================================================
--- branches/branch-3.0/FL/filename.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/filename.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -37,7 +37,7 @@
 /** Gets the file name from a path. 
     Similar to basename(3), exceptions shown below.
     \code
-    #include <FL/filename.H>
+    #include <fltk3/filename.H>
     [..]
     const char *out;
     out = fl_filename_name("/usr/lib");     // out="lib"

Modified: branches/branch-3.0/FL/fl_utf8.h
===================================================================
--- branches/branch-3.0/FL/fl_utf8.h	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/fl_utf8.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -38,8 +38,8 @@
 #ifndef _HAVE_FL_UTF8_HDR_
 #define _HAVE_FL_UTF8_HDR_
 
-#include "FL/Fl_Export.H"
-#include "FL/fl_types.h"
+#include "fltk3/Fl_Export.H"
+#include "fltk3/fl_types.h"
 
 #include <stdio.h>
 #include <string.h>

Modified: branches/branch-3.0/FL/gl2opengl.h
===================================================================
--- branches/branch-3.0/FL/gl2opengl.h	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/gl2opengl.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -6,7 +6,7 @@
 
 */
 
-#include <FL/gl.h>
+#include <fltk3/gl.h>
 #include "gl_draw.H"
 
 inline void clear() {glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);}

Modified: branches/branch-3.0/FL/math.h
===================================================================
--- branches/branch-3.0/FL/math.h	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/math.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
 #  define fl_math_h
 
 // Apple's ProjectBuilder has the nasty habit of including recursively
-// down the file tree. To avoid re-including <FL/math.h> we must 
+// down the file tree. To avoid re-including <fltk3/math.h> we must 
 // directly include the systems math file. (Plus, I could not find a 
 // predefined macro for ProjectBuilder builds, so we have to define it 
 // in the project)

Added: branches/branch-3.0/fltk/Adjuster.h
===================================================================
--- branches/branch-3.0/fltk/Adjuster.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Adjuster.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,58 @@
+//
+// "$Id: Adjuster.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/AlignGroup.h
===================================================================
--- branches/branch-3.0/fltk/AlignGroup.h	                        (rev 0)
+++ branches/branch-3.0/fltk/AlignGroup.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,65 @@
+// Layout header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2006 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 "Group.h"
+
+namespace fltk {
+
+class FL_API AlignGroup : public Group {
+  bool vertical_;
+  uchar n_to_break_,dw_,dh_;
+  Flags align_;
+
+public:
+
+  void layout();
+
+  // WAS: this should have a begin=false argument added somehow.
+  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

Added: branches/branch-3.0/fltk/AnsiWidget.h
===================================================================
--- branches/branch-3.0/fltk/AnsiWidget.h	                        (rev 0)
+++ branches/branch-3.0/fltk/AnsiWidget.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,93 @@
+// "$Id: Widget.h 5600 2007-01-13 00:04:55Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+// Original code Copyright Chris Warren-Smith.  Permission to distribute under
+// the LGPL for the FLTK library granted by Chris Warren-Smith.
+//
+// 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_ANSI_WIDGET
+#define FL_ANSI_WIDGET
+
+#include <fltk/Widget.h>
+#include <fltk/draw.h>
+#include <fltk/Image.h>
+
+using namespace fltk;
+
+class AnsiWidget : public Widget {
+    public:
+    AnsiWidget(int x, int y, int w, int h, int defsize);
+    virtual ~AnsiWidget();
+
+    // inherited methods
+    void draw();
+    void layout();
+    int handle(int e);
+
+    // public api
+    void clearScreen();
+    void print(const char *str);
+    void drawLine(int x1, int y1, int x2, int y2);
+    void drawRectFilled(int x1, int y1, int x2, int y2);
+    void drawRect(int x1, int y1, int x2, int y2);
+    void drawImage(Image* img, int x, int y, int sx, int sy, int w, int h);
+    void saveImage(const char* fn, int x, int y, int w, int h);
+    void setTextColor(long fg, long bg);
+    void setColor(long color);
+    int getX() {return curX;}
+    int getY() {return curY;}
+    void setPixel(int x, int y, int c);
+    int getPixel(int x, int y);
+    void setXY(int x, int y) {curX=x; curY=y;}
+    int textWidth(const char* s);
+    int textHeight(void);
+    int getWidth()  {return w();}
+    int getHeight() {return h();}
+    void setFontSize(float i) {labelsize(i);}
+    int getFontSize() {return (int)labelsize();}
+    void beep() const;
+    static Color ansiToFltk(long color);
+
+    private:
+    void init();
+    void destroyImage();
+    void initImage();
+    bool setGraphicsRendition(char c, int escValue);
+    bool doEscape(unsigned char *&p);
+    int calcTab(int x) const;
+    void newLine();
+    void reset();
+    void setFont();
+
+    Image* img;
+    bool underline;
+    bool invert;
+    bool bold;
+    bool italic;
+    bool resized;
+    int curY;
+    int curX;
+    int curYSaved;
+    int curXSaved;
+    int tabSize;
+};
+
+#endif
+
+// $Id: Fl_Ansi_Window.h,v 1.23 2006/08/03 10:28:12 zeeb90au Exp $

Added: branches/branch-3.0/fltk/BarGroup.h
===================================================================
--- branches/branch-3.0/fltk/BarGroup.h	                        (rev 0)
+++ branches/branch-3.0/fltk/BarGroup.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,60 @@
+//
+// "$Id: BarGroup.h 5575 2007-01-02 17:31:40Z 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-2006  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 "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,bool begin=false);
+  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 5575 2007-01-02 17:31:40Z spitzak $".
+//

Added: branches/branch-3.0/fltk/Box.h
===================================================================
--- branches/branch-3.0/fltk/Box.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Box.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,75 @@
+//
+// "$Id: Box.h 5865 2007-06-01 13:04:19Z sanel.z $"
+//
+// 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 Box* down_;
+public:
+  const char* data() const {return data_;}
+  void data(const char* d) {data_ = d;}
+  void _draw(const Rectangle&) const;
+  void inset(Rectangle&) const;
+  bool fills_rectangle() const;
+  bool is_frame() const;
+  FrameBox(const char* name, int dx,int dy,int dw,int dh, const char* pattern, const Box* down=0)
+    : Box(name),data_(pattern),down_(down) {set_inset(dx,dy,-dw,-dh);}
+};
+
+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;
+  bool fills_rectangle() const;
+  bool is_frame() const;
+  HighlightBox(const char* n, const Box* d);
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Box.h 5865 2007-06-01 13:04:19Z sanel.z $".
+//

Added: branches/branch-3.0/fltk/Browser.h
===================================================================
--- branches/branch-3.0/fltk/Browser.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Browser.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,214 @@
+// "$Id: Browser.h 6077 2008-03-21 00:14:56Z fabien $"
+//
+// Copyright 2006 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()
+    IS_MULTI = 1,
+    NORMAL =  GROUP_TYPE,  //!< means single selection can be achieved by user 
+    MULTI  =  GROUP_TYPE+1 //!< means multiple selection can be achieved by user
+  };
+  enum { // value for selected_column
+    NO_COLUMN_SELECTED = -1 //!< means that no column has been selected by user
+  };
+
+  class FL_API Mark {
+    friend class Browser;
+    unsigned level; // depth in hierarchy of the item
+    unsigned open_level; // depth of highest closed parent
+    int position;  // distance in pixels from top of browser
+    unsigned indexes_size; // allocated size
+    int* indexes;  // array of indexes
+    int index0;    // used as *indexes if indexes_size==1
+  public:
+    Mark() {
+      level = 0;
+      open_level = 0;
+      position = 0;
+      indexes_size = 1;
+      indexes = &index0;
+      index0 = 0;
+    }
+    Mark(const Mark&);
+    ~Mark() {
+      if (indexes != &index0) delete[] indexes;
+    }
+    const Mark& operator=(const Mark&);
+    int compare(const Mark& mark2) const;
+    void unset() {indexes[0] = -1;}
+    bool is_set() const {return indexes[0] >= 0;}
+  };
+
+  enum linepos {  //!< Argument to make_item_visible()
+    NOSCROLL,	    //!< move as little as possible so item is visible
+    TOP,	    //!< position current item to top
+    MIDDLE,	    //!< position current item to middle
+    BOTTOM	    //!< position current item to bottom
+  };
+
+  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, unsigned level);
+  Widget* goto_index(int);
+  Widget* goto_index(int,int,int=-1,int=-1,int=-1);
+  Widget* goto_mark(const Mark&); // set HERE to mark
+  Widget* next();
+  Widget* next_visible();
+  Widget* previous_visible();
+  bool at_mark(const Mark& mark) const {return !HERE.compare(mark);}
+  int compare_to_mark(const Mark& mark) const {return HERE.compare(mark);}
+  bool item_is_visible() const;
+  bool item_is_parent() const;
+  bool item_is_open() const;
+  int item_h() const;
+
+  bool set_focus();
+  void set_mark(Mark& dest) const {dest = HERE;}
+  void set_mark_to_focus(Mark& dest) const {dest = FOCUS;}
+  bool select(Widget*e, int val, int do_callback=0);
+  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);
+  bool make_item_visible(linepos = NOSCROLL);
+  void damage_item() {damage_item(HERE);}
+  void damage_item(const Mark&); // make this item redraw
+  bool set_item_opened(bool);
+  bool set_item_visible(bool);
+
+  int current_level() const {return HERE.level;}
+  const int* current_index() const {return HERE.indexes;}
+  int current_position() const {return HERE.position;}
+
+  int focus_level() const {return FOCUS.level;}
+  const int* focus_index() const {return FOCUS.indexes;}
+  int focus_position() const {return FOCUS.position;}
+
+  // 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);
+
+  Widget *header(int col) { if(col<0 || col>=nHeader) return 0; return header_[col]; }
+  int nheader() const { return nHeader; }
+
+  // Convienence functions for flat browsers:
+  void value(int v) {goto_index(v); set_focus();}
+  int value() const {return FOCUS.indexes[0];}
+  bool select(int line, bool value = true);
+  bool selected(int line);
+  int topline() const {return FIRST_VISIBLE.indexes[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);
+
+  bool display_lines() const;
+  void display_lines(bool display);
+
+  int load(const char *filename);
+ 
+  int multi() const {return type()&IS_MULTI;}
+
+  const Symbol* leaf_symbol() const {return leaf_symbol_;}
+  void leaf_symbol(const Symbol* s) {leaf_symbol_ = s;}
+  const Symbol* group_symbol() const {return group_symbol_;}
+  void group_symbol(const Symbol* s) {group_symbol_ = s;}
+
+protected:
+  void handle_callback(int doit); // defines how cb are handled in the browser
+
+private:
+  bool displaylines_;
+  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
+  void set_belowmouse();
+  void clear_belowmouse();
+
+  Widget **header_;
+  int nHeader, nColumn, selected_column_;
+  void set_level(unsigned);
+  enum {NUM_REDRAW = 2};
+  Mark HERE, FOCUS, FIRST_VISIBLE, REDRAW[NUM_REDRAW], OPEN, BELOWMOUSE;
+
+  Widget* goto_visible_focus(); // set HERE to focus if visible
+
+  int siblings; // # of children of parent of HERE item
+  static void column_click_cb_(Widget*, void*);
+
+  const Symbol* leaf_symbol_;
+  const Symbol* group_symbol_;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Browser.h 6077 2008-03-21 00:14:56Z fabien $".
+//

Added: branches/branch-3.0/fltk/Button.h
===================================================================
--- branches/branch-3.0/fltk/Button.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Button.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,57 @@
+//
+// "$Id: Button.h 5433 2006-09-16 03:00:02Z 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 {HIDDEN=3}; // back-comptability value to hide the button
+
+  bool	value() const { return state(); }
+  bool	value(bool v) { return state(v); }
+
+  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_width) const;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Button.h 5433 2006-09-16 03:00:02Z spitzak $".
+//

Added: branches/branch-3.0/fltk/CheckButton.h
===================================================================
--- branches/branch-3.0/fltk/CheckButton.h	                        (rev 0)
+++ branches/branch-3.0/fltk/CheckButton.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,46 @@
+//
+// "$Id: CheckButton.h 4910 2006-04-06 19:26:22Z fabien $"
+//
+// 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 4910 2006-04-06 19:26:22Z fabien $".
+//

Added: branches/branch-3.0/fltk/Choice.h
===================================================================
--- branches/branch-3.0/fltk/Choice.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Choice.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -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 $".
+//

Added: branches/branch-3.0/fltk/Clock.h
===================================================================
--- branches/branch-3.0/fltk/Clock.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Clock.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,68 @@
+//
+// "$Id: Clock.h 5197 2006-06-14 07:43:46Z spitzak $"
+//
+// Copyright 1998-2006 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 "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 5197 2006-06-14 07:43:46Z spitzak $".
+//

Added: branches/branch-3.0/fltk/Color.h
===================================================================
--- branches/branch-3.0/fltk/Color.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Color.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,131 @@
+//
+// "$Id: Color.h 6233 2008-09-14 07:54: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 1998-2006 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:
+//
+//     http://www.fltk.org/str.php
+//
+
+#ifndef fltk_Color_h
+#define fltk_Color_h
+
+#include "FL_API.h"
+#include "Flags.h"
+
+namespace fltk {
+
+/// \name fltk/Color.h
+//@{
+
+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 a lighter version of the gray. 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
+
+  FREE_COLOR	= 16, //!< Starting from index 16 is the FREE_COLOR area
+  NUM_FREE_COLOR= 16, //!< Number of free color slots starting from index FREE_COLOR
+
+  GRAY00	= 32, //!< hex=00, dec=.00, framebox=A, fltk1 = GRAY0, GRAY_RAMP
+  GRAY05	= 33, //!< hex=0d, dec=.05, framebox=B
+  GRAY10	= 34, //!< hex=1a, dec=.10, framebox=C
+  GRAY15	= 35, //!< hex=27, dec=.15, framebox=D
+  GRAY20	= 36, //!< hex=34, dec=.20, framebox=E
+  GRAY25	= 37, //!< hex=41, dec=.25, framebox=F
+  GRAY30	= 38, //!< hex=4f, dec=.31, framebox=G
+  GRAY33	= 39, //!< hex=5c, dec=.36, framebox=H, fltk1 = DARK3
+  GRAY35	= 40, //!< hex=69, dec=.41, framebox=I
+  GRAY40	= 41, //!< hex=76, dec=.46, framebox=J (18% gray card)
+  GRAY45	= 42, //!< hex=83, dec=.51, framebox=K
+  GRAY50	= 43, //!< hex=90, dec=.56, framebox=L
+  GRAY55	= 44, //!< hex=9e, dec=.62, framebox=M
+  GRAY60	= 45, //!< hex=ab, dec=.67, framebox=N, fltk1 = DARK2
+  GRAY65	= 46, //!< hex=b8, dec=.72, framebox=O
+  GRAY66	= 47, //!< hex=c5, dec=.77, framebox=P, fltk1 = DARK1, INACTIVE_COLOR
+  GRAY70	= 48, //!< hex=d2, dec=.82, framebox=Q
+  GRAY75	= 49, //!< hex=e0, dec=.88, framebox=R, fltk1 = GRAY, SELECTION_COLOR
+  GRAY80	= 50, //!< hex=e5, dec=.90, framebox=S
+  GRAY85	= 51, //!< hex=ea, dec=.92, framebox=T, fltk1 = LIGHT1
+  //unnamed entry	   hex=ef, dec=.94, framebox=U
+  GRAY90	= 53, //!< hex=f4, dec=.96, framebox=V, fltk1 = LIGHT2
+  GRAY95	= 54, //!< hex=f9, dec=.98, framebox=W
+  GRAY99	= 55, //!< hex=ff, dec=1.0, framebox=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
+
+  DARK_RED	= 72,
+  DARK_GREEN	= 60,
+  DARK_YELLOW	= 76,
+  DARK_BLUE	= 136,
+  DARK_MAGENTA	= 152,
+  DARK_CYAN	= 140,
+
+  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 parsecolor(const char*, unsigned length);
+FL_API Color lerp(Color c0, Color c1, float f);
+FL_API Color inactive(Color fg);
+FL_API Color inactive(Color fg, Color bg);
+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 6233 2008-09-14 07:54:06Z spitzak $".
+//

Added: branches/branch-3.0/fltk/ColorChooser.h
===================================================================
--- branches/branch-3.0/fltk/ColorChooser.h	                        (rev 0)
+++ branches/branch-3.0/fltk/ColorChooser.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,116 @@
+//
+// "$Id: ColorChooser.h 5197 2006-06-14 07:43:46Z spitzak $"
+//
+// Color chooser header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2006 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 "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;
+  friend class ccCellBox;
+  ccHueBox huebox;
+  ccValueBox valuebox;
+  ccValueBox alphabox;
+  ccCellBox cellbox;
+  float hue_, saturation_, value_;
+  float r_, g_, b_, a_;
+  bool no_value_;
+  bool support_no_value;
+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_;}
+  bool no_value() const {return no_value_;}
+  bool no_value(bool);
+  Color value() const;
+  bool value(Color);
+  bool hsv(float,float,float);
+  bool rgb(float,float,float);
+  bool a(float);
+  void hide_a();
+  void hide_no_value() {support_no_value = false;}
+  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 5197 2006-06-14 07:43:46Z spitzak $".
+//

Added: branches/branch-3.0/fltk/ComboBox.h
===================================================================
--- branches/branch-3.0/fltk/ComboBox.h	                        (rev 0)
+++ branches/branch-3.0/fltk/ComboBox.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,108 @@
+//
+// 
+//
+// 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 text(const char *txt)
+	{ return text_changed_(input_->text(txt)); }
+  bool text(const char *txt, int n)
+	{ return text_changed_(input_->text(txt, n)); }
+  bool static_text(const char *txt)
+	{ return text_changed_(input_->static_text(txt)); }
+  bool static_text(const char *txt, int n)
+	{ return text_changed_(input_->static_text(txt, n)); }
+  const char* text() const { return input_->text();}
+  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();}
+  
+protected:
+  bool text_changed_(bool ret=true);
+
+private:
+  Input *input_;
+#if defined (_WIN32) || (defined( __GNUC__ ) && __GNUC__ < 3) 
+ public:
+#endif
+  static void input_callback_(Widget*,void*);
+};
+
+}
+
+#endif
+
+//
+// 
+//

Added: branches/branch-3.0/fltk/Cursor.h
===================================================================
--- branches/branch-3.0/fltk/Cursor.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Cursor.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,39 @@
+//
+// "$Id"
+//
+// Mouse cursor support for the Fast Light Tool Kit (FLTK).
+
+// 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
+
+// End of "$Id"

Added: branches/branch-3.0/fltk/CycleButton.h
===================================================================
--- branches/branch-3.0/fltk/CycleButton.h	                        (rev 0)
+++ branches/branch-3.0/fltk/CycleButton.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,52 @@
+//
+// "$Id: CycleButton.h 4910 2006-04-06 19:26:22Z fabien $"
+//
+// 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 4910 2006-04-06 19:26:22Z fabien $".
+//

Added: branches/branch-3.0/fltk/Dial.h
===================================================================
--- branches/branch-3.0/fltk/Dial.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Dial.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,64 @@
+//
+// "$Id: Dial.h 4910 2006-04-06 19:26:22Z fabien $"
+//
+// 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 4910 2006-04-06 19:26:22Z fabien $".
+//

Added: branches/branch-3.0/fltk/Divider.h
===================================================================
--- branches/branch-3.0/fltk/Divider.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Divider.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,45 @@
+//
+// "$Id: Divider.h 4910 2006-04-06 19:26:22Z fabien $"
+//
+// 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

Added: branches/branch-3.0/fltk/DoubleBufferWindow.h
===================================================================
--- branches/branch-3.0/fltk/DoubleBufferWindow.h	                        (rev 0)
+++ branches/branch-3.0/fltk/DoubleBufferWindow.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -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 w, int h, const char*l = 0)
+    : Window(w,h,l) {set_double_buffer();}
+
+};
+
+}
+
+#endif

Added: branches/branch-3.0/fltk/FL_API.h
===================================================================
--- branches/branch-3.0/fltk/FL_API.h	                        (rev 0)
+++ branches/branch-3.0/fltk/FL_API.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,76 @@
+// "$Id: FL_API.h 5448 2006-09-19 01:14:07Z spitzak $"
+//
+// This file is included by all FLTK header files. Originally it was to
+// get that damn dllimport/export stuff on Windows. It now also turns
+// off warnings on Windows so that you can use stdc functions, and
+// defines the uchar type that is used by FLTK a lot.
+//
+// Copyright 1998-2006 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 _MSC_VER > 1000
+# pragma once
+// suppress vc2005 warnings: 
+// C4312 because we have no problem to cast a smaller type to a greater (potentially 64bit) one
+// and C4996 (deprecated C-lib calls like strcpy that should be _strcpy, etc ...)
+# pragma warning(disable:4312 4996)
+#endif
+
+#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 5448 2006-09-19 01:14:07Z spitzak $".
+//

Added: branches/branch-3.0/fltk/FL_VERSION.h
===================================================================
--- branches/branch-3.0/fltk/FL_VERSION.h	                        (rev 0)
+++ branches/branch-3.0/fltk/FL_VERSION.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,39 @@
+/*! \file
+
+The FLTK version number. Allows you to write conditionally compiled
+code for different versions of FLTK. This file may be included by C
+code in case you need it there.
+
+FL_VERSION is a macro double that describes the major, minor, and
+patch version numbers. The integer value is the major number. One
+digit is used for the minor number, and three for the "patch" number
+which is increased for each binary differnt release (it can go to 999).
+
+Because double cannot be used in #if statements, the integer
+numbers are in the FL_MAJOR_VERSION, FL_MINOR_VERSION, and
+FL_PATCH_VERSION macro constants.
+
+*/
+
+#ifndef FL_VERSION
+
+# define FL_MAJOR_VERSION 2 //!< The major release number, 1 or 2
+# define FL_MINOR_VERSION 1 //!< The minor release number, 0-9
+# define FL_PATCH_VERSION 0 //!< The patch number, 0-999
+# define FL_VERSION	  2.1000
+
+#if defined(__cplusplus) || defined(DOXYGEN) /* Allow this file to be included by C code */
+#include "FL_API.h"
+namespace fltk {
+
+/*!
+  Returns the value of FL_VERSION that FLTK was compiled with.
+  This can be compared to the FL_VERSION macro to see if the shared
+  library of fltk your program linked with is up to date.
+*/
+FL_API double version();
+
+}
+#endif
+
+#endif

Added: branches/branch-3.0/fltk/FileBrowser.h
===================================================================
--- branches/branch-3.0/fltk/FileBrowser.h	                        (rev 0)
+++ branches/branch-3.0/fltk/FileBrowser.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,95 @@
+//
+// "$Id: FileBrowser.h 4926 2006-04-10 21:03:29Z fabien $"
+//
+// FileBrowser definitions.
+//
+// Copyright 1999-2006 by Michael Sweet.
+//
+// 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
+//
+
+//
+// Include necessary header files...
+//
+
+#ifndef fltk_FileBrowser_h
+#define fltk_FileBrowser_h
+
+#include <fltk/Browser.h>
+#include <fltk/FileIcon.h>
+#include <fltk/filename.h>
+
+namespace fltk {
+
+
+//
+// FileBrowser class...
+//
+
+class FL_API FileBrowser : public Browser
+{
+  int		filetype_;
+  const char	*directory_;
+  float		icon_size_;
+  const char	*pattern_;
+
+public:
+  enum { FILES, DIRECTORIES };
+
+  FileBrowser(int, int, int, int, const char * = 0);
+
+  float		icon_size() const { 
+    return (icon_size_ <0?  (2.0f* textsize()) : icon_size_); 
+  }
+  void 		icon_size(float f) { icon_size_ = f; redraw(); };
+
+  void	filter(const char *pattern);
+  const char	*filter() const { return (pattern_); };
+
+  int		load(const char *directory, File_Sort_F *sort = (File_Sort_F*) fltk::numericsort);
+
+  float		textsize() const { return (Browser::textsize()); };
+  void		textsize(float s) { Browser::textsize(s); icon_size_ = (uchar)(3 * s / 2); };
+
+  int		filetype() const { return (filetype_); };
+  void		filetype(int t) { filetype_ = t; };
+  const char *  directory() const {return directory_;}
+
+  // adding or inserting a line into the fileBrowser
+  void insert(int n, const char* label, FileIcon* icon);
+  void insert(int n, const char* label, void* data){Menu::insert(n, label,data);}
+  void add(const char * line, FileIcon* icon);
+
+  // Showing or not showing the hidden files, that's the question:
+public:
+  // sets this flag if you want to see the hidden files in the browser
+  void	    show_hidden(bool show) { show_hidden_= show; }
+  bool	    show_hidden() const {return show_hidden_;}
+private:
+    bool		show_hidden_;
+};
+
+}
+
+#endif // !_Fl_File_Browser_H_
+
+//
+// End of "$Id: FileBrowser.h 4926 2006-04-10 21:03:29Z fabien $".
+//

Added: branches/branch-3.0/fltk/FileChooser.h
===================================================================
--- branches/branch-3.0/fltk/FileChooser.h	                        (rev 0)
+++ branches/branch-3.0/fltk/FileChooser.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,166 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#ifndef FileChooser_h
+#define FileChooser_h
+// Header for //\n// "$Id: FileChooser.fl 5447 2006-09-19 00:09...
+#include <fltk/DoubleBufferWindow.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <fltk/Group.h>
+#include <fltk/Choice.h>
+#include <fltk/PopupMenu.h>
+#include <fltk/Button.h>
+#include <fltk/Preferences.h>
+#include <fltk/TiledGroup.h>
+#include <fltk/FileBrowser.h>
+#include <fltk/InvisibleBox.h>
+#include <fltk/CheckButton.h>
+#include <fltk/FileInput.h>
+#include <fltk/ReturnButton.h>
+#include <fltk/ask.h>
+
+namespace fltk  {
+
+class FL_API FileChooser  {
+public:
+  enum { SINGLE = 0, MULTI = 1, CREATE = 2, DIRECTORY = 4 };
+private:
+  static fltk::Preferences prefs_;
+  void (*callback_)(FileChooser*, void *);
+  void *data_;
+  char directory_[1024];
+  char pattern_[1024];
+  char preview_text_[2048];
+  int type_;
+  void favoritesButtonCB();
+  void favoritesCB(fltk::Widget *w);
+  void fileListCB();
+  void fileNameCB();
+  void newdir();
+  static void previewCB(FileChooser *fc);
+  void showChoiceCB();
+  void update_favorites();
+  void update_preview();
+  int favorites_showing;
+public:
+  FileChooser(const char *d, const char *p, int t, const char *title);
+private:
+  fltk::DoubleBufferWindow *window;
+  inline void cb_window_i(fltk::DoubleBufferWindow*, void*);
+  static void cb_window(fltk::DoubleBufferWindow*, void*);
+      fltk::Choice *showChoice;
+      inline void cb_showChoice_i(fltk::Choice*, void*);
+      static void cb_showChoice(fltk::Choice*, void*);
+      fltk::PopupMenu *favoritesButton;
+      inline void cb_favoritesButton_i(fltk::PopupMenu*, void*);
+      static void cb_favoritesButton(fltk::PopupMenu*, void*);
+public:
+      fltk::Button *newButton;
+private:
+      inline void cb_newButton_i(fltk::Button*, void*);
+      static void cb_newButton(fltk::Button*, void*);
+    inline void cb__i(fltk::TiledGroup*, void*);
+    static void cb_(fltk::TiledGroup*, void*);
+      fltk::FileBrowser *fileList;
+      inline void cb_fileList_i(fltk::FileBrowser*, void*);
+      static void cb_fileList(fltk::FileBrowser*, void*);
+      fltk::InvisibleBox *previewBox;
+public:
+        fltk::CheckButton *previewButton;
+private:
+        inline void cb_previewButton_i(fltk::CheckButton*, void*);
+        static void cb_previewButton(fltk::CheckButton*, void*);
+public:
+        fltk::CheckButton *showHiddenButton;
+private:
+        inline void cb_showHiddenButton_i(fltk::CheckButton*, void*);
+        static void cb_showHiddenButton(fltk::CheckButton*, void*);
+      fltk::FileInput *fileName;
+      inline void cb_fileName_i(fltk::FileInput*, void*);
+      static void cb_fileName(fltk::FileInput*, void*);
+        fltk::ReturnButton *okButton;
+        inline void cb_okButton_i(fltk::ReturnButton*, void*);
+        static void cb_okButton(fltk::ReturnButton*, void*);
+        fltk::Button *cancelButton;
+        inline void cb_cancelButton_i(fltk::Button*, void*);
+        static void cb_cancelButton(fltk::Button*, void*);
+  fltk::DoubleBufferWindow *favWindow;
+    fltk::FileBrowser *favList;
+    inline void cb_favList_i(fltk::FileBrowser*, void*);
+    static void cb_favList(fltk::FileBrowser*, void*);
+      fltk::Button *favUpButton;
+      inline void cb_favUpButton_i(fltk::Button*, void*);
+      static void cb_favUpButton(fltk::Button*, void*);
+      fltk::Button *favDeleteButton;
+      inline void cb_favDeleteButton_i(fltk::Button*, void*);
+      static void cb_favDeleteButton(fltk::Button*, void*);
+      fltk::Button *favDownButton;
+      inline void cb_favDownButton_i(fltk::Button*, void*);
+      static void cb_favDownButton(fltk::Button*, void*);
+      fltk::Button *favCancelButton;
+      inline void cb_favCancelButton_i(fltk::Button*, void*);
+      static void cb_favCancelButton(fltk::Button*, void*);
+      fltk::ReturnButton *favOkButton;
+      inline void cb_favOkButton_i(fltk::ReturnButton*, void*);
+      static void cb_favOkButton(fltk::ReturnButton*, void*);
+public:
+  ~FileChooser();
+  void callback(void (*cb)(FileChooser *, void *), void *d = 0);
+  void color(Color c);
+  Color color();
+  int count();
+  void directory(const char *d);
+  char * directory();
+  void filter(const char *p);
+  const char * filter();
+  int filter_value();
+  void filter_value(int f);
+  void hide();
+  void icon_size(uchar s);
+  uchar icon_size();
+  void label(const char *l);
+  const char * label();
+  void ok_label(const char *l);
+  const char * ok_label();
+  void preview(int e);
+  int preview() const { return previewButton->value(); };
+  void rescan();
+  void show();
+  void show(int x, int y);
+  bool exec(Window* p, bool grab);
+  int shown();
+  void textcolor(Color c);
+  Color textcolor();
+  void textfont(Font* f);
+  Font* textfont();
+  void textsize(float s);
+  float textsize();
+  void type(int t);
+  int type();
+  void * user_data() const;
+  void user_data(void *d);
+  const char *value(int f = 1);
+  void value(const char *filename);
+  int visible();
+  void favorites(int e);
+  int favorites() const;
+  static const char *add_favorites_label;
+  static const char *all_files_label;
+  static const char *custom_filter_label;
+  static const char *existing_file_label;
+  static const char *favorites_label;
+  static const char *filename_label;
+  static const char *filesystems_label;
+  static const char *manage_favorites_label;
+  static const char *new_directory_label;
+  static const char *new_directory_tooltip;
+  static const char *preview_label;
+  static const char *save_label;
+  static const char *show_label;
+  static File_Sort_F *sort;
+};
+extern FL_API void file_chooser_ok_label(const char*l);
+}
+// Header for //\n// End of "$Id: FileChooser.fl 5447 2006-09-1...
+#endif

Added: branches/branch-3.0/fltk/FileIcon.h
===================================================================
--- branches/branch-3.0/fltk/FileIcon.h	                        (rev 0)
+++ branches/branch-3.0/fltk/FileIcon.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,114 @@
+//
+// "$Id: FileIcon.h 5576 2007-01-03 00:20:28Z spitzak $"
+//
+// 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"
+#include "Symbol.h"
+
+namespace fltk {
+
+class Widget;
+
+class FL_API FileIcon : public Symbol {
+  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
+  int		w_,h_;
+  bool          on_select_;     // true if in browser or menu
+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
+    DIRECTORY 			// 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(const FileIcon& f) ; 
+  ~FileIcon();
+
+  short		*add(short d);
+  short		*add_color(Color c)
+		{ short *d = add((short)COLOR); add((short)(c >> 16)); add((short)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; }
+
+  const Symbol* image() const {return image_;}
+
+  void		load(const char *f);
+  const char	*pattern() { return (pattern_); }
+  int		size() { return (num_data_); }
+  int		type() { return (type_); }
+  short		*data() { return (data_); }
+
+  static FileIcon *find(const char *filename, int filetype = ANY);
+  static FileIcon *first() { return (first_); }
+  static void	load_system_icons(void);
+
+  void		value(Widget* i, bool on_select=false);
+
+  // virtual image overloads
+  void _measure(int& w, int& h) const;
+  void _draw(const Rectangle& r) const;
+private:
+  void		image(const Symbol* direct_raster, bool owned=true) {image_=direct_raster;owned_image_=owned;}
+  void		load_fti(const char *fti);
+  const Symbol* image_;
+  bool owned_image_;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: FileIcon.h 5576 2007-01-03 00:20:28Z spitzak $".
+//

Added: branches/branch-3.0/fltk/FileInput.h
===================================================================
--- branches/branch-3.0/fltk/FileInput.h	                        (rev 0)
+++ branches/branch-3.0/fltk/FileInput.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,67 @@
+//
+// "$Id: FileInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// File_Input header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+// Original version Copyright 1998 by Curtis Edwards.
+//
+// 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 fltk_FileInput_H
+#  define fltk_FileInput_H
+
+#  include "Input.h"
+
+namespace fltk {
+
+class FL_API FileInput : public Input {
+  Color	errorcolor_;
+  char		ok_entry_;
+  short		buttons_[120];
+  short		pressed_;
+
+  void		draw_buttons();
+  int		handle_button(int event);
+  void		update_buttons();
+
+public:
+
+  FileInput(int,int,int,int,const char *t=0);
+
+  void draw_boxes(bool pressed, const Rectangle& r);
+  virtual int handle(int);
+  virtual void draw();
+
+  Color			errorcolor() const { return errorcolor_; }
+  void			errorcolor(Color c) { errorcolor_ = c; }
+  int			text(const char*);
+  int			text(const char*, int);
+  const char *		text() { return Input::text(); }
+};
+
+}
+#endif // !Fl_File_Input_H
+
+
+//
+// End of "$Id: FileInput.h 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/FillDial.h
===================================================================
--- branches/branch-3.0/fltk/FillDial.h	                        (rev 0)
+++ branches/branch-3.0/fltk/FillDial.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,44 @@
+//
+// "$Id: FillDial.h 4910 2006-04-06 19:26:22Z fabien $"
+//
+// 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 4910 2006-04-06 19:26:22Z fabien $".
+//

Added: branches/branch-3.0/fltk/FillSlider.h
===================================================================
--- branches/branch-3.0/fltk/FillSlider.h	                        (rev 0)
+++ branches/branch-3.0/fltk/FillSlider.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,44 @@
+//
+// "$Id: FillSlider.h 5450 2006-09-19 02:33:42Z spitzak $"
+//
+// Copyright 2006 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 5450 2006-09-19 02:33:42Z spitzak $".
+//

Added: branches/branch-3.0/fltk/Flags.h
===================================================================
--- branches/branch-3.0/fltk/Flags.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Flags.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,112 @@
+//
+// "$Id: Flags.h 6233 2008-09-14 07:54:06Z 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 {
+
+/// \name fltk/Flags.h
+//@{
+
+/*! 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		= 0x00000000,
+
+  // from Align, values are comptable with fltk 1.0:
+  // These control the location and appearance of labels:
+  // Warning: unused numbers may change behavior!
+  ALIGN_TOP		  = 0x00000001,	//!< Label is centered above widget
+  ALIGN_BOTTOM		  = 0x00000002,	//!< Label is centered below widget
+  ALIGN_LEFT		  = 0x00000004,	//!< Label is to left of widget
+  ALIGN_RIGHT		  = 0x00000008,	//!< Label is to right of widget
+  ALIGN_CENTER		  = 0x00000010,	//!< (0) The label is centered inside widget
+  ALIGN_INSIDE		  = 0x00000020,	//!< Label is inside widget, image centered
+  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()
+  ALIGN_POSITIONMASK      = 0x0000000F, //!< Used to split align() from flags()
+
+  ALIGN_TOPLEFT		  = (ALIGN_TOP|ALIGN_LEFT),	    //!< Label is left-justified above widget
+  ALIGN_BOTTOMLEFT	  = (ALIGN_BOTTOM|ALIGN_LEFT),	    //!< Label is left-justified below widget
+  ALIGN_TOPRIGHT	  = (ALIGN_TOP|ALIGN_RIGHT),	    //!< Label is right-justified above widget
+  ALIGN_BOTTOMRIGHT	  = (ALIGN_BOTTOM|ALIGN_RIGHT),	    //!< Label is right-justified below widget
+  ALIGN_CENTERLEFT	  = (ALIGN_CENTER|ALIGN_LEFT),	    //!< Label is centered in space left of widget
+  ALIGN_CENTERRIGHT	  = (ALIGN_CENTER|ALIGN_RIGHT),	    //!< Label is centered in space left of widget
+  ALIGN_INSIDE_TOP	  = (ALIGN_INSIDE|ALIGN_TOP),	    //!< Label is inside widget at top
+  ALIGN_INSIDE_BOTTOM	  = (ALIGN_INSIDE|ALIGN_BOTTOM),    //!< Label is inside widget at bottom
+  ALIGN_INSIDE_LEFT	  = (ALIGN_INSIDE|ALIGN_LEFT),	    //!< Label is inside widget at left
+  ALIGN_INSIDE_TOPLEFT	  = (ALIGN_INSIDE|ALIGN_TOPLEFT),   //!< Label is inside widget at top left
+  ALIGN_INSIDE_BOTTOMLEFT = (ALIGN_INSIDE|ALIGN_BOTTOMLEFT),//!< Label is inside widget at bottom left
+  ALIGN_INSIDE_RIGHT	  = (ALIGN_INSIDE|ALIGN_RIGHT),	    //!< Label is inside widget at right
+  ALIGN_INSIDE_TOPRIGHT	  = (ALIGN_INSIDE|ALIGN_TOPRIGHT),  //!< Label is inside widget at top right
+  ALIGN_INSIDE_BOTTOMRIGHT= (ALIGN_INSIDE|ALIGN_BOTTOMRIGHT),//!< Label is inside widget bottom right
+  ALIGN_MENU		  = (ALIGN_INSIDE_LEFT|ALIGN_CLIP), //!< Label is inside widget bottom right
+  ALIGN_BROWSER		  = ALIGN_MENU,			    //!< Label is inside widget bottom right
+
+  INACTIVE		  = 0x00000100, //!< !active()
+  OUTPUT		  = 0x00000200, //!< does not get events, draw text colors
+  STATE			  = 0x00000400, //!< state(), value() for buttons 
+  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_R		  = 0x00100000, //!< draw it grayed-out
+  FOCUSED		  = 0x00200000, //!< draw with keyboard focus
+  PUSHED		  = 0x00400000, //!< draw pushed-in 
+  RESIZE_NONE		  = 0,	//!< default behavior
+  RESIZE_FIT		  = 0x01000000, //!< proportionnaly resize img in widget
+  RESIZE_FILL		  = 0x00800000, //!< resize img to fill the widget
+  OPENED		  = STATE	//!< opened browser hierarchy parent
+};
+
+//@}
+
+}
+
+#endif
+
+//
+// End of "$Id: Flags.h 6233 2008-09-14 07:54:06Z spitzak $".
+//

Added: branches/branch-3.0/fltk/FloatInput.h
===================================================================
--- branches/branch-3.0/fltk/FloatInput.h	                        (rev 0)
+++ branches/branch-3.0/fltk/FloatInput.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,51 @@
+//
+// "$Id: FloatInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// 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-2006 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 = 1, INT = 2 };
+  FloatInput(int x,int y,int w,int h,const char *l = 0)
+    : NumericInput(x,y,w,h,l) { type(FLOAT); }
+  long lvalue() const;
+  int ivalue() const { return int(lvalue()); }
+  double fvalue() const;
+};
+
+}
+#endif
+
+//
+// End of "$Id: FloatInput.h 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/Font.h
===================================================================
--- branches/branch-3.0/fltk/Font.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Font.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,70 @@
+//
+// "$Id: Font.h 5461 2006-09-19 02:49:30Z 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 {
+
+enum {  // values for attributes:
+  BOLD = 1,
+  ITALIC = 2,
+  BOLD_ITALIC = 3
+};
+
+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 a Font from a name and attributes:
+FL_API Font* font(const char* name, int attrib = 0);
+
+// Find a Font from an fltk1 integer font id:
+FL_API Font* font(int);
+
+// Find and return every font on the system.
+FL_API int list_fonts(Font**& arrayp);
+
+}
+
+#endif

Added: branches/branch-3.0/fltk/GlWindow.h
===================================================================
--- branches/branch-3.0/fltk/GlWindow.h	                        (rev 0)
+++ branches/branch-3.0/fltk/GlWindow.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,108 @@
+//
+// "$Id: GlWindow.h 5892 2007-06-08 18:15:37Z spitzak $"
+//
+// OpenGL window. You must subclass this and implement draw() if
+// you want this to work.
+//
+// Copyright 1998-2006 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"
+
+namespace fltk {
+
+#ifndef GLContext // you can define this to the correct type if wanted
+typedef void* GLContext; //!< Actually a GLXContext or HGLDC
+#endif
+
+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() const {return can_do(mode_);}
+
+  GLContext context() const {return context_;}
+  // this wrapper is so c++mangled name does not depend on GLContext type:
+  void context(GLContext v, bool destroy_flag = false) {_context(v,destroy_flag);}
+  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();}
+
+  virtual void draw() = 0;
+  virtual void draw_overlay();
+
+  virtual int handle( int event );
+
+private:
+
+  int mode_;
+  GlChoice *gl_choice;
+  GLContext context_;
+  void _context(void*, bool destroy_flag);
+  char valid_;
+  char damage1_; // damage() of back buffer
+  void init();
+
+  void *overlay;
+  void make_overlay();
+  friend class GlOverlay;
+
+  void draw_swap();
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: GlWindow.h 5892 2007-06-08 18:15:37Z spitzak $".
+//

Added: branches/branch-3.0/fltk/Group.h
===================================================================
--- branches/branch-3.0/fltk/Group.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Group.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,115 @@
+//
+// "$Id: Group.h 5915 2007-06-19 17:49:29Z spitzak $"
+//
+// Group is the base class for all container widgets. For historical
+// reasons it also provides a default version of layout.
+//
+// Copyright 1998-2006 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();
+
+  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 initial_w, initial_h;
+  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 5915 2007-06-19 17:49:29Z spitzak $".
+//

Added: branches/branch-3.0/fltk/HelpDialog.h
===================================================================
--- branches/branch-3.0/fltk/HelpDialog.h	                        (rev 0)
+++ branches/branch-3.0/fltk/HelpDialog.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,66 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0100
+
+#ifndef HelpDialog_h
+#define HelpDialog_h
+// Header for //\n// "$Id: HelpDialog.fl 4721 2005-12-19 16:52:...
+#include <fltk/DoubleBufferWindow.h>
+#include <fltk/HelpView.h>
+#include <fltk/Group.h>
+#include <fltk/Button.h>
+#include <fltk/Input.h>
+
+namespace fltk  {
+
+class FL_IMAGES_API HelpDialog  {
+  int index_;
+  int max_;
+  int line_[100];
+  char file_[100][256];
+  int find_pos_;
+public:
+  HelpDialog();
+private:
+  fltk::DoubleBufferWindow *window_;
+    fltk::HelpView *view_;
+    inline void cb_view__i(fltk::HelpView*, void*);
+    static void cb_view_(fltk::HelpView*, void*);
+      inline void cb_Close_i(fltk::Button*, void*);
+      static void cb_Close(fltk::Button*, void*);
+      fltk::Button *back_;
+      inline void cb_back__i(fltk::Button*, void*);
+      static void cb_back_(fltk::Button*, void*);
+      fltk::Button *forward_;
+      inline void cb_forward__i(fltk::Button*, void*);
+      static void cb_forward_(fltk::Button*, void*);
+      fltk::Button *smaller_;
+      inline void cb_smaller__i(fltk::Button*, void*);
+      static void cb_smaller_(fltk::Button*, void*);
+      fltk::Button *larger_;
+      inline void cb_larger__i(fltk::Button*, void*);
+      static void cb_larger_(fltk::Button*, void*);
+        fltk::Input *find_;
+        inline void cb_find__i(fltk::Input*, void*);
+        static void cb_find_(fltk::Input*, 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(uchar s);
+  uchar textsize();
+  void topline(const char *n);
+  void topline(int n);
+  void value(const char *f);
+  const char * value() const;
+  int visible();
+  int w();
+  int x();
+  int y();
+};
+}
+// Header for //\n// End of "$Id: HelpDialog.fl 4721 2005-12-19...
+#endif

Added: branches/branch-3.0/fltk/HelpView.h
===================================================================
--- branches/branch-3.0/fltk/HelpView.h	                        (rev 0)
+++ branches/branch-3.0/fltk/HelpView.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,201 @@
+//
+// "$Id: HelpView.h 5860 2007-05-30 18:32:26Z sanel.z $"
+//
+// Help Viewer widget definitions.
+//
+// Copyright 1997-2006 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_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 write_text (const char * buf, const char * ptr, int X, int Y, int X1, int underline);
+  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);
+  void pushfont (Font *f, int s);
+  void popfont (Font *&f, int &s);
+
+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 layout();
+  int size () const { return (size_); } 
+
+  void textcolor (Color c);
+  void textfont (Font *f);
+  void textsize (int s);
+
+  Color textcolor () const { return (defcolor_); } 
+  Font *textfont () const { return (textfont_); } 
+  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_); }
+  int find (const char *s,int p);
+};
+
+} // namespace fltk
+
+#endif // !HelpView_H
+
+//
+// End of "$Id: HelpView.h 5860 2007-05-30 18:32:26Z sanel.z $".
+//

Added: branches/branch-3.0/fltk/HighlightButton.h
===================================================================
--- branches/branch-3.0/fltk/HighlightButton.h	                        (rev 0)
+++ branches/branch-3.0/fltk/HighlightButton.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,45 @@
+//
+// "$Id: HighlightButton.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// This button highlights even if the default style does not do so.
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/Image.h
===================================================================
--- branches/branch-3.0/fltk/Image.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Image.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,116 @@
+// "$Id: Image.h 5768 2007-04-08 19:58: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_Image_h
+#define fltk_Image_h
+
+#include "Symbol.h"
+# undef OPAQUE // fix for windows.h
+
+namespace fltk {
+
+class FL_API Widget;
+struct Picture; // secret internal system-specific data
+
+class FL_API Image : public Symbol {
+
+  PixelType pixeltype_; int w_, h_;
+  Picture* picture;
+  int flags; enum {COPIED=1, FETCHED=2, FORCEARGB32=4, MEASUREFETCH=8};
+
+  static unsigned long memused_;
+
+public:
+
+  Image(const char* name=0) :
+    Symbol(name), pixeltype_(fltk::RGB32), w_(12), h_(12),
+    picture(0), flags(MEASUREFETCH) {}
+  Image(int w, int h, const char* name=0) :
+    Symbol(name), pixeltype_(fltk::RGB32), w_(w), h_(h),
+    picture(0), flags(0) {}
+  Image(PixelType p, int w, int h, const char* name=0) :
+    Symbol(name), pixeltype_(p), w_(w), h_(h),
+    picture(0), flags(0) {}
+  Image(const uchar* d, PixelType p, int w, int h) :
+    Symbol(), picture(0) {setimage(d,p,w,h);}
+  Image(const uchar* d, PixelType p, int w, int h, int linedelta) :
+    Symbol(), picture(0) {setimage(d,p,w,h,linedelta);}
+  ~Image();
+
+  PixelType pixeltype() const {return pixeltype_;}
+  int depth() const {return fltk::depth(pixeltype_);}
+  int w() const {return w_;}
+  int width() const {return w_;}
+  int h() const {return h_;}
+  int height() const {return h_;}
+
+  void setpixeltype(PixelType);
+  void setsize(int w, int h);
+  void setpixels(const uchar* d, const Rectangle&, int linedelta);
+  void setpixels(const uchar* d, const Rectangle& r) {setpixels(d,r,depth()*r.w());}
+  void setpixels(const uchar* d, int y);
+  uchar* linebuffer(int y);
+
+  void setimage(const uchar* d, PixelType p, int w, int h, int linedelta);
+  void setimage(const uchar* d, PixelType p, int w, int h) {setimage(d,p,w,h,fltk::depth(p)*w);}
+
+  uchar* buffer();
+  const uchar* buffer() const;
+  void set_forceARGB32();
+  void clear_forceARGB32();
+  bool forceARGB32() const {return (flags&FORCEARGB32) != 0;}
+  PixelType buffer_pixeltype() const;
+  int buffer_depth() const;
+  int buffer_width() const;
+  int buffer_height() const;
+  int buffer_linedelta() const;
+  void buffer_changed() {flags &= ~COPIED;}
+  void destroy();
+
+  void draw(int x, int y) const;
+  void draw(const Rectangle& r) const {_draw(r);}
+  void draw(const Rectangle& from, const Rectangle& to) const;
+
+  void _draw(const Rectangle&) const; // Symbol virtual method
+  void _measure(int& W, int& H) const; // Symbol virtual method
+  bool fills_rectangle() const; // Symbol virtual method
+  virtual bool fetch(); // for image file reading subclasses
+  void fetch_if_needed() const;
+  void refetch() {flags &= ~FETCHED;}
+
+  unsigned long mem_used() const;
+  static unsigned long total_mem_used() {return memused_;}
+
+  // for back compatability with fltk1 only:
+  void label(Widget* o);
+
+  // see also: GSave
+  void make_current();
+
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Image.h 5768 2007-04-08 19:58:56Z spitzak $".
+//

Added: branches/branch-3.0/fltk/Input.h
===================================================================
--- branches/branch-3.0/fltk/Input.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Input.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,132 @@
+//
+// "$Id: Input.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// One-line text input field.
+//
+// Copyright 1998-2006 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,
+    FLOAT_INPUT = 1,
+    INT_INPUT	= 2,
+    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 text(const char*);
+  bool text(const char*, int);
+  bool static_text(const char*);
+  bool static_text(const char*, int);
+  const char* text() const {return text_;}
+  char at(int i) const {return text_[i];}
+#ifdef FLTK_1_WIDGET  // back-compatability section:
+  char index(int i) const {return text_[i];}
+#endif
+#ifndef SKIP_DEPRECIATED
+  bool value(const char* v) {return text(v);}
+  bool value(const char* v, int n) {return text(v,n);}
+  bool static_value(const char* v) {return static_text(v);}
+  const char* value() const {return text_;}
+#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* text_;
+  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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/InputBrowser.h
===================================================================
--- branches/branch-3.0/fltk/InputBrowser.h	                        (rev 0)
+++ branches/branch-3.0/fltk/InputBrowser.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,100 @@
+//
+// "$Id: InputBrowser.h 5571 2006-12-30 08:20:02Z spitzak $"
+//
+// 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-2006 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 "Menu.h"
+#include "Input.h"
+
+namespace fltk {
+
+class ComboBrowser;
+class ComboWindow;
+
+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 minw(int i) { minw_ = i; }
+  void minh(int i) { minh_ = i; }
+  int minw() { return minw_; }
+  int minh() { return minh_; }
+
+  void maxw(int i) { maxw_ = i; }
+  void maxh(int i) { maxh_ = i; }
+  int maxw() { return maxw_; }
+  int maxh() { return maxh_; }
+
+  void text(const char *v) { m_input.text(v); }
+  const char *text() const { return m_input.text(); }
+
+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 5571 2006-12-30 08:20:02Z spitzak $".
+//

Added: branches/branch-3.0/fltk/IntInput.h
===================================================================
--- branches/branch-3.0/fltk/IntInput.h	                        (rev 0)
+++ branches/branch-3.0/fltk/IntInput.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,42 @@
+//
+// "$Id: IntInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/InvisibleBox.h
===================================================================
--- branches/branch-3.0/fltk/InvisibleBox.h	                        (rev 0)
+++ branches/branch-3.0/fltk/InvisibleBox.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,30 @@
+//
+// "$Id: InvisibleBox.h 5698 2007-02-19 05:40:36Z 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 "Widget.h"
+
+namespace fltk {
+
+class FL_API InvisibleBox : public Widget {
+public:
+  InvisibleBox(int x, int y, int w, int h, const char *l=0);
+  InvisibleBox(Box* b, int x, int y, int w, int h, const char *l);
+  static NamedStyle* default_style;
+  int handle(int);
+  void draw();
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: InvisibleBox.h 5698 2007-02-19 05:40:36Z spitzak $".
+//

Added: branches/branch-3.0/fltk/Item.h
===================================================================
--- branches/branch-3.0/fltk/Item.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Item.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,57 @@
+//
+// "$Id: Item.h 5576 2007-01-03 00:20:28Z spitzak $"
+//
+// Widget designed to be a menu or browser item.
+//
+// Copyright 1998-2006 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:
+
+  void draw();
+  void layout();
+  int handle(int);
+
+  Item(const char* label = 0);
+  Item(const char* label, const Symbol*);
+  Item(const char* label, int shortcut, Callback *callback=0, void *user_data_=0, int flags=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);}
+
+private:
+    void init(); // common constructor initialization
+};
+
+}
+
+#endif

Added: branches/branch-3.0/fltk/ItemGroup.h
===================================================================
--- branches/branch-3.0/fltk/ItemGroup.h	                        (rev 0)
+++ branches/branch-3.0/fltk/ItemGroup.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,75 @@
+//
+// "$Id: ItemGroup.h 5575 2007-01-02 17:31:40Z spitzak $"
+//
+// 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-2006 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, bool begin=false);
+  ItemGroup(const char* label, const Symbol*, bool begin=false);
+};
+
+/** \class MenuSection
+  This class will elegantly facilitate dynamic (& hand-made) menu code writing
+  by creating and calling begin() on an ItemGroup in the constructor and
+  calling end() in the destructor:
+  \code
+  mymenu->begin();
+  new Item("in main menu");
+  {MenuSection g("submenu title");
+    new Item("in submenu");
+    new Item("also in submenu");
+  } // destructor ends the submenu
+  \endcode
+*/
+class FL_API MenuSection {
+  ItemGroup* group_;
+public:
+  //! build a typical submenu group section, then call begin()
+  MenuSection(const char* label = 0) { group_ = new ItemGroup(label,true); }
+
+  MenuSection(const char* label, const Symbol* i) { group_ = new ItemGroup(label,i,true); }
+
+  //! call end() at destruction
+  ~MenuSection() {group_->end();}
+
+  //! The ItemGroup created by this.
+  ItemGroup* group() const {return group_;}
+};
+
+}
+
+#endif

Added: branches/branch-3.0/fltk/LabelType.h
===================================================================
--- branches/branch-3.0/fltk/LabelType.h	                        (rev 0)
+++ branches/branch-3.0/fltk/LabelType.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,61 @@
+//
+// "$Id: LabelType.h 5770 2007-04-10 10:42:07Z 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-2006 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(); // virtual to shut up C++ warnings
+};
+
+// 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

Added: branches/branch-3.0/fltk/LightButton.h
===================================================================
--- branches/branch-3.0/fltk/LightButton.h	                        (rev 0)
+++ branches/branch-3.0/fltk/LightButton.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,45 @@
+//
+// "$Id: LightButton.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Forms/XForms/Flame style button with indicator light on left
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/LineDial.h
===================================================================
--- branches/branch-3.0/fltk/LineDial.h	                        (rev 0)
+++ branches/branch-3.0/fltk/LineDial.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,44 @@
+//
+// "$Id: LineDial.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/Menu.h
===================================================================
--- branches/branch-3.0/fltk/Menu.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Menu.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,152 @@
+// "$Id: Menu.h 5708 2007-02-23 00:52:14Z spitzak $"
+//
+// Copyright 1998-2006 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();
+};
+
+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, bool begin=false);
+  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);
+  Group*  add_group(const char* label, Group* parent=0, void* data=0);
+  Widget* add_leaf(const char* label, Group* parent=0, void* data=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 5708 2007-02-23 00:52:14Z spitzak $".
+//

Added: branches/branch-3.0/fltk/MenuBar.h
===================================================================
--- branches/branch-3.0/fltk/MenuBar.h	                        (rev 0)
+++ branches/branch-3.0/fltk/MenuBar.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,51 @@
+//
+// "$Id: MenuBar.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Menu bar, each submenu is a pull-down menu. Any items act like
+// a button in the menu bar.
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/MenuBuild.h
===================================================================
--- branches/branch-3.0/fltk/MenuBuild.h	                        (rev 0)
+++ branches/branch-3.0/fltk/MenuBuild.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,37 @@
+// "$Id: MenuBuild.h 4319 2005-05-08 19:18:50Z spitzak $"
+//
+// Copyright 1998-2006 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_Build_h
+#define fltk_Menu_Build_h
+
+// include facility for building dynamic fltk2 menus
+#include "ItemGroup.h"
+#include "Item.h"
+#include "Divider.h"
+#include "MenuBar.h"
+#include "Choice.h"
+#include "PopupMenu.h"
+#include "events.h"
+#endif
+
+//
+// End of "$Id: Menu.h 4319 2005-05-08 19:18:50Z spitzak $".
+//

Added: branches/branch-3.0/fltk/MenuWindow.h
===================================================================
--- branches/branch-3.0/fltk/MenuWindow.h	                        (rev 0)
+++ branches/branch-3.0/fltk/MenuWindow.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,55 @@
+// "$Id: MenuWindow.h 5600 2007-01-13 00:04:55Z spitzak $"
+//
+// Copyright 1998-2006 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 !flag(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 5600 2007-01-13 00:04:55Z spitzak $".
+//

Added: branches/branch-3.0/fltk/Monitor.h
===================================================================
--- branches/branch-3.0/fltk/Monitor.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Monitor.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,46 @@
+// "$Id: Monitor.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Copyright 1998-2006 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

Added: branches/branch-3.0/fltk/MultiBrowser.h
===================================================================
--- branches/branch-3.0/fltk/MultiBrowser.h	                        (rev 0)
+++ branches/branch-3.0/fltk/MultiBrowser.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,47 @@
+//
+// "$Id: MultiBrowser.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// 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-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/MultiImage.h
===================================================================
--- branches/branch-3.0/fltk/MultiImage.h	                        (rev 0)
+++ branches/branch-3.0/fltk/MultiImage.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,103 @@
+//
+// "$Id: MultiImage.h 5515 2006-10-10 09:46:05Z fabien $"
+//
+// Image type that draws a different image depending on the flags,
+// for instace VALUE or SELECTED or HIGHLIGHT.
+//
+// Copyright 1998-2006 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"
+#include <stdarg.h>
+
+namespace fltk {
+
+class FL_API MultiImage : public Symbol
+{
+  const Symbol* image0;
+  struct MultiImagePair {
+    const Symbol* image;
+    Flags flags;
+  };
+  MultiImagePair* pairs;
+  unsigned n_images;
+
+public:
+  void _measure(int&, int&) const;
+  void _draw(const Rectangle&) const;
+  const Symbol* current_image() const;
+  void inset(Rectangle&) const;
+  bool fills_rectangle() const;
+  bool is_frame() const;
+
+  ~MultiImage() { release();}
+
+  //! for MultiImage arrays construction using set() for post initialization
+  MultiImage() { pairs=0; n_images = 0; } 
+  
+  //! constructor for unlimited images state affectation
+  MultiImage(unsigned count, const Symbol* img0, va_list ap) { set(count,img0, ap); }
+    
+  void set (unsigned count, const Symbol* img0, ...); // fabien: need to be accessible because of MultiImage arrays with post (set) affectations
+
+  void add(Flags flags, const Symbol& image);
+
+  //! Destroys everything except image0.
+  void release() { delete[] pairs; pairs = 0; n_images = 0; }
+
+  MultiImage(const Symbol& img0) : image0(&img0), pairs(0), n_images(0) {}
+
+  /* compatibility convenient constructors */
+  MultiImage(const Symbol& img0, Flags f1, const Symbol& img1) { set(2, &img0,f1,&img1); }
+  MultiImage(const Symbol& img0, Flags f1, const Symbol& img1,Flags f2, const Symbol& img2) {
+    set(3, &img0, f1, &img1, f2, &img2); 
+  }
+  MultiImage(const Symbol& img0, Flags f1, const Symbol& img1, Flags f2, const Symbol& img2, Flags f3, const Symbol& img3) {
+    set(4, &img0, f1, &img1, f2, &img2, f3); 
+  }
+  MultiImage(const Symbol& img0, Flags f1, const Symbol& img1, Flags f2, const Symbol& img2, Flags f3, const Symbol& img3,
+	     Flags f4, const Symbol& img4) {
+    set(5, &img0, f1, &img1, f2, &img2, f3, &img3, f4, &img4); 
+  }
+  MultiImage(const Symbol& img0, Flags f1, const Symbol& img1, Flags f2, const Symbol& img2, Flags f3, const Symbol& img3,
+	     Flags f4, const Symbol& img4, Flags f5, const Symbol& img5) {
+    set(6, &img0, f1, &img1, f2, &img2, f3, &img3, f4, &img4, f5, &img5); 
+  }
+  MultiImage(const Symbol& img0, Flags f1, const Symbol& img1, Flags f2, const Symbol& img2, Flags f3, const Symbol& img3,
+	     Flags f4, const Symbol& img4, Flags f5, const Symbol& img5, Flags f6, const Symbol& img6) {
+    set(7, &img0, f1, &img1, f2, &img2, f3, &img3, f4, &img4, f5, &img5, f6, &img6); 
+  }
+  MultiImage(const Symbol& img0, Flags f1, const Symbol& img1, Flags f2, const Symbol& img2, Flags f3, const Symbol& img3,
+	     Flags f4, const Symbol& img4, Flags f5, const Symbol& img5, Flags f6, const Symbol& img6,  Flags f7, const Symbol& img7 ) {
+    set(8, &img0, f1, &img1, f2, &img2, f3, &img3, f4, &img4, f5, &img5, f6, &img6, f7, &img7); 
+  }
+};
+
+}
+
+
+#endif
+
+//
+// End of "$Id: MultiImage.h 5515 2006-10-10 09:46:05Z fabien $".
+//

Added: branches/branch-3.0/fltk/MultiLineInput.h
===================================================================
--- branches/branch-3.0/fltk/MultiLineInput.h	                        (rev 0)
+++ branches/branch-3.0/fltk/MultiLineInput.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,48 @@
+//
+// "$Id: MultiLineInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// 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-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/MultiLineOutput.h
===================================================================
--- branches/branch-3.0/fltk/MultiLineOutput.h	                        (rev 0)
+++ branches/branch-3.0/fltk/MultiLineOutput.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,47 @@
+//
+// "$Id: MultiLineOutput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// 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-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/NumericInput.h
===================================================================
--- branches/branch-3.0/fltk/NumericInput.h	                        (rev 0)
+++ branches/branch-3.0/fltk/NumericInput.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,52 @@
+//
+// "$Id: NumericInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// 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-2006 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);
+  int handle(int);
+};
+
+}
+#endif
+
+//
+// End of "$Id: NumericInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//

Added: branches/branch-3.0/fltk/Output.h
===================================================================
--- branches/branch-3.0/fltk/Output.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Output.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,49 @@
+//
+// "$Id: Output.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// One-line text output, the user can select text and copy it
+// to other applications.
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/PackedGroup.h
===================================================================
--- branches/branch-3.0/fltk/PackedGroup.h	                        (rev 0)
+++ branches/branch-3.0/fltk/PackedGroup.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,70 @@
+//
+// "$Id: PackedGroup.h 6132 2008-05-29 23:09:01Z TobiasFar $"
+//
+// 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-2006 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_;
+  int margin_left_;
+  int margin_right_;
+  int margin_top_;
+  int margin_bottom_;
+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, bool begin=false);
+  int spacing() const {return spacing_;}
+  void spacing(int i) {spacing_ = i;}
+
+  int margin_left() const {return margin_left_;}
+  void margin_left(int m) {margin_left_ = m;}
+  int margin_right() const {return margin_right_;}
+  void margin_right(int m) {margin_right_ = m;}
+  int margin_top() const {return margin_top_;}
+  void margin_top(int m) {margin_top_ = m;}
+  int margin_bottom() const {return margin_bottom_;}
+  void margin_bottom(int m) {margin_bottom_ = m;}
+
+  void margin(int m) {margin_left_ = margin_right_ = margin_top_ = margin_bottom_ = m;}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: PackedGroup.h 6132 2008-05-29 23:09:01Z TobiasFar $".
+//

Added: branches/branch-3.0/fltk/PixelType.h
===================================================================
--- branches/branch-3.0/fltk/PixelType.h	                        (rev 0)
+++ branches/branch-3.0/fltk/PixelType.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,67 @@
+// "$Id: PixelType.h 1399 2006-08-11 02:15:20Z spitzak $"
+//
+// Copyright 1998-2006 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 {
+
+/// \name fltk/PixelType.h
+//@{
+
+/**
+  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::Image.
+
+  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
+  // unpremulitplied is not yet implemented, acts like RGBA/ARGB32:
+  RGBM	= 7,	//!< unpremultiplied bytes in r,g,b,a order
+  MRGB32= 8	//!< unpremultiplied 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

Added: branches/branch-3.0/fltk/PopupMenu.h
===================================================================
--- branches/branch-3.0/fltk/PopupMenu.h	                        (rev 0)
+++ branches/branch-3.0/fltk/PopupMenu.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,56 @@
+//
+// "$Id: PopupMenu.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// 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-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/Preferences.h
===================================================================
--- branches/branch-3.0/fltk/Preferences.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Preferences.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,109 @@
+// "$Id: Preferences.H 4458 2005-07-26 07:59:01Z matt $"
+//
+// Copyright 2002-2005 by Matthias Melcher.
+//
+// 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 fltk_Preferences_h
+#define fltk_Preferences_h
+
+#include "FL_API.h"
+
+namespace fltk {
+
+/**
+ * Preferences are a data tree containing a root, branches and leafs
+ */
+class FL_API Preferences
+{
+
+public:
+
+  enum Root { SYSTEM=0, USER };
+
+  Preferences( Root root, const char *vendor, const char *application );
+  Preferences( const char *path, const char *vendor, const char *application );
+  Preferences( Preferences&, const char *group );
+  Preferences( Preferences*, const char *group );
+  ~Preferences();
+
+  int groups();
+  const char *group( int );
+  bool groupExists( const char *group );
+  bool deleteGroup( const char *group );
+
+  int entries();
+  const char *entry( int );
+  bool entryExists( const char *entry );
+  bool deleteEntry( const char *entry );
+
+  bool set( const char *entry, int value );
+  bool set( const char *entry, float value );
+  bool set( const char *entry, double value );
+  bool set( const char *entry, const char *value );
+  bool set( const char *entry, const void *value, int size );
+
+  bool get( const char *entry, int &value,    int defaultValue );
+  bool get( const char *entry, float &value,  float defaultValue );
+  bool get( const char *entry, double &value, double defaultValue );
+  bool get( const char *entry, char *&value,  const char *defaultValue );
+  bool get( const char *entry, char *value,   const char *defaultValue, int maxSize );
+  bool get( const char *entry, void *&value,  const void *defaultValue, int defaultSize );
+  bool get( const char *entry, void *value,   const void *defaultValue, int defaultSize, int maxSize );
+  int size( const char *entry );
+
+  bool getUserdataPath( char *path, int pathlen );
+
+  void flush();
+
+  // bool export( const char *filename, Type fileFormat );
+  // bool import( const char *filename );
+
+  class FL_API Name {
+    char *data_;
+  public:
+    Name( int n );
+    Name( const char *format, ... );
+    operator const char *() { return data_; }
+    ~Name() { delete[] data_; }
+  };
+
+private:
+
+  // make the following functions unavailable 
+  Preferences();
+  Preferences(const Preferences&);
+  Preferences &operator=(const Preferences&);
+
+  class Node;
+  friend class Node;
+  Node *node;
+
+  class RootNode;
+  friend class RootNode;
+  RootNode *rootNode;
+
+};
+
+}
+
+#endif
+
+// End of "$Id: Preferences.H 4458 2005-07-26 07:59:01Z matt $".

Added: branches/branch-3.0/fltk/ProgressBar.h
===================================================================
--- branches/branch-3.0/fltk/ProgressBar.h	                        (rev 0)
+++ branches/branch-3.0/fltk/ProgressBar.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,62 @@
+//
+// "$Id: ProgressBar.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// 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-2006 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
+

Added: branches/branch-3.0/fltk/README
===================================================================
--- branches/branch-3.0/fltk/README	                        (rev 0)
+++ branches/branch-3.0/fltk/README	2010-03-30 19:10:49 UTC (rev 7368)
@@ -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!

Added: branches/branch-3.0/fltk/RadioButton.h
===================================================================
--- branches/branch-3.0/fltk/RadioButton.h	                        (rev 0)
+++ branches/branch-3.0/fltk/RadioButton.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,46 @@
+//
+// "$Id: RadioButton.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Button with a circle indicator to it's left, turning it on turns
+// off all other radio buttons in the same Group.
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/RadioItem.h
===================================================================
--- branches/branch-3.0/fltk/RadioItem.h	                        (rev 0)
+++ branches/branch-3.0/fltk/RadioItem.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,41 @@
+// "$Id: RadioItem.h 5924 2007-07-13 13:25:31Z sanel.z $"
+//
+// Copyright 1998-2006 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 {
+
+/** This widget makes a radio item in a popup or pulldown Menu.
+    It's behavior in a Browser or MultiBrowser is that it changes its status on multiple clicks (e.g. double click). */
+class RadioItem : public Item {
+public:
+  RadioItem(const char* label = 0) : Item(label) {type(RADIO);}
+  RadioItem(const char* label,int shortcut,Callback *callback=0,void *user_data=0, int flags=0)
+    : Item(label,shortcut,callback,user_data,flags) {type(RADIO);}
+};
+
+}
+
+#endif

Added: branches/branch-3.0/fltk/RadioLightButton.h
===================================================================
--- branches/branch-3.0/fltk/RadioLightButton.h	                        (rev 0)
+++ branches/branch-3.0/fltk/RadioLightButton.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,45 @@
+//
+// "$Id: RadioLightButton.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// LightButton that toggles off all others in the group when turned on.
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/Rectangle.h
===================================================================
--- branches/branch-3.0/fltk/Rectangle.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Rectangle.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,122 @@
+// "$Id: Rectangle.h 5454 2006-09-19 02:38:02Z spitzak $"
+//
+// Copyright 1998-2006 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"
+
+// rectangle macros that help keeping rectangle predicates as strict as possible 
+// even when not using rectangles in some situations (as when only using w h scalars)  
+// so that there is only one strict defintion for common predicates, 
+// if one change the following, it will be repercuted in all the core lib
+#define FLTK_RECT_EMPTY(w,h)        (w <= 0 || h <= 0)
+// we should always use the same evaluation for center_x, center_y  in all corelib code:
+//#define FLTK_CENTER_X(coord, length)  (coord + (length>>1))
+//#define FLTK_CENTER_Y(coord, length)  (coord + (length>>1))
+
+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;}
+  /*! Sets  x, y, w, h so that's it's centered or aligned (if flags!=0) inside the source r */
+  void set (const Rectangle& r, int w, int h, int flags = 0);
+  /*! 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 FLTK_RECT_EMPTY(w_, h_);}
+  /*! Same as !empty(), true if w() and h() are both greater than zero. */
+  bool not_empty() const {return  !FLTK_RECT_EMPTY(w_, h_);}
+  /*! 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_) {}
+
+  /*! Constructor that calls set(). */
+  Rectangle(const Rectangle& r, int w, int h, int flags = 0) {set(r,w,h,flags);}
+
+  /*! 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_;}
+
+  void merge(const Rectangle& r);
+  void intersect(const Rectangle& r);
+
+};
+
+}
+
+#endif

Added: branches/branch-3.0/fltk/RepeatButton.h
===================================================================
--- branches/branch-3.0/fltk/RepeatButton.h	                        (rev 0)
+++ branches/branch-3.0/fltk/RepeatButton.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,47 @@
+//
+// "$Id: RepeatButton.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// This button does it's callback repeatedly (about 10/second) while
+// the user holds the button down.
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/ReturnButton.h
===================================================================
--- branches/branch-3.0/fltk/ReturnButton.h	                        (rev 0)
+++ branches/branch-3.0/fltk/ReturnButton.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,41 @@
+// "$Id: ReturnButton.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".

Added: branches/branch-3.0/fltk/ScrollGroup.h
===================================================================
--- branches/branch-3.0/fltk/ScrollGroup.h	                        (rev 0)
+++ branches/branch-3.0/fltk/ScrollGroup.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,90 @@
+//
+// "$Id: ScrollGroup.h 6132 2008-05-29 23:09:01Z TobiasFar $"
+//
+// 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, bool begin=false);
+
+  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 6132 2008-05-29 23:09:01Z TobiasFar $".
+//

Added: branches/branch-3.0/fltk/Scrollbar.h
===================================================================
--- branches/branch-3.0/fltk/Scrollbar.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Scrollbar.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,64 @@
+//
+// "$Id: Scrollbar.h 5956 2007-10-17 19:57:31Z spitzak $"
+//
+// Scrollbar, controls an integer position of a window of a given
+// size inside a data set of a given total size.
+//
+// Copyright 1998-2006 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() const {return int(Slider::value());}
+  bool value(int position) {return Slider::value(position);}
+  bool 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 5956 2007-10-17 19:57:31Z spitzak $".
+//

Added: branches/branch-3.0/fltk/SecretInput.h
===================================================================
--- branches/branch-3.0/fltk/SecretInput.h	                        (rev 0)
+++ branches/branch-3.0/fltk/SecretInput.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,47 @@
+//
+// "$Id: SecretInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// 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-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/ShapedWindow.h
===================================================================
--- branches/branch-3.0/fltk/ShapedWindow.h	                        (rev 0)
+++ branches/branch-3.0/fltk/ShapedWindow.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,57 @@
+// "$Id: ShapedWindow.h 5972 2007-11-14 16:49:25Z dejan $"
+//
+// Copyright 1998-2006 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 "Window.h"
+// WAS: This needs to take an arbitrary Image as a mask!
+#include "xbmImage.h"
+
+namespace fltk {
+
+class FL_API ShapedWindow : public Window {
+    void init() { shape_ = 0; lw = lh = 0; changed = 0; }
+  public:
+    ShapedWindow(int W, int H, const char *l = 0)  : Window(W,H,l) {
+      border(false);
+      init();
+    }
+    ShapedWindow(int X, int Y, int W, int H, const char *l = 0): Window(X,Y,W,H,l) { 
+      border(false);
+      init();
+    }
+    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 5972 2007-11-14 16:49:25Z dejan $"
+//

Added: branches/branch-3.0/fltk/SharedImage.h
===================================================================
--- branches/branch-3.0/fltk/SharedImage.h	                        (rev 0)
+++ branches/branch-3.0/fltk/SharedImage.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,236 @@
+// "$Id: SharedImage.h 5738 2007-03-12 18:07:45Z spitzak $"
+//
+// Copyright 1998-2006 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
+
+Subclass of Image that can read a file or block of compressed data.
+This provides several useful functions:
+* Images are identified by filename. The static get() function will
+return an existing instance if it was called before with the same filename.
+The release() function will decrement the reference count and delete
+the image if nobody wants it any more.
+* An inline block of data may be provided that is the contents of the file,
+so the file does not have to exist and you can link the image directly
+into your program.
+* You may set a memory usage limit. If Image::mem_used() goes above
+this limit, it will call destroy() on least-recently-used images until
+it goes below this limit.
+* The get() function can determine the type of the file or block of
+data and create the correct subclass.
+
+*/
+
+#ifndef fltk_SharedImage_h
+#define fltk_SharedImage_h
+
+#include "Image.h"
+
+namespace fltk {
+
+struct FL_IMAGES_API ImageType;
+
+
+class FL_API SharedImage : public Image {
+// fabien : introducing SharedImage handlers and uniform loading api inspired from 1.1.x
+public:
+    /*! get an image of this name and dimensions , can be already loaded or not */
+  static SharedImage *get(const char *n); // future impl. should care about W,H dims
+
+    /*! a SharedImageHandler accepts handling a filename 
+	by analizing its extension and/or eventually its header,
+	if it handles it it returns a non null pointer on the loaded concrete image
+    */
+  /** fetch to the data/pixels unified buffer the image, return true if success. 
+	this method() does NOT draw the image, it only prepares
+	a generic buffer and its info, this method  should be used by all 
+	non-progresive-reading read() methods so that we avoid redondant code
+  */
+  typedef SharedImage *(*Handler)(const char * filename, uchar *header, int headerlen);
+    /*! adds a new handler for hanling a concrete type of image, typically one handler per image type should be registered */
+  static void add_handler(Handler f);
+    /*! removes a concrete handler */
+  static void remove_handler(Handler f);
+
+private:
+  static Handler *handlers_;		// Additional format handlers
+  static int	num_handlers_;		// Number of format handlers
+  static int	alloc_handlers_;	// Allocated format handlers
+
+protected:
+  static const char* shared_image_root;
+
+  static int image_used;
+  static unsigned mem_usage_limit;
+
+  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 protected 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;
+
+  virtual bool fetch() = 0; // force fetch() to be defined by subclasses
+
+  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);
+
+  /*! Expand a name relative to root to see what file it will read */
+  static const char* get_filename(const char*);
+
+  /*! Set the size of the cache (0 = unlimited is the default) */
+  static void set_cache_size(unsigned l);
+
+  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 libfltk2 so they are FL_API
+//
+
+class FL_API gifImage : public SharedImage {
+  gifImage() { }
+  static SharedImage* create() { return new gifImage; }
+public:
+  static bool test(const uchar* datas, unsigned size=0);
+  static SharedImage* get(const char* name, const uchar* datas = 0) {
+    return SharedImage::get(create, name, datas);
+  }
+  bool fetch();
+};
+
+class FL_API bmpImage : public SharedImage {
+  bmpImage() { }
+  static SharedImage* create() { return new bmpImage; }
+public:
+  static bool test(const uchar* datas, unsigned size=0);
+  static SharedImage* get(const char* name, const uchar* datas = 0) {
+    return SharedImage::get(create, name, datas);
+  }
+  bool fetch();
+};
+
+class FL_IMAGES_API xpmFileImage : public SharedImage {
+  xpmFileImage() { }
+  static SharedImage* create() { return new xpmFileImage; }
+public:
+  static bool test(const uchar* datas, unsigned size=0);
+  static SharedImage* get(const char* name, const uchar* datas = 0) {
+    return SharedImage::get(create, name, datas);
+  }
+  bool fetch();
+};
+
+// 
+// jpeg and png classes are in libfltk2_images so they are FL_IMAGES_API
+//
+
+class FL_IMAGES_API jpegImage : public SharedImage {
+  jpegImage() { }
+  static SharedImage* create() { return new jpegImage; }
+public:
+  static bool test(const uchar* datas, unsigned size=0);
+  static SharedImage* get(const char* name, const uchar* datas = 0) {
+    return SharedImage::get(create, name, datas);
+  }
+  bool fetch();
+};
+
+class FL_IMAGES_API pngImage : public SharedImage {
+  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);
+  static SharedImage* get(const char* name, const uchar* datas = 0) {
+    return SharedImage::get(create, name, datas);
+  }
+  bool fetch();
+};
+
+  extern FL_IMAGES_API void register_images(); // return always true only for automatic lib init purpose see images_core.cxx trick
+  extern FL_IMAGES_API void unregister_images();
+}
+
+#endif
+
+// End of "$Id: SharedImage.h 5738 2007-03-12 18:07:45Z spitzak $"

Added: branches/branch-3.0/fltk/Slider.h
===================================================================
--- branches/branch-3.0/fltk/Slider.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Slider.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,95 @@
+//
+// "$Id: Slider.h 5600 2007-01-13 00:04:55Z 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-2006 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_;
+
+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 !flag(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 5600 2007-01-13 00:04:55Z spitzak $".
+//

Added: branches/branch-3.0/fltk/StatusBarGroup.h
===================================================================
--- branches/branch-3.0/fltk/StatusBarGroup.h	                        (rev 0)
+++ branches/branch-3.0/fltk/StatusBarGroup.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,90 @@
+//
+// "$Id"
+//
+// The Status StatusBarGroup is strip that can be put in the bottom edge of a Pack,
+// usually it contains a status bar.
+// it redims according to its parent width and keeps original given height
+//
+// Copyright 2002-2006 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_StatusStatusBarGroup_h
+#define fltk_StatusStatusBarGroup_h
+
+#include "Group.h"
+#include "InvisibleBox.h"
+
+namespace fltk {
+
+class FL_API StatusBarGroup : public Group {
+public:
+  StatusBarGroup(int x,int y,int w,int h, const char* l=0, bool begin=false) :
+    Group(x,y,w,h,l,begin) {init(); }
+  //! statusbar default constructor
+  StatusBarGroup(int H=24) : Group(0, 0, 0, H, 0) {init(); }
+  virtual ~StatusBarGroup();
+
+  static NamedStyle* default_style;
+  
+  void layout();
+  void show();
+  void hide();
+ 
+  enum Position {
+	SBAR_LEFT=0,	//!< statusbar text left-aligned
+	SBAR_CENTER,	//!< statusbar text centered
+	SBAR_RIGHT	//!< statusbar text right-aligned (default)
+  };
+  
+  /** set a simple string in the status bar 
+      at a given Position 'pos' alignment spec.
+  */
+  void set(const char * t, Position pos=SBAR_RIGHT);
+  /** set a formatable (printf-like) text in the status bar 
+      at a given Position 'pos' alignment spec.
+  */
+  void set(Position pos, const char * format, ... );
+  //! set a default box to all texts  inside the status bar
+  void child_box(Box* b) {for(int i=0;i<3;i++) child_box(b,(Position)i);}
+  //! set a default box to text at particular position inside the status bar
+  void child_box(Box* b, Position i) {b_[i]= b;if(tf_[i]) tf_[i]->box(b);}
+
+protected:
+  //! draw a label on a particular (left,middle, right) Position 
+  void draw_label(Position pos, const char * label);
+  //! adapt box position and size according to Position pos and statusbar dimensions
+  void update_box(InvisibleBox *b, Position pos);
+
+private:
+  void init();
+  void resize_from_parent();
+  
+  // text fields up to three fields
+  InvisibleBox* tf_[3];   // 3 position possible and cumulable left, middle, center fields
+  Box* b_[3]; // box style for fields, default to no box
+  int saved_h_;
+};
+
+}
+#endif
+
+//
+// End of "$Id"
+//

Added: branches/branch-3.0/fltk/StringList.h
===================================================================
--- branches/branch-3.0/fltk/StringList.h	                        (rev 0)
+++ branches/branch-3.0/fltk/StringList.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,72 @@
+// "$Id: StringList.h 5709 2007-02-23 01:03:47Z spitzak $"
+//
+// Copyright 1998-2007 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 StringHierarchy : public List {
+  Widget* generated_item_;
+public:
+  // fltk::List virtual functions:
+  virtual Widget* child(const Menu*, const int* indexes, int level);
+  // virtual functions to return hierarchy of strings:
+  virtual int children(const Menu*, const int* indexes, int level) = 0;
+  virtual const char* label(const Menu*, const int* indexes, int level)=0;
+  // label() can mess with this item to change flags, font, etc:
+  Widget* generated_item() {return generated_item_;}
+  StringHierarchy() {generated_item_ = 0;}
+  ~StringHierarchy() {delete generated_item_;}
+};
+
+class FL_API StringList : public StringHierarchy {
+public:
+  // overrides of StringHierarchy virtual functions:
+  virtual int children(const Menu*, const int* indexes, int level);
+  virtual const char* label(const Menu*, const int* indexes, int level);
+  // new virtual funcitons:
+  virtual int children(const Menu*) = 0;
+  virtual const char* label(const Menu*, int index) = 0;
+};
+
+class FL_API StringArray : public StringList {
+  const char* const * array;
+  int children_;
+public:
+  // overrides of StringList virtual functions:
+  virtual int children(const Menu*);
+  virtual const char* label(const Menu*, int index);
+  // Constructors to use a constant array of strings:
+  StringArray(const char*const* a, int n) : array(a), children_(n) {}
+  StringArray(const char*const* a) {set(a);}
+  StringArray(const char* s) {set(s);}
+  StringArray() {children_ = 0;}
+  // change the array:
+  void set(const char*const* a, int n) {array=a; children_ = n;}
+  void set(const char*const* a);
+  void set(const char* s); // nul-seperated list
+};
+
+}
+#endif

Added: branches/branch-3.0/fltk/Style.h
===================================================================
--- branches/branch-3.0/fltk/Style.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Style.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,207 @@
+//
+// "$Id: Style.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// Style structure used by Widgets
+//
+// Copyright 1998-2006 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 {
+
+/// \name fltk/Style.h
+//@{
+
+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 PLASTIC_UP_BOX;
+extern FL_API Box* const PLASTIC_DOWN_BOX;
+
+struct Font;
+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;
+
+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;
+
+class FL_API Style {
+ public:
+  // Everything is public for various back-compatability hacks:
+  const Style* parent_;
+  Box*		box_;
+  Box*		buttonbox_;
+  Symbol*	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;
+  Symbol*	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 glyph		(Symbol* 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);
+};
+
+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();
+
+}
+
+extern "C" FL_API bool fltk_theme();
+
+//@}
+
+#endif
+
+//
+// End of "$Id: Style.h 6233 2008-09-14 07:54:06Z spitzak $".
+//

Added: branches/branch-3.0/fltk/StyleSet.h
===================================================================
--- branches/branch-3.0/fltk/StyleSet.h	                        (rev 0)
+++ branches/branch-3.0/fltk/StyleSet.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,48 @@
+//
+// "$Id: StyleSet.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// 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-2006 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

Added: branches/branch-3.0/fltk/Symbol.h
===================================================================
--- branches/branch-3.0/fltk/Symbol.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Symbol.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,91 @@
+// "$Id: Symbol.h 5865 2007-06-01 13:04:19Z sanel.z $"
+//
+// Copyright 1998-2006 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_;
+  Rectangle inset_;
+
+  // Forbid use of copy contructor and assign operator
+  Symbol & operator=(const Symbol &);
+  Symbol(const Symbol &);
+
+  static const char* text_;
+  static unsigned text_length_;
+
+ 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);}
+  virtual void draw_symbol_overlay(const Rectangle&) const;
+
+  void set_inset(int x,int y,int w,int h) {inset_.set(x,y,w,h);}
+  void set_inset(int x,int y) {inset_.set(x,y,-2*x,-2*y);}
+  void set_inset(int x) {inset_.set(x,x,-2*x,-2*x);}
+  void set_inset(const Rectangle& r) {inset_ = r;}
+  const Rectangle& get_inset() const {return inset_;}
+
+  int dx() const {return inset_.x();}
+  int dy() const {return inset_.y();}
+  int dw() const {return -inset_.w();} // inverted for back-compatability
+  int dh() const {return -inset_.h();} // inverted for back-compatability
+
+  // 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, unsigned n) {text_=s; text_length_=n;}
+  static const char* text() {return text_;}
+  static unsigned text_length() {return text_length_;}
+
+  virtual ~Symbol();
+};
+
+// Back-compatability constructor:
+FL_API void add_symbol(const char* name, void (*drawit)(Color), int scalable);
+
+}
+
+#endif

Added: branches/branch-3.0/fltk/SystemMenuBar.h
===================================================================
--- branches/branch-3.0/fltk/SystemMenuBar.h	                        (rev 0)
+++ branches/branch-3.0/fltk/SystemMenuBar.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,62 @@
+//
+// "$Id:$"
+//
+// MacOS system menu bar header file for the Fast Light Tool Kit (FLTK2).
+//
+// Copyright 1998-2006 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 on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+#ifndef fltk_SystemMenuBar_h
+#define fltk_SystemMenuBar_h 
+
+#include "MenuBar.h"
+
+struct Fl_Menu_Item;
+
+namespace fltk {
+
+#ifdef __APPLE__
+
+class FL_API SystemMenuBar : public MenuBar {
+protected:
+  void draw();
+public:
+  SystemMenuBar(int x,int y,int w,int h,const char *l=0)
+      : MenuBar(x,y,w,h,l) {
+	   deactivate();			// don't let the old area take events
+	  }
+  void layout();
+};
+
+#else
+
+typedef MenuBar SystemMenuBar;
+
+#endif
+
+}
+
+#endif
+
+//
+// End of "$Id:$".
+//

Added: branches/branch-3.0/fltk/TabGroup.h
===================================================================
--- branches/branch-3.0/fltk/TabGroup.h	                        (rev 0)
+++ branches/branch-3.0/fltk/TabGroup.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,141 @@
+//
+// "$Id: TabGroup.h 5575 2007-01-02 17:31:40Z 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-2006 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"
+
+#define MIN_TABSIZE 30
+
+namespace fltk {
+
+class TabGroup;
+
+
+enum {TAB_LEFT, TAB_RIGHT, TAB_SELECTED};
+
+class FL_API TabGroupPager {
+public:
+
+    TabGroupPager() : shift_(0), border_(10), slope_(5), extra_space_(5),_noclip(false) {}
+    
+    /* Pager template methods definition */
+
+    /*! this method must update the tab positions and width array, returns the selected tab    */
+    virtual int update_positions(TabGroup* g, int numchildren, int& selected, 
+	int& cumulated_width, int& available_width , int* tab_pos, int* tab_width) { return selected;}
+    /*! draw the tabs for this custom pager, return false means no custom draw is made */
+    virtual bool draw_tabs(TabGroup* g, int selected, int* tab_pos, int* tab_width) { return false;}
+    /*! determine and return the index of the child group at the corresponding pos */
+    virtual int which(TabGroup* g, int m_x,int m_y)=0;
+    /*! virtual copy from a prototype */
+    virtual TabGroupPager* clone() const=0;
+
+    virtual const char * mode_name() const = 0;
+    virtual int id() const = 0;
+
+    /*! return max width available for drawing tab thumbnails */
+    virtual int available_width(TabGroup *g ) const;
+
+    // tab appearance
+    int  border()	const {return border_;}
+    int  slope()		const {return slope_;}
+    int  extra_space()	const {return extra_space_;}
+    void border(int v)	{border_=v;}
+    void slope(int v)	{slope_=v;}
+    void extra_space(int v) {extra_space_=v;}
+    
+    /*! shifting to nth+1 tab to draw, permit to 'keep' a position while 
+	changing tabs and tab is in the interval
+    */
+    int  shift()	const {return shift_;}
+    void shift(int v)	{shift_=v;}
+    int spacing()	const {return slope_+extra_space_;}
+    /*! determines if we forbid partial tabs drawing with clipping */
+    void noclip(bool v) {_noclip=v;}
+  
+private:
+    int shift_, border_, slope_, extra_space_;
+    bool _noclip; 
+  
+};
+
+// fltk default factory pagers
+const int PAGER_MENU   = 0; //<-- two left and right buttons  provide prev page  and next page 
+const int PAGER_SHRINK = 1; //<-- tabs outside rect are shrinked to very small slice to fit
+
+
+class FL_API TabGroup : public Group {
+
+public:
+  int handle(int);
+
+  TabGroup(int,int,int,int,const char * = 0, bool begin=false);
+  ~TabGroup() {delete pager_;}
+  static NamedStyle* default_style;
+
+  int value() const;
+  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 );
+  
+  //! setting the pager_ to a tabgroup, pager is _never_ null by design
+  void pager(TabGroupPager * value);
+  //! returning the current pager_ responsible of this instance
+  TabGroupPager * pager() const {return pager_;}
+  //! setting the default pager_ for future tabgroups, a default pager is _never_ null by design
+  static void default_pager(TabGroupPager * v);
+  //! setting the default pager_ from the built-in ones
+  static void default_pager(int factory_pager_index);
+
+  int tab_height();
+  int tab_positions(int*, int*);
+
+  void draw_tab(int x1, int x2, int W, int H, Widget* o, int sel=0);
+  void draw_tab_background();
+
+protected:
+  void draw();
+
+private:
+  int push(Widget *);
+  bool _drawOutline;
+  TabGroupPager* pager_;
+  static TabGroupPager* default_pager_;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: TabGroup.h 5575 2007-01-02 17:31:40Z spitzak $".
+//

Added: branches/branch-3.0/fltk/TextBuffer.h
===================================================================
--- branches/branch-3.0/fltk/TextBuffer.h	                        (rev 0)
+++ branches/branch-3.0/fltk/TextBuffer.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,285 @@
+//
+// "$Id: TextBuffer.h 5432 2006-09-16 02:03:04Z spitzak $"
+//
+// Header file for TextBuffer class.
+//
+// Copyright 2001-2006 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 _fltk_TextBuffer_h_
+#define _fltk_TextBuffer_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 {
+public:
+  TextSelection();
+
+  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);
+  bool rectangular() const { return rectangular_; }
+  int start() const	    { return start_; }
+  int end() const	      { return end_; }
+  int rectstart() const { return rectstart_; }
+  int rectend() const   { return rectend_; }
+  bool selected() const { return selected_; }
+  void selected(bool b) { selected_ = b; }
+  bool zerowidth() const { return zerowidth_; }
+  void zerowidth(bool b) { zerowidth_ = b; }
+  bool 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:
+  bool selected_;	/*!< True if the selection is active */
+  bool rectangular_;	/*!< True if the selection is rectangular */
+  bool zerowidth_;	/*!< Width 0 selections aren't "real" selections, but
+                             they can be useful when creating rectangular
+                             selections from the keyboard. */
+  int start_;		/*!< Pos. of start of selection, or if rectangular
+                             start of line containing it. */
+  int end_;		/*!< Pos. of end of selection, or if rectangular
+                             end of line containing it. */
+  int rectstart_;	/*!< Indent of left edge of rect. selection */
+  int rectend_;		/*!< Indent of right edge of rect. selection */
+};
+
+
+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);
+
+/** TextBuffer */
+class FL_API TextBuffer {
+public:
+  TextBuffer(int requestedsize = 0);
+  ~TextBuffer();
+
+  int length() const { return length_; }
+
+  const char *text();
+  void text(const char* text);
+
+  char character(int pos);
+  char *text_range(int start, int end);
+  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 *from_buf, int from_start, int from_end, int to_pos);
+
+  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 *chars_inserted, int *chars_deleted);
+
+  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() const { return tabdist_; }
+  void tab_distance(int tabDist);
+  
+  void select(int start, int end);
+  bool selected() const { return primary_.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 count_displayed_characters_utf(int lineStartPos, int targetPos);
+  int skip_displayed_characters(int lineStartPos, int nChars);
+  int skip_displayed_characters_utf(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);
+  
+  bool findchar_forward(int startPos, char searchChar, int* foundPos);
+  bool findchar_backward(int startPos, char searchChar, int* foundPos);
+
+  bool findchars_forward(int startpos, const char *searchChars, int *foundPos);
+  bool findchars_backward(int startpos, const char *searchChars, int *foundPos);
+
+  bool search_forward(int startPos, const char* searchString, int* foundPos,
+                      bool matchCase = false);
+
+  bool search_backward(int startPos, const char* searchString, int* foundPos,
+                       bool matchCase = false);
+
+  char null_substitution_character() { return nullsubschar_; }
+  TextSelection* primary_selection() { return &primary_; }
+  TextSelection* secondary_selection() { return &secondary_; }
+  TextSelection* highlight_selection() { return &highlight_; }
+
+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 primary_;		/* highlighted areas */
+  TextSelection secondary_;
+  TextSelection highlight_;
+
+  int length_;    /*!< length of the text in the buffer (the length
+                       of the buffer itself must be calculated:
+                       gapend - gapstart + length) */
+  char *buf_;     /*!< allocated memory where the text is stored */
+  int gapstart_;  /*!< points to the first character of the gap */
+  int gapend_;    /*!< points to the first char after the gap */
+  
+  int tabdist_;		/*!< equiv. number of characters in a tab */
+  bool usetabs_;	/*!< True if buffer routines are allowed to use
+    				           tabs for padding in rectangular operations */
+  
+  int nmodifyprocs_;            /*!< number of modify-redisplay procs attached */
+  Text_Modify_Cb *modifyprocs_;	/*   modified to redisplay contents */
+  void **modifycbargs_;		  /*!< caller arguments for modifyprocs_ above */
+
+  int npredeleteprocs_;	              /*!< number of pre-delete procs attached */
+  Text_Predelete_Cb	*predeleteprocs_; /*   procedure to call before text is deleted */
+ 	                                    /*   from the buffer; at most one is supported. */
+  void **prepeletecbargs_;	          /*!< caller argument for pre-delete proc above */
+  
+  int cursorposhint_; /*!< hint for reasonable cursor position after
+    				               a buffer modification operation */
+  char nullsubschar_;	/*!< TextBuffer 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 */
+};
+
+} /* namespace fltk */
+
+#endif
+
+//
+// End of "$Id: TextBuffer.h 5432 2006-09-16 02:03:04Z spitzak $".
+//
+

Added: branches/branch-3.0/fltk/TextDisplay.h
===================================================================
--- branches/branch-3.0/fltk/TextDisplay.h	                        (rev 0)
+++ branches/branch-3.0/fltk/TextDisplay.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,358 @@
+//
+// "$Id: TextDisplay.h 5432 2006-09-16 02:03:04Z spitzak $"
+//
+// Header file for TextDisplay class.
+//
+// Copyright 2001-2006 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 _fltk_TextDisplay_h_
+#define _fltk_TextDisplay_h_
+
+#include "draw.h"
+#include "Group.h"
+#include "Widget.h"
+#include "Scrollbar.h"
+#include "TextBuffer.h"
+#include "Font.h"
+
+namespace fltk {
+
+typedef void (*UnfinishedStyleCb)(int, void *);
+
+/** TextDisplay */
+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 fltk::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
+  };
+
+  enum {
+    ATTR_NONE = 0,
+    ATTR_UNDERLINE = 1,
+    ATTR_HIDDEN = 2
+  };
+
+  struct StyleTableEntry {
+    Color	color;
+    Font        *font;
+    float       size;
+    unsigned	attr;
+  };
+
+  TextDisplay(int X, int Y, int W, int H, const char *l = 0);
+  ~TextDisplay();
+
+  // Emulation of Input widget:
+  int size() const { return buffer_->length(); }
+  const char* text() const { return buffer_->text(); }
+  void text( const char* v) { buffer_->text(v); }
+  void static_text( const char* v) { buffer_->text(v); }
+  char at(int i) const { return buffer_->character(i); }
+
+  virtual int handle(int e);
+  virtual void draw();
+  virtual void layout();
+
+  /** Associate 'buf' with display */
+  void buffer(TextBuffer* buf);
+  /** Associate 'buf' with display */
+  void buffer(TextBuffer& buf) { buffer(&buf); }
+
+  /** Return attached buffer */
+  TextBuffer* buffer() { return buffer_; }
+  /** Return attached buffer */
+  const TextBuffer* buffer() const { return buffer_; }
+
+  /** Append text to the end of the buffer */
+  void append(const char *text) { insert_position(buffer()->length()); insert(text); }
+  /** Insert text to current cursor position */
+  void insert(const char *text);
+  /** Overstrike text from current cursor position */
+  void overstrike(const char *text);
+
+  /** Set new cursor position */
+  void insert_position(int newPos);
+  /** Return current cursor position */
+  int insert_position() const { return cursor_pos_; }
+  /** Make cursor position visible in screen */
+  void show_insert_position();
+
+  /** Show cursor */
+  void show_cursor(bool b = true);
+  /** Hide cursor */
+  void hide_cursor() { show_cursor(false); }
+  /** Return cursor visibility state */
+  bool cursor_on() const { return cursor_on_; }
+  /** Set cursor style */
+  void cursor_style(int style);
+
+  /** Return cursor color */
+  Color cursor_color() const { return cursor_color_;}
+  /** Set cursor color */
+  void cursor_color(Color n) { cursor_color_ = n; }
+
+  /** Return begining of the word where 'pos' is located */
+  int word_start(int pos) { return buffer()->word_start(pos); }
+  /** Return end of the word where 'pos' is located */
+  int word_end(int pos) { return buffer()->word_end(pos); }
+  /** Go to next word */
+  void next_word(void);
+  /** Go to previous word */
+  void previous_word(void);
+
+  /** Set wrapping mode. wrap_margin is width to wrap at, zero means use w() */
+  void wrap_mode(bool wrap, int wrap_margin=0);
+
+  /** Set line number area width */
+  void linenumber_width(int width);
+  /** Return line number area width */
+  int linenumber_width() const { return linenumwidth_; }
+
+  /** Set new highlight data */
+  void highlight_data(TextBuffer *styleBuffer,
+		      StyleTableEntry *styleTable,
+		      int nStyles, char unfinishedStyle,
+		      UnfinishedStyleCb unfinishedHighlightCB,
+		      void *cbArg);
+
+  /** Move cursor right */
+  bool move_right();
+  /** Move cursor left */
+  bool move_left();
+  /** Move cursor down */
+  bool move_up();
+  /** Move cursor down */
+  bool move_down();
+
+  /** Redisplay text */
+  void redisplay_range(int start, int end);
+
+  /** Scroll to new position */
+  void scroll(int topLineNum, int horizOffset);
+
+  /** Returns true if position is inside selection */
+  bool in_selection(int x, int y);
+
+  /** Returns begining of the line where 'pos' is located */
+  int line_start(int pos);
+
+  /** Returns end of the line where 'pos' is located */
+  int line_end(int pos, bool start_pos_is_line_start = false);
+
+  /** Return number of visible lines */
+  int visible_lines() const { return visiblelines_cnt_; }
+
+  /** Return current visible topline */
+  int top_line() const { return topline_num_; }
+
+  /** Return current horizontal offset */
+  int hor_offset() const { return horiz_offset_; }
+
+  /** Find start of the next character, starting from 'pos'
+   * If 'pos' points to start of character already, it is returned.
+   * This is mainly used with UTF-8 strings
+   */
+  int find_next_char(int pos);
+
+  /** Find start of the previous character, starting from 'pos'
+   * If 'pos' points to start of character already, it is returned.
+   * This is mainly used with UTF-8 strings
+   */
+  int find_prev_char(int pos);
+
+  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);
+
+  bool position_to_xy(int pos, int *X, int *Y);
+
+  int total_lines() {return count_lines(0, buffer_->length(), true);}
+
+protected:
+  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();
+
+  int count_lines(int start, int end, bool start_pos_is_line_start);
+  int skip_lines(int startPos, int nLines, bool startPosIsLineStart);
+  int rewind_lines(int startPos, int nLines);
+  int position_style(int lineStartPos, int lineLen, int lineIndex, int dispIndex);
+
+  int wrapped_column(int row, int column);
+  int wrapped_row(int row);
+
+  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, bool *scrolled);
+
+  void calc_last_char();
+
+  bool 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 longestvline = 0);
+
+  void blank_cursor_protrusions();
+  int measure_vline(int visLineNum);
+  int longest_vline();
+  int empty_vlines();
+  int vline_length(int visLineNum);
+
+  void maintain_absolute_top_line_number(bool 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();
+  bool 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(TextBuffer *buf, int bufpos, 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 cursor_pos_;
+  bool cursor_on_;
+  int cursor_oldx_;           /* X pos. of cursor for blanking */
+  int cursor_oldy_;           /* Y pos. of cursor for blanking */
+  int cursor_hint_;           /* Tells the buffer modified callback
+				 where to move the cursor, to reduce
+				 the number of redraw calls */
+  int cursor_style_;          /* One of enum cursorStyles above */
+  int cursor_preferred_col_;  /* Column for vert. cursor movement */
+  int visiblelines_cnt_;      /* # of visible (displayed) lines */
+  int bufferlines_cnt_;       /* # of newlines in the buffer */
+  TextBuffer *buffer_;        /* Contains text to be displayed */
+  TextBuffer *stylebuffer_;   /* Optional parallel buffer containing
+				 color and font information */
+  int firstchar_, lastchar_;  /* Buffer positions of first and last
+				 displayed character (lastChar points
+				 either to a newline or one character
+				 beyond the end of the buffer) */
+  bool own_buffer;	      /* True if buffer_ created by constructor */
+  bool continuous_wrap_;      /* Wrap long lines when displaying */
+  int wrapmargin_;            /* Margin in # of char positions for
+				 wrapping in continuousWrap mode */
+  int *linestarts_;
+  int topline_num_;           /* Line number of top displayed line
+				 of file (first line of file is 1) */
+  int abs_topline_num_;       /* 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). */
+  bool need_abs_topline_num_; /* Externally settable flag to continue
+				 maintaining absTopLineNum even if
+				 it isn't needed for line # display */
+  int horiz_offset_;          /* Horizontal scroll pos. in pixels */
+  int numstyles_;             /* Number of entries in styleTable */
+  const StyleTableEntry *styletable_; /* Table of fonts and colors for
+					 coloring/syntax-highlighting */
+  char unfinished_style_;     /* Style buffer entry which triggers
+				 on-the-fly reparsing of region */
+  UnfinishedStyleCb unfinished_highlight_cb_; /* Callback to parse "unfinished" */
+					      /* regions */
+  void *highlight_cbarg_;     /* Arg to unfinishedHighlightCB */
+  int fixed_fontwidth_;       /* Font width if all current fonts are
+				 fixed and match in width, else -1 */
+  bool suppressresync_;       /* Suppress resynchronization of line
+				 starts during buffer updates */
+  int nlinesdeleted_;         /* Number of lines deleted during
+				 buffer modification (only used
+				 when resynchronization is suppressed) */
+
+  int stdfontwidth_;
+  int ascent_;
+  int descent_;
+  int maxsize_;
+
+  Color cursor_color_;
+
+  Scrollbar *hscrollbar;
+  Scrollbar *vscrollbar;
+
+  Rectangle text_area;
+
+  int dragpos_, dragtype_, dragging_;
+  int linenumleft_, linenumwidth_; /* Line number margin and width */
+};
+
+} /* namespace fltk */
+
+#endif
+
+//
+// End of "$Id: TextDisplay.h 5432 2006-09-16 02:03:04Z spitzak $".
+//
+

Added: branches/branch-3.0/fltk/TextEditor.h
===================================================================
--- branches/branch-3.0/fltk/TextEditor.h	                        (rev 0)
+++ branches/branch-3.0/fltk/TextEditor.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,122 @@
+//
+// "$Id: TextEditor.h 4899 2006-04-04 13:53:37Z fabien $"
+//
+// Header file for TextEditor class.
+//
+// Copyright 2001-2006 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)
+
+/** TextEditor */
+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;
+  };
+
+  static NamedStyle* default_style;
+
+  TextEditor(int X, int Y, int W, int H, const char* l = 0);
+  ~TextEditor();
+
+  virtual int handle(int e);
+
+  /** Set new insert mode. true=insert, false=overstrike */
+  void insert_mode(bool b) { insert_mode_ = b; }
+  /** Return current insert mode */
+  bool insert_mode() const { 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();
+
+  bool insert_mode_;
+  Key_Binding* key_bindings;
+  static Key_Binding* global_key_bindings;
+  Key_Func default_key_function_;
+};
+
+} /* namespace fltk */
+
+#endif
+
+//
+// End of "$Id: TextEditor.h 4899 2006-04-04 13:53:37Z fabien $".
+//
+
+

Added: branches/branch-3.0/fltk/Threads.h
===================================================================
--- branches/branch-3.0/fltk/Threads.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Threads.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,206 @@
+#ifndef fltk_Threads_h
+#define fltk_Threads_h
+#include <fltk/FL_API.h>
+
+#if !defined( _WIN32) || defined(__CYGWIN__)
+// pthreads:
+
+#include <pthread.h>
+
+namespace fltk {
+
+/// \name fltk/Threads.h
+//@{
+
+/** 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)
+
+class RecursiveMutex : public Mutex {
+public:
+  RecursiveMutex();
+};
+
+#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

Added: branches/branch-3.0/fltk/ThumbWheel.h
===================================================================
--- branches/branch-3.0/fltk/ThumbWheel.h	                        (rev 0)
+++ branches/branch-3.0/fltk/ThumbWheel.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,54 @@
+//
+// "$Id: ThumbWheel.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Inventor-style thumbwheel control for a single floating point value.
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/TiledGroup.h
===================================================================
--- branches/branch-3.0/fltk/TiledGroup.h	                        (rev 0)
+++ branches/branch-3.0/fltk/TiledGroup.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,50 @@
+//
+// "$Id: TiledGroup.h 5575 2007-01-02 17:31:40Z spitzak $"
+//
+// 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-2006 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, bool begin=false) :
+    Group(x,y,w,h,l,begin) {}
+  void position(int, int, int, int);
+};
+
+}
+#endif
+
+//
+// End of "$Id: TiledGroup.h 5575 2007-01-02 17:31:40Z spitzak $".
+//

Added: branches/branch-3.0/fltk/TiledImage.h
===================================================================
--- branches/branch-3.0/fltk/TiledImage.h	                        (rev 0)
+++ branches/branch-3.0/fltk/TiledImage.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,50 @@
+//
+// "$Id: TiledImage.h 5810 2007-05-11 22:44:12Z spitzak $"
+//
+// A tiled image completely fills the bounding box passed to it with
+// replications of the internal Image passed to it.
+//
+// Copyright 1998-2006 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;
+};
+
+}
+#endif
+
+//
+// End of "$Id: TiledImage.h 5810 2007-05-11 22:44:12Z spitzak $"
+//

Added: branches/branch-3.0/fltk/ToggleButton.h
===================================================================
--- branches/branch-3.0/fltk/ToggleButton.h	                        (rev 0)
+++ branches/branch-3.0/fltk/ToggleButton.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,44 @@
+//
+// "$Id: ToggleButton.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Button that clicks on and off. You get the state with value().
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/ToggleItem.h
===================================================================
--- branches/branch-3.0/fltk/ToggleItem.h	                        (rev 0)
+++ branches/branch-3.0/fltk/ToggleItem.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,41 @@
+// "$Id: ToggleItem.h 588 2003-06-24 21:10:19Z spitzak $"
+//
+// Copyright 1998-2006 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_ToggleItem_h
+#define fltk_ToggleItem_h
+
+#include "Item.h"
+
+namespace fltk {
+
+/** This widget makes a checkmark in a popup or pulldown Menu.
+    It's behavior in a Browser or MultiBrowser is that it changes its status on multiple clicks (e.g. double click). */
+class ToggleItem : public Item {
+public:
+  ToggleItem(const char* label = 0) : Item(label) {type(TOGGLE);}
+  ToggleItem(const char* label,int shortcut,Callback *callback=0,void *user_data=0, int flags=0)
+    : Item(label,shortcut,callback,user_data,flags) {type(TOGGLE);}
+};
+
+}
+
+#endif

Added: branches/branch-3.0/fltk/Tooltip.h
===================================================================
--- branches/branch-3.0/fltk/Tooltip.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Tooltip.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,86 @@
+// "$Id: Tooltip.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/Valuator.h
===================================================================
--- branches/branch-3.0/fltk/Valuator.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Valuator.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,93 @@
+// "$Id: Valuator.h 6944 2009-11-27 12:18:37Z cwarrens $"
+//
+// Copyright 1998-2006 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_;}
+  bool value(double);
+
+  double minimum() const {return minimum_;}
+  void minimum(double a) {minimum_ = a;}
+
+  double maximum() const {return maximum_;}
+  void maximum(double a) {maximum_ = a;}
+
+  void range(double a, double b) {minimum_ = a; maximum_ = b;}
+
+  double step() const {return step_;}
+  void step(double a) {step_ = a;}
+
+  double linesize() const;
+  void linesize(double a) {linesize_ = a;}
+  double linesize_setting() const {return linesize_;}
+
+  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_=a; maximum_=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_;
+  double previous_value_;
+  double minimum_;
+  double maximum_;
+  double step_;
+  double linesize_;
+
+};
+
+}
+
+#endif
+
+// End of "$Id: Valuator.h 6944 2009-11-27 12:18:37Z cwarrens $".

Added: branches/branch-3.0/fltk/ValueInput.h
===================================================================
--- branches/branch-3.0/fltk/ValueInput.h	                        (rev 0)
+++ branches/branch-3.0/fltk/ValueInput.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,58 @@
+//
+// "$Id: ValueInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Text field for inputing a floating-point number
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/ValueOutput.h
===================================================================
--- branches/branch-3.0/fltk/ValueOutput.h	                        (rev 0)
+++ branches/branch-3.0/fltk/ValueOutput.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,45 @@
+//
+// "$Id: ValueOutput.h 5197 2006-06-14 07:43:46Z spitzak $"
+//
+// Copyright 1998-2006 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 "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 5197 2006-06-14 07:43:46Z spitzak $".
+//

Added: branches/branch-3.0/fltk/ValueSlider.h
===================================================================
--- branches/branch-3.0/fltk/ValueSlider.h	                        (rev 0)
+++ branches/branch-3.0/fltk/ValueSlider.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,52 @@
+//
+// "$Id: ValueSlider.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/Widget.h
===================================================================
--- branches/branch-3.0/fltk/Widget.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Widget.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,331 @@
+// "$Id: Widget.h 6518 2008-11-11 22:31:26Z spitzak $"
+//
+// Copyright 1998-2006 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;
+class FL_API AssociationType;
+class FL_API AssociationFunctor;
+struct Cursor;
+
+typedef void (Callback )(Widget*, void*);
+typedef Callback* Callback_p; // needed for BORLAND
+typedef void (Callback0)(Widget*);
+typedef void (Callback1)(Widget*, long);
+
+#ifdef FLTK_1_WIDGET  // back-compatability section:
+FL_API Font* font(int);
+#endif
+
+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 Symbol* default_glyph;
+
+  Group* parent() const	{ return parent_; }
+  void	parent(Group* w)	{ parent_ = w; }
+  Window* window() const	;
+
+  enum WidgetVisualType {
+    // Values for type() shared by Button and menu Item, and for fake RTTI:
+    RESERVED_TYPE      = 0x64,
+    TOGGLE    = RESERVED_TYPE+1,
+    RADIO     = RESERVED_TYPE+2,
+    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	;
+  void	shortcut(unsigned key)	;
+  bool	add_shortcut(unsigned key);
+  bool	remove_shortcut(unsigned key);
+  void  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_; }
+  void	flags(Flags f)  	{ flags_ = f; }
+  void	set_flag(unsigned f)	{ flags_ |= f; }
+  void	clear_flag(unsigned f)	{ flags_ &= ~f; }
+  void	invert_flag(unsigned f)	{ flags_ ^= f; }
+  void	set_flag(unsigned f,bool b) { flags_ = (flags_&~f)|(b?f:0); }
+  bool	flag(unsigned f) const	{ return (flags_ & f) != 0; }
+  bool	any_of(unsigned f) const{ return (flags_ & f) != 0; }
+  bool	all_of(unsigned f) const{ return (flags_ & f) == f; }
+
+  bool	state() const 		{ return flag(STATE); }
+  bool  state(bool);
+  bool	set()			{ return state(true); }
+  bool	clear()			{ return state(false); }
+  void	setonly();
+
+  Flags	align() const		{ return flags_&ALIGN_MASK; }
+  void	align(unsigned a)	{ flags_ = (flags_ & (~ALIGN_MASK)) | a; }
+  bool	visible() const		{ return !flag(INVISIBLE); }
+  bool	visible_r() const	;
+  void	show()			;
+  void	hide()			;
+  void	set_visible()		{ clear_flag(INVISIBLE); }
+  void	clear_visible()		{ set_flag(INVISIBLE); }
+  bool	active() const		{ return !flag(INACTIVE); }
+  bool	active_r() const	;
+  void	activate()		;
+  void	activate(int b)		{ if (b) activate(); else deactivate(); }
+  void	deactivate()		;
+  bool	output() const		{ return flag(OUTPUT); }
+  void	set_output()		{ set_flag(OUTPUT); }
+  void	clear_output()		{ clear_flag(OUTPUT); }
+  bool	takesevents() const	{ return !any_of(OUTPUT|INVISIBLE|INACTIVE); }
+  bool	changed() const		{ return flag(CHANGED); }
+  void	set_changed()		{ set_flag(CHANGED); }
+  void	clear_changed()		{ clear_flag(CHANGED); }
+  bool	selected() const	{ return flag(SELECTED); }
+  void	set_selected()		{ set_flag(SELECTED); }
+  void	clear_selected()	{ clear_flag(SELECTED); }
+  bool	click_to_focus()	{ return flag(CLICK_TO_FOCUS); }
+  void  set_click_to_focus()	{ set_flag(CLICK_TO_FOCUS); }
+  void	clear_click_to_focus()	{ clear_flag(CLICK_TO_FOCUS); }
+  bool	tab_to_focus()		{ return flag(TAB_TO_FOCUS); }
+  void  set_tab_to_focus()	{ set_flag(TAB_TO_FOCUS); }
+  void	clear_tab_to_focus()	{ clear_flag(TAB_TO_FOCUS|CLICK_TO_FOCUS); }
+  bool  horizontal() const	{ return !flag(LAYOUT_VERTICAL);}
+  bool	vertical() const	{ return flag(LAYOUT_VERTICAL);}
+  void	set_horizontal()	{ clear_flag(LAYOUT_VERTICAL); }
+  void	set_vertical()		{ set_flag(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_box(const Rectangle& r) const ; // multiple boxes drawing for a single Widget
+  void	draw_label() const	;
+  void  draw_label(const Rectangle&, Flags) const ;
+  void  draw_glyph(int, const Rectangle&) const ;
+  void	cursor(Cursor*) const	;
+
+  void	measure_label(int&, int&) const ;
+
+  Box*	box()			const;
+  Box*	buttonbox()		const;
+  Symbol* 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 glyph(Symbol*)		;
+  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);
+
+  void  add(const AssociationType&, void* data);
+  void  set(const AssociationType&, void* data);
+  void* get(const AssociationType&) const;
+  void* foreach(const AssociationType&, AssociationFunctor&) const;
+  bool  remove(const AssociationType&, void* data);
+  bool  find(const AssociationType&, void* data) const;
+
+#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 6518 2008-11-11 22:31:26Z spitzak $".
+//

Added: branches/branch-3.0/fltk/WidgetAssociation.h
===================================================================
--- branches/branch-3.0/fltk/WidgetAssociation.h	                        (rev 0)
+++ branches/branch-3.0/fltk/WidgetAssociation.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,81 @@
+#ifndef fltk_WidgetAssociation_h
+#define fltk_WidgetAssociation_h
+
+#include <fltk/FL_API.h>
+
+namespace fltk {
+
+class FL_API Widget;
+class FL_API AssociationType;
+
+/*! \brief Class used by the foreach() functions.
+ *
+ * Base class for the association functor that is used in foreach(). If you want to supply
+ * your specific actions to do with the associated data found by the foreach() functions
+ * you need to derive from this class and provide a new handle function.
+ */
+class FL_API AssociationFunctor {
+ public:
+  /*!
+   * For each
+   * found association this function is called. If the function returns true the
+   * loop is aborted and the data pointer for the current association is returned
+   */
+  virtual bool handle(const AssociationType&, const Widget*, void* data) = 0;
+};
+
+/*! \relates AssociationType
+ * This function allows traversing all associations of a certain association type, a certain widget,
+ * both, or none of the constraints.
+ * For each found widget the handle function in the associaionFunctor class is called. If that
+ * function returns true the scan is aborted and the data for the current widget is returned
+ * A NULL pointer for the AssociationType or the Widget pointer means to call the functor for all
+ * AssociationTypes and/or all Widgets.
+ *
+ * The function either returns the first associated data for which the functor returns true, or NULL.
+ * See also Widget::foreach() and AssociationType::foreach().
+ */
+FL_API void*  foreach(const AssociationType*, const Widget*, AssociationFunctor&);
+
+/*! \brief Base class for the association type.
+ *
+ * FLTK allows you to attach any kind of user data to a widget. This data is automatically freed when the
+ * widget to which it is attached is destroyed. Internally an association table is used to connect the
+ * widget pointer with the data pointer that is why all the functions concerned with this feature contain
+ * "association" in their name. The advantage of this is that no space is taken on widgets that do not
+ * contain the data (or that have the "default value"), and that the destructor code is not linked in
+ * if the association is not used.
+ *
+ * To be able to associate data and to be able to have a customized way of freeing the data you need
+ * to derive from this class and then create an instance of that class. With the pointer to that instance
+ * the type of the data is identified.
+ *
+ * possible uses:
+ * - assign key shortcuts to certain widgets
+ * - assign a tooltip to some widgets
+ * - assign a help-index to widgets
+ * - assign a unique identifier to widgets to remote controlling
+ * - assign additional layouting data for new container widgets
+ * - assign data needed by typesafe callback mechanisms
+ * - assign all kind of data not always required within a widget / each widget
+ */
+class FL_API AssociationType {
+
+ public:
+  /*! \brief This function is called when associated data is freed
+   * This function must be proveded when creating a data specific subclass. The function
+   * must do whatever is necessary to free associated data. Most of the time it will be a cast
+   * to the right datatype and a delete
+   */
+  virtual void destroy(void* data) const = 0;
+
+  /*! \brief Finds all data of this association type for a widget
+   * This function just calls fltk::foreach(this, wg, fkt). If \a wg
+   * is NULL this function will find all data for any widget.
+   */
+  void* foreach(const Widget* wg, AssociationFunctor& fkt) { return fltk::foreach(this, wg, fkt); }
+};
+
+}
+
+#endif

Added: branches/branch-3.0/fltk/Window.h
===================================================================
--- branches/branch-3.0/fltk/Window.h	                        (rev 0)
+++ branches/branch-3.0/fltk/Window.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,158 @@
+// "$Id: Window.h 6150 2008-08-04 22:53:30Z 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-2006 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;
+
+// implementations of methods of Window are in different files in src/
+
+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 border(bool set)	{set ? clear_flag(NOBORDER) : set_flag(NOBORDER);}
+  /*! \deprecated compat. api only, please use Window::border(bool)*/
+  void clear_border()    {set_flag(NOBORDER);} 
+  bool border() const	{return !flag(NOBORDER);}
+  void set_override()	{set_flag(NOBORDER|OVERRIDE);}
+  bool override() const {return flag(OVERRIDE); }
+  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 flag(DOUBLE);}
+  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 get_size_range( int *min_w, int *min_h, int *max_w, int *max_h );
+
+  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 make_exec_return(bool);
+  void show_inside(const Window* parent);
+  virtual void destroy();
+
+  void iconize();
+  bool iconic() const;
+
+  void maximize();
+
+  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();
+  void system_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_;
+
+  // fabien: used for my cairo experimentations,
+  // not sure i'll keep that opaque backbuffer access :
+  // at least it shouldn't stay public
+  void* backbuffer() const;
+
+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 6150 2008-08-04 22:53:30Z spitzak $".
+//

Added: branches/branch-3.0/fltk/WizardGroup.h
===================================================================
--- branches/branch-3.0/fltk/WizardGroup.h	                        (rev 0)
+++ branches/branch-3.0/fltk/WizardGroup.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,59 @@
+//
+// "$Id: WizardGroup.h 4288 2005-04-16 00:13:17Z mike $"
+//
+// WizardGroup widget definitions.
+//
+// Copyright 1999-2006 by Easy Software Products 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 on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+//
+// Include necessary header files...
+//
+
+#ifndef _fltk_WizardGroup_h_
+#define _fltk_WizardGroup_h_
+
+#include "Group.h"
+
+namespace fltk {
+
+class FL_API WizardGroup : public Group {
+  Widget * value_;
+public:
+  WizardGroup(int x,int y,int w,int h, const char * l = 0, bool begin=false)
+    : Group(x,y,w,h,l,begin), value_(0) {  box(THIN_UP_BOX);}
+
+  void          draw(); 
+  void		next();
+  void		prev();
+  void		value(Widget *);
+  //! return  the current visible child.
+  Widget *      value() const { return value_;}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: WizardGroup.h 4288 2005-04-16 00:13:17Z mike $".
+//

Added: branches/branch-3.0/fltk/WordwrapInput.h
===================================================================
--- branches/branch-3.0/fltk/WordwrapInput.h	                        (rev 0)
+++ branches/branch-3.0/fltk/WordwrapInput.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,45 @@
+//
+// "$Id: WordwrapInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Small text input field that word-wraps its contents.
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/WordwrapOutput.h
===================================================================
--- branches/branch-3.0/fltk/WordwrapOutput.h	                        (rev 0)
+++ branches/branch-3.0/fltk/WordwrapOutput.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,45 @@
+//
+// "$Id: WordwrapOutput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Small text output field that word-wraps its contents.
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/ask.h
===================================================================
--- branches/branch-3.0/fltk/ask.h	                        (rev 0)
+++ branches/branch-3.0/fltk/ask.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,80 @@
+//
+// "$Id: ask.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// Copyright 2008 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;
+
+/// \name fltk/ask.h
+//@{
+
+enum {
+  BEEP_DEFAULT = 0,
+  BEEP_MESSAGE,
+  BEEP_ERROR,
+  BEEP_QUESTION,
+  BEEP_PASSWORD,
+  BEEP_NOTIFICATION
+};
+
+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, ...);
+FL_API void beep(int type = BEEP_DEFAULT);
+FL_API void beep_on_dialog(bool);
+FL_API bool beep_on_dialog();
+
+extern FL_API NamedStyle* icon_style;
+extern FL_API NamedStyle* message_style;
+
+extern FL_API const char* message_window_label;
+extern FL_API float message_window_timeout;
+
+extern FL_API bool message_window_scrollable;
+
+// 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 6233 2008-09-14 07:54:06Z spitzak $".
+//

Added: branches/branch-3.0/fltk/damage.h
===================================================================
--- branches/branch-3.0/fltk/damage.h	                        (rev 0)
+++ branches/branch-3.0/fltk/damage.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,52 @@
+#ifndef fltk_damage_h
+#define fltk_damage_h
+
+namespace fltk {
+
+/*!
+  Values of the bits stored in Widget::damage().
+
+  When redrawing your widgets you should look at the damage bits to
+  see what parts of your widget need redrawing. The Widget::handle()
+  method can then set individual damage bits to limit the amount of
+  drawing that needs to be done, and the Widget::draw() method can
+  test these bits to decide what to draw:
+
+\code
+MyClass::handle(int event) {
+  ...
+  if (change_to_part1) damage(1);
+  if (change_to_part2) damage(2);
+  if (change_to_part3) damage(4);
+}
+
+MyClass::draw() {
+  if (damage() & fltk::DAMAGE_ALL) {
+    ... draw frame/box and other static stuff ...
+  }
+  if (damage() & (fltk::DAMAGE_ALL | 1)) draw_part1();
+  if (damage() & (fltk::DAMAGE_ALL | 2)) draw_part2();
+  if (damage() & (fltk::DAMAGE_ALL | 4)) draw_part3();
+}
+\endcode
+
+  Except for DAMAGE_ALL, each widget is allowed to assign any meaning
+  to any of the bits it wants. The enumerations are just to provide
+  suggested meanings.
+*/
+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

Added: branches/branch-3.0/fltk/dirent.h
===================================================================
--- branches/branch-3.0/fltk/dirent.h	                        (rev 0)
+++ branches/branch-3.0/fltk/dirent.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,31 @@
+//
+// "$Id: dirent.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Directory header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/draw.h
===================================================================
--- branches/branch-3.0/fltk/draw.h	                        (rev 0)
+++ branches/branch-3.0/fltk/draw.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,223 @@
+// "$Id: draw.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// Copyright 1998-2006 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 FLTK drawing library, used by all widgets to draw themselves.
+
+  These functions can only be called when FLTK is setup to draw
+  things. This is only true:
+  - Inside the Widget::draw() virtual function.
+  - Inside the Symbol::draw() virtual function.
+  - After calling Widget::make_current(), before calling wait() or flush().
+  Calling the drawing functions at other times produces undefined results,
+  including crashing.
+*/
+
+#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 {
+
+/// \name fltk/draw.h
+//@{
+
+struct Font;
+class Style;
+
+class FL_API GSave {
+  void* data[4]; // hopefully big enough for everybody...
+ public:
+  GSave();
+  ~GSave();
+};
+
+// 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(const Rectangle& from, Rectangle& to);
+FL_API void transform(int& x, int& y, int& w, int& h);
+
+// Clipping
+FL_API void push_clip(const Rectangle&);
+//! Same as push_clip(Rectangle(x,y,w,h)) but faster:
+FL_API void push_clip(int X,int Y, int W, int H);
+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&);
+
+FL_API void setcolor(Color);
+FL_API void setcolor_alpha(Color, float alpha);
+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 FL_API const Style* drawstyle_;
+void FL_API drawstyle(const Style* s, Flags);
+inline const Style* drawstyle() {return drawstyle_;}
+
+extern FL_API 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, float width=0, const 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
+};
+extern FL_API int line_style_;
+inline FL_API int line_style() {return line_style_;}
+extern FL_API float line_width_;
+inline FL_API float line_width() {return line_width_;}
+extern FL_API const char* line_dashes_;
+inline FL_API const char* line_dashes() {return line_dashes_;}
+
+// Path construction
+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();
+
+// Shapes and lines
+FL_API void strokepath();
+FL_API void fillpath();
+FL_API void fillstrokepath(Color);
+
+FL_API void fillrect(int, int, int, int);
+inline void fillrect(const Rectangle& r) {fillrect(r.x(),r.y(),r.w(),r.h());}
+FL_API void strokerect(int, int, int, int);
+inline void strokerect(const Rectangle& r) {strokerect(r.x(),r.y(),r.w(),r.h());}
+FL_API void drawline(int x0, int y0, int x1, int y1);
+FL_API void drawline(float x0, float y0, float x1, float y1);
+FL_API void drawpoint(int x, int y);
+FL_API void drawpoint(float x, float y);
+
+// Text
+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(float (*getwidth)(const char*, int),const char*, float& w, float& h, Flags = 0);
+FL_API void drawtext(const char*, const Rectangle&, Flags);
+FL_API void drawtext(void (*textfunction)(const char*,int,float,float),
+		     float (*getwidth)(const char*, int),
+		     const char* str, const Rectangle& r, Flags 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
+
+// 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*);
+
+#ifndef DOXYGEN /* depreciated: */
+FL_API void drawframe(const char* s, int x, int y, int w, int h);
+FL_API void drawframe2(const char* s, int x, int y, int w, int h);
+FL_API void overlay_rect(int,int,int,int);
+FL_API void overlay_clear();
+#endif
+
+//@}
+
+}
+
+#endif
+
+//
+// End of "$Id: draw.h 6233 2008-09-14 07:54:06Z spitzak $".
+//

Added: branches/branch-3.0/fltk/error.h
===================================================================
--- branches/branch-3.0/fltk/error.h	                        (rev 0)
+++ branches/branch-3.0/fltk/error.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,24 @@
+/*! \file
+  Functions to report errors and possibly kill the program.
+  You can change these pointers from their default values so that
+  fltk calls your code instead.
+*/
+
+#ifndef fltk_error_h
+#define fltk_error_h
+
+#include "FL_API.h"
+
+namespace fltk {
+
+/// \name fltk/error.h
+//@{
+
+extern FL_API void (*warning)(const char*, ...);
+extern FL_API void (*error)(const char*, ...);
+extern FL_API void (*fatal)(const char*, ...);
+
+//@}
+
+}
+#endif

Added: branches/branch-3.0/fltk/events.h
===================================================================
--- branches/branch-3.0/fltk/events.h	                        (rev 0)
+++ branches/branch-3.0/fltk/events.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,330 @@
+//
+// "$Id: events.h 6514 2008-11-10 21:10:13Z spitzak $"
+//
+// Event types and data. A Widget::handle() method needs this.
+//
+// Copyright 1998-2006 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 {
+
+/// \name fltk/events.h
+//@{
+
+/*! 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 "Apple" key */
+  RightMetaKey	= 0xffe8,	/*!< The right "Windows" or "Apple" key */
+  LeftAltKey	= 0xffe9,	/*!< Left-hand Alt (option on Mac) */
+  RightAltKey	= 0xffea,	/*!< Right-hand Alt (option on Mac) */
+  DeleteKey	= 0xffff,	/*!< Delete */
+#if  defined(__APPLE__)
+  LeftAccKey	= LeftCtrlKey,
+  RightAccKey	= RightCtrlKey,
+  LeftCmdKey	= LeftMetaKey,
+  RightCmdKey	= RightMetaKey
+#else
+  LeftAccKey	= LeftAltKey,
+  RightAccKey	= RightAltKey,
+  LeftCmdKey	= LeftCtrlKey,
+  RightCmdKey	= RightCtrlKey
+#endif
+};
+
+/*! 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) */
+#if defined(__APPLE__)
+  ACCELERATOR	= CTRL,
+  OPTION	= ALT,
+  COMMAND	= META
+#else
+  ACCELERATOR	= ALT, //!< ALT on Windows/Linux, CTRL on OS/X, use for menu accelerators
+  COMMAND	= CTRL,	//!< CTRL on Windows/Linux, META on OS/X, use for menu shortcuts
+  OPTION	= ALT|META //!< ALT|META on Windows/Linux, just ALT on OS/X, use as a drag modifier
+#endif
+};
+
+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;
+
+#ifndef DOXYGEN
+
+////////////////////////////////////////////////////////////////
+// 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 unsigned e_key_repeated;
+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_;
+
+////////////////////////////////////////////////////////////////
+#endif
+
+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 unsigned event_key_repeated()	{return e_key_repeated;}
+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:
+FL_API bool try_shortcut();
+FL_API const char* key_name(unsigned key);
+FL_API unsigned key(const char* name);
+
+class FL_API ShortcutFunctor {
+ public:
+  virtual bool handle(const Widget*, unsigned key) = 0;
+};
+FL_API unsigned foreachShortcut(const Widget*, ShortcutFunctor&);
+inline unsigned foreachShortcut(ShortcutFunctor& f) { return foreachShortcut(0,f); }
+
+// get current information, not info from last event:
+FL_API bool get_key_state(unsigned);
+FL_API void get_mouse(int &,int &);
+FL_API bool warp_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_;}
+
+// for debugging purpose : 
+const char  *event_name(int event); /// see STR #508
+
+//@}
+
+}
+
+#endif
+
+//
+// $Id: events.h 6514 2008-11-10 21:10:13Z spitzak $
+//

Added: branches/branch-3.0/fltk/file_chooser.h
===================================================================
--- branches/branch-3.0/fltk/file_chooser.h	                        (rev 0)
+++ branches/branch-3.0/fltk/file_chooser.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,47 @@
+// "$Id: file_chooser.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// Copyright 1998-2006 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 {
+
+/// \name fltk/file_chooser.h
+//@{
+
+FL_API void use_system_file_chooser(bool = true);
+
+FL_API const char *dir_chooser(const char *message,const char *fname,int relative=0);
+FL_API const char *file_chooser(const char *message,const char *pattern,
+				const char *filename, int relative = 0);
+FL_API void file_chooser_callback(void (*cb)(const char *));
+
+//@}
+
+}
+
+#endif
+
+//
+// End of "$Id: file_chooser.h 6233 2008-09-14 07:54:06Z spitzak $".
+//

Added: branches/branch-3.0/fltk/filename.h
===================================================================
--- branches/branch-3.0/fltk/filename.h	                        (rev 0)
+++ branches/branch-3.0/fltk/filename.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,131 @@
+// "$Id: filename.h 6483 2008-10-22 07:01:02Z spitzak $"
+
+/* Copyright 1998-2006 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.
+ * THESE FUNCTIONS MAY BE CHANGED OR DELETED IN FUTURE VERSIONS. DO
+ * NOT USE THEM, AS THEY ARE NOT AN OFFICIAL PART OF fltk!
+ */
+
+#ifndef fltk_filename_h
+#define fltk_filename_h
+
+#include "FL_API.h"
+
+////////////////////////////////////////////////////////////////
+#ifndef DOXYGEN
+// dirent (what a pain)...
+
+// FC: UNDER WIN32/VC6 long long is undefined, so use __int64 instead
+//  for cross platform type compatibility though in fact VC6 uses 
+//  a 32 bit long to calculate size in the stat struct so don't expect
+//  to handle >4GB files here...
+#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__MINGW32__) && (_MSC_VER==1200)
+typedef unsigned __int64 FL_FILESIZE_T;
+#else
+typedef unsigned long long FL_FILESIZE_T;
+#endif
+
+#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>
+# if defined(__GLIBC_PREREQ)
+#  if __GLIBC_PREREQ(2,3)
+#   define dirent dirent64
+#   define scandir scandir64
+#  endif
+# endif
+
+#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
+
+#ifndef PATH_MAX
+# ifdef _MAX_PATH
+#  define PATH_MAX _MAX_PATH
+# else
+#  define PATH_MAX 1024
+# endif
+#endif
+
+#endif
+////////////////////////////////////////////////////////////////
+
+namespace fltk {
+
+/// \name fltk/filename.h
+/// Some functions to manipulate filenames, to make portable programs.
+//@{
+
+FL_API int filename_absolute(char *to, int tolen, const char *from, const char* cwd=0);
+FL_API int filename_relative(char *to, int tolen, const char *from, const char* cwd=0);
+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_exist(const char*);
+FL_API bool filename_isdir(const char*);
+FL_API FL_FILESIZE_T filename_size(const char *); // return size of file
+FL_API long int filename_mtime(const char *); // return modification time
+
+typedef int (File_Sort_F)(const dirent*const*, const dirent*const*);
+FL_API int alphasort(const dirent*const*, const dirent*const*);
+FL_API int casealphasort(const dirent*const*, const dirent*const*);
+FL_API int casenumericsort(const dirent*const*, const dirent*const*);
+FL_API int numericsort(const dirent*const*, const dirent*const*);
+FL_API int filename_list(const char *d, dirent ***list, File_Sort_F *sort);
+FL_API int filename_list(const char *d, dirent ***list); // uses numericsort
+
+//@}
+
+}
+
+#endif
+
+// End of "$Id: filename.h 6483 2008-10-22 07:01:02Z spitzak $".

Added: branches/branch-3.0/fltk/fltk_cairo.h
===================================================================
--- branches/branch-3.0/fltk/fltk_cairo.h	                        (rev 0)
+++ branches/branch-3.0/fltk/fltk_cairo.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,48 @@
+// fltk_cairo.h
+//
+// Copyright 1998-2006 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".
+
+/** \file
+  "Portably" include cairo common definitions for fltk. If fltk is
+  compiled correctly, you can create a cairo "surface" from an fltk
+  Window and then make your own cairo context to draw into it.
+
+  FLTK may also be compiled to use cairo for \e all it's drawing, by
+  adding --enable_cairo when running ./configure. In this case this
+  has already been done when draw() is called, and the cairo context
+  is in fltk::cc.
+*/
+
+#ifndef fltk_cairo_h
+#define fltk_cairo_h
+
+#include <fltk/FL_API.h>
+#include <cairo.h>
+
+namespace fltk {
+  extern FL_API cairo_t * cr;
+  class Window;
+  FL_API cairo_surface_t * cairo_create_surface(Window* w);
+}
+
+#endif
+
+// End of fltk_cairo.h
+

Added: branches/branch-3.0/fltk/forms.h
===================================================================
--- branches/branch-3.0/fltk/forms.h	                        (rev 0)
+++ branches/branch-3.0/fltk/forms.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,854 @@
+//
+// "$Id: forms.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Forms emulation header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2006 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)->text(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)->text();}
+
+#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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/gl.h
===================================================================
--- branches/branch-3.0/fltk/gl.h	                        (rev 0)
+++ branches/branch-3.0/fltk/gl.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,114 @@
+// "$Id: gl.h 6233 2008-09-14 07:54:06Z spitzak $"
+// Copyright 1998-2006 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".
+
+/*! \file
+  Portably include the OpenGL header files, and define a few OpenGL
+  drawing functions provided by fltk. You may want to use the
+  OpenGL Extension Wrangler (glew), which will make it much easier
+  to call modern OpenGL extensions. If so, include glew.h before
+  this file, or define USE_GLEW to 1 before including this.
+*/
+
+#ifndef gl_draw_H
+#define gl_draw_H
+
+#ifndef DOXYGEN
+#include "Color.h"
+#include "Flags.h"
+
+#if USE_GLEW
+# include <GL/glew.h>
+#elif defined(__GLEW_H__)
+  /* do nothing if they included glew.h */
+#else
+
+# define GL_GLEXT_PROTOTYPES 1
+# ifdef _WIN32
+#  include <windows.h>
+#  undef OPAQUE
+#  undef DELETE
+#  undef ERROR
+#  undef IN
+#  undef OUT
+#  undef POINT
+#  undef far
+#  undef max
+#  undef min
+#  undef near
+#  include <GL/gl.h>
+# elif defined(__APPLE__)
+#  ifndef APIENTRY
+#   define APIENTRY
+#  endif
+#  include <OpenGL/gl.h>
+# else
+#  include <GL/gl.h>
+# endif
+
+# if !defined(GL_VERSION_1_4) || defined(DOXYGEN)
+FL_GL_API void glWindowPos2i(int x, int y);
+# endif
+
+#endif
+#endif
+
+namespace fltk {
+
+struct Font;
+
+/// \name fltk/gl.h
+//@{
+
+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 6233 2008-09-14 07:54:06Z spitzak $".
+//

Added: branches/branch-3.0/fltk/gl2opengl.h
===================================================================
--- branches/branch-3.0/fltk/gl2opengl.h	                        (rev 0)
+++ branches/branch-3.0/fltk/gl2opengl.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -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);}

Added: branches/branch-3.0/fltk/glut.h
===================================================================
--- branches/branch-3.0/fltk/glut.h	                        (rev 0)
+++ branches/branch-3.0/fltk/glut.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,490 @@
+//
+// "$Id: glut.h 6521 2008-11-12 20:49:58Z spitzak $"
+//
+// GLUT emulation header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2006 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 on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+// 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* -lfltk2.
+
+// Commented out lines indicate parts of GLUT that are not emulated.
+
+#ifndef __glut_h__
+#  define __glut_h__
+
+#  include "gl.h"
+
+////////////////////////////////////////////////////////////////
+// GLUT is emulated using this window class and these static variables
+// (plus several more static variables hidden in glut.C):
+
+#  include <fltk/run.h>
+#  include <fltk/events.h>
+#  include <fltk/GlWindow.h>
+#  include <fltk/Cursor.h>
+#  include <fltk/visual.h>
+
+namespace fltk {
+	
+	class FL_GLUT_API GlutWindow : 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);
+	  GlutWindow(int w, int h, const char *);
+	  GlutWindow(int x, int y, int w, int h, const char *);
+	  ~GlutWindow();
+	};
+}
+
+extern FL_GLUT_API fltk::GlutWindow *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);
+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 glutPostWindowRedisplay(int win);
+
+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);}
+// notice that the numeric values are different than glut:
+
+//#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};
+
+FL_GLUT_API void glutIdleFunc(void (*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
+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);}
+
+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);
+FL_GLUT_API int glutBitmapLength(void *font, const unsigned char* string);
+
+////////////////////////////////////////////////////////////////
+// GLUT drawing functions.  These are NOT emulated but you can
+// link in the glut library to get them.  This assumes the object
+// files in GLUT remain as they currently are so that there are
+// not symbol conflicts with the above.
+
+extern "C" {
+
+extern int APIENTRY glutExtensionSupported(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 6521 2008-11-12 20:49:58Z spitzak $".
+//

Added: branches/branch-3.0/fltk/layout.h
===================================================================
--- branches/branch-3.0/fltk/layout.h	                        (rev 0)
+++ branches/branch-3.0/fltk/layout.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,41 @@
+#ifndef fltk_layout_h
+#define fltk_layout_h
+
+namespace fltk {
+
+/*!
+  Values of the bits stored in Widget::layout_damage().
+
+  When a widget resized or moved (or when it is initially created),
+  flags are set in Widget::layout_damage() to indicate the layout is
+  damaged. This will cause the virtual function Widget::layout() to be
+  called just before fltk attempts to draw the windows on the screen.
+  This is useful because often calculating the new layout is quite
+  expensive, this expense is now deferred until the user will actually
+  see the new size.
+
+  Some Group widgets such as fltk::PackedGroup will also use the
+  virtual Widget::layout() function to find out how big a widget
+  should be.  A Widget is allowed to change it's own dimensions in
+  layout() (except it is not allowed to change it if called a second
+  time with no changes other than it's x/y position). This allows
+  widgets to resize to fit their contents.
+
+  The layout bits are turned on by calling Widget::relayout().
+*/
+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

Added: branches/branch-3.0/fltk/load_plugin.h
===================================================================
--- branches/branch-3.0/fltk/load_plugin.h	                        (rev 0)
+++ branches/branch-3.0/fltk/load_plugin.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,14 @@
+/*! \file
+  This is a convienence function for portable loading of a plugin
+  and possibly returing a symbol in that plugin. The function is
+  \e not in the fltk namespace!
+*/
+
+#ifndef fl_load_plugin_h
+#define fl_load_plugin_h
+
+#include "FL_API.h"
+
+FL_API void* load_plugin(const char* name, const char* symbol);
+
+#endif

Added: branches/branch-3.0/fltk/mac.r
===================================================================
--- branches/branch-3.0/fltk/mac.r	                        (rev 0)
+++ branches/branch-3.0/fltk/mac.r	2010-03-30 19:10:49 UTC (rev 7368)
@@ -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) {
+};
+

Added: branches/branch-3.0/fltk/math.h
===================================================================
--- branches/branch-3.0/fltk/math.h	                        (rev 0)
+++ branches/branch-3.0/fltk/math.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,92 @@
+//
+// "$Id: math.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// The purpose of this header file is to make math.h look the same as
+// Unix on other operating systems.
+//
+// Copyright 1998-2006 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 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0/fltk/osx.h
===================================================================
--- branches/branch-3.0/fltk/osx.h	                        (rev 0)
+++ branches/branch-3.0/fltk/osx.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,147 @@
+// "$Id: osx.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// Copyright 1998-2006 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".
+
+/** \file
+
+Declarations of FLTK symbols and interfaces that only exist if FLTK is
+compiled on Windows. It is recommended you avoid using this header
+file, and that you segregate code requiring it to it's own source
+file.
+
+FLTK is currently using the Carbon interface, and this includes
+the <Carbon/Carbon.h> header file. A macro is used to rename the
+Carbon "Style" as "XStyle" to avoid conflicts with FLTK. (all
+drawing is using Quartz, however!)
+
+Many of the functions have the same name and purpose as ones defined
+in x11.h, just with different return types. Due to how Doxygen works,
+the X version of these is described here.
+*/
+
+#ifndef fltk_osx_h
+#define fltk_osx_h
+
+# ifndef DOXYGEN
+// 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...
+# endif
+
+# include "draw.h"
+
+////////////////////////////////////////////////////////////////
+
+namespace fltk {
+
+/// \name fltk/osx.h
+//@{
+
+////////////////////////////////////////////////////////////////
+// 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     SystemMenuBar *system_menu_bar;
+
+////////////////////////////////////////////////////////////////
+// event handling:
+
+// we want some way to access last message from system
+
+// Register a function to call when user opens a file in finder:
+extern void open_callback(void (*cb)(const char* name));
+
+////////////////////////////////////////////////////////////////
+// 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 CursPtr default_cursor;
+extern CursPtr current_cursor;
+extern const Widget* cursor_for;
+
+# endif //Fl_Window_H
+
+//@}
+
+}
+
+# if USE_CAIRO
+#  include <fltk/fltk_cairo.h>
+#  include <cairo-quartz.h>
+# else
+   typedef struct _cairo cairo_t;
+# endif
+
+#endif
+
+// End of "$Id: osx.h 6233 2008-09-14 07:54:06Z spitzak $".

Added: branches/branch-3.0/fltk/pnmImage.h
===================================================================
--- branches/branch-3.0/fltk/pnmImage.h	                        (rev 0)
+++ branches/branch-3.0/fltk/pnmImage.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,45 @@
+// "$Id: pnmImage.h 4288 2005-04-16 00:13:17Z mike $"
+//
+// PNM image header file for the Fast Light Tool Kit (FLTK).
+//
+// 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 on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+#ifndef fltk_pnm_Image_h
+#define fltk_pnm_Image_h
+
+#include "SharedImage.h"
+
+namespace fltk {
+
+class FL_IMAGES_API pnmImage : public SharedImage {
+public:
+  pnmImage(const char* filename);
+  // virtual function overrides
+  bool fetch(); 
+};
+
+}
+
+#endif
+
+// End of "$Id: pnmImage.h 4288 2005-04-16 00:13:17Z mike $".

Added: branches/branch-3.0/fltk/rgbImage.h
===================================================================
--- branches/branch-3.0/fltk/rgbImage.h	                        (rev 0)
+++ branches/branch-3.0/fltk/rgbImage.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,50 @@
+//
+// "$Id: rgbImage.h 5568 2006-12-30 07:54:24Z spitzak $"
+//
+// Copyright 1998-2006 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 is an obsolete class from fltk2 development. All functionality
+// has been moved to the base Image class.
+
+#ifndef fltk_rgbImage_h
+#define fltk_rgbImage_h
+
+#include "Image.h"
+
+namespace fltk {
+
+class FL_API rgbImage : public Image {
+public:
+  //bool write_jpeg(const char *filename, int quality=75, int dpi=150);
+  rgbImage(const char* name=0) : Image(name) {}
+  rgbImage(const uchar* d, PixelType p, int W, int H) :
+    Image(d,p,W,H,fltk::depth(p)*W) {}
+  rgbImage(const uchar* d, PixelType p, int W, int H, int linedelta) :
+    Image(d,p,W,H,linedelta) {}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: rgbImage.h 5568 2006-12-30 07:54:24Z spitzak $".
+//

Added: branches/branch-3.0/fltk/run.h
===================================================================
--- branches/branch-3.0/fltk/run.h	                        (rev 0)
+++ branches/branch-3.0/fltk/run.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,93 @@
+// "$Id: run.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// The basic fltk runtime. Every program needs to call this somewhere.
+// Copyright 1998-2006 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 {
+
+/// \name fltk/run.h
+//@{
+
+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();
+
+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 double get_time_secs();
+
+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);
+
+FL_API void lock();
+FL_API void unlock();
+FL_API void awake(void* message = 0);
+FL_API void* thread_message();
+FL_API bool in_main_thread();
+
+//@}
+
+}
+
+#endif

Added: branches/branch-3.0/fltk/show_colormap.h
===================================================================
--- branches/branch-3.0/fltk/show_colormap.h	                        (rev 0)
+++ branches/branch-3.0/fltk/show_colormap.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,36 @@
+// "$Id: show_colormap.h 6233 2008-09-14 07:54:06Z spitzak $"
+// Copyright 1998-2006 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 {
+FL_API Color show_colormap(Color oldcol);
+}
+
+#endif
+
+//
+// End of "$Id: show_colormap.h 6233 2008-09-14 07:54:06Z spitzak $".
+//

Added: branches/branch-3.0/fltk/string.h
===================================================================
--- branches/branch-3.0/fltk/string.h	                        (rev 0)
+++ branches/branch-3.0/fltk/string.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,89 @@
+/* "$Id: string.h 5961 2007-10-17 20:54:58Z spitzak $"
+ *
+ * Copyright 1998-2006 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".
+ */
+
+/*! \file
+
+  Provides definitions for C string manipulation functions so that
+  portable programs may be written. None of these functions are in
+  the fltk namespace.
+
+  In most cases the functions are provided by your operation system,
+  or are simple renames of operating system functions.
+
+  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
+
+#ifndef DOXYGEN
+
+# include <string.h>
+# include <stdarg.h> /* for va_list */
+# include <stdio.h> /* for sprintf, vsprintf, snprintf and vsnprintf */
+
+/* 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
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#endif
+
+#include "FL_API.h"
+
+FL_API extern char* newstring(const char *);
+
+#if defined(DOXYGEN) || defined(__MWERKS__)
+FL_API extern int strcasecmp(const char *, const char *);
+FL_API extern int strncasecmp(const char *, const char *, size_t);
+#endif
+
+#if defined(DOXYGEN) || !defined(__linux) && !defined(_WIN32) && !defined(__FreeBSD__) && !defined(__APPLE__)
+FL_API extern int snprintf(char *, size_t, const char *, ...);
+FL_API extern int vsnprintf(char *, size_t, const char *, va_list ap);
+#endif
+
+#if defined(DOXYGEN) || !defined(__FreeBSD__) && !defined(__APPLE__)
+FL_API extern size_t strlcat(char *, const char *, size_t);
+FL_API extern size_t strlcpy(char *, const char *, size_t);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/*
+ * End of "$Id: string.h 5961 2007-10-17 20:54:58Z spitzak $".
+ */

Added: branches/branch-3.0/fltk/string.h.in
===================================================================
--- branches/branch-3.0/fltk/string.h.in	                        (rev 0)
+++ branches/branch-3.0/fltk/string.h.in	2010-03-30 19:10:49 UTC (rev 7368)
@@ -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 $".
+ */

Added: branches/branch-3.0/fltk/utf.h
===================================================================
--- branches/branch-3.0/fltk/utf.h	                        (rev 0)
+++ branches/branch-3.0/fltk/utf.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,54 @@
+/* "$Id: utf.h 5197 2006-06-14 07:43:46Z spitzak $"
+ *
+ * Copyright 1998-2006 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".
+ */
+/*! \file
+  Functions to manipulate UTF-8 strings and convert from/to legacy
+  encodings. These functions are \e not in the fltk namespace.
+*/
+
+#ifndef fltk_utf_h
+#define fltk_utf_h
+
+#include "FL_API.h"
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+FL_API int	utf8bytes(unsigned ucs);
+
+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

Added: branches/branch-3.0/fltk/visual.h
===================================================================
--- branches/branch-3.0/fltk/visual.h	                        (rev 0)
+++ branches/branch-3.0/fltk/visual.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,56 @@
+// "$Id: visual.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// Copyright 1998-2006 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 {
+
+/// \name fltk/visual.h
+//@{
+
+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

Added: branches/branch-3.0/fltk/win32.h
===================================================================
--- branches/branch-3.0/fltk/win32.h	                        (rev 0)
+++ branches/branch-3.0/fltk/win32.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,195 @@
+// "$Id: win32.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// Copyright 1998-2006 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".
+
+/** \file
+
+Declarations of FLTK symbols and interfaces that only exist if FLTK is
+compiled on Windows. It is recommended you avoid using this header
+file, and that you segregate code requiring it to it's own source
+file.
+
+This header includes the horrible <windows.h> header file, followed
+by a large list of undef's to get rid of name conflicts. It is recommended
+you use this if you need any windows functions rather than including
+that file directly.
+
+You can probably combine FLTK with other libraries that make their own
+WIN32 window classes.  The easiest way is to call fltk::wait(), it
+will call DispatchMessage() for all messages to the other windows. If
+your other library insists on reading all the events, it will still
+work (as long as it calls DispatchMessage()), but you will
+have to arrange for the function fltk::flush() to be called regularily
+so that widgets are updated. Timeouts, the idle function, and file
+descriptor callbacks will not work in this case.
+
+Many of the functions have the same name and purpose as ones defined
+in x11.h, just with different return types. Due to how Doxygen works,
+the X version of these is described here.
+*/
+
+#if defined(_MSC_VER)
+# pragma once /* speeds up compilation */
+#endif
+
+#ifndef fltk_win32_h
+#define fltk_win32_h
+
+#ifndef DOXYGEN
+
+#ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN
+#endif
+
+# include <windows.h>
+# include <winuser.h>
+# undef DELETE
+# undef ERROR
+# undef IN
+# undef OPAQUE
+# undef OUT
+# undef POINT
+//#undef far
+# undef max
+# undef min
+//#undef near
+
+#if USE_CAIRO
+# include <fltk/fltk_cairo.h>
+# include <cairo-win32.h>
+#endif
+
+extern "C" {
+
+// Function pointer declarations
+// WAS: I suspect these can be put into win32/run.cxx!
+
+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" */
+#endif // !DOXYGEN
+
+#include "draw.h"
+
+namespace fltk {
+
+/// \name fltk/win32.h
+//@{
+
+////////////////////////////////////////////////////////////////
+// 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 6233 2008-09-14 07:54:06Z spitzak $".
+//

Added: branches/branch-3.0/fltk/x.h
===================================================================
--- branches/branch-3.0/fltk/x.h	                        (rev 0)
+++ branches/branch-3.0/fltk/x.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,47 @@
+// "$Id: x.h 5586 2007-01-07 07:23:21Z spitzak $"
+//
+// Copyright 1998-2006 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".
+
+/** \file
+  "Portably" include either x11.h, win32.h, or osx.h header files,
+  depending on your system. Since the system-specific interfaces
+  resemble each other somewhat, use of this header and some macros
+  may allow you to merge system-specific code for different systems
+  together.
+*/
+
+#ifndef fltk_x_h
+# define fltk_x_h
+# if defined(_WIN32) && !USE_X11
+#  include "win32.h"
+# elif defined(__APPLE__) && !USE_X11
+#  include "osx.h"
+# else
+#  define USE_X11 1
+#  include "x11.h"
+# endif
+#endif
+
+#if USE_CAIRO
+# include "fltk_cairo.h"
+#endif 
+//
+// End of "$Id: x.h 5586 2007-01-07 07:23:21Z spitzak $".
+//

Added: branches/branch-3.0/fltk/x11.h
===================================================================
--- branches/branch-3.0/fltk/x11.h	                        (rev 0)
+++ branches/branch-3.0/fltk/x11.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,185 @@
+// "$Id: x.h 5140 2006-05-22 04:46:07Z spitzak $"
+//
+// Copyright 1998-2006 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".
+
+/** \file
+
+Declarations of FLTK symbols and interfaces that only exist if FLTK
+is compiled to use X11, as it is by default on Unix. It is recommended
+you avoid using this header file, and that you segregate code requiring
+it to it's own source file.
+
+This header includes the Xlib.h, Xutil.h, Xatom.h, XInput.h, and XI.h
+header files, with sufficent wrappers to avoid conflicts with FLTK.
+In particular a macro is used so that "Window" is replaced by "XWindow"
+in these headers. You should use this rather than including the X
+header files directly.
+
+*/
+
+#ifndef fltk_x11_h
+# define fltk_x11_h
+
+////////////////////////////////////////////////////////////////
+// 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 && !MAKEDEPEND
+#    include <X11/Xft/Xft.h>
+#   else
+     typedef struct _XftDraw XftDraw;
+     typedef struct _XftFont XftFont;
+#   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 // !DOXYGEN
+
+#include "draw.h"
+
+extern FL_API Region	XRectangleRegion(int x, int y, int w, int h);
+
+namespace fltk {
+
+/// \name fltk/x11.h
+//@{
+
+////////////////////////////////////////////////////////////////
+// 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 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);
+
+extern FL_API XFontStruct* xfont();
+extern FL_API XftFont*  xftfont();
+
+////////////////////////////////////////////////////////////////
+// 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
+
+//@}
+
+} // namespace fltk
+
+#   if USE_CAIRO
+#    include <fltk/fltk_cairo.h>
+#    include <cairo-xlib.h>
+#   else
+     typedef struct _cairo cairo_t;
+#   endif
+#endif

Added: branches/branch-3.0/fltk/xbmImage.h
===================================================================
--- branches/branch-3.0/fltk/xbmImage.h	                        (rev 0)
+++ branches/branch-3.0/fltk/xbmImage.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,50 @@
+//
+// "$Id: xbmImage.h 5581 2007-01-05 03:04:04Z 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(fltk::MASK,w,h), array(bits) {}
+  xbmImage(const char *bits, int w, int h) :
+    Image(fltk::MASK,w,h), array((const unsigned char *)bits) {}
+  bool fetch();
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: xbmImage.h 5581 2007-01-05 03:04:04Z spitzak $".
+//

Added: branches/branch-3.0/fltk/xpmImage.h
===================================================================
--- branches/branch-3.0/fltk/xpmImage.h	                        (rev 0)
+++ branches/branch-3.0/fltk/xpmImage.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,59 @@
+//
+// "$Id: xpmImage.h 5568 2006-12-30 07:54:24Z 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-2006 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 {
+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(name), data(d) {}
+  xpmImage(const unsigned char* const * d, const char* name = 0) :
+    Image(name), data((char**)d) {}
+  xpmImage(char ** d, const char* name = 0) :
+    Image(name), data(d) {}
+  bool fetch();
+
+  //! For xpmFileImage to reuse fetch() code.
+  static bool fetch(Image&, const char* const* data);
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: xpmImage.h 5568 2006-12-30 07:54:24Z spitzak $".
+//

Deleted: branches/branch-3.0/fltk3/Fl.H

Modified: branches/branch-3.0/fltk3/Fl_Box.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Box.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Box.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 #define Fl_Box_H
 
 #ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
 #endif
 
 /**

Modified: branches/branch-3.0/fltk3/Fl_Browser_.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Browser_.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Browser_.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,10 +34,10 @@
 #define Fl_Browser__H
 
 #ifndef Fl_Group_H
-#include "Fl_Group.H"
+#include "Group.h"
 #endif
 #include "Fl_Scrollbar.H"
-#include <fltk3/Fl.H>		// Fl::scrollbar_size()
+#include <fltk3/run.h>		// Fl::scrollbar_size()
 
 #define FL_NORMAL_BROWSER	0	/**< type() of Fl_Browser */
 #define FL_SELECT_BROWSER	1	/**< type() of FL_Select_Browser */

Modified: branches/branch-3.0/fltk3/Fl_Button.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Button.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Button.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 #define Fl_Button_H
 
 #ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
 #endif
 
 // values for type()

Modified: branches/branch-3.0/fltk3/Fl_Cairo_Window.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Cairo_Window.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Cairo_Window.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
 
 // Cairo is currently supported for the following platforms:
 // Win32, Apple Quartz, X11
-#  include <fltk3/Fl.H>
+#  include <fltk3/run.h>
 #  include <fltk3/Fl_Double_Window.H>
 
 /** 

Modified: branches/branch-3.0/fltk3/Fl_Chart.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Chart.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Chart.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 #define Fl_Chart_H
 
 #ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
 #endif
 
 // values for type()

Modified: branches/branch-3.0/fltk3/Fl_Check_Browser.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Check_Browser.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Check_Browser.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
 #ifndef Fl_Check_Browser_H
 #define Fl_Check_Browser_H
 
-#include "Fl.H"
+#include "run.h"
 #include "Fl_Browser_.H"
 
 /**

Modified: branches/branch-3.0/fltk3/Fl_Clock.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Clock.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Clock.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 #define Fl_Clock_H
 
 #ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
 #endif
 
 // values for type:

Modified: branches/branch-3.0/fltk3/Fl_Color_Chooser.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Color_Chooser.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Color_Chooser.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
 #ifndef Fl_Color_Chooser_H
 #define Fl_Color_Chooser_H
 
-#include <fltk3/Fl_Group.H>
+#include <fltk3/Group.h>
 #include <fltk3/Fl_Box.H>
 #include <fltk3/Fl_Return_Button.H>
 #include <fltk3/Fl_Choice.H>

Modified: branches/branch-3.0/fltk3/Fl_Double_Window.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Double_Window.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Double_Window.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
 #ifndef Fl_Double_Window_H
 #define Fl_Double_Window_H
 
-#include "Fl_Window.H"
+#include "Window.h"
 
 /**
   The Fl_Double_Window provides a double-buffered window.

Modified: branches/branch-3.0/fltk3/Fl_File_Chooser.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_File_Chooser.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_File_Chooser.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,12 +29,12 @@
 
 #ifndef Fl_File_Chooser_H
 #define Fl_File_Chooser_H
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Double_Window.H>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/Group.h>
 #include <fltk3/Fl_Choice.H>
 #include <fltk3/Fl_Menu_Button.H>
 #include <fltk3/Fl_Button.H>

Modified: branches/branch-3.0/fltk3/Fl_File_Icon.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_File_Icon.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_File_Icon.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
 #ifndef _Fl_Fl_File_Icon_H_
 #  define _Fl_Fl_File_Icon_H_
 
-#  include "Fl.H"
+#  include "run.h"
 
 
 //

Modified: branches/branch-3.0/fltk3/Fl_Free.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Free.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Free.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 #define Fl_Free_H
 
 #ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
 #endif
 
 #define FL_NORMAL_FREE		1 /**< normal event handling */

Modified: branches/branch-3.0/fltk3/Fl_Gl_Window.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Gl_Window.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Gl_Window.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
 #ifndef Fl_Gl_Window_H
 #define Fl_Gl_Window_H
 
-#include "Fl_Window.H"
+#include "Window.h"
 
 #ifndef GLContext
 /**

Deleted: branches/branch-3.0/fltk3/Fl_Group.H

Modified: branches/branch-3.0/fltk3/Fl_Help_Dialog.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Help_Dialog.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Help_Dialog.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,9 +32,9 @@
 
 #ifndef Fl_Help_Dialog_H
 #define Fl_Help_Dialog_H
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Double_Window.H>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/Group.h>
 #include <fltk3/Fl_Button.H>
 #include <fltk3/Fl_Input.H>
 #include <fltk3/Fl_Box.H>

Modified: branches/branch-3.0/fltk3/Fl_Help_View.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Help_View.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Help_View.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -37,8 +37,8 @@
 //
 
 #  include <stdio.h>
-#  include "Fl.H"
-#  include "Fl_Group.H"
+#  include "run.h"
+#  include "Group.h"
 #  include "Fl_Scrollbar.H"
 #  include "fl_draw.H"
 #  include "Fl_Shared_Image.H"

Modified: branches/branch-3.0/fltk3/Fl_Input_.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Input_.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Input_.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 #define Fl_Input__H
 
 #ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
 #endif
 
 #define FL_NORMAL_INPUT		0

Modified: branches/branch-3.0/fltk3/Fl_Input_Choice.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Input_Choice.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Input_Choice.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -38,8 +38,8 @@
 #ifndef Fl_Input_Choice_H
 #define Fl_Input_Choice_H
 
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/run.h>
+#include <fltk3/Group.h>
 #include <fltk3/Fl_Input.H>
 #include <fltk3/Fl_Menu_Button.H>
 #include <fltk3/fl_draw.H>

Modified: branches/branch-3.0/fltk3/Fl_Menu_.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Menu_.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Menu_.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 #define Fl_Menu__H
 
 #ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
 #endif
 #include "Fl_Menu_Item.H"
 

Modified: branches/branch-3.0/fltk3/Fl_Menu_Item.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Menu_Item.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Menu_Item.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
 #ifndef Fl_Menu_Item_H
 #define Fl_Menu_Item_H
 
-#  include "Fl_Widget.H"
+#  include "Widget.h"
 #  include "Fl_Image.H"
 
 #  if defined(__APPLE__) && defined(check)

Modified: branches/branch-3.0/fltk3/Fl_Object.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Object.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Object.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
 #ifndef Fl_Object
 #define Fl_Object fltk3::Widget
 #endif
-#include "Fl_Widget.H"
+#include "Widget.h"
 
 //
 // End of "$Id: Fl_Object.H 7365 2010-03-30 15:18:29Z matt $".

Modified: branches/branch-3.0/fltk3/Fl_Pack.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Pack.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Pack.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
 #ifndef Fl_Pack_H
 #define Fl_Pack_H
 
-#include <FL/Fl_Group.H>
+#include <fltk3/Group.h>
 
 /**
   This widget was designed to add the functionality of compressing and

Modified: branches/branch-3.0/fltk3/Fl_Positioner.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Positioner.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Positioner.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 #define Fl_Positioner_H
 
 #ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
 #endif
 
 /**

Modified: branches/branch-3.0/fltk3/Fl_Progress.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Progress.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Progress.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
 // Include necessary headers.
 //
 
-#include "Fl_Widget.H"
+#include "Widget.h"
 
 
 //

Modified: branches/branch-3.0/fltk3/Fl_Repeat_Button.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Repeat_Button.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Repeat_Button.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,7 +30,7 @@
 
 #ifndef Fl_Repeat_Button_H
 #define Fl_Repeat_Button_H
-#include "Fl.H"
+#include "run.h"
 #include "Fl_Button.H"
 
 /**

Modified: branches/branch-3.0/fltk3/Fl_Scroll.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Scroll.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Scroll.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
 #ifndef Fl_Scroll_H
 #define Fl_Scroll_H
 
-#include "Fl_Group.H"
+#include "Group.h"
 #include "Fl_Scrollbar.H"
 
 /**

Modified: branches/branch-3.0/fltk3/Fl_Single_Window.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Single_Window.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Single_Window.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
 #ifndef Fl_Single_Window_H
 #define Fl_Single_Window_H
 
-#include "Fl_Window.H"
+#include "Window.h"
 
 /**
   This is the same as fltk3::Window.  However, it is possible that

Modified: branches/branch-3.0/fltk3/Fl_Spinner.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Spinner.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Spinner.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -36,7 +36,7 @@
 //
 
 #  include <fltk3/Enumerations.H>
-#  include <fltk3/Fl_Group.H>
+#  include <fltk3/Group.h>
 #  include <fltk3/Fl_Input.H>
 #  include <fltk3/Fl_Repeat_Button.H>
 #  include <stdio.h>

Modified: branches/branch-3.0/fltk3/Fl_Table.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Table.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Table.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -39,8 +39,8 @@
 #include <stdlib.h>		// UNIX: malloc/realloc
 #endif /*WIN32*/
 
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/run.h>
+#include <fltk3/Group.h>
 #include <fltk3/Fl_Scroll.H>
 #include <fltk3/Fl_Box.H>
 #include <fltk3/Fl_Scrollbar.H>

Modified: branches/branch-3.0/fltk3/Fl_Tabs.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Tabs.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Tabs.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
 #ifndef Fl_Tabs_H
 #define Fl_Tabs_H
 
-#include "Fl_Group.H"
+#include "Group.h"
 
 /**
   The Fl_Tabs widget is the "file card tabs"

Modified: branches/branch-3.0/fltk3/Fl_Text_Display.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Text_Display.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Text_Display.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,8 +34,8 @@
 #define FL_TEXT_DISPLAY_H
 
 #include "fl_draw.H"
-#include "Fl_Group.H"
-#include "Fl_Widget.H"
+#include "Group.h"
+#include "Widget.h"
 #include "Fl_Scrollbar.H"
 #include "Fl_Text_Buffer.H"
 

Modified: branches/branch-3.0/fltk3/Fl_Tile.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Tile.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Tile.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
 #ifndef Fl_Tile_H
 #define Fl_Tile_H
 
-#include "Fl_Group.H"
+#include "Group.h"
 
 /**
   The Fl_Tile class lets you resize the children by dragging

Modified: branches/branch-3.0/fltk3/Fl_Timer.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Timer.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Timer.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 #define Fl_Timer_H
 
 #ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
 #endif
 
 // values for type():

Modified: branches/branch-3.0/fltk3/Fl_Tooltip.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Tooltip.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Tooltip.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,8 +31,8 @@
 #ifndef Fl_Tooltip_H
 #define Fl_Tooltip_H
 
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
 
 /**
   The Fl_Tooltip class provides tooltip support for

Modified: branches/branch-3.0/fltk3/Fl_Tree.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Tree.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Tree.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -5,8 +5,8 @@
 #ifndef FL_TREE_H
 #define FL_TREE_H
 
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/run.h>
+#include <fltk3/Group.h>
 #include <fltk3/Fl_Scrollbar.H>
 #include <fltk3/fl_draw.H>
 

Modified: branches/branch-3.0/fltk3/Fl_Tree_Item.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Tree_Item.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Tree_Item.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -5,8 +5,8 @@
 #ifndef FL_TREE_ITEM_H
 #define FL_TREE_ITEM_H
 
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
 #include <fltk3/Fl_Image.H>
 #include <fltk3/fl_draw.H>
 

Modified: branches/branch-3.0/fltk3/Fl_Valuator.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Valuator.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Valuator.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 #define Fl_Valuator_H
 
 #ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
 #endif
 
 // shared type() values for classes that work in both directions:

Deleted: branches/branch-3.0/fltk3/Fl_Widget.H

Deleted: branches/branch-3.0/fltk3/Fl_Window.H

Modified: branches/branch-3.0/fltk3/Fl_Wizard.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Wizard.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Wizard.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
 #ifndef _Fl_Wizard_H_
 #  define _Fl_Wizard_H_
 
-#  include <fltk3/Fl_Group.H>
+#  include <fltk3/Group.h>
 
 
 /**

Copied: branches/branch-3.0/fltk3/Group.h (from rev 7366, branches/branch-3.0/fltk3/Fl_Group.H)
===================================================================
--- branches/branch-3.0/fltk3/Group.h	                        (rev 0)
+++ branches/branch-3.0/fltk3/Group.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,234 @@
+//
+// "$Id: Group.h 7365 2010-03-30 15:18:29Z matt $"
+//
+// Group header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2009 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 on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+/* \file
+   fltk3::Group, Fl_End classes . */
+
+#ifndef Fl_Group_H
+#define Fl_Group_H
+
+#ifndef Fl_Widget_H
+#include "Widget.h"
+#endif
+
+/**
+  The fltk3::Group class is the FLTK container widget. It maintains
+  an array of child widgets. These children can themselves be any widget
+  including fltk3::Group. The most important subclass of fltk3::Group
+  is fltk3::Window, however groups can also be used to control radio buttons 
+  or to enforce resize behavior.
+*/
+class FL_EXPORT fltk3::Group : public fltk3::Widget {
+
+  fltk3::Widget** array_;
+  fltk3::Widget* savedfocus_;
+  fltk3::Widget* resizable_;
+  int children_;
+  int *sizes_; // remembered initial sizes of children
+
+  int navigation(int);
+  static fltk3::Group *current_;
+ 
+  // unimplemented copy ctor and assignment operator
+  Group(const fltk3::Group&);
+  fltk3::Group& operator=(const fltk3::Group&);
+
+protected:
+  void draw();
+  void draw_child(fltk3::Widget& widget) const;
+  void draw_children();
+  void draw_outside_label(const fltk3::Widget& widget) const ;
+  void update_child(fltk3::Widget& widget) const;
+  int  *sizes();
+
+public:
+
+  int handle(int);
+  void begin();
+  void end();
+  static fltk3::Group *current();
+  static void current(fltk3::Group *g);
+
+  /**
+    Returns how many child widgets the group has.
+  */
+  int children() const {return children_;}
+  /**
+    Returns array()[n].  <i>No range checking is done!</i>
+  */
+  fltk3::Widget* child(int n) const {return array()[n];}
+  int find(const fltk3::Widget*) const;
+  /**
+    See int fltk3::Group::find(const fltk3::Widget *w) const 
+  */
+  int find(const fltk3::Widget& o) const {return find(&o);}
+  fltk3::Widget* const* array() const;
+
+  void resize(int,int,int,int);
+  /**
+    Creates a new fltk3::Group widget using the given position, size,
+    and label string. The default boxtype is FL_NO_BOX.
+  */
+  Group(int,int,int,int, const char * = 0);
+  virtual ~Group();
+  void add(fltk3::Widget&);
+  /**
+    See void fltk3::Group::add(fltk3::Widget &w) 
+  */
+  void add(fltk3::Widget* o) {add(*o);}
+  void insert(fltk3::Widget&, int i);
+  /**
+    This does insert(w, find(before)).  This will append the
+    widget if \p before is not in the group.
+  */
+  void insert(fltk3::Widget& o, fltk3::Widget* before) {insert(o,find(before));}
+  void remove(fltk3::Widget&);
+  /**
+    Removes the widget \p o from the group.
+    \sa void remove(fltk3::Widget&)
+  */
+  void remove(fltk3::Widget* o) {remove(*o);}
+  void clear();
+
+  /**
+    See void fltk3::Group::resizable(fltk3::Widget *box) 
+  */
+  void resizable(fltk3::Widget& o) {resizable_ = &o;}
+  /**
+    The resizable widget defines the resizing box for the group. When the
+    group is resized it calculates a new size and position for all of its
+    children. Widgets that are horizontally or vertically inside the
+    dimensions of the box are scaled to the new size. Widgets outside the
+    box are moved.
+
+    In these examples the gray area is the resizable:
+
+    \image html resizebox1.gif
+    
+    \image html resizebox2.gif
+    
+    \image latex resizebox1.eps "before resize"  width=4cm
+    
+    \image latex resizebox2.eps "after resize"   width=4cm
+
+    The resizable may be set to the group itself, in which case all the
+    contents are resized. This is the default value for fltk3::Group,
+    although NULL is the default for fltk3::Window and Fl_Pack.
+
+    If the resizable is NULL then all widgets remain a fixed size
+    and distance from the top-left corner.
+
+    It is possible to achieve any type of resize behavior by using an
+    invisible Fl_Box as the resizable and/or by using a hierarchy
+    of child fltk3::Group's.
+  */
+  void resizable(fltk3::Widget* o) {resizable_ = o;}
+  /**
+    See void fltk3::Group::resizable(fltk3::Widget *box) 
+  */
+  fltk3::Widget* resizable() const {return resizable_;}
+  /**
+    Adds a widget to the group and makes it the resizable widget.
+  */
+  void add_resizable(fltk3::Widget& o) {resizable_ = &o; add(o);}
+  void init_sizes();
+
+  /**
+    Controls whether the group widget clips the drawing of
+    child widgets to its bounding box.
+    
+    Set \p c to 1 if you want to clip the child widgets to the
+    bounding box.
+
+    The default is to not clip (0) the drawing of child widgets.
+  */
+  void clip_children(int c) { if (c) set_flag(CLIP_CHILDREN); else clear_flag(CLIP_CHILDREN); }
+  /**
+    Returns the current clipping mode.
+
+    \return true, if clipping is enabled, false otherwise.
+
+    \see void fltk3::Group::clip_children(int c)
+  */
+  unsigned int clip_children() { return (flags() & CLIP_CHILDREN) != 0; }
+
+  /** Returns an fltk3::Group pointer if this widget is an fltk3::Group.
+  
+      \retval NULL if this widget is not derived from fltk3::Group.
+      \note This method is provided to avoid dynamic_cast.
+      \todo More documentation ...
+   */
+  virtual fltk3::Group* as_group() { return this; }
+
+  // back compatibility functions:
+
+  /**
+    \deprecated This is for backwards compatibility only. You should use
+    \e W->%take_focus() instead.
+    \sa fltk3::Widget::take_focus();
+  */
+  void focus(fltk3::Widget* W) {W->take_focus();}
+
+  /** This is for forms compatibility only */
+  fltk3::Widget* & _ddfdesign_kludge() {return resizable_;}
+
+  /** This is for forms compatibility only */
+  void forms_end();
+};
+
+// dummy class used to end child groups in constructors for complex
+// subclasses of fltk3::Group:
+/**
+  This is a dummy class that allows you to end a fltk3::Group in a constructor list of a
+  class:
+  \code 
+   class MyClass {
+   fltk3::Group group;
+   Fl_Button button_in_group;
+   Fl_End end;
+   Fl_Button button_outside_group;
+   MyClass();
+  };
+  MyClass::MyClass() :
+   group(10,10,100,100),
+   button_in_group(20,20,60,30),
+   end(),
+   button_outside_group(10,120,60,30)
+  {} 
+  \endcode
+*/
+class FL_EXPORT Fl_End {
+public:
+  /** All it does is calling fltk3::Group::current()->end() */
+  Fl_End() {fltk3::Group::current()->end();}
+};
+
+#endif
+
+//
+// End of "$Id: Group.h 7365 2010-03-30 15:18:29Z matt $".
+//

Copied: branches/branch-3.0/fltk3/Widget.h (from rev 7366, branches/branch-3.0/fltk3/Fl_Widget.H)
===================================================================
--- branches/branch-3.0/fltk3/Widget.h	                        (rev 0)
+++ branches/branch-3.0/fltk3/Widget.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,978 @@
+//
+// "$Id: Widget.h 7365 2010-03-30 15:18:29Z matt $"
+//
+// Widget header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2009 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 on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+/* \file
+   fltk3::Widget, Fl_Label classes . */
+
+#ifndef Fl_Widget_H
+#define Fl_Widget_H
+
+#include "Enumerations.H"
+
+namespace fltk3 {
+  class Window;
+  class Widget;
+  class Group;
+}
+
+class Fl_Image;
+
+/** Default callback type definition for all fltk widgets (by far the most used) */
+typedef void (Fl_Callback )(fltk3::Widget*, void*);
+/** Default callback type pointer definition for all fltk widgets */
+typedef Fl_Callback* Fl_Callback_p; // needed for BORLAND
+/** One parameter callback type definition passing only the widget */
+typedef void (Fl_Callback0)(fltk3::Widget*);
+/** Callback type definition passing the widget and a long data value */
+typedef void (Fl_Callback1)(fltk3::Widget*, long);
+
+/** This struct stores all information for a text or mixed graphics label.
+
+    \todo For FLTK 1.3, the Fl_Label type will become a widget by itself. That way
+          we will be avoiding a lot of code duplication by handling labels in 
+          a similar fashion to widgets containing text. We also provide an easy
+          interface for very complex labels, containing html or vector graphics.
+ */
+struct FL_EXPORT Fl_Label {
+  /** label text */
+  const char* value;
+  /** optional image for an active label */
+  Fl_Image* image;
+  /** optional image for a deactivated label */
+  Fl_Image* deimage;
+  /** label font used in text */
+  Fl_Font font;
+  /** size of label font */
+  Fl_Fontsize size;
+  /** text color */
+  Fl_Color color;
+  /** alignment of label */
+  Fl_Align align_;
+  /** type of label. \see Fl_Labeltype */
+  uchar type;
+
+  /** Draws the label aligned to the given box */
+  void draw(int,int,int,int, Fl_Align) const ;
+  void measure(int &w, int &h) const ;
+};
+
+
+/** fltk3::Widget is the base class for all widgets in FLTK.  
+  
+    You can't create one of these because the constructor is not public.
+    However you can subclass it.  
+
+    All "property" accessing methods, such as color(), parent(), or argument() 
+    are implemented as trivial inline functions and thus are as fast and small 
+    as accessing fields in a structure. Unless otherwise noted, the property 
+    setting methods such as color(n) or label(s) are also trivial inline 
+    functions, even if they change the widget's appearance. It is up to the 
+    user code to call redraw() after these.
+ */
+class FL_EXPORT fltk3::Widget {
+  friend class Group;
+
+  fltk3::Group* parent_;
+  Fl_Callback* callback_;
+  void* user_data_;
+  int x_,y_,w_,h_;
+  Fl_Label label_;
+  unsigned int flags_;
+  Fl_Color color_;
+  Fl_Color color2_;
+  uchar type_;
+  uchar damage_;
+  uchar box_;
+  uchar when_;
+
+  const char *tooltip_;
+
+  /** unimplemented copy ctor */
+  Widget(const fltk3::Widget &);
+  /** unimplemented assignment operator */
+  Widget& operator=(const fltk3::Widget &);
+
+protected:
+
+  /** Internal use only. Use position(int,int), size(int,int) or resize(int,int,int,int) instead. */
+  void x(int v) {x_ = v;}
+  /** Internal use only. Use position(int,int), size(int,int) or resize(int,int,int,int) instead. */
+  void y(int v) {y_ = v;}
+  /** Internal use only. Use position(int,int), size(int,int) or resize(int,int,int,int) instead. */
+  void w(int v) {w_ = v;}
+  /** Internal use only. Use position(int,int), size(int,int) or resize(int,int,int,int) instead. */
+  void h(int v) {h_ = v;}
+  /** Gets the widget flags mask */
+  unsigned int flags() const {return flags_;}
+  /** Sets a flag in the flags mask */
+  void set_flag(unsigned int c) {flags_ |= c;}
+  /** Clears a flag in the flags mask */
+  void clear_flag(unsigned int c) {flags_ &= ~c;}
+  /** flags possible values enumeration.
+      See activate(), output(), visible(), changed(), set_visible_focus()
+  */
+  enum {
+        INACTIVE        = 1<<0,   ///< the widget can't receive focus, and is disabled but potentially visible
+        INVISIBLE       = 1<<1,   ///< the widget is not drawn but can receive events
+        OUTPUT          = 1<<2,   ///< for output only
+        NOBORDER        = 1<<3,   ///< don't draw a decoration (fltk3::Window)
+        FORCE_POSITION  = 1<<4,   ///< don't let the window manager position the window (fltk3::Window)
+        NON_MODAL       = 1<<5,   ///< thisis a hovering toolbar window (fltk3::Window)
+        SHORTCUT_LABEL  = 1<<6,   ///< the label contains a shortcut we need to draw
+        CHANGED         = 1<<7,   ///< the widget value changed
+        OVERRIDE        = 1<<8,   ///< position window on top (fltk3::Window)
+        VISIBLE_FOCUS   = 1<<9,   ///< accepts keyboard focus navigation if the widget can have the focus
+        COPIED_LABEL    = 1<<10,  ///< the widget label is internally copied, its destruction is handled by the widget
+        CLIP_CHILDREN   = 1<<11,  ///< all drawing within this widget will be clipped (fltk3::Group)
+        MENU_WINDOW     = 1<<12,  ///< a temporary popup window, dismissed by clicking outside (fltk3::Window)
+        TOOLTIP_WINDOW  = 1<<13,  ///< a temporary popup, transparent to events, and dismissed easily (fltk3::Window)
+        MODAL           = 1<<14,  ///< a window blocking input to all other winows (fltk3::Window)
+        NO_OVERLAY      = 1<<15,  ///< window not using a hardware overlay plane (Fl_Menu_Window)
+        GROUP_RELATIVE  = 1<<16,  ///< position this idget relative to the parent group, not to the window
+        // (space for more flags)
+        USERFLAG3       = 1<<29,  ///< reserved for 3rd party extensions
+        USERFLAG2       = 1<<30,  ///< reserved for 3rd party extensions
+        USERFLAG1       = 1<<31   ///< reserved for 3rd party extensions
+  };
+  void draw_box() const;
+  void draw_box(Fl_Boxtype t, Fl_Color c) const;
+  void draw_box(Fl_Boxtype t, int x,int y,int w,int h, Fl_Color c) const;
+  /** draws a focus rectangle around the widget */
+  void draw_focus() {draw_focus(box(),x(),y(),w(),h());}
+  void draw_focus(Fl_Boxtype t, int x,int y,int w,int h) const;
+  void draw_label() const;
+  void draw_label(int, int, int, int) const;
+
+public:
+
+  /** Creates a widget at the given position and size.
+   
+   The fltk3::Widget is a protected constructor, but all derived widgets have a 
+   matching public constructor. It takes a value for x(), y(), w(), h(), and 
+   an optional value for label().
+   
+   \param[in] x, y the position of the widget relative to the enclosing window
+   \param[in] w, h size of the widget in pixels
+   \param[in] label optional text for the widget label
+   */
+  Widget(int x, int y, int w, int h, const char *label=0L);
+
+  /** Destroys the widget.
+      Destroying single widgets is not very common. You almost always want to 
+      destroy the parent group instead, which will destroy all of the child widgets 
+      and groups in that group.
+      
+      \since FLTK 1.3, the widget's destructor removes the widget from its parent
+      group, if it is member of a group.
+   */
+  virtual ~Widget();
+
+  /** Draws the widget.
+      Never call this function directly. FLTK will schedule redrawing whenever
+      needed. If your widget must be redrawn as soon as possible, call redraw()
+      instead.
+
+      Override this function to draw your own widgets.
+
+      If you ever need to call another widget's draw method <I>from within your
+      own draw() method</I>, e.g. for an embedded scrollbar, you can do it
+      (because draw() is virtual) like this:
+
+      \code
+        fltk3::Widget *s = &scroll;		// scroll is an embedded Fl_Scrollbar
+	s->draw();			// calls Fl_Scrollbar::draw()
+      \endcode
+   */
+  virtual void draw() {
+    draw_box();
+    draw_label();
+  }
+
+  /** Handles the specified event. 
+      You normally don't call this method directly, but instead let FLTK do 
+      it when the user interacts with the widget.
+     
+      When implemented in a widget, this function must return 0 if the 
+      widget does not use the event or 1 otherwise.
+
+      Most of the time, you want to call the inherited handle() method in 
+      your overridden method so that you don't short-circuit events that you 
+      don't handle. In this last case you should return the callee retval.
+    
+      \param[in] event the kind of event received
+      \retval 0 if the event was not used or understood
+      \retval 1 if the event was used and can be deleted
+      \see Fl_Event
+   */
+  virtual int handle(int event);
+
+  /** Returns a pointer to the parent widget.  
+      Usually this is a fltk3::Group or fltk3::Window. 
+      \retval NULL if the widget has no parent
+      \see fltk3::Group::add(fltk3::Widget*)
+   */
+  fltk3::Group* parent() const {return parent_;}
+
+  /** Internal use only - "for hacks only".
+  
+      It is \em \b STRONGLY recommended not to use this method, because it
+      short-circuits fltk3::Group's normal widget adding and removing methods,
+      if the widget is already a child widget of another fltk3::Group.
+
+      Use fltk3::Group::add(fltk3::Widget*) and/or fltk3::Group::remove(fltk3::Widget*) instead.
+  */
+  void parent(fltk3::Group* p) {parent_ = p;} // for hacks only, use fltk3::Group::add()
+
+  /** Gets the widget type.
+      Returns the widget type value, which is used for Forms compatibility
+      and to simulate RTTI.
+      
+      \todo Explain "simulate RTTI" (currently only used to decide if a widget
+      is a window, i.e. type()>=FL_WINDOW ?). Is type() really used in a way
+      that ensures "Forms compatibility" ?
+   */
+  uchar type() const {return type_;}
+
+  /** Sets the widget type.
+      This is used for Forms compatibility.
+   */
+  void type(uchar t) {type_ = t;}
+
+  /** Gets the widget position in its window.
+      \return the x position relative to the window
+   */
+  int x() const {return x_;}
+
+  /** Gets the widget position in its window.
+      \return the y position relative to the window
+   */
+  int y() const {return y_;}
+
+  /** Gets the widget width.
+      \return the width of the widget in pixels.
+   */
+  int w() const {return w_;}
+
+  /** Gets the widget height.
+      \return the height of the widget in pixels.
+   */
+  int h() const {return h_;}
+
+  /** Changes the size or position of the widget.
+
+      This is a virtual function so that the widget may implement its 
+      own handling of resizing. The default version does \e not
+      call the redraw() method, but instead relies on the parent widget 
+      to do so because the parent may know a faster way to update the 
+      display, such as scrolling from the old position.  
+
+      Some window managers under X11 call resize() a lot more often 
+      than needed. Please verify that the position or size of a widget 
+      did actually change before doing any extensive calculations.
+
+      position(X, Y) is a shortcut for resize(X, Y, w(), h()), 
+      and size(W, H) is a shortcut for resize(x(), y(), W, H).
+    
+      \param[in] x, y new position relative to the parent window 
+      \param[in] w, h new size
+      \see position(int,int), size(int,int)
+   */
+  virtual void resize(int x, int y, int w, int h);
+
+  /** Internal use only. */
+  int damage_resize(int,int,int,int);
+
+  /** Repositions the window or widget.
+
+      position(X, Y) is a shortcut for resize(X, Y, w(), h()).
+    
+      \param[in] X, Y new position relative to the parent window 
+      \see resize(int,int,int,int), size(int,int)
+   */
+  void position(int X,int Y) {resize(X,Y,w_,h_);}
+
+  /** Changes the size of the widget.
+
+      size(W, H) is a shortcut for resize(x(), y(), W, H).
+    
+      \param[in] W, H new size
+      \see position(int,int), resize(int,int,int,int)
+   */
+  void size(int W,int H) {resize(x_,y_,W,H);}
+
+  /** Gets the label alignment.
+
+      \return label alignment
+      \see label(), align(Fl_Align), Fl_Align
+      \todo This function should not take uchar as an argument. 
+            Apart from the fact that uchar is too short with only 8 bits, 
+	    it does not provide type safety (in which case we don't need 
+	    to declare Fl_Align an enum to begin with).
+	    *NOTE* The current (FLTK 1.3) implementation (Dec 2008) is such that
+	    Fl_Align is (typedef'd to be) "unsigned" (int), but fltk3::Widget's
+	    "align_" member variable is a bit field of 8 bits only !
+   */
+  Fl_Align align() const {return label_.align_;}
+
+  /** Sets the label alignment.
+      This controls how the label is displayed next to or inside the widget. 
+      The default value is FL_ALIGN_CENTER, which centers the label inside 
+      the widget.
+      \param[in] alignment new label alignment
+      \see align(), Fl_Align
+   */
+  void align(Fl_Align alignment) {label_.align_ = alignment;}
+
+  /** Gets the box type of the widget.
+      \return the current box type
+      \see box(Fl_Boxtype), Fl_Boxtype
+   */
+  Fl_Boxtype box() const {return (Fl_Boxtype)box_;}
+  
+  /** Sets the box type for the widget. 
+      This identifies a routine that draws the background of the widget.
+      See Fl_Boxtype for the available types. The default depends on the 
+      widget, but is usually FL_NO_BOX or FL_UP_BOX.
+      \param[in] new_box the new box type
+      \see box(), Fl_Boxtype
+   */
+  void box(Fl_Boxtype new_box) {box_ = new_box;}
+
+  /** Gets the background color of the widget.
+      \return current background color
+      \see color(Fl_Color), color(Fl_Color, Fl_Color)
+   */
+  Fl_Color color() const {return color_;}
+
+  /** Sets the background color of the widget. 
+      The color is passed to the box routine. The color is either an index into 
+      an internal table of RGB colors or an RGB color value generated using 
+      fl_rgb_color().
+      
+      The default for most widgets is FL_BACKGROUND_COLOR. Use fltk3::set_color()
+      to redefine colors in the color map.
+      \param[in] bg background color
+      \see color(), color(Fl_Color, Fl_Color), selection_color(Fl_Color)
+   */
+  void color(Fl_Color bg) {color_ = bg;}
+
+  /** Gets the selection color.
+      \return the current selection color
+      \see selection_color(Fl_Color), color(Fl_Color, Fl_Color)
+   */
+  Fl_Color selection_color() const {return color2_;}
+
+  /** Sets the selection color.
+      The selection color is defined for Forms compatibility and is usually 
+      used to color the widget when it is selected, although some widgets 
+      use this color for other purposes. You can set both colors at once 
+      with color(Fl_Color bg, Fl_Color sel).
+      \param[in] a the new selection color
+      \see selection_color(), color(Fl_Color, Fl_Color)
+   */
+  void selection_color(Fl_Color a) {color2_ = a;}
+
+  /** Sets the background and selection color of the widget. 
+
+      The two color form sets both the background and selection colors. 
+      \param[in] bg background color
+      \param[in] sel selection color
+      \see color(unsigned), selection_color(unsigned)
+   */
+  void color(Fl_Color bg, Fl_Color sel) {color_=bg; color2_=sel;}
+
+  /** Gets the current label text.
+      \return a pointer to the current label text
+      \see label(const char *), copy_label(const char *)
+   */
+  const char* label() const {return label_.value;}
+
+  /** Sets the current label pointer.
+
+      The label is shown somewhere on or next to the widget. The passed pointer 
+      is stored unchanged in the widget (the string is \em not copied), so if 
+      you need to set the label to a formatted value, make sure the buffer is 
+      static, global, or allocated. The copy_label() method can be used 
+      to make a copy of the label string automatically.
+      \param[in] text pointer to new label text
+      \see copy_label()
+   */
+  void label(const char* text);
+
+  /** Sets the current label. 
+      Unlike label(), this method allocates a copy of the label 
+      string instead of using the original string pointer.
+
+      The internal copy will automatically be freed whenever you assign
+      a new label or when the widget is destroyed.
+
+      \param[in] new_label the new label text
+      \see label()
+   */
+  void copy_label(const char *new_label);
+
+  /** Shortcut to set the label text and type in one call.
+      \see label(const char *), labeltype(Fl_Labeltype)
+   */
+  void label(Fl_Labeltype a, const char* b) {label_.type = a; label_.value = b;}
+
+  /** Gets the label type.
+      \return the current label type.
+      \see Fl_Labeltype
+   */
+  Fl_Labeltype labeltype() const {return (Fl_Labeltype)label_.type;}
+
+  /** Sets the label type. 
+      The label type identifies the function that draws the label of the widget. 
+      This is generally used for special effects such as embossing or for using 
+      the label() pointer as another form of data such as an icon. The value 
+      FL_NORMAL_LABEL prints the label as plain text.
+      \param[in] a new label type
+      \see Fl_Labeltype
+   */
+  void labeltype(Fl_Labeltype a) {label_.type = a;}
+
+  /** Gets the label color. 
+      The default color is FL_FOREGROUND_COLOR. 
+      \return the current label color
+   */
+  Fl_Color labelcolor() const {return label_.color;}
+
+  /** Sets the label color. 
+      The default color is FL_FOREGROUND_COLOR. 
+      \param[in] c the new label color
+   */
+  void labelcolor(Fl_Color c) {label_.color=c;}
+
+  /** Gets the font to use. 
+      Fonts are identified by indexes into a table. The default value
+      uses a Helvetica typeface (Arial for Microsoft&reg; Windows&reg;).
+      The function fltk3::set_font() can define new typefaces.
+      \return current font used by the label
+      \see Fl_Font
+   */
+  Fl_Font labelfont() const {return label_.font;}
+
+  /** Sets the font to use. 
+      Fonts are identified by indexes into a table. The default value
+      uses a Helvetica typeface (Arial for Microsoft&reg; Windows&reg;).
+      The function fltk3::set_font() can define new typefaces.
+      \param[in] f the new font for the label
+      \see Fl_Font
+   */
+  void labelfont(Fl_Font f) {label_.font=f;}
+
+  /** Gets the font size in pixels. 
+      The default size is 14 pixels.
+      \return the current font size
+   */
+  Fl_Fontsize labelsize() const {return label_.size;}
+
+  /** Sets the font size in pixels.
+      \param[in] pix the new font size
+      \see Fl_Fontsize labelsize()
+   */
+  void labelsize(Fl_Fontsize pix) {label_.size=pix;}
+
+  /** Gets the image that is used as part of the widget label.
+      This image is used when drawing the widget in the active state.
+      \return the current image
+   */
+  Fl_Image* image() {return label_.image;}
+
+  /** Sets the image to use as part of the widget label.
+      This image is used when drawing the widget in the active state.
+      \param[in] img the new image for the label 
+   */
+  void image(Fl_Image* img) {label_.image=img;}
+
+  /** Sets the image to use as part of the widget label.
+      This image is used when drawing the widget in the active state.
+      \param[in] img the new image for the label 
+   */
+  void image(Fl_Image& img) {label_.image=&img;}
+
+  /** Gets the image that is used as part of the widget label.  
+      This image is used when drawing the widget in the inactive state.
+      \return the current image for the deactivated widget
+   */
+  Fl_Image* deimage() {return label_.deimage;}
+
+  /** Sets the image to use as part of the widget label.  
+      This image is used when drawing the widget in the inactive state.
+      \param[in] img the new image for the deactivated widget
+   */
+  void deimage(Fl_Image* img) {label_.deimage=img;}
+
+  /** Sets the image to use as part of the widget label.  
+      This image is used when drawing the widget in the inactive state.
+      \param[in] img the new image for the deactivated widget
+   */
+  void deimage(Fl_Image& img) {label_.deimage=&img;}
+
+  /** Gets the current tooltip text.
+      \return a pointer to the tooltip text or NULL
+   */
+  const char *tooltip() const {return tooltip_;}
+
+  /** Sets the current tooltip text. 
+      Sets a string of text to display in a popup tooltip window when the user 
+      hovers the mouse over the widget. The string is <I>not</I> copied, so 
+      make sure any formatted string is stored in a static, global, 
+      or allocated buffer.
+
+      If no tooltip is set, the tooltip of the parent is inherited. Setting a 
+      tooltip for a group and setting no tooltip for a child will show the 
+      group's tooltip instead. To avoid this behavior, you can set the child's 
+      tooltip to an empty string ("").
+      \param[in] t new tooltip
+   */
+  void tooltip(const char *t);
+
+  /** Gets the current callback function for the widget.
+      Each widget has a single callback.
+      \return current callback
+   */
+  Fl_Callback_p callback() const {return callback_;}
+
+  /** Sets the current callback function for the widget.
+      Each widget has a single callback.
+      \param[in] cb new callback
+      \param[in] p user data
+   */
+  void callback(Fl_Callback* cb, void* p) {callback_=cb; user_data_=p;}
+
+  /** Sets the current callback function for the widget.
+      Each widget has a single callback.
+      \param[in] cb new callback
+   */
+  void callback(Fl_Callback* cb) {callback_=cb;}
+
+  /** Sets the current callback function for the widget.
+      Each widget has a single callback.
+      \param[in] cb new callback
+   */
+  void callback(Fl_Callback0*cb) {callback_=(Fl_Callback*)cb;}
+
+  /** Sets the current callback function for the widget.
+      Each widget has a single callback.
+      \param[in] cb new callback
+      \param[in] p user data
+   */
+  void callback(Fl_Callback1*cb, long p=0) {callback_=(Fl_Callback*)cb; user_data_=(void*)p;}
+
+  /** Gets the user data for this widget.
+      Gets the current user data (void *) argument that is passed to the callback function.
+      \return user data as a pointer
+   */
+  void* user_data() const {return user_data_;}
+
+  /** Sets the user data for this widget.
+      Sets the new user data (void *) argument that is passed to the callback function.
+      \param[in] v new user data
+   */
+  void user_data(void* v) {user_data_ = v;}
+
+  /** Gets the current user data (long) argument that is passed to the callback function.
+   */
+  long argument() const {return (long)user_data_;}
+
+  /** Sets the current user data (long) argument that is passed to the callback function.
+      \todo The user data value must be implemented using a \em union to avoid 
+      64 bit machine incompatibilities.
+   */
+  void argument(long v) {user_data_ = (void*)v;}
+
+  /** Returns the conditions under which the callback is called.
+
+      You can set the flags with when(uchar), the default value is
+      FL_WHEN_RELEASE.
+
+      \return set of flags
+      \see when(uchar)
+   */
+  Fl_When when() const {return (Fl_When)when_;}
+
+  /** Sets the flags used to decide when a callback is called.
+
+     This controls when callbacks are done. The following values are useful,
+     the default value is FL_WHEN_RELEASE:
+     
+     \li 0: The callback is not done, but changed() is turned on.
+     \li FL_WHEN_CHANGED: The callback is done each time the text is
+         changed by the user.
+     \li FL_WHEN_RELEASE: The callback will be done when this widget loses 
+         the focus, including when the window is unmapped. This is a useful 
+	 value for text fields in a panel where doing the callback on every
+  	 change is wasteful. However the callback will also happen if the 
+	 mouse is moved out of the window, which means it should not do 
+	 anything visible (like pop up an error message).
+	 You might do better setting this to zero, and scanning all the
+	 items for changed() when the OK button on a panel is pressed.
+     \li FL_WHEN_ENTER_KEY: If the user types the Enter key, the entire 
+         text is selected, and the callback is done if the text has changed. 
+	 Normally the Enter key will navigate to the next field (or insert 
+	 a newline for a Fl_Multiline_Input) - this changes the behavior.
+     \li FL_WHEN_ENTER_KEY|FL_WHEN_NOT_CHANGED: The Enter key will do the
+         callback even if the text has not changed. Useful for command fields.
+      fltk3::Widget::when() is a set of bitflags used by subclasses of 
+      fltk3::Widget to decide when to do the callback.
+
+      If the value is zero then the callback is never done. Other values 
+      are described  in the individual widgets. This field is in the base 
+      class so that you can scan a panel and do_callback() on all the ones
+      that don't do their own callbacks in response to an "OK" button.
+      \param[in] i set of flags
+   */
+  void when(uchar i) {when_ = i;}
+
+  /** Returns whether a widget is visible.
+      \retval 0 if the widget is not drawn and hence invisible.
+      \see show(), hide(), visible_r()
+   */
+  unsigned int visible() const {return !(flags_&INVISIBLE);}
+
+  /** Returns whether a widget and all its parents are visible.
+      \retval 0 if the widget or any of its parents are invisible.
+      \see show(), hide(), visible()
+   */
+  int visible_r() const;
+
+  /** Makes a widget visible.
+      An invisible widget never gets redrawn and does not get events.  
+      The visible() method returns true if the widget is set to be  
+      visible. The visible_r() method returns true if the widget and 
+      all of its parents are visible. A widget is only visible if 
+      visible() is true on it <I>and all of its parents</I>. 
+
+      Changing it will send FL_SHOW or FL_HIDE events to 
+      the widget. <I>Do not change it if the parent is not visible, as this 
+      will send false FL_SHOW or FL_HIDE events to the widget</I>.
+      redraw() is called if necessary on this or the parent.
+
+      \see hide(), visible(), visible_r()
+   */
+  virtual void show();
+  
+  /** Makes a widget invisible.
+      \see show(), visible(), visible_r()
+   */
+  virtual void hide();
+
+  /** Makes the widget visible. 
+      You must still redraw the parent widget to see a change in the 
+      window. Normally you want to use the show() method instead.
+   */
+  void set_visible() {flags_ &= ~INVISIBLE;}
+
+  /** Hides the widget. 
+      You must still redraw the parent to see a change in the window. 
+      Normally you want to use the hide() method instead.
+   */
+  void clear_visible() {flags_ |= INVISIBLE;}
+
+  /** Returns whether the widget is active.
+      \retval 0 if the widget is inactive
+      \see active_r(), activate(), deactivate()
+   */
+  unsigned int active() const {return !(flags_&INACTIVE);}
+
+  /** Returns whether the widget and all of its parents are active. 
+      \retval 0 if this or any of the parent widgets are inactive
+      \see active(), activate(), deactivate()
+   */
+  int active_r() const;
+
+  /** Activates the widget.
+      Changing this value will send FL_ACTIVATE to the widget if 
+      active_r() is true.
+      \see active(), active_r(), deactivate()
+   */
+  void activate();
+
+  /** Deactivates the widget.
+      Inactive widgets will be drawn "grayed out", e.g. with less contrast 
+      than the active widget. Inactive widgets will not receive any keyboard 
+      or mouse button events. Other events (including FL_ENTER, FL_MOVE, 
+      FL_LEAVE, FL_SHORTCUT, and others) will still be sent. A widget is 
+      only active if active() is true on it <I>and all of its parents</I>.  
+
+      Changing this value will send FL_DEACTIVATE to the widget if 
+      active_r() is true.
+    
+      Currently you cannot deactivate fltk3::Window widgets.
+
+      \see activate(), active(), active_r()
+   */
+  void deactivate();
+
+  /** Returns if a widget is used for output only.
+      output() means the same as !active() except it does not change how the 
+      widget is drawn. The widget will not receive any events. This is useful 
+      for making scrollbars or buttons that work as displays rather than input 
+      devices.
+      \retval 0 if the widget is used for input and output
+      \see set_output(), clear_output() 
+   */
+  unsigned int output() const {return (flags_&OUTPUT);}
+
+  /** Sets a widget to output only.
+      \see output(), clear_output() 
+   */
+  void set_output() {flags_ |= OUTPUT;}
+
+  /** Sets a widget to accept input.
+      \see set_output(), output() 
+   */
+  void clear_output() {flags_ &= ~OUTPUT;}
+
+  /** Returns if the widget is able to take events.
+      This is the same as (active() && !output()
+      && visible()) but is faster.
+      \retval 0 if the widget takes no events
+   */ 
+  unsigned int takesevents() const {return !(flags_&(INACTIVE|INVISIBLE|OUTPUT));}
+
+  /** 
+      Checks if the widget value changed since the last callback.
+
+      "Changed" is a flag that is turned on when the user changes the value 
+      stored in the widget. This is only used by subclasses of fltk3::Widget that 
+      store values, but is in the base class so it is easier to scan all the 
+      widgets in a panel and do_callback() on the changed ones in response 
+      to an "OK" button.
+
+      Most widgets turn this flag off when they do the callback, and when 
+      the program sets the stored value.
+
+     \retval 0 if the value did not change
+     \see set_changed(), clear_changed()
+   */
+  unsigned int changed() const {return flags_&CHANGED;}
+
+  /** Marks the value of the widget as changed.
+      \see changed(), clear_changed()
+   */
+  void set_changed() {flags_ |= CHANGED;}
+
+  /** Marks the value of the widget as unchanged.
+      \see changed(), set_changed()
+   */
+  void clear_changed() {flags_ &= ~CHANGED;}
+
+  /** Gives the widget the keyboard focus.
+      Tries to make this widget be the fltk3::focus() widget, by first sending 
+      it an FL_FOCUS event, and if it returns non-zero, setting 
+      fltk3::focus() to this widget. You should use this method to 
+      assign the focus to a widget.  
+      \return true if the widget accepted the focus.
+   */
+  int take_focus();
+
+  /** Enables keyboard focus navigation with this widget. 
+      Note, however, that this will not necessarily mean that the widget
+      will accept focus, but for widgets that can accept focus, this method
+      enables it if it has been disabled.
+      \see visible_focus(), clear_visible_focus(), visible_focus(int) 
+   */
+  void set_visible_focus() { flags_ |= VISIBLE_FOCUS; }
+
+  /** Disables keyboard focus navigation with this widget. 
+      Normally, all widgets participate in keyboard focus navigation.
+      \see set_visible_focus(), visible_focus(), visible_focus(int) 
+   */
+  void clear_visible_focus() { flags_ &= ~VISIBLE_FOCUS; }
+
+  /** Modifies keyboard focus navigation. 
+      \param[in] v set or clear visible focus
+      \see set_visible_focus(), clear_visible_focus(), visible_focus() 
+   */
+  void visible_focus(int v) { if (v) set_visible_focus(); else clear_visible_focus(); }
+
+  /** Checks whether this widget has a visible focus.
+      \retval 0 if this widget has no visible focus.
+      \see visible_focus(int), set_visible_focus(), clear_visible_focus()
+   */
+  unsigned int  visible_focus() { return flags_ & VISIBLE_FOCUS; }
+
+  /** Sets the default callback for all widgets.
+      Sets the default callback, which puts a pointer to the widget on the queue 
+      returned by fltk3::readqueue(). You may want to call this from your own callback.
+      \param[in] cb the new callback
+      \param[in] d user data associated with that callback
+      \see callback(), do_callback(), fltk3::readqueue()
+   */
+  static void default_callback(fltk3::Widget *cb, void *d);
+
+  /** Calls the widget callback.
+      Causes a widget to invoke its callback function with default arguments.
+      \see callback()
+   */
+  void do_callback() {do_callback(this,user_data_);}
+
+  /** Calls the widget callback.
+      Causes a widget to invoke its callback function with arbitrary arguments.
+      \param[in] o call the callback with \p o as the widget argument
+      \param[in] arg call the callback with \p arg as the user data argument
+      \see callback()
+   */
+  void do_callback(fltk3::Widget* o,long arg) {do_callback(o,(void*)arg);}
+
+  // Causes a widget to invoke its callback function with arbitrary arguments.
+  // Documentation and implementation in fltk3::Widget.cxx
+  void do_callback(fltk3::Widget* o,void* arg=0);
+
+  /** Internal use only. */
+  int test_shortcut();
+  /** Internal use only. */
+  static unsigned int label_shortcut(const char *t);
+  /** Internal use only. */
+  static int test_shortcut(const char*);
+
+  /** Checks if w is a child of this widget.
+      \param[in] w potential child widget
+      \return Returns 1 if \p w is a child of this widget, or is
+      equal to this widget. Returns 0 if \p w is NULL.
+   */
+  int contains(const fltk3::Widget *w) const ;
+
+  /** Checks if this widget is a child of w.
+      Returns 1 if this widget is a child of \p w, or is
+      equal to \p w. Returns 0 if \p w is NULL.
+      \param[in] w the possible parent widget.
+      \see contains()
+   */
+  int inside(const fltk3::Widget* w) const {return w ? w->contains(this) : 0;}
+
+  /** Schedules the drawing of the widget.
+      Marks the widget as needing its draw() routine called.
+   */
+  void redraw();
+
+  /** Schedules the drawing of the label.
+     Marks the widget or the parent as needing a redraw for the label area 
+     of a widget.
+   */
+  void redraw_label();
+
+  /** Returns non-zero if draw() needs to be called. 
+      The damage value is actually a bit field that the widget 
+      subclass can use to figure out what parts to draw.
+      \return a bitmap of flags describing the kind of damage to the widget
+      \see damage(uchar), clear_damage(uchar)
+   */
+  uchar damage() const {return damage_;}
+
+  /** Clears or sets the damage flags.
+      Damage flags are cleared when parts of the widget drawing is repaired.
+
+      The optional argument \p c specifies the bits that <b>are set</b>
+      after the call (default: 0) and \b not the bits that are cleared!
+
+      \note Therefore it is possible to set damage bits with this method, but
+      this should be avoided. Use damage(uchar) instead.
+      
+      \param[in] c new bitmask of damage flags (default: 0)
+      \see damage(uchar), damage()
+   */
+  void clear_damage(uchar c = 0) {damage_ = c;}
+
+  /** Sets the damage bits for the widget.
+      Setting damage bits will schedule the widget for the next redraw.
+      \param[in] c bitmask of flags to set
+      \see damage(), clear_damage(uchar)
+   */
+  void damage(uchar c);
+
+  /** Sets the damage bits for an area inside the widget.
+      Setting damage bits will schedule the widget for the next redraw.
+      \param[in] c bitmask of flags to set
+      \param[in] x, y, w, h size of damaged area
+      \see damage(), clear_damage(uchar)
+   */
+  void damage(uchar c, int x, int y, int w, int h);
+
+  void draw_label(int, int, int, int, Fl_Align) const;
+
+  /** Sets width ww and height hh accordingly with the label size.
+      Labels with images will return w() and h() of the image.
+   */
+  void measure_label(int& ww, int& hh) {label_.measure(ww, hh);}
+
+  /** Returns a pointer to the primary fltk3::Window widget.
+      \retval  NULL if no window is associated with this widget.  
+      \note for an fltk3::Window widget, this returns its <I>parent</I> window 
+            (if any), not <I>this</I> window.
+   */
+  fltk3::Window* window() const ;
+
+  /** Returns an fltk3::Group pointer if this widget is an fltk3::Group.
+  
+      \retval NULL if this widget is not derived from fltk3::Group.
+      \note This method is provided to avoid dynamic_cast.
+      \todo More documentation ...
+   */
+  virtual fltk3::Group* as_group() {return 0;}
+
+  /** Returns an fltk3::Window pointer if this widget is an fltk3::Window.
+   
+   \retval NULL if this widget is not derived from fltk3::Window.
+   \note This method is provided to avoid dynamic_cast.
+   \todo More documentation ...
+   */
+  virtual fltk3::Window* as_window() {return 0;}
+  
+  /** Returns an Fl_Gl_Window pointer if this widget is an Fl_Gl_Window.   
+   \retval NULL if this widget is not derived from Fl_Gl_Window.
+   \note This method is provided to avoid dynamic_cast.
+   \todo More documentation ...
+   */
+  virtual class Fl_Gl_Window* as_gl_window() {return 0;}
+  
+  /** For back compatibility only.
+      \deprecated Use selection_color() instead.
+  */
+  Fl_Color color2() const {return (Fl_Color)color2_;}
+
+  /** For back compatibility only.
+      \deprecated Use selection_color(unsigned) instead.
+  */
+  void color2(unsigned a) {color2_ = a;}
+};
+
+/**
+    Reserved type numbers (necessary for my cheapo RTTI) start here.
+    Grep the header files for "RESERVED_TYPE" to find the next available
+    number.
+*/
+#define FL_RESERVED_TYPE 100
+
+#endif
+
+//
+// End of "$Id: Widget.h 7365 2010-03-30 15:18:29Z matt $".
+//

Copied: branches/branch-3.0/fltk3/Window.h (from rev 7366, branches/branch-3.0/fltk3/Fl_Window.H)
===================================================================
--- branches/branch-3.0/fltk3/Window.h	                        (rev 0)
+++ branches/branch-3.0/fltk3/Window.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,450 @@
+//
+// "$Id: Window.h 7365 2010-03-30 15:18:29Z matt $"
+//
+// Window header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2009 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 on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+/* \file
+   fltk3::Window widget . */
+
+#ifndef Fl_Window_H
+#define Fl_Window_H
+
+#include "Group.h"
+
+#define FL_WINDOW 0xF0		///< window type id all subclasses have type() >= this
+#define FL_DOUBLE_WINDOW 0xF1   ///< double window type id
+
+class Fl_X;
+
+/**
+  This widget produces an actual window.  This can either be a main
+  window, with a border and title and all the window management controls,
+  or a "subwindow" inside a window.  This is controlled by whether or not
+  the window has a parent().
+
+  Once you create a window, you usually add children fltk3::Widget
+  's to it by using window->add(child) for each new widget.
+  See fltk3::Group for more information on how to add and remove children.
+
+  There are several subclasses of fltk3::Window that provide
+  double-buffering, overlay, menu, and OpenGL support.
+
+  The window's callback is done if the user tries to close a window
+  using the window manager and fltk3::modal() is zero or equal to the
+  window. fltk3::Window has a default callback that calls fltk3::Window::hide().
+*/
+class FL_EXPORT fltk3::Window : public fltk3::Group {
+
+  friend class ::Fl_X;
+  Fl_X *i; // points at the system-specific stuff
+
+  const char* iconlabel_;
+  const char* xclass_;
+  const void* icon_;
+  // size_range stuff:
+  int minw, minh, maxw, maxh;
+  int dw, dh, aspect;
+  uchar size_range_set;
+  // cursor stuff
+  Fl_Cursor cursor_default;
+  Fl_Color cursor_fg, cursor_bg;
+  void size_range_();
+  void _Fl_Window(); // constructor innards
+
+  // unimplemented copy ctor and assignment operator
+  Window(const fltk3::Window&);
+  Window& operator=(const fltk3::Window&);
+
+protected:
+
+  /** Stores the last window that was made current. See current() const */
+  static fltk3::Window *current_;
+  virtual void draw();
+  /** Forces the window to be drawn, this window is also made current and calls draw(). */
+  virtual void flush();
+
+  /**
+    Sets an internal flag that tells FLTK and the window manager to
+    honor position requests.
+
+    This is used internally and should not be needed by user code.
+
+    \param[in] force 1 to set the FORCE_POSITION flag, 0 to clear it
+  */
+  void force_position(int force) {
+    if (force) set_flag(FORCE_POSITION);
+    else clear_flag(FORCE_POSITION);
+  }
+  /**
+    Returns the internal state of the window's FORCE_POSITION flag.
+
+    \retval 1 if flag is set
+    \retval 0 otherwise
+
+    \see force_position(int)
+  */
+  int force_position() const { return ((flags() & FORCE_POSITION)?1:0); }
+
+public:
+
+  /**
+    Creates a window from the given size and title. 
+    If fltk3::Group::current() is not NULL, the window is created as a 
+    subwindow of the parent window.
+    
+    The first form of the constructor creates a top-level window
+    and asks the window manager to position the window. The second
+    form of the constructor either creates a subwindow or a
+    top-level window at the specified location (x,y) , subject to window
+    manager configuration. If you do not specify the position of the
+    window, the window manager will pick a place to show the window
+    or allow the user to pick a location. Use position(x,y)
+    or hotspot() before calling show() to request a
+    position on the screen. See fltk3::Window::resize() 
+    for some more details on positioning windows.
+    
+    Top-level windows initially have visible() set to 0
+    and parent() set to NULL. Subwindows initially
+    have visible() set to 1 and parent() set to
+    the parent window pointer.
+    
+    fltk3::Widget::box() defaults to FL_FLAT_BOX. If you plan to
+    completely fill the window with children widgets you should
+    change this to FL_NO_BOX. If you turn the window border off
+    you may want to change this to FL_UP_BOX.
+
+    \see fltk3::Window(int x, int y, int w, int h, const char* title = 0)
+  */
+  Window(int w, int h, const char* title= 0);
+  /** Creates a window from the given position, size and title.
+
+    \see fltk3::Window::Window(int w, int h, const char *title = 0)
+  */
+  Window(int x, int y, int w, int h, const char* title = 0);
+  /**
+    The destructor <I>also deletes all the children</I>. This allows a
+    whole tree to be deleted at once, without having to keep a pointer to
+    all the children in the user code. A kludge has been done so the 
+    fltk3::Window and all of its children can be automatic (local)
+    variables, but you must declare the fltk3::Window <I>first</I> so
+    that it is destroyed last.
+  */
+  virtual ~Window();
+
+  virtual int handle(int);
+
+  /**
+    Changes the size and position of the window.  If shown() is true,
+    these changes are communicated to the window server (which may
+    refuse that size and cause a further resize).  If shown() is
+    false, the size and position are used when show() is called.
+    See fltk3::Group for the effect of resizing on the child widgets.
+
+    You can also call the fltk3::Widget methods size(x,y) and position(w,h),
+    which are inline wrappers for this virtual function.
+
+    A top-level window can not force, but merely suggest a position and 
+    size to the operating system. The window manager may not be willing or 
+    able to display a window at the desired position or with the given 
+    dimensions. It is up to the application developer to verify window 
+    parameters after the resize request.
+  */
+  virtual void resize(int,int,int,int);
+  /**
+    Sets whether or not the window manager border is around the
+    window.  The default value is true. void border(int) can be
+    used to turn the border on and off. <I>Under most X window
+    managers this does not work after show() has been called,
+    although SGI's 4DWM does work.</I>
+  */
+  void border(int b);
+  /**
+    Fast inline function to turn the window manager border
+    off. It only works before show() is called.
+  */
+  void clear_border()	{set_flag(NOBORDER);}
+  /** See void fltk3::Window::border(int) */
+  unsigned int border() const	{return !(flags() & NOBORDER);}
+  /** Activates the flags NOBORDER|FL_OVERRIDE */
+  void set_override()	{set_flag(NOBORDER|OVERRIDE);}
+  /** Returns non zero if FL_OVERRIDE flag is set, 0 otherwise. */
+  unsigned int override() const  { return flags()&OVERRIDE; }
+  /**
+    A "modal" window, when shown(), will prevent any events from
+    being delivered to other windows in the same program, and will also
+    remain on top of the other windows (if the X window manager supports
+    the "transient for" property).  Several modal windows may be shown at
+    once, in which case only the last one shown gets events.  You can see
+    which window (if any) is modal by calling fltk3::modal().
+  */
+  void set_modal()	{set_flag(MODAL);}
+  /**  Returns true if this window is modal.  */
+  unsigned int modal() const	{return flags() & MODAL;}
+  /**
+    A "non-modal" window (terminology borrowed from Microsoft Windows)
+    acts like a modal() one in that it remains on top, but it has
+    no effect on event delivery.  There are <I>three</I> states for a
+    window: modal, non-modal, and normal.
+  */
+  void set_non_modal()	{set_flag(NON_MODAL);}
+  /**  Returns true if this window is modal or non-modal. */
+  unsigned int non_modal() const {return flags() & (NON_MODAL|MODAL);}
+
+  /**
+    Marks the window as a menu window.
+
+    This is intended for internal use, but it can also be used if you
+    write your own menu handling. However, this is not recommended.
+
+    This flag is used for correct "parenting" of windows in communication
+    with the windowing system. Modern X window managers can use different
+    flags to distinguish menu and tooltip windows from normal windows.
+
+    This must be called before the window is shown and cannot be changed
+    later.
+  */
+  void set_menu_window()	{set_flag(MENU_WINDOW);}
+
+  /**  Returns true if this window is a menu window. */
+  unsigned int menu_window() const {return flags() & MENU_WINDOW;}
+
+  /**
+    Marks the window as a tooltip window.
+
+    This is intended for internal use, but it can also be used if you
+    write your own tooltip handling. However, this is not recommended.
+
+    This flag is used for correct "parenting" of windows in communication
+    with the windowing system. Modern X window managers can use different
+    flags to distinguish menu and tooltip windows from normal windows.
+
+    This must be called before the window is shown and cannot be changed
+    later.
+
+    \note Since Fl_Tooltip_Window is derived from Fl_Menu_Window, this
+    also \b clears the menu_window() state.
+  */
+  void set_tooltip_window()	{ set_flag(TOOLTIP_WINDOW);
+				  clear_flag(MENU_WINDOW); }
+  /**  Returns true if this window is a tooltip window. */
+  unsigned int tooltip_window() const {return flags() & TOOLTIP_WINDOW;}
+
+  /**
+    Positions the window so that the mouse is pointing at the given
+    position, or at the center of the given widget, which may be the
+    window itself.  If the optional offscreen parameter is
+    non-zero, then the window is allowed to extend off the screen (this
+    does not work with some X window managers). \see position()
+  */
+  void hotspot(int x, int y, int offscreen = 0);
+  /** See void fltk3::Window::hotspot(int x, int y, int offscreen = 0) */
+  void hotspot(const fltk3::Widget*, int offscreen = 0);
+  /** See void fltk3::Window::hotspot(int x, int y, int offscreen = 0) */
+  void hotspot(const fltk3::Widget& p, int offscreen = 0) {hotspot(&p,offscreen);}
+
+  /**
+    Undoes the effect of a previous resize() or show() so that the next time
+    show() is called the window manager is free to position the window.
+
+    This is for Forms compatibility only.
+
+    \deprecated please use force_position(0) instead
+  */
+  void free_position()	{clear_flag(FORCE_POSITION);}
+  /**
+    Sets the allowable range the user can resize this window to.
+    This only works for top-level windows.
+    <UL>
+    <LI>minw and minh are the smallest the window can be.
+	Either value must be greater than 0.</LI>
+    <LI>maxw and maxh are the largest the window can be. If either is
+	<I>equal</I> to the minimum then you cannot resize in that direction.
+	If either is zero  then FLTK picks a maximum size in that direction
+	such that the window will fill the screen.</LI>
+    <LI>dw and dh are size increments.  The  window will be constrained
+	to widths of minw + N * dw,  where N is any non-negative integer.
+	If these are less or equal to 1 they are ignored (this is ignored
+	on WIN32).</LI>
+    <LI>aspect is a flag that indicates that the window should preserve its
+	aspect ratio.  This only works if both the maximum and minimum have
+	the same aspect ratio (ignored on WIN32 and by many X window managers).
+	</LI>
+    </UL>
+
+    If this function is not called, FLTK tries to figure out the range
+    from the setting of resizable():
+    <UL>
+    <LI>If resizable() is NULL (this is the  default) then the window cannot
+	be resized and the resize border and max-size control will not be
+	displayed for the window.</LI>
+    <LI>If either dimension of resizable() is less than 100, then that is
+	considered the minimum size.  Otherwise the resizable() has a minimum
+	size of 100.</LI>
+    <LI>If either dimension of resizable() is zero, then that is also the
+	maximum size (so the window cannot resize in that direction).</LI>
+    </UL>
+
+    It is undefined what happens if the current size does not fit in the
+    constraints passed to size_range().
+  */
+  void size_range(int a, int b, int c=0, int d=0, int e=0, int f=0, int g=0) {
+    minw=a; minh=b; maxw=c; maxh=d; dw=e; dh=f; aspect=g; size_range_();}
+
+  /** See void fltk3::Window::label(const char*)   */
+  const char* label() const	{return fltk3::Widget::label();}
+  /**  See void fltk3::Window::iconlabel(const char*)   */
+  const char* iconlabel() const	{return iconlabel_;}
+  /** Sets the window title bar label. */
+  void label(const char*);
+  /** Sets the icon label. */
+  void iconlabel(const char*);
+  /** Sets the icon label. */
+  void label(const char* label, const char* iconlabel); // platform dependent 
+  void copy_label(const char* a);
+  /** See void fltk3::Window::xclass(const char*) */
+  const char* xclass() const	{return xclass_;}
+  /**
+    A string used to tell the system what type of window this is. Mostly
+    this identifies the picture to draw in the icon. <I>Under X, this is
+    turned into a XA_WM_CLASS pair by truncating at the first
+    non-alphanumeric character and capitalizing the first character, and
+    the second one if the first is 'x'.  Thus "foo" turns into "foo, Foo",
+    and "xprog.1" turns into "xprog, XProg".</I> This only works if called <I>
+    before</I> calling show().
+
+    Under Microsoft Windows this string is used as the name of the
+    WNDCLASS structure, though it is not clear if this can have any
+    visible effect. The passed pointer is stored unchanged. The string 
+    is not copied.
+  */
+  void xclass(const char* c)	{xclass_ = c;}
+  /** Gets the current icon window target dependent data. */
+  const void* icon() const	{return icon_;}
+  /** Sets the current icon window target dependent data. */
+  void icon(const void * ic)	{icon_ = ic;}
+
+  /**
+    Returns non-zero if show() has been called (but not hide()
+    ). You can tell if a window is iconified with (w->shown()
+    && !w->visible()).
+  */
+  int shown() {return i != 0;}
+  /**
+    Puts the window on the screen. Usually (on X) this has the side
+    effect of opening the display. The second form is used for top-level
+    windows and allows standard arguments to be parsed from the
+    command-line.
+
+    If the window is already shown then it is restored and raised to the
+    top.  This is really convenient because your program can call show()
+    at any time, even if the window is already up.  It also means that 
+    show() serves the purpose of raise() in other toolkits.
+  */
+  virtual void show();
+  /**
+    Removes the window from the screen.  If the window is already hidden or
+    has not been shown then this does nothing and is harmless.
+  */
+  virtual void hide();
+  /**
+    See virtual void fltk3::Window::show() 
+  */
+  void show(int, char**);
+  /**
+    Makes the window completely fill the screen, without any window
+    manager border visible.  You must use fullscreen_off() to undo
+    this. This may not work with all window managers.
+  */
+  void fullscreen();
+  /**
+    Turns off any side effects of fullscreen() and does 
+    resize(x,y,w,h).
+  */
+  void fullscreen_off(int,int,int,int);
+  /**
+    Iconifies the window.  If you call this when shown() is false
+    it will show() it as an icon.  If the window is already
+    iconified this does nothing.
+
+    Call show() to restore the window.
+
+    When a window is iconified/restored (either by these calls or by the
+    user) the handle() method is called with FL_HIDE and 
+    FL_SHOW events and visible() is turned on and off.
+
+    There is no way to control what is drawn in the icon except with the
+    string passed to fltk3::Window::xclass().  You should not rely on
+    window managers displaying the icons.
+  */
+  void iconize();
+
+  int x_root() const ;
+  int y_root() const ;
+
+  static fltk3::Window *current();
+  /**
+    Sets things up so that the drawing functions in <fltk3/fl_draw.H> will go
+    into this window. This is useful for incremental update of windows, such
+    as in an idle callback, which will make your program behave much better
+    if it draws a slow graphic. <B>Danger: incremental update is very hard to
+    debug and maintain!</B>
+
+    This method only works for the fltk3::Window and Fl_Gl_Window derived classes.
+  */
+  void make_current();
+
+  /** Returns an fltk3::Window pointer if this widget is an fltk3::Window.
+  
+      \retval NULL if this widget is not derived from fltk3::Window.
+      \note This method is provided to avoid dynamic_cast.
+      \todo More documentation ...
+   */
+  virtual fltk3::Window* as_window() { return this; }
+
+  // for back-compatibility only:
+  /**
+    Changes the cursor for this window.  This always calls the system, if
+    you are changing the cursor a lot you may want to keep track of how
+    you set it in a static variable and call this only if the new cursor
+    is different.
+
+    The type Fl_Cursor is an enumeration defined in <fltk3/Enumerations.H>.
+    (Under X you can get any XC_cursor value by passing 
+    Fl_Cursor((XC_foo/2)+1)).  The colors only work on X, they are
+    not implemented on WIN32.
+
+    For back compatibility only.
+  */
+  void cursor(Fl_Cursor, Fl_Color=FL_BLACK, Fl_Color=FL_WHITE); // platform dependent
+  void default_cursor(Fl_Cursor, Fl_Color=FL_BLACK, Fl_Color=FL_WHITE);
+  static void default_callback(fltk3::Window*, void* v);
+
+};
+
+#endif
+
+//
+// End of "$Id: Window.h 7365 2010-03-30 15:18:29Z matt $".
+//

Modified: branches/branch-3.0/fltk3/fl_draw.H
===================================================================
--- branches/branch-3.0/fltk3/fl_draw.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/fl_draw.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,7 +34,7 @@
 #define fl_draw_H
 
 #include "Enumerations.H"  // for the color names
-#include "Fl_Window.H"	   // for fl_set_spot()
+#include "Window.h"	   // for fl_set_spot()
 #include "Fl_Device.H"
 
 // Image class...

Modified: branches/branch-3.0/fltk3/forms.H
===================================================================
--- branches/branch-3.0/fltk3/forms.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/forms.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,9 +28,9 @@
 #ifndef __FORMS_H__
 #define __FORMS_H__
 
-#include "Fl.H"
-#include "Fl_Group.H"
-#include "Fl_Window.H"
+#include "run.h"
+#include "Group.h"
+#include "Window.h"
 #include "fl_draw.H"
 
 typedef fltk3::Widget FL_OBJECT;

Modified: branches/branch-3.0/fltk3/glut.H
===================================================================
--- branches/branch-3.0/fltk3/glut.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/glut.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -43,7 +43,7 @@
 #  include "gl.h"
 
 
-#  include "Fl.H"
+#  include "run.h"
 #  include "Fl_Gl_Window.H"
 
 /** 

Modified: branches/branch-3.0/fltk3/mac.H
===================================================================
--- branches/branch-3.0/fltk3/mac.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/mac.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -97,7 +97,7 @@
 
 void fl_clip_region(Fl_Region);
 
-#  include "Fl_Window.H"
+#  include "Window.h"
 
 // This object contains all mac-specific stuff about a window:
 // WARNING: this object is highly subject to change!

Copied: branches/branch-3.0/fltk3/run.h (from rev 7366, branches/branch-3.0/fltk3/Fl.H)
===================================================================
--- branches/branch-3.0/fltk3/run.h	                        (rev 0)
+++ branches/branch-3.0/fltk3/run.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,1087 @@
+//
+// "$Id: run.h 7365 2010-03-30 15:18:29Z matt $"
+//
+// Main header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2009 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 on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+/* \file
+    Fl static class.
+ */
+
+#ifndef Fl_H
+#  define Fl_H
+
+#ifdef HAVE_CAIRO
+# include <fltk3/Fl_Cairo.H>
+#endif
+
+#  include "fl_utf8.h"
+#  include "Enumerations.H"
+#  ifndef Fl_Object
+#    define Fl_Object fltk3::Widget	/**< for back compatibility - use fltk3::Widget! */
+#  endif
+
+#  ifdef check
+#    undef check
+#  endif
+
+namespace fltk3 {
+  class Window;
+  class Widget;
+}
+
+class Fl_Image;
+struct Fl_Label;
+
+
+/** \defgroup  callback_functions Callback function typedefs
+    \brief Typedefs for callback or handler functions passed as function parameters.
+
+    FLTK uses callback functions as parameters for some function calls, e.g. to
+    set up global event handlers (fltk3::add_handler()), to add a timeout handler
+    (fltk3::add_timeout()), and many more.
+
+    The typedefs defined in this group describe the function parameters used to set
+    up or clear the callback functions and should also be referenced to define the
+    callback function to handle such events in the user's code.
+
+    \see fltk3::add_handler(), fltk3::add_timeout(), fltk3::repeat_timeout(),
+	 fltk3::remove_timeout() and others
+  @{ */
+
+/** signature of some label drawing functions passed as parameters */
+typedef void (Fl_Label_Draw_F)(const Fl_Label *label, int x, int y, int w, int h, Fl_Align align);
+
+/** signature of some label measurement functions passed as parameters */
+typedef void (Fl_Label_Measure_F)(const Fl_Label *label, int &width, int &height);
+
+/** signature of some box drawing functions passed as parameters */
+typedef void (Fl_Box_Draw_F)(int x, int y, int w, int h, Fl_Color color);
+
+/** signature of some timeout callback functions passed as parameters */
+typedef void (*Fl_Timeout_Handler)(void *data);
+
+/** signature of some wakeup callback functions passed as parameters */
+typedef void (*Fl_Awake_Handler)(void *data);
+
+/** signature of add_idle callback functions passed as parameters */
+typedef void (*Fl_Idle_Handler)(void *data);
+
+/** signature of set_idle callback functions passed as parameters */
+typedef void (*Fl_Old_Idle_Handler)();
+
+/** signature of add_fd functions passed as parameters */
+typedef void (*Fl_FD_Handler)(int fd, void *data);
+
+/** signature of add_handler functions passed as parameters */
+typedef int (*Fl_Event_Handler)(int event);
+
+/** signature of set_abort functions passed as parameters */
+typedef void (*Fl_Abort_Handler)(const char *format,...);
+
+/** signature of set_atclose functions passed as parameters */
+typedef void (*Fl_Atclose_Handler)(fltk3::Window *window, void *data);
+
+/** signature of args functions passed as parameters */
+typedef int (*Fl_Args_Handler)(int argc, char **argv, int &i);
+
+/** @} */ /* group callback_functions */
+
+/**
+  The fltk3 is the FLTK global (static) containing
+  state information and global methods for the current application.
+*/
+namespace fltk3 {
+  
+#ifndef FL_DOXYGEN
+  extern int e_number;
+  extern int e_x;
+  extern int e_y;
+  extern int e_x_root;
+  extern int e_y_root;
+  extern int e_dx;
+  extern int e_dy;
+  extern int e_state;
+  extern int e_clicks;
+  extern int e_is_click;
+  extern int e_keysym;
+  extern char* e_text;
+  extern int e_length;
+  extern fltk3::Widget* belowmouse_;
+  extern fltk3::Widget* pushed_;
+  extern fltk3::Widget* focus_;
+  extern int damage_;
+  extern fltk3::Widget* selection_owner_;
+  extern fltk3::Window* modal_;
+  extern fltk3::Window* grab_;
+  extern int compose_state;
+  extern int visible_focus_;
+  extern int dnd_text_ops_;
+#endif
+  /**
+    If true then flush() will do something.
+  */
+  inline void damage(int d) {damage_ = d;}
+
+  /**
+    The currently executing idle callback function: DO NOT USE THIS DIRECTLY!
+    
+    This is now used as part of a higher level system allowing multiple
+    idle callback functions to be called.
+    \see add_idle(), remove_idle()
+  */
+  extern void (*idle)();
+
+#ifndef FL_DOXYGEN
+  extern Fl_Awake_Handler *awake_ring_;
+  extern void **awake_data_;
+  extern int awake_ring_size_;
+  extern int awake_ring_head_;
+  extern int awake_ring_tail_;
+  extern const char* scheme_;
+  extern Fl_Image* scheme_bg_;
+
+  extern int e_original_keysym; // late addition
+  extern int scrollbar_size_;
+#endif
+
+
+  extern int add_awake_handler_(Fl_Awake_Handler, void*);
+  extern int get_awake_handler_(Fl_Awake_Handler&, void*&);
+
+/* public: */
+
+  // API version number
+  extern double version();
+
+  // argument parsers:
+  extern int arg(int, char**, int&);
+  extern int args(int, char**, int&, Fl_Args_Handler ah = 0);
+  extern void args(int, char**);
+  /**
+    Usage string displayed if fltk3::args() detects an invalid argument.
+    This may be changed to point to customized text at run-time.
+  */
+  extern const char* const help;
+
+  // things called by initialization:
+  extern void display(const char*);
+  extern int visual(int);
+  /**
+    This does the same thing as fltk3::visual(int) but also requires OpenGL
+    drawing to work. This <I>must</I> be done if you want to draw in
+    normal windows with OpenGL with gl_start() and gl_end().
+    It may be useful to call this so your X windows use the same visual
+    as an Fl_Gl_Window, which on some servers will reduce colormap flashing.
+
+    See Fl_Gl_Window for a list of additional values for the argument.
+  */
+  extern int gl_visual(int, int *alist=0); // platform dependent
+  extern void own_colormap();
+  extern void get_system_colors();
+  extern void foreground(uchar, uchar, uchar);
+  extern void background(uchar, uchar, uchar);
+  extern void background2(uchar, uchar, uchar);
+
+  // schemes:
+  extern int scheme(const char*);
+  /** See void scheme(const char *name) */
+  inline const char* scheme() {return scheme_;}
+  /** 
+    Called by scheme according to scheme name. 
+    Loads or reloads the current scheme selection. 
+    See void scheme(const char *name) 
+  */
+  extern int reload_scheme(); // platform dependent
+  extern int scrollbar_size();
+  extern void scrollbar_size(int W);
+
+  // execution:
+  extern int wait();
+  extern double wait(double time);
+  extern int check();
+  extern int ready();
+  extern int run();
+  extern fltk3::Widget* readqueue();
+  /**
+  Adds a one-shot timeout callback.  The function will be called by
+  fltk3::wait() at <i>t</i> seconds after this function is called.
+  The optional void* argument is passed to the callback.
+  
+  You can have multiple timeout callbacks. To remove a timeout
+  callback use fltk3::remove_timeout().
+  
+  If you need more accurate, repeated timeouts, use fltk3::repeat_timeout() to
+  reschedule the subsequent timeouts.
+  
+  The following code will print "TICK" each second on
+  stdout with a fair degree of accuracy:
+  
+  \code
+     void callback(void*) {
+       puts("TICK");
+       fltk3::repeat_timeout(1.0, callback);
+     }
+  
+     int main() {
+       fltk3::add_timeout(1.0, callback);
+       return fltk3::run();
+     }
+  \endcode
+  */
+  extern void add_timeout(double t, Fl_Timeout_Handler,void* = 0); // platform dependent
+  /**
+  Repeats a timeout callback from the expiration of the
+  previous timeout, allowing for more accurate timing. You may only call
+  this method inside a timeout callback.
+  
+  The following code will print "TICK" each second on
+  stdout with a fair degree of accuracy:
+  
+  \code
+     void callback(void*) {
+       puts("TICK");
+       fltk3::repeat_timeout(1.0, callback);
+     }
+  
+     int main() {
+       fltk3::add_timeout(1.0, callback);
+       return fltk3::run();
+     }
+  \endcode
+  */
+  extern void repeat_timeout(double t, Fl_Timeout_Handler, void* = 0); // platform dependent
+  extern int  has_timeout(Fl_Timeout_Handler, void* = 0);
+  extern void remove_timeout(Fl_Timeout_Handler, void* = 0);
+  extern void add_check(Fl_Timeout_Handler, void* = 0);
+  extern int  has_check(Fl_Timeout_Handler, void* = 0);
+  extern void remove_check(Fl_Timeout_Handler, void* = 0);
+  /**
+    Adds file descriptor fd to listen to.
+    
+    When the fd becomes ready for reading fltk3::wait() will call the
+    callback and then return. The callback is passed the fd and the
+    arbitrary void* argument.
+    
+    The second version takes a when bitfield, with the bits
+    FL_READ, FL_WRITE, and FL_EXCEPT defined,
+    to indicate when the callback should be done.
+    
+    There can only be one callback of each type for a file descriptor. 
+    fltk3::remove_fd() gets rid of <I>all</I> the callbacks for a given
+    file descriptor.
+    
+    Under UNIX <I>any</I> file descriptor can be monitored (files,
+    devices, pipes, sockets, etc.). Due to limitations in Microsoft Windows,
+    WIN32 applications can only monitor sockets.
+  */
+  extern void add_fd(int fd, int when, Fl_FD_Handler cb, void* = 0); // platform dependent
+  /** See void add_fd(int fd, int when, Fl_FD_Handler cb, void* = 0) */
+  extern void add_fd(int fd, Fl_FD_Handler cb, void* = 0); // platform dependent
+  /** Removes a file descriptor handler. */
+  extern void remove_fd(int, int when); // platform dependent
+  /** Removes a file descriptor handler. */
+  extern void remove_fd(int); // platform dependent
+
+  extern void add_idle(Fl_Idle_Handler cb, void* data = 0);
+  extern int  has_idle(Fl_Idle_Handler cb, void* data = 0);
+  extern void remove_idle(Fl_Idle_Handler cb, void* data = 0);
+  /** If true then flush() will do something. */
+  inline int damage() {return damage_;}
+  extern void redraw();
+  extern void flush();
+  /** \addtogroup group_comdlg
+    @{ */
+  /**
+  FLTK calls fltk3::warning() to output a warning message.
+  
+  The default version on Windows returns \e without printing a warning
+  message, because Windows programs normally don't have stderr (a console
+  window) enabled.
+
+  The default version on all other platforms prints the warning message to stderr.
+
+  You can override the behavior by setting the function pointer to your
+  own routine.
+
+  fltk3::warning() means that there was a recoverable problem, the display may
+  be messed up, but the user can probably keep working - all X protocol
+  errors call this, for example. The default implementation returns after
+  displaying the message.
+  */
+  extern void (*warning)(const char*, ...);
+  /**
+  FLTK calls fltk3::error() to output a normal error message.
+  
+  The default version on Windows displays the error message in a MessageBox window.
+
+  The default version on all other platforms prints the error message to stderr.
+
+  You can override the behavior by setting the function pointer to your
+  own routine.
+
+  fltk3::error() means there is a recoverable error such as the inability to read
+  an image file. The default implementation returns after displaying the message.
+  */
+  extern void (*error)(const char*, ...);
+  /**
+  FLTK calls fltk3::fatal() to output a fatal error message.
+  
+  The default version on Windows displays the error message in a MessageBox window.
+
+  The default version on all other platforms prints the error message to stderr.
+  
+  You can override the behavior by setting the function pointer to your
+  own routine.
+
+  fltk3::fatal() must not return, as FLTK is in an unusable state, however your
+  version may be able to use longjmp or an exception to continue, as long as
+  it does not call FLTK again. The default implementation exits with status 1
+  after displaying the message.
+  */
+  extern void (*fatal)(const char*, ...);
+  /** @} */
+
+  /** \defgroup  fl_windows Windows handling functions
+      Windows and standard dialogs handling
+    @{ */
+  extern fltk3::Window* first_window();
+  extern void first_window(fltk3::Window*);
+  extern fltk3::Window* next_window(const fltk3::Window*);
+
+  /**
+    Returns the top-most modal() window currently shown.
+
+    This is the most recently shown() window with modal() true, or NULL
+    if there are no modal() windows shown().
+    The modal() window has its handle() method called
+    for all events, and no other windows will have handle()
+    called (grab() overrides this).
+  */
+  inline fltk3::Window* modal() {return modal_;}
+  /**
+    This is used when pop-up menu systems are active.
+    
+    Send all events to the passed window no matter where the pointer or
+    focus is (including in other programs). The window <I>does not have
+    to be shown()</I> , this lets the handle() method of a
+    "dummy" window override all event handling and allows you to
+    map and unmap a complex set of windows (under both X and WIN32
+    <I>some</I> window must be mapped because the system interface needs a
+    window id).
+    
+    If grab() is on it will also affect show() of windows by doing
+    system-specific operations (on X it turns on override-redirect).
+    These are designed to make menus popup reliably
+    and faster on the system.
+    
+    To turn off grabbing do fltk3::grab(0).
+    
+    <I>Be careful that your program does not enter an infinite loop
+    while grab() is on.  On X this will lock up your screen!</I>
+    To avoid this potential lockup, all newer operating systems seem to 
+    limit mouse pointer grabbing to the time during which a mouse button 
+    is held down. Some OS's may not support grabbing at all.
+  */
+  inline fltk3::Window* grab() {return grab_;}
+  /** Selects the window to grab. See fltk3::Window* fltk3::grab() */
+  extern void grab(fltk3::Window*); // platform dependent
+  /** @} */
+
+  /** \defgroup fl_events Events handling functions
+	fltk3 class events handling API
+	@{
+  */
+  // event information:
+  /**
+    Returns the last event that was processed. This can be used
+    to determine if a callback is being done in response to a
+    keypress, mouse click, etc.
+  */
+  inline int event()		{return e_number;}
+  /**
+    Returns the mouse position of the event relative to the fltk3::Window
+    it was passed to.
+  */
+  inline int event_x()	{return e_x;}
+  /**
+    Returns the mouse position of the event relative to the fltk3::Window
+    it was passed to.
+  */
+  inline int event_y()	{return e_y;}
+  /**
+    Returns the mouse position on the screen of the event.  To find the
+    absolute position of an fltk3::Window on the screen, use the
+    difference between event_x_root(),event_y_root() and 
+    event_x(),event_y().
+  */
+  inline int event_x_root()	{return e_x_root;}
+  /**
+    Returns the mouse position on the screen of the event.  To find the
+    absolute position of an fltk3::Window on the screen, use the
+    difference between event_x_root(),event_y_root() and 
+    event_x(),event_y().
+  */
+  inline int event_y_root()	{return e_y_root;}
+  /**
+    Returns the current horizontal mouse scrolling associated with the
+    FL_MOUSEWHEEL event. Right is positive.
+  */
+  inline int event_dx()	{return e_dx;}
+  /**
+    Returns the current vertical mouse scrolling associated with the
+    FL_MOUSEWHEEL event. Down is positive.
+  */
+  inline int event_dy()	{return e_dy;}
+  /**
+    Return where the mouse is on the screen by doing a round-trip query to
+    the server.  You should use fltk3::event_x_root() and 
+    fltk3::event_y_root() if possible, but this is necessary if you are
+    not sure if a mouse event has been processed recently (such as to
+    position your first window).  If the display is not open, this will
+    open it.
+  */
+  extern void get_mouse(int &,int &); // platform dependent
+  /**
+    Returns non zero if we had a double click event.
+    \retval Non-zero if the most recent FL_PUSH or FL_KEYBOARD was a "double click".  
+    \retval  N-1 for  N clicks. 
+    A double click is counted if the same button is pressed
+    again while event_is_click() is true.
+    
+   */
+  inline int event_clicks()	{return e_clicks;}
+  /**
+    Manually sets the number returned by fltk3::event_clicks().  
+    This can be used to set it to zero so that
+    later code does not think an item was double-clicked.
+    \param[in] i corresponds to no double-click if 0, i+1 mouse clicks otherwise
+    \see int event_clicks()
+  */
+  inline void event_clicks(int i) {e_clicks = i;}
+  /**
+    The first form returns non-zero if the mouse has not moved far enough
+    and not enough time has passed since the last FL_PUSH or 
+    FL_KEYBOARD event for it to be considered a "drag" rather than a
+    "click".  You can test this on FL_DRAG, FL_RELEASE,
+    and FL_MOVE events.  The second form clears the value returned
+    by fltk3::event_is_click().  Useful to prevent the <I>next</I>
+    click from being counted as a double-click or to make a popup menu
+    pick an item with a single click.  Don't pass non-zero to this.
+  */
+  inline int event_is_click()	{return e_is_click;}
+  /**
+    Only i=0 works! See int event_is_click(). 
+  */
+  inline void event_is_click(int i) {e_is_click = i;}
+  /**
+    Gets which particular mouse button caused the current event. 
+    This returns garbage if the most recent event was not a FL_PUSH or FL_RELEASE event.
+    \retval FL_LEFT_MOUSE \retval FL_MIDDLE_MOUSE \retval FL_RIGHT_MOUSE.
+    \see fltk3::event_buttons()
+  */
+  inline int event_button()	{return e_keysym-FL_Button;}
+  /**
+    This is a bitfield of what shift states were on and what mouse buttons
+    were held down during the most recent event. The second version
+    returns non-zero if any of the passed bits are turned on.
+    The legal bits are:
+    
+    \li FL_SHIFT
+    \li FL_CAPS_LOCK
+    \li FL_CTRL
+    \li FL_ALT
+    \li FL_NUM_LOCK
+    \li FL_META
+    \li FL_SCROLL_LOCK
+    \li FL_BUTTON1
+    \li FL_BUTTON2
+    \li FL_BUTTON3
+    
+    X servers do not agree on shift states, and FL_NUM_LOCK, FL_META, and
+    FL_SCROLL_LOCK may not work. The values were selected to match the
+    XFree86 server on Linux. In addition there is a bug in the way X works
+    so that the shift state is not correctly reported until the first event
+    <I>after</I> the shift key is pressed or released.
+  */
+  inline int event_state()	{return e_state;}
+  /** See int event_state() */
+  inline int event_state(int i) {return e_state&i;}
+  /**
+    Gets which key on the keyboard was last pushed.
+
+    The returned integer 'key code' is not necessarily a text
+    equivalent for the keystroke. For instance: if someone presses '5' on the 
+    numeric keypad with numlock on, fltk3::event_key() may return the 'key code'
+    for this key, and NOT the character '5'. To always get the '5', use fltk3::event_text() instead.
+    
+    \returns an integer 'key code', or 0 if the last event was not a key press or release.
+    \see int event_key(int), event_text(), compose(int&).
+  */
+  inline int event_key()	{return e_keysym;}
+  /**
+    Returns the keycode of the last key event, regardless of the NumLock state.
+      
+    If NumLock is deactivated, FLTK translates events from the 
+    numeric keypad into the corresponding arrow key events. 
+    event_key() returns the translated key code, whereas
+    event_original_key() returns the keycode before NumLock translation.
+  */
+  inline int event_original_key(){return e_original_keysym;}
+  /** 
+    Returns true if the given \p key was held
+    down (or pressed) <I>during</I> the last event.  This is constant until
+    the next event is read from the server.
+    
+    fltk3::get_key(int) returns true if the given key is held down <I>now</I>.
+    Under X this requires a round-trip to the server and is <I>much</I>
+    slower than fltk3::event_key(int).
+    
+    Keys are identified by the <I>unshifted</I> values. FLTK defines a
+    set of symbols that should work on most modern machines for every key
+    on the keyboard:
+    
+    \li All keys on the main keyboard producing a printable ASCII
+	character use the value of that ASCII character (as though shift,
+	ctrl, and caps lock were not on). The space bar is 32.
+    \li All keys on the numeric keypad producing a printable ASCII
+	character use the value of that ASCII character plus FL_KP.
+	The highest possible value is FL_KP_Last so you can
+	range-check to see if something is  on the keypad.
+    \li All numbered function keys use the number on the function key plus 
+	FL_F.  The highest possible number is FL_F_Last, so you
+	can range-check a value.
+    \li Buttons on the mouse are considered keys, and use the button
+	number (where the left button is 1) plus FL_Button.
+    \li All other keys on the keypad have a symbol: FL_Escape,
+	FL_BackSpace, FL_Tab, FL_Enter, FL_Print, FL_Scroll_Lock, FL_Pause,
+	FL_Insert, FL_Home, FL_Page_Up, FL_Delete, FL_End, FL_Page_Down,
+	FL_Left, FL_Up, FL_Right, FL_Down, FL_Shift_L, FL_Shift_R,
+	FL_Control_L, FL_Control_R, FL_Caps_Lock, FL_Alt_L, FL_Alt_R,
+	FL_Meta_L, FL_Meta_R, FL_Menu, FL_Num_Lock, FL_KP_Enter.  Be
+	careful not to confuse these with the very similar, but all-caps,
+	symbols used by fltk3::event_state().
+
+    On X fltk3::get_key(FL_Button+n) does not work.
+    
+    On WIN32 fltk3::get_key(FL_KP_Enter) and fltk3::event_key(FL_KP_Enter) do not work.
+  */
+  extern int event_key(int key);
+  /** 
+    Returns true if the given \p key is held down <I>now</I>.  
+    Under X this requires a round-trip to the server and is <I>much</I>
+    slower than fltk3::event_key(int). \see event_key(int)
+  */
+  extern int get_key(int key); // platform dependent
+  /** 
+    Returns the text associated with the current event, including FL_PASTE or FL_DND_RELEASE events.
+    This can be used in response to FL_KEYUP, FL_KEYDOWN, FL_PASTE, FL_DND_RELEASE.
+
+    When responding to FL_KEYUP/FL_KEYDOWN, use this function instead of fltk3::event_key()
+    to get the text equivalent of keystrokes suitable for inserting into strings 
+    and text widgets.
+
+    The returned string is guaranteed to be be NULL terminated.
+    However, see fltk3::event_length() for the actual length of the string,
+    in case the string itself contains NULLs that are part of the text data.
+
+    \returns A NULL terminated text string equivalent of the last keystroke.
+   */
+  inline const char* event_text() {return e_text;}
+  /**
+    Returns the length of the text in fltk3::event_text(). There
+    will always be a nul at this position in the text. However there may
+    be a nul before that if the keystroke translates to a nul character or
+    you paste a nul character.
+  */
+  inline int event_length() {return e_length;}
+
+  extern int compose(int &del);
+  /**
+    If the user moves the cursor, be sure to call fltk3::compose_reset().
+    The next call to fltk3::compose() will start out in an initial state. In
+    particular it will not set "del" to non-zero. This call is very fast
+    so it is ok to call it many times and in many places.
+  */
+  inline void compose_reset() {compose_state = 0;}
+  extern int event_inside(int,int,int,int);
+  extern int event_inside(const fltk3::Widget*);
+  extern int test_shortcut(Fl_Shortcut);
+
+  // event destinations:
+  extern int handle(int, fltk3::Window*);
+  /**  Gets the widget that is below the mouse. 
+       \see  belowmouse(fltk3::Widget*) */
+  inline fltk3::Widget* belowmouse() {return belowmouse_;}
+  extern void belowmouse(fltk3::Widget*);
+  /** Gets the widget that is being pushed.
+      \see void pushed(fltk3::Widget*) */
+  inline fltk3::Widget* pushed()	{return pushed_;}
+  extern void pushed(fltk3::Widget*);
+  /** Gets the current fltk3::focus() widget. \sa fltk3::focus(fltk3::Widget*) */
+  inline fltk3::Widget* focus()	{return focus_;}
+  extern void focus(fltk3::Widget*);
+  extern void add_handler(Fl_Event_Handler h);
+  extern void remove_handler(Fl_Event_Handler h);
+  /** @} */
+
+  /** \defgroup  fl_clipboard  Selection & Clipboard functions
+	fl global copy/cut/paste functions
+   @{ */
+  // cut/paste:
+  /**
+    Copies the data pointed to by \p stuff to the selection (0) or
+    primary (1) clipboard. The selection clipboard is used for
+    middle-mouse pastes and for drag-and-drop selections. The primary
+    clipboard is used for traditional copy/cut/paste operations.
+  */
+  extern void copy(const char* stuff, int len, int clipboard = 0); // platform dependent
+  /**
+    Pastes the data from the selection (0) or primary (1) clipboard into receiver.  
+    The selection clipboard is used for middle-mouse pastes and for 
+    drag-and-drop selections. The primary clipboard is used for 
+    traditional copy/cut/paste operations.
+  */
+  extern void paste(fltk3::Widget &receiver, int clipboard /*=0*/); // platform dependent
+  /**
+    Initiate a Drag And Drop operation. The clipboard should be
+    filled with relevant data before calling this method. FLTK will
+    then initiate the system wide drag and drop handling. Dropped data
+    will be marked as <i>text</i>.
+  */
+  extern int dnd(); // platform dependent
+
+  // These are for back-compatibility only:
+  /**  back-compatibility only: Gets the widget owning the current selection  
+       \see fltk3::Widget* selection_owner(fltk3::Widget*) */
+  inline fltk3::Widget* selection_owner() {return selection_owner_;}
+  extern void selection_owner(fltk3::Widget*);
+  extern void selection(fltk3::Widget &owner, const char*, int len);
+  extern void paste(fltk3::Widget &receiver);
+/** @} */
+/** \defgroup  fl_screen  Screen functions
+	fl global screen functions
+     @{ */
+  // screen size:
+  /** Returns the origin of the current screen, where 0 indicates the left side of the screen. */
+  extern int x(); // platform dependent
+  /** Returns the origin of the current screen, where 0 indicates the top edge of the screen. */
+  extern int y(); // platform dependent
+  /** Returns the width of the screen in pixels. */
+  extern int w(); // platform dependent
+  /** Returns the height of the screen in pixels. */
+  extern int h(); // platform dependent
+
+  // multi-head support:
+  extern int screen_count();
+  /** 
+      Gets the bounding box of a screen that contains the mouse pointer.
+      \param[out]  X,Y,W,H the corresponding screen bounding box
+      \see void screen_xywh(int &x, int &y, int &w, int &h, int mx, int my) 
+  */
+  extern void screen_xywh(int &X, int &Y, int &W, int &H, int mx, int my);
+  extern void screen_xywh(int &X, int &Y, int &W, int &H, int n);
+  inline void screen_xywh(int &X, int &Y, int &W, int &H) {
+    screen_xywh(X, Y, W, H, e_x_root, e_y_root);
+  }
+  
+  /**   @} */
+
+  /** \defgroup  fl_attributes  Color & Font functions
+	fl global color, font functions
+     @{ */
+ 
+  // color map:
+  extern void	set_color(Fl_Color, uchar, uchar, uchar);
+  /**
+    Sets an entry in the fl_color index table. You can set it to any
+    8-bit RGB color. The color is not allocated until fl_color(i) is used.
+  */
+  extern void	set_color(Fl_Color, unsigned); // platform dependent
+  extern Fl_Color get_color(Fl_Color);
+  extern void	get_color(Fl_Color, uchar&, uchar&, uchar&);
+  /**
+    Frees the specified color from the colormap, if applicable.
+    If overlay is non-zero then the color is freed from the
+    overlay colormap.
+  */
+  extern void	free_color(Fl_Color, int overlay = 0); // platform dependent
+
+  // fonts:
+  extern const char* get_font(Fl_Font);
+  /**
+    Get a human-readable string describing the family of this face.  This
+    is useful if you are presenting a choice to the user.  There is no
+    guarantee that each face has a different name.  The return value points
+    to a static buffer that is overwritten each call.
+    
+    The integer pointed to by \p attributes (if the pointer is not
+    zero) is set to zero, FL_BOLD or FL_ITALIC or 
+    FL_BOLD | FL_ITALIC.  To locate a "family" of fonts, search
+    forward and back for a set with non-zero attributes, these faces along
+    with the face with a zero attribute before them constitute a family.
+  */
+  extern const char* get_font_name(Fl_Font, int* attributes = 0);
+  /**
+    Return an array of sizes in \p sizep.  The return value is the
+    length of this array.  The sizes are sorted from smallest to largest
+    and indicate what sizes can be given to fl_font() that will
+    be matched exactly (fl_font() will pick the closest size for
+    other sizes).  A zero in the first location of the array indicates a
+    scalable font, where any size works, although the array may list sizes
+    that work "better" than others.  Warning: the returned array
+    points at a static buffer that is overwritten each call.  Under X this
+    will open the display.
+  */
+  extern int get_font_sizes(Fl_Font, int*& sizep);
+  extern void set_font(Fl_Font, const char*);
+  extern void set_font(Fl_Font, Fl_Font);
+  /**
+    FLTK will open the display, and add every fonts on the server to the
+    face table.  It will attempt to put "families" of faces together, so
+    that the normal one is first, followed by bold, italic, and bold
+    italic.
+    
+    The optional argument is a string to describe the set of fonts to
+    add.  Passing NULL will select only fonts that have the
+    ISO8859-1 character set (and are thus usable by normal text).  Passing
+    "-*" will select all fonts with any encoding as long as they have
+    normal X font names with dashes in them.  Passing "*" will list every
+    font that exists (on X this may produce some strange output).  Other
+    values may be useful but are system dependent.  With WIN32 NULL
+    selects fonts with ISO8859-1 encoding and non-NULL selects
+    all fonts.
+    
+    The return value is how many faces are in the table after this is done.
+  */
+  extern Fl_Font set_fonts(const char* = 0); // platform dependent
+
+  /**   @} */
+ /** \defgroup  fl_drawings  Drawing functions
+	fl global graphics and gui drawing functions
+     @{ */
+  // <Hack to re-order the 'Drawing functions' group>
+ /** @} */
+
+  // labeltypes:
+  extern void set_labeltype(Fl_Labeltype,Fl_Label_Draw_F*,Fl_Label_Measure_F*);
+  /** Sets the functions to call to draw and measure a specific labeltype. */
+  extern void set_labeltype(Fl_Labeltype, Fl_Labeltype from); // is it defined ?
+
+  // boxtypes:
+  extern Fl_Box_Draw_F *get_boxtype(Fl_Boxtype);
+  extern void set_boxtype(Fl_Boxtype, Fl_Box_Draw_F*,uchar,uchar,uchar,uchar);
+  extern void set_boxtype(Fl_Boxtype, Fl_Boxtype from);
+  extern int box_dx(Fl_Boxtype);
+  extern int box_dy(Fl_Boxtype);
+  extern int box_dw(Fl_Boxtype);
+  extern int box_dh(Fl_Boxtype);
+  extern int draw_box_active();
+
+  // back compatibility:
+  /** \addtogroup fl_windows 
+    @{ */
+  /** For back compatibility, sets the void fltk3::fatal handler callback */
+  inline void set_abort(Fl_Abort_Handler f) {fatal = f;}
+  extern void (*atclose)(fltk3::Window*,void*);
+  extern void default_atclose(fltk3::Window*,void*);
+  /** For back compatibility, sets the fltk3::atclose handler callback. You
+      can now simply change the callback for the window instead.
+      \see fltk3::Window::callback(Fl_Callback*) */
+  inline void set_atclose(Fl_Atclose_Handler f) {atclose = f;}
+  /**   @} */
+
+  /** \addtogroup fl_events 
+    @{ */
+  /** Returns non-zero if the Shift key is pressed. */
+  inline int event_shift() {return e_state&FL_SHIFT;}
+  /** Returns non-zero if the Control key is pressed. */
+  inline int event_ctrl() {return e_state&FL_CTRL;}
+  /** Returns non-zero if the FL_COMMAND key is pressed, either FL_CTRL or on OSX FL_META. */
+  inline int event_command() {return e_state&FL_COMMAND;}
+  /** Returns non-zero if the Alt key is pressed. */
+  inline int event_alt() {return e_state&FL_ALT;}
+  /**
+    Returns the mouse buttons state bits; if non-zero, then at least one
+    button is pressed now.  This function returns the button state at the 
+    time of the event. During an FL_RELEASE event, the state 
+    of the released button will be 0. To find out, which button 
+    caused an FL_RELEASE event, you can use fltk3::event_button() instead.
+    \return a bit mask value like { [FL_BUTTON1] | [FL_BUTTON2] | [FL_BUTTON3] }
+  */
+  inline int event_buttons() {return e_state&0x7f000000;}
+  /**
+    Returns non-zero if mouse button 1 is currently held down.
+    For more details, see fltk3::event_buttons().
+  */
+  inline int event_button1() {return e_state&FL_BUTTON1;}
+  /**
+    Returns non-zero if button 2 is currently held down.
+    For more details, see fltk3::event_buttons().
+  */
+  inline int event_button2() {return e_state&FL_BUTTON2;}
+  /**
+    Returns non-zero if button 3 is currently held down.
+    For more details, see fltk3::event_buttons().
+  */
+  inline int event_button3() {return e_state&FL_BUTTON3;}
+  /**   @} */
+
+  /**
+    Sets an idle callback.
+
+    \deprecated This method is obsolete - use the add_idle() method instead.
+  */
+  inline void set_idle(Fl_Old_Idle_Handler cb) {idle = cb;}
+  /** See fltk3::Window* grab() */
+  inline void grab(fltk3::Window&win) {grab(&win);}
+  /** Releases the current grabbed window, equals grab(0).
+  \deprecated Use fltk3::grab(0) instead.
+  \see fltk3::Window* grab() */
+  inline void release() {grab(0);}
+
+  // Visible focus methods...
+  /**
+    Gets or sets the visible keyboard focus on buttons and other
+    non-text widgets. The default mode is to enable keyboard focus
+    for all widgets.
+  */
+  inline void visible_focus(int v) { visible_focus_ = v; }
+  /**
+    Gets or sets the visible keyboard focus on buttons and other
+    non-text widgets. The default mode is to enable keyboard focus
+    for all widgets.
+  */
+  inline int  visible_focus() { return visible_focus_; }
+
+  // Drag-n-drop text operation methods...
+  /**
+    Gets or sets whether drag and drop text operations are supported.
+    This specifically affects whether selected text can
+    be dragged from text fields or dragged within a text field as a
+    cut/paste shortcut.
+  */
+  inline void dnd_text_ops(int v) { dnd_text_ops_ = v; }
+  /**
+    Gets or sets whether drag and drop text operations are
+    supported. This specifically affects whether selected text can
+    be dragged from text fields or dragged within a text field as a
+    cut/paste shortcut.
+  */
+  inline int  dnd_text_ops() { return dnd_text_ops_; }
+  /** \defgroup fl_multithread Multithreading support functions
+	fl multithreading support functions
+   @{ */
+
+  // Multithreading support:
+  extern void lock();
+  extern void unlock();
+  extern void awake(void* message = 0);
+  /** See void awake(void* message=0). */
+  extern int awake(Fl_Awake_Handler cb, void* message = 0);
+  /**
+    The thread_message() method returns the last message
+    that was sent from a child by the awake() method.
+    
+    See also: multithreading
+  */
+  extern void* thread_message(); // platform dependent
+  /** @} */
+
+  /** \defgroup fl_del_widget Safe widget deletion support functions
+
+    These functions support deletion of widgets inside callbacks.
+
+    fltk3::delete_widget() should be called when deleting widgets
+    or complete widget trees (fltk3::Group, fltk3::Window, ...) inside
+    callbacks.
+
+    The other functions are intended for internal use. The preferred
+    way to use them is by using the helper class Fl_Widget_Tracker.
+
+    The following is to show how it works ...
+
+    There are three groups of related methods:
+
+      -# scheduled widget deletion
+	- fltk3::delete_widget() schedules widgets for deletion
+	- fltk3::do_widget_deletion() deletes all scheduled widgets
+      -# widget watch list ("smart pointers")
+	- fltk3::watch_widget_pointer() adds a widget pointer to the watch list
+	- fltk3::release_widget_pointer() removes a widget pointer from the watch list
+	- fltk3::clear_widget_pointer() clears a widget pointer \e in the watch list
+      -# the class Fl_Widget_Tracker:
+	- the constructor calls fltk3::watch_widget_pointer()
+	- the destructor calls fltk3::release_widget_pointer()
+	- the access methods can be used to test, if a widget has been deleted
+	  \see Fl_Widget_Tracker.
+
+   @{ */
+  // Widget deletion:
+  extern void delete_widget(fltk3::Widget *w);
+  extern void do_widget_deletion();
+  extern void watch_widget_pointer(fltk3::Widget *&w);
+  extern void release_widget_pointer(fltk3::Widget *&w);
+  extern void clear_widget_pointer(fltk3::Widget const *w);
+  /** @} */
+
+#ifdef HAVE_CAIRO
+  /** \defgroup group_cairo Cairo support functions and classes 
+      @{ 
+  */
+/* public: */
+  // Cairo support API
+  extern cairo_t * cairo_make_current(fltk3::Window* w);
+   /** when HAVE_CAIRO is defined and cairo_autolink_context() is true, 
+      any current window dc is linked to a current context.
+      This is not the default, because it may not be necessary
+      to add cairo support to all fltk supported windows.
+      When you wish to associate a cairo context in this mode,
+      you need to call explicitly in your draw() overridden method,
+      FL::cairo_make_current(fltk3::Window*). This will create a cairo context
+      but only for this Window. 
+      Still in custom cairo application it is possible to handle 
+      completely this process automatically by setting \p alink to true.
+      In this last case, you don't need anymore to call fltk3::cairo_make_current().
+      You can use fltk3::cairo_cc() to get the current cairo context anytime.
+     \note Only available when configure has the --enable-cairo option
+  */
+  inline void cairo_autolink_context(bool alink) {cairo_state_.autolink(alink);}
+  /** 
+    Gets the current autolink mode for cairo support.
+    \retval false if no cairo context autolink is made for each window. 
+    \retval true if any fltk window is attached a cairo context when it 
+    is current. \see void cairo_autolink_context(bool alink) 
+    \note Only available when configure has the --enable-cairo option
+ */
+  inline bool cairo_autolink_context() {return cairo_state_.autolink();}
+  /** Gets the current cairo context linked with a fltk window. */
+  inline cairo_t * cairo_cc() { return cairo_state_.cc(); }
+  /** Sets the current cairo context to \p c.
+      Set \p own to true if you want fltk to handle this cc deletion.
+     \note Only available when configure has the --enable-cairo option
+*/
+  inline void cairo_cc(cairo_t * c, bool own=false){ cairo_state_.cc(c, own); } 
+
+/* private: */
+  extern cairo_t * cairo_make_current(void* gc);
+  extern cairo_t * cairo_make_current(void* gc, int W, int H);
+  extern Fl_Cairo_State cairo_state_;
+/* public: */
+  /** @} */ 
+
+#endif // HAVE_CAIRO
+
+};
+
+/**
+  This class should be used to control safe widget deletion.
+
+  You can use an Fl_Widget_Tracker object to watch another widget, if you
+  need to know, if this widget has been deleted during a callback.
+
+  This simplifies the use of the "safe widget deletion" methods
+  fltk3::watch_widget_pointer() and fltk3::release_widget_pointer() and
+  makes their use more reliable, because the destructor autmatically
+  releases the widget pointer from the widget watch list.
+
+  It is intended to be used as an automatic (local/stack) variable,
+  such that the automatic destructor is called when the object's
+  scope is left. This ensures that no stale widget pointers are
+  left in the widget watch list (see example below).
+  
+  You can also create Fl_Widget_Tracker objects with \c new, but then it
+  is your responsibility to delete the object (and thus remove the
+  widget pointer from the watch list) when it is not needed any more.
+
+  Example:
+
+  \code
+    int MyClass::handle (int event) {
+
+      if (...) {
+	Fl_Widget_Tracker wp(this);	// watch myself
+	do_callback();			// call the callback
+
+	if (wp.deleted()) return 1;	// exit, if deleted
+
+	// Now we are sure that the widget has not been deleted.
+	// It is safe to access the widget
+
+	clear_changed();		// access the widget
+      }
+    }
+  \endcode
+
+*/
+class FL_EXPORT Fl_Widget_Tracker {
+
+  fltk3::Widget* wp_;
+
+public:
+
+  Fl_Widget_Tracker(fltk3::Widget *wi);
+  ~Fl_Widget_Tracker();
+
+  /**
+    Returns a pointer to the watched widget.
+
+    This pointer is \c NULL, if the widget has been deleted.
+  */
+  fltk3::Widget *widget() {return wp_;}
+
+  /**
+    Returns 1, if the watched widget has been deleted.
+
+    This is a convenience method. You can also use something like
+
+    <tt>  if (wp.widget() == 0) // ...</tt>
+
+    where \p wp is an Fl_Widget_Tracker object.
+  */
+  int deleted() {return wp_ == 0;}
+
+  /**
+    Returns 1, if the watched widget exists (has not been deleted).
+
+    This is a convenience method. You can also use something like
+
+    <tt>  if (wp.widget() != 0) // ...</tt>
+
+    where \p wp is an Fl_Widget_Tracker object.
+  */
+  int exists()  {return wp_ != 0;}
+
+};
+
+ /** \defgroup  fl_unicode  Unicode and UTF-8 functions
+	fl global Unicode and UTF-8 handling functions
+     @{ */
+ /** @} */
+
+#endif // !Fl_H
+
+//
+// End of "$Id: run.h 7365 2010-03-30 15:18:29Z matt $".
+//

Modified: branches/branch-3.0/fltk3/win32.H
===================================================================
--- branches/branch-3.0/fltk3/win32.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/win32.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -66,7 +66,7 @@
 #define XMapWindow(a,b) ShowWindow(b, SW_RESTORE)
 #define XUnmapWindow(a,b) ShowWindow(b, SW_HIDE)
 
-#include "Fl_Window.H"
+#include "Window.h"
 // this object contains all win32-specific stuff about a window:
 // Warning: this object is highly subject to change!
 class FL_EXPORT Fl_X {

Modified: branches/branch-3.0/fltk3/x.H
===================================================================
--- branches/branch-3.0/fltk3/x.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/x.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -49,7 +49,7 @@
 #      pragma reset woff 3322
 #    endif
 #    include <X11/Xatom.h>
-#    include "Fl_Window.H"
+#    include "Window.h"
 #    include "Xutf8.h"
 // Mirror X definition of Region to Fl_Region, for portability...
 typedef Region Fl_Region;

Modified: branches/branch-3.0/ide/Xcode3/FLTK.xcodeproj/project.pbxproj
===================================================================
--- branches/branch-3.0/ide/Xcode3/FLTK.xcodeproj/project.pbxproj	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/ide/Xcode3/FLTK.xcodeproj/project.pbxproj	2010-03-30 19:10:49 UTC (rev 7368)
@@ -459,12 +459,12 @@
 		C9039A6D472AFBDB4D5D3581 /* fltkgl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4AED96DAF2EDB1950E04795 /* fltkgl.framework */; };
 		C9603E2EF91824FAFDAB4652 /* device.cxx in Sources */ = {isa = PBXBuildFile; fileRef = AE541F73BF89F614E5BCC604 /* device.cxx */; };
 		C9C84B2983DC793B141DDC70 /* ide_maketools.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B65FCD2B8489E2BBAA3F695A /* ide_maketools.cxx */; };
-		C9C9078F11626697006C5014 /* hello.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 388A5267639C2CEEDD762C41 /* hello.cxx */; };
 		C9C9079111626697006C5014 /* fltk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F459EEE32AC6EE0087583065 /* fltk.framework */; };
 		C9C9079311626697006C5014 /* fltk.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = F459EEE32AC6EE0087583065 /* fltk.framework */; };
-		C9C907A9116266AA006C5014 /* hello.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 388A5267639C2CEEDD762C41 /* hello.cxx */; };
 		C9C907AB116266AA006C5014 /* fltk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F459EEE32AC6EE0087583065 /* fltk.framework */; };
 		C9C907AD116266AA006C5014 /* fltk.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = F459EEE32AC6EE0087583065 /* fltk.framework */; };
+		C9C90822116270B8006C5014 /* hello2.cxx in Sources */ = {isa = PBXBuildFile; fileRef = C9C9081E116270B8006C5014 /* hello2.cxx */; };
+		C9C90823116270B8006C5014 /* hello1.cxx in Sources */ = {isa = PBXBuildFile; fileRef = C9C9081D116270B8006C5014 /* hello1.cxx */; };
 		CA0BD11A864DD8E6018DDC43 /* Fl_File_Input.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 19E46DC28A1945E3BB3FA0EC /* Fl_File_Input.cxx */; };
 		CA29F412020993F3D156CA64 /* jdinput.c in Sources */ = {isa = PBXBuildFile; fileRef = E28D295E888C8D18A99E45DB /* jdinput.c */; };
 		CAE74E0204978B1EE0CB2685 /* fltkimages.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 23AEAC354D12FE5A50BF85B5 /* fltkimages.framework */; };
@@ -4019,6 +4019,8 @@
 		C9C907A011626698006C5014 /* hello-Info copy.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "hello-Info copy.plist"; path = "plists/hello-Info copy.plist"; sourceTree = "<group>"; };
 		C9C907B2116266AA006C5014 /* hello.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = hello.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		C9C907BA116266AB006C5014 /* hello-Info copy 2.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "hello-Info copy 2.plist"; path = "plists/hello-Info copy 2.plist"; sourceTree = "<group>"; };
+		C9C9081D116270B8006C5014 /* hello1.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = hello1.cxx; path = ../../test/hello1.cxx; sourceTree = SOURCE_ROOT; };
+		C9C9081E116270B8006C5014 /* hello2.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = hello2.cxx; path = ../../test/hello2.cxx; sourceTree = SOURCE_ROOT; };
 		C9F70AA7DF730564A9DD1BFD /* pngwtran.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngwtran.c; path = ../../png/pngwtran.c; sourceTree = SOURCE_ROOT; };
 		CA38333A14E4BA43F4E01CAA /* fl_show_colormap.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_show_colormap.cxx; path = ../../src/fl_show_colormap.cxx; sourceTree = SOURCE_ROOT; };
 		CA39566FD1F25D47C83DE042 /* glut_font.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = glut_font.cxx; path = ../../src/glut_font.cxx; sourceTree = SOURCE_ROOT; };
@@ -5223,6 +5225,8 @@
 			isa = PBXGroup;
 			children = (
 				388A5267639C2CEEDD762C41 /* hello.cxx */,
+				C9C9081D116270B8006C5014 /* hello1.cxx */,
+				C9C9081E116270B8006C5014 /* hello2.cxx */,
 			);
 			name = hello;
 			sourceTree = "<group>";
@@ -9020,7 +9024,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				C9C9078F11626697006C5014 /* hello.cxx in Sources */,
+				C9C90823116270B8006C5014 /* hello1.cxx in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -9028,7 +9032,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				C9C907A9116266AA006C5014 /* hello.cxx in Sources */,
+				C9C90822116270B8006C5014 /* hello2.cxx in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

Modified: branches/branch-3.0/src/Fl.cxx
===================================================================
--- branches/branch-3.0/src/Fl.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,8 +31,8 @@
 //          to implement clipping. This should be changed into pure
 //          Quartz calls in the near future.
 #include "config.h"
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/run.h>
+#include <fltk3/Window.h>
 #include <fltk3/x.H>
 #include <fltk3/Fl_Tooltip.H>
 #include <ctype.h>

Modified: branches/branch-3.0/src/Fl_Abstract_Printer.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Abstract_Printer.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Abstract_Printer.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
  \brief implementation of class Fl_Abstract_Printer.
  */
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Printer.H>
 
 /**

Modified: branches/branch-3.0/src/Fl_Adjuster.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Adjuster.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Adjuster.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Adjuster.H>
 #include <fltk3/Fl_Bitmap.H>
 #include <fltk3/fl_draw.H>

Modified: branches/branch-3.0/src/Fl_Bitmap.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Bitmap.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Bitmap.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,10 +31,10 @@
 /** \fn Fl_Bitmap::Fl_Bitmap(const unsigned char *array, int W, int H)
   The constructors create a new bitmap from the specified bitmap data.*/
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 #include <fltk3/fl_draw.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/Widget.h>
 #include <fltk3/Fl_Menu_Item.H>
 #include <fltk3/Fl_Bitmap.H>
 #include "flstring.h"

Modified: branches/branch-3.0/src/Fl_Box.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Box.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Box.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/Widget.h>
 #include <fltk3/Fl_Box.H>
 
 void Fl_Box::draw() {

Modified: branches/branch-3.0/src/Fl_Browser.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Browser.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Browser.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Browser.H>
 #include <fltk3/fl_draw.H>
 #include "flstring.h"

Modified: branches/branch-3.0/src/Fl_Browser_.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Browser_.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Browser_.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,8 +28,8 @@
 #define DISPLAY_SEARCH_BOTH_WAYS_AT_ONCE
 
 #include <stdio.h>
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
 #include <fltk3/Fl_Browser_.H>
 #include <fltk3/fl_draw.H>
 

Modified: branches/branch-3.0/src/Fl_Browser_load.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Browser_load.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Browser_load.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Browser.H>
 #include <stdio.h>
 #include <fltk3/fl_utf8.h>

Modified: branches/branch-3.0/src/Fl_Button.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Button.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Button.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,10 +25,10 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Button.H>
-#include <fltk3/Fl_Group.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Group.h>
+#include <fltk3/Window.h>
 
 // There are a lot of subclasses, named Fl_*_Button.  Some of
 // them are implemented by setting the type() value and testing it

Modified: branches/branch-3.0/src/Fl_Chart.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Chart.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Chart.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
 //
 
 #include <fltk3/math.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Chart.H>
 #include <fltk3/fl_draw.H>
 #include "flstring.h"

Modified: branches/branch-3.0/src/Fl_Check_Button.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Check_Button.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Check_Button.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Check_Button.H>
 
 // TODO Correct incorrect Fl_Check_Button comments.

Modified: branches/branch-3.0/src/Fl_Choice.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Choice.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Choice.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Choice.H>
 #include <fltk3/fl_draw.H>
 #include "flstring.h"

Modified: branches/branch-3.0/src/Fl_Clock.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Clock.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Clock.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Clock.H>
 #include <fltk3/fl_draw.H>
 #include <math.h>

Modified: branches/branch-3.0/src/Fl_Color_Chooser.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Color_Chooser.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Color_Chooser.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Color_Chooser.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
 #include <fltk3/Fl_Box.H>
 #include <fltk3/Fl_Return_Button.H>
 #include <fltk3/fl_draw.H>

Modified: branches/branch-3.0/src/Fl_Counter.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Counter.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Counter.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Counter.H>
 #include <fltk3/fl_draw.H>
 

Modified: branches/branch-3.0/src/Fl_Device.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Device.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Device.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Device.H>
 //#include <fltk3/fl_draw.H>
 #include <fltk3/Fl_Image.H>

Modified: branches/branch-3.0/src/Fl_Dial.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Dial.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Dial.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Dial.H>
 #include <fltk3/fl_draw.H>
 #include <stdlib.h>

Modified: branches/branch-3.0/src/Fl_Double_Window.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Double_Window.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Double_Window.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
 //
 
 #include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Double_Window.H>
 #include <fltk3/x.H>
 #include <fltk3/fl_draw.H>

Modified: branches/branch-3.0/src/Fl_File_Icon.cxx
===================================================================
--- branches/branch-3.0/src/Fl_File_Icon.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_File_Icon.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -56,7 +56,7 @@
 #endif /* WIN32 || __EMX__ */
 
 #include <fltk3/Fl_File_Icon.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/Widget.h>
 #include <fltk3/fl_draw.H>
 #include <fltk3/filename.H>
 

Modified: branches/branch-3.0/src/Fl_File_Icon2.cxx
===================================================================
--- branches/branch-3.0/src/Fl_File_Icon2.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_File_Icon2.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -63,7 +63,7 @@
 
 #include <fltk3/Fl_File_Icon.H>
 #include <fltk3/Fl_Shared_Image.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/Widget.h>
 #include <fltk3/fl_draw.H>
 #include <fltk3/filename.H>
 

Modified: branches/branch-3.0/src/Fl_File_Input.cxx
===================================================================
--- branches/branch-3.0/src/Fl_File_Input.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_File_Input.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,9 +26,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_File_Input.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
 #include <fltk3/fl_draw.H>
 #include <stdio.h>
 #include "flstring.h"

Modified: branches/branch-3.0/src/Fl_Font.H
===================================================================
--- branches/branch-3.0/src/Fl_Font.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Font.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -38,7 +38,7 @@
 #  if USE_XFT
 typedef struct _XftFont XftFont;
 #  elif !defined(WIN32) && !defined(__APPLE__)
-#    include <FL/Xutf8.h>
+#    include <fltk3/Xutf8.h>
 #  endif // USE_XFT
 
 /**

Modified: branches/branch-3.0/src/Fl_GDI_Printer.cxx
===================================================================
--- branches/branch-3.0/src/Fl_GDI_Printer.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_GDI_Printer.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,11 +26,11 @@
 //
 
 #ifdef WIN32
-#include <FL/Fl_Printer.H>
+#include <fltk3/Fl_Printer.H>
 
 
-#include <FL/fl_ask.H>
-#include <FL/math.h>
+#include <fltk3/fl_ask.H>
+#include <fltk3/math.h>
 
 extern HWND fl_window;
 

Modified: branches/branch-3.0/src/Fl_GIF_Image.cxx
===================================================================
--- branches/branch-3.0/src/Fl_GIF_Image.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_GIF_Image.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 // Include necessary header files...
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_GIF_Image.H>
 #include <stdio.h>
 #include <stdlib.h>

Modified: branches/branch-3.0/src/Fl_Gl_Choice.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Gl_Choice.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Gl_Choice.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
 #include <config.h>
 #if HAVE_GL
 
-#  include <fltk3/Fl.H>
+#  include <fltk3/run.h>
 #  include <fltk3/x.H>
 #  include <stdlib.h>
 #  include "Fl_Gl_Choice.H"
@@ -37,7 +37,7 @@
 #  include <fltk3/fl_utf8.h>
 
 #  ifdef __APPLE__
-#    include <fltk3/Fl_Window.H>
+#    include <fltk3/Window.h>
 #    include <Carbon/Carbon.h>
 #  endif
 

Modified: branches/branch-3.0/src/Fl_Gl_Device_Plugin.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Gl_Device_Plugin.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Gl_Device_Plugin.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
 #include <fltk3/Fl_Printer.H>
 #include <fltk3/Fl_Gl_Window.H>
 #include "Fl_Gl_Choice.H"
-#include "fltk3/Fl.H"
+#include "fltk3/run.h"
 #ifndef __APPLE__
 #include "fltk3/fl_draw.H"
 #endif

Modified: branches/branch-3.0/src/Fl_Gl_Overlay.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Gl_Overlay.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Gl_Overlay.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
 #include <config.h>
 #if HAVE_GL
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 #include "Fl_Gl_Choice.H"
 #include <fltk3/Fl_Gl_Window.H>

Modified: branches/branch-3.0/src/Fl_Gl_Window.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Gl_Window.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Gl_Window.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 
 static int temp = fl_gl_load_plugin;
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 #include "Fl_Gl_Choice.H"
 #include <fltk3/Fl_Gl_Window.H>

Modified: branches/branch-3.0/src/Fl_Group.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Group.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Group.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,9 +31,9 @@
 // handling is designed so windows themselves work correctly.
 
 #include <stdio.h>
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Group.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/run.h>
+#include <fltk3/Group.h>
+#include <fltk3/Window.h>
 #include <fltk3/fl_draw.H>
 #include <stdlib.h>
 

Modified: branches/branch-3.0/src/Fl_Help_View.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Help_View.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Help_View.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -56,7 +56,7 @@
 //
 
 #include <fltk3/Fl_Help_View.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
 #include <fltk3/Fl_Pixmap.H>
 #include <fltk3/x.H>
 #include <stdio.h>

Modified: branches/branch-3.0/src/Fl_Image.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Image.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Image.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,10 +25,10 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_draw.H>
 #include <fltk3/x.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/Widget.h>
 #include <fltk3/Fl_Menu_Item.H>
 #include <fltk3/Fl_Image.H>
 #include "flstring.h"

Modified: branches/branch-3.0/src/Fl_Input.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Input.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Input.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -33,8 +33,8 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/run.h>
+#include <fltk3/Window.h>
 #include <fltk3/Fl_Input.H>
 #include <fltk3/fl_draw.H>
 #include <fltk3/fl_ask.H>

Modified: branches/branch-3.0/src/Fl_Input_.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Input_.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Input_.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Input_.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
 #include <fltk3/fl_draw.H>
 #include <fltk3/fl_ask.H>
 #include <math.h>

Modified: branches/branch-3.0/src/Fl_Light_Button.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Light_Button.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Light_Button.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 // The default down_box of zero draws a rectangle designed to look
 // just like Flame's buttons.
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Light_Button.H>
 #include <fltk3/fl_draw.H>
 #include "flstring.h"

Modified: branches/branch-3.0/src/Fl_Menu.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Menu.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Menu.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
 // methods for bringing up popup menu hierarchies without using the
 // Fl_Menu_ widget.
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Menu_Window.H>
 #include <fltk3/Fl_Menu_.H>
 #include <fltk3/fl_draw.H>

Modified: branches/branch-3.0/src/Fl_Menu_.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Menu_.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Menu_.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
 
 // More code in Fl_Menu_add.cxx
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Menu_.H>
 #include "flstring.h"
 #include <stdio.h>

Modified: branches/branch-3.0/src/Fl_Menu_Bar.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Menu_Bar.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Menu_Bar.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Menu_Bar.H>
 #include <fltk3/fl_draw.H>
 

Modified: branches/branch-3.0/src/Fl_Menu_Button.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Menu_Button.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Menu_Button.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Menu_Button.H>
 #include <fltk3/fl_draw.H>
 

Modified: branches/branch-3.0/src/Fl_Menu_Window.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Menu_Window.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Menu_Window.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -33,7 +33,7 @@
 // can be used to dismiss the menus.
 
 #include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 #include <fltk3/fl_draw.H>
 #include <fltk3/Fl_Menu_Window.H>

Modified: branches/branch-3.0/src/Fl_Menu_global.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Menu_global.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Menu_global.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
 // Currently only one menu at a time and you cannot destruct the menu,
 // is this sufficient?
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Menu_.H>
 
 static Fl_Menu_* the_widget;

Modified: branches/branch-3.0/src/Fl_Multi_Label.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Multi_Label.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Multi_Label.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,8 +28,8 @@
 // Allows two labels to be used on a widget (by having one of them
 // be one of these it allows an infinte number!)
 
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
 #include <fltk3/Fl_Menu_Item.H>
 #include <fltk3/Fl_Multi_Label.H>
 

Modified: branches/branch-3.0/src/Fl_Native_File_Chooser_MAC.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Native_File_Chooser_MAC.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Native_File_Chooser_MAC.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -38,7 +38,7 @@
 #include <sys/stat.h>		// stat(2)
 
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Native_File_Chooser.H>
 #include <fltk3/filename.H>
 

Modified: branches/branch-3.0/src/Fl_Native_File_Chooser_WIN32.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Native_File_Chooser_WIN32.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Native_File_Chooser_WIN32.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -39,7 +39,7 @@
 LPCWSTR utf8towchar(const char *in); //MG
 char *wchartoutf8(LPCWSTR in);  //MG
 
-#include <FL/Fl_Native_File_Chooser.H>
+#include <fltk3/Fl_Native_File_Chooser.H>
 
 #define LCURLY_CHR	'{'
 #define RCURLY_CHR	'}'

Modified: branches/branch-3.0/src/Fl_Native_File_Chooser_common.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Native_File_Chooser_common.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Native_File_Chooser_common.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
 //
 
 #include <string.h>
-#include <FL/Enumerations.H>
+#include <fltk3/Enumerations.H>
 
 // COPY A STRING WITH 'new'
 //    Value can be NULL

Modified: branches/branch-3.0/src/Fl_Overlay_Window.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Overlay_Window.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Overlay_Window.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -37,7 +37,7 @@
 // possible, otherwise it just draws in the front buffer.
 
 #include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Overlay_Window.H>
 #include <fltk3/fl_draw.H>
 #include <fltk3/x.H>

Modified: branches/branch-3.0/src/Fl_PNG_Image.cxx
===================================================================
--- branches/branch-3.0/src/Fl_PNG_Image.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_PNG_Image.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
 // Include necessary header files...
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_PNG_Image.H>
 #include <config.h>
 #include <stdio.h>

Modified: branches/branch-3.0/src/Fl_PNM_Image.cxx
===================================================================
--- branches/branch-3.0/src/Fl_PNM_Image.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_PNM_Image.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,7 +34,7 @@
 // Include necessary header files...
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_PNM_Image.H>
 #include <stdio.h>
 #include <stdlib.h>

Modified: branches/branch-3.0/src/Fl_PS_Printer.cxx
===================================================================
--- branches/branch-3.0/src/Fl_PS_Printer.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_PS_Printer.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_ask.H>
 #include <fltk3/fl_draw.H>
 #include <stdio.h>

Modified: branches/branch-3.0/src/Fl_Pack.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Pack.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Pack.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,7 +30,7 @@
 // them on each redraw (only if box() is zero)
 // Bugs: ?
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Pack.H>
 #include <fltk3/fl_draw.H>
 

Modified: branches/branch-3.0/src/Fl_Pixmap.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Pixmap.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Pixmap.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -41,10 +41,10 @@
 // Implemented without using the xpm library (which I can't use because
 // it interferes with the color cube used by fl_draw_image).
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_draw.H>
 #include <fltk3/x.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/Widget.h>
 #include <fltk3/Fl_Menu_Item.H>
 #include <fltk3/Fl_Pixmap.H>
 

Modified: branches/branch-3.0/src/Fl_Positioner.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Positioner.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Positioner.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
 // The positioner widget from Forms, gives 2D input
 // Written by: Mark Overmars
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Positioner.H>
 #include <fltk3/fl_draw.H>
 

Modified: branches/branch-3.0/src/Fl_Preferences.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Preferences.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Preferences.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Preferences.H>
 #include <fltk3/Fl_Plugin.H>
 #include <fltk3/Fl_Tree.H>

Modified: branches/branch-3.0/src/Fl_Progress.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Progress.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Progress.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
 // Include necessary header files...
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Progress.H>
 #include <fltk3/fl_draw.H>
 

Modified: branches/branch-3.0/src/Fl_Quartz_Printer.mm
===================================================================
--- branches/branch-3.0/src/Fl_Quartz_Printer.mm	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Quartz_Printer.mm	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
 #ifdef __APPLE__
 #include <fltk3/Fl_Printer.H>
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_ask.H>
 #include <fltk3/fl_draw.H>
 #import <Cocoa/Cocoa.h>

Modified: branches/branch-3.0/src/Fl_Repeat_Button.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Repeat_Button.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Repeat_Button.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Repeat_Button.H>
 
 #define INITIALREPEAT .5

Modified: branches/branch-3.0/src/Fl_Return_Button.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Return_Button.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Return_Button.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Return_Button.H>
 #include <fltk3/fl_draw.H>
 

Modified: branches/branch-3.0/src/Fl_Roller.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Roller.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Roller.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -27,7 +27,7 @@
 
 // Rapid-App style knob
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Roller.H>
 #include <fltk3/fl_draw.H>
 #include <math.h>

Modified: branches/branch-3.0/src/Fl_Round_Button.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Round_Button.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Round_Button.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
 // circle is smaller than the widget size and can be surrounded by
 // another box type, for compatibility with Forms.
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Round_Button.H>
 
 /**

Modified: branches/branch-3.0/src/Fl_Scroll.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Scroll.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Scroll.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Tiled_Image.H>
 #include <fltk3/Fl_Scroll.H>
 #include <fltk3/fl_draw.H>

Modified: branches/branch-3.0/src/Fl_Scrollbar.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Scrollbar.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Scrollbar.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
 //
 
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Scrollbar.H>
 #include <fltk3/fl_draw.H>
 #include <math.h>

Modified: branches/branch-3.0/src/Fl_Shared_Image.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Shared_Image.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Shared_Image.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,7 +30,7 @@
 #include <fltk3/fl_utf8.h>
 #include "flstring.h"
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Shared_Image.H>
 #include <fltk3/Fl_XBM_Image.H>
 #include <fltk3/Fl_XPM_Image.H>

Modified: branches/branch-3.0/src/Fl_Slider.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Slider.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Slider.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Slider.H>
 #include <fltk3/fl_draw.H>
 #include <math.h>

Modified: branches/branch-3.0/src/Fl_Sys_Menu_Bar.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Sys_Menu_Bar.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Sys_Menu_Bar.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -55,7 +55,7 @@
 #if defined(__APPLE__) || defined(FL_DOXYGEN)
 
 #include <fltk3/x.H>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Sys_Menu_Bar.H>
 
 #include "flstring.h"

Modified: branches/branch-3.0/src/Fl_Table_Row.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Table_Row.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Table_Row.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
 //
 
 #include <stdio.h>		// for debugging
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_draw.H>
 #include <fltk3/Fl_Table_Row.H>
 

Modified: branches/branch-3.0/src/Fl_Tabs.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Tabs.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Tabs.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -33,7 +33,7 @@
 // Clicking the tab makes that card visible.
 
 #include <stdio.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Tabs.H>
 #include <fltk3/fl_draw.H>
 #include <fltk3/Fl_Tooltip.H>

Modified: branches/branch-3.0/src/Fl_Text_Buffer.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Text_Buffer.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Text_Buffer.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,7 +30,7 @@
 #include <fltk3/fl_utf8.h>
 #include "flstring.h"
 #include <ctype.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Text_Buffer.H>
 
 

Modified: branches/branch-3.0/src/Fl_Text_Display.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Text_Display.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Text_Display.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,10 +31,10 @@
 #include "flstring.h"
 #include <limits.h>
 #include <ctype.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Text_Buffer.H>
 #include <fltk3/Fl_Text_Display.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
 
 #undef min
 #undef max

Modified: branches/branch-3.0/src/Fl_Text_Editor.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Text_Editor.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Text_Editor.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,8 +29,8 @@
 #include <stdlib.h>
 #include "flstring.h"
 #include <ctype.h>
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/run.h>
+#include <fltk3/Window.h>
 #include <fltk3/Fl_Text_Editor.H>
 #include <fltk3/fl_ask.H>
 

Modified: branches/branch-3.0/src/Fl_Tile.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Tile.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Tile.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,9 +30,9 @@
 // The size of the first child determines where the resize border is.
 // The resizebox is used to limit where the border can be dragged to.
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Tile.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
 #include <stdlib.h>
 
 // Drag the edges that were initially at oldx,oldy to newx,newy:

Modified: branches/branch-3.0/src/Fl_Tiled_Image.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Tiled_Image.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Tiled_Image.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
 //
 
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Tiled_Image.H>
 #include <fltk3/fl_draw.H>
 

Modified: branches/branch-3.0/src/Fl_Tree_Item.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Tree_Item.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Tree_Item.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -5,7 +5,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/Widget.h>
 #include <fltk3/Fl_Tree_Item.H>
 #include <fltk3/Fl_Tree_Prefs.H>
 

Modified: branches/branch-3.0/src/Fl_Tree_Prefs.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Tree_Prefs.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Tree_Prefs.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -2,7 +2,7 @@
 // "$Id$"
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Pixmap.H>
 #include <fltk3/Fl_Tree_Prefs.H>
 #include <string.h>

Modified: branches/branch-3.0/src/Fl_Valuator.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Valuator.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Valuator.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
 
 // Base class for sliders and all other one-value "knobs"
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Valuator.H>
 #include <fltk3/math.h>
 #include <stdio.h>

Modified: branches/branch-3.0/src/Fl_Value_Input.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Value_Input.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Value_Input.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,9 +29,9 @@
 // Warning: this works by making a child Fl_Input object, even
 // though this object is *not* an fltk3::Group.  May be a kludge?
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Value_Input.H>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/Group.h>
 #include <stdlib.h>
 #include <fltk3/math.h>
 

Modified: branches/branch-3.0/src/Fl_Value_Output.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Value_Output.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Value_Output.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
 // This is much lighter than Fl_Value_Input because it has no text editor
 // If step() is zero then it can be used to display a floating-point value
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Value_Output.H>
 #include <fltk3/fl_draw.H>
 

Modified: branches/branch-3.0/src/Fl_Value_Slider.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Value_Slider.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Value_Slider.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Value_Slider.H>
 #include <fltk3/fl_draw.H>
 #include <math.h>

Modified: branches/branch-3.0/src/Fl_Widget.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Widget.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Widget.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
+#include <fltk3/Group.h>
 #include <fltk3/Fl_Tooltip.H>
 #include <fltk3/fl_draw.H>
 #include <stdlib.h>

Modified: branches/branch-3.0/src/Fl_Window.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Window.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Window.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,9 +30,9 @@
 // crap you need to do to communicate with X is in Fl_x.cxx, the
 // equivalent (but totally different) crap for MSWindows is in Fl_win32.cxx
 #include "config.h"
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
 #include <stdlib.h>
 #include "flstring.h"
 

Modified: branches/branch-3.0/src/Fl_Window_fullscreen.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Window_fullscreen.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Window_fullscreen.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
 // the window full screen will lose the size of the border off the
 // bottom and right.
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 
 #include <config.h>

Modified: branches/branch-3.0/src/Fl_Window_hotspot.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Window_hotspot.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Window_hotspot.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,8 +25,8 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/run.h>
+#include <fltk3/Window.h>
 #include <fltk3/x.H>
 #include <stdio.h>
 

Modified: branches/branch-3.0/src/Fl_Wizard.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Wizard.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Wizard.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -40,7 +40,7 @@
 //
 
 #include <fltk3/Fl_Wizard.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
 #include <fltk3/fl_draw.H>
 
 

Modified: branches/branch-3.0/src/Fl_XBM_Image.cxx
===================================================================
--- branches/branch-3.0/src/Fl_XBM_Image.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_XBM_Image.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -33,7 +33,7 @@
 // Include necessary header files...
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_XBM_Image.H>
 #include <stdio.h>
 #include <stdlib.h>

Modified: branches/branch-3.0/src/Fl_XColor.H
===================================================================
--- branches/branch-3.0/src/Fl_XColor.H	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_XColor.H	2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
 //
 
 #include <config.h>
-#include <FL/Enumerations.H>
+#include <fltk3/Enumerations.H>
 
 // one of these for each color in fltk's "colormap":
 // if overlays are enabled, another one for the overlay

Modified: branches/branch-3.0/src/Fl_XPM_Image.cxx
===================================================================
--- branches/branch-3.0/src/Fl_XPM_Image.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_XPM_Image.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 // Include necessary header files...
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_XPM_Image.H>
 #include <stdio.h>
 #include <stdlib.h>

Modified: branches/branch-3.0/src/Fl_abort.cxx
===================================================================
--- branches/branch-3.0/src/Fl_abort.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_abort.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
 // do not need to be included in Fl.cxx:
 // You can also override this by redefining all of these.
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>

Modified: branches/branch-3.0/src/Fl_add_idle.cxx
===================================================================
--- branches/branch-3.0/src/Fl_add_idle.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_add_idle.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
 // Allows you to manage an arbitrary set of idle() callbacks.
 // Replaces the older set_idle() call (which is used to implement this)
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 
 struct idle_cb {
   void (*cb)(void*);

Modified: branches/branch-3.0/src/Fl_arg.cxx
===================================================================
--- branches/branch-3.0/src/Fl_arg.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_arg.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,9 +28,9 @@
 // OPTIONAL initialization code for a program using fltk.
 // You do not need to call this!  Feel free to make up your own switches.
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
 #include <fltk3/Fl_Tooltip.H>
 #include <fltk3/filename.H>
 #include <fltk3/fl_draw.H>

Modified: branches/branch-3.0/src/Fl_cocoa.mm
===================================================================
--- branches/branch-3.0/src/Fl_cocoa.mm	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_cocoa.mm	2010-03-30 19:10:49 UTC (rev 7368)
@@ -77,9 +77,9 @@
 }
 
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
 #include <fltk3/Fl_Tooltip.H>
 #include <fltk3/Fl_Sys_Menu_Bar.H>
 #include <fltk3/Fl_Printer.H>

Modified: branches/branch-3.0/src/Fl_compose.cxx
===================================================================
--- branches/branch-3.0/src/Fl_compose.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_compose.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 
 //

Modified: branches/branch-3.0/src/Fl_display.cxx
===================================================================
--- branches/branch-3.0/src/Fl_display.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_display.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
 // Startup method to set what display to use.
 // Using setenv makes programs that are exec'd use the same display.
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <stdlib.h>
 #include "flstring.h"
 

Modified: branches/branch-3.0/src/Fl_get_key.cxx
===================================================================
--- branches/branch-3.0/src/Fl_get_key.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_get_key.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
 // keys (mostly) by the X keysym.  So this turns the keysym into a keycode
 // and looks it up in the X key bit vector, which Fl_x.cxx keeps track of.
 
-#  include <fltk3/Fl.H>
+#  include <fltk3/run.h>
 #  include <fltk3/x.H>
 
 extern char fl_key_vector[32]; // in Fl_x.cxx

Modified: branches/branch-3.0/src/Fl_get_key_mac.cxx
===================================================================
--- branches/branch-3.0/src/Fl_get_key_mac.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_get_key_mac.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
 // which are actually X keysyms.  So this has to translate to macOS
 // symbols.
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 #include <config.h>
 

Modified: branches/branch-3.0/src/Fl_get_system_colors.cxx
===================================================================
--- branches/branch-3.0/src/Fl_get_system_colors.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_get_system_colors.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_draw.H>
 #include <fltk3/x.H>
 #include <fltk3/math.h>

Modified: branches/branch-3.0/src/Fl_grab.cxx
===================================================================
--- branches/branch-3.0/src/Fl_grab.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_grab.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
 //
 
 #include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 
 ////////////////////////////////////////////////////////////////

Modified: branches/branch-3.0/src/Fl_lock.cxx
===================================================================
--- branches/branch-3.0/src/Fl_lock.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_lock.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
 //
 
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <config.h>
 
 #include <stdlib.h>

Modified: branches/branch-3.0/src/Fl_mac.cxx
===================================================================
--- branches/branch-3.0/src/Fl_mac.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_mac.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -59,9 +59,9 @@
 }
 
 #include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
 #include <fltk3/Fl_Tooltip.H>
 #include <fltk3/Fl_Sys_Menu_Bar.H>
 #include <stdio.h>

Modified: branches/branch-3.0/src/Fl_own_colormap.cxx
===================================================================
--- branches/branch-3.0/src/Fl_own_colormap.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_own_colormap.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,7 +34,7 @@
 // get huge color changes when switching windows.
 
 #include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 
 /** \fn fltk3::own_colormap()

Modified: branches/branch-3.0/src/Fl_visual.cxx
===================================================================
--- branches/branch-3.0/src/Fl_visual.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_visual.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
 // Set the default visual according to passed switches:
 
 #include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 
 /** \fn  fltk3::visual(int flags)

Modified: branches/branch-3.0/src/Fl_win32.cxx
===================================================================
--- branches/branch-3.0/src/Fl_win32.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_win32.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,10 +30,10 @@
 // for other system-specific code.
 
 #ifndef FL_DOXYGEN
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 #include <fltk3/fl_utf8.h>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
 #include <fltk3/fl_draw.H>
 #include <fltk3/Enumerations.H>
 #include <fltk3/Fl_Tooltip.H>

Modified: branches/branch-3.0/src/Fl_x.cxx
===================================================================
--- branches/branch-3.0/src/Fl_x.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_x.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -36,9 +36,9 @@
 /* #define BACKSPACE_HACK 1 */
 
 #  include <config.h>
-#  include <fltk3/Fl.H>
+#  include <fltk3/run.h>
 #  include <fltk3/x.H>
-#  include <fltk3/Fl_Window.H>
+#  include <fltk3/Window.h>
 #  include <fltk3/fl_utf8.h>
 #  include <fltk3/Fl_Tooltip.H>
 #  include <fltk3/fl_draw.H>

Modified: branches/branch-3.0/src/fl_ask.cxx
===================================================================
--- branches/branch-3.0/src/fl_ask.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_ask.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,14 +34,14 @@
 #include <stdarg.h>
 #include "flstring.h"
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 
 #include <fltk3/fl_ask.H>
 
 #include <fltk3/Fl_Box.H>
 #include <fltk3/Fl_Button.H>
 #include <fltk3/Fl_Return_Button.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
 #include <fltk3/Fl_Input.H>
 #include <fltk3/Fl_Secret_Input.H>
 #include <fltk3/x.H>

Modified: branches/branch-3.0/src/fl_boxtype.cxx
===================================================================
--- branches/branch-3.0/src/fl_boxtype.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_boxtype.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,8 +34,8 @@
 // boxtypes.  Other box types are in separate files so they are not
 // linked in if not used.
 
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
 #include <fltk3/fl_draw.H>
 #include <config.h>
 

Modified: branches/branch-3.0/src/fl_color.cxx
===================================================================
--- branches/branch-3.0/src/fl_color.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_color.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -46,7 +46,7 @@
 // before use.
 
 #  include "Fl_XColor.H"
-#  include <fltk3/Fl.H>
+#  include <fltk3/run.h>
 #  include <fltk3/x.H>
 #  include <fltk3/fl_draw.H>
 

Modified: branches/branch-3.0/src/fl_color_mac.cxx
===================================================================
--- branches/branch-3.0/src/fl_color_mac.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_color_mac.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,7 +34,7 @@
 // matt: Quartz support done
 
 #include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 #include <fltk3/fl_draw.H>
 

Modified: branches/branch-3.0/src/fl_color_win32.cxx
===================================================================
--- branches/branch-3.0/src/fl_color_win32.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_color_win32.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
 // before use.
 
 #include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 #include <fltk3/fl_draw.H>
 

Modified: branches/branch-3.0/src/fl_cursor.cxx
===================================================================
--- branches/branch-3.0/src/fl_cursor.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_cursor.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,8 +31,8 @@
 // This avoids a field in the fltk3::Window, and I suspect is more
 // portable to other systems.
 
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/run.h>
+#include <fltk3/Window.h>
 #include <fltk3/x.H>
 #if !defined(WIN32) && !defined(__APPLE__)
 #  include <X11/cursorfont.h>

Modified: branches/branch-3.0/src/fl_diamond_box.cxx
===================================================================
--- branches/branch-3.0/src/fl_diamond_box.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_diamond_box.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
 
 // The diamond box draws best if the area is square!
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_draw.H>
 
 extern uchar* fl_gray_ramp();

Modified: branches/branch-3.0/src/fl_dnd_mac.cxx
===================================================================
--- branches/branch-3.0/src/fl_dnd_mac.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_dnd_mac.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -27,9 +27,9 @@
 // for other system-specific code.
 
 #include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
 
 // warning: this function is only implemented in Quickdraw. The function
 //          below may not work if FLTK is compiled with Quartz enabled

Modified: branches/branch-3.0/src/fl_dnd_win32.cxx
===================================================================
--- branches/branch-3.0/src/fl_dnd_win32.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_dnd_win32.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,9 +26,9 @@
 // in.  Search other files for "WIN32" or filenames ending in _win32.cxx
 // for other system-specific code.
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
 #include <fltk3/fl_utf8.h>
 #include "flstring.h"
 #include <stdio.h>

Modified: branches/branch-3.0/src/fl_dnd_x.cxx
===================================================================
--- branches/branch-3.0/src/fl_dnd_x.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_dnd_x.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,8 +25,8 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/run.h>
+#include <fltk3/Window.h>
 #include <fltk3/x.H>
 #include "flstring.h"
 

Modified: branches/branch-3.0/src/fl_draw.cxx
===================================================================
--- branches/branch-3.0/src/fl_draw.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_draw.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,7 +34,7 @@
 
 #define min(a,b) ((a)<(b)?(a):(b))
 #include <fltk3/fl_utf8.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_draw.H>
 #include <fltk3/Fl_Image.H>
 

Modified: branches/branch-3.0/src/fl_draw_image.cxx
===================================================================
--- branches/branch-3.0/src/fl_draw_image.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_draw_image.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -59,7 +59,7 @@
 
 ////////////////////////////////////////////////////////////////
 
-#  include <fltk3/Fl.H>
+#  include <fltk3/run.h>
 #  include <fltk3/fl_draw.H>
 #  include <fltk3/x.H>
 #  include "Fl_XColor.H"

Modified: branches/branch-3.0/src/fl_draw_image_mac.cxx
===================================================================
--- branches/branch-3.0/src/fl_draw_image_mac.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_draw_image_mac.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,9 +28,9 @@
 ////////////////////////////////////////////////////////////////
 
 #include <config.h>
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
-#include <FL/x.H>
+#include <fltk3/run.h>
+#include <fltk3/fl_draw.H>
+#include <fltk3/x.H>
 
 #define MAXBUFFER 0x40000 // 256k
 

Modified: branches/branch-3.0/src/fl_draw_image_win32.cxx
===================================================================
--- branches/branch-3.0/src/fl_draw_image_win32.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_draw_image_win32.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -45,9 +45,9 @@
 ////////////////////////////////////////////////////////////////
 
 #include <config.h>
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
-#include <FL/x.H>
+#include <fltk3/run.h>
+#include <fltk3/fl_draw.H>
+#include <fltk3/x.H>
 
 #define MAXBUFFER 0x40000 // 256k
 

Modified: branches/branch-3.0/src/fl_draw_pixmap.cxx
===================================================================
--- branches/branch-3.0/src/fl_draw_pixmap.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_draw_pixmap.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
 // as I want to discourage programs that require support files to work.
 // All data needed by a program ui should be compiled in!!!
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_draw.H>
 #include <fltk3/x.H>
 #include <stdio.h>

Modified: branches/branch-3.0/src/fl_engraved_label.cxx
===================================================================
--- branches/branch-3.0/src/fl_engraved_label.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_engraved_label.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -27,8 +27,8 @@
 
 // Drawing code for XForms style engraved & embossed labels
 
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
 #include <fltk3/fl_draw.H>
 
 // data[] is dx, dy, color triples

Modified: branches/branch-3.0/src/fl_font.cxx
===================================================================
--- branches/branch-3.0/src/fl_font.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_font.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -40,7 +40,7 @@
 
 // Select fonts from the FLTK font table.
 #include "flstring.h"
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_draw.H>
 #include <fltk3/x.H>
 #include "Fl_Font.H"

Modified: branches/branch-3.0/src/fl_gtk.cxx
===================================================================
--- branches/branch-3.0/src/fl_gtk.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_gtk.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 // These box types are in separate files so they are not linked
 // in if not used.
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_draw.H>
 
 extern void fl_internal_boxtype(Fl_Boxtype, Fl_Box_Draw_F*);

Modified: branches/branch-3.0/src/fl_labeltype.cxx
===================================================================
--- branches/branch-3.0/src/fl_labeltype.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_labeltype.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,9 +29,9 @@
 // Other label types (symbols) are in their own source files
 // to avoid linking if not used.
 
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
+#include <fltk3/Group.h>
 #include <fltk3/fl_draw.H>
 #include <fltk3/Fl_Image.H>
 

Modified: branches/branch-3.0/src/fl_line_style.cxx
===================================================================
--- branches/branch-3.0/src/fl_line_style.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_line_style.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,7 +30,7 @@
   \brief Line style drawing utility hiding different platforms.
 */
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_draw.H>
 #include <fltk3/x.H>
 #include "flstring.h"

Modified: branches/branch-3.0/src/fl_oval_box.cxx
===================================================================
--- branches/branch-3.0/src/fl_oval_box.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_oval_box.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
 // Less-used box types are in separate files so they are not linked
 // in if not used.
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_draw.H>
 
 static void fl_oval_flat_box(int x, int y, int w, int h, Fl_Color c) {

Modified: branches/branch-3.0/src/fl_overlay_visual.cxx
===================================================================
--- branches/branch-3.0/src/fl_overlay_visual.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_overlay_visual.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 
 #include <config.h>
 #if HAVE_OVERLAY
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 
 // SERVER_OVERLAY_VISUALS property element:

Modified: branches/branch-3.0/src/fl_plastic.cxx
===================================================================
--- branches/branch-3.0/src/fl_plastic.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_plastic.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
 // These box types are in separate files so they are not linked
 // in if not used.
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_draw.H>
 #include "flstring.h"
 

Modified: branches/branch-3.0/src/fl_read_image.cxx
===================================================================
--- branches/branch-3.0/src/fl_read_image.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_read_image.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
 //
 
 #include <fltk3/x.H>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_draw.H>
 #include "flstring.h"
 

Modified: branches/branch-3.0/src/fl_rect.cxx
===================================================================
--- branches/branch-3.0/src/fl_rect.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_rect.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -36,8 +36,8 @@
 // that minimal update works.
 
 #include <config.h>
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
 #include <fltk3/fl_draw.H>
 #include <fltk3/x.H>
 

Modified: branches/branch-3.0/src/fl_round_box.cxx
===================================================================
--- branches/branch-3.0/src/fl_round_box.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_round_box.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
 // These box types are in separate files so they are not linked
 // in if not used.
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_draw.H>
 
 // A compiler from a certain very large software company will not compile

Modified: branches/branch-3.0/src/fl_rounded_box.cxx
===================================================================
--- branches/branch-3.0/src/fl_rounded_box.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_rounded_box.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_draw.H>
 
 #define RN	5

Modified: branches/branch-3.0/src/fl_scroll_area.cxx
===================================================================
--- branches/branch-3.0/src/fl_scroll_area.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_scroll_area.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,7 +30,7 @@
 // into the drawing area.
 
 #include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 #include <fltk3/fl_draw.H>
 

Modified: branches/branch-3.0/src/fl_set_font.cxx
===================================================================
--- branches/branch-3.0/src/fl_set_font.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_set_font.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
 // Add a font to the internal table.
 // Also see fl_set_fonts.cxx which adds all possible fonts.
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 #include <fltk3/fl_draw.H>
 #include "flstring.h"

Modified: branches/branch-3.0/src/fl_set_fonts.cxx
===================================================================
--- branches/branch-3.0/src/fl_set_fonts.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_set_fonts.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 #include "Fl_Font.H"
 #include "flstring.h"

Modified: branches/branch-3.0/src/fl_shadow_box.cxx
===================================================================
--- branches/branch-3.0/src/fl_shadow_box.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_shadow_box.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_draw.H>
 
 #define BW 3

Modified: branches/branch-3.0/src/fl_shortcut.cxx
===================================================================
--- branches/branch-3.0/src/fl_shortcut.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_shortcut.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -41,8 +41,8 @@
 // This allows punctuation shortcuts like "#" to work (rather than
 // calling it "shift+3" on a US keyboard)
 
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
 #include <fltk3/Fl_Button.H>
 #include <fltk3/fl_draw.H>
 #include <ctype.h>

Modified: branches/branch-3.0/src/fl_show_colormap.cxx
===================================================================
--- branches/branch-3.0/src/fl_show_colormap.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_show_colormap.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Single_Window.H>
 #include <fltk3/fl_draw.H>
 #include <fltk3/fl_show_colormap.H>

Modified: branches/branch-3.0/src/fl_symbols.cxx
===================================================================
--- branches/branch-3.0/src/fl_symbols.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_symbols.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,7 +34,7 @@
 // Version 2.1 a
 // Date: Oct  2, 1992
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/fl_draw.H>
 #include <fltk3/math.h>
 #include "flstring.h"

Modified: branches/branch-3.0/src/fl_vertex.cxx
===================================================================
--- branches/branch-3.0/src/fl_vertex.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_vertex.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -40,7 +40,7 @@
 #include <config.h>
 #include <fltk3/fl_draw.H>
 #include <fltk3/x.H>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/math.h>
 #include <stdlib.h>
 

Modified: branches/branch-3.0/src/flstring.h
===================================================================
--- branches/branch-3.0/src/flstring.h	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/flstring.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
 #ifndef flstring_h
 #  define flstring_h
 
-#  include <FL/Fl_Export.H>
+#  include <fltk3/Fl_Export.H>
 #  include <config.h>
 #  include <stdio.h>
 #  include <stdarg.h>

Modified: branches/branch-3.0/src/forms_free.cxx
===================================================================
--- branches/branch-3.0/src/forms_free.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/forms_free.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,7 +30,7 @@
 // me to port several other programs, but it is in no way
 // complete.
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Free.H>
 
 void Fl_Free::step(void *v) {

Modified: branches/branch-3.0/src/forms_timer.cxx
===================================================================
--- branches/branch-3.0/src/forms_timer.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/forms_timer.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
 // You don't want to use this if you just want a timeout, call
 // fltk3::add_timeout directly!
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Timer.H>
 #include <fltk3/fl_draw.H>
 #ifdef WIN32

Modified: branches/branch-3.0/src/gl_draw.cxx
===================================================================
--- branches/branch-3.0/src/gl_draw.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/gl_draw.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
 #include "flstring.h"
 #if HAVE_GL
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/gl.h>
 #include <fltk3/x.H>
 #include <fltk3/fl_draw.H>

Modified: branches/branch-3.0/src/gl_start.cxx
===================================================================
--- branches/branch-3.0/src/gl_start.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/gl_start.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -40,8 +40,8 @@
 #include <config.h>
 #if HAVE_GL
 
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/run.h>
+#include <fltk3/Window.h>
 #include <fltk3/x.H>
 #include <fltk3/fl_draw.H>
 #include "Fl_Gl_Choice.H"

Modified: branches/branch-3.0/src/print_panel.h
===================================================================
--- branches/branch-3.0/src/print_panel.h	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/print_panel.h	2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,9 +32,9 @@
 
 #ifndef print_panel_h
 #define print_panel_h
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Double_Window.H>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/Group.h>
 #include <fltk3/Fl_Choice.H>
 #include <fltk3/Fl_Button.H>
 #include <fltk3/Fl_Box.H>

Modified: branches/branch-3.0/src/ps_image.cxx
===================================================================
--- branches/branch-3.0/src/ps_image.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/ps_image.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,7 +30,7 @@
 #include <string.h>
 
 #include <fltk3/Fl_PSfile_Device.H>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/Fl_Pixmap.H>
 #include <fltk3/Fl_Bitmap.H>
  

Modified: branches/branch-3.0/src/scandir_win32.c
===================================================================
--- branches/branch-3.0/src/scandir_win32.c	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/scandir_win32.c	2010-03-30 19:10:49 UTC (rev 7368)
@@ -27,8 +27,8 @@
 
 #ifndef __CYGWIN__
 /* Emulation of posix scandir() call */
-#include <FL/fl_utf8.h>
-#include <FL/filename.H>
+#include <fltk3/fl_utf8.h>
+#include <fltk3/filename.H>
 #include "flstring.h"
 #include <windows.h>
 #include <stdlib.h>

Modified: branches/branch-3.0/src/screen_xywh.cxx
===================================================================
--- branches/branch-3.0/src/screen_xywh.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/screen_xywh.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
 //
 
 
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
 #include <fltk3/x.H>
 #include <config.h>
 

Modified: branches/branch-3.0/src/xutf8/keysym2Ucs.c
===================================================================
--- branches/branch-3.0/src/xutf8/keysym2Ucs.c	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/xutf8/keysym2Ucs.c	2010-03-30 19:10:49 UTC (rev 7368)
@@ -27,7 +27,7 @@
 
 #if !defined(WIN32) && !defined(__APPLE__)
 
-#include "../../FL/Xutf8.h"
+#include "../../fltk3/Xutf8.h"
 #include "imKStoUCS.c"
 
 long XKeysymToUcs(KeySym keysym) {

Modified: branches/branch-3.0/src/xutf8/utf8Input.c
===================================================================
--- branches/branch-3.0/src/xutf8/utf8Input.c	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/xutf8/utf8Input.c	2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
 #if !defined(WIN32) && !defined(__APPLE__)
 
 #include "config.h"
-#include "../../FL/Xutf8.h"
+#include "../../fltk3/Xutf8.h"
 #include <X11/X.h>
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>

Modified: branches/branch-3.0/src/xutf8/utf8Utils.c
===================================================================
--- branches/branch-3.0/src/xutf8/utf8Utils.c	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/xutf8/utf8Utils.c	2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
 
 #if !defined(WIN32) && !defined(__APPLE__)
 
-#include "../../FL/Xutf8.h"
+#include "../../fltk3/Xutf8.h"
 
 /*** NOTE : all functions are LIMITED to 24 bits Unicode values !!! ***/
 

Modified: branches/branch-3.0/src/xutf8/utf8Wrap.c
===================================================================
--- branches/branch-3.0/src/xutf8/utf8Wrap.c	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/xutf8/utf8Wrap.c	2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
  */
 #if !defined(WIN32) && !defined(__APPLE__)
 
-#include "../../FL/Xutf8.h"
+#include "../../fltk3/Xutf8.h"
 #include <X11/Xlib.h>
 #include <ctype.h>
 #include <stdlib.h>

Modified: branches/branch-3.0/test/hello.cxx
===================================================================
--- branches/branch-3.0/test/hello.cxx	2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/test/hello.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -3,7 +3,7 @@
 //
 // Hello, World! program for the Fast Light Tool Kit (FLTK).
 //
-// Copyright 1998-2009 by Bill Spitzak and others.
+// Copyright 1998-2010 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
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Window.H>
-#include <fltk3/Fl_Box.H>
+#include <fltk3/run.h>
+#include <fltk3/Window.h>
+#include <fltk3/Widget.h>
 
 using namespace fltk3;
 

Added: branches/branch-3.0/test/hello1.cxx
===================================================================
--- branches/branch-3.0/test/hello1.cxx	                        (rev 0)
+++ branches/branch-3.0/test/hello1.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,46 @@
+//
+// "$Id: hello.cxx 6615 2009-01-01 16:35:13Z matt $"
+//
+// Hello, World! program for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2010 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 on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+#include <FL/Fl.H>
+#include <FL/Fl_Window.H>
+#include <FL/Fl_Box.H>
+
+int main(int argc, char **argv) {
+  Fl_Window *window = new Fl_Window(300,180);
+  Fl_Box *box = new Fl_Box(FL_UP_BOX,20,40,260,100,"Hello, World!");
+  box->labelfont(FL_BOLD+FL_ITALIC);
+  box->labelsize(36);
+  box->labeltype(FL_SHADOW_LABEL);
+  window->end();
+  window->show(argc, argv);
+  return Fl::run();
+}
+
+//
+// End of "$Id: hello.cxx 6615 2009-01-01 16:35:13Z matt $".
+//
+

Added: branches/branch-3.0/test/hello2.cxx
===================================================================
--- branches/branch-3.0/test/hello2.cxx	                        (rev 0)
+++ branches/branch-3.0/test/hello2.cxx	2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,19 @@
+// hello.cxx (example1)
+
+#include <fltk/Window.h>
+#include <fltk/Widget.h>
+#include <fltk/run.h>
+using namespace fltk;
+
+int main(int argc, char **argv) {
+  Window *window = new Window(300, 180);
+  window->begin();
+  Widget *box = new Widget(20, 40, 260, 100, "Hello, World!");
+  box->box(UP_BOX);
+  box->labelfont(HELVETICA_BOLD_ITALIC);
+  box->labelsize(36);
+  box->labeltype(SHADOW_LABEL);
+  window->end();
+  window->show(argc, argv);
+  return run();
+}

Direct Link to Message ]
 
     
Previous Message ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.