FLTK logo

[Library] r8227 - in branches/branch-3.0-2011: . FL fltk fltk/compat fltk/compat/FL fltk3 fluid2 ide/Xcode3/FLTK.xcodeproj src src/xutf8 test test2 test2/images test2/plugins

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] r8227 - in branches/branch-3.0-2011: . FL fltk fltk/compat fltk/compat/FL fltk3 fluid2 ide/Xcode3/FLTK.xcodeproj src src/xutf8 test test2 test2/images test2/plugins fltk-dev Jan 09, 2011  
 
Author: matt
Date: 2011-01-09 06:38:38 -0800 (Sun, 09 Jan 2011)
New Revision: 8227
Log:
Highly experimental attempt at systematically creating FLTK 3

Added:
   branches/branch-3.0-2011/fltk/
   branches/branch-3.0-2011/fltk/Adjuster.h
   branches/branch-3.0-2011/fltk/AlignGroup.h
   branches/branch-3.0-2011/fltk/AnsiWidget.h
   branches/branch-3.0-2011/fltk/BarGroup.h
   branches/branch-3.0-2011/fltk/Box.h
   branches/branch-3.0-2011/fltk/Browser.h
   branches/branch-3.0-2011/fltk/Button.h
   branches/branch-3.0-2011/fltk/CheckButton.h
   branches/branch-3.0-2011/fltk/Choice.h
   branches/branch-3.0-2011/fltk/Clock.h
   branches/branch-3.0-2011/fltk/Color.h
   branches/branch-3.0-2011/fltk/ColorChooser.h
   branches/branch-3.0-2011/fltk/ComboBox.h
   branches/branch-3.0-2011/fltk/Cursor.h
   branches/branch-3.0-2011/fltk/CycleButton.h
   branches/branch-3.0-2011/fltk/Dial.h
   branches/branch-3.0-2011/fltk/Divider.h
   branches/branch-3.0-2011/fltk/DoubleBufferWindow.h
   branches/branch-3.0-2011/fltk/FL_API.h
   branches/branch-3.0-2011/fltk/FL_VERSION.h
   branches/branch-3.0-2011/fltk/FileBrowser.h
   branches/branch-3.0-2011/fltk/FileChooser.h
   branches/branch-3.0-2011/fltk/FileIcon.h
   branches/branch-3.0-2011/fltk/FileInput.h
   branches/branch-3.0-2011/fltk/FillDial.h
   branches/branch-3.0-2011/fltk/FillSlider.h
   branches/branch-3.0-2011/fltk/Flags.h
   branches/branch-3.0-2011/fltk/FloatInput.h
   branches/branch-3.0-2011/fltk/Font.h
   branches/branch-3.0-2011/fltk/GlWindow.h
   branches/branch-3.0-2011/fltk/Group.h
   branches/branch-3.0-2011/fltk/HelpDialog.h
   branches/branch-3.0-2011/fltk/HelpView.h
   branches/branch-3.0-2011/fltk/HighlightButton.h
   branches/branch-3.0-2011/fltk/Image.h
   branches/branch-3.0-2011/fltk/Input.h
   branches/branch-3.0-2011/fltk/InputBrowser.h
   branches/branch-3.0-2011/fltk/IntInput.h
   branches/branch-3.0-2011/fltk/InvisibleBox.h
   branches/branch-3.0-2011/fltk/Item.h
   branches/branch-3.0-2011/fltk/ItemGroup.h
   branches/branch-3.0-2011/fltk/LabelType.h
   branches/branch-3.0-2011/fltk/LightButton.h
   branches/branch-3.0-2011/fltk/LineDial.h
   branches/branch-3.0-2011/fltk/Menu.h
   branches/branch-3.0-2011/fltk/MenuBar.h
   branches/branch-3.0-2011/fltk/MenuBuild.h
   branches/branch-3.0-2011/fltk/MenuWindow.h
   branches/branch-3.0-2011/fltk/Monitor.h
   branches/branch-3.0-2011/fltk/MultiBrowser.h
   branches/branch-3.0-2011/fltk/MultiImage.h
   branches/branch-3.0-2011/fltk/MultiLineInput.h
   branches/branch-3.0-2011/fltk/MultiLineOutput.h
   branches/branch-3.0-2011/fltk/NumericInput.h
   branches/branch-3.0-2011/fltk/Output.h
   branches/branch-3.0-2011/fltk/PackedGroup.h
   branches/branch-3.0-2011/fltk/PixelType.h
   branches/branch-3.0-2011/fltk/PopupMenu.h
   branches/branch-3.0-2011/fltk/Preferences.h
   branches/branch-3.0-2011/fltk/ProgressBar.h
   branches/branch-3.0-2011/fltk/README
   branches/branch-3.0-2011/fltk/RadioButton.h
   branches/branch-3.0-2011/fltk/RadioItem.h
   branches/branch-3.0-2011/fltk/RadioLightButton.h
   branches/branch-3.0-2011/fltk/Rectangle.h
   branches/branch-3.0-2011/fltk/RepeatButton.h
   branches/branch-3.0-2011/fltk/ReturnButton.h
   branches/branch-3.0-2011/fltk/ScrollGroup.h
   branches/branch-3.0-2011/fltk/Scrollbar.h
   branches/branch-3.0-2011/fltk/SecretInput.h
   branches/branch-3.0-2011/fltk/ShapedWindow.h
   branches/branch-3.0-2011/fltk/SharedImage.h
   branches/branch-3.0-2011/fltk/Slider.h
   branches/branch-3.0-2011/fltk/StatusBarGroup.h
   branches/branch-3.0-2011/fltk/StringList.h
   branches/branch-3.0-2011/fltk/Style.h
   branches/branch-3.0-2011/fltk/StyleSet.h
   branches/branch-3.0-2011/fltk/Symbol.h
   branches/branch-3.0-2011/fltk/SystemMenuBar.h
   branches/branch-3.0-2011/fltk/TabGroup.h
   branches/branch-3.0-2011/fltk/TextBuffer.h
   branches/branch-3.0-2011/fltk/TextDisplay.h
   branches/branch-3.0-2011/fltk/TextEditor.h
   branches/branch-3.0-2011/fltk/Threads.h
   branches/branch-3.0-2011/fltk/ThumbWheel.h
   branches/branch-3.0-2011/fltk/TiledGroup.h
   branches/branch-3.0-2011/fltk/TiledImage.h
   branches/branch-3.0-2011/fltk/ToggleButton.h
   branches/branch-3.0-2011/fltk/ToggleItem.h
   branches/branch-3.0-2011/fltk/Tooltip.h
   branches/branch-3.0-2011/fltk/Valuator.h
   branches/branch-3.0-2011/fltk/ValueInput.h
   branches/branch-3.0-2011/fltk/ValueOutput.h
   branches/branch-3.0-2011/fltk/ValueSlider.h
   branches/branch-3.0-2011/fltk/Widget.h
   branches/branch-3.0-2011/fltk/WidgetAssociation.h
   branches/branch-3.0-2011/fltk/Window.h
   branches/branch-3.0-2011/fltk/WizardGroup.h
   branches/branch-3.0-2011/fltk/WordwrapInput.h
   branches/branch-3.0-2011/fltk/WordwrapOutput.h
   branches/branch-3.0-2011/fltk/ask.h
   branches/branch-3.0-2011/fltk/compat/
   branches/branch-3.0-2011/fltk/compat/FL/
   branches/branch-3.0-2011/fltk/compat/FL/Enumerations.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Adjuster.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Box.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Browser.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Button.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Chart.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Check_Button.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Choice.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Clock.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Color_Chooser.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Counter.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Dial.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Double_Window.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_File_Chooser.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Gl_Window.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Group.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Hold_Browser.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Hor_Slider.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Hor_Value_Slider.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Input.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Int_Input.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Light_Button.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Menu_.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Menu_Bar.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Menu_Button.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Menu_Item.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Output.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Overlay_Window.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Pack.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Pixmap.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Return_Button.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Roller.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Scroll.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Scrollbar.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Select_Browser.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Shared_Image.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Single_Window.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Slider.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Tabs.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Text_Buffer.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Text_Editor.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Tile.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Toggle_Button.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Toggle_Light_Button.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Valuator.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Value_Input.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Value_Output.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Value_Slider.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Widget.H
   branches/branch-3.0-2011/fltk/compat/FL/Fl_Window.H
   branches/branch-3.0-2011/fltk/compat/FL/README
   branches/branch-3.0-2011/fltk/compat/FL/filename.H
   branches/branch-3.0-2011/fltk/compat/FL/fl_ask.H
   branches/branch-3.0-2011/fltk/compat/FL/fl_draw.H
   branches/branch-3.0-2011/fltk/compat/FL/fl_message.H
   branches/branch-3.0-2011/fltk/compat/FL/forms.H
   branches/branch-3.0-2011/fltk/compat/FL/gl.h
   branches/branch-3.0-2011/fltk/compat/FL/glut.H
   branches/branch-3.0-2011/fltk/compat/FL/math.h
   branches/branch-3.0-2011/fltk/compat/FL/menubar.h
   branches/branch-3.0-2011/fltk/compat/FL/x.H
   branches/branch-3.0-2011/fltk/damage.h
   branches/branch-3.0-2011/fltk/dirent.h
   branches/branch-3.0-2011/fltk/draw.h
   branches/branch-3.0-2011/fltk/error.h
   branches/branch-3.0-2011/fltk/events.h
   branches/branch-3.0-2011/fltk/file_chooser.h
   branches/branch-3.0-2011/fltk/filename.h
   branches/branch-3.0-2011/fltk/fltk_cairo.h
   branches/branch-3.0-2011/fltk/forms.h
   branches/branch-3.0-2011/fltk/gl.h
   branches/branch-3.0-2011/fltk/gl2opengl.h
   branches/branch-3.0-2011/fltk/glut.h
   branches/branch-3.0-2011/fltk/layout.h
   branches/branch-3.0-2011/fltk/load_plugin.h
   branches/branch-3.0-2011/fltk/mac.r
   branches/branch-3.0-2011/fltk/math.h
   branches/branch-3.0-2011/fltk/osx.h
   branches/branch-3.0-2011/fltk/pnmImage.h
   branches/branch-3.0-2011/fltk/rgbImage.h
   branches/branch-3.0-2011/fltk/run.h
   branches/branch-3.0-2011/fltk/show_colormap.h
   branches/branch-3.0-2011/fltk/string.h
   branches/branch-3.0-2011/fltk/string.h.in
   branches/branch-3.0-2011/fltk/utf.h
   branches/branch-3.0-2011/fltk/visual.h
   branches/branch-3.0-2011/fltk/win32.h
   branches/branch-3.0-2011/fltk/x.h
   branches/branch-3.0-2011/fltk/x11.h
   branches/branch-3.0-2011/fltk/xbmImage.h
   branches/branch-3.0-2011/fltk/xpmImage.h
   branches/branch-3.0-2011/fltk3/
   branches/branch-3.0-2011/fluid1/
   branches/branch-3.0-2011/fluid2/
   branches/branch-3.0-2011/fluid2/CodeEditor.cxx
   branches/branch-3.0-2011/fluid2/CodeEditor.h
   branches/branch-3.0-2011/fluid2/Enumeration.cxx
   branches/branch-3.0-2011/fluid2/Enumeration.h
   branches/branch-3.0-2011/fluid2/FluidType.cxx
   branches/branch-3.0-2011/fluid2/FluidType.h
   branches/branch-3.0-2011/fluid2/Fluid_Image.cxx
   branches/branch-3.0-2011/fluid2/Fluid_Image.h
   branches/branch-3.0-2011/fluid2/Fluid_Plugins.cxx
   branches/branch-3.0-2011/fluid2/Fluid_Plugins.h
   branches/branch-3.0-2011/fluid2/FunctionType.cxx
   branches/branch-3.0-2011/fluid2/FunctionType.h
   branches/branch-3.0-2011/fluid2/GroupType.cxx
   branches/branch-3.0-2011/fluid2/GroupType.h
   branches/branch-3.0-2011/fluid2/Makefile
   branches/branch-3.0-2011/fluid2/MenuType.cxx
   branches/branch-3.0-2011/fluid2/PrefsData.h
   branches/branch-3.0-2011/fluid2/Shortcut_Button.h
   branches/branch-3.0-2011/fluid2/WidgetClassType.cxx
   branches/branch-3.0-2011/fluid2/WidgetClassType.h
   branches/branch-3.0-2011/fluid2/WidgetType.cxx
   branches/branch-3.0-2011/fluid2/WidgetType.h
   branches/branch-3.0-2011/fluid2/Widget_Types.h
   branches/branch-3.0-2011/fluid2/WindowType.cxx
   branches/branch-3.0-2011/fluid2/WindowType.h
   branches/branch-3.0-2011/fluid2/about_panel.cxx
   branches/branch-3.0-2011/fluid2/about_panel.fl
   branches/branch-3.0-2011/fluid2/about_panel.h
   branches/branch-3.0-2011/fluid2/align_widget.cxx
   branches/branch-3.0-2011/fluid2/alignment_panel.cxx
   branches/branch-3.0-2011/fluid2/alignment_panel.fl
   branches/branch-3.0-2011/fluid2/alignment_panel.h
   branches/branch-3.0-2011/fluid2/clean.sed
   branches/branch-3.0-2011/fluid2/clean.sh
   branches/branch-3.0-2011/fluid2/code.cxx
   branches/branch-3.0-2011/fluid2/coding_style.cxx
   branches/branch-3.0-2011/fluid2/coding_style.fl
   branches/branch-3.0-2011/fluid2/coding_style.h
   branches/branch-3.0-2011/fluid2/coding_style_func.cxx
   branches/branch-3.0-2011/fluid2/comments.h
   branches/branch-3.0-2011/fluid2/dll.sed
   branches/branch-3.0-2011/fluid2/dll.sh
   branches/branch-3.0-2011/fluid2/factory.cxx
   branches/branch-3.0-2011/fluid2/file.cxx
   branches/branch-3.0-2011/fluid2/fluid.cxx
   branches/branch-3.0-2011/fluid2/fluid_img.cxx
   branches/branch-3.0-2011/fluid2/fluid_img.h
   branches/branch-3.0-2011/fluid2/fluid_menus.cxx
   branches/branch-3.0-2011/fluid2/fluid_menus.h
   branches/branch-3.0-2011/fluid2/function_panel.cxx
   branches/branch-3.0-2011/fluid2/function_panel.fl
   branches/branch-3.0-2011/fluid2/function_panel.h
   branches/branch-3.0-2011/fluid2/image_file_panel.cxx
   branches/branch-3.0-2011/fluid2/image_file_panel.fl
   branches/branch-3.0-2011/fluid2/image_file_panel.h
   branches/branch-3.0-2011/fluid2/makedepend
   branches/branch-3.0-2011/fluid2/template_panel.cxx
   branches/branch-3.0-2011/fluid2/template_panel.fl
   branches/branch-3.0-2011/fluid2/template_panel.h
   branches/branch-3.0-2011/fluid2/undo.cxx
   branches/branch-3.0-2011/fluid2/undo.h
   branches/branch-3.0-2011/fluid2/widget_panel.cxx
   branches/branch-3.0-2011/fluid2/widget_panel.fl
   branches/branch-3.0-2011/fluid2/widget_panel.h
   branches/branch-3.0-2011/test1/
   branches/branch-3.0-2011/test2/
   branches/branch-3.0-2011/test2/CubeMain.cxx
   branches/branch-3.0-2011/test2/CubeView.cxx
   branches/branch-3.0-2011/test2/CubeView.h
   branches/branch-3.0-2011/test2/CubeViewUI.cxx
   branches/branch-3.0-2011/test2/CubeViewUI.fl
   branches/branch-3.0-2011/test2/CubeViewUI.h
   branches/branch-3.0-2011/test2/Fl_Multi_Image.cxx
   branches/branch-3.0-2011/test2/Makefile
   branches/branch-3.0-2011/test2/Makefile~
   branches/branch-3.0-2011/test2/README
   branches/branch-3.0-2011/test2/adjuster.cxx
   branches/branch-3.0-2011/test2/ansiwidget.cxx
   branches/branch-3.0-2011/test2/arc.cxx
   branches/branch-3.0-2011/test2/ask.cxx
   branches/branch-3.0-2011/test2/bitmap.cxx
   branches/branch-3.0-2011/test2/black_1.xbm
   branches/branch-3.0-2011/test2/black_2.xbm
   branches/branch-3.0-2011/test2/black_3.xbm
   branches/branch-3.0-2011/test2/black_4.xbm
   branches/branch-3.0-2011/test2/blackking_1.xbm
   branches/branch-3.0-2011/test2/blackking_2.xbm
   branches/branch-3.0-2011/test2/blackking_3.xbm
   branches/branch-3.0-2011/test2/blackking_4.xbm
   branches/branch-3.0-2011/test2/boxtype.cxx
   branches/branch-3.0-2011/test2/browser.cxx
   branches/branch-3.0-2011/test2/browserop.cxx
   branches/branch-3.0-2011/test2/button.cxx
   branches/branch-3.0-2011/test2/buttons.cxx
   branches/branch-3.0-2011/test2/cairo.cxx
   branches/branch-3.0-2011/test2/callbacks.cxx
   branches/branch-3.0-2011/test2/checkers.cxx
   branches/branch-3.0-2011/test2/circle.xbm
   branches/branch-3.0-2011/test2/classes.cxx
   branches/branch-3.0-2011/test2/clock.cxx
   branches/branch-3.0-2011/test2/color_chooser.cxx
   branches/branch-3.0-2011/test2/connect.cxx
   branches/branch-3.0-2011/test2/cube.cxx
   branches/branch-3.0-2011/test2/cursor.cxx
   branches/branch-3.0-2011/test2/curve.cxx
   branches/branch-3.0-2011/test2/demo.cxx
   branches/branch-3.0-2011/test2/demo.menu
   branches/branch-3.0-2011/test2/dnd.cxx
   branches/branch-3.0-2011/test2/doublebuffer.cxx
   branches/branch-3.0-2011/test2/drawing.cxx
   branches/branch-3.0-2011/test2/drawtiming.cxx
   branches/branch-3.0-2011/test2/editor.cxx
   branches/branch-3.0-2011/test2/escherknot.xbm
   branches/branch-3.0-2011/test2/exception.cxx
   branches/branch-3.0-2011/test2/fast_slow.cxx
   branches/branch-3.0-2011/test2/fast_slow.fl
   branches/branch-3.0-2011/test2/fast_slow.h
   branches/branch-3.0-2011/test2/file_chooser.cxx
   branches/branch-3.0-2011/test2/fl_jpeg_image.cxx
   branches/branch-3.0-2011/test2/fltk_scheme.cxx
   branches/branch-3.0-2011/test2/fltkrc
   branches/branch-3.0-2011/test2/fonts.cxx
   branches/branch-3.0-2011/test2/fractals.cxx
   branches/branch-3.0-2011/test2/fracviewer.cxx
   branches/branch-3.0-2011/test2/fracviewer.h
   branches/branch-3.0-2011/test2/fromdos.c
   branches/branch-3.0-2011/test2/fullscreen.cxx
   branches/branch-3.0-2011/test2/gl_overlay.cxx
   branches/branch-3.0-2011/test2/glpuzzle.cxx
   branches/branch-3.0-2011/test2/hello.cxx
   branches/branch-3.0-2011/test2/helloask.cxx
   branches/branch-3.0-2011/test2/help.cxx
   branches/branch-3.0-2011/test2/iconize.cxx
   branches/branch-3.0-2011/test2/image.cxx
   branches/branch-3.0-2011/test2/image_file.cxx
   branches/branch-3.0-2011/test2/image_file.fl
   branches/branch-3.0-2011/test2/image_file.h
   branches/branch-3.0-2011/test2/image_transform.cxx
   branches/branch-3.0-2011/test2/images/
   branches/branch-3.0-2011/test2/images/bg.jpeg
   branches/branch-3.0-2011/test2/images/bg2.jpeg
   branches/branch-3.0-2011/test2/images/coucou.gif
   branches/branch-3.0-2011/test2/images/coucou.png
   branches/branch-3.0-2011/test2/images/coucou.xpm
   branches/branch-3.0-2011/test2/images/testimg.jpg
   branches/branch-3.0-2011/test2/images/ulon.bmp
   branches/branch-3.0-2011/test2/inactive.cxx
   branches/branch-3.0-2011/test2/inactive.h
   branches/branch-3.0-2011/test2/input.cxx
   branches/branch-3.0-2011/test2/jpeg_image.cxx
   branches/branch-3.0-2011/test2/keyboard.cxx
   branches/branch-3.0-2011/test2/keyboard_ui.cxx
   branches/branch-3.0-2011/test2/keyboard_ui.fl
   branches/branch-3.0-2011/test2/keyboard_ui.h
   branches/branch-3.0-2011/test2/label.cxx
   branches/branch-3.0-2011/test2/layout.cxx
   branches/branch-3.0-2011/test2/line_style.cxx
   branches/branch-3.0-2011/test2/linetype.cxx
   branches/branch-3.0-2011/test2/list.cxx
   branches/branch-3.0-2011/test2/list_visuals.cxx
   branches/branch-3.0-2011/test2/makedepend
   branches/branch-3.0-2011/test2/mandelbrot.cxx
   branches/branch-3.0-2011/test2/mandelbrot.h
   branches/branch-3.0-2011/test2/mandelbrot_ui.cxx
   branches/branch-3.0-2011/test2/mandelbrot_ui.fl
   branches/branch-3.0-2011/test2/mandelbrot_ui.h
   branches/branch-3.0-2011/test2/menu.cxx
   branches/branch-3.0-2011/test2/menubar.cxx
   branches/branch-3.0-2011/test2/message.cxx
   branches/branch-3.0-2011/test2/monitors.cxx
   branches/branch-3.0-2011/test2/navigation.cxx
   branches/branch-3.0-2011/test2/output.cxx
   branches/branch-3.0-2011/test2/overlay.cxx
   branches/branch-3.0-2011/test2/pack.cxx
   branches/branch-3.0-2011/test2/pixmap.cxx
   branches/branch-3.0-2011/test2/pixmap_browser.cxx
   branches/branch-3.0-2011/test2/plugins/
   branches/branch-3.0-2011/test2/plugins/Fl_NSlider.H
   branches/branch-3.0-2011/test2/plugins/Fl_NSlider.cxx
   branches/branch-3.0-2011/test2/plugins/Fl_Pix_Box.H
   branches/branch-3.0-2011/test2/plugins/Fl_Pix_Box.cxx
   branches/branch-3.0-2011/test2/plugins/Fl_Pix_Button.H
   branches/branch-3.0-2011/test2/plugins/Fl_Pix_Button.cxx
   branches/branch-3.0-2011/test2/plugins/Makefile
   branches/branch-3.0-2011/test2/plugins/essai.fl
   branches/branch-3.0-2011/test2/plugins/essai_panel.cxx
   branches/branch-3.0-2011/test2/plugins/essai_panel.fl
   branches/branch-3.0-2011/test2/plugins/essai_panel.h
   branches/branch-3.0-2011/test2/plugins/essai_plugin.cxx
   branches/branch-3.0-2011/test2/plugins/pause_buttons256.xpm
   branches/branch-3.0-2011/test2/plugins/play_buttons256.xpm
   branches/branch-3.0-2011/test2/porsche.xpm
   branches/branch-3.0-2011/test2/porsche1.xpm
   branches/branch-3.0-2011/test2/progress.cxx
   branches/branch-3.0-2011/test2/qubix.cxx
   branches/branch-3.0-2011/test2/radio.cxx
   branches/branch-3.0-2011/test2/radio.fl
   branches/branch-3.0-2011/test2/radio.h
   branches/branch-3.0-2011/test2/resizable.cxx
   branches/branch-3.0-2011/test2/resizable.fl
   branches/branch-3.0-2011/test2/resizable.h
   branches/branch-3.0-2011/test2/resize.cxx
   branches/branch-3.0-2011/test2/resize.fl
   branches/branch-3.0-2011/test2/resize.h
   branches/branch-3.0-2011/test2/resizealign.cxx
   branches/branch-3.0-2011/test2/scroll.cxx
   branches/branch-3.0-2011/test2/shape.cxx
   branches/branch-3.0-2011/test2/shiny.cxx
   branches/branch-3.0-2011/test2/size_range.cxx
   branches/branch-3.0-2011/test2/size_range.h
   branches/branch-3.0-2011/test2/sizes.cxx
   branches/branch-3.0-2011/test2/sorceress.xbm
   branches/branch-3.0-2011/test2/subwindow.cxx
   branches/branch-3.0-2011/test2/symbols.cxx
   branches/branch-3.0-2011/test2/tabs.cxx
   branches/branch-3.0-2011/test2/tabs.fl
   branches/branch-3.0-2011/test2/tabs.h
   branches/branch-3.0-2011/test2/threads.cxx
   branches/branch-3.0-2011/test2/tile.cxx
   branches/branch-3.0-2011/test2/timer.cxx
   branches/branch-3.0-2011/test2/trackball.c
   branches/branch-3.0-2011/test2/trackball.h
   branches/branch-3.0-2011/test2/utf.cxx
   branches/branch-3.0-2011/test2/valuators.cxx
   branches/branch-3.0-2011/test2/valuators.fl
   branches/branch-3.0-2011/test2/valuators.h
   branches/branch-3.0-2011/test2/white_1.xbm
   branches/branch-3.0-2011/test2/white_2.xbm
   branches/branch-3.0-2011/test2/white_3.xbm
   branches/branch-3.0-2011/test2/white_4.xbm
   branches/branch-3.0-2011/test2/whiteking_1.xbm
   branches/branch-3.0-2011/test2/whiteking_2.xbm
   branches/branch-3.0-2011/test2/whiteking_3.xbm
   branches/branch-3.0-2011/test2/whiteking_4.xbm
   branches/branch-3.0-2011/test2/wizard.cxx
Modified:
   branches/branch-3.0-2011/FL/Enumerations.H
   branches/branch-3.0-2011/FL/Fl.H
   branches/branch-3.0-2011/FL/Fl_Adjuster.H
   branches/branch-3.0-2011/FL/Fl_BMP_Image.H
   branches/branch-3.0-2011/FL/Fl_Bitmap.H
   branches/branch-3.0-2011/FL/Fl_Box.H
   branches/branch-3.0-2011/FL/Fl_Browser.H
   branches/branch-3.0-2011/FL/Fl_Browser_.H
   branches/branch-3.0-2011/FL/Fl_Button.H
   branches/branch-3.0-2011/FL/Fl_Cairo.H
   branches/branch-3.0-2011/FL/Fl_Cairo_Window.H
   branches/branch-3.0-2011/FL/Fl_Chart.H
   branches/branch-3.0-2011/FL/Fl_Check_Browser.H
   branches/branch-3.0-2011/FL/Fl_Check_Button.H
   branches/branch-3.0-2011/FL/Fl_Choice.H
   branches/branch-3.0-2011/FL/Fl_Clock.H
   branches/branch-3.0-2011/FL/Fl_Color_Chooser.H
   branches/branch-3.0-2011/FL/Fl_Counter.H
   branches/branch-3.0-2011/FL/Fl_Device.H
   branches/branch-3.0-2011/FL/Fl_Dial.H
   branches/branch-3.0-2011/FL/Fl_Double_Window.H
   branches/branch-3.0-2011/FL/Fl_Export.H
   branches/branch-3.0-2011/FL/Fl_File_Browser.H
   branches/branch-3.0-2011/FL/Fl_File_Chooser.H
   branches/branch-3.0-2011/FL/Fl_File_Icon.H
   branches/branch-3.0-2011/FL/Fl_File_Input.H
   branches/branch-3.0-2011/FL/Fl_Fill_Dial.H
   branches/branch-3.0-2011/FL/Fl_Fill_Slider.H
   branches/branch-3.0-2011/FL/Fl_Float_Input.H
   branches/branch-3.0-2011/FL/Fl_FormsBitmap.H
   branches/branch-3.0-2011/FL/Fl_FormsPixmap.H
   branches/branch-3.0-2011/FL/Fl_Free.H
   branches/branch-3.0-2011/FL/Fl_GIF_Image.H
   branches/branch-3.0-2011/FL/Fl_Gl_Window.H
   branches/branch-3.0-2011/FL/Fl_Group.H
   branches/branch-3.0-2011/FL/Fl_Help_Dialog.H
   branches/branch-3.0-2011/FL/Fl_Help_View.H
   branches/branch-3.0-2011/FL/Fl_Hold_Browser.H
   branches/branch-3.0-2011/FL/Fl_Hor_Fill_Slider.H
   branches/branch-3.0-2011/FL/Fl_Hor_Nice_Slider.H
   branches/branch-3.0-2011/FL/Fl_Hor_Slider.H
   branches/branch-3.0-2011/FL/Fl_Hor_Value_Slider.H
   branches/branch-3.0-2011/FL/Fl_Image.H
   branches/branch-3.0-2011/FL/Fl_Input.H
   branches/branch-3.0-2011/FL/Fl_Input_.H
   branches/branch-3.0-2011/FL/Fl_Input_Choice.H
   branches/branch-3.0-2011/FL/Fl_Int_Input.H
   branches/branch-3.0-2011/FL/Fl_JPEG_Image.H
   branches/branch-3.0-2011/FL/Fl_Light_Button.H
   branches/branch-3.0-2011/FL/Fl_Line_Dial.H
   branches/branch-3.0-2011/FL/Fl_Menu.H
   branches/branch-3.0-2011/FL/Fl_Menu_.H
   branches/branch-3.0-2011/FL/Fl_Menu_Bar.H
   branches/branch-3.0-2011/FL/Fl_Menu_Button.H
   branches/branch-3.0-2011/FL/Fl_Menu_Item.H
   branches/branch-3.0-2011/FL/Fl_Menu_Window.H
   branches/branch-3.0-2011/FL/Fl_Multi_Browser.H
   branches/branch-3.0-2011/FL/Fl_Multi_Label.H
   branches/branch-3.0-2011/FL/Fl_Multiline_Input.H
   branches/branch-3.0-2011/FL/Fl_Multiline_Output.H
   branches/branch-3.0-2011/FL/Fl_Native_File_Chooser.H
   branches/branch-3.0-2011/FL/Fl_Native_File_Chooser_FLTK.H
   branches/branch-3.0-2011/FL/Fl_Native_File_Chooser_MAC.H
   branches/branch-3.0-2011/FL/Fl_Native_File_Chooser_WIN32.H
   branches/branch-3.0-2011/FL/Fl_Nice_Slider.H
   branches/branch-3.0-2011/FL/Fl_Object.H
   branches/branch-3.0-2011/FL/Fl_Output.H
   branches/branch-3.0-2011/FL/Fl_Overlay_Window.H
   branches/branch-3.0-2011/FL/Fl_PNG_Image.H
   branches/branch-3.0-2011/FL/Fl_PNM_Image.H
   branches/branch-3.0-2011/FL/Fl_Pack.H
   branches/branch-3.0-2011/FL/Fl_Paged_Device.H
   branches/branch-3.0-2011/FL/Fl_Pixmap.H
   branches/branch-3.0-2011/FL/Fl_Plugin.H
   branches/branch-3.0-2011/FL/Fl_Positioner.H
   branches/branch-3.0-2011/FL/Fl_PostScript.H
   branches/branch-3.0-2011/FL/Fl_Preferences.H
   branches/branch-3.0-2011/FL/Fl_Printer.H
   branches/branch-3.0-2011/FL/Fl_Progress.H
   branches/branch-3.0-2011/FL/Fl_RGB_Image.H
   branches/branch-3.0-2011/FL/Fl_Radio_Button.H
   branches/branch-3.0-2011/FL/Fl_Radio_Light_Button.H
   branches/branch-3.0-2011/FL/Fl_Radio_Round_Button.H
   branches/branch-3.0-2011/FL/Fl_Repeat_Button.H
   branches/branch-3.0-2011/FL/Fl_Return_Button.H
   branches/branch-3.0-2011/FL/Fl_Roller.H
   branches/branch-3.0-2011/FL/Fl_Round_Button.H
   branches/branch-3.0-2011/FL/Fl_Round_Clock.H
   branches/branch-3.0-2011/FL/Fl_Scroll.H
   branches/branch-3.0-2011/FL/Fl_Scrollbar.H
   branches/branch-3.0-2011/FL/Fl_Secret_Input.H
   branches/branch-3.0-2011/FL/Fl_Select_Browser.H
   branches/branch-3.0-2011/FL/Fl_Shared_Image.H
   branches/branch-3.0-2011/FL/Fl_Simple_Counter.H
   branches/branch-3.0-2011/FL/Fl_Single_Window.H
   branches/branch-3.0-2011/FL/Fl_Slider.H
   branches/branch-3.0-2011/FL/Fl_Spinner.H
   branches/branch-3.0-2011/FL/Fl_Sys_Menu_Bar.H
   branches/branch-3.0-2011/FL/Fl_Table.H
   branches/branch-3.0-2011/FL/Fl_Table_Row.H
   branches/branch-3.0-2011/FL/Fl_Tabs.H
   branches/branch-3.0-2011/FL/Fl_Text_Buffer.H
   branches/branch-3.0-2011/FL/Fl_Text_Display.H
   branches/branch-3.0-2011/FL/Fl_Text_Editor.H
   branches/branch-3.0-2011/FL/Fl_Tile.H
   branches/branch-3.0-2011/FL/Fl_Tiled_Image.H
   branches/branch-3.0-2011/FL/Fl_Timer.H
   branches/branch-3.0-2011/FL/Fl_Toggle_Button.H
   branches/branch-3.0-2011/FL/Fl_Toggle_Light_Button.H
   branches/branch-3.0-2011/FL/Fl_Toggle_Round_Button.H
   branches/branch-3.0-2011/FL/Fl_Tooltip.H
   branches/branch-3.0-2011/FL/Fl_Tree.H
   branches/branch-3.0-2011/FL/Fl_Tree_Item.H
   branches/branch-3.0-2011/FL/Fl_Tree_Item_Array.H
   branches/branch-3.0-2011/FL/Fl_Tree_Prefs.H
   branches/branch-3.0-2011/FL/Fl_Valuator.H
   branches/branch-3.0-2011/FL/Fl_Value_Input.H
   branches/branch-3.0-2011/FL/Fl_Value_Output.H
   branches/branch-3.0-2011/FL/Fl_Value_Slider.H
   branches/branch-3.0-2011/FL/Fl_Widget.H
   branches/branch-3.0-2011/FL/Fl_Window.H
   branches/branch-3.0-2011/FL/Fl_Wizard.H
   branches/branch-3.0-2011/FL/Fl_XBM_Image.H
   branches/branch-3.0-2011/FL/Fl_XPM_Image.H
   branches/branch-3.0-2011/FL/Xutf8.h
   branches/branch-3.0-2011/FL/dirent.h
   branches/branch-3.0-2011/FL/filename.H
   branches/branch-3.0-2011/FL/fl_ask.H
   branches/branch-3.0-2011/FL/fl_draw.H
   branches/branch-3.0-2011/FL/fl_message.H
   branches/branch-3.0-2011/FL/fl_show_colormap.H
   branches/branch-3.0-2011/FL/fl_show_input.H
   branches/branch-3.0-2011/FL/fl_types.h
   branches/branch-3.0-2011/FL/fl_utf8.h
   branches/branch-3.0-2011/FL/forms.H
   branches/branch-3.0-2011/FL/gl.h
   branches/branch-3.0-2011/FL/gl2opengl.h
   branches/branch-3.0-2011/FL/gl_draw.H
   branches/branch-3.0-2011/FL/glu.h
   branches/branch-3.0-2011/FL/glut.H
   branches/branch-3.0-2011/FL/mac.H
   branches/branch-3.0-2011/FL/math.h
   branches/branch-3.0-2011/FL/names.h
   branches/branch-3.0-2011/FL/win32.H
   branches/branch-3.0-2011/FL/x.H
   branches/branch-3.0-2011/fltk3/Fl.H
   branches/branch-3.0-2011/fltk3/Fl_Browser_.H
   branches/branch-3.0-2011/fltk3/Fl_Cairo.H
   branches/branch-3.0-2011/fltk3/Fl_Cairo_Window.H
   branches/branch-3.0-2011/fltk3/Fl_Color_Chooser.H
   branches/branch-3.0-2011/fltk3/Fl_Device.H
   branches/branch-3.0-2011/fltk3/Fl_File_Chooser.H
   branches/branch-3.0-2011/fltk3/Fl_File_Input.H
   branches/branch-3.0-2011/fltk3/Fl_Help_Dialog.H
   branches/branch-3.0-2011/fltk3/Fl_Image.H
   branches/branch-3.0-2011/fltk3/Fl_Input_Choice.H
   branches/branch-3.0-2011/fltk3/Fl_Native_File_Chooser.H
   branches/branch-3.0-2011/fltk3/Fl_Native_File_Chooser_FLTK.H
   branches/branch-3.0-2011/fltk3/Fl_Native_File_Chooser_MAC.H
   branches/branch-3.0-2011/fltk3/Fl_Pack.H
   branches/branch-3.0-2011/fltk3/Fl_Paged_Device.H
   branches/branch-3.0-2011/fltk3/Fl_PostScript.H
   branches/branch-3.0-2011/fltk3/Fl_Printer.H
   branches/branch-3.0-2011/fltk3/Fl_Spinner.H
   branches/branch-3.0-2011/fltk3/Fl_Table.H
   branches/branch-3.0-2011/fltk3/Fl_Tooltip.H
   branches/branch-3.0-2011/fltk3/Fl_Tree.H
   branches/branch-3.0-2011/fltk3/Fl_Tree_Item.H
   branches/branch-3.0-2011/fltk3/Fl_Tree_Item_Array.H
   branches/branch-3.0-2011/fltk3/Fl_Tree_Prefs.H
   branches/branch-3.0-2011/fltk3/Fl_Window.H
   branches/branch-3.0-2011/fltk3/Fl_Wizard.H
   branches/branch-3.0-2011/fltk3/filename.H
   branches/branch-3.0-2011/fltk3/fl_draw.H
   branches/branch-3.0-2011/fltk3/gl2opengl.h
   branches/branch-3.0-2011/fltk3/mac.H
   branches/branch-3.0-2011/fltk3/names.h
   branches/branch-3.0-2011/fltk3/win32.H
   branches/branch-3.0-2011/ide/Xcode3/FLTK.xcodeproj/project.pbxproj
   branches/branch-3.0-2011/src/Fl.cxx
   branches/branch-3.0-2011/src/Fl_Adjuster.cxx
   branches/branch-3.0-2011/src/Fl_BMP_Image.cxx
   branches/branch-3.0-2011/src/Fl_Bitmap.cxx
   branches/branch-3.0-2011/src/Fl_Box.cxx
   branches/branch-3.0-2011/src/Fl_Browser.cxx
   branches/branch-3.0-2011/src/Fl_Browser_.cxx
   branches/branch-3.0-2011/src/Fl_Browser_load.cxx
   branches/branch-3.0-2011/src/Fl_Button.cxx
   branches/branch-3.0-2011/src/Fl_Chart.cxx
   branches/branch-3.0-2011/src/Fl_Check_Browser.cxx
   branches/branch-3.0-2011/src/Fl_Check_Button.cxx
   branches/branch-3.0-2011/src/Fl_Choice.cxx
   branches/branch-3.0-2011/src/Fl_Clock.cxx
   branches/branch-3.0-2011/src/Fl_Color_Chooser.cxx
   branches/branch-3.0-2011/src/Fl_Counter.cxx
   branches/branch-3.0-2011/src/Fl_Device.cxx
   branches/branch-3.0-2011/src/Fl_Dial.cxx
   branches/branch-3.0-2011/src/Fl_Double_Window.cxx
   branches/branch-3.0-2011/src/Fl_File_Browser.cxx
   branches/branch-3.0-2011/src/Fl_File_Chooser.cxx
   branches/branch-3.0-2011/src/Fl_File_Chooser2.cxx
   branches/branch-3.0-2011/src/Fl_File_Icon.cxx
   branches/branch-3.0-2011/src/Fl_File_Icon2.cxx
   branches/branch-3.0-2011/src/Fl_File_Input.cxx
   branches/branch-3.0-2011/src/Fl_Font.H
   branches/branch-3.0-2011/src/Fl_GDI_Printer.cxx
   branches/branch-3.0-2011/src/Fl_GIF_Image.cxx
   branches/branch-3.0-2011/src/Fl_Gl_Choice.H
   branches/branch-3.0-2011/src/Fl_Gl_Choice.cxx
   branches/branch-3.0-2011/src/Fl_Gl_Device_Plugin.cxx
   branches/branch-3.0-2011/src/Fl_Gl_Overlay.cxx
   branches/branch-3.0-2011/src/Fl_Gl_Window.cxx
   branches/branch-3.0-2011/src/Fl_Group.cxx
   branches/branch-3.0-2011/src/Fl_Help_Dialog.cxx
   branches/branch-3.0-2011/src/Fl_Help_View.cxx
   branches/branch-3.0-2011/src/Fl_Image.cxx
   branches/branch-3.0-2011/src/Fl_Input.cxx
   branches/branch-3.0-2011/src/Fl_Input_.cxx
   branches/branch-3.0-2011/src/Fl_JPEG_Image.cxx
   branches/branch-3.0-2011/src/Fl_Light_Button.cxx
   branches/branch-3.0-2011/src/Fl_Menu.cxx
   branches/branch-3.0-2011/src/Fl_Menu_.cxx
   branches/branch-3.0-2011/src/Fl_Menu_Bar.cxx
   branches/branch-3.0-2011/src/Fl_Menu_Button.cxx
   branches/branch-3.0-2011/src/Fl_Menu_Window.cxx
   branches/branch-3.0-2011/src/Fl_Menu_add.cxx
   branches/branch-3.0-2011/src/Fl_Menu_global.cxx
   branches/branch-3.0-2011/src/Fl_Multi_Label.cxx
   branches/branch-3.0-2011/src/Fl_Native_File_Chooser_FLTK.cxx
   branches/branch-3.0-2011/src/Fl_Native_File_Chooser_MAC.mm
   branches/branch-3.0-2011/src/Fl_Native_File_Chooser_WIN32.cxx
   branches/branch-3.0-2011/src/Fl_Native_File_Chooser_common.cxx
   branches/branch-3.0-2011/src/Fl_Overlay_Window.cxx
   branches/branch-3.0-2011/src/Fl_PNG_Image.cxx
   branches/branch-3.0-2011/src/Fl_PNM_Image.cxx
   branches/branch-3.0-2011/src/Fl_Pack.cxx
   branches/branch-3.0-2011/src/Fl_Paged_Device.cxx
   branches/branch-3.0-2011/src/Fl_Pixmap.cxx
   branches/branch-3.0-2011/src/Fl_Positioner.cxx
   branches/branch-3.0-2011/src/Fl_PostScript.cxx
   branches/branch-3.0-2011/src/Fl_Preferences.cxx
   branches/branch-3.0-2011/src/Fl_Printer.cxx
   branches/branch-3.0-2011/src/Fl_Progress.cxx
   branches/branch-3.0-2011/src/Fl_Quartz_Printer.mm
   branches/branch-3.0-2011/src/Fl_Repeat_Button.cxx
   branches/branch-3.0-2011/src/Fl_Return_Button.cxx
   branches/branch-3.0-2011/src/Fl_Roller.cxx
   branches/branch-3.0-2011/src/Fl_Round_Button.cxx
   branches/branch-3.0-2011/src/Fl_Scroll.cxx
   branches/branch-3.0-2011/src/Fl_Scrollbar.cxx
   branches/branch-3.0-2011/src/Fl_Shared_Image.cxx
   branches/branch-3.0-2011/src/Fl_Single_Window.cxx
   branches/branch-3.0-2011/src/Fl_Slider.cxx
   branches/branch-3.0-2011/src/Fl_Sys_Menu_Bar.cxx
   branches/branch-3.0-2011/src/Fl_Table.cxx
   branches/branch-3.0-2011/src/Fl_Table_Row.cxx
   branches/branch-3.0-2011/src/Fl_Tabs.cxx
   branches/branch-3.0-2011/src/Fl_Text_Buffer.cxx
   branches/branch-3.0-2011/src/Fl_Text_Display.cxx
   branches/branch-3.0-2011/src/Fl_Text_Editor.cxx
   branches/branch-3.0-2011/src/Fl_Tile.cxx
   branches/branch-3.0-2011/src/Fl_Tiled_Image.cxx
   branches/branch-3.0-2011/src/Fl_Tooltip.cxx
   branches/branch-3.0-2011/src/Fl_Tree.cxx
   branches/branch-3.0-2011/src/Fl_Tree_Item.cxx
   branches/branch-3.0-2011/src/Fl_Tree_Item_Array.cxx
   branches/branch-3.0-2011/src/Fl_Tree_Prefs.cxx
   branches/branch-3.0-2011/src/Fl_Valuator.cxx
   branches/branch-3.0-2011/src/Fl_Value_Input.cxx
   branches/branch-3.0-2011/src/Fl_Value_Output.cxx
   branches/branch-3.0-2011/src/Fl_Value_Slider.cxx
   branches/branch-3.0-2011/src/Fl_Widget.cxx
   branches/branch-3.0-2011/src/Fl_Window.cxx
   branches/branch-3.0-2011/src/Fl_Window_fullscreen.cxx
   branches/branch-3.0-2011/src/Fl_Window_hotspot.cxx
   branches/branch-3.0-2011/src/Fl_Window_iconize.cxx
   branches/branch-3.0-2011/src/Fl_Wizard.cxx
   branches/branch-3.0-2011/src/Fl_XBM_Image.cxx
   branches/branch-3.0-2011/src/Fl_XColor.H
   branches/branch-3.0-2011/src/Fl_XPM_Image.cxx
   branches/branch-3.0-2011/src/Fl_abort.cxx
   branches/branch-3.0-2011/src/Fl_add_idle.cxx
   branches/branch-3.0-2011/src/Fl_arg.cxx
   branches/branch-3.0-2011/src/Fl_cocoa.mm
   branches/branch-3.0-2011/src/Fl_compose.cxx
   branches/branch-3.0-2011/src/Fl_display.cxx
   branches/branch-3.0-2011/src/Fl_get_key.cxx
   branches/branch-3.0-2011/src/Fl_get_key_mac.cxx
   branches/branch-3.0-2011/src/Fl_get_key_win32.cxx
   branches/branch-3.0-2011/src/Fl_get_system_colors.cxx
   branches/branch-3.0-2011/src/Fl_grab.cxx
   branches/branch-3.0-2011/src/Fl_lock.cxx
   branches/branch-3.0-2011/src/Fl_mac.cxx
   branches/branch-3.0-2011/src/Fl_own_colormap.cxx
   branches/branch-3.0-2011/src/Fl_visual.cxx
   branches/branch-3.0-2011/src/Fl_win32.cxx
   branches/branch-3.0-2011/src/Fl_x.cxx
   branches/branch-3.0-2011/src/filename_absolute.cxx
   branches/branch-3.0-2011/src/filename_expand.cxx
   branches/branch-3.0-2011/src/filename_ext.cxx
   branches/branch-3.0-2011/src/filename_isdir.cxx
   branches/branch-3.0-2011/src/filename_list.cxx
   branches/branch-3.0-2011/src/filename_match.cxx
   branches/branch-3.0-2011/src/filename_setext.cxx
   branches/branch-3.0-2011/src/fl_arc.cxx
   branches/branch-3.0-2011/src/fl_arci.cxx
   branches/branch-3.0-2011/src/fl_ask.cxx
   branches/branch-3.0-2011/src/fl_boxtype.cxx
   branches/branch-3.0-2011/src/fl_call_main.c
   branches/branch-3.0-2011/src/fl_color.cxx
   branches/branch-3.0-2011/src/fl_color_mac.cxx
   branches/branch-3.0-2011/src/fl_color_win32.cxx
   branches/branch-3.0-2011/src/fl_cursor.cxx
   branches/branch-3.0-2011/src/fl_curve.cxx
   branches/branch-3.0-2011/src/fl_diamond_box.cxx
   branches/branch-3.0-2011/src/fl_dnd_win32.cxx
   branches/branch-3.0-2011/src/fl_dnd_x.cxx
   branches/branch-3.0-2011/src/fl_draw.cxx
   branches/branch-3.0-2011/src/fl_draw_image.cxx
   branches/branch-3.0-2011/src/fl_draw_image_mac.cxx
   branches/branch-3.0-2011/src/fl_draw_image_win32.cxx
   branches/branch-3.0-2011/src/fl_draw_pixmap.cxx
   branches/branch-3.0-2011/src/fl_encoding_latin1.cxx
   branches/branch-3.0-2011/src/fl_encoding_mac_roman.cxx
   branches/branch-3.0-2011/src/fl_engraved_label.cxx
   branches/branch-3.0-2011/src/fl_file_dir.cxx
   branches/branch-3.0-2011/src/fl_font.cxx
   branches/branch-3.0-2011/src/fl_font_win32.cxx
   branches/branch-3.0-2011/src/fl_gtk.cxx
   branches/branch-3.0-2011/src/fl_images_core.cxx
   branches/branch-3.0-2011/src/fl_labeltype.cxx
   branches/branch-3.0-2011/src/fl_line_style.cxx
   branches/branch-3.0-2011/src/fl_open_uri.cxx
   branches/branch-3.0-2011/src/fl_oval_box.cxx
   branches/branch-3.0-2011/src/fl_overlay.cxx
   branches/branch-3.0-2011/src/fl_overlay_visual.cxx
   branches/branch-3.0-2011/src/fl_plastic.cxx
   branches/branch-3.0-2011/src/fl_read_image.cxx
   branches/branch-3.0-2011/src/fl_rect.cxx
   branches/branch-3.0-2011/src/fl_round_box.cxx
   branches/branch-3.0-2011/src/fl_rounded_box.cxx
   branches/branch-3.0-2011/src/fl_scroll_area.cxx
   branches/branch-3.0-2011/src/fl_set_font.cxx
   branches/branch-3.0-2011/src/fl_set_fonts.cxx
   branches/branch-3.0-2011/src/fl_set_fonts_win32.cxx
   branches/branch-3.0-2011/src/fl_shadow_box.cxx
   branches/branch-3.0-2011/src/fl_shortcut.cxx
   branches/branch-3.0-2011/src/fl_show_colormap.cxx
   branches/branch-3.0-2011/src/fl_symbols.cxx
   branches/branch-3.0-2011/src/fl_utf.c
   branches/branch-3.0-2011/src/fl_utf8.cxx
   branches/branch-3.0-2011/src/fl_vertex.cxx
   branches/branch-3.0-2011/src/flstring.h
   branches/branch-3.0-2011/src/forms_bitmap.cxx
   branches/branch-3.0-2011/src/forms_compatability.cxx
   branches/branch-3.0-2011/src/forms_free.cxx
   branches/branch-3.0-2011/src/forms_fselect.cxx
   branches/branch-3.0-2011/src/forms_pixmap.cxx
   branches/branch-3.0-2011/src/forms_timer.cxx
   branches/branch-3.0-2011/src/freeglut_geometry.cxx
   branches/branch-3.0-2011/src/freeglut_stroke_mono_roman.cxx
   branches/branch-3.0-2011/src/freeglut_stroke_roman.cxx
   branches/branch-3.0-2011/src/freeglut_teapot.cxx
   branches/branch-3.0-2011/src/gl_draw.cxx
   branches/branch-3.0-2011/src/gl_start.cxx
   branches/branch-3.0-2011/src/glut_compatability.cxx
   branches/branch-3.0-2011/src/glut_font.cxx
   branches/branch-3.0-2011/src/numericsort.c
   branches/branch-3.0-2011/src/print_panel.cxx
   branches/branch-3.0-2011/src/print_panel.h
   branches/branch-3.0-2011/src/ps_image.cxx
   branches/branch-3.0-2011/src/scandir_win32.c
   branches/branch-3.0-2011/src/screen_xywh.cxx
   branches/branch-3.0-2011/src/xutf8/keysym2Ucs.c
   branches/branch-3.0-2011/src/xutf8/utf8Input.c
   branches/branch-3.0-2011/src/xutf8/utf8Utils.c
   branches/branch-3.0-2011/src/xutf8/utf8Wrap.c
   branches/branch-3.0-2011/test/hello.cxx

Modified: branches/branch-3.0-2011/FL/Enumerations.H
===================================================================
--- branches/branch-3.0-2011/FL/Enumerations.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Enumerations.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -917,3 +919,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -1158,3 +1160,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Adjuster.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Adjuster.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Adjuster.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -80,3 +82,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_BMP_Image.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_BMP_Image.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_BMP_Image.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -48,3 +50,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Bitmap.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Bitmap.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Bitmap.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -83,3 +85,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Box.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Box.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Box.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -67,3 +69,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Browser.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Browser.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Browser.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -322,3 +324,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Browser_.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Browser_.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Browser_.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -376,3 +378,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Button.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Button.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -178,3 +180,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Cairo.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Cairo.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Cairo.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -95,3 +97,4 @@
 //
 // End of "$Id$" .
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Cairo_Window.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Cairo_Window.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Cairo_Window.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -90,3 +92,4 @@
 //
 // End of "$Id$" .
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Chart.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Chart.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Chart.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -158,3 +160,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Check_Browser.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Check_Browser.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Check_Browser.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -120,3 +122,4 @@
 // End of "$Id$".
 //
 
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Check_Button.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Check_Button.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Check_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -58,3 +60,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Choice.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Choice.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Choice.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -106,3 +108,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Clock.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Clock.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Clock.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -135,3 +137,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Color_Chooser.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Color_Chooser.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Color_Chooser.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -197,3 +199,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Counter.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Counter.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Counter.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -122,3 +124,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Device.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Device.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Device.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -424,3 +426,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Dial.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Dial.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Dial.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -95,3 +97,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Double_Window.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Double_Window.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Double_Window.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -79,3 +81,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Export.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Export.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Export.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 /*
  * "$Id$"
  *
@@ -47,3 +49,4 @@
 /*
  * End of "$Id$".
  */
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_File_Browser.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_File_Browser.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_File_Browser.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -118,3 +120,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_File_Chooser.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_File_Chooser.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_File_Chooser.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -233,3 +235,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_File_Icon.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_File_Icon.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_File_Icon.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -166,3 +168,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_File_Input.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_File_Input.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_File_Input.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -102,3 +104,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Fill_Dial.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Fill_Dial.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Fill_Dial.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -46,3 +48,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Fill_Slider.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Fill_Slider.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Fill_Slider.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -45,3 +47,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Float_Input.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Float_Input.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Float_Input.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -55,3 +57,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_FormsBitmap.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_FormsBitmap.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_FormsBitmap.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -54,3 +56,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_FormsPixmap.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_FormsPixmap.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_FormsPixmap.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -61,3 +63,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Free.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Free.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Free.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -87,3 +89,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_GIF_Image.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_GIF_Image.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_GIF_Image.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -49,3 +51,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Gl_Window.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Gl_Window.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Gl_Window.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -238,3 +240,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Group.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Group.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Group.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -228,3 +230,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Help_Dialog.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Help_Dialog.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Help_Dialog.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -93,3 +95,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Help_View.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Help_View.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Help_View.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -397,3 +399,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Hold_Browser.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Hold_Browser.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Hold_Browser.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -59,3 +61,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Hor_Fill_Slider.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Hor_Fill_Slider.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Hor_Fill_Slider.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -44,3 +46,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Hor_Nice_Slider.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Hor_Nice_Slider.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Hor_Nice_Slider.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -44,3 +46,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Hor_Slider.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Hor_Slider.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Hor_Slider.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -44,3 +46,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Hor_Value_Slider.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Hor_Value_Slider.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Hor_Value_Slider.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -44,3 +46,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Image.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Image.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Image.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -228,3 +230,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Input.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Input.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Input.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -275,3 +277,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Input_.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Input_.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Input_.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -495,3 +497,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Input_Choice.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Input_Choice.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Input_Choice.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -220,3 +222,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Int_Input.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Int_Input.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Int_Input.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -53,3 +55,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_JPEG_Image.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_JPEG_Image.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_JPEG_Image.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -51,3 +53,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Light_Button.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Light_Button.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Light_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -57,3 +59,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Line_Dial.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Line_Dial.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Line_Dial.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -44,3 +46,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Menu.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Menu.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Menu.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -31,3 +33,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Menu_.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Menu_.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Menu_.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -166,3 +168,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Menu_Bar.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Menu_Bar.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Menu_Bar.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -87,3 +89,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Menu_Button.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Menu_Button.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Menu_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -84,3 +86,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Menu_Item.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Menu_Item.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Menu_Item.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -441,3 +443,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Menu_Window.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Menu_Window.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Menu_Window.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -66,3 +68,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Multi_Browser.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Multi_Browser.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Multi_Browser.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -60,3 +62,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Multi_Label.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Multi_Label.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Multi_Label.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -45,3 +47,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Multiline_Input.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Multiline_Input.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Multiline_Input.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -68,3 +70,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Multiline_Output.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Multiline_Output.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Multiline_Output.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -62,3 +64,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Native_File_Chooser.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Native_File_Chooser.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Native_File_Chooser.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -49,3 +51,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Native_File_Chooser_FLTK.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Native_File_Chooser_FLTK.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Native_File_Chooser_FLTK.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -153,3 +155,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Native_File_Chooser_MAC.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Native_File_Chooser_MAC.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Native_File_Chooser_MAC.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -116,3 +118,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Native_File_Chooser_WIN32.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Native_File_Chooser_WIN32.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Native_File_Chooser_WIN32.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -118,3 +120,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Nice_Slider.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Nice_Slider.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Nice_Slider.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -44,3 +46,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Object.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Object.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Object.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -34,3 +36,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Output.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Output.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Output.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -66,3 +68,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Overlay_Window.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Overlay_Window.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Overlay_Window.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -77,3 +79,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_PNG_Image.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_PNG_Image.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_PNG_Image.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -50,3 +52,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_PNM_Image.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_PNM_Image.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_PNM_Image.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -50,3 +52,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Pack.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Pack.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Pack.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -82,3 +84,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Paged_Device.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Paged_Device.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Paged_Device.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -157,3 +159,4 @@
 // End of "$Id$"
 //
 
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Pixmap.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Pixmap.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Pixmap.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -97,3 +99,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Plugin.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Plugin.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Plugin.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id: Fl_Plugin.H 6995 2010-01-12 08:48:55Z matt $"
 //
@@ -104,3 +106,4 @@
 //
 // End of "$Id: Fl_Preferences.H 6995 2010-01-12 08:48:55Z matt $".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Positioner.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Positioner.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Positioner.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -101,3 +103,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_PostScript.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_PostScript.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_PostScript.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -256,3 +258,4 @@
 //
 // End of "$Id$"
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Preferences.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Preferences.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Preferences.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -274,3 +276,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Printer.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Printer.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Printer.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -203,3 +205,4 @@
 //
 // End of "$Id$"
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Progress.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Progress.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Progress.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -79,3 +81,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_RGB_Image.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_RGB_Image.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_RGB_Image.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -33,3 +35,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Radio_Button.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Radio_Button.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Radio_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -44,3 +46,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Radio_Light_Button.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Radio_Light_Button.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Radio_Light_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -44,3 +46,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Radio_Round_Button.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Radio_Round_Button.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Radio_Round_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -44,3 +46,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Repeat_Button.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Repeat_Button.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Repeat_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -61,3 +63,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Return_Button.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Return_Button.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Return_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -58,3 +60,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Roller.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Roller.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Roller.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -54,3 +56,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Round_Button.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Round_Button.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Round_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -55,3 +57,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Round_Clock.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Round_Clock.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Round_Clock.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -46,3 +48,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Scroll.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Scroll.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Scroll.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -197,3 +199,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Scrollbar.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Scrollbar.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Scrollbar.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -118,3 +120,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Secret_Input.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Secret_Input.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Secret_Input.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -54,3 +56,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Select_Browser.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Select_Browser.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Select_Browser.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -58,3 +60,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Shared_Image.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Shared_Image.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Shared_Image.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -108,3 +110,4 @@
 //
 // End of "$Id$"
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Simple_Counter.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Simple_Counter.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Simple_Counter.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -48,3 +50,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Single_Window.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Single_Window.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Single_Window.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -65,3 +67,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Slider.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Slider.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Slider.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -118,3 +120,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Spinner.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Spinner.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Spinner.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -264,3 +266,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Sys_Menu_Bar.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Sys_Menu_Bar.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Sys_Menu_Bar.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -78,3 +80,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Table.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Table.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Table.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -1079,3 +1081,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Table_Row.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Table_Row.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Table_Row.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -209,3 +211,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Tabs.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Tabs.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Tabs.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -90,3 +92,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Text_Buffer.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Text_Buffer.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Text_Buffer.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -779,3 +781,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Text_Display.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Text_Display.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Text_Display.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -479,3 +481,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Text_Editor.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Text_Editor.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Text_Editor.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -139,3 +141,4 @@
 // End of "$Id$".
 //
 
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Tile.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Tile.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Tile.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -100,3 +102,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Tiled_Image.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Tiled_Image.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Tiled_Image.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -68,3 +70,4 @@
 //
 // End of "$Id$"
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Timer.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Timer.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Timer.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -85,3 +87,4 @@
 // End of "$Id$".
 //
 
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Toggle_Button.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Toggle_Button.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Toggle_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -58,3 +60,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Toggle_Light_Button.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Toggle_Light_Button.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Toggle_Light_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -35,3 +37,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Toggle_Round_Button.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Toggle_Round_Button.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Toggle_Round_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -35,3 +37,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Tooltip.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Tooltip.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Tooltip.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -112,3 +114,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Tree.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Tree.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Tree.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -917,3 +919,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Tree_Item.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Tree_Item.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Tree_Item.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -335,3 +337,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Tree_Item_Array.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Tree_Item_Array.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Tree_Item_Array.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -88,3 +90,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Tree_Prefs.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Tree_Prefs.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Tree_Prefs.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -359,3 +361,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Valuator.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Valuator.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Valuator.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -142,3 +144,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Value_Input.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Value_Input.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Value_Input.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -133,3 +135,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Value_Output.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Value_Output.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Value_Output.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -93,3 +95,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Value_Slider.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Value_Slider.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Value_Slider.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -67,3 +69,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Widget.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Widget.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Widget.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -1003,3 +1005,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Window.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Window.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Window.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -453,3 +455,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_Wizard.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Wizard.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_Wizard.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -68,3 +70,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_XBM_Image.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_XBM_Image.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_XBM_Image.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -48,3 +50,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Fl_XPM_Image.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_XPM_Image.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Fl_XPM_Image.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -49,3 +51,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/Xutf8.h
===================================================================
--- branches/branch-3.0-2011/FL/Xutf8.h	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/Xutf8.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 /* "$Id$"
  *
  * Author: Jean-Marc Lienher ( http://oksid.ch )
@@ -174,3 +176,4 @@
 /*
  *  End of "$Id$".
  */ 
+#endif

Modified: branches/branch-3.0-2011/FL/dirent.h
===================================================================
--- branches/branch-3.0-2011/FL/dirent.h	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/dirent.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -32,3 +34,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/filename.H
===================================================================
--- branches/branch-3.0-2011/FL/filename.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/filename.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 /*
  * "$Id$"
  *
@@ -178,3 +180,4 @@
 /*
  * End of "$Id$".
  */
+#endif

Modified: branches/branch-3.0-2011/FL/fl_ask.H
===================================================================
--- branches/branch-3.0-2011/FL/fl_ask.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/fl_ask.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -75,3 +77,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/fl_draw.H
===================================================================
--- branches/branch-3.0-2011/FL/fl_draw.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/fl_draw.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -733,3 +735,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/fl_message.H
===================================================================
--- branches/branch-3.0-2011/FL/fl_message.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/fl_message.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -30,3 +32,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/fl_show_colormap.H
===================================================================
--- branches/branch-3.0-2011/FL/fl_show_colormap.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/fl_show_colormap.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -56,3 +58,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/fl_show_input.H
===================================================================
--- branches/branch-3.0-2011/FL/fl_show_input.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/fl_show_input.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -30,3 +32,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/fl_types.h
===================================================================
--- branches/branch-3.0-2011/FL/fl_types.h	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/fl_types.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 /*
  * "$Id$"
  *
@@ -64,3 +66,4 @@
 /*
  * End of "$Id$".
  */
+#endif

Modified: branches/branch-3.0-2011/FL/fl_utf8.h
===================================================================
--- branches/branch-3.0-2011/FL/fl_utf8.h	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/fl_utf8.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 /* "$Id$"
  *
  * Author: Jean-Marc Lienher ( http://oksid.ch )
@@ -260,3 +262,4 @@
 /*
  * End of "$Id$".
  */
+#endif

Modified: branches/branch-3.0-2011/FL/forms.H
===================================================================
--- branches/branch-3.0-2011/FL/forms.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/forms.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -843,3 +845,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/gl.h
===================================================================
--- branches/branch-3.0-2011/FL/gl.h	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/gl.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -110,3 +112,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/gl2opengl.h
===================================================================
--- branches/branch-3.0-2011/FL/gl2opengl.h	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/gl2opengl.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 /*	gl.h
 
 	GL to OpenGL translator.
@@ -33,3 +35,4 @@
 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);}
+#endif

Modified: branches/branch-3.0-2011/FL/gl_draw.H
===================================================================
--- branches/branch-3.0-2011/FL/gl_draw.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/gl_draw.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -33,3 +35,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/glu.h
===================================================================
--- branches/branch-3.0-2011/FL/glu.h	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/glu.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -58,3 +60,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/glut.H
===================================================================
--- branches/branch-3.0-2011/FL/glut.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/glut.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -489,3 +491,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/mac.H
===================================================================
--- branches/branch-3.0-2011/FL/mac.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/mac.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -215,3 +217,4 @@
 // End of "$Id$".
 //
 
+#endif

Modified: branches/branch-3.0-2011/FL/math.h
===================================================================
--- branches/branch-3.0-2011/FL/math.h	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/math.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -69,3 +71,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/names.h
===================================================================
--- branches/branch-3.0-2011/FL/names.h	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/names.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -121,3 +123,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/win32.H
===================================================================
--- branches/branch-3.0-2011/FL/win32.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/win32.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -154,3 +156,4 @@
 //
 // End of "$Id$".
 //
+#endif

Modified: branches/branch-3.0-2011/FL/x.H
===================================================================
--- branches/branch-3.0-2011/FL/x.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/FL/x.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -1,3 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
 //
 // "$Id$"
 //
@@ -175,3 +177,4 @@
 //
 // End of "$Id$".
 //
+#endif

Added: branches/branch-3.0-2011/fltk/Adjuster.h
===================================================================
--- branches/branch-3.0-2011/fltk/Adjuster.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Adjuster.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,61 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/AlignGroup.h
===================================================================
--- branches/branch-3.0-2011/fltk/AlignGroup.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/AlignGroup.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,68 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// 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
+#endif

Added: branches/branch-3.0-2011/fltk/AnsiWidget.h
===================================================================
--- branches/branch-3.0-2011/fltk/AnsiWidget.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/AnsiWidget.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,96 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $
+#endif

Added: branches/branch-3.0-2011/fltk/BarGroup.h
===================================================================
--- branches/branch-3.0-2011/fltk/BarGroup.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/BarGroup.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,63 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Box.h
===================================================================
--- branches/branch-3.0-2011/fltk/Box.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Box.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,78 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Browser.h
===================================================================
--- branches/branch-3.0-2011/fltk/Browser.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Browser.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,217 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Button.h
===================================================================
--- branches/branch-3.0-2011/fltk/Button.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Button.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/CheckButton.h
===================================================================
--- branches/branch-3.0-2011/fltk/CheckButton.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/CheckButton.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,49 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Choice.h
===================================================================
--- branches/branch-3.0-2011/fltk/Choice.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Choice.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,55 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Clock.h
===================================================================
--- branches/branch-3.0-2011/fltk/Clock.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Clock.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,71 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Color.h
===================================================================
--- branches/branch-3.0-2011/fltk/Color.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Color.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,134 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/ColorChooser.h
===================================================================
--- branches/branch-3.0-2011/fltk/ColorChooser.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/ColorChooser.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,119 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/ComboBox.h
===================================================================
--- branches/branch-3.0-2011/fltk/ComboBox.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/ComboBox.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,111 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// 
+//
+// 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
+
+//
+// 
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Cursor.h
===================================================================
--- branches/branch-3.0-2011/fltk/Cursor.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Cursor.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,42 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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;
+extern FL_API 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"
+#endif

Added: branches/branch-3.0-2011/fltk/CycleButton.h
===================================================================
--- branches/branch-3.0-2011/fltk/CycleButton.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/CycleButton.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,55 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Dial.h
===================================================================
--- branches/branch-3.0-2011/fltk/Dial.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Dial.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,67 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Divider.h
===================================================================
--- branches/branch-3.0-2011/fltk/Divider.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Divider.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,48 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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
+#endif

Added: branches/branch-3.0-2011/fltk/DoubleBufferWindow.h
===================================================================
--- branches/branch-3.0-2011/fltk/DoubleBufferWindow.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/DoubleBufferWindow.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,30 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// 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
+#endif

Added: branches/branch-3.0-2011/fltk/FL_API.h
===================================================================
--- branches/branch-3.0-2011/fltk/FL_API.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/FL_API.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,79 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/FL_VERSION.h
===================================================================
--- branches/branch-3.0-2011/fltk/FL_VERSION.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/FL_VERSION.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,42 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+/*! \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
+#endif

Added: branches/branch-3.0-2011/fltk/FileBrowser.h
===================================================================
--- branches/branch-3.0-2011/fltk/FileBrowser.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/FileBrowser.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,98 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/FileChooser.h
===================================================================
--- branches/branch-3.0-2011/fltk/FileChooser.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/FileChooser.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,169 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// 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
+#endif

Added: branches/branch-3.0-2011/fltk/FileIcon.h
===================================================================
--- branches/branch-3.0-2011/fltk/FileIcon.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/FileIcon.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,117 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/FileInput.h
===================================================================
--- branches/branch-3.0-2011/fltk/FileInput.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/FileInput.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,70 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/FillDial.h
===================================================================
--- branches/branch-3.0-2011/fltk/FillDial.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/FillDial.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,47 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/FillSlider.h
===================================================================
--- branches/branch-3.0-2011/fltk/FillSlider.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/FillSlider.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,47 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Flags.h
===================================================================
--- branches/branch-3.0-2011/fltk/Flags.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Flags.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,115 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/FloatInput.h
===================================================================
--- branches/branch-3.0-2011/fltk/FloatInput.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/FloatInput.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,54 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Font.h
===================================================================
--- branches/branch-3.0-2011/fltk/Font.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Font.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,73 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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
+#endif

Added: branches/branch-3.0-2011/fltk/GlWindow.h
===================================================================
--- branches/branch-3.0-2011/fltk/GlWindow.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/GlWindow.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,111 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Group.h
===================================================================
--- branches/branch-3.0-2011/fltk/Group.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Group.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,118 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/HelpDialog.h
===================================================================
--- branches/branch-3.0-2011/fltk/HelpDialog.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/HelpDialog.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,69 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// 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
+#endif

Added: branches/branch-3.0-2011/fltk/HelpView.h
===================================================================
--- branches/branch-3.0-2011/fltk/HelpView.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/HelpView.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,204 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/HighlightButton.h
===================================================================
--- branches/branch-3.0-2011/fltk/HighlightButton.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/HighlightButton.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,48 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Image.h
===================================================================
--- branches/branch-3.0-2011/fltk/Image.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Image.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,119 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Input.h
===================================================================
--- branches/branch-3.0-2011/fltk/Input.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Input.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,135 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/InputBrowser.h
===================================================================
--- branches/branch-3.0-2011/fltk/InputBrowser.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/InputBrowser.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,103 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/IntInput.h
===================================================================
--- branches/branch-3.0-2011/fltk/IntInput.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/IntInput.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,45 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/InvisibleBox.h
===================================================================
--- branches/branch-3.0-2011/fltk/InvisibleBox.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/InvisibleBox.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,33 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Item.h
===================================================================
--- branches/branch-3.0-2011/fltk/Item.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Item.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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
+#endif

Added: branches/branch-3.0-2011/fltk/ItemGroup.h
===================================================================
--- branches/branch-3.0-2011/fltk/ItemGroup.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/ItemGroup.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,78 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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
+#endif

Added: branches/branch-3.0-2011/fltk/LabelType.h
===================================================================
--- branches/branch-3.0-2011/fltk/LabelType.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/LabelType.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,64 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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
+#endif

Added: branches/branch-3.0-2011/fltk/LightButton.h
===================================================================
--- branches/branch-3.0-2011/fltk/LightButton.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/LightButton.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,48 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/LineDial.h
===================================================================
--- branches/branch-3.0-2011/fltk/LineDial.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/LineDial.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,47 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Menu.h
===================================================================
--- branches/branch-3.0-2011/fltk/Menu.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Menu.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,155 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/MenuBar.h
===================================================================
--- branches/branch-3.0-2011/fltk/MenuBar.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/MenuBar.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,54 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/MenuBuild.h
===================================================================
--- branches/branch-3.0-2011/fltk/MenuBuild.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/MenuBuild.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,40 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/MenuWindow.h
===================================================================
--- branches/branch-3.0-2011/fltk/MenuWindow.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/MenuWindow.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,58 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Monitor.h
===================================================================
--- branches/branch-3.0-2011/fltk/Monitor.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Monitor.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,49 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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
+#endif

Added: branches/branch-3.0-2011/fltk/MultiBrowser.h
===================================================================
--- branches/branch-3.0-2011/fltk/MultiBrowser.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/MultiBrowser.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,50 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/MultiImage.h
===================================================================
--- branches/branch-3.0-2011/fltk/MultiImage.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/MultiImage.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,106 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$Id: MultiImage.h 7508 2010-04-15 09:18:51Z spitzak $"
+//
+// 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, &img3);
+  }
+  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 7508 2010-04-15 09:18:51Z spitzak $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/MultiLineInput.h
===================================================================
--- branches/branch-3.0-2011/fltk/MultiLineInput.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/MultiLineInput.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,51 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/MultiLineOutput.h
===================================================================
--- branches/branch-3.0-2011/fltk/MultiLineOutput.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/MultiLineOutput.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,50 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/NumericInput.h
===================================================================
--- branches/branch-3.0-2011/fltk/NumericInput.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/NumericInput.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,55 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $"
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Output.h
===================================================================
--- branches/branch-3.0-2011/fltk/Output.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Output.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,52 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/PackedGroup.h
===================================================================
--- branches/branch-3.0-2011/fltk/PackedGroup.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/PackedGroup.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,73 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/PixelType.h
===================================================================
--- branches/branch-3.0-2011/fltk/PixelType.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/PixelType.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,70 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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
+#endif

Added: branches/branch-3.0-2011/fltk/PopupMenu.h
===================================================================
--- branches/branch-3.0-2011/fltk/PopupMenu.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/PopupMenu.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,59 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Preferences.h
===================================================================
--- branches/branch-3.0-2011/fltk/Preferences.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Preferences.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,112 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+#endif

Added: branches/branch-3.0-2011/fltk/ProgressBar.h
===================================================================
--- branches/branch-3.0-2011/fltk/ProgressBar.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/ProgressBar.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,65 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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
+
+#endif

Added: branches/branch-3.0-2011/fltk/README
===================================================================
--- branches/branch-3.0-2011/fltk/README	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/README	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/fltk/RadioButton.h
===================================================================
--- branches/branch-3.0-2011/fltk/RadioButton.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/RadioButton.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,49 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/RadioItem.h
===================================================================
--- branches/branch-3.0-2011/fltk/RadioItem.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/RadioItem.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,44 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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
+#endif

Added: branches/branch-3.0-2011/fltk/RadioLightButton.h
===================================================================
--- branches/branch-3.0-2011/fltk/RadioLightButton.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/RadioLightButton.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,48 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Rectangle.h
===================================================================
--- branches/branch-3.0-2011/fltk/Rectangle.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Rectangle.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,125 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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
+#endif

Added: branches/branch-3.0-2011/fltk/RepeatButton.h
===================================================================
--- branches/branch-3.0-2011/fltk/RepeatButton.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/RepeatButton.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,50 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/ReturnButton.h
===================================================================
--- branches/branch-3.0-2011/fltk/ReturnButton.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/ReturnButton.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,44 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+#endif

Added: branches/branch-3.0-2011/fltk/ScrollGroup.h
===================================================================
--- branches/branch-3.0-2011/fltk/ScrollGroup.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/ScrollGroup.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,93 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Scrollbar.h
===================================================================
--- branches/branch-3.0-2011/fltk/Scrollbar.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Scrollbar.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,67 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/SecretInput.h
===================================================================
--- branches/branch-3.0-2011/fltk/SecretInput.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/SecretInput.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,50 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/ShapedWindow.h
===================================================================
--- branches/branch-3.0-2011/fltk/ShapedWindow.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/ShapedWindow.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $"
+//
+#endif

Added: branches/branch-3.0-2011/fltk/SharedImage.h
===================================================================
--- branches/branch-3.0-2011/fltk/SharedImage.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/SharedImage.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,239 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $"
+#endif

Added: branches/branch-3.0-2011/fltk/Slider.h
===================================================================
--- branches/branch-3.0-2011/fltk/Slider.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Slider.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,98 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/StatusBarGroup.h
===================================================================
--- branches/branch-3.0-2011/fltk/StatusBarGroup.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/StatusBarGroup.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,93 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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"
+//
+#endif

Added: branches/branch-3.0-2011/fltk/StringList.h
===================================================================
--- branches/branch-3.0-2011/fltk/StringList.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/StringList.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,75 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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
+#endif

Added: branches/branch-3.0-2011/fltk/Style.h
===================================================================
--- branches/branch-3.0-2011/fltk/Style.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Style.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,210 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/StyleSet.h
===================================================================
--- branches/branch-3.0-2011/fltk/StyleSet.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/StyleSet.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,51 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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
+#endif

Added: branches/branch-3.0-2011/fltk/Symbol.h
===================================================================
--- branches/branch-3.0-2011/fltk/Symbol.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Symbol.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,94 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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
+#endif

Added: branches/branch-3.0-2011/fltk/SystemMenuBar.h
===================================================================
--- branches/branch-3.0-2011/fltk/SystemMenuBar.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/SystemMenuBar.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,65 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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:$".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/TabGroup.h
===================================================================
--- branches/branch-3.0-2011/fltk/TabGroup.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/TabGroup.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,144 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/TextBuffer.h
===================================================================
--- branches/branch-3.0-2011/fltk/TextBuffer.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/TextBuffer.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,288 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+
+#endif

Added: branches/branch-3.0-2011/fltk/TextDisplay.h
===================================================================
--- branches/branch-3.0-2011/fltk/TextDisplay.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/TextDisplay.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,361 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+
+#endif

Added: branches/branch-3.0-2011/fltk/TextEditor.h
===================================================================
--- branches/branch-3.0-2011/fltk/TextEditor.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/TextEditor.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,125 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+
+
+#endif

Added: branches/branch-3.0-2011/fltk/Threads.h
===================================================================
--- branches/branch-3.0-2011/fltk/Threads.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Threads.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,209 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#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
+#endif

Added: branches/branch-3.0-2011/fltk/ThumbWheel.h
===================================================================
--- branches/branch-3.0-2011/fltk/ThumbWheel.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/ThumbWheel.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,57 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/TiledGroup.h
===================================================================
--- branches/branch-3.0-2011/fltk/TiledGroup.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/TiledGroup.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,53 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/TiledImage.h
===================================================================
--- branches/branch-3.0-2011/fltk/TiledImage.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/TiledImage.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,53 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $"
+//
+#endif

Added: branches/branch-3.0-2011/fltk/ToggleButton.h
===================================================================
--- branches/branch-3.0-2011/fltk/ToggleButton.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/ToggleButton.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,47 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/ToggleItem.h
===================================================================
--- branches/branch-3.0-2011/fltk/ToggleItem.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/ToggleItem.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,44 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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
+#endif

Added: branches/branch-3.0-2011/fltk/Tooltip.h
===================================================================
--- branches/branch-3.0-2011/fltk/Tooltip.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Tooltip.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,89 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Valuator.h
===================================================================
--- branches/branch-3.0-2011/fltk/Valuator.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Valuator.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,96 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+#endif

Added: branches/branch-3.0-2011/fltk/ValueInput.h
===================================================================
--- branches/branch-3.0-2011/fltk/ValueInput.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/ValueInput.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,61 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/ValueOutput.h
===================================================================
--- branches/branch-3.0-2011/fltk/ValueOutput.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/ValueOutput.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,48 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/ValueSlider.h
===================================================================
--- branches/branch-3.0-2011/fltk/ValueSlider.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/ValueSlider.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,55 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/Widget.h
===================================================================
--- branches/branch-3.0-2011/fltk/Widget.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Widget.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,334 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/WidgetAssociation.h
===================================================================
--- branches/branch-3.0-2011/fltk/WidgetAssociation.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/WidgetAssociation.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,84 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#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
+#endif

Added: branches/branch-3.0-2011/fltk/Window.h
===================================================================
--- branches/branch-3.0-2011/fltk/Window.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/Window.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,161 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/WizardGroup.h
===================================================================
--- branches/branch-3.0-2011/fltk/WizardGroup.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/WizardGroup.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,62 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/WordwrapInput.h
===================================================================
--- branches/branch-3.0-2011/fltk/WordwrapInput.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/WordwrapInput.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,48 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/WordwrapOutput.h
===================================================================
--- branches/branch-3.0-2011/fltk/WordwrapOutput.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/WordwrapOutput.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,48 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/ask.h
===================================================================
--- branches/branch-3.0-2011/fltk/ask.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/ask.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,83 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Enumerations.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Enumerations.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Enumerations.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,360 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$Id: Enumerations.H 5389 2006-09-01 15:39:19Z spitzak $"
+//
+// Enumerations 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 Fl_Enumerations_H
+#define Fl_Enumerations_H
+
+# include <fltk/FL_API.h>
+# include <fltk/FL_VERSION.h>
+
+enum Fl_Event {	// these should match fltk/events.h
+  FL_NO_EVENT		= 0,
+  FL_PUSH		= 1,
+  FL_RELEASE		= 2,
+  FL_ENTER		= 3,
+  FL_LEAVE		= 4,
+  FL_DRAG		= 5,
+  FL_FOCUS		= 6,
+  FL_UNFOCUS		= 7,
+  FL_KEYDOWN		= 8,
+  FL_KEYBOARD		= FL_KEYDOWN,
+  FL_KEYUP		= 9,
+  //FL_CLOSE		= 10, // not in fltk2.0
+  FL_MOVE		= 11,
+  FL_SHORTCUT		= 12,
+  FL_DEACTIVATE		= 13,
+  FL_ACTIVATE		= 14,
+  FL_HIDE		= 15,
+  FL_SHOW		= 16,
+  FL_PASTE		= 17,
+  //FL_SELECTIONCLEAR	= 18, // not in fltk2.0
+  FL_MOUSEWHEEL		= 19,
+  FL_DND_ENTER		= 20,
+  FL_DND_DRAG		= 21,
+  FL_DND_LEAVE		= 22,
+  FL_DND_RELEASE	= 23
+};
+
+enum Fl_When { // These should match values in fltk/Widget.h
+  FL_WHEN_NEVER		= 0,
+  FL_WHEN_CHANGED	= 1,
+  FL_WHEN_RELEASE	= 4,
+  FL_WHEN_RELEASE_ALWAYS= 6,
+  FL_WHEN_ENTER_KEY	= 8,
+  FL_WHEN_ENTER_KEY_ALWAYS=10,
+  FL_WHEN_ENTER_KEY_CHANGED=11,
+  FL_WHEN_NOT_CHANGED	= 2 // modifier bit to disable changed() test
+};
+
+// These should match symbols in fltk/events.h:
+#define FL_Button	0 // old value was 0xfee8
+#define FL_LEFT_MOUSE	1
+#define FL_MIDDLE_MOUSE	2
+#define FL_RIGHT_MOUSE	3
+#define FL_BackSpace	0xff08
+#define FL_Tab		0xff09
+#define FL_Enter	0xff0d
+#define FL_Pause	0xff13
+#define FL_Scroll_Lock	0xff14
+#define FL_Escape	0xff1b
+#define FL_Home		0xff50
+#define FL_Left		0xff51
+#define FL_Up		0xff52
+#define FL_Right	0xff53
+#define FL_Down		0xff54
+#define FL_Page_Up	0xff55
+#define FL_Page_Down	0xff56
+#define FL_End		0xff57
+#define FL_Print	0xff61
+#define FL_Insert	0xff63
+#define FL_Menu		0xff67 // the "menu/apps" key on XFree86
+#define FL_Help		0xff68 // the 'help' key on Mac keyboards
+#define FL_Num_Lock	0xff7f
+#define FL_KP		0xff80 // use FL_KP+'x' for 'x' on numeric keypad
+#define FL_KP_Enter	0xff8d // same as Fl_KP+'\r'
+#define FL_KP_Last	0xffbd // use to range-check keypad
+#define FL_F		0xffbd // use FL_F+n for function key n
+#define FL_F_Last	0xffe0 // use to range-check function keys
+#define FL_Shift_L	0xffe1
+#define FL_Shift_R	0xffe2
+#define FL_Control_L	0xffe3
+#define FL_Control_R	0xffe4
+#define FL_Caps_Lock	0xffe5
+#define FL_Meta_L	0xffe7
+#define FL_Meta_R	0xffe8
+#define FL_Alt_L	0xffe9
+#define FL_Alt_R	0xffea
+#define FL_Delete	0xffff
+
+#define FL_SHIFT	0x00010000
+#define FL_CAPS_LOCK	0x00020000
+#define FL_CTRL		0x00040000
+#define FL_ALT		0x00080000
+#define FL_NUM_LOCK	0x00100000 // most X servers do this?
+#define FL_META		0x00400000
+#define FL_SCROLL_LOCK	0x00800000
+#define FL_BUTTON1	0x01000000
+#define FL_BUTTON2	0x02000000
+#define FL_BUTTON3	0x04000000
+#define FL_BUTTONS	0x7f000000 // All possible buttons
+#define FL_BUTTON(n)	(0x00800000<<(n))
+
+#ifdef __APPLE__
+#  define FL_COMMAND	FL_META
+#else
+#  define FL_COMMAND	FL_CTRL
+#endif // __APPLE__
+
+#include <fltk/Style.h>
+
+typedef fltk::Box* Fl_Boxtype;
+
+// Box types. Many of the FRAME types are deleted in fltk2.0, these have
+// been replaced with the equivalent BOX which draws it's inner area:
+#define FL_NO_BOX		fltk::NO_BOX
+#define FL_FLAT_BOX		fltk::FLAT_BOX
+#define FL_UP_BOX		fltk::UP_BOX
+#define FL_DOWN_BOX		fltk::DOWN_BOX
+#define FL_UP_FRAME		fltk::UP_BOX //
+#define FL_DOWN_FRAME		fltk::DOWN_BOX //
+#define FL_THIN_UP_BOX		fltk::THIN_UP_BOX
+#define FL_THIN_DOWN_BOX	fltk::THIN_DOWN_BOX
+#define FL_THIN_UP_FRAME	fltk::THIN_UP_BOX //
+#define FL_THIN_DOWN_FRAME	fltk::THIN_DOWN_BOX //
+#define FL_ENGRAVED_BOX		fltk::ENGRAVED_BOX
+#define FL_EMBOSSED_BOX		fltk::EMBOSSED_BOX
+#define FL_ENGRAVED_FRAME	fltk::ENGRAVED_BOX //
+#define FL_EMBOSSED_FRAME	fltk::EMBOSSED_BOX //
+#define FL_BORDER_BOX		fltk::BORDER_BOX
+#define FL_SHADOW_BOX		fltk::SHADOW_BOX
+#define FL_BORDER_FRAME		fltk::BORDER_FRAME
+#define FL_SHADOW_FRAME		fltk::SHADOW_BOX //
+#define FL_ROUNDED_BOX		fltk::ROUNDED_BOX
+#define FL_RSHADOW_BOX		fltk::RSHADOW_BOX
+#define FL_ROUNDED_FRAME	fltk::ROUNDED_BOX //
+#define FL_RFLAT_BOX		fltk::RFLAT_BOX
+#define FL_ROUND_UP_BOX		fltk::ROUND_UP_BOX
+#define FL_ROUND_DOWN_BOX	fltk::ROUND_DOWN_BOX
+#define FL_DIAMOND_UP_BOX	fltk::DIAMOND_UP_BOX
+#define FL_DIAMOND_DOWN_BOX	fltk::DIAMOND_DOWN_BOX
+#define FL_OVAL_BOX		fltk::OVAL_BOX
+#define FL_OSHADOW_BOX		fltk::OSHADOW_BOX
+#define FL_OVAL_FRAME		fltk::OVAL_BOX //
+#define FL_OFLAT_BOX		fltk::OFLAT_BOX
+#define FL_PLASTIC_UP_BOX	fltk::PLASTIC_UP_BOX
+#define FL_PLASTIC_DOWN_BOX	fltk::PLASTIC_DOWN_BOX
+#define FL_PLASTIC_UP_FRAME	fltk::PLASTIC_UP_BOX //
+#define FL_PLASTIC_DOWN_FRAME	fltk::PLASTIC_DOWN_BOX //
+//#define FL_FREE_BOXTYPE not used in fltk 2.0
+
+// conversions of box types to other boxtypes:
+//inline Fl_Boxtype fl_down(Fl_Boxtype b) // not implemented
+//inline Fl_Boxtype fl_frame(Fl_Boxtype b)
+
+// back-compatability box types:
+#define FL_FRAME		FL_ENGRAVED_FRAME
+#define FL_FRAME_BOX		FL_ENGRAVED_BOX
+#define FL_CIRCLE_BOX		FL_ROUND_DOWN_BOX
+#define FL_DIAMOND_BOX		FL_DIAMOND_DOWN_BOX
+
+// labeltypes:
+#define FL_NO_LABEL		fltk::NO_LABEL
+#define FL_NORMAL_LABEL		fltk::NORMAL_LABEL
+#define FL_SHADOW_LABEL		fltk::SHADOW_LABEL
+#define FL_ENGRAVED_LABEL	fltk::ENGRAVED_LABEL
+#define FL_EMBOSSED_LABEL	fltk::EMBOSSED_LABEL
+//#define FL_FREE_LABELTYPE not used in fltk2.0
+#define FL_SYMBOL_LABEL		FL_NORMAL_LABEL
+
+#define Fl_Align		fltk::Flags
+enum {
+  FL_ALIGN_CENTER		= 0,
+  FL_ALIGN_TOP			= fltk::ALIGN_TOP,
+  FL_ALIGN_BOTTOM		= fltk::ALIGN_BOTTOM,
+  FL_ALIGN_LEFT			= fltk::ALIGN_LEFT,
+  FL_ALIGN_RIGHT		= fltk::ALIGN_RIGHT,
+  FL_ALIGN_INSIDE		= fltk::ALIGN_INSIDE,
+  FL_ALIGN_TEXT_OVER_IMAGE	= fltk::ALIGN_BOTTOM|fltk::ALIGN_INSIDE, //
+  FL_ALIGN_IMAGE_OVER_TEXT	= 0,
+  FL_ALIGN_CLIP			= fltk::ALIGN_CLIP,
+  FL_ALIGN_WRAP			= fltk::ALIGN_WRAP,
+  FL_ALIGN_MASK			= fltk::ALIGN_MASK,
+  FL_ALIGN_TOP_LEFT		= FL_ALIGN_TOP | FL_ALIGN_LEFT,
+  FL_ALIGN_TOP_RIGHT		= FL_ALIGN_TOP | FL_ALIGN_RIGHT,
+  FL_ALIGN_BOTTOM_LEFT		= FL_ALIGN_BOTTOM | FL_ALIGN_LEFT,
+  FL_ALIGN_BOTTOM_RIGHT		= FL_ALIGN_BOTTOM | FL_ALIGN_RIGHT,
+  FL_ALIGN_LEFT_TOP		= FL_ALIGN_TOP_LEFT,
+  FL_ALIGN_RIGHT_TOP		= FL_ALIGN_TOP_RIGHT,
+  FL_ALIGN_LEFT_BOTTOM		= FL_ALIGN_BOTTOM_LEFT,
+  FL_ALIGN_RIGHT_BOTTOM		= FL_ALIGN_BOTTOM_RIGHT,
+  FL_ALIGN_NOWRAP		= 0
+};
+
+#define FL_HELVETICA		fltk::HELVETICA
+#define FL_HELVETICA_BOLD	fltk::HELVETICA_BOLD
+#define FL_HELVETICA_ITALIC	fltk::HELVETICA_ITALIC
+#define FL_HELVETICA_BOLD_ITALIC fltk::HELVETICA_BOLD_ITALIC
+#define FL_COURIER		fltk::COURIER
+#define FL_COURIER_BOLD		fltk::COURIER_BOLD
+#define FL_COURIER_ITALIC	fltk::COURIER_ITALIC
+#define FL_COURIER_BOLD_ITALIC	fltk::COURIER_BOLD_ITALIC
+#define FL_TIMES		fltk::TIMES
+#define FL_TIMES_BOLD		fltk::TIMES_BOLD
+#define FL_TIMES_ITALIC		fltk::TIMES_ITALIC
+#define FL_TIMES_BOLD_ITALIC	fltk::TIMES_BOLD_ITALIC
+#define FL_SYMBOL		fltk::SYMBOL_FONT
+#define FL_SCREEN		fltk::SCREEN_FONT
+#define FL_SCREEN_BOLD		fltk::SCREEN_BOLD_FONT
+#define FL_ZAPF_DINGBATS	fltk::ZAPF_DINGBATS
+//#define FL_FREE_FONT
+// These used to be added to the above fonts but were sometimes used alone
+// because FL_HELVETICA was zero. Only using these by themselves works now:
+#define FL_BOLD			fltk::HELVETICA_BOLD
+#define FL_ITALIC		fltk::HELVETICA_ITALIC
+
+#define FL_NORMAL_SIZE (fltk::Widget::default_style->labelsize_)
+#define FL_FOREGROUND_COLOR (fltk::Widget::default_style->labelcolor_)
+#define FL_BACKGROUND2_COLOR (fltk::Widget::default_style->color_)
+#define FL_SELECTION_COLOR (fltk::Widget::default_style->selection_color_)
+
+#define Fl_Color	fltk::Color
+enum {
+  FL_GRAY0		= fltk::GRAY00,
+  FL_DARK3		= fltk::GRAY33,
+  FL_DARK2		= fltk::GRAY60,
+  FL_DARK1		= fltk::GRAY66,
+  FL_GRAY		= fltk::GRAY75,
+  FL_BACKGROUND_COLOR	= fltk::GRAY75,
+  FL_LIGHT1		= fltk::GRAY85,
+  FL_LIGHT2		= fltk::GRAY90,
+  FL_LIGHT3		= fltk::GRAY99,
+
+  FL_BLACK		= fltk::BLACK,
+  FL_RED		= fltk::RED,
+  FL_GREEN		= fltk::GREEN,
+  FL_YELLOW		= fltk::YELLOW,
+  FL_BLUE		= fltk::BLUE,
+  FL_MAGENTA		= fltk::MAGENTA,
+  FL_CYAN		= fltk::CYAN,
+  FL_DARK_RED		= 72,
+
+  FL_DARK_GREEN		= 60,
+  FL_DARK_YELLOW	= 76,
+  FL_DARK_BLUE		= 136,
+  FL_DARK_MAGENTA	= 152,
+  FL_DARK_CYAN		= 140,
+
+  FL_WHITE		= fltk::WHITE,
+
+  FL_FREE_COLOR		= 16,
+  FL_NUM_FREE_COLOR	= 16,
+  FL_GRAY_RAMP		= fltk::GRAY00,
+  FL_NUM_GRAY		= 24,
+  FL_COLOR_CUBE		= fltk::BLACK,
+  FL_NUM_RED		= 5,
+  FL_NUM_GREEN		= 8,
+  FL_NUM_BLUE		= 5
+};
+
+#define fl_inactive(c)		fltk::inactive(c)
+#define fl_contrast(a,b)	fltk::contrast(a,b)
+#define fl_color_average(a,b,c)	fltk::lerp(b,a,c)
+#define fl_lighter(c)		fltk::lerp(fltk::WHITE,c,.67f)
+#define fl_darker(c)		fltk::lerp(fltk::BLACK,c,.67f)
+#define fl_rgb_color		fltk::color
+#define fl_gray_ramp(i)		(fltk::GRAY00+(i))
+#define fl_color_cube(r,g,b)	(((b)*5+(r))*8+(g)+fltk::BLACK)
+
+#include <fltk/Cursor.h>
+#define Fl_Cursor		fltk::Cursor*
+#define FL_CURSOR_DEFAULT	fltk::CURSOR_DEFAULT
+#define FL_CURSOR_ARROW		fltk::CURSOR_ARROW
+#define FL_CURSOR_CROSS		fltk::CURSOR_CROSS
+#define FL_CURSOR_WAIT		fltk::CURSOR_WAIT
+#define FL_CURSOR_INSERT	fltk::CURSOR_INSERT
+#define FL_CURSOR_HAND		fltk::CURSOR_HAND
+#define FL_CURSOR_HELP		fltk::CURSOR_HELP
+#define FL_CURSOR_MOVE		fltk::CURSOR_MOVE
+#define FL_CURSOR_NS		fltk::CURSOR_NS
+#define FL_CURSOR_WE		fltk::CURSOR_WE
+#define FL_CURSOR_NWSE		fltk::CURSOR_NWSE
+#define FL_CURSOR_NESW		fltk::CURSOR_NESW
+#define FL_CURSOR_NO		fltk::CURSOR_NO
+#define FL_CURSOR_NONE		fltk::CURSOR_NONE
+#define FL_CURSOR_N		fltk::CURSOR_NS
+#define FL_CURSOR_NE		fltk::CURSOR_NESW
+#define FL_CURSOR_E		fltk::CURSOR_WE
+#define FL_CURSOR_SE		fltk::CURSOR_NWSE
+#define FL_CURSOR_S		fltk::CURSOR_NS
+#define FL_CURSOR_SW		fltk::CURSOR_NESW
+#define FL_CURSOR_W		fltk::CURSOR_WE
+#define FL_CURSOR_NW		fltk::CURSOR_NWSE
+
+enum { // must match values in fltk/run.h
+  FL_READ = 1,
+  FL_WRITE = 4,
+  FL_EXCEPT = 8
+};
+
+enum Fl_Mode { // must match values in fltk/visual.h
+  FL_RGB	= 0,
+  FL_INDEX	= 1,
+  FL_SINGLE	= 0,
+  FL_DOUBLE	= 2,
+  FL_ACCUM	= 4,
+  FL_ALPHA	= 8,
+  FL_DEPTH	= 16,
+  FL_STENCIL	= 32,
+  FL_RGB8	= 64,
+  FL_MULTISAMPLE= 128,
+  FL_STEREO     = 256,
+  FL_FAKE_SINGLE = 512	// Fake single buffered windows using double-buffer
+};
+
+#include <fltk/damage.h>
+enum Fl_Damage {
+  FL_DAMAGE_CHILD    = fltk::DAMAGE_CHILD,
+  FL_DAMAGE_EXPOSE   = fltk::DAMAGE_EXPOSE,
+  FL_DAMAGE_SCROLL   = fltk::DAMAGE_SCROLL,
+  FL_DAMAGE_OVERLAY  = fltk::DAMAGE_OVERLAY,
+  FL_DAMAGE_ALL      = fltk::DAMAGE_ALL
+};
+
+// FLTK 1.0.x compatibility definitions...
+#  ifdef FLTK_1_0_COMPAT
+#    define contrast	fl_contrast
+#    define down	fl_down
+#    define frame	fl_frame
+#    define inactive	fl_inactive
+#  endif // FLTK_1_0_COMPAT
+
+#endif
+
+//
+// End of "$Id: Enumerations.H 5389 2006-09-01 15:39:19Z spitzak $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,70 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_H
+#  define Fl_H
+
+#include "Enumerations.H"
+#include <fltk/run.h>
+#include <fltk/events.h>
+#include <fltk/Color.h>
+#include <fltk/Font.h>
+#include <fltk/Box.h>
+#include <fltk/error.h>
+#include <fltk/visual.h>
+#include <fltk/Monitor.h>
+#include <fltk/Widget.h>
+
+namespace Fl = fltk;
+
+typedef fltk::TimeoutHandler Fl_Timeout_Handler;
+
+namespace fltk {
+
+  class Widget;
+
+  // fltk2 does not keep track of selection owner:
+  inline fltk::Widget* selection_owner() {return 0;}
+  inline void selection_owner(fltk::Widget*) {}
+  inline void selection(fltk::Widget &owner, const char* b, int len) {copy(b,len,false);}
+
+  inline void visible_focus(int) {} // fltk2 always acts like this is off
+
+  inline int x() {return Monitor::all().x();}
+  inline int y() {return Monitor::all().y();}
+  inline int w() {return Monitor::all().w();}
+  inline int h() {return Monitor::all().h();}
+
+  inline void set_color(Color c, uchar r, uchar g, uchar b) {
+    set_color_index(c,color(r,g,b));
+  }
+  inline void set_color(Color c, Color d) {set_color_index(c,d);}
+  inline Color get_color(Color c) {return get_color_index(c);}
+  inline void get_color(Color c, uchar&r, uchar&g, uchar&b) {split_color(c,r,g,b);}
+  //inline void free_color(Color, bool overlay=false);
+
+  inline const char* get_font(Font* f) {return f->system_name();}
+  inline const char* get_font_name(Font* f, int* attributes = 0) {
+    if (attributes) return f->name(attributes);
+    else return f->name();
+  }
+  inline int get_font_sizes(Font* f, int*& sizep) {return f->sizes(sizep);}
+
+  inline int box_dx(const Box* b) {return b->dx();}
+  inline int box_dy(const Box* b) {return b->dy();}
+  inline int box_dw(const Box* b) {return b->dw();}
+  inline int box_dh(const Box* b) {return b->dh();}
+
+  inline int event_key(int k) {return event_key_state(k);}
+
+  inline void add_handler(int (*h)(int)) {
+    // rather unsafe typecast of function:
+    add_event_handler((int(*)(int,Window*))(h));
+  }
+
+  inline void delete_widget(Widget* w) {delete w;}
+  inline void do_widget_deletion() {}
+
+}
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Adjuster.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Adjuster.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Adjuster.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,10 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Adjuster_H
+#define Fl_Adjuster_H
+
+#include <fltk/Adjuster.h>
+typedef fltk::Adjuster Fl_Adjuster;
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Box.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Box.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Box.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,20 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$Id: Fl_Box.H 4922 2006-04-10 09:30:57Z fabien $"
+//
+// Back-compatability widget.
+
+#ifndef Fl_Box_H
+#define Fl_Box_H
+
+#include "Fl_Widget.H"
+#include <fltk/InvisibleBox.h>
+typedef fltk::InvisibleBox Fl_Box;
+
+#endif
+
+//
+// End of "$Id: Fl_Box.H 4922 2006-04-10 09:30:57Z fabien $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Browser.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Browser.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Browser.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,27 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Browser_H
+#define Fl_Browser_H
+
+#include "Fl_Scrollbar.H"
+#include "Fl_Menu_.H"
+#include <fltk/Browser.h>
+class Fl_Browser : public fltk::Browser {
+public:
+  Fl_Browser(int x, int y, int w, int h, const char* l = 0)
+    :fltk::Browser(x,y,w,h,l) {}
+
+  void make_visible(int n) {goto_index(n); make_item_visible();}
+  bool load(const char* fname) {/* NYI */ return true;}
+  void position(int y) {goto_position(y);}
+};
+
+enum {
+  FL_NORMAL_BROWSER	= fltk::Browser::NORMAL,
+  FL_SELECT_BROWSER	= fltk::Browser::NORMAL,
+  FL_HOLD_BROWSER	= fltk::Browser::NORMAL,
+  FL_MULTI_BROWSER	= fltk::Browser::MULTI
+};
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Button.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Button.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,19 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Button_H
+#define Fl_Button_H
+
+#include "Fl_Widget.H"
+#include <fltk/Button.h>
+typedef fltk::Button Fl_Button;
+
+enum {
+  FL_NORMAL_BUTTON	= 0,
+  FL_TOGGLE_BUTTON	= fltk::Button::TOGGLE,
+  FL_RADIO_BUTTON	= fltk::Button::RADIO,
+  FL_HIDDEN_BUTTON	= fltk::Button::HIDDEN // may not work in 2.0
+};
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Chart.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Chart.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Chart.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,86 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$Id: Fl_Chart.H 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Forms chart 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 Fl_Chart_H
+#define Fl_Chart_H
+
+#include <fltk/Widget.h>
+
+// values for type()
+#define FL_BAR_CHART		0
+#define FL_HORBAR_CHART		1
+#define FL_LINE_CHART		2
+#define FL_FILL_CHART		3
+#define FL_SPIKE_CHART		4
+#define FL_PIE_CHART		5
+#define FL_SPECIALPIE_CHART	6
+
+#define FL_FILLED_CHART  FL_FILL_CHART	// compatibility
+
+#define FL_CHART_MAX		128
+#define FL_CHART_LABEL_MAX	18
+
+struct FL_FORMS_API FL_CHART_ENTRY {
+   float val;
+   uchar col;
+   char str[FL_CHART_LABEL_MAX+1];
+};
+
+class FL_FORMS_API Fl_Chart : public fltk::Widget {
+public:
+  Fl_Chart(int,int,int,int,const char * = 0);
+  ~Fl_Chart();
+  void clear();
+  void add(double, const char * =0, uchar=0);
+  void insert(int, double, const char * =0, uchar=0);
+  void replace(int, double, const char * =0, uchar=0);
+  void bounds(double *a,double *b) const {*a = min; *b = max;}
+  void bounds(double a,double b);
+  int size() const {return numb;}
+  int maxsize() const {return maxnumb;}
+  void maxsize(int);
+  uchar autosize() const {return autosize_;}
+  void autosize(uchar n) {autosize_ = n;}
+
+protected:
+  void draw();
+
+private:
+  uchar autosize_;
+  int numb;
+  int maxnumb;
+  int sizenumb;
+  FL_CHART_ENTRY *entries;
+  double min,max;
+};
+
+#endif
+
+//
+// End of "$Id: Fl_Chart.H 4886 2006-03-30 09:55:32Z fabien $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Check_Button.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Check_Button.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Check_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,11 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Check_Button_H
+#define Fl_Check_Button_H
+
+#include <fltk/CheckButton.h>
+typedef fltk::CheckButton Fl_Check_Button;
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Choice.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Choice.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Choice.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,11 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Choice_H
+#define Fl_Choice_H
+
+#include "Fl_Menu_.H"
+#include <fltk/Choice.h>
+typedef fltk::Choice Fl_Choice;
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Clock.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Clock.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Clock.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,21 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Clock_H
+#define Fl_Clock_H
+
+#include "Fl_Widget.H"
+#include <fltk/Clock.h>
+
+typedef fltk::ClockOutput Fl_Clock_Output;
+typedef fltk::Clock Fl_Clock;
+
+enum {
+  FL_SQUARE_CLOCK	= fltk::Clock::SQUARE,
+  FL_ROUND_CLOCK	= fltk::Clock::ROUND,
+  FL_ANALOG_CLOCK	= fltk::Clock::SQUARE,
+  FL_DIGITAL_CLOCK	= fltk::Clock::DIGITAL // nyi
+};
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Color_Chooser.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Color_Chooser.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Color_Chooser.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,11 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Color_Chooser_H
+#define Fl_Color_Chooser_H
+
+#include <fltk/ColorChooser.h>
+typedef fltk::ColorChooser Fl_Color_Chooser;
+#define fl_color_chooser fltk::color_chooser
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Counter.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Counter.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Counter.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,18 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Counter_H
+#define Fl_Counter_H
+
+#include <fltk/ValueInput.h>
+class Fl_Counter : public fltk::ValueInput {
+public:
+  Fl_Counter(int x, int y, int w, int h, const char* l = 0)
+    : fltk::ValueInput(x,y,w,h,l) {align(fltk::ALIGN_BOTTOM);}
+};
+
+// these don't do anything:
+#define FL_NORMAL_COUNTER	0
+#define FL_SIMPLE_COUNTER	1
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Dial.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Dial.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Dial.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,18 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Dial_H
+#define Fl_Dial_H
+
+#include "Fl_Widget.H"
+#include <fltk/Dial.h>
+typedef fltk::Dial Fl_Dial;
+
+enum {
+  FL_NORMAL_DIAL	= fltk::Dial::NORMAL,
+  FL_LINE_DIAL		= fltk::Dial::LINE,
+  FL_FILL_DIAL		= fltk::Dial::FILL
+};
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Double_Window.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Double_Window.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Double_Window.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,21 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Double_Window_H
+#define Fl_Double_Window_H
+
+#include "Fl_Window.H"
+
+class Fl_Double_Window : public Fl_Window {
+
+public:
+  Fl_Double_Window(int x, int y, int w, int h, const char*l = 0)
+    : Fl_Window(x,y,w,h,l) {set_double_buffer();}
+    
+  Fl_Double_Window(int x, int y, const char*l = 0)
+    : Fl_Window(x,y,l) {set_double_buffer();}
+
+};
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_File_Chooser.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_File_Chooser.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_File_Chooser.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,19 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_File_Chooser_H
+#define Fl_File_Chooser_H
+
+#include "Fl_Widget.H"
+
+#include <fltk/FileChooser.h>
+typedef fltk::FileChooser Fl_File_Chooser;
+
+#include <fltk/file_chooser.h>
+
+//char *fl_dir_chooser(const char *message,const char *fname,int relative=0);
+inline const char *fl_file_chooser(const char *message,const char *pat,const char *fname,int /*relative*/ = 0) {
+  return fltk::file_chooser(message, pat, fname);
+}
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Gl_Window.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Gl_Window.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Gl_Window.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,12 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Gl_Window_H
+#define Fl_Gl_Window_H
+
+#include "Fl_Window.H"
+
+#include <fltk/GlWindow.h>
+typedef fltk::GlWindow Fl_Gl_Window;
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Group.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Group.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Group.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,19 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Group_H
+#define Fl_Group_H
+
+#include "Fl_Widget.H"
+#include <fltk/Group.h>
+
+class Fl_Group : public fltk::Group {
+
+public:
+  Fl_Group(int x, int y, int w, int h, const char*l = 0)
+    : fltk::Group(x,y,w,h,l) {begin();}
+  static Fl_Group* current() {return (Fl_Group*)(fltk::Group::current());}
+};
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Hold_Browser.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Hold_Browser.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Hold_Browser.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,11 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Hold_Browser_H
+#define Fl_Hold_Browser_H
+
+#include "Fl_Browser.H"
+typedef Fl_Browser Fl_Hold_Browser;
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Hor_Slider.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Hor_Slider.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Hor_Slider.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,11 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Hor_Slider_H
+#define Fl_Hor_Slider_H
+
+#include "Fl_Slider.H"
+typedef fltk::Slider Fl_Hor_Slider;
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Hor_Value_Slider.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Hor_Value_Slider.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Hor_Value_Slider.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,11 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Hor_Value_Slider_H
+#define Fl_Hor_Value_Slider_H
+
+#include "Fl_Value_Slider.H"
+typedef fltk::ValueSlider Fl_Hor_Value_Slider;
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Input.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Input.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Input.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,30 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Input_H
+#define Fl_Input_H
+
+#include "Fl_Widget.H"
+#include <fltk/Input.h>
+class Fl_Input : public fltk::Input {
+public:
+  Fl_Input(int x, int y, int w, int h, const char* l=0) : fltk::Input(x,y,w,h,l) {}
+  int wrap() const { return type() == fltk::Input::WORDWRAP; }
+  void wrap(int b) { type(b ? fltk::Input::WORDWRAP : fltk::Input::MULTILINE);}
+};
+
+enum {
+  FL_NORMAL_INPUT	= fltk::Input::NORMAL,
+  FL_FLOAT_INPUT	= 1, // probably needs the IntInput subclass!
+  FL_INT_INPUT		= 2,
+//FL_HIDDEN_INPUT	// not in fltk2.0
+  FL_MULTILINE_INPUT	= fltk::Input::MULTILINE,
+  FL_SECRET_INPUT	= fltk::Input::SECRET,
+//FL_INPUT_TYPE		= 7,
+//FL_INPUT_READONLY	= 8,
+  FL_INPUT_WRAP		= fltk::Input::WORDWRAP,
+  FL_MULTILINE_INPUT_WRAP = fltk::Input::WORDWRAP
+};
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Int_Input.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Int_Input.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Int_Input.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,11 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Int_Input_H
+#define Fl_Int_Input_H
+
+#include <fltk/IntInput.h>
+typedef fltk::IntInput Fl_Int_Input;
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Light_Button.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Light_Button.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Light_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,12 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Light_Button_H
+#define Fl_Light_Button_H
+
+#include "Fl_Button.H"
+#include <fltk/LightButton.h>
+typedef fltk::LightButton Fl_Light_Button;
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Menu_.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Menu_.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Menu_.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,11 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Menu__H
+#define Fl_Menu__H
+
+#include "Fl_Menu_Item.H"
+#include <fltk/Menu.h>
+typedef fltk::Menu Fl_Menu_;
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Menu_Bar.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Menu_Bar.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Menu_Bar.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,11 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Menu_Bar_H
+#define Fl_Menu_Bar_H
+
+#include "Fl_Menu_.H"
+#include <fltk/MenuBar.h>
+typedef fltk::MenuBar Fl_Menu_Bar;
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Menu_Button.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Menu_Button.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Menu_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,11 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Menu_Button_H
+#define Fl_Menu_Button_H
+
+#include "Fl_Menu_.H"
+#include <fltk/PopupMenu.h>
+typedef fltk::PopupMenu Fl_Menu_Button;
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Menu_Item.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Menu_Item.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Menu_Item.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,166 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$Id: Fl_Menu_Item.H 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Back-compatability menu items for FLTK.  The new fltk::Menu class
+// converts these tables into child fltk::Item and fltk::ItemGroup widgets.
+// You should not use this for new programs.
+//
+// Copyright 1998-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_Menu_Item_h
+#define Fl_Menu_Item_h
+
+#include <fltk/Widget.h>
+
+enum { // values for flags:
+  FL_MENU_INACTIVE = 1,
+  FL_MENU_TOGGLE= 2,
+  FL_MENU_VALUE = 4,
+  FL_MENU_RADIO = 8,
+  FL_MENU_INVISIBLE = 0x10,
+  FL_SUBMENU_POINTER = 0x20,
+  FL_SUBMENU = 0x40,
+  FL_MENU_DIVIDER = 0x80,
+  FL_MENU_HORIZONTAL = 0x100 // not used!
+};
+
+namespace fltk {
+  class FL_API Menu;
+}
+
+struct FL_API Fl_Menu_Item {
+  const char *text;
+  int shortcut_;
+  fltk::Callback *callback_;
+  void *user_data_;
+  int flags;
+  fltk::LabelType* labeltype_;
+  fltk::Font* labelfont_;
+  unsigned labelsize_;
+  fltk::Color labelcolor_;
+
+  // Used to add or set an fltk::Menu widget:
+  void add_to(fltk::Menu*, void* data = 0) const;
+
+  // popup menus without using an fltk::Menu widget:
+  // Warning: this is now quite expensive, as it creates a temporary
+  // fltk::Menu and child widgets!  These also do not match the fltk 1.0
+  // calls, if there is any callback it is called directly (with the
+  // dummy fltk::Menu as an argument).
+  const Fl_Menu_Item*
+	pulldown(int X, int Y, int W, int H,
+		 const Fl_Menu_Item* picked = 0,
+		 const char* title = 0) const;
+  const Fl_Menu_Item*
+	popup(int X, int Y, const char* title=0,
+	      const Fl_Menu_Item* picked = 0) const {
+    return pulldown(X, Y, 0, 0, picked, title);}
+  const Fl_Menu_Item*
+	test_shortcut() const;
+
+  // return offset of terminating null item:
+  int size() const ;
+
+  // advance a pointer by N items, skipping submenus:
+  const Fl_Menu_Item *next(int=1) const;
+  Fl_Menu_Item *next(int i=1) {
+    return (Fl_Menu_Item*)(((const Fl_Menu_Item*)this)->next(i));}
+
+  const char* label() const {return text;}
+  fltk::LabelType* labeltype() const {return labeltype_;}
+  fltk::Color labelcolor() const {return labelcolor_;}
+  fltk::Font* labelfont() const {return labelfont_;}
+  unsigned labelsize() const {return labelsize_;}
+  fltk::Callback_p callback() const {return callback_;}
+  void* user_data() const {return user_data_;}
+  long argument() const {return (long)user_data_;}
+  int shortcut() const {return shortcut_;}
+  int submenu() const {return flags&(FL_SUBMENU|FL_SUBMENU_POINTER);}
+  int checkbox() const {return flags&FL_MENU_TOGGLE;}
+  int radio() const {return flags&FL_MENU_RADIO;}
+  int value() const {return flags&FL_MENU_VALUE;}
+  int visible() const {return !(flags&FL_MENU_INVISIBLE);}
+  int active() const {return !(flags&FL_MENU_INACTIVE);}
+  int activevisible() const {return !(flags&0x11);}
+
+  void label(const char* a) {text=a;}
+  void label(fltk::LabelType* a,const char* b) {labeltype_ = a; text = b;}
+  void labeltype(fltk::LabelType* a) {labeltype_ = a;}
+  void labelcolor(uchar a) {labelcolor_ = a;}
+  void labelfont(fltk::Font* a) {labelfont_ = a;}
+  void labelsize(uchar a) {labelsize_ = a;}
+  void callback(fltk::Callback* c, void* p) {callback_=c; user_data_=p;}
+  void callback(fltk::Callback* c) {callback_=c;}
+  void callback(fltk::Callback0*c) {callback_=(fltk::Callback*)c;}
+  void callback(fltk::Callback1*c, long p=0) {callback_=(fltk::Callback*)c; user_data_=(void*)p;}
+  void user_data(void* v) {user_data_ = v;}
+  void argument(long v) {user_data_ = (void*)v;}
+  void shortcut(int s) {shortcut_ = s;}
+  void set() {flags |= FL_MENU_VALUE;}
+  void clear() {flags &= ~FL_MENU_VALUE;}
+  void setonly();
+  void show() {flags &= ~FL_MENU_INVISIBLE;}
+  void hide() {flags |= FL_MENU_INVISIBLE;}
+  void activate() {flags &= ~FL_MENU_INACTIVE;}
+  void deactivate() {flags |= FL_MENU_INACTIVE;}
+
+  const Fl_Menu_Item* find_shortcut(int *ip=0) const;
+
+  void do_callback(fltk::Widget* o) const {callback_(o, user_data_);}
+  void do_callback(fltk::Widget* o,void* arg) const {callback_(o, arg);}
+  void do_callback(fltk::Widget* o,long arg) const {callback_(o, (void*)arg);}
+
+  // back-compatability, do not use:
+  int checked() const {return flags&FL_MENU_VALUE;}
+  void check() {flags |= FL_MENU_VALUE;}
+  void uncheck() {flags &= ~FL_MENU_VALUE;}
+
+#if 0
+  int add(const char*, int shortcut, fltk::Callback*, void* =0, int = 0);
+  int add(const char*a, const char* b, fltk::Callback* c,
+	  void* d = 0, int e = 0) {
+    return add(a,fltk::old_shortcut(b),c,d,e);}
+#endif
+};
+
+typedef Fl_Menu_Item Fl_Menu; // back compatability with fltk < 1.0
+
+enum {	// back-compatability enum:
+  FL_PUP_NONE	= 0,
+  FL_PUP_GREY	= FL_MENU_INACTIVE,
+  FL_PUP_GRAY	= FL_MENU_INACTIVE,
+  FL_MENU_BOX	= FL_MENU_TOGGLE,
+  FL_PUP_BOX	= FL_MENU_TOGGLE,
+  FL_MENU_CHECK	= FL_MENU_VALUE,
+  FL_PUP_CHECK	= FL_MENU_VALUE,
+  FL_PUP_RADIO	= FL_MENU_RADIO,
+  FL_PUP_INVISIBLE = FL_MENU_INVISIBLE,
+  FL_PUP_SUBMENU = FL_SUBMENU_POINTER
+};
+
+#endif
+
+//
+// End of "$Id: Fl_Menu_Item.H 4886 2006-03-30 09:55:32Z fabien $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Output.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Output.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Output.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,18 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Output_H
+#define Fl_Output_H
+
+#include "Fl_Input.H"
+#include <fltk/Output.h>
+typedef fltk::Output Fl_Output;
+
+enum {
+  FL_NORMAL_OUTPUT	= fltk::Input::NORMAL,
+  FL_MULTILINE_OUTPUT	= fltk::Input::MULTILINE,
+  FL_MULTILINE_OUTPUT_WRAP = fltk::Input::WORDWRAP
+};
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Overlay_Window.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Overlay_Window.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Overlay_Window.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,11 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Overlay_Window_H
+#define Fl_Overlay_Window_H
+
+#include "Fl_Window.H"
+typedef Fl_Window Fl_Overlay_Window;
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Pack.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Pack.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Pack.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,18 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Pack_H
+#define Fl_Pack_H
+
+#include "Fl_Group.H"
+#include <fltk/PackedGroup.h>
+
+class Fl_Pack : public fltk::PackedGroup {
+
+public:
+  Fl_Pack(int x, int y, int w, int h, const char*l = 0)
+    : fltk::PackedGroup(x,y,w,h,l) {begin();}
+
+}; // Fl_Pack class
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Pixmap.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Pixmap.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Pixmap.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,12 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Pixmap_H
+#define Fl_Pixmap_H
+
+#include "Fl_Widget.H"
+#include "fltk/xpmImage.h"
+
+typedef fltk::xpmImage Fl_Pixmap;
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Return_Button.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Return_Button.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Return_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,11 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Return_Button_H
+#define Fl_Return_Button_H
+
+#include <fltk/ReturnButton.h>
+typedef fltk::ReturnButton Fl_Return_Button;
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Roller.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Roller.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Roller.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,16 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Roller_H
+#define Fl_Roller_H
+
+#include "Fl_Valuator.H"
+#include <fltk/ThumbWheel.h>
+
+class Fl_Roller : public fltk::ThumbWheel {
+public:
+  Fl_Roller(int x, int y, int w, int h, const char*l = 0)
+    : fltk::ThumbWheel(x,y,w,h,l) {set_vertical();}
+};
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Scroll.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Scroll.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Scroll.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,18 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Scroll_H
+#define Fl_Scroll_H
+
+#include "Fl_Group.H"
+#include <fltk/ScrollGroup.h>
+
+class Fl_Scroll : public fltk::ScrollGroup {
+
+public:
+  Fl_Scroll(int x, int y, int w, int h, const char*l = 0)
+    : fltk::ScrollGroup(x,y,w,h,l) {begin();}
+};
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Scrollbar.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Scrollbar.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Scrollbar.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,16 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Scrollbar_H
+#define Fl_Scrollbar_H
+
+#include "Fl_Slider.H"
+#include <fltk/Scrollbar.h>
+
+class Fl_Scrollbar : public fltk::Scrollbar {
+public:
+  Fl_Scrollbar(int x, int y, int w, int h, const char*l = 0)
+    : fltk::Scrollbar(x,y,w,h,l) {set_vertical();}
+};
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Select_Browser.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Select_Browser.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Select_Browser.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,11 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Select_Browser_H
+#define Fl_Select_Browser_H
+
+#include "Fl_Browser.H"
+typedef Fl_Browser Fl_Select_Browser;
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Shared_Image.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Shared_Image.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Shared_Image.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,11 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Shared_Image_H
+#define Fl_Shared_Image_H
+
+#include <fltk/SharedImage.h>
+#define Fl_Shared_Image fltk::SharedImage
+#define Fl_Image fltk::Image
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Single_Window.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Single_Window.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Single_Window.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,11 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Single_Window_H
+#define Fl_Single_Window_H
+
+#include "Fl_Window.H"
+typedef Fl_Window Fl_Single_Window;
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Slider.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Slider.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Slider.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,27 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Slider_H
+#define Fl_Slider_H
+
+#include "Fl_Widget.H"
+#define FLTK_1_SLIDER 1
+#include <fltk/Slider.h>
+
+class Fl_Slider : public fltk::Slider {
+public:
+  Fl_Slider(int x, int y, int w, int h, const char*l = 0)
+    : fltk::Slider(x,y,w,h,l) {set_vertical();}
+};
+
+enum {
+  FL_VERT_SLIDER	= fltk::Slider::LINEAR,
+  FL_HOR_SLIDER		= fltk::Slider::HORIZONTAL,
+  FL_VERT_FILL_SLIDER	= fltk::Slider::FILL,
+  FL_HOR_FILL_SLIDER	= fltk::Slider::HORIZONTAL+fltk::Slider::FILL,
+  FL_VERT_NICE_SLIDER	= fltk::Slider::LINEAR,
+  FL_HOR_NICE_SLIDER	= fltk::Slider::HORIZONTAL
+};
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Tabs.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Tabs.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Tabs.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,18 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Tabs_H
+#define Fl_Tabs_H
+
+#include "Fl_Group.H"
+#include <fltk/TabGroup.h>
+
+class Fl_Tabs : public fltk::TabGroup {
+
+public:
+  Fl_Tabs(int x, int y, int w, int h, const char*l = 0)
+    : fltk::TabGroup(x,y,w,h,l) {begin();}
+};
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Text_Buffer.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Text_Buffer.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Text_Buffer.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,11 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Text_Buffer_H
+#define Fl_Text_Buffer_H
+
+#include "Fl_Widget.H"
+#include <fltk/TextBuffer.h>
+typedef fltk::TextBuffer Fl_Text_Buffer;
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Text_Editor.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Text_Editor.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Text_Editor.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,12 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Text_Editor_H
+#define Fl_Text_Editor_H
+
+#include "Fl_Text_Buffer.H"
+#include <fltk/TextEditor.h>
+typedef fltk::TextEditor Fl_Text_Editor;
+#define Style_Table_Entry StyleTableEntry
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Tile.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Tile.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Tile.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,18 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Tile_H
+#define Fl_Tile_H
+
+#include "Fl_Widget.H"
+#include <fltk/TiledGroup.h>
+
+class Fl_Tile : public fltk::TiledGroup {
+
+public:
+  Fl_Tile(int x, int y, int w, int h, const char*l = 0)
+    : fltk::TiledGroup(x,y,w,h,l) {begin();}
+};
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Toggle_Button.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Toggle_Button.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Toggle_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,15 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Toggle_Button_H
+#define Fl_Toggle_Button_H
+
+#include "Fl_Button.H"
+
+class Fl_Toggle_Button : public Fl_Button {
+public:
+    Fl_Toggle_Button(int X,int Y,int W,int H,const char *l=0)
+	: Fl_Button(X,Y,W,H,l) {type(FL_TOGGLE_BUTTON);}
+};
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Toggle_Light_Button.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Toggle_Light_Button.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Toggle_Light_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,13 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Toggle_Light_Button_H
+#define Fl_Toggle_Light_Button_H
+
+
+#include "Fl_Button.H"
+#include <fltk/LightButton.h>
+typedef fltk::LightButton Fl_Toggle_Light_Button;
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Valuator.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Valuator.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Valuator.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,15 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Valuator_H
+#define Fl_Valuator_H
+
+#include <fltk/Valuator.h>
+#define Fl_Valuator fltk::Valuator
+
+enum {
+  FL_VERTICAL		= 0,
+  FL_HORIZONTAL		= 1
+};
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Value_Input.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Value_Input.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Value_Input.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,10 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Value_Input_H
+#define Fl_Value_Input_H
+
+#include <fltk/ValueInput.h>
+typedef fltk::ValueInput Fl_Value_Input;
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Value_Output.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Value_Output.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Value_Output.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,14 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Value_Output_H
+#define Fl_Value_Output_H
+
+// The fltk1.1 allowed the user to change the value by dragging the mouse.
+// The fltk2.0 version is strictly for displaying a numeric value.
+// If you want the user to be able to change it, replace with a Value_Input.
+
+#include <fltk/ValueOutput.h>
+typedef fltk::ValueOutput Fl_Value_Output;
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Value_Slider.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Value_Slider.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Value_Slider.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,17 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Value_Slider_H
+#define Fl_Value_Slider_H
+
+#include "Fl_Slider.H"
+#include <fltk/ValueSlider.h>
+
+class Fl_Value_Slider : public fltk::ValueSlider {
+public:
+  Fl_Value_Slider(int x, int y, int w, int h, const char*l = 0)
+    : fltk::ValueSlider(x,y,w,h,l) {set_vertical();}
+};
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Widget.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Widget.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Widget.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,22 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Widget_H
+#define Fl_Widget_H
+
+#include "Enumerations.H"
+#define FLTK_1_WIDGET 1
+#include <fltk/Widget.h>
+
+typedef fltk::Widget Fl_Widget;
+
+typedef fltk::Callback Fl_Callback;
+typedef Fl_Callback* Fl_Callback_p; // needed for BORLAND
+typedef fltk::Callback0 Fl_Callback0;
+typedef fltk::Callback1 Fl_Callback1;
+
+enum {
+  FL_RESERVED_TYPE 	= fltk::Widget::RESERVED_TYPE
+};
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/Fl_Window.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/Fl_Window.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/Fl_Window.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,25 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef Fl_Window_H
+#define Fl_Window_H
+
+#include "Fl_Group.H"
+#include <fltk/Window.h>
+
+class Fl_Window : public fltk::Window {
+
+public:
+  Fl_Window(int x, int y, int w, int h, const char*l = 0)
+    : fltk::Window(x,y,w,h,l) {begin();}
+    
+  Fl_Window(int x, int y, const char*l = 0)
+    : fltk::Window(x,y,l) {begin();}
+
+  void border(bool v) {
+    if (!v) clear_border(); // set_border does not work
+  }
+};
+
+#endif
+
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/README
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/README	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/README	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,35 @@
+These header files are for back-compatability with fltk1.x.  Do not
+use these header files in new programs. Use the ones in the fltk
+directory.
+
+Most fltk1.x programs should compile with no changes by using these
+header files and linking with the fltk2.0 library.
+
+Known changes that must be done to fltk1.1 code to make them compile:
+
+Widgets inside groups will need their x,y coordinates fixed as they
+are now relative to the group, not the window.
+
+FL_BOLD, FL_ITALIC - these symbols used to be added to fonts to get
+bold and italic. This no longer works. You should replace them with
+the single symbol for the font (like FL_HELVETICA_BOLD in place of
+FL_HELVETICA+FL_BOLD) or use font->plus(attributes).
+
+Drawing functions are only roughly emulated. You may need to add casts
+to float to get your compiler to locate the correct functions. And if
+you offset by the x,y of the widget you need to remove these offsets.
+
+Some new members of widgets may hide global data. For instance "width"
+and "height" are now members. You can fix this by putting "::" in
+front of the global data names.
+
+If you use the Fl_Browser you are probably going to have trouble. All
+the indexes are offset by 1 from fltk1.1, ie the first item has an
+index of zero, not 1. Adding items with forward slashes in them will
+produce a hierarchy, which is pretty confusing when you don't plan on
+it.
+
+Menu and browser callbacks: the widget passed is the item, not the
+menu or browser. If you use o->parent() to find what window it is in
+you will have to change this, in most cases you can use o->window().
+

Added: branches/branch-3.0-2011/fltk/compat/FL/filename.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/filename.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/filename.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,24 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef fl_filename_H
+#define fl_filename_H
+
+#include <fltk/filename.h>
+#include <string.h>
+
+#define fl_filename_name	fltk::filename_name
+#define fl_filename_ext		fltk::filename_ext
+#define fl_filename_match	fltk::filename_match
+#define fl_filename_isdir	fltk::filename_isdir
+#define fl_filename_list	fltk::filename_list
+
+inline char *fl_filename_setext(char * name, const char *ext) {
+  strcpy(fltk::filename_ext(name), ext ? ext : "");
+  return name;
+}
+#define FL_PATH_MAX PATH_MAX // all buffers are assummed to be at least this long
+FL_API bool fl_filename_expand(char *, const char *from);
+FL_API bool fl_filename_absolute(char *, const char *from, const char* pwd=0);
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/fl_ask.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/fl_ask.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/fl_ask.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,16 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef fl_ask_H
+#define fl_ask_H
+
+#include <fltk/ask.h>
+
+#define fl_message	fltk::message
+#define fl_alert	fltk::alert
+#define fl_ask		fltk::ask
+#define fl_choice	fltk::choice
+#define fl_input	fltk::input
+#define fl_password	fltk::password
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/fl_draw.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/fl_draw.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/fl_draw.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,217 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef fl_draw_H
+#define fl_draw_H
+
+#include "Enumerations.H"
+#include <fltk/draw.h>
+#include <fltk/Font.h>
+
+inline void fl_color(fltk::Color c) {fltk::setcolor(c);}
+inline void fl_color(uchar r, uchar g, uchar b) {fltk::setcolor(fltk::color(r,g,b));}
+inline fltk::Color fl_color() {return fltk::getcolor();}
+
+// clip:
+inline void fl_push_clip(int x, int y, int w, int h) {fltk::push_clip(x,y,w,h);}
+inline void fl_push_no_clip() {fltk::push_no_clip();}
+#define fl_clip		fl_push_clip
+#define fl_pop_clip	fltk::pop_clip
+inline int fl_not_clipped(int x, int y, int w, int h) {return fltk::not_clipped(fltk::Rectangle(x,y,w,h));}
+inline int fl_clip_box(int X, int Y, int W, int H, int& x, int& y, int& w, int& h) {
+  fltk::Rectangle r(X,Y,W,H);
+  int i = intersect_with_clip(r);
+  x = r.x(); y = r.y(); w = r.w(); h = r.h();
+  return i;
+}
+
+// points:
+inline void fl_point(int x, int y) {fltk::drawpoint(x,y);}
+
+// line type:
+#define fl_line_style	fltk::line_style
+enum {
+  FL_SOLID	= fltk::SOLID,
+  FL_DASH	= fltk::DASH,
+  FL_DOT	= fltk::DOT,
+  FL_DASHDOT	= fltk::DASHDOT,
+  FL_DASHDOTDOT	= fltk::DASHDOTDOT,
+  FL_CAP_FLAT	= fltk::CAP_FLAT,
+  FL_CAP_ROUND	= fltk::CAP_ROUND,
+  FL_CAP_SQUARE	= fltk::CAP_SQUARE,
+  FL_JOIN_MITER	= fltk::JOIN_MITER,
+  FL_JOIN_ROUND	= fltk::JOIN_ROUND,
+  FL_JOIN_BEVEL	= fltk::JOIN_BEVEL
+};
+
+// rectangles tweaked to exactly fill the pixel rectangle:
+inline void fl_rect(int x, int y, int w, int h) {fltk::strokerect(fltk::Rectangle(x,y,w,h));}
+inline void fl_rect(int x, int y, int w, int h, fltk::Color c) {fltk::setcolor(c); fltk::strokerect(fltk::Rectangle(x,y,w,h));}
+inline void fl_rectf(int x, int y, int w, int h) {fltk::fillrect(fltk::Rectangle(x,y,w,h));}
+inline void fl_rectf(int x, int y, int w, int h, fltk::Color c) {fltk::setcolor(c); fltk::fillrect(fltk::Rectangle(x,y,w,h));}
+
+// line segments:
+inline void fl_line(int x0,int y0, int x1,int y1) {fltk::drawline(x0,y0,x1,y1);}
+inline void fl_line(int x0,int y0, int x1,int y1, int x2,int y2) {
+  fltk::addvertex(x0,y0);
+  fltk::addvertex(x1,y1);
+  fltk::addvertex(x2,y2);
+  fltk::strokepath();
+}
+
+// closed line segments:
+inline void fl_loop(int x0,int y0, int x1,int y1, int x2,int y2) {
+  fltk::addvertex(x0,y0);
+  fltk::addvertex(x1,y1);
+  fltk::addvertex(x2,y2);
+  fltk::closepath();
+  fltk::strokepath();
+}
+inline void fl_loop(int x0,int y0, int x1,int y1, int x2,int y2, int x3,int y3) {
+  fltk::addvertex(x0,y0);
+  fltk::addvertex(x1,y1);
+  fltk::addvertex(x2,y2);
+  fltk::addvertex(x3,y3);
+  fltk::closepath();
+  fltk::strokepath();
+}
+
+// filled polygons
+inline void fl_polygon(int x0,int y0, int x1,int y1, int x2,int y2) {
+  fltk::addvertex(x0,y0);
+  fltk::addvertex(x1,y1);
+  fltk::addvertex(x2,y2);
+  fltk::closepath();
+  fltk::fillpath();
+}
+inline void fl_polygon(int x0,int y0, int x1,int y1, int x2,int y2, int x3,int y3) {
+  fltk::addvertex(x0,y0);
+  fltk::addvertex(x1,y1);
+  fltk::addvertex(x2,y2);
+  fltk::addvertex(x3,y3);
+  fltk::closepath();
+  fltk::fillpath();
+}
+
+// draw rectilinear lines, horizontal segment first:
+inline void fl_xyline(int x, int y, int x1) {
+  fltk::drawline(x,y,x1,y);
+}
+inline void fl_xyline(int x, int y, int x1, int y2) {
+  fltk::addvertex(x,y);
+  fltk::addvertex(x1,y);
+  fltk::addvertex(x1,y2);
+  fltk::strokepath();
+}
+inline void fl_xyline(int x, int y, int x1, int y2, int x3) {
+  fltk::addvertex(x,y);
+  fltk::addvertex(x1,y);
+  fltk::addvertex(x1,y2);
+  fltk::addvertex(x3,y2);
+  fltk::strokepath();
+}
+
+// draw rectilinear lines, vertical segment first:
+inline void fl_yxline(int x, int y, int y1) {
+  fltk::drawline(x,y,x,y1);
+}
+inline void fl_yxline(int x, int y, int y1, int x2) {
+  fltk::addvertex(x,y);
+  fltk::addvertex(x,y1);
+  fltk::addvertex(x2,y1);
+  fltk::strokepath();
+}
+inline void fl_yxline(int x, int y, int y1, int x2, int y3) {
+  fltk::addvertex(x,y);
+  fltk::addvertex(x,y1);
+  fltk::addvertex(x2,y1);
+  fltk::addvertex(x2,y3);
+  fltk::strokepath();
+}
+
+inline void fl_arc(int x,int y,int w,int h,float a,float a2) {fltk::addchord(fltk::Rectangle(x,y,w,h),a,a2); fltk::strokepath();}
+inline void fl_pie(int x,int y,int w,int h,float a,float a2) {fltk::addpie(fltk::Rectangle(x,y,w,h),a,a2); fltk::fillpath();}
+inline void fl_chord(int x,int y,int w,int h,float a,float a2) {fltk::addchord(fltk::Rectangle(x,y,w,h),a,a2); fltk::fillpath();}
+
+// scalable drawing code (code in fl_vertex.C and fl_arc.C):
+#define fl_push_matrix	fltk::push_matrix
+#define fl_pop_matrix	fltk::pop_matrix
+#define fl_scale	fltk::scale
+#define fl_translate	fltk::translate
+#define fl_rotate	fltk::rotate
+#define fl_mult_matrix	fltk::concat
+#define fl_begin_points	fltk::newpath
+#define fl_begin_line	fltk::newpath
+#define fl_begin_loop	fltk::newpath
+#define fl_begin_polygon fltk::newpath
+#define fl_vertex	fltk::addvertex
+#define fl_curve	fltk::addcurve
+inline void fl_arc(float x,float y,float r, float a1, float a2) {fltk::addarc(x-r,y-r,2*r,2*r,a1,a2);}
+#define fl_circle	fltk::addcircle
+#define fl_end_points	fltk::drawpoints
+#define fl_end_line	fltk::strokepath
+inline void fl_end_loop() {fltk::closepath();fltk::strokepath();}
+#define fl_end_polygon	fltk::fillpath
+#define fl_begin_complex_polygon fltk::newpath
+#define fl_gap		fltk::closepath
+#define fl_end_complex_polygon	fltk::fillpath
+
+// current font: (size was an int in fltk1.1)
+inline void fl_font(fltk::Font* f, float size) {fltk::setfont(f,size);}
+inline void fl_font(int f, float size) {fltk::setfont(fltk::font(f),size);}
+inline fltk::Font* fl_font() {return fltk::getfont();}
+inline float fl_size() {return fltk::getsize();}
+
+// information you can get about the current font:
+inline float fl_height() {return fltk::getascent()+fltk::getdescent();}
+inline float fl_height(int, float size) {return size;}
+inline float fl_descent() {return fltk::getdescent();}
+inline float fl_width(const char* c) {return fltk::getwidth(c);}
+inline float fl_width(const char* c, int n) {return fltk::getwidth(c,n);}
+inline float fl_width(char c) {return fltk::getwidth(&c,1);}
+
+// draw using current font:
+inline void fl_draw(const char* s, int x, int y) {fltk::drawtext(s,x,y);}
+inline void fl_draw(const char* s, int n, int x, int y) {fltk::drawtext(s,n,x,y);}
+inline void fl_measure(const char* s, int& x, int& y) {fltk::measure(s,x,y);}
+inline void fl_draw(const char* s, int x,int y,int w,int h, fltk::Flags f) {fltk::drawtext(s,fltk::Rectangle(x,y,w,h),f);}
+
+// boxtypes:
+//void fl_frame(const char* s, int x, int y, int w, int h);
+//void fl_frame2(const char* s, int x, int y, int w, int h);
+// This no longer works because boxes take a style, not a color:
+//  #include <fltk/Box.h>
+//  inline void fl_draw_box(fltk::Box* b, int x, int y, int w, int h, fltk::Color c) {b->draw(x,y,w,h,c);}
+
+// images:
+static inline fltk::PixelType fromdelta(int d) {return d==1?fltk::MONO:d==3?fltk::RGB:fltk::RGBx;}
+inline void fl_draw_image(const uchar* p, int x,int y,int w,int h, int delta, int ldelta) {fltk::drawimage(p,fromdelta(delta),fltk::Rectangle(x,y,w,h),ldelta);}
+inline void fl_draw_image(const uchar* p, int x,int y,int w,int h, int delta) {fltk::drawimage(p,fromdelta(delta),fltk::Rectangle(x,y,w,h));}
+
+inline void fl_draw_image_mono(const uchar* p, int x,int y,int w,int h, int delta, int ldelta) {fltk::drawimage(p,fltk::MONO,fltk::Rectangle(x,y,w,h),ldelta);}
+inline void fl_draw_image_mono(const uchar* p, int x,int y,int w,int h, int delta=1) {fltk::drawimage(p,fltk::MONO,fltk::Rectangle(x,y,w,h));}
+
+typedef fltk::DrawImageCallback Fl_Draw_Image_Cb;
+inline void fl_draw_image(Fl_Draw_Image_Cb cb, void* p, int x,int y,int w,int h, int delta=3) {fltk::drawimage(cb,p,fromdelta(delta),fltk::Rectangle(x,y,w,h));}
+inline void fl_draw_image_mono(Fl_Draw_Image_Cb cb, void* p, int x,int y,int w,int h, int delta=1) {fltk::drawimage(cb,p,fltk::MONO,fltk::Rectangle(x,y,w,h));}
+
+inline uchar *fl_read_image(uchar *p, int x,int y, int w, int h, int alpha=0) {return fltk::readimage(p, alpha?fltk::RGBA:fltk::RGB, fltk::Rectangle(x,y,w,h));}
+
+inline void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) {fltk::setcolor(fltk::color(r,g,b)); fltk::fillrect(fltk::Rectangle(x,y,w,h));}
+
+#define fl_draw_pixmap		fltk::draw_xpm
+#define fl_measure_pixmap	fltk::measure_xpm
+#define fl_scroll		fltk::scrollrect
+#define fl_shortcut_label	fltk::key_name
+#define fl_overlay_rect		fltk::overlay_rect
+#define fl_overlay_clear	fltk::overlay_clear
+#define fl_draw_symbol		fltk::draw_symbol
+#define fl_add_symbol		fltk::add_symbol
+#define fl_frame		fltk::drawframe2
+#define fl_frame2		fltk::drawframe
+
+#endif
+
+//
+// End of "$Id: fl_draw.H 5939 2007-08-02 14:19:28Z spitzak $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/fl_message.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/fl_message.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/fl_message.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,4 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#include "fl_ask.H"
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/forms.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/forms.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/forms.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,860 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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/Window.h>
+#include <fltk/run.h>
+#include <fltk/draw.h>
+#include <fltk/Color.h>
+#include <fltk/Style.h>
+
+typedef fltk::Widget FL_OBJECT;
+typedef fltk::Window FL_FORM;
+
+////////////////////////////////////////////////////////////////
+// Random constants & symbols defined by forms.h file:
+
+#ifndef NULL
+#define NULL 0
+#endif
+#ifndef FALSE
+#define FALSE 0
+#define TRUE 1
+#endif
+
+#define FL_ON		1
+#define FL_OK		1
+#define FL_VALID	1
+#define FL_PREEMPT	1
+#define FL_AUTO		2
+#define FL_WHEN_NEEDED	FL_AUTO
+#define FL_OFF		0
+#define FL_NONE		0
+#define FL_CANCEL	0
+#define FL_INVALID	0
+#define FL_IGNORE	-1
+#define FL_CLOSE	-2
+
+#define FL_LCOL		fltk::BLACK
+#define FL_COL1		fltk::GRAY75
+#define FL_MCOL		fltk::GRAY85
+#define FL_LEFT_BCOL	fltk::GRAY99
+#define FL_TOP_BCOL	fltk::GRAY90
+#define FL_BOTTOM_BCOL	fltk::GRAY35
+#define FL_RIGHT_BCOL	fltk::GRAY20
+#define FL_INACTIVE	fltk::GRAY66
+#define FL_INACTIVE_COL	fltk::GRAY66
+#define FL_FREE_COL1	fltk::Color(16)
+#define FL_FREE_COL2	fltk::Color(17)
+#define FL_FREE_COL3	fltk::Color(18)
+#define FL_FREE_COL4	fltk::Color(19)
+#define FL_FREE_COL5	fltk::Color(20)
+#define FL_FREE_COL6	fltk::Color(21)
+#define FL_FREE_COL7	fltk::Color(22)
+#define FL_FREE_COL8	fltk::Color(23)
+#define FL_FREE_COL9	fltk::Color(24)
+#define FL_FREE_COL10	fltk::Color(25)
+#define FL_FREE_COL11	fltk::Color(26)
+#define FL_FREE_COL12	fltk::Color(27)
+#define FL_FREE_COL13	fltk::Color(28)
+#define FL_FREE_COL14	fltk::Color(29)
+#define FL_FREE_COL15	fltk::Color(30)
+#define FL_FREE_COL16	fltk::Color(31)
+#define FL_TOMATO	fltk::Color(131)
+#define FL_INDIANRED	fltk::Color(164)
+#define FL_SLATEBLUE	fltk::Color(195)
+#define FL_DARKGOLD	fltk::Color(84)
+#define FL_PALEGREEN	fltk::Color(157)
+#define FL_ORCHID	fltk::Color(203)
+#define FL_DARKCYAN	fltk::Color(189)
+#define FL_DARKTOMATO	fltk::Color(113)
+#define FL_WHEAT	fltk::Color(174)
+
+#define FL_ALIGN_BESIDE	fltk::ALIGN_INSIDE
+
+#define FL_PUP_TOGGLE	2 // FL_MENU_TOGGLE
+#define FL_PUP_INACTIVE 1 // FL_MENU_INACTIVE
+#define FL_NO_FRAME	fltk::NO_BOX
+#define FL_ROUNDED3D_UPBOX 	fltk::ROUND_UP_BOX
+#define FL_ROUNDED3D_DOWNBOX	fltk::ROUND_DOWN_BOX
+#define FL_OVAL3D_UPBOX		fltk::ROUND_UP_BOX
+#define FL_OVAL3D_DOWNBOX	fltk::ROUND_DOWN_BOX
+
+#define FL_MBUTTON1	1
+#define FL_LEFTMOUSE	1
+#define FL_MBUTTON2	2
+#define FL_MIDDLEMOUSE	2
+#define FL_MBUTTON3	3
+#define FL_RIGHTMOUSE	3
+#define FL_MBUTTON4	4
+#define FL_MBUTTON5	5
+
+#define FL_INVALID_STYLE 255
+#define FL_NORMAL_STYLE	0
+#define FL_BOLD_STYLE	1
+#define FL_ITALIC_STYLE	2
+#define FL_BOLDITALIC_STYLE 3
+#define FL_FIXED_STYLE	4
+#define FL_FIXEDBOLD_STYLE 5
+#define FL_FIXEDITALIC_STYLE 6
+#define FL_FIXEDBOLDITALIC_STYLE 7
+#define FL_TIMES_STYLE	8
+#define FL_TIMESBOLD_STYLE 9
+#define FL_TIMESITALIC_STYLE 10
+#define FL_TIMESBOLDITALIC_STYLE 11
+
+// hacks to change the labeltype() when passed to fl_set_object_lstyle():
+#define FL_SHADOW_STYLE		0x100
+#define FL_ENGRAVED_STYLE	0x200
+#define FL_EMBOSSED_STYLE	0x300
+
+// size values are different from XForms, match older Forms:
+#define FL_TINY_SIZE	8
+#define FL_SMALL_SIZE	11 // 10
+#undef FL_NORMAL_SIZE
+#define FL_NORMAL_SIZE	14 // 12
+#define FL_MEDIUM_SIZE	18 // 14
+#define FL_LARGE_SIZE	24 // 18
+#define FL_HUGE_SIZE	32 // 24
+#define FL_DEFAULT_SIZE	FL_SMALL_SIZE
+#define FL_TINY_FONT	FL_TINY_SIZE
+#define FL_SMALL_FONT	FL_SMALL_SIZE
+#define FL_NORMAL_FONT	FL_NORMAL_SIZE
+#define FL_MEDIUM_FONT	FL_MEDIUM_SIZE
+#define FL_LARGE_FONT	FL_LARGE_SIZE
+#define FL_HUGE_FONT	FL_HUGE_SIZE
+#define FL_NORMAL_FONT1	FL_SMALL_FONT
+#define FL_NORMAL_FONT2	FL_NORMAL_FONT
+#define FL_DEFAULT_FONT	FL_SMALL_FONT
+
+#define FL_RETURN_END_CHANGED	FL_WHEN_RELEASE
+#define FL_RETURN_CHANGED	FL_WHEN_CHANGED
+#define FL_RETURN_END		FL_WHEN_RELEASE_ALWAYS
+#define FL_RETURN_ALWAYS	(FL_WHEN_CHANGED|FL_WHEN_NOT_CHANGED)
+
+#define FL_BOUND_WIDTH	3
+
+typedef int FL_Coord;
+typedef int FL_COLOR;
+
+////////////////////////////////////////////////////////////////
+// fltk interaction:
+
+#define FL_CMD_OPT void
+extern FL_FORMS_API void fl_initialize(int*, char*[], const char*, FL_CMD_OPT*, int);
+inline void fl_finish() {}
+
+typedef void (*FL_IO_CALLBACK) (int, void*);
+inline void fl_add_io_callback(int fd, short w, FL_IO_CALLBACK cb, void* v) {
+  Fl::add_fd(fd,w,cb,v);}
+inline void fl_remove_io_callback(int fd, short, FL_IO_CALLBACK) {
+  Fl::remove_fd(fd);} // removes all the callbacks!
+
+// type of callback is different and no "id" number is returned:
+inline void fl_add_timeout(long msec, void (*cb)(void*), void* v) {
+  Fl::add_timeout(msec*.001, (Fl_Timeout_Handler)cb, v);}
+inline void fl_remove_timeout(int) {}
+
+// type of callback is different!
+inline void fl_set_idle_callback(void (*cb)()) {Fl::set_idle(cb);}
+
+FL_FORMS_API Fl_Widget* fl_do_forms(void);
+FL_FORMS_API Fl_Widget* fl_check_forms();
+inline Fl_Widget* fl_do_only_forms(void) {return fl_do_forms();}
+inline Fl_Widget* fl_check_only_forms(void) {return fl_check_forms();}
+
+// because of new redraw behavior, these are no-ops:
+inline void fl_freeze_object(Fl_Widget*) {}
+inline void fl_unfreeze_object(Fl_Widget*) {}
+inline void fl_freeze_form(Fl_Window*) {}
+inline void fl_unfreeze_form(Fl_Window*) {}
+inline void fl_freeze_all_forms() {}
+inline void fl_unfreeze_all_forms() {}
+
+inline void fl_set_focus_object(Fl_Window*, Fl_Widget* o) {Fl::focus(o);}
+inline void fl_reset_focus_object(Fl_Widget* o) {Fl::focus(o);}
+#define fl_set_object_focus fl_set_focus_object
+
+// void fl_set_form_atclose(Fl_Window*w,int (*cb)(Fl_Window*,void*),void* v)
+// void fl_set_atclose(int (*cb)(Fl_Window*,void*),void*)
+// fl_set_form_atactivate/atdeactivate not implemented!
+
+////////////////////////////////////////////////////////////////
+// Fl_Widget:
+
+inline void fl_set_object_boxtype(Fl_Widget* o, Fl_Boxtype a) {o->box(a);}
+inline void fl_set_object_lsize(Fl_Widget* o,int s) {o->label_size(s);}
+FL_FORMS_API void fl_set_object_lstyle(Fl_Widget* o,int a);
+inline void fl_set_object_lcol(Fl_Widget* o, unsigned a) {o->label_color((Fl_Color)a);}
+#define fl_set_object_lcolor  fl_set_object_lcol
+inline void fl_set_object_lalign(Fl_Widget* o, Fl_Align a) { o->clear_flag(FL_ALIGN_MASK); o->set_flag(a);}
+#define fl_set_object_align fl_set_object_lalign
+inline void fl_set_object_color(Fl_Widget* o,unsigned a,unsigned b) {o->color((Fl_Color)a); o->selection_color((Fl_Color)b);}
+inline void fl_set_object_label(Fl_Widget* o, const char* a) {o->label(a); o->redraw();}
+inline void fl_set_object_position(Fl_Widget*o,int x,int y) {o->position(x,y);}
+inline void fl_set_object_size(Fl_Widget* o, int w, int h) {o->size(w,h);}
+inline void fl_set_object_geometry(Fl_Widget* o,int x,int y,int w,int h) {o->resize(x,y,w,h);}
+
+inline void fl_get_object_geometry(Fl_Widget* o,int*x,int*y,int*w,int*h) {
+  *x = o->x(); *y = o->y(); *w = o->w(); *h = o->h();}
+inline void fl_get_object_position(Fl_Widget* o,int*x,int*y) {
+  *x = o->x(); *y = o->y();}
+
+typedef void (*Forms_CB)(Fl_Widget*, long);
+inline void fl_set_object_callback(Fl_Widget*o,Forms_CB c,long a) {o->callback(c,a);}
+#define fl_set_call_back      fl_set_object_callback
+inline void fl_call_object_callback(Fl_Widget* o) {o->do_callback();}
+inline void fl_trigger_object(Fl_Widget* o) {o->do_callback();}
+inline void fl_set_object_return(Fl_Widget* o, int v) {
+  o->when(v|FL_WHEN_RELEASE);}
+
+inline void fl_redraw_object(Fl_Widget* o) {o->redraw();}
+inline void fl_show_object(Fl_Widget* o) {o->show();}
+inline void fl_hide_object(Fl_Widget* o) {o->hide();}
+inline void fl_free_object(Fl_Widget* x) {delete x;}
+inline void fl_delete_object(Fl_Widget* o) {((Fl_Group*)(o->parent()))->remove(*o);}
+inline void fl_activate_object(Fl_Widget* o) {o->activate();}
+inline void fl_deactivate_object(Fl_Widget* o) {o->deactivate();}
+
+inline void fl_add_object(Fl_Window* f, Fl_Widget* x) {f->add(x);}
+inline void fl_insert_object(Fl_Widget* o, Fl_Widget* b) {
+    ((Fl_Group*)(b->parent()))->insert(*o,b);}
+
+inline Fl_Window* FL_ObjWin(Fl_Widget* o) {return o->window();}
+
+////////////////////////////////////////////////////////////////
+// things that appered in the demos a lot that I don't emulate, but
+// I did not want to edit out of all the demos...
+
+inline int fl_get_border_width() {return 3;}
+inline void fl_set_border_width(int) {}
+inline void fl_set_object_dblbuffer(Fl_Widget*, int) {}
+inline void fl_set_form_dblbuffer(Fl_Window*, int) {}
+
+////////////////////////////////////////////////////////////////
+// Fl_Window:
+
+inline void fl_free_form(Fl_Window* x) {delete x;}
+inline void fl_redraw_form(Fl_Window* f) {f->redraw();}
+
+inline Fl_Window* fl_bgn_form(Fl_Boxtype b,int w,int h) {
+  Fl_Window* g = new Fl_Window(w,h,0);
+  g->box(b);
+  return g;
+}
+inline void fl_addto_form(Fl_Window* f) {f->begin();}
+inline Fl_Group* fl_bgn_group() {return new Fl_Group(0,0,0,0,0);}
+inline void fl_addto_group(Fl_Widget* o) {((Fl_Group* )o)->begin();}
+FL_FORMS_API void fl_end_group();
+FL_FORMS_API void fl_end_form();
+#define resizebox _ddfdesign_kludge()
+
+inline void fl_scale_form(Fl_Window* f, double x, double y) {
+  f->resizable(f); f->size(int(f->w()*x),int(f->h()*y));}
+inline void fl_set_form_position(Fl_Window* f,int x,int y) {f->position(x,y);}
+inline void fl_set_form_size(Fl_Window* f, int w, int h) {f->size(w,h);}
+inline void fl_set_form_geometry(Fl_Window* f,int x,int y,int w,int h) {
+  f->resize(x,y,w,h);}
+#define fl_set_initial_placement fl_set_form_geometry
+inline void fl_adjust_form_size(Fl_Window*) {}
+
+FL_FORMS_API void fl_show_form(Fl_Window* f,int p,int b,const char* n);
+enum {	// "p" argument values:
+  FL_PLACE_FREE = 0,	// make resizable
+  FL_PLACE_MOUSE = 1,	// mouse centered on form
+  FL_PLACE_CENTER = 2,	// center of the screen
+  FL_PLACE_POSITION = 4,// fixed position, resizable
+  FL_PLACE_SIZE = 8,	// fixed size, normal fltk behavior
+  FL_PLACE_GEOMETRY =16,// fixed size and position
+  FL_PLACE_ASPECT = 32,	// keep aspect ratio (ignored)
+  FL_PLACE_FULLSCREEN=64,// fill screen
+  FL_PLACE_HOTSPOT = 128,// enables hotspot
+  FL_PLACE_ICONIC = 256,// iconic (ignored)
+  FL_FREE_SIZE=(1<<14),	// force resizable
+  FL_FIX_SIZE =(1<<15)	// force off resizable
+};
+#define FL_PLACE_FREE_CENTER (FL_PLACE_CENTER|FL_FREE_SIZE)
+#define FL_PLACE_CENTERFREE  (FL_PLACE_CENTER|FL_FREE_SIZE)
+enum {	// "b" arguement values:
+  FL_NOBORDER = 0,
+  FL_FULLBORDER,
+  FL_TRANSIENT
+//FL_MODAL = (1<<8)	// not implemented yet in Forms
+};
+inline void fl_set_form_hotspot(Fl_Window* w,int x,int y) {w->hotspot(x,y);}
+inline void fl_set_form_hotobject(Fl_Window* w, Fl_Widget* o) {w->hotspot(o);}
+extern FL_FORMS_API char fl_flip;	// in forms.C
+inline void fl_flip_yorigin() {fl_flip = 1;}
+
+#define fl_prepare_form_window fl_show_form
+inline void fl_show_form_window(Fl_Window*) {}
+
+inline void fl_raise_form(Fl_Window* f) {f->show();}
+
+inline void fl_hide_form(Fl_Window* f) {f->hide();}
+inline void fl_pop_form(Fl_Window* f) {f->show();}
+
+extern FL_FORMS_API char fl_modal_next; // in forms.C
+inline void fl_activate_all_forms() {}
+inline void fl_deactivate_all_forms() {fl_modal_next = 1;}
+inline void fl_deactivate_form(Fl_Window*w) {w->deactivate();}
+inline void fl_activate_form(Fl_Window*w) {w->activate();}
+
+inline void fl_set_form_title(Fl_Window* f, const char* s) {f->label(s);}
+inline void fl_title_form(Fl_Window* f, const char* s) {f->label(s);}
+
+typedef void (*Forms_FormCB)(Fl_Widget*);
+inline void fl_set_form_callback(Fl_Window* f,Forms_FormCB c) {f->callback(c);}
+#define fl_set_form_call_back fl_set_form_callback
+
+inline void fl_init() {}
+inline void fl_set_graphics_mode(int r, int /*d*/) {
+  Fl::visual(r ? FL_RGB : FL_INDEX);
+  // d should add FL_DOUBLE, but that always fails in fltk 2.0
+}
+
+inline int fl_form_is_visible(Fl_Window* f) {return f->visible();}
+
+inline int fl_mouse_button() {return Fl::event_button();}
+#define fl_mousebutton fl_mouse_button
+
+#define fl_free       free
+#define fl_malloc     malloc
+#define fl_calloc     calloc
+#define fl_realloc    realloc
+
+////////////////////////////////////////////////////////////////
+// Drawing functions.  Only usable inside an Fl_Free object?
+
+#if 0
+inline void fl_drw_box(Fl_Boxtype b,int x,int y,int w,int h,Fl_Color bgc,int=3) {
+    b->draw(x,y,w,h,bgc);}
+inline void fl_drw_frame(Fl_Boxtype b,int x,int y,int w,int h,Fl_Color bgc,int=3) {
+    b->draw(x,y,w,h,bgc,FL_FRAME_ONLY);}
+#endif
+
+inline void fl_drw_text(Fl_Align align, int x, int y, int w, int h,
+		  Fl_Color fgcolor, int size, Fl_Font style,
+		  const char* s) {
+  fl_font(style,size);
+  fl_color(fgcolor);
+  fl_draw(s,x,y,w,h,align);
+}
+
+// this does not work except for CENTER...
+inline void fl_drw_text_beside(Fl_Align align, int x, int y, int w, int h,
+		  Fl_Color fgcolor, int size, Fl_Font style,
+		  const char* s) {
+  fl_font(style,size);
+  fl_color(fgcolor);
+  fl_draw(s,x,y,w,h,align);
+}
+
+//inline void fl_set_font_name(Fl_Font n,const char* s) {fl_set_font(n,s);}
+
+inline void fl_mapcolor(Fl_Color c, uchar r, uchar g, uchar b) {
+  fl_set_color(c,fl_rgb(r,g,b));}
+#define fl_set_clipping(x,y,w,h) fl_clip(x,y,w,h)
+#define fl_unset_clipping() fl_pop_clip()
+
+////////////////////////////////////////////////////////////////
+// Forms classes:
+
+inline Fl_Widget* fl_add_new(Fl_Widget* p) {return p;}
+inline Fl_Widget* fl_add_new(uchar t,Fl_Widget* p) {p->type(t); return p;}
+
+#define forms_constructor(type,name) \
+inline type* name(uchar t,int x,int y,int w,int h,const char* l) { \
+ return (type*)(fl_add_new(t, new type(x,y,w,h,l)));}
+#define forms_constructort(type,name) \
+inline type* name(uchar t,int x,int y,int w,int h,const char* l) { \
+ return (type*)(fl_add_new(new type(t,x,y,w,h,l)));}
+#define forms_constructorb(type,name) \
+inline type* name(Fl_Boxtype t,int x,int y,int w,int h,const char* l) { \
+ return (type*)(fl_add_new(new type(t,x,y,w,h,l)));}
+
+#include "Fl_FormsBitmap.h"
+#define FL_NORMAL_BITMAP FL_NO_BOX
+forms_constructorb(Fl_FormsBitmap, fl_add_bitmap)
+inline void fl_set_bitmap_data(Fl_Widget* o, int w, int h, const uchar* b) {
+    ((Fl_FormsBitmap*)o)->set(w,h,b);
+}
+
+#include "Fl_FormsPixmap.h"
+#define FL_NORMAL_PIXMAP FL_NO_BOX
+forms_constructorb(Fl_FormsPixmap, fl_add_pixmap)
+inline void fl_set_pixmap_data(Fl_Widget* o, char*const* b) {
+    ((Fl_FormsPixmap*)o)->set(b);
+}
+//inline void fl_set_pixmap_file(Fl_Widget*, const char*);
+inline void fl_set_pixmap_align(Fl_Widget* o,Fl_Align a,int,int) { o->clear_flag(FL_ALIGN_MASK); o->set_flag(a);}
+//inline void fl_set_pixmap_colorcloseness(int, int, int);
+
+#include <fltk/Fl_Box.h>
+forms_constructorb(Fl_Box, fl_add_box)
+
+#include <fltk/Fl_Browser.h>
+forms_constructor(Fl_Browser, fl_add_browser)
+
+inline void fl_clear_browser(Fl_Widget* o) {
+    ((Fl_Browser*)o)->clear();}
+inline void fl_add_browser_line(Fl_Widget* o, const char* s) {
+    ((Fl_Browser*)o)->add(s);}
+inline void fl_addto_browser(Fl_Widget* o, const char* s) {
+    ((Fl_Browser*)o)->add(s);} /* should also scroll to bottom */
+//inline void fl_addto_browser_chars(Fl_Widget*, const char*)
+//#define fl_append_browser fl_addto_browser_chars
+inline void fl_insert_browser_line(Fl_Widget* o, int n, const char* s) {
+    ((Fl_Browser*)o)->insert(n,s);}
+inline void fl_delete_browser_line(Fl_Widget* o, int n) {
+    ((Fl_Browser*)o)->remove(n);}
+inline void fl_replace_browser_line(Fl_Widget* o, int n, const char* s) {
+    ((Fl_Browser*)o)->replace(n,s);}
+inline char* fl_get_browser_line(Fl_Widget* o, int n) {
+    return (char*)(((Fl_Browser*)o)->text(n));}
+FL_FORMS_API int fl_load_browser(Fl_Widget* o, const char* f);
+inline void fl_select_browser_line(Fl_Widget* o, int n) {
+    ((Fl_Browser*)o)->select(n,1);}
+inline void fl_deselect_browser_line(Fl_Widget* o, int n) {
+    ((Fl_Browser*)o)->select(n,0);}
+inline void fl_deselect_browser(Fl_Widget* o) {
+    ((Fl_Browser*)o)->deselect();}
+inline int fl_isselected_browser_line(Fl_Widget* o, int n) {
+    return ((Fl_Browser*)o)->selected(n);}
+inline int fl_get_browser_topline(Fl_Widget* o) {
+    return ((Fl_Browser*)o)->topline();}
+inline int fl_get_browser(Fl_Widget* o) {
+    return ((Fl_Browser*)o)->value();}
+inline int fl_get_browser_maxline(Fl_Widget* o) {
+    return ((Fl_Browser*)o)->size();}
+//linline int fl_get_browser_screenlines(Fl_Widget*);
+inline void fl_set_browser_topline(Fl_Widget* o, int n) {
+    ((Fl_Browser*)o)->topline(n);}
+inline void fl_set_browser_fontsize(Fl_Widget* o, int s) {
+    ((Fl_Browser*)o)->text_size(s);}
+inline void fl_set_browser_fontstyle(Fl_Widget* o, int s) {
+    ((Fl_Browser*)o)->text_font(fl_fonts+s);}
+inline void fl_set_browser_specialkey(Fl_Widget* o, char c) {
+    ((Fl_Browser*)o)->format_char(c);}
+//inline void fl_set_browser_vscrollbar(Fl_Widget*, int);
+//inline void fl_set_browser_hscrollbar(Fl_Widget*, int);
+//inline void fl_set_browser_leftslider(Fl_Widget*, int);
+//#define fl_set_browser_leftscrollbar fl_set_browser_leftslider
+//inline void fl_set_browser_line_selectable(Fl_Widget*, int, int);
+//inline void fl_get_browser_dimension(Fl_Widget*,int*,int*,int*,int*);
+//inline void fl_set_browser_dblclick_callback(Fl_Widget*,FL_CALLBACKPTR,long);
+//inline void fl_set_browser_xoffset(Fl_Widget*, FL_Coord);
+//inline void fl_set_browser_scrollbarsize(Fl_Widget*, int, int);
+inline void fl_setdisplayed_browser_line(Fl_Widget* o, int n, int i) {
+    ((Fl_Browser*)o)->display(n,i);}
+inline int fl_isdisplayed_browser_line(Fl_Widget* o, int n) {
+    return ((Fl_Browser*)o)->displayed(n);}
+
+#include <fltk/Fl_Button.h>
+
+#define FL_NORMAL_BUTTON	0
+//#define FL_HIDDEN_BUTTON
+#define FL_TOUCH_BUTTON		4
+#define FL_INOUT_BUTTON		5
+#define FL_RETURN_BUTTON	6
+#define FL_HIDDEN_RET_BUTTON	7
+#define FL_PUSH_BUTTON		FL_TOGGLE_BUTTON
+#define FL_MENU_BUTTON		9
+
+extern FL_FORMS_API int fl_old_shortcut(const char*);
+
+FL_FORMS_API Fl_Button* fl_add_button(uchar t,int x,int y,int w,int h,const char* l);
+inline int fl_get_button(Fl_Widget* b) {return ((Fl_Button*)b)->value();}
+inline void fl_set_button(Fl_Widget* b, int v) {((Fl_Button*)b)->value(v);}
+inline int fl_get_button_numb(Fl_Widget*) {return Fl::event_button();}
+inline void fl_set_object_shortcut(Fl_Widget* b, const char* s, int=0) {
+  b->shortcut(fl_old_shortcut(s));}
+#define fl_set_button_shortcut fl_set_object_shortcut
+
+#include <fltk/Fl_Light_Button.h>
+forms_constructor(Fl_Light_Button, fl_add_lightbutton)
+
+#include <fltk/Fl_Round_Button.h>
+forms_constructor(Fl_Round_Button, fl_add_roundbutton)
+forms_constructor(Fl_Round_Button, fl_add_round3dbutton)
+
+#include <fltk/Fl_Check_Button.h>
+forms_constructor(Fl_Check_Button, fl_add_checkbutton)
+
+inline Fl_Widget* fl_add_bitmapbutton(int t,int x,int y,int w,int h,const char* l) {Fl_Widget* o = fl_add_button(t,x,y,w,h,l); return o;}
+inline void fl_set_bitmapbutton_data(Fl_Widget* o,int a,int b,uchar* c) {
+  (new Fl_Bitmap(c,a,b))->label(o);}  // does not delete old Fl_Bitmap!
+
+inline Fl_Widget* fl_add_pixmapbutton(int t,int x,int y,int w,int h,const char* l) {Fl_Widget* o = fl_add_button(t,x,y,w,h,l); return o;}
+inline void fl_set_pixmapbutton_data(Fl_Widget* o, const char*const* c) {
+  (new Fl_Pixmap(c))->label(o);}  // does not delete old Fl_Pixmap!
+
+// Fl_Canvas object not yet implemented!
+
+#include "Fl_Chart.h"
+
+forms_constructor(Fl_Chart, fl_add_chart)
+inline void fl_clear_chart(Fl_Widget* o) {
+  ((Fl_Chart*)o)->clear();}
+inline void fl_add_chart_value(Fl_Widget* o,double v,const char* s,uchar c){
+  ((Fl_Chart*)o)->add(v,s,c);}
+inline void fl_insert_chart_value(Fl_Widget* o, int i, double v, const char* s, uchar c) {
+  ((Fl_Chart*)o)->insert(i,v,s,c);}
+inline void fl_replace_chart_value(Fl_Widget* o, int i, double v, const char* s, uchar c) {
+  ((Fl_Chart*)o)->replace(i,v,s,c);}
+inline void fl_set_chart_bounds(Fl_Widget* o, double a, double b) {
+  ((Fl_Chart*)o)->bounds(a,b);}
+inline void fl_set_chart_maxnumb(Fl_Widget* o, int v) {
+  ((Fl_Chart*)o)->maxsize(v);}
+inline void fl_set_chart_autosize(Fl_Widget* o, int v) {
+  ((Fl_Chart*)o)->autosize(v);}
+inline void fl_set_chart_lstyle(Fl_Widget* o, Fl_Font v) {
+  ((Fl_Chart*)o)->text_font(v);}
+inline void fl_set_chart_lsize(Fl_Widget* o, int v) {
+  ((Fl_Chart*)o)->text_size(v);}
+inline void fl_set_chart_lcolor(Fl_Widget* o, unsigned v) {
+  ((Fl_Chart*)o)->text_color((Fl_Color)v);}
+#define fl_set_chart_lcol   fl_set_chart_lcolor
+
+#include <fltk/Fl_Choice.h>
+
+#define FL_NORMAL_CHOICE	0
+#define FL_NORMAL_CHOICE2	0
+#define FL_DROPLIST_CHOICE	0
+
+forms_constructor(Fl_Choice, fl_add_choice)
+inline void fl_clear_choice(Fl_Widget* o) {
+    ((Fl_Choice*)o)->clear();}
+inline void fl_addto_choice(Fl_Widget* o, const char* s) {
+    ((Fl_Choice*)o)->add(s);}
+inline void fl_replace_choice(Fl_Widget* o, int i, const char* s) {
+    ((Fl_Choice*)o)->replace(i-1,s);}
+inline void fl_delete_choice(Fl_Widget* o, int i) {
+    ((Fl_Choice*)o)->remove(i-1);}
+inline void fl_set_choice(Fl_Widget* o, int i) {
+    ((Fl_Choice*)o)->value(i-1);}
+// inline void fl_set_choice_text(Fl_Widget*, const char*);
+inline int fl_get_choice(Fl_Widget* o) {
+    return ((Fl_Choice*)o)->value()+1;}
+// inline const char* fl_get_choice_item_text(Fl_Widget*, int);
+// inline int fl_get_choice_maxitems(Fl_Widget*);
+inline const char* fl_get_choice_text(Fl_Widget* o) {
+    return ((Fl_Choice*)o)->text();}
+inline void fl_set_choice_fontsize(Fl_Widget* o, int x) {
+    ((Fl_Choice*)o)->text_size(x);}
+inline void fl_set_choice_fontstyle(Fl_Widget* o, Fl_Font x) {
+    ((Fl_Choice*)o)->text_font(x);}
+// inline void fl_set_choice_item_mode(Fl_Widget*, int, unsigned);
+// inline void fl_set_choice_item_shortcut(Fl_Widget*, int, const char*);
+
+#include <fltk/Fl_Clock.h>
+forms_constructor(Fl_Clock, fl_add_clock)
+inline void fl_get_clock(Fl_Widget* o, int* h, int* m, int* s) {
+    *h = ((Fl_Clock*)o)->hour();
+    *m = ((Fl_Clock*)o)->minute();
+    *s = ((Fl_Clock*)o)->second();
+}
+
+#include <fltk/Fl_Counter.h>
+forms_constructor(Fl_Counter, fl_add_counter)
+inline void fl_set_counter_value(Fl_Widget* o, double v) {
+    ((Fl_Counter*)o)->value(v);}
+inline void fl_set_counter_bounds(Fl_Widget* o, double a, double b) {
+    ((Fl_Counter*)o)->range(a,b);}
+inline void fl_set_counter_step(Fl_Widget* o, double a, double b) {
+    ((Fl_Counter*)o)->step(a / b);}
+inline void fl_set_counter_precision(Fl_Widget* o, int v) {
+//    ((Fl_Counter*)o)->precision(v);}
+    ((Fl_Counter*)o)->step(1/(10^v));}
+inline void fl_set_counter_return(Fl_Widget* o, int v) {
+    ((Fl_Counter*)o)->when(v|FL_WHEN_RELEASE);}
+inline double fl_get_counter_value(Fl_Widget* o) {
+    return ((Fl_Counter*)o)->value();}
+inline void fl_get_counter_bounds(Fl_Widget* o, float* a, float* b) {
+  *a = float(((Fl_Counter*)o)->minimum());
+  *b = float(((Fl_Counter*)o)->maximum());
+}
+//inline void fl_set_counter_filter(Fl_Widget*,const char* (*)(Fl_Widget*,double,int));
+
+// Cursor stuff cannot be emulated because it uses X stuff
+inline void fl_set_cursor(Fl_Window* w, Fl_Cursor c) {w->cursor(c);}
+#define FL_INVISIBLE_CURSOR FL_CURSOR_NONE
+#define FL_DEFAULT_CURSOR FL_CURSOR_DEFAULT
+
+#include <fltk/Fl_Dial.h>
+
+#define FL_DIAL_COL1 FL_GRAY
+#define FL_DIAL_COL2 37
+
+forms_constructor(Fl_Dial, fl_add_dial)
+inline void fl_set_dial_value(Fl_Widget* o, double v) {
+  ((Fl_Dial*)o)->value(v);}
+inline double fl_get_dial_value(Fl_Widget* o) {
+  return ((Fl_Dial*)o)->value();}
+inline void fl_set_dial_bounds(Fl_Widget* o, double a, double b) {
+  ((Fl_Dial*)o)->range(a, b);}
+inline void fl_get_dial_bounds(Fl_Widget* o, float* a, float* b) {
+  *a = float(((Fl_Dial*)o)->minimum());
+  *b = float(((Fl_Dial*)o)->maximum());
+}
+inline void fl_set_dial_return(Fl_Widget* o, int i) {
+  ((Fl_Dial*)o)->when(i|FL_WHEN_RELEASE);}
+inline void fl_set_dial_angles(Fl_Widget* o, int a, int b) {
+  ((Fl_Dial*)o)->angles(a, b);}
+//inline void fl_set_dial_cross(Fl_Widget* o, int);
+// inline void fl_set_dial_direction(Fl_Widget* o, uchar d) {
+//   ((Fl_Dial*)o)->direction(d);}
+inline void fl_set_dial_step(Fl_Widget* o, double v) {
+  ((Fl_Dial*)o)->step(v);}
+
+// Frames:
+
+inline Fl_Widget* fl_add_frame(Fl_Boxtype i,int x,int y,int w,int h,const char* l) {
+  return fl_add_box(i,x-3,y-3,w+6,h+6,l);}
+
+// labelframe nyi
+inline Fl_Widget* fl_add_labelframe(Fl_Boxtype i,int x,int y,int w,int h,const char* l) {
+  Fl_Widget* o = fl_add_box(i,x-3,y-3,w+6,h+6,l);
+  o->clear_flag(FL_ALIGN_MASK); 
+  o->set_flag(FL_ALIGN_TOP | FL_ALIGN_LEFT);
+  return o;
+}
+
+#include "Fl_Free.h"
+inline Fl_Free*
+fl_add_free(int t,double x,double y,double w,double h,const char* l,
+	    FL_HANDLEPTR hdl) {
+ return (Fl_Free*)(fl_add_new(
+   new Fl_Free(t,int(x),int(y),int(w),int(h),l,hdl)));
+}
+
+#include <fltk/fl_ask.h>
+#include <fltk/fl_show_colormap.h>
+
+inline int fl_show_question(const char* c, int = 0) {return fl_ask(c);}
+FL_FORMS_API void fl_show_message(const char *,const char *,const char *);
+FL_FORMS_API void fl_show_alert(const char *,const char *,const char *,int=0);
+FL_FORMS_API int fl_show_question(const char *,const char *,const char *);
+inline const char *fl_show_input(const char *l,const char*d=0) {return fl_input(l,d);}
+/*const*/ char *fl_show_simple_input(const char *label, const char *deflt = 0);
+int fl_show_choice(
+    const char *m1,
+    const char *m2,
+    const char *m3,
+    int numb,
+    const char *b0,
+    const char *b1,
+    const char *b2);
+
+inline void fl_set_goodies_font(int a, unsigned b) {
+  fl_message_style->label_font = fl_fonts+a;
+  fl_message_style->label_size = b;
+}
+#define fl_show_messages fl_message
+inline int fl_show_choices(const char* c,int n,const char* b1,const char* b2,
+			   const char* b3, int) {
+  return fl_show_choice(0,c,0,n,b1,b2,b3);
+}
+
+#include <fltk/filename.h>
+#include <fltk/fl_file_chooser.h>
+inline int do_matching(char* a, const char* b) {return filename_match(a,b);}
+
+// Forms-compatable file chooser (implementation in fselect.C):
+FL_FORMS_API char* fl_show_file_selector(const char* message,const char* dir,
+			    const char* pat,const char* fname);
+FL_FORMS_API char*	fl_get_directory();
+FL_FORMS_API char*	fl_get_pattern();
+FL_FORMS_API char*	fl_get_filename();
+
+#include <fltk/Fl_Input.h>
+forms_constructor(Fl_Input, fl_add_input)
+inline void fl_set_input(Fl_Widget* o, const char* v) {
+    ((Fl_Input*)o)->value(v);}
+inline void fl_set_input_return(Fl_Widget* o, int x) {
+    ((Fl_Input*)o)->when(x | FL_WHEN_RELEASE);}
+inline void fl_set_input_color(Fl_Widget* o, unsigned a, unsigned /*b*/) {
+    ((Fl_Input*)o)->text_color((Fl_Color)a);
+//  ((Fl_Input*)o)->cursor_color((Fl_Color)b);
+}
+// inline void fl_set_input_scroll(Fl_Widget*, int);
+inline void fl_set_input_cursorpos(Fl_Widget* o, int x, int /*y*/) {
+  ((Fl_Input*)o)->position(x);}
+// inline void fl_set_input_selected(Fl_Widget*, int);
+// inline void fl_set_input_selected_range(Fl_Widget*, int, int);
+// inline void fl_set_input_maxchars(Fl_Widget*, int);
+// inline void fl_set_input_format(Fl_Widget*, int, int);
+// inline void fl_set_input_hscrollbar(Fl_Widget*, int);
+// inline void fl_set_input_vscrollbar(Fl_Widget*, int);
+// inline void fl_set_input_xoffset(Fl_Widget*, int);
+// inline void fl_set_input_topline(Fl_Widget*, int);
+// inline void fl_set_input_scrollbarsize(Fl_Widget*, int, int);
+// inline int fl_get_input_topline(Fl_Widget*);
+// inline int fl_get_input_screenlines(Fl_Widget*);
+inline int fl_get_input_cursorpos(Fl_Widget* o, int*x, int*y) {
+  *x = ((Fl_Input*)o)->position(); *y = 0; return *x;}
+// inline int fl_get_input_numberoflines(Fl_Widget*);
+// inline void fl_get_input_format(Fl_Widget*, int*, int*);
+inline const char* fl_get_input(Fl_Widget* o) {return ((Fl_Input*)o)->value();}
+
+#include <fltk/Fl_Menu_Button.h>
+
+// types are not implemented, they all act like FL_PUSH_MENU:
+#define FL_TOUCH_MENU		0
+#define FL_PUSH_MENU		1
+#define FL_PULLDOWN_MENU	2
+forms_constructor(Fl_Menu_Button, fl_add_menu)
+
+inline void fl_clear_menu(Fl_Widget* o) {
+    ((Fl_Menu_Button*)o)->clear();}
+inline void fl_set_menu(Fl_Widget* o, const char* s) {
+    ((Fl_Menu_Button*)o)->clear(); ((Fl_Menu_Button*)o)->add(s);}
+inline void fl_addto_menu(Fl_Widget* o, const char* s) {
+    ((Fl_Menu_Button*)o)->add(s);}
+inline void fl_replace_menu_item(Fl_Widget* o, int i, const char* s) {
+    ((Fl_Menu_Button*)o)->replace(i-1,s);}
+inline void fl_delete_menu_item(Fl_Widget* o, int i) {
+    ((Fl_Menu_Button*)o)->remove(i-1);}
+inline void fl_set_menu_item_shortcut(Fl_Widget* o, int i, const char* s) {
+    ((Fl_Menu_Button*)o)->shortcut(i-1,fl_old_shortcut(s));}
+// inline void fl_set_menu_item_mode(Fl_Widget* o, int i, long x) {
+//     ((Fl_Menu_Button*)o)->mode(i-1,x);}
+inline void fl_show_menu_symbol(Fl_Widget*, int ) {
+/*    ((Fl_Menu_Button*)o)->show_menu_symbol(i); */}
+// inline void fl_set_menu_popup(Fl_Widget*, int);
+inline int fl_get_menu(Fl_Widget* o) {
+    return ((Fl_Menu_Button*)o)->value()+1;}
+inline const char* fl_get_menu_item_text(Fl_Widget* o, int i) {
+    return ((Fl_Menu_Button*)o)->text(i);}
+inline int fl_get_menu_maxitems(Fl_Widget* o) {
+    return ((Fl_Menu_Button*)o)->size();}
+inline int fl_get_menu_item_mode(Fl_Widget* o, int i) {
+    return ((Fl_Menu_Button*)o)->mode(i);}
+inline const char* fl_get_menu_text(Fl_Widget* o) {
+    return ((Fl_Menu_Button*)o)->text();}
+
+#include "Fl_Positioner.h"
+#define FL_NORMAL_POSITIONER	0
+forms_constructor(Fl_Positioner, fl_add_positioner)
+inline void fl_set_positioner_xvalue(Fl_Widget* o, double v) {
+    ((Fl_Positioner*)o)->xvalue(v);}
+inline double fl_get_positioner_xvalue(Fl_Widget* o) {
+    return ((Fl_Positioner*)o)->xvalue();}
+inline void fl_set_positioner_xbounds(Fl_Widget* o, double a, double b) {
+    ((Fl_Positioner*)o)->xbounds(a,b);}
+inline void fl_get_positioner_xbounds(Fl_Widget* o, float* a, float* b) {
+  *a = float(((Fl_Positioner*)o)->xminimum());
+  *b = float(((Fl_Positioner*)o)->xmaximum());
+}
+inline void fl_set_positioner_yvalue(Fl_Widget* o, double v) {
+    ((Fl_Positioner*)o)->yvalue(v);}
+inline double fl_get_positioner_yvalue(Fl_Widget* o) {
+    return ((Fl_Positioner*)o)->yvalue();}
+inline void fl_set_positioner_ybounds(Fl_Widget* o, double a, double b) {
+    ((Fl_Positioner*)o)->ybounds(a,b);}
+inline void fl_get_positioner_ybounds(Fl_Widget* o, float* a, float* b) {
+  *a = float(((Fl_Positioner*)o)->yminimum());
+  *b = float(((Fl_Positioner*)o)->ymaximum());
+}
+inline void fl_set_positioner_xstep(Fl_Widget* o, double v) {
+    ((Fl_Positioner*)o)->xstep(v);}
+inline void fl_set_positioner_ystep(Fl_Widget* o, double v) {
+    ((Fl_Positioner*)o)->ystep(v);}
+inline void fl_set_positioner_return(Fl_Widget* o, int v) {
+    ((Fl_Positioner*)o)->when(v|FL_WHEN_RELEASE);}
+
+#include <fltk/Fl_Slider.h>
+
+#define FL_HOR_BROWSER_SLIDER FL_HOR_SLIDER
+#define FL_VERT_BROWSER_SLIDER FL_VERT_SLIDER
+
+forms_constructor(Fl_Slider, fl_add_slider)
+#define FL_SLIDER_COL1 FL_GRAY
+inline void fl_set_slider_value(Fl_Widget* o, double v) {
+    ((Fl_Slider*)o)->value(v);}
+inline double fl_get_slider_value(Fl_Widget* o) {
+    return ((Fl_Slider*)o)->value();}
+inline void fl_set_slider_bounds(Fl_Widget* o, double a, double b) {
+    ((Fl_Slider*)o)->range(a, b);}
+inline void fl_get_slider_bounds(Fl_Widget* o, float* a, float* b) {
+  *a = float(((Fl_Slider*)o)->minimum());
+  *b = float(((Fl_Slider*)o)->maximum());
+}
+inline void fl_set_slider_return(Fl_Widget* o, int i) {
+    ((Fl_Slider*)o)->when(i|FL_WHEN_RELEASE);}
+inline void fl_set_slider_step(Fl_Widget* o, double v) {
+    ((Fl_Slider*)o)->step(v);}
+// inline void fl_set_slider_increment(Fl_Widget* o, double v, double);
+inline void fl_set_slider_size(Fl_Widget* o, double v) {
+    ((Fl_Slider*)o)->slider_size(v);}
+
+#include <fltk/Fl_Value_Slider.h>
+forms_constructor(Fl_Value_Slider, fl_add_valslider)
+
+inline void fl_set_slider_precision(Fl_Widget* o, int i) {
+  double v = 1.0;
+  while (i--) v /= 10.0;
+  ((Fl_Value_Slider*)o)->step(v);
+}
+
+// The forms text object was the same as an Fl_Box except it inverted the
+// meaning of FL_ALIGN_INSIDE.  Implementation in forms.C
+class FL_FORMS_API Fl_FormsText : public Fl_Widget {
+protected:
+    void draw();
+public:
+    Fl_FormsText(Fl_Boxtype b, int x, int y, int w, int h, const char* l=0)
+	: Fl_Widget(x,y,w,h,l) {box(b); clear_flag(FL_ALIGN_MASK); set_flag(FL_ALIGN_LEFT);}
+};
+#define FL_NORMAL_TEXT FL_NO_BOX
+forms_constructorb(Fl_FormsText, fl_add_text)
+
+#include "Fl_Timer.h"
+forms_constructort(Fl_Timer, fl_add_timer)
+inline void fl_set_timer(Fl_Widget* o, double v) {((Fl_Timer*)o)->value(v);}
+inline double fl_get_timer(Fl_Widget* o) {return ((Fl_Timer*)o)->value();}
+inline void fl_suspend_timer(Fl_Widget* o) {((Fl_Timer*)o)->suspended(1);}
+inline void fl_resume_timer(Fl_Widget* o) {((Fl_Timer*)o)->suspended(0);}
+inline void fl_set_timer_countup(Fl_Widget* o,char d) {((Fl_Timer*)o)->direction(d);}
+FL_FORMS_API void fl_gettime(long* sec, long* usec);
+
+// Fl_XYPlot nyi
+
+
+// stuff from DDForms:
+
+inline int fl_double_click() {return Fl::event_clicks();}
+inline void fl_draw() {Fl::flush();}
+
+#endif	/* define __FORMS_H__ */
+
+//
+// End of "$Id: forms.H 4886 2006-03-30 09:55:32Z fabien $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/gl.h
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/gl.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/gl.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,22 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#ifndef FL_gl_H
+#define FL_gl_H
+
+#include <fltk/gl.h>
+
+#define gl_start	fltk::glstart
+#define	gl_finish	fltk::glfinish
+#define gl_color	fltk::glsetcolor
+#define	gl_rect		fltk::glstrokerect
+#define gl_rectf	fltk::glfillrect
+#define gl_font		fltk::glsetfont
+inline float gl_height() {return fltk::glgetascent()+fltk::glgetdescent();}
+#define gl_descent	fltk::glgetdescent
+#define gl_width	fltk::glgetwidth
+#define gl_draw		fltk::gldrawtext
+//void gl_measure(const char*, int& x, int& y);
+#define gl_draw_image	fltk::gldrawimage
+
+#endif // !FL_gl_H
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/glut.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/glut.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/glut.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,5 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#include "Fl_Widget.H"
+#include <fltk/glut.h>
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/math.h
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/math.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/math.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,4 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#include <fltk/math.h>
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/menubar.h
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/menubar.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/menubar.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,68 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// This is an additional header file for "DDForms", which was our internal
+// enhancement of Forms.  This defines the precursor of the Fl_Menu class.
+//
+// Unfortunately it defined the callbacks as taking a long rather
+// than a void* argument, requiring some dubious casts to emulate it:
+
+#include "Fl_Menu_Bar.h"
+
+struct FL_API MenuEntry {
+  const char *text;	/*initial character indicates "type", 0 = end of menu*/
+  ulong bind;	/* key binding in forms format (#x, etc) */
+  void (*cb)(Fl_Widget *,long);	/* callback */
+  long data;		/* value for callback */
+  int flags;		/* see below for flags */
+  uchar labeltype;
+  uchar labelfont;
+  uchar labelsize;
+  uchar labelcolor;
+};
+
+#define CHECKED FL_MENU_CHECK
+#define UNCHECKED FL_MENU_BOX
+#define DISABLED FL_MENU_INACTIVE
+
+/* Turn a box into a menu bar: */
+inline void MenuBar(Fl_Widget *o,MenuEntry *m) {
+    Fl_Menu_Bar *mb = new Fl_Menu_Bar(o->x(),o->y(),o->w(),o->h());
+    mb->menu((Fl_Menu_Item*)m);
+    mb->box(0);
+    Fl_Group *g = (Fl_Group *)(o->parent());
+    int i = g->find(*o);
+    g->insert(*mb, i<g->children()-1 ? g->child(i+1) : 0);
+}
+
+/* advance to the Nth item in menu, skipping submenus: */
+inline MenuEntry *MenuGetEntry(MenuEntry *m,int i) {
+    return (MenuEntry*)(((Fl_Menu_Item*)m)->next(i));
+}
+
+/* Init the shortcuts for a widget with a popup menu: */
+inline void MenuSetShortcuts(Fl_Widget *, MenuEntry *) {}
+
+inline void MenuAdd(
+    MenuEntry m[],
+    int, /* number of entries in menutable, ignored here */
+    const char *text,
+    const char *bind,
+    void (*cb)(Fl_Widget *,long),
+    long data,
+    int flags) {
+    ((Fl_Menu_Item*)m)->add(text,bind,(Fl_Callback*)cb,(void *)data,flags);
+}
+
+inline MenuEntry *MenuPopup(Fl_Widget *o,const char *title,MenuEntry *m,
+			    int x, int y) {
+    const Fl_Menu_Item* v = ((Fl_Menu_Item*)m)->popup(x,y,title);
+    if (v && v->callback_) v->do_callback(o);
+    return (MenuEntry *)v;
+}
+
+inline MenuEntry *MenuHandleShortcut(Fl_Widget *o,MenuEntry *m,char) {
+    const Fl_Menu_Item* v = ((Fl_Menu_Item*)m)->test_shortcut();
+    if (v && v->callback_) v->do_callback(o);
+    return (MenuEntry *)v;
+}
+#endif

Added: branches/branch-3.0-2011/fltk/compat/FL/x.H
===================================================================
--- branches/branch-3.0-2011/fltk/compat/FL/x.H	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/compat/FL/x.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,27 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// This emulation header was designed to get flwm to compile. It
+// probably does not work for any other x fltk program.
+
+#ifndef Fl_X_H
+#define Fl_X_H
+
+#include "Enumerations.H"
+#include <fltk/x.h>
+
+#define Fl_X		fltk::CreatedWindow
+#define fl_display	fltk::xdisplay
+#define fl_screen	fltk::xscreen
+#define fl_xevent	(&fltk::xevent)
+#define fl_colormap	fltk::xcolormap
+#define fl_open_display	fltk::open_display
+#define fl_visual	fltk::xvisual
+#define fl_xid(w)	fltk::xid(w)
+#define fl_event_time	fltk::event_time
+#define fl_xpixel(x)	fltk::xpixel(x)
+#define fl_window	fltk::xwindow
+#define fl_gc		fltk::gc
+#define fl_xfont	fltk::xfont()
+
+#endif
+#endif

Added: branches/branch-3.0-2011/fltk/damage.h
===================================================================
--- branches/branch-3.0-2011/fltk/damage.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/damage.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,55 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#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
+#endif

Added: branches/branch-3.0-2011/fltk/dirent.h
===================================================================
--- branches/branch-3.0-2011/fltk/dirent.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/dirent.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,34 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/draw.h
===================================================================
--- branches/branch-3.0-2011/fltk/draw.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/draw.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,226 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/error.h
===================================================================
--- branches/branch-3.0-2011/fltk/error.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/error.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,27 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+/*! \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
+#endif

Added: branches/branch-3.0-2011/fltk/events.h
===================================================================
--- branches/branch-3.0-2011/fltk/events.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/events.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,333 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $
+//
+#endif

Added: branches/branch-3.0-2011/fltk/file_chooser.h
===================================================================
--- branches/branch-3.0-2011/fltk/file_chooser.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/file_chooser.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,50 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/filename.h
===================================================================
--- branches/branch-3.0-2011/fltk/filename.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/filename.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,134 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+#endif

Added: branches/branch-3.0-2011/fltk/fltk_cairo.h
===================================================================
--- branches/branch-3.0-2011/fltk/fltk_cairo.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/fltk_cairo.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,51 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// 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
+
+#endif

Added: branches/branch-3.0-2011/fltk/forms.h
===================================================================
--- branches/branch-3.0-2011/fltk/forms.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/forms.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,857 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/gl.h
===================================================================
--- branches/branch-3.0-2011/fltk/gl.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/gl.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,117 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/gl2opengl.h
===================================================================
--- branches/branch-3.0-2011/fltk/gl2opengl.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/gl2opengl.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,38 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+/*	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);}
+#endif

Added: branches/branch-3.0-2011/fltk/glut.h
===================================================================
--- branches/branch-3.0-2011/fltk/glut.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/glut.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,493 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/layout.h
===================================================================
--- branches/branch-3.0-2011/fltk/layout.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/layout.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,44 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+#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
+#endif

Added: branches/branch-3.0-2011/fltk/load_plugin.h
===================================================================
--- branches/branch-3.0-2011/fltk/load_plugin.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/load_plugin.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,17 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+/*! \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
+#endif

Added: branches/branch-3.0-2011/fltk/mac.r
===================================================================
--- branches/branch-3.0-2011/fltk/mac.r	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/mac.r	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/fltk/math.h
===================================================================
--- branches/branch-3.0-2011/fltk/math.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/math.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,95 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/osx.h
===================================================================
--- branches/branch-3.0-2011/fltk/osx.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/osx.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,150 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+#endif

Added: branches/branch-3.0-2011/fltk/pnmImage.h
===================================================================
--- branches/branch-3.0-2011/fltk/pnmImage.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/pnmImage.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,48 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+#endif

Added: branches/branch-3.0-2011/fltk/rgbImage.h
===================================================================
--- branches/branch-3.0-2011/fltk/rgbImage.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/rgbImage.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,53 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/run.h
===================================================================
--- branches/branch-3.0-2011/fltk/run.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/run.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,96 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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
+#endif

Added: branches/branch-3.0-2011/fltk/show_colormap.h
===================================================================
--- branches/branch-3.0-2011/fltk/show_colormap.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/show_colormap.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,39 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/string.h
===================================================================
--- branches/branch-3.0-2011/fltk/string.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/string.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,92 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+/* "$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 $".
+ */
+#endif

Added: branches/branch-3.0-2011/fltk/string.h.in
===================================================================
--- branches/branch-3.0-2011/fltk/string.h.in	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/string.h.in	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/fltk/utf.h
===================================================================
--- branches/branch-3.0-2011/fltk/utf.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/utf.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,57 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+/* "$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
+#endif

Added: branches/branch-3.0-2011/fltk/visual.h
===================================================================
--- branches/branch-3.0-2011/fltk/visual.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/visual.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,59 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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
+#endif

Added: branches/branch-3.0-2011/fltk/win32.h
===================================================================
--- branches/branch-3.0-2011/fltk/win32.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/win32.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,198 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/x.h
===================================================================
--- branches/branch-3.0-2011/fltk/x.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/x.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,50 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/x11.h
===================================================================
--- branches/branch-3.0-2011/fltk/x11.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/x11.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,188 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+// "$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
+#endif

Added: branches/branch-3.0-2011/fltk/xbmImage.h
===================================================================
--- branches/branch-3.0-2011/fltk/xbmImage.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/xbmImage.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,53 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Added: branches/branch-3.0-2011/fltk/xpmImage.h
===================================================================
--- branches/branch-3.0-2011/fltk/xpmImage.h	                        (rev 0)
+++ branches/branch-3.0-2011/fltk/xpmImage.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,62 @@
+#warn FLTK123: This file has not been ported yet
+#if 0
+//
+// "$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 $".
+//
+#endif

Copied: branches/branch-3.0-2011/fltk3 (from rev 8219, branches/branch-3.0-2011/FL)

Modified: branches/branch-3.0-2011/fltk3/Fl.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -33,7 +33,7 @@
 #  define Fl_H
 
 #ifdef FLTK_HAVE_CAIRO
-# include <FL/Fl_Cairo.H>
+# include <fltk3/Fl_Cairo.H>
 #endif
 
 #  include "fl_utf8.h"
@@ -54,7 +54,7 @@
 
 
 /** \defgroup  callback_functions Callback function typedefs
- \brief Typedefs defined in <FL/Fl.H> for callback or handler functions passed as function parameters.
+ \brief Typedefs defined in <fltk3/Fl.H> 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 (Fl::add_handler()), to add a timeout handler
@@ -378,7 +378,7 @@
   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.
-   \note \#include <FL/Fl.H>
+   \note \#include <fltk3/Fl.H>
   */
   static void (*warning)(const char*, ...);
   /**
@@ -393,7 +393,7 @@
 
   Fl::error() means there is a recoverable error such as the inability to read
   an image file. The default implementation returns after displaying the message.
-   \note \#include <FL/Fl.H>
+   \note \#include <fltk3/Fl.H>
   */
   static void (*error)(const char*, ...);
   /**
@@ -410,13 +410,13 @@
   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.
-   \note \#include <FL/Fl.H>
+   \note \#include <fltk3/Fl.H>
   */
   static void (*fatal)(const char*, ...);
   /** @} */
 
   /** \defgroup  fl_windows Windows handling functions
-      \brief Windows and standard dialogs handling declared in <FL/Fl.H>
+      \brief Windows and standard dialogs handling declared in <fltk3/Fl.H>
     @{ */
   static Fl_Window* first_window();
   static void first_window(Fl_Window*);
@@ -462,7 +462,7 @@
   /** @} */
 
   /** \defgroup fl_events Events handling functions
-	Fl class events handling API declared in <FL/Fl.H>
+	Fl class events handling API declared in <fltk3/Fl.H>
 	@{
   */
   // event information:
@@ -699,7 +699,7 @@
   /** @} */
 
   /** \defgroup  fl_clipboard  Selection & Clipboard functions
-	FLTK global copy/cut/paste functions declared in <FL/Fl.H>
+	FLTK global copy/cut/paste functions declared in <fltk3/Fl.H>
    @{ */
   // cut/paste:
   /**
@@ -750,7 +750,7 @@
   static void paste(Fl_Widget &receiver);
 /** @} */
 /** \defgroup  fl_screen  Screen functions
-	fl global screen functions declared in <FL/Fl.H>
+	fl global screen functions declared in <fltk3/Fl.H>
      @{ */
   // screen size:
   /** Returns the origin of the current screen, where 0 indicates the left side of the screen. */
@@ -780,7 +780,7 @@
 
   /** \defgroup  fl_attributes  Color & Font functions
 	fl global color, font functions.
-   These functions are declared in <FL/Fl.H> or <FL/fl_draw.H>. 
+   These functions are declared in <fltk3/Fl.H> or <fltk3/fl_draw.H>. 
      @{ */
  
   // color map:
@@ -851,8 +851,8 @@
   /**   @} */
  /** \defgroup  fl_drawings  Drawing functions
   FLTK global graphics and GUI drawing functions.
-  These functions are declared in <FL/fl_draw.H>, 
-  and in <FL/x.H> for offscreen buffer-related ones.
+  These functions are declared in <fltk3/fl_draw.H>, 
+  and in <fltk3/x.H> for offscreen buffer-related ones.
      @{ */
   // <Hack to re-order the 'Drawing functions' group>
  /** @} */
@@ -964,7 +964,7 @@
   */
   static int  dnd_text_ops() { return option(OPTION_DND_TEXT); }
   /** \defgroup fl_multithread Multithreading support functions
-	fl multithreading support functions declared in <FL/Fl.H>
+	fl multithreading support functions declared in <fltk3/Fl.H>
    @{ */
 
   // Multithreading support:
@@ -984,7 +984,7 @@
 
   /** \defgroup fl_del_widget Safe widget deletion support functions
 
-    These functions, declared in <FL/Fl.H>, support deletion of widgets inside callbacks.
+    These functions, declared in <fltk3/Fl.H>, support deletion of widgets inside callbacks.
 
     Fl::delete_widget() should be called when deleting widgets
     or complete widget trees (Fl_Group, Fl_Window, ...) inside
@@ -1149,7 +1149,7 @@
 };
 
  /** \defgroup  fl_unicode  Unicode and UTF-8 functions
-	fl global Unicode and UTF-8 handling functions declared in <FL/fl_utf8.h>
+	fl global Unicode and UTF-8 handling functions declared in <fltk3/fl_utf8.h>
      @{ */
  /** @} */
 

Modified: branches/branch-3.0-2011/fltk3/Fl_Browser_.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Browser_.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Browser_.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -37,7 +37,7 @@
 #include "Fl_Group.H"
 #endif
 #include "Fl_Scrollbar.H"
-#include <FL/Fl.H>		// Fl::scrollbar_size()
+#include <fltk3/Fl.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-2011/fltk3/Fl_Cairo.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Cairo.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Cairo.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -36,7 +36,7 @@
 // Cairo is currently supported for the following platforms:
 // Win32, Apple Quartz, X11
 
-# include <FL/Fl_Export.H>
+# include <fltk3/Fl_Export.H>
 
 # if defined(USE_X11) // X11
 #  include <cairo-xlib.h>

Modified: branches/branch-3.0-2011/fltk3/Fl_Cairo_Window.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Cairo_Window.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Cairo_Window.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -35,8 +35,8 @@
 
 // Cairo is currently supported for the following platforms:
 // Win32, Apple Quartz, X11
-#  include <FL/Fl.H>
-#  include <FL/Fl_Double_Window.H>
+#  include <fltk3/Fl.H>
+#  include <fltk3/Fl_Double_Window.H>
 
 /** 
    \addtogroup group_cairo

Modified: branches/branch-3.0-2011/fltk3/Fl_Color_Chooser.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Color_Chooser.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Color_Chooser.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -35,11 +35,11 @@
 #ifndef Fl_Color_Chooser_H
 #define Fl_Color_Chooser_H
 
-#include <FL/Fl_Group.H>
-#include <FL/Fl_Box.H>
-#include <FL/Fl_Return_Button.H>
-#include <FL/Fl_Choice.H>
-#include <FL/Fl_Value_Input.H>
+#include <fltk3/Fl_Group.H>
+#include <fltk3/Fl_Box.H>
+#include <fltk3/Fl_Return_Button.H>
+#include <fltk3/Fl_Choice.H>
+#include <fltk3/Fl_Value_Input.H>
 
 #ifndef FL_DOXYGEN
 

Modified: branches/branch-3.0-2011/fltk3/Fl_Device.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Device.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Device.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -33,11 +33,11 @@
 #ifndef Fl_Device_H
 #define Fl_Device_H
 
-#include <FL/Fl_Plugin.H>
-#include <FL/Fl_Image.H>
-#include <FL/Fl_Bitmap.H>
-#include <FL/Fl_Pixmap.H>
-#include <FL/Fl_RGB_Image.H>
+#include <fltk3/Fl_Plugin.H>
+#include <fltk3/Fl_Image.H>
+#include <fltk3/Fl_Bitmap.H>
+#include <fltk3/Fl_Pixmap.H>
+#include <fltk3/Fl_RGB_Image.H>
 
 class Fl_Graphics_Driver;
 class Fl_Display_Device;

Modified: branches/branch-3.0-2011/fltk3/Fl_File_Chooser.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_File_Chooser.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_File_Chooser.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -29,23 +29,23 @@
 
 #ifndef Fl_File_Chooser_H
 #define Fl_File_Chooser_H
-#include <FL/Fl.H>
-#include <FL/Fl_Double_Window.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Double_Window.H>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <FL/Fl_Group.H>
-#include <FL/Fl_Choice.H>
-#include <FL/Fl_Menu_Button.H>
-#include <FL/Fl_Button.H>
-#include <FL/Fl_Preferences.H>
-#include <FL/Fl_Tile.H>
-#include <FL/Fl_File_Browser.H>
-#include <FL/Fl_Box.H>
-#include <FL/Fl_Check_Button.H>
-#include <FL/Fl_File_Input.H>
-#include <FL/Fl_Return_Button.H>
-#include <FL/fl_ask.H>
+#include <fltk3/Fl_Group.H>
+#include <fltk3/Fl_Choice.H>
+#include <fltk3/Fl_Menu_Button.H>
+#include <fltk3/Fl_Button.H>
+#include <fltk3/Fl_Preferences.H>
+#include <fltk3/Fl_Tile.H>
+#include <fltk3/Fl_File_Browser.H>
+#include <fltk3/Fl_Box.H>
+#include <fltk3/Fl_Check_Button.H>
+#include <fltk3/Fl_File_Input.H>
+#include <fltk3/Fl_Return_Button.H>
+#include <fltk3/fl_ask.H>
 
 class FL_EXPORT Fl_File_Chooser {
 public:

Modified: branches/branch-3.0-2011/fltk3/Fl_File_Input.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_File_Input.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_File_Input.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/fltk3/Fl_Help_Dialog.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Help_Dialog.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Help_Dialog.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -32,13 +32,13 @@
 
 #ifndef Fl_Help_Dialog_H
 #define Fl_Help_Dialog_H
-#include <FL/Fl.H>
-#include <FL/Fl_Double_Window.H>
-#include <FL/Fl_Group.H>
-#include <FL/Fl_Button.H>
-#include <FL/Fl_Input.H>
-#include <FL/Fl_Box.H>
-#include <FL/Fl_Help_View.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Double_Window.H>
+#include <fltk3/Fl_Group.H>
+#include <fltk3/Fl_Button.H>
+#include <fltk3/Fl_Input.H>
+#include <fltk3/Fl_Box.H>
+#include <fltk3/Fl_Help_View.H>
 
 class FL_EXPORT Fl_Help_Dialog {
   int index_; 

Modified: branches/branch-3.0-2011/fltk3/Fl_Image.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Image.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Image.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -184,8 +184,8 @@
   contents of the screen.</P>
   
   <P>Fl_RGB_Image is defined in
-  &lt;FL/Fl_Image.H&gt;, however for compatibility reasons
-  &lt;FL/Fl_RGB_Image.H&gt; should be included.
+  &lt;fltk3/Fl_Image.H&gt;, however for compatibility reasons
+  &lt;fltk3/Fl_RGB_Image.H&gt; should be included.
 */
 class FL_EXPORT Fl_RGB_Image : public Fl_Image {
   friend class Fl_Quartz_Graphics_Driver;

Modified: branches/branch-3.0-2011/fltk3/Fl_Input_Choice.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Input_Choice.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Input_Choice.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -38,11 +38,11 @@
 #ifndef Fl_Input_Choice_H
 #define Fl_Input_Choice_H
 
-#include <FL/Fl.H>
-#include <FL/Fl_Group.H>
-#include <FL/Fl_Input.H>
-#include <FL/Fl_Menu_Button.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Group.H>
+#include <fltk3/Fl_Input.H>
+#include <fltk3/Fl_Menu_Button.H>
+#include <fltk3/fl_draw.H>
 #include <string.h>
 
 /**

Modified: branches/branch-3.0-2011/fltk3/Fl_Native_File_Chooser.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Native_File_Chooser.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Native_File_Chooser.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/fltk3/Fl_Native_File_Chooser_FLTK.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Native_File_Chooser_FLTK.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Native_File_Chooser_FLTK.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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 @@
 
   To use this widget correctly, use the following include in your code:
   \code
-  #include <FL/Fl_Native_File_Chooser.H>
+  #include <fltk3/Fl_Native_File_Chooser.H>
   \endcode
   Do not include the other Fl_Native_File_Choser_XXX.H files in your code;
   those are platform specific files that will be included automatically
@@ -52,7 +52,7 @@
   The following example shows how to pick a single file:
   \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-2011/fltk3/Fl_Native_File_Chooser_MAC.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Native_File_Chooser_MAC.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Native_File_Chooser_MAC.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -30,7 +30,7 @@
 
 // OSX-SPECIFIC NATIVE BROWSER
 
-#include <FL/filename.H>
+#include <fltk3/filename.H>
 #define MAXFILTERS	80
 
 class FL_EXPORT Fl_Native_File_Chooser {

Modified: branches/branch-3.0-2011/fltk3/Fl_Pack.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Pack.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Pack.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -31,7 +31,7 @@
 #ifndef Fl_Pack_H
 #define Fl_Pack_H
 
-#include <FL/Fl_Group.H>
+#include <fltk3/Fl_Group.H>
 
 /**
   This widget was designed to add the functionality of compressing and

Modified: branches/branch-3.0-2011/fltk3/Fl_Paged_Device.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Paged_Device.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Paged_Device.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -32,8 +32,8 @@
 #ifndef Fl_Paged_Device_H
 #define Fl_Paged_Device_H
 
-#include <FL/Fl_Device.H>
-#include <FL/Fl_Window.H>
+#include <fltk3/Fl_Device.H>
+#include <fltk3/Fl_Window.H>
 
 /** \brief Number of elements in enum Page_Format */
 #define NO_PAGE_FORMATS 30 /* MSVC6 compilation fix */

Modified: branches/branch-3.0-2011/fltk3/Fl_PostScript.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_PostScript.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_PostScript.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -32,8 +32,8 @@
 #ifndef Fl_PostScript_H
 #define Fl_PostScript_H
 
-#include <FL/Fl_Paged_Device.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl_Paged_Device.H>
+#include <fltk3/fl_draw.H>
 
 /**
  \brief PostScript graphical backend.

Modified: branches/branch-3.0-2011/fltk3/Fl_Printer.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Printer.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Printer.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -31,15 +31,15 @@
 #ifndef Fl_Printer_H
 #define Fl_Printer_H
 
-#include <FL/x.H>
-#include <FL/Fl_Paged_Device.H>
-#include <FL/fl_draw.H>
-#include <FL/Fl_Pixmap.H>
-#include <FL/Fl_RGB_Image.H>
-#include <FL/Fl_Bitmap.H>
+#include <fltk3/x.H>
+#include <fltk3/Fl_Paged_Device.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/Fl_Pixmap.H>
+#include <fltk3/Fl_RGB_Image.H>
+#include <fltk3/Fl_Bitmap.H>
 #include <stdio.h>
 #if !(defined(__APPLE__) || defined(WIN32))
-#include <FL/Fl_PostScript.H>
+#include <fltk3/Fl_PostScript.H>
 #elif defined(WIN32)
 #include <commdlg.h>
 #endif

Modified: branches/branch-3.0-2011/fltk3/Fl_Spinner.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Spinner.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Spinner.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -35,10 +35,10 @@
 // Include necessary headers...
 //
 
-#  include <FL/Enumerations.H>
-#  include <FL/Fl_Group.H>
-#  include <FL/Fl_Input.H>
-#  include <FL/Fl_Repeat_Button.H>
+#  include <fltk3/Enumerations.H>
+#  include <fltk3/Fl_Group.H>
+#  include <fltk3/Fl_Input.H>
+#  include <fltk3/Fl_Repeat_Button.H>
 #  include <stdio.h>
 #  include <stdlib.h>
 

Modified: branches/branch-3.0-2011/fltk3/Fl_Table.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Table.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Table.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -39,11 +39,11 @@
 #include <stdlib.h>		// UNIX: malloc/realloc
 #endif /*WIN32*/
 
-#include <FL/Fl.H>
-#include <FL/Fl_Group.H>
-#include <FL/Fl_Scroll.H>
-#include <FL/Fl_Box.H>
-#include <FL/Fl_Scrollbar.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Group.H>
+#include <fltk3/Fl_Scroll.H>
+#include <fltk3/Fl_Box.H>
+#include <fltk3/Fl_Scrollbar.H>
 
 /**
  A table of widgets or other content.

Modified: branches/branch-3.0-2011/fltk3/Fl_Tooltip.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Tooltip.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Tooltip.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -31,8 +31,8 @@
 #ifndef Fl_Tooltip_H
 #define Fl_Tooltip_H
 
-#include <FL/Fl.H>
-#include <FL/Fl_Widget.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Widget.H>
 
 /**
   The Fl_Tooltip class provides tooltip support for

Modified: branches/branch-3.0-2011/fltk3/Fl_Tree.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Tree.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Tree.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -5,16 +5,16 @@
 #ifndef FL_TREE_H
 #define FL_TREE_H
 
-#include <FL/Fl.H>
-#include <FL/Fl_Group.H>
-#include <FL/Fl_Scrollbar.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Group.H>
+#include <fltk3/Fl_Scrollbar.H>
+#include <fltk3/fl_draw.H>
 
-#include <FL/Fl_Tree_Item.H>
-#include <FL/Fl_Tree_Prefs.H>
+#include <fltk3/Fl_Tree_Item.H>
+#include <fltk3/Fl_Tree_Prefs.H>
 
 //////////////////////
-// FL/Fl_Tree.H
+// fltk3/Fl_Tree.H
 //////////////////////
 //
 // Fl_Tree -- This file is part of the Fl_Tree widget for FLTK
@@ -70,7 +70,7 @@
 ///
 ///     The simple way to define a tree:
 /// \code
-///    #include <FL/Fl_Tree.H>
+///    #include <fltk3/Fl_Tree.H>
 ///    [..]
 ///    Fl_Tree tree(X,Y,W,H);
 ///    tree.begin();

Modified: branches/branch-3.0-2011/fltk3/Fl_Tree_Item.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Tree_Item.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Tree_Item.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -5,16 +5,16 @@
 #ifndef FL_TREE_ITEM_H
 #define FL_TREE_ITEM_H
 
-#include <FL/Fl.H>
-#include <FL/Fl_Widget.H>
-#include <FL/Fl_Image.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Widget.H>
+#include <fltk3/Fl_Image.H>
+#include <fltk3/fl_draw.H>
 
-#include <FL/Fl_Tree_Item_Array.H>
-#include <FL/Fl_Tree_Prefs.H>
+#include <fltk3/Fl_Tree_Item_Array.H>
+#include <fltk3/Fl_Tree_Prefs.H>
 
 //////////////////////
-// FL/Fl_Tree_Item.H
+// fltk3/Fl_Tree_Item.H
 //////////////////////
 //
 // Fl_Tree -- This file is part of the Fl_Tree widget for FLTK

Modified: branches/branch-3.0-2011/fltk3/Fl_Tree_Item_Array.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Tree_Item_Array.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Tree_Item_Array.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -11,7 +11,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-2011/fltk3/Fl_Tree_Prefs.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Tree_Prefs.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Tree_Prefs.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/fltk3/Fl_Window.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Window.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Window.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -416,7 +416,7 @@
 
  static Fl_Window *current();
   /**
-    Sets things up so that the drawing functions in <FL/fl_draw.H> will go
+    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
@@ -435,7 +435,7 @@
     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 <FL/Enumerations.H>.
+    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.

Modified: branches/branch-3.0-2011/fltk3/Fl_Wizard.H
===================================================================
--- branches/branch-3.0-2011/FL/Fl_Wizard.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/Fl_Wizard.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -35,7 +35,7 @@
 #ifndef _Fl_Wizard_H_
 #  define _Fl_Wizard_H_
 
-#  include <FL/Fl_Group.H>
+#  include <fltk3/Fl_Group.H>
 
 
 /**

Modified: branches/branch-3.0-2011/fltk3/filename.H
===================================================================
--- branches/branch-3.0-2011/FL/filename.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/filename.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -38,14 +38,14 @@
 #  include "Fl_Export.H"
 
 /** \addtogroup filenames File names and URI utility functions
- File names and URI functions defined in <FL/filename.H>
+ File names and URI functions defined in <fltk3/filename.H>
     @{ */
 
 #  define FL_PATH_MAX 2048 /**< all path buffers should use this length */
 /** 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-2011/fltk3/fl_draw.H
===================================================================
--- branches/branch-3.0-2011/FL/fl_draw.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/fl_draw.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -33,10 +33,10 @@
 #ifndef fl_draw_H
 #define fl_draw_H
 
-#include <FL/x.H>	      // for Fl_Region
-#include <FL/Enumerations.H>  // for the color names
-#include <FL/Fl_Window.H>     // for fl_set_spot()
-#include <FL/Fl_Device.H>     // for fl_graphics_driver
+#include <fltk3/x.H>	      // for Fl_Region
+#include <fltk3/Enumerations.H>  // for the color names
+#include <fltk3/Fl_Window.H>     // for fl_set_spot()
+#include <fltk3/Fl_Device.H>     // for fl_graphics_driver
 
 // Image class...
 class Fl_Image;

Modified: branches/branch-3.0-2011/fltk3/gl2opengl.h
===================================================================
--- branches/branch-3.0-2011/FL/gl2opengl.h	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/gl2opengl.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/fltk3/mac.H
===================================================================
--- branches/branch-3.0-2011/FL/mac.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/mac.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,15 +25,15 @@
 //     http://www.fltk.org/str.php
 //
 
-// Do not directly include this file, instead use <FL/x.H>.  It will
+// Do not directly include this file, instead use <fltk3/x.H>.  It will
 // include this file if "__APPLE__" is defined.  This is to encourage
 // portability of even the system-specific code...
 #ifndef FL_DOXYGEN
 
 #if !defined(Fl_X_H)
-#  error "Never use <FL/mac.H> directly; include <FL/x.H> instead."
+#  error "Never use <fltk3/mac.H> directly; include <fltk3/x.H> instead."
 #endif // !Fl_X_H
-#include <FL/Fl_Widget.H>
+#include <fltk3/Fl_Widget.H>
 
 typedef void* Window;	    // this is really a pointer to the subclass FLWindow of NSWindow
 typedef void* Fl_Offscreen; // this is really a CGContextRef
@@ -188,7 +188,7 @@
 #endif // FL_DOXYGEN
 
 /** \defgroup group_macosx Mac OS X-specific functions
- Mac OS X-specific functions declared in <FL/x.H> or <FL/gl.h>
+ Mac OS X-specific functions declared in <fltk3/x.H> or <fltk3/gl.h>
  @{ */
 
 /** @brief Register a function called for each file dropped onto an application icon 

Modified: branches/branch-3.0-2011/fltk3/names.h
===================================================================
--- branches/branch-3.0-2011/FL/names.h	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/names.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -37,11 +37,11 @@
 /**
   This is an array of event names you can use to convert event numbers into names.
 
-  The array gets defined inline wherever your '\#include <FL/names.h>' appears.
+  The array gets defined inline wherever your '\#include <fltk3/names.h>' appears.
 
   \b Example:
   \code
-  #include <FL/names.h>		// array will be defined here
+  #include <fltk3/names.h>		// array will be defined here
   int MyClass::handle(int e) {
       printf("Event was %s (%d)\n", fl_eventnames[e], e);
       // ..resulting output might be e.g. "Event was FL_PUSH (1)"..
@@ -80,11 +80,11 @@
 /**
   This is an array of font names you can use to convert font numbers into names.
 
-  The array gets defined inline wherever your '\#include <FL/names.h>' appears.
+  The array gets defined inline wherever your '\#include <fltk3/names.h>' appears.
 
   \b Example:
   \code
-  #include <FL/names.h>		// array will be defined here
+  #include <fltk3/names.h>		// array will be defined here
   int MyClass::my_callback(Fl_Widget *w, void*) {
       int fnum = w->labelfont();
       // Resulting output might be e.g. "Label's font is FL_HELVETICA (0)"

Modified: branches/branch-3.0-2011/fltk3/win32.H
===================================================================
--- branches/branch-3.0-2011/FL/win32.H	2011-01-08 16:31:55 UTC (rev 8219)
+++ branches/branch-3.0-2011/fltk3/win32.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,13 +25,13 @@
 //     http://www.fltk.org/str.php
 //
 
-// Do not directly include this file, instead use <FL/x.H>.  It will
+// Do not directly include this file, instead use <fltk3/x.H>.  It will
 // include this file if WIN32 is defined.  This is to encourage
 // portability of even the system-specific code...
 
 #ifndef FL_DOXYGEN
 #ifndef Fl_X_H
-#  error "Never use <FL/win32.H> directly; include <FL/x.H> instead."
+#  error "Never use <fltk3/win32.H> directly; include <fltk3/x.H> instead."
 #endif // !Fl_X_H
 
 #include <windows.h>
@@ -45,7 +45,7 @@
 #define VK_APPS 0x5D
 #endif
 
-#include <FL/Fl_Device.H>
+#include <fltk3/Fl_Device.H>
 
 // some random X equivalents
 typedef HWND Window;

Copied: branches/branch-3.0-2011/fluid1 (from rev 8219, branches/branch-3.0-2011/fluid)

Added: branches/branch-3.0-2011/fluid2/CodeEditor.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/CodeEditor.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/CodeEditor.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,418 @@
+//
+// "$Id$"
+//
+// Code editor widget 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
+//
+
+//
+// Include necessary headers...
+//
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include "CodeEditor.h"
+
+using namespace fltk;
+
+TextDisplay::StyleTableEntry CodeEditor::
+		styletable[] = {	// Style table
+		  { fltk::BLACK, fltk::COURIER,        11 }, // A - Plain
+		  { fltk::DARK_GREEN,       fltk::COURIER_ITALIC, 11 }, // B - Line comments
+		  { fltk::DARK_GREEN,       fltk::COURIER_ITALIC, 11 }, // C - Block comments
+		  { fltk::BLUE,             fltk::COURIER,        11 }, // D - Strings
+		  { fltk::DARK_RED,         fltk::COURIER,        11 }, // E - Directives
+		  { fltk::DARK_RED,         fltk::COURIER_BOLD,   11 }, // F - Types
+		  { fltk::BLUE,             fltk::COURIER_BOLD,   11 }  // G - Keywords
+		};
+const char * const CodeEditor::
+		code_keywords[] = {	// Sorted list of C/C++ keywords...
+		  "and",
+		  "and_eq",
+		  "asm",
+		  "bitand",
+		  "bitor",
+		  "break",
+		  "case",
+		  "catch",
+		  "compl",
+		  "continue",
+		  "default",
+		  "delete",
+		  "do",
+		  "else",
+		  "false",
+		  "for",
+		  "goto",
+		  "if",
+		  "new",
+		  "not",
+		  "not_eq",
+		  "operator",
+		  "or",
+		  "or_eq",
+		  "return",
+		  "switch",
+		  "template",
+		  "this",
+		  "throw",
+		  "true",
+		  "try",
+		  "while",
+		  "xor",
+		  "xor_eq"
+		};
+const char * const CodeEditor::
+		code_types[] = {	// Sorted list of C/C++ types...
+		  "auto",
+		  "bool",
+		  "char",
+		  "class",
+		  "const",
+		  "const_cast",
+		  "double",
+		  "dynamic_cast",
+		  "enum",
+		  "explicit",
+		  "extern",
+		  "float",
+		  "friend",
+		  "inline",
+		  "int",
+		  "long",
+		  "mutable",
+		  "namespace",
+		  "private",
+		  "protected",
+		  "public",
+		  "register",
+		  "short",
+		  "signed",
+		  "sizeof",
+		  "static",
+		  "static_cast",
+		  "struct",
+		  "template",
+		  "typedef",
+		  "typename",
+		  "union",
+		  "unsigned",
+		  "virtual",
+		  "void",
+		  "volatile"
+		};
+
+
+// 'compare_keywords()' - Compare two keywords...
+int CodeEditor::compare_keywords(const void *a, const void *b) {
+  return (strcmp(*((const char **)a), *((const char **)b)));
+}
+
+// 'style_parse()' - Parse text and produce style data.
+void CodeEditor::style_parse(const char *text, char *style, int length) {
+  char		current;
+  int		col;
+  int		last;
+  char		buf[255],
+		*bufptr;
+  const char	*temp;
+
+  // Style letters:
+  //
+  // A - Plain
+  // B - Line comments
+  // C - Block comments
+  // D - Strings
+  // E - Directives
+  // F - Types
+  // G - Keywords
+
+  for (current = *style, col = 0, last = 0; length > 0; length --, text ++) {
+    if (current == 'B' || current == 'F' || current == 'G') current = 'A';
+    if (current == 'A') {
+      // Check for directives, comments, strings, and keywords...
+      if (col == 0 && *text == '#') {
+        // Set style to directive
+        current = 'E';
+      } else if (strncmp(text, "//", 2) == 0) {
+        current = 'B';
+	for (; length > 0 && *text != '\n'; length --, text ++) *style++ = 'B';
+
+        if (length == 0) break;
+      } else if (strncmp(text, "/*", 2) == 0) {
+        current = 'C';
+      } else if (strncmp(text, "\\\"", 2) == 0) {
+        // Quoted quote...
+	*style++ = current;
+	*style++ = current;
+	text ++;
+	length --;
+	col += 2;
+	continue;
+      } else if (*text == '\"') {
+        current = 'D';
+      } else if (!last && (islower(*text) || *text == '_')) {
+        // Might be a keyword...
+	for (temp = text, bufptr = buf;
+	     (islower(*temp) || *temp == '_') && bufptr < (buf + sizeof(buf) - 1);
+	     *bufptr++ = *temp++);
+
+        if (!islower(*temp) && *temp != '_') {
+	  *bufptr = '\0';
+
+          bufptr = buf;
+
+	  if (bsearch(&bufptr, code_types,
+	              sizeof(code_types) / sizeof(code_types[0]),
+		      sizeof(code_types[0]), compare_keywords)) {
+	    while (text < temp) {
+	      *style++ = 'F';
+	      text ++;
+	      length --;
+	      col ++;
+	    }
+
+	    text --;
+	    length ++;
+	    last = 1;
+	    continue;
+	  } else if (bsearch(&bufptr, code_keywords,
+	                     sizeof(code_keywords) / sizeof(code_keywords[0]),
+		             sizeof(code_keywords[0]), compare_keywords)) {
+	    while (text < temp) {
+	      *style++ = 'G';
+	      text ++;
+	      length --;
+	      col ++;
+	    }
+
+	    text --;
+	    length ++;
+	    last = 1;
+	    continue;
+	  }
+	}
+      }
+    } else if (current == 'C' && strncmp(text, "*/", 2) == 0) {
+      // Close a C comment...
+      *style++ = current;
+      *style++ = current;
+      text ++;
+      length --;
+      current = 'A';
+      col += 2;
+      continue;
+    } else if (current == 'D') {
+      // Continuing in string...
+      if (strncmp(text, "\\\"", 2) == 0) {
+        // Quoted end quote...
+	*style++ = current;
+	*style++ = current;
+	text ++;
+	length --;
+	col += 2;
+	continue;
+      } else if (*text == '\"') {
+        // End quote...
+	*style++ = current;
+	col ++;
+	current = 'A';
+	continue;
+      }
+    }
+
+    // Copy style info...
+    if (current == 'A' && (*text == '{' || *text == '}')) *style++ = 'G';
+    else *style++ = current;
+    col ++;
+
+    last = isalnum(*text) || *text == '_' || *text == '.';
+
+    if (*text == '\n') {
+      // Reset column and possibly reset the style
+      col = 0;
+      if (current == 'B' || current == 'E') current = 'A';
+    }
+  }
+}
+
+// 'style_unfinished_cb()' - Update unfinished styles.
+void CodeEditor::style_unfinished_cb(int, void*) { }
+
+// 'style_update()' - Update the style buffer...
+void CodeEditor::style_update(int pos, int nInserted, int nDeleted,
+                              int /*nRestyled*/, const char * /*deletedText*/,
+                              void *cbArg) {
+  CodeEditor	*editor = (CodeEditor *)cbArg;
+  int		start,				// Start of text
+		end;				// End of text
+  char		last,				// Last style on line
+		*style,				// Style data
+		*text;				// Text data
+
+
+  // If this is just a selection change, just unselect the style buffer...
+  if (nInserted == 0 && nDeleted == 0) {
+    editor->stylebuffer_->unselect();
+    return;
+  }
+
+  // Track changes in the text buffer...
+  if (nInserted > 0) {
+    // Insert characters into the style buffer...
+    style = new char[nInserted + 1];
+    memset(style, 'A', nInserted);
+    style[nInserted] = '\0';
+
+    editor->stylebuffer_->replace(pos, pos + nDeleted, style);
+    delete[] style;
+  } else {
+    // Just delete characters in the style buffer...
+    editor->stylebuffer_->remove(pos, pos + nDeleted);
+  }
+
+  // Select the area that was just updated to avoid unnecessary
+  // callbacks...
+  editor->stylebuffer_->select(pos, pos + nInserted - nDeleted);
+
+  // Re-parse the changed region; we do this by parsing from the
+  // beginning of the line of the changed region to the end of
+  // the line of the changed region...  Then we check the last
+  // style character and keep updating if we have a multi-line
+  // comment character...
+  start = editor->buffer_->line_start(pos);
+  end   = editor->buffer_->line_end(pos + nInserted);
+  text  = editor->buffer_->text_range(start, end);
+  style = editor->stylebuffer_->text_range(start, end);
+  if (start==end)
+    last = 0;
+  else
+    last  = style[end - start - 1];
+
+  style_parse(text, style, end - start);
+
+  editor->stylebuffer_->replace(start, end, style);
+  editor->redisplay_range(start, end);
+
+  if (start==end || last != style[end - start - 1]) {
+    // The last character on the line changed styles, so reparse the
+    // remainder of the buffer...
+    free(text);
+    free(style);
+
+    end   = editor->buffer_->length();
+    text  = editor->buffer_->text_range(start, end);
+    style = editor->stylebuffer_->text_range(start, end);
+
+    style_parse(text, style, end - start);
+
+    editor->stylebuffer_->replace(start, end, style);
+    editor->redisplay_range(start, end);
+  }
+
+  free(text);
+  free(style);
+}
+
+int CodeEditor::auto_indent(int, CodeEditor* e) {
+  if (e->buffer()->selected()) {
+    e->insert_position(e->buffer()->primary_selection()->start());
+    e->buffer()->remove_selection();
+  }
+
+  int pos = e->insert_position();
+  int start = e->line_start(pos);
+  char *text = e->buffer()->text_range(start, pos);
+  char *ptr;
+
+  for (ptr = text; isspace(*ptr); ptr ++);
+  *ptr = '\0';  
+  if (*text) {
+    // use only a single 'insert' call to avoid redraw issues
+    int n = strlen(text);
+    char *b = (char*)malloc(n+2);
+    *b = '\n';
+    strcpy(b+1, text);
+    e->insert(b);
+    free(b);
+  } else {
+    e->insert("\n");
+  }
+  e->show_insert_position();
+  e->set_changed();
+  if (e->when()&fltk::WHEN_CHANGED) e->do_callback();
+
+  free(text);
+
+  return 1;
+}
+
+// Create a CodeEditor widget...
+CodeEditor::CodeEditor(int X, int Y, int W, int H, const char *L) :
+  TextEditor(X, Y, W, H, L) {
+  buffer(new TextBuffer);
+
+  char *style = new char[buffer_->length() + 1];
+  const char *text = buffer_->text();
+
+  memset(style, 'A', buffer_->length());
+  style[buffer_->length()] = '\0';
+
+  highlight_data(new TextBuffer(buffer_->length()), styletable,
+                 sizeof(styletable) / sizeof(styletable[0]),
+		 'A', style_unfinished_cb, this);
+
+  style_parse(text, style, buffer_->length());
+
+  stylebuffer_->text(style);
+  delete[] style;
+
+  buffer_->add_modify_callback(style_update, this);
+  add_key_binding(ReturnKey, TEXT_EDITOR_ANY_STATE, (TextEditor::Key_Func)auto_indent);
+}
+
+// Destroy a CodeEditor widget...
+CodeEditor::~CodeEditor() {
+  TextBuffer *buf = stylebuffer_;
+  stylebuffer_ = 0;
+  delete buf;
+
+  buf = buffer_;
+  buffer(0);
+  delete buf;
+}
+
+
+CodeViewer::CodeViewer(int X, int Y, int W, int H, const char *L)
+: CodeEditor(X, Y, W, H, L) 
+{
+  default_key_function(kf_ignore);  
+  remove_all_key_bindings(&key_bindings);
+  cursor_style(CARET_CURSOR);
+}
+
+//
+// End of "$Id$".
+//

Added: branches/branch-3.0-2011/fluid2/CodeEditor.h
===================================================================
--- branches/branch-3.0-2011/fluid2/CodeEditor.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/CodeEditor.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,90 @@
+// CodeEditor.h
+//
+// $Id:$
+//
+// 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 Fluid_CodeEditor_h
+# define Fluid_CodeEditor_h
+
+//
+// Include necessary headers...
+//
+
+#  include <stdio.h>
+#  include <stdlib.h>
+#  include <string.h>
+#  include <ctype.h>
+#  include <fltk/run.h>
+#  include <fltk/events.h>
+#  include <fltk/TextBuffer.h>
+#  include <fltk/TextDisplay.h>
+#  include <fltk/TextEditor.h>
+
+// WAS: I removed the namespace as fluid tries to include the fltk
+// header for any classes with fltk in their name. However it is
+// quite likely that this class sould be made part of fltk...
+//namespace fltk {
+
+  class CodeEditor : public fltk::TextEditor {
+    static TextDisplay::StyleTableEntry styletable[];
+    static const char * const code_keywords[];
+    static const char * const code_types[];
+
+
+    // 'compare_keywords()' - Compare two keywords...
+    static int compare_keywords(const void *a, const void *b);
+
+    // 'style_parse()' - Parse text and produce style data.
+    static void style_parse(const char *text, char *style, int length);
+
+    // 'style_unfinished_cb()' - Update unfinished styles.
+    static void style_unfinished_cb(int, void*);
+
+    // 'style_update()' - Update the style buffer...
+    static void style_update(int pos, int nInserted, int nDeleted,
+                             int /*nRestyled*/, const char * /*deletedText*/,
+                             void *cbArg);
+
+    static int auto_indent(int, CodeEditor* e);
+
+  public:
+
+    CodeEditor(int X, int Y, int W, int H, const char *L=0);
+    ~CodeEditor();
+    int top_line() { return get_absolute_top_line_number(); }
+  };
+
+  class CodeViewer : public CodeEditor {
+  public:
+
+    CodeViewer(int X, int Y, int W, int H, const char *L=0);
+
+  protected:
+    int handle(int ev) { return TextDisplay::handle(ev); }
+  };
+
+  //} // namespace fltk
+
+#endif // !CodeEditor_h
+
+// End of $Id:$

Added: branches/branch-3.0-2011/fluid2/Enumeration.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/Enumeration.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/Enumeration.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,110 @@
+// Code to access lists of enuerations used by WidgetType subclasses
+
+#include "Enumeration.h"
+#include <fltk/string.h>
+#include <fltk/Menu.h>
+#include <fltk/Item.h>
+#include <stdlib.h>
+
+const Enumeration* from_value(void* data, const Enumeration* table)
+{
+  for (;table->menu_entry; table++)
+    if (table->compiled == data) return table;
+  return 0;
+}
+
+const Enumeration* from_value(int data, const Enumeration* table)
+{
+  for (;table->menu_entry; table++)
+    if (int((long)(table->compiled)) == data) return table;
+  return 0;
+}
+
+const Enumeration* from_text(const char* text, const Enumeration* table)
+{
+  // For back compatability we strip leading fltk:: from symbols:
+  if (text[0]=='F' && text[1]=='L' && text[2]=='_') text += 3;
+  for (;table->menu_entry; table++) {
+    if (table->symbol && !strcmp(table->symbol, text)) return table;
+    // also for back compatability we match the menu entry and subclass:
+    if (!strcasecmp(table->menu_entry, text)) return table;
+    if (table->subclass && !strcmp(table->subclass, text)) return table;
+  }
+  return 0;
+}
+
+const char* to_text(void* data, const Enumeration* table)
+{
+  for (;table->menu_entry; table++) {
+    if (table->compiled == data) {
+      if (table->symbol && !table->subclass) return table->symbol;
+      return table->menu_entry;
+    }
+  }
+  return 0;
+}
+
+int number_from_text(const char* text, const Enumeration* table)
+{
+  if (table) {
+    const Enumeration* t = from_text(text, table);
+    if (t) return int((long)(t->compiled));
+  }
+  return strtol(text, 0, 0);
+}
+
+const char* number_to_text(int number, const Enumeration* table)
+{
+  if (table) {
+    const char* t = to_text((void*)number, table);
+    if (t) return t;
+  }
+  static char buffer[20];
+  sprintf(buffer, "%d", number);
+  return buffer;
+}
+
+////////////////////////////////////////////////////////////////
+// Code to translate a table of Enumeration entries into fltk::Menu items:
+
+class Enumeration_List : public fltk::List {
+  virtual int children(const fltk::Menu*, const int* indexes, int level);
+  virtual fltk::Widget* child(const fltk::Menu*, const int* indexes, int level);
+  public: 
+    virtual ~Enumeration_List() {}
+};
+
+static Enumeration_List enumeration_list;
+
+void set_menu(fltk::Menu* menu, const Enumeration* list) {
+  menu->list(&enumeration_list);
+  menu->user_data((void*)list);
+}
+
+int Enumeration_List::children(const fltk::Menu* menu, const int*, int level)
+{
+  if (level) return -1;
+  const Enumeration* e = (const Enumeration*)(menu->user_data());
+  int n = 0;
+  while (e->menu_entry) {n++; e++;}
+  return n;
+}
+
+fltk::Widget* Enumeration_List::child(const fltk::Menu* menu, const int* indexes, int)
+{
+  const Enumeration* e = (const Enumeration*)(menu->user_data());
+  int n = *indexes;
+  while (n && e->menu_entry) {n--; e++;}
+  if (!e->menu_entry) return 0;
+  static fltk::Widget* widget;
+  if (!widget) {
+    fltk::Group::current(0);
+    widget = new fltk::Item();
+  }
+  widget->user_data((void*)e);
+  widget->label(e->menu_entry);
+  widget->w(0);
+  widget->h(0);
+  return widget;
+}
+

Added: branches/branch-3.0-2011/fluid2/Enumeration.h
===================================================================
--- branches/branch-3.0-2011/fluid2/Enumeration.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/Enumeration.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,29 @@
+#ifndef Enumeration_h
+#define Enumeration_h
+
+////////////////////////////////////////////////////////////////
+// This structure is used to define tables of enumerations:
+
+struct Enumeration {
+  const char* menu_entry;	// user-friendly string, null for end of table
+  const char* symbol;		// symbol for c++ code and for .fl file
+  void* compiled;		// symbol compiled for use by fluid
+  const char* subclass;		// For type() of widgets, use this subclass
+};
+
+// Use this call to make a menu/Choice from a table. Warning this
+// will overwrite the user_data() of the fltk::Menu:
+namespace fltk {class Menu;}
+void set_menu(fltk::Menu*, const Enumeration*);
+
+// Converters from/to strings and values:
+const Enumeration* from_value(void* data, const Enumeration* table);
+const Enumeration* from_value(int data, const Enumeration* table);
+const Enumeration* from_text(const char* text, const Enumeration* table);
+const char* to_text(void* data, const Enumeration* table);
+int number_from_text(const char* text, const Enumeration* table);
+const char* number_to_text(int number, const Enumeration* table);
+
+////////////////////////////////////////////////////////////////
+
+#endif

Added: branches/branch-3.0-2011/fluid2/FluidType.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/FluidType.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/FluidType.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,653 @@
+//
+// "$Id: FluidType.cxx 6100 2008-04-13 20:29:52Z fabien $"
+//
+// Widget type code 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".
+//
+
+// Each object created by Fluid is a subclass of FluidType. The majority
+// of these are going to describe fltk::Widgets, so you will see the word
+// "widget" used a lot instead of FluidType. But there are also functions
+// and lines of code and anything else that can go into the browser.
+//
+// A hierarchial list of all FluidTypes is managed. The Widget Browser
+// is the display in the main window of this list. Most of this code
+// is concerned with drawing and updating the widget browser, with
+// keeping the list up to date and rearranging it, and keeping track
+// of which objects are selected.
+//
+// The "Type Browser" is also a list of FluidType, but is used for the
+// popup menu of new objects to create. In this case these are
+// "factory instances", not "real" ones.  Factory instances exist only
+// so the "make" method can be called on them.  They are not in the
+// linked list and are not written to files or copied or otherwise
+// examined.
+
+#include <fltk/run.h>
+#include <fltk/MultiBrowser.h>
+#include <fltk/Item.h>
+#include <fltk/draw.h>
+#include <fltk/events.h>
+#include <fltk/damage.h>
+#include <fltk/filename.h>
+#include <fltk/StatusBarGroup.h>
+#include <fltk/string.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "FluidType.h"
+#include "Fluid_Image.h"
+#include "fluid_img.h"
+#include "undo.h"
+#include "WidgetType.h"
+
+using namespace fltk;
+
+extern StatusBarGroup * status_bar;
+////////////////////////////////////////////////////////////////
+
+FluidType *FluidType::first=0;
+FluidType *FluidType::current=0;
+int FluidType::selected_count_=0;
+
+class Widget_List : public fltk::List {
+  virtual int children(const fltk::Menu*, const int* indexes, int level);
+  virtual fltk::Widget* child(const fltk::Menu*, const int* indexes, int level);
+  virtual void flags_changed(const fltk::Menu*, fltk::Widget*);
+  public:
+    virtual ~Widget_List() {}
+};
+
+static Widget_List widgetlist;
+
+extern fltk::Browser *widget_browser;
+
+extern void deselect();
+
+extern int compile_only; 
+
+static void Widget_Browser_callback(fltk::Widget * w,void *) {
+    if (fltk::event()==fltk::PUSH )  {
+	if ( ( (fltk::Browser*) w)->item()==0) 
+	    deselect();
+    }
+    else if (fltk::event()==fltk::WHEN_ENTER_KEY || fltk::event_clicks()) { // double_click open the widget editor
+	if (FluidType::current) FluidType::current->open();
+    }
+    if(fltk::event()!=fltk::RELEASE) refresh_browser_views();
+}
+
+
+void refresh_browser_views() {
+  if (compile_only) return;
+    widget_browser->redraw();
+    if (!status_bar) return;
+    int cnt = FluidType::selected_count();
+    if (cnt <2) status_bar->set(0, StatusBarGroup::SBAR_RIGHT);
+    if (cnt <1) status_bar->set(0, StatusBarGroup::SBAR_CENTER);
+    if (!cnt) return;
+
+    if (FluidType::current && FluidType::current->is_widget()) {
+	Widget * o = ((WidgetType*)FluidType::current)->o;
+	if (cnt==1) 
+	    status_bar->set(StatusBarGroup::SBAR_CENTER, "xywh: %d %d %d %d",o->x(),o->y(),o->w(),o->h());
+	else {
+	    Rectangle r;
+	    for (FluidType *t = FluidType::first; t; t = t->walk())
+		if (t->selected() && t->is_widget())
+		    r.merge( *((WidgetType*)t)->o);
+	    status_bar->set(StatusBarGroup::SBAR_CENTER, "xywh: %d %d %d %d",r.x(),r.y(),r.w(),r.h());
+	}
+    }
+    if (cnt>1) 
+	status_bar->set(StatusBarGroup::SBAR_RIGHT, "%d selected",cnt);
+    status_bar->redraw();  
+}
+
+// make the widget browser in the main fluid window, items use the list method defined by widgetlist
+fltk::Widget *make_widget_browser(int x,int y,int w,int h) {
+  widget_browser = new fltk::MultiBrowser(x,y,w,h);
+  widget_browser->list(&widgetlist);
+  widget_browser->callback(Widget_Browser_callback);
+  widget_browser->when(fltk::WHEN_ENTER_KEY|fltk::WHEN_CHANGED);
+  widget_browser->indented(1);
+  return widget_browser;
+}
+
+int Widget_List::children(const fltk::Menu*, const int* indexes, int level) {
+  FluidType* item = FluidType::first;
+  if (!item) return 0;
+  for (int l = 0; l < level; l++) {
+    for (int i = indexes[l]; item && i; --i) item = item->next_brother;
+    if (!item || !item->is_parent()) return -1;
+    item = item->first_child;
+  }
+  int n; for (n = 0; item; item = item->next_brother) n++;
+  return n;
+}
+
+static const char * get_item_fullname(FluidType* item) {
+    static char buffer[PATH_MAX];
+    if (strcmp(item->type_name(),"namespace") ==0) 
+	sprintf(buffer, "%s %s", "namespace", item->title());
+    else if (strcmp(item->type_name(),"class") ==0) 
+	sprintf(buffer, "%s %s", "class", item->title());
+    else 
+	return item->title();
+
+    return buffer;
+}
+
+fltk::Widget* Widget_List::child(const fltk::Menu*, const int* indexes, int level) {
+  FluidType* item = FluidType::first;
+  if (!item) return 0;
+  for (int l = 0;; l++) {
+    for (int i = indexes[l]; item && i; --i) item = item->next_brother;
+    if (!item) return 0;
+    if (l >= level) break;
+    item = item->first_child;
+  }
+  static fltk::Widget* widget;
+  if (!widget) {
+    fltk::Group::current(0);
+    widget = new fltk::Item();
+  }
+  widget->user_data(item);
+  if (item->selected()) widget->set_selected();
+  else widget->clear_selected();
+  // force the hierarchy to be open/closed:
+  widget->state(item->is_parent() && item->open_);
+
+  widget->label(get_item_fullname(item));
+  //widget->w(0); widget->h(0);
+  if (item->pixmapID()>0) 
+      widget->image(fluid_pixmap[item->pixmapID()]);
+
+  return widget;
+}
+
+void Widget_List::flags_changed(const fltk::Menu*, fltk::Widget* w) {
+  FluidType* item = (FluidType*)(w->user_data());
+  item->open_ = w->state();
+  item->new_selected = w->selected();
+  if (item->new_selected != item->selected()) selection_changed(item);
+}
+
+void select(FluidType* it, int value) {
+  it->new_selected = value != 0;
+  if (it->new_selected != it->selected()) {
+    selection_changed(it);
+    widget_browser->goto_focus();
+    refresh_browser_views();
+  }
+}
+
+void select_only(FluidType* i) {
+  for (FluidType* item = FluidType::first; item; item = item->walk())
+    select(item, item == i);
+  if (!widget_browser || !i) return;
+  int indexes[100];
+  int L = 100;
+  while (i) {
+    FluidType* child = i->parent ? i->parent->first_child : FluidType::first;
+    int n; for (n = 0; child != i; child=child->next_brother) n++;
+    indexes[--L] = n;
+    i = i->parent;
+  }
+  widget_browser->goto_index(indexes+L, 99-L);
+  widget_browser->set_focus();
+}
+
+void deselect() {
+  for (FluidType* item = FluidType::first; item; item = item->walk())
+    select(item,0);
+  FluidType::current = 0;
+}
+
+// Generate a descriptive text for this item, to put in browser & window
+// titles. Warning: the buffer used is overwritten each time!
+const char* FluidType::title() {
+#define MAXLABEL 128
+  static char buffer[MAXLABEL];
+  const char* t1 = type_name();
+  const char* type = 0;
+  if (is_widget()) type = t1 = ((WidgetType*)this)->subclass();
+  const char* name = this->name();
+  bool quoted = false;
+  if (!name || !*name) {
+    name = label();
+    if (!name || !*name) return t1;
+    quoted = true;
+  }
+  // copy but stop at any newline or when the buffer fills up:
+  char* e = buffer+MAXLABEL-1; if (quoted) e--;
+  char* p = buffer;
+  if (type) {
+    while (p < e && *type) *p++ = *type++;
+    if (p >= e-4) return name;
+    *p++ = ' ';
+  }
+  if (quoted) *p++ = '"';
+  while (p < e && (*name&~31)) *p++ = *name++;
+  if (*name) {
+    if (p > e-3) p = e-3;
+    strcpy(p, quoted ? "...\"" : "...");
+  } else {
+    if (quoted) *p++ = '"';
+    *p++ = 0;
+  }
+  return buffer;
+}
+
+// Call this when the descriptive text changes:
+void redraw_browser() {
+  refresh_browser_views();
+}
+
+FluidType::FluidType() {
+  memset(this, 0, sizeof(FluidType));
+  code_line = header_line = code_line_end = header_line_end = -1;
+
+}
+
+// Calling walk(N) will return every FluidType under N by scanning
+// the tree. Start with N->first_child. If N is null this will
+// walk the entire tree, start with FluidType::first.
+
+FluidType* FluidType::walk(const FluidType* topmost) const {
+  if (first_child) return first_child;
+  const FluidType* p = this;
+  while (!p->next_brother) {
+    p = p->parent;
+    if (p == topmost) return 0;
+  }
+  return p->next_brother;
+}
+
+// walk() is the same as walk(0), which walks the entire tree:
+
+FluidType* FluidType::walk() const {
+  if (first_child) return first_child;
+  const FluidType* p = this;
+  while (!p->next_brother) {
+    p = p->parent;
+    if (!p) return 0;
+  }
+  return p->next_brother;
+}
+
+// turn a click at x,y on this into the actual picked object:
+FluidType* FluidType::click_test(int,int) {return 0;}
+void FluidType::add_child(FluidType*, FluidType*) {}
+void FluidType::move_child(FluidType*, FluidType*) {}
+void FluidType::remove_child(FluidType*) {}
+
+// add as a new child of p:
+void FluidType::add(FluidType *p) {
+  if (p && parent == p) return;
+  Undo::checkpoint();
+  parent = p;
+  // calculate level
+  FluidType *end = this;
+  while (end->next_brother) end = end->next_brother;
+  
+  FluidType * q = p ? p->first_child : FluidType::first;
+  if (q) {
+    // find the last child:
+    while (q->next_brother) q = q->next_brother;
+    this->previous_brother = q;
+    q->next_brother = this;
+  } else {
+    // no other children
+    this->previous_brother = 0;
+    if (p)
+      p->first_child = this;
+    else
+      FluidType::first = this;
+  }
+  if (p) p->add_child(this,0);
+  open_ = true;
+  modflag = 1;
+  widget_browser->relayout();
+}
+
+// add to a parent before another widget:
+void FluidType::insert(FluidType *g) {
+  parent = g->parent;
+  previous_brother = g->previous_brother;
+  if (previous_brother) previous_brother->next_brother = this;
+  else if (parent) parent->first_child = this;
+  else FluidType::first = this;
+  next_brother = g;
+  g->previous_brother = this;
+  if (parent) parent->add_child(this, g);
+  widget_browser->relayout();
+}
+
+// delete from parent:
+void FluidType::remove() {
+  if (previous_brother) previous_brother->next_brother = next_brother;
+  else if (parent) parent->first_child = next_brother;
+  else FluidType::first = next_brother;
+  if (next_brother) next_brother->previous_brother = previous_brother;
+  previous_brother = next_brother = 0;
+  if (parent) parent->remove_child(this);
+  parent = 0;
+  widget_browser->relayout();
+  selection_changed(0);
+}
+
+// update a string member:
+int storestring(const char *n, const char * & p, int nostrip) {
+  if (n == p) return 0;
+  Undo::checkpoint();
+  int length = 0;
+  if (n) { // see if blank, strip leading & trailing blanks
+    if (!nostrip) while (isspace(*n)) n++;
+    const char *e = n + strlen(n);
+    if (!nostrip) while (e > n && isspace(*(e-1))) e--;
+    length = e-n;
+    if (!length) n = 0;
+  }    
+  if (n == p) return 0;
+  if (n && p && !strncmp(n,p,length) && !p[length]) return 0;
+  if (p) free((void *)p);
+  if (!n || !*n) {
+    p = 0;
+  } else {
+    char *q = (char *)malloc(length+1);
+    strncpy(q,n,length);
+    q[length] = 0;
+    p = q;
+  }
+  modflag = 1;
+  return 1;
+}
+
+void FluidType::name(const char *n) {
+  if (storestring(n,name_)) refresh_browser_views();
+}
+
+void FluidType::label(const char *n) {
+  if (storestring(n,label_,1)) {
+    setlabel(label_);
+    if (!name_) refresh_browser_views();
+  }
+}
+
+void FluidType::tooltip(const char *n) {
+  storestring(n,tooltip_,1);
+}
+
+void FluidType::callback(const char *n) {
+  storestring(n,callback_);
+}
+
+void FluidType::user_data(const char *n) {
+  storestring(n,user_data_);
+}
+
+void FluidType::user_data_type(const char *n) {
+  storestring(n,user_data_type_);
+}
+
+void FluidType::open() {
+  printf("Open of '%s' is not yet implemented\n",type_name());
+}
+
+void FluidType::setlabel(const char *) {}
+
+FluidType::~FluidType() {
+  for (FluidType* f = first_child; f;) {
+    FluidType* next = f->next_brother;
+    delete f;
+    f = next;
+  }
+  if (previous_brother) previous_brother->next_brother = next_brother;
+  else if (parent) parent->first_child = next_brother;
+  else first = next_brother;
+  if (next_brother) next_brother->previous_brother = previous_brother;
+  if (current == this) current = 0;
+  modflag = 1;
+  selected(false);
+  if (widget_browser) widget_browser->relayout();
+}
+
+int FluidType::is_parent() const {return 0;}
+int FluidType::is_widget() const {return 0;}
+int FluidType::is_valuator() const {return 0;}
+int FluidType::is_button() const {return 0;}
+int FluidType::is_menu_item() const {return 0;}
+int FluidType::is_group() const {return 0;}
+int FluidType::is_window() const {return 0;}
+int FluidType::is_code_block() const {return 0;}
+int FluidType::is_decl_block() const {return 0;}
+int FluidType::is_comment()const {return 0;}
+int FluidType::is_class() const {return 0;}
+int FluidType::is_input() const {return 0;}
+
+////////////////////////////////////////////////////////////////
+
+FluidType *in_this_only; // set if menu popped-up in window
+
+void select_none_cb(Widget *,void *) {
+  FluidType *parent = FluidType::current ? FluidType::current->parent : 0;
+  if (in_this_only) {
+    // make sure we don't select outside the current window
+    FluidType* p;
+    for (p = parent; p && p != in_this_only; p = p->parent);
+    if (!p) parent = in_this_only;
+  }
+  for (;;) {
+    // select all children of parent:
+    int changed = 0;
+    for (FluidType *t = parent ? parent->first_child : FluidType::first; t; t = t->walk(parent))
+      if (t->selected()) {changed = 1; select(t,0);}
+    if (changed) break;
+    // if everything was selected, try a higher parent:
+    if (!parent || parent == in_this_only) break;
+    parent = parent->parent;
+  }
+}
+
+void select_all_cb(fltk::Widget *,void *) {
+  FluidType *parent = FluidType::current ? FluidType::current->parent : 0;
+  if (in_this_only) {
+    // make sure we don't select outside the current window
+    FluidType* p;
+    for (p = parent; p && p != in_this_only; p = p->parent);
+    if (!p) parent = in_this_only;
+  }
+  for (;;) {
+    // select all children of parent:
+    int changed = 0;
+    for (FluidType *t = parent ? parent->first_child : FluidType::first;
+	 t; t = t->walk(parent))
+      if (!t->selected()) {changed = 1; select(t,1);}
+    if (changed) break;
+    // if everything was selected, try a higher parent:
+    if (!parent || parent == in_this_only) break;
+    parent = parent->parent;
+  }
+}
+
+void delete_all(int selected_only) {
+  for (FluidType *f = FluidType::first; f;) {
+    if (f->selected() || !selected_only) {
+      FluidType* next = f->next_brother;
+      delete f;
+      f = next;
+    } else {
+      f = f->walk();
+    }
+  }
+  if(!selected_only) {
+    include_H_from_C = 1;
+    images_dir = ""; //"./";
+  }
+  selection_changed(0);
+}
+
+// move f (and it's children) into list before g:
+// returns pointer to whatever is after f & children
+void FluidType::move_before(FluidType* g) {
+  remove();
+  insert(g);
+}
+
+// move selected widgets in their parent's list:
+void earlier_cb(fltk::Widget*,void*) {
+  bool canundo = false;
+  FluidType *parent = FluidType::current ? FluidType::current->parent : 0;
+  Undo::checkpoint();
+  for (FluidType* f = parent ? parent->first_child : FluidType::first; f; ) {
+    FluidType* next = f->next_brother;
+    if (f->selected()) {
+      FluidType* g = f->previous_brother;
+      if (g && !g->selected()) {f->move_before(g); canundo=true;}
+    }
+    f = next;
+  }
+  if (!canundo) Undo::remove_last();
+}
+
+void later_cb(fltk::Widget*,void*) {
+  bool canundo = false;
+  FluidType *parent = FluidType::current ? FluidType::current->parent : 0;
+  FluidType *f;
+  Undo::checkpoint();
+  for (f = parent ? parent->first_child : FluidType::first;f && f->next_brother;)
+    f = f->next_brother;
+  for (;f;) {
+    FluidType* prev = f->previous_brother;
+    if (f->selected()) {
+      FluidType* g = f->next_brother;
+      if (g && !g->selected()) {g->move_before(f); canundo=true;}
+    }
+    f = prev;
+  }
+  if (!canundo) Undo::remove_last();
+}
+
+////////////////////////////////////////////////////////////////
+
+// write a widget and all its children:
+void FluidType::write() {
+  int level = 0;
+  for (FluidType* p = parent; p; p = p->parent) level++;
+  write_indent(level);
+  write_word(type_name());
+  if (is_class()) {
+    const char * p = prefix();
+    if (p && *p) write_word(p);
+  }
+
+  write_word(name());
+  write_open(level);
+  write_properties();
+  write_close(level);
+  if (!is_parent()) return;
+  // now do children:
+  write_open(level);
+  FluidType *child;
+  for (child = first_child; child; child = child->next_brother) child->write();
+  write_close(level);
+}
+
+void FluidType::write_properties() {
+  int level = 0;
+  for (FluidType* p = parent; p; p = p->parent) level++;
+  // repeat this for each attribute:
+  if (label()) {
+    write_indent(level+1);
+    write_word("label");
+    write_word(label());
+  }
+  if (user_data()) {
+    write_indent(level+1);
+    write_word("user_data");
+    write_word(user_data());
+    if (user_data_type()) {
+      write_word("user_data_type");
+      write_word(user_data_type());
+    }
+  }
+  if (callback()) {
+    write_indent(level+1);
+    write_word("callback");
+    write_word(callback());
+  }
+  if (is_parent() && open_) write_word("open");
+  if (selected()) write_word("selected");
+  if (tooltip()) {
+    write_indent(level+1);
+    write_word("tooltip");
+    write_word(tooltip());
+  }
+}
+
+void FluidType::read_property(const char *c) {
+  if (!strcmp(c,"label"))
+    label(read_word());
+  else if (!strcmp(c,"tooltip"))
+    tooltip(read_word());
+  else if (!strcmp(c,"user_data"))
+    user_data(read_word());
+  else if (!strcmp(c,"user_data_type"))
+    user_data_type(read_word());
+  else if (!strcmp(c,"callback"))
+    callback(read_word());
+  else if (!strcmp(c,"open"))
+    open_ = true;
+  else if (!strcmp(c,"selected"))
+    select(this,1);
+  else
+    read_error("Unknown property \"%s\"", c);
+}
+
+int FluidType::read_fdesign(const char*, const char*) {return 0;}
+
+/**
+ * Build widgets and dataset needed in live mode.
+ * \return a widget pointer that the live mode initiator can 'show()'
+ * \see leave_live_mode()
+ */
+fltk::Widget *FluidType::enter_live_mode(int top) {
+  return 0L;
+}
+
+/**
+ * Release all resources created when enetring live mode.
+ * \see enter_live_mode()
+ */
+void FluidType::leave_live_mode() {
+}
+
+/**
+ * Copy all needed properties for this tye into the live object.
+ */
+void FluidType::copy_properties() {
+}
+
+//
+// End of "$Id: FluidType.cxx 6100 2008-04-13 20:29:52Z fabien $".
+//

Added: branches/branch-3.0-2011/fluid2/FluidType.h
===================================================================
--- branches/branch-3.0-2011/fluid2/FluidType.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/FluidType.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,223 @@
+// "$Id: FluidType.h 5493 2006-09-28 03:31:05Z spitzak $"
+//
+// Base type of object constructed and manipualated by the
+// Fast Light toolkit Interface Designer (fluid)
+//
+// Each object described by Fluid is one of these objects.  They
+// are all stored in a double-linked list.
+//
+// There is also a single "factory" instance of each type of this.
+// The method "make()" is called on this factory to create a new
+// instance of this object.  It could also have a "copy()" function,
+// but it was easier to implement this by using the file read/write
+// that is needed to save the setup anyways.
+// 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_fluid_type_h
+#define fltk_fluid_type_h
+
+#include <fltk/Widget.h>
+#include <fltk/Color.h>
+#include <fltk/Preferences.h>
+#include "Fluid_Plugins.h"
+#include "Fluid_Image.h"
+
+class FLUID_API FluidType {
+
+  friend class Widget_Browser;
+  friend fltk::Widget *make_type_browser(int,int,int,int,const char *l=0);
+  friend class WindowType;
+  virtual void setlabel(const char *); // virtual part of label(char*)
+
+public:
+  virtual void prefix(const char* p) {}
+  virtual const char*  prefix() const {return 0;}
+  virtual int pixmapID() {return -1;}
+
+protected:
+
+  FluidType();
+
+  const char *name_;
+  const char *label_;
+  const char *tooltip_;
+  const char *callback_;
+  const char *user_data_;
+  const char *user_data_type_;
+  fltk::Widget *live_widget;
+
+public:	// things that should not be public:
+
+  FluidType* parent;
+  FluidType* first_child;
+  FluidType* next_brother;
+  FluidType* previous_brother;
+
+  FluidType* walk(const FluidType* top) const;
+  FluidType* walk() const;
+
+  static FluidType *first;
+
+  FluidType *factory;
+  const char *callback_name();
+
+  bool open_;	// open/close state of this parent in browser
+
+  static int selected_count() {return selected_count_;}
+  bool selected() const {return selected_;}
+  void selected(bool s) {
+      if (s==selected_) return;
+      if (s ) ++selected_count_; else --selected_count_; 
+      selected_=s;
+  }
+
+  bool new_selected; // browser highlight
+private:
+  bool selected_; // copied here by selection_changed()
+  static int selected_count_;
+
+public:
+
+  virtual ~FluidType();
+  virtual FluidType *make() = 0;
+
+  void add(FluidType *parent); // add as new child
+  void insert(FluidType *n); // insert into list before n
+  void remove(); // remove from list
+  void move_before(FluidType*); // move before a sibling
+
+  virtual const char *title(); // string for browser
+  virtual const char *type_name() const = 0; // type for code output
+
+  const char *name() const {return name_;}
+  void name(const char *);
+  const char *label() const {return label_;}
+  void label(const char *);
+  const char *tooltip() const {return tooltip_;}
+  void tooltip(const char *);
+  const char *callback() const {return callback_;}
+  void callback(const char *);
+  const char *user_data() const {return user_data_;}
+  void user_data(const char *);
+  const char *user_data_type() const {return user_data_type_;}
+  void user_data_type(const char *);
+
+  virtual FluidType* click_test(int,int);
+  virtual void add_child(FluidType*, FluidType* beforethis);
+  virtual void move_child(FluidType*, FluidType* beforethis);
+  virtual void remove_child(FluidType*);
+
+  static FluidType *current;  // most recently picked object
+  virtual void open();	// what happens when you double-click
+
+  // read and write data to a saved file:
+  void write();
+  virtual void write_properties();
+  virtual void read_property(const char *);
+  virtual int read_fdesign(const char*, const char*);
+
+  // write code, these are called in order:
+  virtual void write_static(); // write static stuff to .c file
+  virtual void write_code();   // write .h and .c file
+
+  // live mode
+  virtual fltk::Widget *enter_live_mode(int top=0); // build widgets needed for live mode
+  virtual void leave_live_mode(); // free allocated resources
+  virtual void copy_properties(); // copy properties from this type into a potetial live object
+
+  // fake rtti:
+  virtual int is_parent() const; // makes it open/close in browser
+  virtual int is_widget() const; // is an fltk::Widget
+  virtual int is_button() const; // has true/false value()
+  virtual int is_valuator() const; // double value(), range, step, etc
+  virtual int is_menu_item() const; // can be put into menus
+  virtual int is_group() const; // is an fltk::Group but not an fltk::Menu
+  virtual int is_window() const; // is an outermost fltk::Window
+  virtual int is_code_block() const;
+  virtual int is_decl_block() const;
+  virtual int is_comment() const;
+  virtual int is_class() const;
+  virtual int is_input() const; // has text() methods
+
+  const char* member_of(bool need_nest = false) const;
+  // codeview
+  int code_line, header_line;
+  int code_line_end, header_line_end;
+
+  // constructor of a subclass by name:
+  static FluidType* make(const char *type_name);
+};
+
+////////////////////////////////////////////////////////////////
+// This header file also declares all the global functions in fluid:
+
+// object list operations:
+fltk::Widget *make_widget_browser(int x,int y,int w,int h);
+void delete_all(int selected_only=0);
+void selection_changed(FluidType* new_current);
+
+// file operations:
+FLUID_API void write_word(const char *);
+FLUID_API void write_string(const char *,...);
+FLUID_API int write_file(const char *, int selected_only = 0);
+FLUID_API int write_code(const char *cfile, const char *hfile);
+
+FLUID_API int write_declare(const char *, ...);
+FLUID_API int is_id(char);
+FLUID_API const char* unique_id(void* o, const char*, const char*, const char*);
+FLUID_API void write_craw(const char* string);
+FLUID_API void write_c(const char*, ...);
+FLUID_API void write_h(const char*, ...);
+FLUID_API void write_cstring(const char *);
+FLUID_API void write_cstring(const char *,int length);
+FLUID_API void write_carray(const char *);
+FLUID_API void write_carray(const char *,int length);
+FLUID_API void write_indent(int n);
+FLUID_API void write_open(int);
+FLUID_API void write_close(int n);
+FLUID_API extern int write_number;
+FLUID_API void write_public(int state); // writes pubic:/private: as needed
+FLUID_API extern int indentation;
+FLUID_API extern const char* indent();
+
+FLUID_API int read_file(const char *, int merge);
+FLUID_API const char *read_word(int wantbrace = 0);
+FLUID_API void read_error(const char *format, ...);
+
+extern double read_version;
+
+// check legality of c code (sort of) and return error:
+FLUID_API const char *c_check(const char *c, int type = 0);
+
+// replace a string pointer with new value, strips leading/trailing blanks:
+FLUID_API int storestring(const char *n, const char * & p, int nostrip=0);
+
+FLUID_API extern bool include_H_from_C;
+FLUID_API void select(FluidType* it, int value);
+FLUID_API void select_only(FluidType *);
+FLUID_API void refresh_browser_views();
+FLUID_API void initialize_tab_colors();
+
+extern int modflag;
+
+#endif
+//
+// End of "$Id: FluidType.h 5493 2006-09-28 03:31:05Z spitzak $".
+//

Added: branches/branch-3.0-2011/fluid2/Fluid_Image.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/Fluid_Image.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/Fluid_Image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,392 @@
+//
+// "$Id: Fluid_Image.cxx 5738 2007-03-12 18:07:45Z spitzak $"
+//
+// Pixmap label support 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".
+//
+
+#include <fltk/run.h>
+#include <fltk/Widget.h>
+#include "FluidType.h"
+#include "Fluid_Image.h"
+#include <string.h>
+#ifdef _WIN32
+# define strcasecmp(a,b) stricmp(a,b)
+# define strncasecmp(a,b,c) strnicmp(a,b,c)
+#endif
+#include <stdio.h>
+#include <errno.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <fltk/filename.h>
+
+////////////////////////////////////////////////////////////////
+
+static uchar* store_datas_from_file(const char *filename, size_t &size)
+{
+  uchar *d=0;
+  FILE *fd = fopen(filename, "rb");
+  if(!fd) return 0;
+  size_t c=512, cc=0, r;
+  size = 0;
+  do {
+    c*=2;
+    cc+=c;
+    if(d)
+      d=(uchar *) realloc(d, cc);
+    else
+      d=(uchar *) malloc(cc);
+    r=fread(d+cc-c, 1, c, fd);
+    size+=r;
+  } while(r==c);
+  if(size!=cc) d=(uchar *) realloc(d, size?size:1);
+  return d;
+}
+
+////////////////////////////////////////////////////////////////
+
+class generic_image : public Fluid_Image {
+protected:
+  fltk::SharedImage *p;
+  int *linelength;
+  fltk::ImageType* filetype;
+public:
+  generic_image(const char *name);
+  ~generic_image();
+  virtual const fltk::Symbol* symbol() {return p;}
+  virtual void write_static();
+  virtual void write_code();
+  static int test_file(char *buffer);
+};
+
+int generic_image::test_file(char *buffer) {
+  fltk::ImageType* ft = fltk::guess_image("", (uchar*)buffer);
+  return ft->name != 0;
+}
+
+static int image_file_header_written;
+
+#define MAX_CLINESIZE 256
+void generic_image::write_static() {
+  uchar* d=0;
+  if (!p) return;
+  if(image_file_header_written != write_number)
+  {
+    write_c("\n#include <fltk/SharedImage.h>\n");
+    image_file_header_written = write_number;
+  }
+  if (inlined) {
+    size_t l=0;
+    if (filetype->name && !strcasecmp(filetype->name, "xpm")) {
+      write_c("static const char *%s[] = {\n",
+	      unique_id(this, "datas", fltk::filename_name(name()), 0));
+      FILE* fp = fopen(name(), "rb");
+      if(fp) {
+	indentation += 2;
+	char s[MAX_CLINESIZE+1];
+	do {
+	  fgets(s, MAX_CLINESIZE+1, fp);
+	} while (!feof(fp) && !strchr(s, '{'));
+	while (!feof(fp) && fgets(s, MAX_CLINESIZE+1, fp)) {
+		write_c(indent());
+	    write_craw(s);
+	  //	  write_c(s);
+	}
+	indentation -= 2;
+	fclose(fp);
+      }
+    } else {
+      d = store_datas_from_file(name(), l);
+      if(d) {
+#if 1
+	write_c("static const unsigned char %s[%d] = {\n", unique_id(this, "datas", fltk::filename_name(name()), 0), l);
+	write_carray((const char*)d, l);
+	write_c("};\n");
+#else
+	write_c("static const unsigned char %s[] =\n",
+		unique_id(this, "datas", filename_name(name()), 0));
+	write_cstring((const char*)d, l);
+	write_c(";\n");
+#endif
+	free(d);
+      }
+    }
+  }
+}
+
+void generic_image::write_code() {
+  if (!p) return;
+  if (0 && inlined) {
+    write_c("%so->image(%s%s", indent(),
+	(filetype->name && !strcasecmp(filetype->name, "xpm")) ? 
+	"(const char*const *)" : "", unique_id(this, "datas", fltk::filename_name(name()), 0) );
+  } else {
+    write_c("%so->image(fltk::SharedImage::get(\"%s\"", indent(), name());
+  }
+
+  write_c("));\n");
+    
+}
+
+generic_image::generic_image(const char *name ) : Fluid_Image(name) {
+  filetype = fltk::guess_image(fltk::SharedImage::get_filename(name));
+  p = filetype->get((char*) name, 0);
+  inlined = 1;
+}
+
+generic_image::~generic_image() {
+}
+
+////////////////////////////////////////////////////////////////
+#include <fltk/xbmImage.h>
+
+class bitmap_image : public Fluid_Image {
+  fltk::xbmImage *p;
+public:
+  ~bitmap_image();
+  bitmap_image(const char *name, FILE *);
+  virtual const fltk::Symbol* symbol() {return p;}
+  virtual void write_static();
+  virtual void write_code();
+  static int test_file(char *buffer);
+};
+
+// bad test, always do this last!
+int bitmap_image::test_file(char *buffer) {
+  return (strstr(buffer,"#define ") != 0);
+}
+
+static int bitmap_header_written;
+
+void bitmap_image::write_static() {
+  if (!p) return;
+  write_c("\n");
+  if (bitmap_header_written != write_number) {
+    write_c("#include <fltk/xbmImage.h>\n");
+    bitmap_header_written = write_number;
+  }
+  int w = p->w();
+  int h = p->h();
+  int n = ((w+7)/8)*h;
+#if 1 // older one
+  write_c("static const unsigned char %s[%d] = {\n",
+	  unique_id(this, "bits", fltk::filename_name(name()), 0), n);
+  write_carray((const char*)(p->array), n);
+  write_c("};\n");
+#else // this seems to produce slightly shorter c++ files
+  write_c("static const unsigned char %s[] =\n",
+	  unique_id(this, "bits", fltk::filename_name(name()), 0));
+  write_cstring((const char*)(p->array), n);
+  write_c(";\n");
+#endif
+  write_c("static fltk::xbmImage %s(%s, %d, %d);\n",
+	  unique_id(this, "xbmImage", fltk::filename_name(name()), 0),
+	  unique_id(this, "bits", fltk::filename_name(name()), 0),
+	  w, h);
+}
+
+void bitmap_image::write_code() {
+  if (!p) return;
+  write_c("%so->image(%s);\n", indent(),
+	  unique_id(this, "xbmImage", fltk::filename_name(name()), 0));
+}
+
+#define ns_width 16
+#define ns_height 16
+static unsigned char ns_bits[] = {
+   0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0x80, 0x01, 0x80, 0x01,
+   0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
+   0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00};
+static fltk::xbmImage nosuch_bitmap(ns_bits, ns_width, ns_height);
+
+bitmap_image::bitmap_image(const char *name, FILE *f) : Fluid_Image(name) {
+  p = &nosuch_bitmap; // if any problems with parse we exit with this
+  if (!f) return;
+  char buffer[1024];
+  char junk[1024];
+  int wh[2]; // width and height
+  int i;
+  for (i = 0; i<2; i++) {
+    for (;;) {
+      if (!fgets(buffer,1024,f)) return;
+      int r = sscanf(buffer,"#define %s %d",junk,&wh[i]);
+      if (r >= 2) break;
+    }
+  }
+  // skip to data array:
+  for (;;) {
+    if (!fgets(buffer,1024,f)) return;
+    if (!strncmp(buffer,"static ",7)) break;
+  }
+  int n = ((wh[0]+7)/8)*wh[1];
+  uchar *data = new uchar[n];
+  // read the data:
+  i = 0;
+  for (;i<n;) {
+    if (!fgets(buffer,1024,f)) return;
+    const char *a = buffer;
+    while (*a && i<n) {
+      int t;
+      if (sscanf(a," 0x%x",&t)>0) data[i++] = t;
+      while (*a && *a++ != ',');
+    }
+  }
+  p = new fltk::xbmImage(data,wh[0],wh[1]);
+}
+
+bitmap_image::~bitmap_image() {
+  if (p && p != &nosuch_bitmap) {
+    delete p;
+  }
+}
+
+////////////////////////////////////////////////////////////////
+
+static Fluid_Image** images; // sorted list
+static int numimages;
+static int tablesize;
+
+Fluid_Image* Fluid_Image::find(const char *name) {
+  if (!name || !*name) return 0;
+
+  // first search to see if it exists already:
+  int a = 0;
+  int b = numimages;
+  while (a < b) {
+    int c = (a+b)/2;
+    int i = strcmp(name,images[c]->name_);
+    if (i < 0) b = c;
+    else if (i > 0) a = c+1;
+    else return images[c];
+  }
+
+  // no, so now see if the file exists:
+
+  Fluid_Image *ret = 0;
+
+  const char* realname = fltk::SharedImage::get_filename(name);
+  FILE *f = fopen(realname,"rb");
+
+  if (!f) {
+    read_error("%s : %s", realname, strerror(errno));
+  } else {
+    // now see if we can identify the type, by reading in some data
+    // and asking all the types we know about:
+    char buffer[1025];
+    fread(buffer, 1, 1024, f);
+    rewind(f);
+    buffer[1024] = 0; // null-terminate so strstr() works
+    if (generic_image::test_file(buffer)) {
+      ret = new generic_image(name);
+    } else if (bitmap_image::test_file(buffer)) {
+      ret = new bitmap_image(name,f);
+    } else {
+      ret = 0;
+      read_error("%s : unrecognized image format", name);
+    }
+    fclose(f);
+  }
+  if (!ret) ret = new bitmap_image(name, 0);
+
+  // make a new entry in the table:
+  numimages++;
+  if (numimages > tablesize) {
+    tablesize = tablesize ? 2*tablesize : 16;
+    images = (Fluid_Image**)realloc(images, tablesize*sizeof(Fluid_Image*));
+  }
+  for (b = numimages-1; b > a; b--) images[b] = images[b-1];
+  images[a] = ret;
+
+  return ret;
+}
+
+Fluid_Image::Fluid_Image(const char *name) {
+  name_ = strdup(name);
+  written = 0;
+  refcount = 0;
+  inlined=0;
+}
+
+void Fluid_Image::increment() {
+  ++refcount;
+}
+
+void Fluid_Image::decrement() {
+  --refcount;
+  if (refcount > 0) return;
+  delete this;
+}
+
+Fluid_Image::~Fluid_Image() {
+  int a;
+  for (a = 0; a<numimages; a++) if (images[a] == this) break;
+  if(a<numimages) {
+    numimages--;
+    for (; a < numimages; a++) images[a] = images[a+1];
+  }
+  free((void*)name_);
+}
+
+////////////////////////////////////////////////////////////////
+
+#include <fltk/file_chooser.h>
+
+Fluid_Image *ui_find_image(Fluid_Image *old) {
+  const char *name = fltk::file_chooser("Image", "*.{bm|xbm|xpm|gif|png|bmp|jpg|jpeg}",
+				     old ? old->name() : 0);
+  Fluid_Image *ret = (name && *name) ? Fluid_Image::find(name) : 0;
+  return ret;
+}
+
+////////////////////////////////////////////////////////////////
+
+static int cancel, modal;
+void browse_dir_cb();
+
+#include "image_file_panel.h"
+#include "image_file_panel.cxx"
+
+const char *images_dir = 0;
+extern void fix_images_dir();
+
+void browse_dir_cb()
+{
+  const char *f = fltk::file_chooser("Images directory","",
+				     images_dir_input->value());
+  if (f) images_dir_input->value(f);
+}
+
+void set_images_dir_cb(fltk::Widget *, void *) {
+  if(!images_dir_window) make_images_dir_window();
+  images_dir_input->value(images_dir);
+  images_dir_window->show();
+  cancel=0; modal=1;
+  while(modal) fltk::wait();
+  if (!cancel) {
+    images_dir = images_dir_input->value();
+    if (!*images_dir) images_dir = 0;
+    fix_images_dir();
+  }
+}
+ 
+//
+// End of "$Id: Fluid_Image.cxx 5738 2007-03-12 18:07:45Z spitzak $".
+//

Added: branches/branch-3.0-2011/fluid2/Fluid_Image.h
===================================================================
--- branches/branch-3.0-2011/fluid2/Fluid_Image.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/Fluid_Image.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,66 @@
+//
+// "$Id: Fluid_Image.h 5493 2006-09-28 03:31:05Z spitzak $"
+//
+// Pixmap image header file for the Fast Light Tool Kit (FLTK).
+//
+// This class stores the image labels for widgets in fluid.  This is
+// not a class in fltk itself, and this will produce different types of
+// code depending on what the image type is.  There are private subclasses
+// in Fluid_Image.C for each type of image format.  Right now only xpm
+// files are supported.
+//
+// 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 FLUID_IMAGE_H
+#define FLUID_IMAGE_H
+
+#include "Fluid_Plugins.h"
+#include <fltk/SharedImage.h>
+
+class Fluid_Image {
+  const char *name_;
+  int refcount;
+protected:
+  Fluid_Image(const char *name); // no public constructor
+  virtual ~Fluid_Image(); // no public destructor
+public:
+  bool inlined;
+  int written;
+  static Fluid_Image* find(const char *);
+  void decrement(); // reference counting & automatic free
+  void increment();
+  virtual const fltk::Symbol* symbol() = 0; // return the fltk Symbol object
+  virtual void write_static() = 0;
+  virtual void write_code() = 0;
+  const char *name() const {return name_;}
+};
+
+// pop up file chooser and return a legal image selected by user,
+// or zero for any errors:
+Fluid_Image *ui_find_image(Fluid_Image* old);
+
+FLUID_API extern const char *images_dir;
+
+#endif
+
+//
+// End of "$Id: Fluid_Image.h 5493 2006-09-28 03:31:05Z spitzak $".
+//

Added: branches/branch-3.0-2011/fluid2/Fluid_Plugins.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/Fluid_Plugins.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/Fluid_Plugins.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,140 @@
+//
+// "$Id: Fluid_Plugins.cxx 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Plugins code 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".
+//
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef _WIN32
+# define strcasecmp(a,b) stricmp(a,b)
+# define strncasecmp(a,b,c) strnicmp(a,b,c)
+#endif
+#include <fltk/run.h>
+#include <fltk/Group.h>
+#include "Fluid_Plugins.h"
+#include <FL/Fl_Menu_Item.H>
+#include <fltk/load_plugin.h>
+
+Fluid_Plugin* plugins[MAXPLUGINS];
+int nbplugins;
+Fl_Menu_Item Plugins_Options_Menu[MAXPLUGINS+1];
+Fl_Menu_Item Plugins_New_Menu[MAXPLUGINS+1];
+
+#if HAVE_DLOPEN
+
+#include <fltk/dirent.h>
+static int nboptions;
+static int nbnew;
+
+static void ReadPlugin(char* s, const char* location)
+{
+  if(nbplugins >= MAXPLUGINS) return;
+
+  if(!strcmp(s+strlen(s)-sizeof(PLUGINS_EXTENSION)+1, PLUGINS_EXTENSION)) {
+    char s2[256];
+
+    sprintf(s2, "%s%s", location, s);
+
+    Fluid_Plugin* d = (Fluid_Plugin*)load_plugin(s2, "fluid_plugin");
+
+    if (d) {
+      s[strlen(s)-sizeof(PLUGINS_EXTENSION)+1] = 0;
+
+      int i;
+      for(i=0; i<nbplugins; i++) if(!strcmp(d->name, plugins[i]->name)) break;
+      if(i<nbplugins) 
+	fprintf(stderr, "Duplicate FLUID plugin, only the first one will be loaded ...\n");
+      else {
+	fprintf(stderr, "Found FLUID plugin '%s' ...\n", s);
+	if(d->options_menu) {
+	  Plugins_Options_Menu[nboptions].text = d->name;
+	  Plugins_Options_Menu[nboptions].user_data_ = d->options_menu;
+	  Plugins_Options_Menu[nboptions].flags = FL_SUBMENU_POINTER;
+	  nboptions++;
+	}
+	if(d->new_menu) {
+	  Plugins_New_Menu[nbnew].text = d->name;
+	  Plugins_New_Menu[nbnew].user_data_ = d->new_menu;
+	  Plugins_New_Menu[nbnew].flags = FL_SUBMENU_POINTER;
+	  fill_in_New_Menu(d->new_menu);
+	  nbnew++;
+	}
+	plugins[nbplugins++] = d;
+      }
+    }
+  }
+}
+
+static void ReadPlugins(const char* location)
+{
+#if 0
+  dirent **d = 0;
+  int n = filename_list(location, &d);
+
+  if (n <= 0)
+    return;
+
+//  printf("ReadPlugins: n = %d\n", n);
+
+  for (int i = 0; i < n; i ++) 
+  {
+    ReadPlugin(d[i]->d_name, location);
+//    free((void*)(d[i]));
+  }
+  free((void*)d);
+#endif
+}
+
+// Here, we create some useless object just to be sure that the whole 
+// FLTK library will be linked in fluid.
+// This function even do not need to be called ...
+#include <fltk/xpmImage.h>
+void link_whole_fltk()
+{
+  new fltk::xpmImage((char**)0);
+  // add some more if you get problems when reading your plugins ...
+}
+
+void read_plugins()
+{
+  // Priority order in case of duplicate plugin name is from the most local to the most global
+  ReadPlugins("plugins/");
+  ReadPlugins("./");
+#ifndef _WIN32
+  char s[256];
+  sprintf(s, "%s/.fluid/plugins/", getenv("HOME"));
+  ReadPlugins(s);
+  ReadPlugins("/usr/local/lib/fltk/fluid/");
+#endif
+}
+
+#else
+
+void read_plugins() {}
+
+#endif
+
+//
+// End of "$Id: Fluid_Plugins.cxx 4886 2006-03-30 09:55:32Z fabien $"
+//

Added: branches/branch-3.0-2011/fluid2/Fluid_Plugins.h
===================================================================
--- branches/branch-3.0-2011/fluid2/Fluid_Plugins.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/Fluid_Plugins.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,80 @@
+//
+// "$Id: Fluid_Plugins.h 5466 2006-09-19 04:27:33Z spitzak $"
+//
+// Plugins headers 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 FLUID_PLUGINS_H
+#define FLUID_PLUGINS_H
+
+#include <FL/Fl_Menu_Item.H>
+
+namespace fltk {class Group;}
+
+#define PLUGINS_EXTENSION ".flpl"
+
+struct Fluid_Plugin {
+  // statically user filled informations
+  char* 	name;
+  Fl_Menu_Item* options_menu;
+  Fl_Menu_Item* new_menu;
+  void 		(*make_panel)();
+
+  // dynamic variables
+  int           please_show_panel; // Set it to 1 when a widget use 
+                                   // some settings of this panel
+
+  fltk::Group*    panel;		   // This has to be filled by the
+                                   // make panel function
+
+  // dynamic variables used by fluid only
+  int		was_visible;
+  int		panel_is_orphan;
+};
+
+#define MAXPLUGINS 32
+extern Fluid_Plugin* plugins[MAXPLUGINS];
+extern int nbplugins;
+extern Fl_Menu_Item Plugins_Options_Menu[];
+extern Fl_Menu_Item Plugins_New_Menu[];
+
+// defined in fluid/factory
+void fill_in_New_Menu(Fl_Menu_Item* menu);
+
+void read_plugins();
+
+#if defined(_WIN32)
+# if defined(FLUID_PLUGIN)
+#  define FLUID_PLUGIN_API __declspec( dllexport )
+#  define FLUID_API __declspec( dllimport )
+# else
+#  define FLUID_API __declspec( dllexport )
+# endif
+#else
+# define FLUID_API
+# define FLUID_PLUGIN_API
+#endif
+
+#endif
+
+//
+// End of "$Id: Fluid_Plugins.h 5466 2006-09-19 04:27:33Z spitzak $"
+//

Added: branches/branch-3.0-2011/fluid2/FunctionType.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/FunctionType.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/FunctionType.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,1057 @@
+// "$Id: FunctionType.cxx 7513 2010-04-15 17:19:27Z spitzak $"
+//
+// C function type code 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".
+//
+
+#include <fltk/run.h>
+#include "FunctionType.h"
+#include "WidgetType.h"
+#include "Fluid_Image.h"
+#include <fltk/ask.h>
+#include <fltk/Preferences.h>
+#include <fltk/Browser.h>
+#include <fltk/string.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include "coding_style.h"
+
+using namespace fltk;
+
+////////////////////////////////////////////////////////////////
+// quick check of any C code for legality, returns an error message
+static char buffer[128]; // for error messages
+extern fltk::Browser *widget_browser;
+
+const char *strip_default_args(const char *name) {
+    if(!strchr(name, '='))
+	return name;
+    static char *buffer = NULL;
+    static size_t bufsize = 0;
+    if(!bufsize || bufsize < strlen(name) + 1) {
+	if(buffer) delete[] buffer;
+	size_t allocsize = strlen(name) * 2;	// the *2 is just arbitrary pad
+	buffer = new char[allocsize]; 
+	if(buffer) bufsize = allocsize;
+    }
+    if(buffer) {
+	memset(buffer, 0, bufsize);
+	char *pbuff = buffer;
+	const char *pname = name;
+	int skipping = 0;
+	int inargs = 0;
+	while(*pname) {
+	    if(!inargs) {
+		if(*pname == '(')
+		    inargs = 1;
+	    }
+	    else if(!skipping) {
+		if(*pname == '=') {
+		    skipping = 1;
+		    ++pname;
+		    continue;
+		}
+	    } else if(*pname == ',' || *pname == ')') {
+		skipping = 0;
+	    }
+	    else if (skipping) {
+		++pname;
+		continue;
+	    }
+	    *pbuff++ = *pname++;
+	}
+	*pbuff = '\0';
+    }
+    return buffer;
+}
+
+// check a quoted string ending in either " or ' or >:
+const char *_q_check(const char * & c, int type) {
+    for (;;) switch (*c++) {
+  case '\0':
+      sprintf(buffer,"missing %c",type);
+      return buffer;
+  case '\\':
+      if (*c) c++;
+      break;
+  default:
+      if (*(c-1) == type) return 0;
+    }
+}
+
+// check normal code, match braces and parenthesis:
+const char *_c_check(const char * & c, int type) {
+    const char *d;
+    for (;;) switch (*c++) {
+  case 0:
+      if (!type) return 0;
+      sprintf(buffer, "missing %c", type);
+      return buffer;
+  case '/':
+      // Skip comments as needed...
+      if (*c == '/') {
+	  while (*c != '\n' && *c) c++;
+      } else if (*c == '*') {
+	  c++;
+	  while ((*c != '*' || c[1] != '/') && *c) c++;
+	  if (*c == '*') c+=2;
+	  else {
+	      return "missing '*/'";
+	  }
+      }
+      break;
+  case '#':
+      // treat cpp directives as a comment:
+      while (*c != '\n' && *c) c++;
+      break;
+  case '{':
+      if (type==')') goto UNEXPECTED;
+      d = _c_check(c,'}');
+      if (d) return d;
+      break;
+  case '(':
+      d = _c_check(c,')');
+      if (d) return d;
+      break;
+  case '\"':
+      d = _q_check(c,'\"');
+      if (d) return d;
+      break;
+  case '\'':
+      d = _q_check(c,'\'');
+      if (d) return d;
+      break;
+  case '}':
+  case ')':
+UNEXPECTED:
+      if (type == *(c-1)) return 0;
+      sprintf(buffer, "unexpected %c", *(c-1));
+      return buffer;
+    }
+}
+
+const char *c_check(const char *c, int type) {
+    return _c_check(c,type);
+}
+
+////////////////////////////////////////////////////////////////
+
+FluidType *FunctionType::make() {
+    FluidType *p = FluidType::current;
+    while (p && !p->is_decl_block()) p = p->parent;
+    FunctionType *o = new FunctionType();
+    o->name("make_window()");
+    o->attributes = 0;
+    o->return_type = 0;
+    o->add(p);
+    o->factory = this;
+    o->public_ = true;
+    o->cdecl_ = false;
+    return o;
+}
+
+void FunctionType::write_properties() {
+    FluidType::write_properties();
+    if (!public_) write_string("private");
+    if (cdecl_) write_string("C");
+    if (return_type) {
+	write_string("return_type");
+	write_word(return_type);
+    }
+    if (attributes) {
+	write_string("attributes");
+	write_word(attributes);
+    }
+}
+
+void FunctionType::read_property(const char *c) {
+    if (!strcmp(c,"private")) {
+	public_ = 0;
+    } else if (!strcmp(c,"C")) {
+	cdecl_ = true;
+    } else if (!strcmp(c,"return_type")) {
+	storestring(read_word(),return_type);
+    } else if (!strcmp(c,"attributes")) {
+	storestring(read_word(),attributes);
+    } else {
+	FluidType::read_property(c);
+    }
+}
+
+#include "function_panel.h"
+#include <fltk/ask.h>
+
+static void ok_callback(fltk::Widget* w, void*) {
+  w->window()->make_exec_return(true);
+}
+
+static void cancel_callback(fltk::Widget* w, void*) {
+  w->window()->make_exec_return(false);
+}
+
+void FunctionType::open() {
+    if (!function_panel) {
+	make_function_panel();
+	f_panel_ok->callback(ok_callback);
+	f_panel_cancel->callback(cancel_callback);
+    }
+    f_return_type_input->static_value(return_type);
+    f_attributes_input->static_value(attributes);
+    f_name_input->static_value(name());
+    f_public_button->value(public_);
+    f_c_button->value(cdecl_);
+    const char* message = 0;
+    for (;;) {
+	if (message) fltk::alert(message);
+	if (!function_panel->exec()) break;
+	const char* c = f_name_input->value();
+	while (isspace(*c)) c++;
+	message = c_check(c); if (message) continue;
+	const char *d = c;
+	for (; *d != '('; d++) if (isspace(*d) || !*d) break;
+	if (*c && *d != '(') {
+	    message = "Name must contain argument list in parenthesis."; continue;
+	}
+	c = f_return_type_input->value();
+	message = c_check(c); if (message) continue;
+	name(f_name_input->value());
+	storestring(c, return_type);
+	storestring(f_attributes_input->value(), attributes);
+	public_ = f_public_button->value();
+	cdecl_ = f_c_button->value();
+	break;
+    }
+    delete function_panel;
+    function_panel = NULL;
+}
+
+WidgetType* last_group;
+
+void FunctionType::write_code() {
+    const char* rtype = return_type;
+    constructor=0;
+    havewidgets = 0;
+    FluidType *child;
+    char attr[256];
+    if (attributes) {
+      strlcpy(attr, attributes, sizeof(attr));
+      strlcat(attr, " ", sizeof(attr));
+    } else
+	attr[0] = 0;
+    for (child = first_child; child; child = child->next_brother)
+	if (child->is_widget()) {
+	    havewidgets = 1;
+	    last_group = (WidgetType*)child;
+	}
+	write_c("\n");
+	if (ismain()) {
+	    write_c("#include <fltk/run.h>\n\n");
+	    write_c("int main%s(int argc, char **argv)%s\n",
+		gno_space_parens ? "" : " ", get_opening_brace(1));
+	    // write_c("int main(int argc, char **argv) {\n");
+	    if (havewidgets)
+		rtype = last_group->subclass();
+	    else 
+		rtype = "void";
+	} else {
+	    const char* star = "";
+	    // from matt: let the user type "static " at the start of type
+	    // in order to declare a static method;
+	    int is_static = 0;
+	    int is_virtual = 0;
+	    if (rtype) {
+		if (!strcmp(rtype,"static")) {is_static = 1; rtype = 0;}
+		else if (!strncmp(rtype, "static ",7)) {is_static = 1; rtype += 7;}
+		if (!strcmp(rtype, "virtual")) {is_virtual = 1; rtype = 0;}
+		else if (!strncmp(rtype, "virtual ",8)) {is_virtual = 1; rtype += 8;}
+	    }
+	    if (!rtype) {
+		if (havewidgets) {
+		    rtype = last_group->subclass();
+		    star = "*";
+		} else rtype = "void";
+	    }
+	    
+	    const char* k = member_of(0);
+	    if (k) {
+		write_public(public_);
+		if (name()[0] == '~')
+		    constructor = 1;
+		else {
+		    size_t n = strlen(k);
+		    if (!strncmp(name(), k, n) && name()[n] == '(') constructor = 1;
+		}
+		write_h(get_indent_string(1));
+		if (is_static) write_h("static ");
+		if (is_virtual) write_h("virtual ");
+		if (!constructor) {
+		    write_h("%s%s%s ", attr, rtype, star);
+		    write_c("%s%s ", rtype, star);
+		}
+		
+		// if this is a subclass, only write_h() the part before the ':'
+		char s[1024], *sptr = s;
+		char *nptr = (char *)name();
+		
+		while (*nptr) {
+		    if (*nptr == ':') {
+			if (nptr[1] != ':') break;
+			// Copy extra ":" for "class::member"...
+			*sptr++ = *nptr++;
+		    }	  
+		    *sptr++ = *nptr++;
+		}
+		*sptr = '\0';
+		
+		if(constructor)	// already wrote this for constructors.
+		    write_h("%s", attr);
+		write_h("%s;\n", s);
+		write_c("%s::%s%s", k, strip_default_args(name()), get_opening_brace(1));
+	    } else {
+		if (public_) {
+		    if (cdecl_)
+			write_h("extern \"C\" { %s%s%s %s; }\n", attr, rtype, star, name());
+		    else
+			write_h("%s%s%s %s;\n", attr, rtype, star, name());
+		}
+		else write_c("static ");
+		write_c("%s%s %s%s", rtype, star, name(), get_opening_brace(1));
+	    }
+	}
+	indentation += 2;
+	if(havewidgets) 
+	    write_c("%s%s* w;\n", indent(), last_group->subclass());
+	
+	for (FluidType* q = first_child; q; q = q->next_brother) q->write_code();
+	
+	if (ismain()) {
+	    if (havewidgets) write_c("%sw->show(argc, argv);\n", get_indent_string(1));
+	    write_c("%sreturn %s%sfltk::run()%s;\n", get_indent_string(1),
+		gno_space_parens ? "" : " ",
+		galways_return_parens ? "(" : "", galways_return_parens ? ")" : "");
+	} else if (havewidgets && !constructor && !return_type)
+	    write_c("%sreturn %s%sw%s;\n", get_indent_string(1), 
+	    gno_space_parens ? "" : " ",
+	    galways_return_parens ? "(" : "", galways_return_parens ? ")" : "");
+	write_c("}\n");
+	indentation -= 2;
+	if (indentation < 0) indentation = 0;
+}
+
+////////////////////////////////////////////////////////////////
+FluidType *CodeType::make() {
+    FluidType *p = FluidType::current;
+    while (p && !p->is_code_block()) p = p->parent;
+    if (!p) {
+	fltk::message("Please select a function");
+	return 0;
+    }
+    CodeType *o = new CodeType();
+    o->name("printf(\"Hello, World!\\n\");");
+    o->add(p);
+    o->factory = this;
+    return o;
+}
+
+void CodeType::open() {
+    if (!code_panel) {
+	make_code_panel();
+	code_panel_ok->callback(ok_callback);
+	code_panel_cancel->callback(cancel_callback);
+    }
+    code_input->text(name());
+    const char* message = 0;
+    for (;;) { // repeat as long as there are errors
+	if (message) fltk::alert(message);
+	if (!code_panel->exec()) break;
+	const char*c = code_input->text();
+	message = c_check(c); if (message) continue;
+	name(c);
+	break;
+    }
+    code_panel->hide();
+    delete code_panel;
+    code_panel = NULL;
+}
+
+
+void CodeType::write_code() {
+    const char* c = name();
+    if (!c) return;
+    //write_c("%s%s\n", indent(), c);
+    write_code_block((char *)c);
+    for (FluidType* q = first_child; q; q = q->next_brother) q->write_code();
+}
+
+void CodeType::write_static() {
+    const char* c = name();
+    if (!c) return;
+    //write_c("%s%s\n", indent(), c);
+    write_includes_from_code((char *)c);
+}
+
+////////////////////////////////////////////////////////////////
+FluidType *CodeBlockType::make() {
+    FluidType *p = FluidType::current;
+    while (p && !p->is_code_block()) p = p->parent;
+    if (!p) {
+	fltk::message("Please select a function");
+	return 0;
+    }
+    CodeBlockType *o = new CodeBlockType();
+    o->name("if (test())");
+    o->after = 0;
+    o->add(p);
+    o->factory = this;
+    return o;
+}
+
+void CodeBlockType::write_properties() {
+    FluidType::write_properties();
+    if (after) {
+	write_string("after");
+	write_word(after);
+    }
+}
+
+void CodeBlockType::read_property(const char *c) {
+    if (!strcmp(c,"after")) {
+	storestring(read_word(),after);
+    } else {
+	FluidType::read_property(c);
+    }
+}
+
+void CodeBlockType::open() {
+    if (!codeblock_panel) {
+	make_codeblock_panel();
+	codeblock_panel_ok->callback(ok_callback);
+	codeblock_panel_cancel->callback(cancel_callback);
+    }
+    code_before_input->static_value(name());
+    code_after_input->static_value(after);
+    const char* message = 0;
+    for (;;) { // repeat as long as there are errors
+	if (message) fltk::alert(message);
+	if (!codeblock_panel->exec()) break;
+	const char*c = code_before_input->value();
+	message = c_check(c); if (message) continue;
+	name(c);
+	c = code_after_input->value();
+	message = c_check(c); if (message) continue;
+	storestring(c, after);
+	break;
+    }
+    codeblock_panel->hide();
+    delete codeblock_panel;
+    codeblock_panel = NULL;
+}
+
+void CodeBlockType::write_code() {
+    const char* c = name();
+    write_c("%s%s%s", indent(), c ? c : "", get_opening_brace(0));
+    indentation += 2;
+    for (FluidType* q = first_child; q; q = q->next_brother) q->write_code();
+    indentation -= 2;
+    if (after) write_c("%s} %s\n", indent(), after);
+    else write_c("%s}\n", indent());
+}
+
+////////////////////////////////////////////////////////////////
+FluidType *DeclType::make() {
+    FluidType *p = FluidType::current;
+    while (p && !p->is_decl_block()) p = p->parent;
+    DeclType *o = new DeclType();
+    o->public_ = 0;
+    o->name("int x;");
+    o->add(p);
+    o->factory = this;
+    return o;
+}
+
+void DeclType::write_properties() {
+    FluidType::write_properties();
+    if (public_) write_string("public");
+}
+
+void DeclType::read_property(const char *c) {
+    if (!strcmp(c,"public")) {
+	public_ = 1;
+    } else {
+	FluidType::read_property(c);
+    }
+}
+
+void DeclType::open() {
+    if (!decl_panel) {
+	make_decl_panel();
+	decl_panel_ok->callback(ok_callback);
+	decl_panel_cancel->callback(cancel_callback);
+    }
+    decl_input->static_value(name());
+    decl_public_button->value(public_);
+    const char* message = 0;
+    for (;;) { // repeat as long as there are errors
+	if (message) fltk::alert(message);
+	if (!decl_panel->exec()) break;
+	const char*c = decl_input->value();
+	while (isspace(*c)) c++;
+	message = c_check(c&&c[0]=='#' ? c+1 : c);
+	if (message) continue;
+	name(c);
+	public_ = decl_public_button->value();
+	break;
+    }
+    decl_panel->hide();
+    delete decl_panel;
+    decl_panel = NULL;
+}
+
+
+void DeclType::write_code() {
+    const char* c = name();
+    if (!c) return;
+    // handle putting #include or extern or typedef into decl:
+    if ((!isalpha(*c) && *c != '~')
+	|| (!strncmp(c,"extern",6) && isspace(c[6]))
+	|| (!strncmp(c,"class",5) && isspace(c[5]))
+	|| (!strncmp(c,"typedef",7) && isspace(c[7]))
+	//    || (!strncmp(c,"struct",6) && isspace(c[6]))
+	) {
+	if (public_) {
+	    char * s = strdup(c);
+	    char * p = (char*) strrchr(c,'=');
+	    if (p) {*p++=';';*p='\0';}
+	    write_h("%s\n", s);
+	    free(s);
+	}
+	else
+	    write_c("%s\n", c);
+	return;
+    }
+    // lose all trailing semicolons so I can add one:
+    const char* e = c+strlen(c);
+    while (e>c && e[-1]==';') e--;
+    if (member_of()) {
+	write_public(public_);
+	write_h("%s%.*s;\n", get_indent_string(1), e-c, c);
+    } else {
+	if (public_) {
+	    char * s = strdup(c);
+	    char * p = (char*) strrchr(s,'=');
+	    if (p) {*p++=';';*p='\0';}
+	    //write_h("extern %.*s;\n", e-c, c);
+	    write_h("extern %s\n", s);
+	    free(s);
+	    write_c("%.*s;\n", e-c, c);
+	} else {
+	    write_c("static %.*s;\n", e-c, c);
+	}
+    }
+    
+    for (FluidType* q = first_child; q; q = q->next_brother) q->write_code();
+}
+
+////////////////////////////////////////////////////////////////
+
+FluidType *DeclBlockType::make() {
+    FluidType *p = FluidType::current;
+    while (p && !p->is_decl_block()) p = p->parent;
+    DeclBlockType *o = new DeclBlockType();
+    o->name("#if 1");
+    o->after = strdup("#endif");
+    o->add(p);
+    o->factory = this;
+    return o;
+}
+
+void DeclBlockType::write_properties() {
+    FluidType::write_properties();
+    write_string("after");
+    write_word(after);
+}
+
+void DeclBlockType::read_property(const char *c) {
+    if (!strcmp(c,"after")) {
+	storestring(read_word(),after);
+    } else {
+	FluidType::read_property(c);
+    }
+}
+
+void DeclBlockType::open() {
+    if (!declblock_panel) {
+	make_declblock_panel();
+	declblock_panel_ok->callback(ok_callback);
+	declblock_panel_cancel->callback(cancel_callback);
+    }
+    decl_before_input->static_value(name());
+    decl_after_input->static_value(after);
+    const char* message = 0;
+    for (;;) { // repeat as long as there are errors
+	if (message) fltk::alert(message);
+	if (!declblock_panel->exec()) break;
+	const char*c = decl_before_input->value();
+	while (isspace(*c)) c++;
+	message = c_check(c&&c[0]=='#' ? c+1 : c);
+	if (message) continue;
+	name(c);
+	c = decl_after_input->value();
+	while (isspace(*c)) c++;
+	message = c_check(c&&c[0]=='#' ? c+1 : c);
+	if (message) continue;
+	storestring(c,after);
+	break;
+    }
+    declblock_panel->hide();
+    delete declblock_panel;
+    declblock_panel = NULL;
+}
+
+
+void DeclBlockType::write_code() {
+    const char* c = name();
+    if (c) write_c("%s\n", c);
+    for (FluidType* q = first_child; q; q = q->next_brother) q->write_code();
+    if (after) write_c("%s\n", after);
+}
+
+////////////////////////////////////////////////////////////////
+
+static CommentType * current_comment=0;
+
+FluidType *CommentType::make() {
+    FluidType *p = FluidType::current;
+    while (p && !p->is_code_block()) p = p->parent;
+    CommentType *o = new CommentType();
+    o->in_c_ = 1;
+    o->in_h_ = 1;
+    o->name("my comment");
+    o->add(p);
+    o->factory = this;
+    o->title_buf[0] = 0;
+    current_comment = o;
+    return o;
+}
+
+void CommentType::write_properties() {
+    FluidType::write_properties();
+    if (in_c_) write_string("in_source"); else write_string("not_in_source"); 
+    if (in_h_) write_string("in_header"); else write_string("not_in_header");
+}
+
+void CommentType::read_property(const char *c) {
+    if (!strcmp(c,"in_source")) {
+	in_c_ = 1;
+    } else if (!strcmp(c,"not_in_source")) {
+	in_c_ = 0;
+    } else if (!strcmp(c,"in_header")) {
+	in_h_ = 1;
+    } else if (!strcmp(c,"not_in_header")) {
+	in_h_ = 0;
+    } else {
+	FluidType::read_property(c);
+    }
+}
+
+#include "comments.h"
+
+static void load_comments_preset(fltk::Preferences &menu) 
+{
+  static const char * const predefined_comment[] = {
+    "GNU Public License/GPL Header",  "GNU Public License/GPL Footer",
+    "GNU Public License/LGPL Header", "GNU Public License/LGPL Footer",
+    "FLTK/Header", "FLTK/Footer" };
+  menu.set("n", 6);
+  fltk::Preferences db(fltk::Preferences::USER, "fltk.org", "fluid_comments");
+  for (int i=0; i<6; i++) {
+    menu.set(fltk::Preferences::Name(i), predefined_comment[i]);
+    db.set(predefined_comment[i], comment_text[i]);
+  }
+}
+
+
+static void comment_predefined_cb(fltk::Widget * w, void * data) {
+  // TODO : handle predefined  comments menus cb
+}
+
+
+static void comment_ok_cb(fltk::Widget * w, void * data) {
+  // TODO : handle predefined  comments menus cb
+  const char * c = comment_input->value();
+  current_comment->name(c);
+  int mod = 0;
+  if (current_comment->in_c_ != comment_in_source->value()) {
+    current_comment->in_c_ = comment_in_source->value();
+    mod = 1;
+  }
+  if (current_comment->in_h_ != comment_in_header->value()) {
+    current_comment->in_h_ = comment_in_header->value();
+    mod = 1;
+  }
+  if (mod) modflag=1;
+  if (modflag  && widget_browser) {
+    widget_browser->relayout();
+    refresh_browser_views();
+  }
+  comment_panel->hide();
+}
+
+void CommentType::open() {
+#if 1
+    if (!comment_panel) make_comment_panel();
+    const char *text = name();
+    {
+	int i=0, n=0;
+	fltk::Preferences menu(fltk::Preferences::USER, "fltk.org", "fluid_comments_menu");
+	comment_predefined->clear();
+	comment_predefined->add("_Edit/Add current comment...");
+	comment_predefined->add("_Edit/Remove last selection...");
+	menu.get("n", n, -1);
+	if (n==-1) load_comments_preset(menu);
+	menu.get("n", n, 0);
+	for (i=0;i<n;i++) {
+	    char *text;
+	    menu.get(fltk::Preferences::Name(i), text, "");
+	    comment_predefined->add(text);
+	    free(text);
+	}
+	comment_predefined->callback (comment_predefined_cb);
+    }
+    comment_input->value( text ? text : "" );
+    comment_in_source->value(in_c_ ? true : false);
+    comment_in_header->value(in_h_ ? true : false);
+    comment_panel_ok->callback(comment_ok_cb);
+    char itempath[256]; itempath[0] = 0;
+    comment_panel->exec(0,false);
+ 
+    title_buf[0] = 0;
+    comment_panel->hide();
+#endif
+}
+
+const char * CommentType::title() {
+    const char* n = name(); 
+    if (!n || !*n) return type_name();
+
+    const char *s = n;
+    char *d = title_buf;
+	int i = 50;
+	while (--i > 0) {
+	    char n = *s++;
+	    if (n==0) break;
+	    if (n=='\r') { *d++ = '\\'; *d++ = 'r'; i--; }
+	    else if (n=='\n') { *d++ = '\\'; *d++ = 'n'; i--; }
+	    else if (n<32) { *d++ = '^'; *d++ = 'A'+n; i--; }
+	    else *d++ = n;
+	}
+	if (i<=0) { *d++ = '.'; *d++ = '.'; *d++ = '.'; }
+	*d++ = 0;
+    return title_buf;
+}
+
+
+void CommentType::write_code1() {
+    const char* c = name();
+    if (!c) return;
+    if (!in_c_ && !in_h_) return;
+    // find out if there is already a valid comment:
+    const char *s = c;
+    while (isspace(*s)) s++;
+    // if this seems to be a C style comment, copy the block as is
+    // (it's up to the user to correctly close the comment)
+    if (s[0]=='/' && s[1]=='*') {
+	if (in_h_) write_h("%s\n", c);
+	if (in_c_) write_c("%s\n", c);
+	return;
+    }
+    // copy the comment line by line, add the double slash if needed
+    char *txt = strdup(c);
+    char *b = txt, *e = txt;
+    for (;;) {
+	// find the end of the line and set it to NUL
+	while (*e && *e!='\n') e++;
+	char eol = *e;
+	*e = 0;
+	// check if there is a C++ style comment at the beginning of the line
+	char *s = b;
+	while (isspace(*s)) s++;
+	if (s!=e && ( s[0]!='/' || s[1]!='/') ) {
+	    // if no comment marker was found, we add one ourselves
+	    if (in_h_) write_h("// ");
+	    if (in_c_) write_c("// ");
+	}
+	// now copy the rest of the line
+	if (in_h_) write_h("%s\n", b);
+	if (in_c_) write_c("%s\n", b);
+	if (eol==0) break;
+	*e++ = eol;
+	b = e;
+    }
+}
+
+void CommentType::write_code2() {}
+
+////////////////////////////////////////////////////////////////
+
+// Return the class that this is a member of, or null if this is not
+// a member of a class. If need_nest is true then a fully-qualified
+// name (ie foo::bar::baz) of nested classes is returned, you need this
+// if you actually want to print the class.
+const char* FluidType::member_of(bool need_nest) const {
+    FluidType* p = parent;
+    while (p) {
+	if (p->is_class()) {
+	    if (!need_nest) return p->name();
+	    // see if we are nested in another class, we must fully-qualify name:
+	    // this is lame but works...
+	    const char* q = p->member_of(true);
+	    if (!q) return p->name();
+	    static char buffer[256];
+	    if (q != buffer) strcpy(buffer, q);
+	    strcat(buffer, "::");
+	    strcat(buffer, p->name());
+	    return buffer;
+	}
+	p = p->parent;
+    }
+    return 0;
+}
+
+void ClassType::prefix(const char*p) {
+    free((void*) class_prefix);
+    class_prefix=strdup(p ? p : "" );
+}
+
+FluidType *ClassType::make() {
+    FluidType *p = FluidType::current;
+    while (p && !p->is_decl_block()) p = p->parent;
+    ClassType *o = new ClassType();
+    o->name("UserInterface");
+    o->class_prefix = 0;
+    o->subclass_of = 0;
+    o->public_ = true;
+    o->add(p);
+    o->factory = this;
+    return o;
+}
+
+void ClassType::write_properties() {
+    FluidType::write_properties();
+    if (subclass_of) {
+	write_string(":");
+	write_word(subclass_of);
+    }
+    if (!public_) write_string("private");
+}
+
+void ClassType::read_property(const char *c) {
+    if (!strcmp(c,"private")) {
+	public_ = false;
+    } else if (!strcmp(c,":")) {
+	storestring(read_word(), subclass_of);
+    } else {
+	FluidType::read_property(c);
+    }
+}
+
+void ClassType::open() {
+    if (!class_panel) {
+	make_class_panel();
+	c_panel_ok->callback(ok_callback);
+	c_panel_cancel->callback(cancel_callback);
+    }
+    char fullname[1024]="";
+    if (prefix() && strlen(prefix())) 
+	sprintf(fullname,"%s %s",prefix(),name());
+    else 
+	strcpy(fullname, name());
+    c_name_input->static_value(fullname);
+    
+    c_subclass_input->static_value(subclass_of);
+    c_public_button->value(public_);
+    const char* message = 0;
+    char *na=0,*pr=0,*p=0; // name and prefix substrings
+    
+    for (;;) { // repeat as long as there are errors
+	if (message) fltk::alert(message);
+	if (!class_panel->exec()) break;
+	const char*c = c_name_input->value();
+	char *s = strdup(c);
+	size_t len = strlen(s);
+	if (!*s) goto OOPS;
+	p = (char*) (s+len-1);
+	while (p>=s && isspace(*p)) *(p--)='\0';
+	if (p<s) goto OOPS;
+	while (p>=s && is_id(*p)) p--;
+	if ( (p<s && !is_id(*(p+1))) || !*(p+1) ) {
+OOPS: message = "class name must be C++ identifier";
+      free((void*)s);
+      continue;
+	}
+	na=p+1; // now we have the name
+	if(p>s) *p--='\0';
+	while (p>=s && isspace(*p)) *(p--)='\0';
+	while (p>=s && is_id(*p))   p--;
+	if (p<s)                    p++;
+	if (is_id(*p) && p<na)      pr=p; // prefix detected
+	c = c_subclass_input->value();
+	message = c_check(c); 
+	if (message) { free((void*)s);continue;}
+	name(na);
+	prefix(pr);
+	free((void*)s);
+	storestring(c, subclass_of);
+	if (public_ != c_public_button->value()) {
+	    public_ = c_public_button->value();
+	}
+	break;
+    }
+    class_panel->hide();
+    delete class_panel;
+    class_panel = NULL;
+}
+
+static ClassType *current_class;
+extern int varused_test;
+
+void write_public(int state) {
+    if (!current_class || varused_test) return;
+    if (current_class->write_public_state == state) return;
+    current_class->write_public_state = state;
+    write_h(state ? "public:\n" : "private:\n");
+}
+
+void ClassType::write_code() {
+    parent_class = current_class;
+    current_class = this;
+    write_public_state = 0;
+    if (prefix() && strlen(prefix())) {
+	if (strcmp(prefix(),"FL_EXPORT")==0) // convert it to FL_API
+	    prefix("FL_API");
+	write_h("\nclass %s %s ", prefix(), name());
+    }
+    else
+	write_h("\nclass %s ", name());
+    if (subclass_of) write_h(": %s ", subclass_of);
+    write_h("%s", get_opening_brace(1));
+    for (FluidType* q = first_child; q; q = q->next_brother) q->write_code();
+    write_h("};\n");
+    current_class = parent_class;
+}
+
+////////////////////////////////////////////////////////////////
+// Return the class that this is a member of, or null if this is not
+// a member of a class. If need_nest is true then a fully-qualified
+// name (ie foo::bar::baz) of nested classes is returned, you need this
+// if you actually want to print the class.
+FluidType *NamespaceType::make() {
+    FluidType *p = FluidType::current;
+    while (p && (!p->is_decl_block() || p->is_class())) p = p->parent;
+    NamespaceType *o = new NamespaceType();
+    o->parent_namespace = 0;
+    o->name("fltk");
+    o->add(p);
+    o->factory = this;
+    return o;
+}
+
+void NamespaceType::write_properties() {
+    FluidType::write_properties();
+    //TODO
+}
+
+// read declaration property when loading the file
+void NamespaceType::read_property(const char *c) {
+    FluidType::read_property(c);
+}
+
+void NamespaceType::open() {
+    if (!namespace_panel) {
+	make_namespace_panel();
+	namespace_panel_ok->callback(ok_callback);
+	namespace_panel_cancel->callback(cancel_callback);
+    }
+    namespace_input->static_value(name());
+    
+    // scan the input field for namespace string and check it
+    const char* message = 0;
+    for (;;) { // repeat as long as there are errors
+	if (message) fltk::alert(message);
+	if (!namespace_panel->exec()) break;
+	const char*c = namespace_input->value();
+	while (isspace(*c)) c++;
+	message = c_check(c);
+	if (message) continue;
+	name(c && *c ? c : "fltk");
+	break;
+    }
+    
+    namespace_panel->hide();
+    delete namespace_panel;
+    namespace_panel = NULL;
+}
+
+
+static NamespaceType *current_namespace;
+extern int varused_test;
+
+// get the full path from root to most imbricated namespace
+const char * NamespaceType::get_full_string() const {
+    static char sFull[256];
+    const int cMaxImbNs=16;
+    const char *list[cMaxImbNs];
+    int nlist=0,i;
+    
+    if (name()) {
+	const NamespaceType * parent=this;
+	do {
+	    if (nlist<cMaxImbNs) list[nlist++]=parent->name();
+	    parent=parent->parent_namespace;
+	} while (parent);
+	
+	strlcpy(sFull, list[nlist-1], sizeof(sFull));
+	for (i=nlist-2; i>=0;i--) {
+	    if (i<nlist-1) strlcat(sFull, "::", sizeof(sFull));
+	    strlcat(sFull, list[i], sizeof(sFull));
+	}
+    }
+    return sFull;
+}
+
+void NamespaceType::write_static() {
+    write_c("using namespace %s;\n",get_full_string());
+}
+void NamespaceType::write_code() {
+    parent_namespace = current_namespace;
+    current_namespace = this;
+    
+    write_h("\nnamespace %s ", name());
+    write_h("%s", get_opening_brace(1));
+    for (FluidType* q = first_child; q; q = q->next_brother) q->write_code();
+    write_h("}\n");
+    current_namespace = parent_namespace;
+}
+
+//
+// End of "$Id: FunctionType.cxx 7513 2010-04-15 17:19:27Z spitzak $".
+//

Added: branches/branch-3.0-2011/fluid2/FunctionType.h
===================================================================
--- branches/branch-3.0-2011/fluid2/FunctionType.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/FunctionType.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,166 @@
+//
+// "$Id$"
+//
+// function type decl 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 FunctionType_h
+#define FunctionType_h
+
+#include "FluidType.h"
+
+class FunctionType : public FluidType {
+  const char* return_type;
+  const char* attributes;
+  bool public_, cdecl_, constructor, havewidgets;
+ public:
+  FluidType *make();
+  void write_code();
+  void open();
+  int ismain() {return name_ == 0;}
+  virtual const char *type_name() const {return "Function";}
+  virtual const char *title() {
+    return name() ? name() : "main()";
+  }
+  int is_parent() const {return 1;}
+  int is_code_block() const {return 1;}
+  void write_properties();
+  void read_property(const char *);
+  int pixmapID() { return 7; }
+};
+
+class CodeType : public FluidType {
+ public:
+  FluidType *make();
+  void write_code();
+  void write_static();
+  void open();
+  virtual const char *type_name() const {return "code";}
+  int is_code_block() const {return 0;}
+  int pixmapID() { return 8; }
+};
+
+class CodeBlockType : public FluidType {
+  const char* after;
+ public:
+  FluidType *make();
+  void write_code();
+  void open();
+  virtual const char *type_name() const {return "codeblock";}
+  int is_code_block() const {return 1;}
+  int is_parent() const {return 1;}
+  void write_properties();
+  void read_property(const char *);
+  int pixmapID() { return 9; }
+};
+
+class DeclType : public FluidType {
+  bool public_;
+ public:
+  FluidType *make();
+  void write_code();
+  void open();
+  virtual const char *type_name() const {return "decl";}
+  void write_properties();
+  void read_property(const char *);
+  int pixmapID() { return 10; }
+};
+
+class DeclBlockType : public FluidType {
+  const char* after;
+ public:
+  FluidType *make();
+  void write_code();
+  void open();
+  virtual const char *type_name() const {return "declblock";}
+  void write_properties();
+  void read_property(const char *);
+  int is_parent() const {return 1;}
+  int is_decl_block() const {return 1;}
+  int pixmapID() { return 11; }
+};
+
+class CommentType : public FluidType {
+  char title_buf[64];
+ public:
+  bool in_c_, in_h_;
+  FluidType *make();
+  void write_code1();
+  void write_code2();
+  void open();
+  virtual const char *type_name() const {return "comment";}
+  virtual const char *title(); // string for browser
+  void write_properties();
+  void read_property(const char *);
+  virtual int is_public() const { return 1; }
+  virtual int is_comment() const { return 1; }
+  int pixmapID() { return 46; }
+};
+
+class ClassType : public FluidType {
+  const char* subclass_of;
+  const char* class_prefix;
+  bool public_;
+ public:
+  // state variables for output:
+  char write_public_state; // true when public: has been printed
+  ClassType* parent_class; // save class if nested
+  //
+  FluidType *make();
+  void write_code();
+  void open();
+  virtual const char *type_name() const {return "class";}
+  int is_parent() const {return 1;}
+  int is_decl_block() const {return 1;}
+  int is_class() const {return 1;}
+  void write_properties();
+  void read_property(const char *);
+
+  // fc: added for FL_API prefixing and others prefix capability
+  // class prefix attribute access
+  void prefix(const char* p);
+  const char*  prefix() const {return class_prefix;}
+  int pixmapID() { return 12; }
+};
+
+class NamespaceType : public FluidType {
+ protected:
+  const char * get_full_string() const ;
+ public:
+  // state variables for output:
+  NamespaceType* parent_namespace; // save namespace if nested
+  //
+  FluidType *make();
+  void write_code();
+  void write_static(); // for c file "using namespace .." gen.
+  void open();
+  virtual const char *type_name() const {return "namespace";}
+  int is_parent() const {return 1;}
+  int is_decl_block() const {return 1;} // namespace can contain namespace(s) | class(es)
+  int is_class() const {return 0;}
+  void write_properties();
+  void read_property(const char *);
+
+  int pixmapID() { return 49; }
+};
+
+#endif

Added: branches/branch-3.0-2011/fluid2/GroupType.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/GroupType.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/GroupType.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,336 @@
+//
+// "$Id: GroupType.cxx 5493 2006-09-28 03:31:05Z spitzak $"
+//
+// Object describing an fltk::Group and links to WindowType.C and
+// the fltk::TabGroup widget, with special stuff to select tab items and
+// insure that only one is visible.
+//
+// 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".
+//
+
+#include "Enumeration.h"
+#include "Widget_Types.h"
+#include <fltk/events.h>
+#include <fltk/run.h>
+#include <fltk/Group.h>
+#include <fltk/TabGroup.h>
+#include <fltk/ask.h>
+#include "undo.h"
+
+using namespace fltk;
+
+WidgetType* GroupType::_make() {return new GroupType();}
+
+GroupType::~GroupType() {
+  for (FluidType* q = first_child; q; q = q->next_brother) {
+	  remove_child(q);
+	  if(q->is_widget() && (((WidgetType *)q)->o->parent() == o)) {
+		  ((WidgetType *)q)->o->parent(0);
+		  // fltk::Group destructor will delete all its children!!
+		  ((WidgetType *)q)->o = 0;
+	  }
+  }
+}
+
+fltk::Widget *GroupType::widget(int x,int y,int w,int h) {
+  Group *g = new Group(x,y,w,h);
+  g->resizable(0);
+  fltk::Group::current(0);
+  return g;
+}
+
+const char* GroupType::type_name() const {return "fltk::Group";}
+
+int GroupType::is_parent() const {return 1;}
+int GroupType::is_group() const {return 1;}
+
+
+FluidType *GroupType::make() {
+  return WidgetType::make();
+}
+
+// Enlarge the group to surround all its children.  This is done to
+// all groups whenever the user moves any widgets.
+void fix_group_size(FluidType *t) {
+  if (!t || !t->is_group()) return;
+  fltk::Group* g = (fltk::Group*)((GroupType*)t)->o;
+  int X = g->x(), X0=X;
+  int Y = g->y(), Y0=Y;
+  int R = g->r();
+  int B = g->b();
+
+  for (FluidType *nn = t->first_child; nn; nn = nn->next_brother) {
+    if (nn->is_widget()) {
+      fltk::Widget* o = ((WidgetType*)nn)->o;
+      int x = o->x();  if (x+X0 < X) 
+	  X = x+X0;
+      int y = o->y();  if (y+Y0 < Y) Y = y+Y0;
+      int r = o->r(); if (r+X0 > R) 
+	  R = r+X0;
+      int b = o->b(); if (b+Y0 > B) B = b+Y0;
+    }
+  }
+
+  int dx = X - X0, dy = Y-Y0;
+  g->resize(X,Y,R-X,B-Y);
+  if (dx || dy) {
+    for (FluidType *nn = t->first_child; nn; nn = nn->next_brother) {
+      if (nn->is_widget()) {
+	fltk::Widget* o = ((WidgetType*)nn)->o;
+	o->x(o->x()-dx);
+	o->y(o->y()-dy);
+      }
+    }
+  }
+
+  g->init_sizes();
+  fix_group_size(t->parent );
+}
+
+extern int force_parent;
+extern GroupType Grouptype;
+
+static void reparent_box(Rectangle &r, FluidType * p) {
+    int X=1000000, Y=1000000,R=-1,B=-1;
+    FluidType*t;
+    for (t=p; t; t=t->next_brother) {
+	if (t->is_widget()) {
+	    if (((WidgetType*)t)->o->x()<X) X = ((WidgetType*)t)->o->x();
+	    if (((WidgetType*)t)->o->y()<Y) Y = ((WidgetType*)t)->o->y();
+	    if (((WidgetType*)t)->o->r()>R) 
+		R = ((WidgetType*)t)->o->w()+((WidgetType*)t)->o->x();
+	    if (((WidgetType*)t)->o->b()>B) 
+		B = ((WidgetType*)t)->o->h()+((WidgetType*)t)->o->y();
+	}
+    }
+    r.set(X, Y, R-X, B-Y);
+    for (t=p; t; t=t->next_brother) {
+      if (t->is_widget()) {
+	Widget* o = ((WidgetType*)t)->o; 
+	o->x(o->x()-X);
+	o->y(o->y()-Y);
+      }
+    }
+}
+
+void group_cb(Widget *, void *) {
+    // Find the current widget:
+    FluidType *qq = FluidType::current;
+    while (qq && (!qq->is_widget() || qq->is_menu_item())) qq = qq->parent;
+    if (!qq || !qq->parent || !qq->parent->is_widget()) {
+	fltk::message("Please select widgets to group");
+	return;
+    }
+    Undo::checkpoint();
+    Undo::suspend();
+    WidgetType* q = (WidgetType*)qq;
+    force_parent = 1;
+    GroupType *n = (GroupType*)(Grouptype.make());
+    n->move_before(q);
+    for (FluidType *t = q->parent->first_child; t;) {
+	FluidType* next = t->next_brother;
+	if (t->selected() && t != n) {
+	    t->remove();
+	    t->add(n);
+	}
+	t = next;
+    }
+    Rectangle r;
+    reparent_box(r, q->parent->first_child);
+    n->o->resize(r.x(),r.y(),r.w(),r.h());
+
+    //fix_group_size(n);
+    Undo::resume();
+}
+
+void ungroup_cb(fltk::Widget *, void *) {
+    // Find the group:
+    FluidType *q = FluidType::current;
+    while (q && (!q->is_widget() || q->is_menu_item())) q = q->parent;
+    if (q) q = q->parent;
+    if (!q || !q->parent->is_widget()) {
+	fltk::message("Please select widgets in a group");
+	return;
+    }
+    Undo::checkpoint();
+    Undo::suspend();
+    Widget* g = (Group*) ((WidgetType*)q)->o; 
+    for (FluidType* n = q->first_child; n;) {
+	FluidType* next = n->next_brother;
+	if (n->selected()) {
+	    n->remove();
+	    n->insert(q);
+	    if (n->is_widget()) {
+	      ((WidgetType*)n)->o->move(g->x(),g->y());
+	    }
+	}
+	n = next;
+    }
+    if (!q->first_child) delete q;
+    Undo::resume();
+}
+
+const Enumeration *GroupType::subtypes() const {return 0;}
+
+////////////////////////////////////////////////////////////////
+
+#include <stdio.h>
+
+void GroupType::write_code() {
+  write_code1();
+  if (first_child) {
+    write_c("%so->begin();\n", indent());
+    for (FluidType* q = first_child; q; q = q->next_brother) q->write_code();
+    write_c("%so->end();\n", indent());
+  }
+  write_extra_code();
+  if (resizable()) write_c("%sfltk::Group::current()->resizable(o);\n", indent());
+  write_block_close();
+}
+
+////////////////////////////////////////////////////////////////
+
+#include <fltk/PackedGroup.h>
+
+#if 0
+// I took this out because I don't think it is needed for back-compatability
+const fltk::Enumeration pack_type_menu[] = {
+  {"normal",		0,		(void*)fltk::PackedGroup::NORMAL},
+  {"all-vertical",	"HORIZONTAL",	(void*)fltk::PackedGroup::ALL_CHILDREN_VERTICAL},
+  {0}};
+#endif
+
+
+////////////////////////////////////////////////////////////////
+
+
+// This is called when user clicks on a widget in the window.  See
+// if it is a tab title, and adjust visibility and return new selection:
+// If none, return o unchanged:
+
+FluidType* TabsType::click_test(int x, int y) {
+  fltk::TabGroup *t = (fltk::TabGroup*)o;
+  int i = t->which(x-t->x(),y-t->y());
+  if (i < 0) return 0; // didn't click on tab
+  // okay, run the tabs ui until they let go of mouse:
+  t->handle(fltk::PUSH);
+  fltk::pushed(t);
+  while (fltk::pushed()==t) fltk::wait();
+  return (FluidType*)(t->selected_child()->user_data());
+}
+
+// This is called when o is created.  If it is in the tab group make
+// sure it is visible:
+
+void GroupType::add_child(FluidType* cc, FluidType* before) {
+  WidgetType* c = (WidgetType*)cc;
+  fltk::Widget* b = before ? ((WidgetType*)before)->o : 0;
+  ((fltk::Group*)o)->insert(*(c->o), b);
+  o->redraw();
+}
+
+void TabsType::add_child(FluidType* c, FluidType* before) {
+  GroupType::add_child(c, before);
+}
+
+// This is called when o is deleted.  If it is in the tab group make
+// sure it is not visible:
+
+void GroupType::remove_child(FluidType* cc) {
+  WidgetType* c = (WidgetType*)cc;
+  ((fltk::Group*)o)->remove(c->o);
+  o->redraw();
+}
+
+void TabsType::remove_child(FluidType* cc) {
+  WidgetType* c = (WidgetType*)cc;
+  fltk::TabGroup *t = (fltk::TabGroup*)o;
+  if (t->selected_child() == c->o) t->value(0);
+  GroupType::remove_child(c);
+}
+
+// move, don't change selected value:
+
+void GroupType::move_child(FluidType* cc, FluidType* before) {
+  WidgetType* c = (WidgetType*)cc;
+  fltk::Widget* b = before ? ((WidgetType*)before)->o : 0;
+  ((fltk::Group*)o)->remove(c->o);
+  ((fltk::Group*)o)->insert(*(c->o), b);
+  o->redraw();
+}
+
+////////////////////////////////////////////////////////////////
+// some other group subclasses that fluid does not treat specially:
+
+#include <fltk/ScrollGroup.h>
+
+const Enumeration scroll_type_menu[] = {
+  {"Both",		"BOTH",		(void*)fltk::ScrollGroup::BOTH},
+  {"Horizontal",	"HORIZONTAL",	(void*)fltk::ScrollGroup::HORIZONTAL},
+  {"Vertical",		"VERTICAL",	(void*)fltk::ScrollGroup::VERTICAL},
+  {"Horizontal Always",	"HORIZONTAL_ALWAYS", (void*)fltk::ScrollGroup::HORIZONTAL_ALWAYS},
+  {"Vertical Always",	"VERTICAL_ALWAYS", (void*)fltk::ScrollGroup::VERTICAL_ALWAYS},
+  {"Both Always",	"BOTH_ALWAYS",	(void*)fltk::ScrollGroup::BOTH_ALWAYS},
+  {0}};
+
+
+////////////////////////////////////////////////////////////////
+// live mode support
+
+Widget *GroupType::enter_live_mode(int top) {
+  Group *grp = new Group(o->x(), o->y(), o->w(), o->h());
+  live_widget = grp;
+  grp->begin();
+  if (live_widget) {
+    copy_properties();
+    for (FluidType* n = first_child; n; n = n->next_brother) {
+        n->enter_live_mode();
+    }
+    grp->end();
+  }
+  return live_widget;
+}
+
+Widget *TabsType::enter_live_mode(int top) {
+  TabGroup *grp = new TabGroup(o->x(), o->y(), o->w(), o->h());
+  live_widget = grp;
+  if (live_widget) {
+    copy_properties();
+    for (FluidType* n = first_child; n; n = n->next_brother) {
+        n->enter_live_mode();
+    }
+    grp->end();
+  }
+  grp->value(((TabGroup*)o)->value());
+  return live_widget;
+}
+
+void GroupType::leave_live_mode() {
+}
+
+/**
+ * copy all properties from the edit widget to the live widget
+ */
+void GroupType::copy_properties() {
+  WidgetType::copy_properties();
+}
+//
+// End of "$Id: GroupType.cxx 5493 2006-09-28 03:31:05Z spitzak $".
+//

Added: branches/branch-3.0-2011/fluid2/GroupType.h
===================================================================
--- branches/branch-3.0-2011/fluid2/GroupType.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/GroupType.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,30 @@
+// Represents an fltk::Group widget
+
+#ifndef GroupType_h
+#define GroupType_h
+
+#include "WidgetType.h"
+
+class FLUID_API GroupType : public WidgetType {
+public:
+  const Enumeration* subtypes() const;
+  virtual ~GroupType();
+  virtual const char *type_name() const;
+  fltk::Widget *widget(int x,int y,int w,int h);
+  WidgetType* _make();
+  FluidType *make();
+  void write_code();
+  void add_child(FluidType*, FluidType*);
+  void move_child(FluidType*, FluidType*);
+  void remove_child(FluidType*);
+  int is_parent() const;
+  int is_group() const;
+
+  // live mode functionalities
+  fltk::Widget *enter_live_mode(int top);
+  void leave_live_mode();
+  void copy_properties();
+  int pixmapID() { return 6; }
+};
+
+#endif

Added: branches/branch-3.0-2011/fluid2/Makefile
===================================================================
--- branches/branch-3.0-2011/fluid2/Makefile	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/Makefile	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,160 @@
+#
+# "$Id: Makefile 6920 2009-10-22 10:58:07Z AlbrechtS $"
+#
+# FLUID makefile for the Fast Light Tool Kit (FLTK).
+#
+# Copyright 1998-2003 by Bill Spitzak and others.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA.
+#
+# Please report all bugs and problems to "fltk-bugs@fltk.org".
+#
+
+#
+# Include common definitions...
+#
+
+include ../makeinclude
+
+
+#
+# Files for this directory...
+#
+
+CPPFILES = \
+	about_panel.cxx \
+	align_widget.cxx \
+	alignment_panel.cxx \
+	code.cxx \
+	CodeEditor.cxx \
+	coding_style.cxx \
+	coding_style_func.cxx \
+	Enumeration.cxx \
+	factory.cxx \
+	file.cxx \
+	fluid.cxx \
+	Fluid_Image.cxx \
+	fluid_img.cxx \
+	fluid_menus.cxx \
+	Fluid_Plugins.cxx \
+	FluidType.cxx \
+	function_panel.cxx \
+	FunctionType.cxx \
+	GroupType.cxx \
+	MenuType.cxx \
+	template_panel.cxx \
+	undo.cxx \
+	widget_panel.cxx \
+	WidgetClassType.cxx \
+	WidgetType.cxx \
+	WindowType.cxx
+
+CFILES	=
+
+OBJECTS = $(CPPFILES:.cxx=.o) $(CFILES:.cxx=.o)
+TARGETS	= fluid2$(EXEEXT) $(FLUID)
+
+#CXXFLAGS+=-g
+#
+# Make everything...
+#
+
+all:		$(TARGETS)
+
+
+#
+# Clean old files...
+#
+
+clean:
+	$(RM) *.bck
+	$(RM) *.o
+	$(RM) core*
+	$(RM) $(TARGETS)
+
+
+#
+# Make dependencies, excluding standard include directories...
+#
+
+depend:
+	$(MAKEDEPEND) -I.. $(CPPFILES) $(CFILES) > makedepend
+
+
+#
+# Include automatically generated dependencies...
+#
+
+makedepend:
+	touch makedepend
+include makedepend
+
+
+#
+# Build FLUID...
+#
+
+fluid2$(EXEEXT): $(OBJECTS) ../lib/$(LIBPREFIX)fltk2$(LIBSUFFIX) \
+		../lib/$(LIBPREFIX)fltk2_images$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) $(CXXFLAGS) -o $@ $(OBJECTS) $(LINKFLTKIMG) $(LIBS) $(LDLIBS) $(LOCAL_IMAGELIBS)
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+
+#
+# Build shared FLUID...
+#
+
+fluid2-shared$(EXEEXT): $(OBJECTS) ../src/$(DSOPREFIX)fltk2$(DSOSUFFIX) \
+		../images/$(DSOPREFIX)fltk2_images$(DSOSUFFIX)
+	echo Linking $@...
+	$(CXX) $(CXXFLAGS) -o $@ $(OBJECTS) $(LINKSHARED) $(IMAGELIBS) $(LOCAL_IMAGELIBS) $(LIBS) $(LDLIBS)
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+
+#
+# Install everything...
+#
+
+install:
+	echo "Installing FLUID2 in $(bindir)..."
+	-$(MKDIR) $(DESTDIR)$(bindir)
+	$(CP) $(FLUID) $(DESTDIR)$(bindir)/fluid2$(EXEEXT)
+	$(STRIP) $(DESTDIR)$(bindir)/fluid2$(EXEEXT)
+	$(DESTDIR)$(bindir)/fltk2-config --post $(DESTDIR)$(bindir)/fluid2$(EXEEXT)
+	$(CHMOD) 755 $(DESTDIR)$(bindir)/fluid2$(EXEEXT)
+
+
+uninstall:
+	$(RM) $(bindir)/fluid2
+
+
+#
+# Note: The rebuild target can only be used if you have the original .fl
+#       files.  This is normally only used by the FLTK maintainers...
+#
+
+rebuild:
+	./fluid2$(EXEEXT) -c about_panel.fl
+	./fluid2$(EXEEXT) -c alignment_panel.fl
+	./fluid2$(EXEEXT) -c function_panel.fl
+	./fluid2$(EXEEXT) -c widget_panel.fl
+	./fluid2$(EXEEXT) -c coding_style.fl
+
+
+#
+# End of "$Id: Makefile 6920 2009-10-22 10:58:07Z AlbrechtS $".
+#

Added: branches/branch-3.0-2011/fluid2/MenuType.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/MenuType.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/MenuType.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,187 @@
+//
+// "$Id: MenuType.cxx 7513 2010-04-15 17:19:27Z spitzak $"
+//
+// Menu item code for the Fast Light Tool Kit (FLTK).
+//
+// Vastly simplified from the 1.0 version, since 2.0 uses real child
+// widgets to represent menu items.
+//
+// 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".
+//
+
+#include "Enumeration.h"
+#include "Widget_Types.h"
+#include <fltk/events.h>
+#include <fltk/ask.h>
+#include <fltk/Menu.h>
+#include <fltk/Item.h>
+#include <fltk/ItemGroup.h>
+#include <fltk/Divider.h>
+#include <fltk/Button.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+const Enumeration item_type_menu[] = {
+  {"Normal", "NORMAL", (void*)0},
+  {"Toggle", "TOGGLE", (void*)fltk::Item::TOGGLE},
+  {"Radio",  "RADIO",  (void*)fltk::Item::RADIO},
+  {0}};
+
+extern int reading_file;
+
+using namespace fltk;
+
+Widget *ItemType::widget(int,int,int,int) {
+  return new fltk::Item(reading_file ? 0 : "item");
+}
+
+Widget *SubmenuType::widget(int,int,int,int) {
+  fltk::ItemGroup *g = new fltk::ItemGroup(reading_file ? 0 : "submenu");
+  fltk::Group::current(0);
+  return g;
+}
+
+////////////////////////////////////////////////////////////////
+
+// This is the base class for widgets that contain a menu (ie
+// subclasses of fltk::Menu).
+
+FluidType* MenuType::click_test(int, int) {
+  if (selected()) return 0; // let user move the widget
+  fltk::Menu* w = (fltk::Menu*)o;
+  if (!w->size()) return 0;
+  Widget* save = w->item();
+  w->item(0);
+  // disable menu items callbacks so we can do selection
+  w->when(WHEN_NEVER);
+  fltk::pushed(w);
+  w->handle(fltk::PUSH);
+  // enable them again
+  w->when(WHEN_RELEASE);
+  const Widget* m = w->item();
+  if (m) return (FluidType*)(m->user_data());
+  w->item(save);
+  return this;
+}
+
+////////////////////////////////////////////////////////////////
+
+#include <fltk/PopupMenu.h>
+const Enumeration button_type_menu[] = {
+  {"normal", 0,		(void*)0},
+  {"popup1", "POPUP1",	(void*)fltk::PopupMenu::POPUP1},
+  {"popup2", "POPUP2",	(void*)fltk::PopupMenu::POPUP2},
+  {"popup3", "POPUP3",	(void*)fltk::PopupMenu::POPUP3},
+  {"popup12","POPUP12", (void*)fltk::PopupMenu::POPUP12},
+  {"popup23","POPUP23", (void*)fltk::PopupMenu::POPUP23},
+  {"popup13","POPUP13", (void*)fltk::PopupMenu::POPUP13},
+  {"popup123","POPUP123",(void*)fltk::PopupMenu::POPUP123},
+  {0}};
+
+////////////////////////////////////////////////////////////////
+
+const Enumeration input_browser_type_menu[] = {
+  {"Normal",		0,	(void*)fltk::InputBrowser::NORMAL},
+  {"Non-Editable","NONEDITABLE",(void*)fltk::InputBrowser::NONEDITABLE},
+  {"Indented",	"INDENTED",	(void*)fltk::InputBrowser::INDENTED},
+  {"Non-Editable Indented","NONEDITABLE_INDENTED",(void*)fltk::InputBrowser::NONEDITABLE_INDENTED},
+  {0}};
+
+#include <fltk/Browser.h>
+const Enumeration browser_type_menu[] = {
+  {"Single",	0,	(void*)fltk::Browser::NORMAL},
+  {"Multi",	"MULTI",	(void*)fltk::Browser::MULTI, "fltk::MultiBrowser"},
+  {0}};
+
+#include <fltk/FileBrowser.h>
+
+////////////////////////////////////////////////////////////////
+// Shortcut entry item in panel:
+
+#include <fltk/Output.h>
+#include "Shortcut_Button.h"
+#include <fltk/draw.h>
+
+void Shortcut_Button::draw() {
+  label(fltk::key_name(svalue));
+#ifdef _WIN32
+  Button::draw();
+#else
+  fltk::Button::draw();
+#endif
+}
+
+int Shortcut_Button::handle(int e) {
+  when(0); type(TOGGLE);
+  if (e == fltk::KEY) {
+    if (!value()) return 0;
+    unsigned v = fltk::event_text()[0];
+    if ((v > 32 && v < 0x7f) || (v > 0xa0 && v <= 0xff)) {
+      v = v | (fltk::event_state()&(fltk::META|fltk::ALT|fltk::CTRL));
+    } else {
+      v = (fltk::event_state()&(fltk::META|fltk::ALT|fltk::CTRL|fltk::SHIFT)) | fltk::event_key();
+      if (v == fltk::BackSpaceKey && svalue) v = 0;
+    }
+    if (v != svalue) {svalue = v; do_callback(); redraw();}
+    return 1;
+  } else if (e == fltk::UNFOCUS) {
+    int c = changed(); value(0); if (c) set_changed();
+    return 1;
+  } else if (e == fltk::FOCUS) {
+    return value();
+  } else {
+#ifdef _WIN32
+    int r = Button::handle(e);
+#else
+    int r = fltk::Button::handle(e);
+#endif
+    if (e == fltk::RELEASE && value() && fltk::focus() != this) take_focus();
+    return r;
+  }
+}
+  
+#define NOT_DEFAULT(W, what) (W->o->what() != ((WidgetType*)(W->factory))->o->what())
+
+void shortcut_in_cb(Shortcut_Button* i, void* v) {
+  if (v == LOAD) {
+    if (!current_widget->is_button() &&
+	!((WidgetType*)(current_widget->factory))->o->shortcut()) {i->hide(); return;}
+    i->show();
+    i->svalue = ((current_widget->o))->shortcut();
+    i->redraw();
+  } else {
+    for (FluidType *o = FluidType::first; o; o = o->walk())
+      if (o->selected() && o->is_widget()) {
+	Widget* b = ((WidgetType*)o)->o;
+	if (b->shortcut() != i->svalue) modflag = 1;
+	b->shortcut(i->svalue);
+	if (o->is_menu_item()) ((WidgetType*)o)->redraw();
+      }
+  }
+  fltk::Color tc = fltk::BLACK;
+  if (NOT_DEFAULT(current_widget, shortcut)) tc = fltk::RED;
+  if (i->labelcolor() != tc)
+    { i->labelcolor(tc); i->redraw_label(); }
+}
+
+//
+// End of "$Id: MenuType.cxx 7513 2010-04-15 17:19:27Z spitzak $".
+//

Added: branches/branch-3.0-2011/fluid2/PrefsData.h
===================================================================
--- branches/branch-3.0-2011/fluid2/PrefsData.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/PrefsData.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,140 @@
+// "$Id:"
+//
+// Preferences database for the Fast Light toolkit Interface Designer (fluid)
+//
+// 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_PrefsData_h
+#define _fltk_PrefsData_h
+#include <fltk/Preferences.h>
+#include <fltk/Color.h>
+#include <fltk/string.h>
+
+// Properties are not implemented in C++ so here's so macros defining them
+// Note: a fluid property is persistent, 
+#define FluidProperty(type, p, name) \
+public:	    type p() const {return p##_;} \
+	    type * p##Ptr() {return &p##_;} \
+            void p(const type v) {p##_=v; if(autosave_) set(name, p##_);} \
+private:    type p##_
+
+#define FluidPropVect(type, size, p, name) \
+public:	    const type* p() const {return p##_;} \
+            void p(const type* v) {memcpy(p##_,v,size);if(autosave_) set(name, p##_);} \
+private:    type p##_[size];
+
+#define FluidPropertyGroup(group, type, p, name) \
+public:	    type p() const {return p##_;} \
+	    type * p##Ptr() {return &p##_;} \
+            void p(const type v) {p##_=v; if(autosave_) {fltk::Preferences g(this, group); g.set(name, p##_);}} \
+private:    type p##_
+
+#define FluidPropVectGroup(type, size, p, name) \
+public:	    const type* p() const {return p##_;} \
+    void p(const type* v) {memcpy(p##_,v,size); if(autosave_) {fltk::Preferences g(this, group); g.set(name, p##_);}} \
+private:    type p##_[size];
+
+/** \class PrefsData
+  Fluid unified preferences data structure
+  This class permit to unify all often used persistent 
+  fluid data. It features the notion of 'property' which is 
+  not only an attribute, but has members and the 'set' part is persistent
+  so that 
+  it makes not necessary to reload all the time the same data from the prefs
+  as every 'set' is written automatically to the prefs file
+  So not performance gain occurs now (it was quite acceptable before), 
+  it also greatly simplifies the design.
+  All important persistant fluid data should be declared here.
+*/
+class PrefsData : public fltk::Preferences {
+    // 1. define your persistent property here
+    FluidProperty(int, gridx,"gridx");
+    FluidProperty(int, gridy,"gridy");
+    FluidProperty(int, snap,"snap");
+    FluidProperty(int, show_tooltip,"show_tooltips");
+    FluidProperty(int, open_previous_file,"open_previous_file");
+    FluidProperty(int, prev_window_pos,"prev_window_pos");
+    FluidProperty(int, show_completion_dialogs,"show_completion_dialogs");
+    FluidProperty(int, recent_files,"recent_files");
+    FluidPropVect(char, 1024, shell_command,"shell_command");
+    FluidProperty(int, shell_writecode,"shell_writecode");
+    FluidProperty(int, shell_writemsgs,"shell_writemsgs");
+    FluidProperty(int, shell_savefl,"shell_savefl");
+    FluidProperty(int, show_statusbar,"show_statusbar");
+    FluidProperty(int, show_splash,"show_splash");
+    
+    FluidPropertyGroup("sourceview", int, sv_autorefresh,"autorefresh");
+    FluidPropertyGroup("sourceview", int, sv_autoposition,"autoposition");
+    FluidPropertyGroup("sourceview", int, sv_tab,"tab");
+
+    FluidPropertyGroup("tabs", int, tabcolor,"tabcolor");
+    FluidPropertyGroup("tabs", int, tabcolor1,"tabcolor1");
+    FluidPropertyGroup("tabs", int, tabcolor2,"tabcolor2");
+    FluidPropertyGroup("tabs", int, tabcolor3,"tabcolor3");
+
+    // 2. initialize your persistent property here
+    void get_all_properties() {
+      get("gridx",gridx_, 5);
+      get("gridy",gridy_, 5);
+      get("snap",snap_, 3);
+      get("show_tooltip",show_tooltip_, 1);
+      get("open_previous_file", open_previous_file_, 0);
+      get("prev_window_pos", prev_window_pos_, 1);
+      get("show_completion_dialogs", show_completion_dialogs_, 1);
+      get("recent_files", recent_files_, 5);
+      get("shell_command", shell_command_, "", sizeof(shell_command_));
+      get("shell_writecode", shell_writecode_, 1);
+      get("shell_writemsgs", shell_writemsgs_, 0);
+      get("shell_savefl", shell_savefl_, 1);
+      get("show_statusbar", show_statusbar_, 1);
+      get("show_splash",show_splash_,1);
+
+      fltk::Preferences s(this, "sourceview");
+      s.get("autorefresh",sv_autorefresh_,1);
+      s.get("autoposition",sv_autoposition_,1);
+      s.get("tab",sv_tab_,0);
+
+      fltk::Preferences g(this,"tabs");
+      g.get("tabcolor",tabcolor_, 1);
+      g.get("tabcolor1",tabcolor1_, 0x14aef700);
+      g.get("tabcolor2",tabcolor2_, 0xd4b38d00);
+      g.get("tabcolor3",tabcolor3_, 0x93d49c00);
+
+    }
+
+    bool    autosave_;
+
+private:
+    void init() {autosave_=true; get_all_properties();}
+
+public:
+    PrefsData( Root root, const char *vendor, const char *application ):
+	Preferences(root, vendor, application) {init();}
+    //!avoid saving in the prefs when writing (for per-file prefs purpose)
+    void autosave(bool a) {autosave_=a;}
+};
+
+extern PrefsData prefs; // FLUID preferences
+
+#endif
+
+//
+// End of "$Id"
+//

Added: branches/branch-3.0-2011/fluid2/Shortcut_Button.h
===================================================================
--- branches/branch-3.0-2011/fluid2/Shortcut_Button.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/Shortcut_Button.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,43 @@
+//
+// "$Id: Shortcut_Button.h 5448 2006-09-19 01:14:07Z spitzak $"
+//
+// Shortcut 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 Shortcut_Button_H
+#define Shortcut_Button_H
+
+#include <fltk/Button.h>
+
+class Shortcut_Button : public fltk::Button {
+public:
+  unsigned svalue;
+  int handle(int);
+  void draw();
+  Shortcut_Button(int x, int y, int w, int h, const char* l = 0) :
+    fltk::Button(x,y,w,h,l) {svalue = 0;}
+};
+
+//
+// End of "$Id: Shortcut_Button.h 5448 2006-09-19 01:14:07Z spitzak $".
+//
+#endif

Added: branches/branch-3.0-2011/fluid2/WidgetClassType.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/WidgetClassType.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/WidgetClassType.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,116 @@
+#include "WidgetClassType.h"
+#include "PrefsData.h"
+#include <fltk/Window.h>
+
+using namespace fltk;
+
+WidgetClassType Widget_Class_type;
+WidgetClassType *current_widget_class = 0;
+
+FluidType *WidgetClassType::make() {
+  FluidType *p = FluidType::current;
+  while (p && !p->is_decl_block()) p = p->parent;
+  WidgetClassType *myo = new WidgetClassType();
+  myo->name("UserInterface");
+
+  if (!this->o) {// template widget
+    this->o = new Window(100,100);
+    Group::current(0);
+  }
+  // Set the size ranges for this window; in order to avoid opening the
+  // X display we use an arbitrary maximum size...
+  ((Window *)(this->o))->size_range(prefs.gridx(), prefs.gridy(),
+      3072, 2048,prefs.gridx(), prefs.gridy());
+  myo->factory = this;
+  myo->drag = 0;
+  myo->numselected = 0;
+  myo->make_fltk_window();
+  myo->add(p);
+  myo->modal = 0;
+  myo->non_modal = 0;
+  myo->wc_relative = 0;
+
+  return myo;
+}
+
+void WidgetClassType::write_properties() {
+  WindowType::write_properties();
+  if (wc_relative) write_string("position_relative");
+}
+
+void WidgetClassType::read_property(const char *c) {
+  if (!strcmp(c,"position_relative")) {
+    wc_relative = 1;
+  } else {
+    WindowType::read_property(c);
+  }
+}
+
+void WidgetClassType::write_code() {
+#if 0
+  WidgetType::write_code1();
+#endif // 0
+
+  current_widget_class = this;
+  write_public_state = 1;
+
+  const char *c = subclass();
+  if (!c) c = "Group";
+
+  write_h("\nclass %s : public %s {\n", name(), c);
+  if (!strcmp(c, "Window") ||
+      !strcmp(c, "Fl_Double_Window") ||
+      !strcmp(c, "Fl_Gl_Window") ||
+      !strcmp(c, "Fl_Overlay_Window")) {
+    write_h("  void _%s();\n", name());
+    write_h("public:\n");
+    write_h("  %s(int X, int Y, int W, int H, const char *L = 0);\n", name());
+    write_h("  %s(int W, int H, const char *L = 0);\n", name());
+
+    write_c("%s::%s(int X, int Y, int W, int H, const char *L)\n", name(), name());
+    write_c("  : %s(X, Y, W, H, L) {\n", c);
+    write_c("  _%s();\n", name());
+    write_c("}\n\n");
+
+    write_c("%s::%s(int W, int H, const char *L)\n", name(), name());
+    write_c("  : %s(0, 0, W, H, L) {\n", c);
+    write_c("  clear_flag(16);\n");
+    write_c("  _%s();\n", name());
+    write_c("}\n\n");
+
+    write_c("void %s::_%s() {\n", name(), name());
+    write_c("  %s *w = this;\n", name());
+  } else {
+    write_h("public:\n");
+    write_h("  %s(int X, int Y, int W, int H, const char *L = 0);\n", name());
+
+    write_c("%s::%s(int X, int Y, int W, int H, const char *L)\n", name(), name());
+    if (wc_relative)
+      write_c("  : %s(0, 0, W, H, L) {\n", c);
+    else
+      write_c("  : %s(X, Y, W, H, L) {\n", c);
+  }
+
+  write_c("  %s *o = this;\n", name());
+
+  write_widget_code();
+}
+
+void WidgetClassType::write_code1() {
+  write_extra_code();
+  if (wc_relative) write_c("%sposition(X, Y);\n", indent());
+  if (modal) write_c("%sset_modal();\n", indent());
+  else if (non_modal) write_c("%sset_non_modal();\n", indent());
+  if (!((Window*)o)->border()) write_c("%sclear_border();\n", indent());
+  if (user_class()) {
+    write_c("%sclass(", indent());
+    write_cstring(user_class());
+    write_c(");\n");
+  }
+  write_c("%send();\n", indent());
+  if (((Window*)o)->resizable() == o)
+    write_c("%sresizable(this);\n", indent());
+  write_c("}\n");
+}
+
+

Added: branches/branch-3.0-2011/fluid2/WidgetClassType.h
===================================================================
--- branches/branch-3.0-2011/fluid2/WidgetClassType.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/WidgetClassType.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,28 @@
+// Represents a user-defined subclass of fltk::Window or Group
+
+#ifndef WidgetClassType_h
+#define WidgetClassType_h
+
+#include "WindowType.h"
+
+class FLUID_API WidgetClassType : private WindowType {
+public:
+  WidgetClassType() {write_public_state = false;  wc_relative = false;}
+  // state variables for output:
+  bool write_public_state; // true when public: has been printed
+  bool wc_relative; // if true, reposition all child widgets in an Fl_Group
+
+  virtual void write_properties();
+  virtual void read_property(const char *);
+
+  void write_code();
+  void write_code1();
+  FluidType *make();
+  virtual const char *type_name() const  {return "fltk::WidgetClass";}
+  int is_parent() const {return 1;}
+  int is_decl_block() const {return 1;}
+  int is_class() const {return 1;}
+  int pixmapID() { return 48; }
+};
+
+#endif

Added: branches/branch-3.0-2011/fluid2/WidgetType.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/WidgetType.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/WidgetType.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,2377 @@
+//
+// "$Id: WidgetType.cxx 7513 2010-04-15 17:19:27Z spitzak $"
+//
+// Widget type code 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".
+//
+
+#include "Enumeration.h"
+#include "WidgetType.h"
+
+#include <fltk/Window.h>
+#include <fltk/run.h>
+#include <fltk/Group.h>
+#include <fltk/ask.h>
+#include <fltk/Slider.h>
+#include <fltk/DoubleBufferWindow.h>
+#include <fltk/InvisibleBox.h>
+#include <fltk/Font.h>
+#include <fltk/string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+
+#include "PrefsData.h"
+#include "coding_style.h"
+#include "undo.h"
+
+using namespace fltk;
+
+int WidgetType::is_widget() const {return 1;}
+
+const char *WidgetType::type_name() const {return "fltk::Widget";}
+
+Widget *WidgetType::widget(int x,int y,int w, int h) {
+  return new Widget(x,y,w,h,"label");
+}
+
+WidgetType *WidgetType::_make() {return new WidgetType();}
+
+const char* WidgetType::subclass() const {
+  // first return any text class name the user put in:
+  if (user_class_) return user_class_;
+  // then return any class based on the "type()", this is any
+  // entry in the type table where the code starts with "Fl":
+  const Enumeration* table = subtypes();
+  if (table) {
+    const Enumeration* e = from_value(o->type(), table);
+    if (e && e->subclass) return e->subclass;
+  }
+  return type_name();
+}
+
+// Make an WidgetType subclass instance.
+// It figures out the automatic size and parent of the new widget,
+// creates the fltk::Widget (by calling the virtual function _make),
+// adds it to the fltk::Widget hierarchy, creates a new FluidType
+// instance, sets the widget pointers, and makes all the display
+// update correctly...
+
+extern int reading_file;
+int force_parent;
+
+#include <fltk/StyleSet.h>
+extern fltk::StyleSet* fluid_style_set;
+extern fltk::StyleSet* style_set;
+
+FluidType *WidgetType::make() {
+  // Find the current widget, or widget to copy:
+  FluidType *qq = FluidType::current;
+  while (qq && !qq->is_widget()) qq = qq->parent;
+  if (!qq) {
+    fltk::message("Please select a widget");
+    return 0;
+  }
+  WidgetType* q = (WidgetType*)qq;
+  // find the parent widget:
+  WidgetType* p = q;
+  if ((force_parent || !p->o->is_group()) && p->parent->is_widget())
+    p = (WidgetType*)(p->parent);
+  force_parent = 0;
+
+  // Figure out a border between widget and window:
+  int B = p->o->w()/2; if (p->o->h()/2 < B) B = p->o->h()/2; if (B>25) B = 25;
+
+  // Figure out a position and size for the widget
+  int X,Y,W,H;
+  if (is_group()) {	// fill the parent with the widget
+    X = B;
+    W = p->o->w()-B;
+    Y = B;
+    H = p->o->h()-B;
+  } else if (q != p) {	// copy position and size of current widget
+    W = q->o->w();
+    H = q->o->h();
+    X = q->o->x()+W;
+    Y = q->o->y();
+    if (X+W > p->o->w()) {
+      X = q->o->x();
+      Y = q->o->y()+H;
+      if (Y+H > p->o->h()) Y = B;
+    }
+  } else {	// just make it small and square...
+    X = B;
+    Y = B;
+    W = H = B;
+  }
+
+  // satisfy the grid requirements (otherwise it edits really strangely):
+  if (prefs.gridx()>1) {
+    X = (X/prefs.gridx())*prefs.gridx();
+    W = ((W-1)/prefs.gridx()+1)*prefs.gridx();
+  }
+  if (prefs.gridy()>1) {
+    Y = (Y/prefs.gridy())*prefs.gridy();
+    H = ((H-1)/prefs.gridy()+1)*prefs.gridy();
+  }
+
+  // Construct the FluidType:
+  style_set->make_current();
+  WidgetType *t = _make();
+  if (!o) o = widget(0,0,100,100); // create template widget
+  t->factory = this;
+  // Construct the fltk::Widget:
+  t->o = widget(X,Y,W,H);
+  if (H>W) t->o->set_vertical();
+  fluid_style_set->make_current();
+  if (reading_file) t->o->label(0);
+  else if (t->o->label()) t->label(t->o->label()); // allow editing
+  t->o->user_data((void*)t);
+  // Put it in the parent:
+  //  ((fltk::Group *)(p->o))->add(t->o); (done by FluidType::add())
+  // add to browser:
+  t->add(p);
+  t->redraw();
+  return t;
+}
+
+#include "Fluid_Image.h"
+
+float WidgetType::default_size = 14.0;
+
+void WidgetType::set_image(Fluid_Image *i) {
+  if (i == image) return;
+  if (image) image->decrement();
+  if (i) i->increment();
+  image = i;
+  o->image(i ? i->symbol() : 0);
+  redraw();
+}
+
+void WidgetType::setlabel(const char *n) {
+  o->label(n);
+  redraw();
+}
+
+WidgetType::WidgetType() {
+  extra_code_ = 0;
+  user_class_ = 0;
+  hotspot_ = 0;
+  o = 0;
+  default_size = 0.0;
+  image = 0;
+  public_ = 1;
+  set_xy = true;
+}
+
+WidgetType::~WidgetType() {
+  if (o) {
+    o->hide();
+    if (o->parent()) ((fltk::Group*)o->parent())->remove(*o);
+    delete o;
+  }
+}
+
+void WidgetType::extra_code(const char *n) {
+  storestring(n,extra_code_);
+}
+
+extern void redraw_browser();
+void WidgetType::user_class(const char *n) {
+  if (storestring(n,user_class_)) redraw_browser();
+}
+
+void WidgetType::redraw() {
+  FluidType *t = this;
+  if (is_menu_item()) {
+    // find the menu button that parents this menu:
+    do t = t->parent; while (t && t->is_menu_item());
+  } else {
+    while (t->parent && t->parent->is_widget()) t = t->parent;
+  }
+  if (t) ((WidgetType*)t)->o->redraw();
+}
+
+// sorts all selected children by position:
+void sort(FluidType *parent) {
+  for (FluidType* f = parent->first_child; f;) {
+    sort(f);
+    FluidType* next = f->next_brother;
+    if (f->selected() && (f->is_widget() && !f->is_menu_item())) {
+      fltk::Widget* fw = ((WidgetType*)f)->o;
+      FluidType *g; // we will insert before this
+      for (g = parent->first_child; g != f; g = g->next_brother) {
+	if (!g->selected()) continue;
+	fltk::Widget* gw = ((WidgetType*)g)->o;
+	if (gw->y() >= fw->y()+fw->h()) break;
+	if (gw->y()+gw->h() > fw->y() && gw->x() >= fw->x()+fw->w()) break;
+	if (gw->y() >= fw->y() && gw->x() > fw->x()) break;
+      }
+      if (g != f) f->move_before(g);
+    }
+    f = next;
+  }
+}
+
+////////////////////////////////////////////////////////////////
+// The control panels!
+
+#include "widget_panel.h"
+#include <fltk/ColorChooser.h>
+
+// All the callbacks use the argument to indicate whether to load or store.
+// This avoids the need for pointers to all the widgets, and keeps the
+// code localized in the callbacks.
+// A value of LOAD means to load.  The hope is that this will not collide
+// with any actual useful values for the argument.  I also use this to
+// initialized parts of the widget that are nyi by fluid.
+
+WidgetType *current_widget; // one of the selected ones
+static int numselected; // number selected
+static int haderror;
+static fltk::Window *the_panel;
+
+void name_cb(fltk::Input* o, void *v) {
+  if (v == LOAD) {
+    if (numselected != 1) {
+      static char buf[16];
+      sprintf(buf,"(%d widgets)",numselected);
+      o->window()->label(buf);
+      o->hide();
+    } else {
+      o->static_value(current_widget->name());
+      o->show();
+      o->window()->label(current_widget->title());
+    }
+  } else {
+    if (numselected == 1) {
+      current_widget->name(o->value());
+      // I don't update window title, as it probably is being closed
+      // and wm2 (a window manager) barfs if you retitle and then
+      // hide a window:
+      // o->window()->label(current_widget->title());
+    }
+  }
+  fltk::Color c = fltk::BLACK;
+  if (current_widget->name() && *(current_widget->name())) c = fltk::RED;
+  if (o->labelcolor() != c)
+    { o->labelcolor(c); o->redraw_label(); }
+}
+
+#define for_all_selected_widgets() \
+for (FluidType *o = FluidType::first; o; o = o->walk()) \
+  if (o->selected() && o->is_widget())
+
+void name_public_cb(fltk::CheckButton* i, void* v) {
+  if (v == LOAD) {
+    i->value(current_widget->public_);
+  } else {
+    for_all_selected_widgets() {
+      modflag = 1;
+      ((WidgetType*)o)->public_ = i->value();
+    } 	
+  }
+  if (!i->value()) i->labelcolor(fltk::RED);
+  else i->labelcolor(fltk::BLACK);
+  i->redraw();
+}    
+
+static char* oldlabel;
+static unsigned oldlabellen;
+
+void label_cb(fltk::Input* i, void *v) {
+  if (v == LOAD) {
+    i->static_value(current_widget->label());
+    if (strlen(i->value()) >= oldlabellen) {
+      oldlabellen = strlen(i->value())+128;
+      oldlabel = (char*)realloc(oldlabel,oldlabellen);
+    }
+    strcpy(oldlabel,i->value());
+  } else {
+    for_all_selected_widgets() o->label(i->value());
+  }
+  fltk::Color c = fltk::BLACK;
+  if (current_widget->label() && *(current_widget->label())) c = fltk::RED;
+  if (i->labelcolor() != c)
+    { i->labelcolor(c); i->redraw_label(); }
+}
+
+static char* oldtooltip;
+static unsigned oldtooltiplen;
+
+void tooltip_cb(fltk::WordwrapInput* i, void *v) {
+  if (v == LOAD) {
+    //if (current_widget->o->is_window()) { i->hide(); return; }
+    i->show();
+    i->static_value(current_widget->tooltip());
+    if (strlen(i->value()) >= oldtooltiplen) {
+      oldtooltiplen = strlen(i->value())+128;
+      oldtooltip = (char*)realloc(oldtooltip,oldtooltiplen);
+    }
+    strcpy(oldtooltip,i->value());
+  } else {
+    for_all_selected_widgets() o->tooltip(i->value());
+  }
+  fltk::Color c = fltk::BLACK;
+  if (current_widget->tooltip() && *(current_widget->tooltip())) c = fltk::RED;
+  if (i->labelcolor() != c)
+    { i->labelcolor(c); i->redraw_label(); }
+}
+
+void x_cb(fltk::ValueInput* i, void *v) {
+  int x;
+  if (v != LOAD) {
+    x = int(i->value());
+    if (x <= -1) x = -1;
+    for_all_selected_widgets() {
+      WidgetType* q = (WidgetType*)o;
+      q->o->position(x, q->o->y());
+      q->redraw();
+    }
+  } else {
+    x = current_widget ? current_widget->o->x() : 0;
+  }
+  i->value(x);
+}
+
+void y_cb(fltk::ValueInput* i, void *v) {
+  int y;
+  if (v != LOAD) {
+    y = int(i->value());
+    if (y <= -1) y = -1;
+    for_all_selected_widgets() {
+      WidgetType* q = (WidgetType*)o;
+      q->o->position(q->o->x(), y);
+      q->redraw();
+    }
+  } else {
+    y = current_widget ? current_widget->o->y() : 0;    
+  }
+  i->value (y);
+}
+
+void width_cb(fltk::ValueInput* i, void *v) {
+  int width;
+  if (v != LOAD) {
+    width = int(i->value());
+    if (width <= 0) width = 0;
+    for_all_selected_widgets() {
+      WidgetType* q = (WidgetType*)o;
+      q->o->resize(width, q->o->h());
+      if (!o->is_menu_item()){
+	if (q->o->w() > q->o->h()) q->o->set_horizontal();
+	else if (q->o->w() < q->o->h()) q->o->set_vertical();
+      }
+      q->redraw();
+    }
+  } else {
+    width = current_widget ? current_widget->o->w() : 0;
+  }
+  i->value (width);
+}
+
+void height_cb(fltk::ValueInput* i, void *v) {
+  int height;
+  if (v != LOAD) {
+    height = int(i->value());
+    if (height <= 0) height = 0;
+    for_all_selected_widgets() {
+      WidgetType* q = (WidgetType*)o;
+      q->o->resize(q->o->w(), height);
+      if (!o->is_menu_item()){
+	if (q->o->w() > q->o->h()) q->o->set_horizontal();
+	else if (q->o->w() < q->o->h()) q->o->set_vertical();
+      }
+      q->redraw();
+    }  
+  } else {
+    height = current_widget ? current_widget->o->h() : 0;  
+  }
+  i->value (height);
+}
+
+void set_xy_cb(fltk::CheckButton* i, void *v) {
+  if (v == LOAD) {
+    if (current_widget->is_window()) i->show(); else i->hide();
+    i->value(current_widget->set_xy);
+  } else {
+    modflag = 1;
+    current_widget->set_xy = i->value();  
+  }
+  if (!current_widget->set_xy) {
+    widget_x->deactivate ();
+    widget_y->deactivate ();  
+  } else {
+    widget_x->activate ();
+    widget_y->activate ();  
+  }
+  if (i->value()) i->labelcolor(fltk::RED);
+  else i->labelcolor(fltk::BLACK);  
+  i->redraw();
+}
+
+////////////////////////////////////////////////////////////////
+
+static const Enumeration boxmenu[] = {
+{"None",	"NO_BOX",	(void *)fltk::NO_BOX},
+{"Up",		"UP_BOX",	(void *)fltk::UP_BOX},
+{"Down",	"DOWN_BOX",	(void *)fltk::DOWN_BOX},
+{"Thin Up",	"THIN_UP_BOX",	(void *)fltk::THIN_UP_BOX},
+{"Thin Down",	"THIN_DOWN_BOX",(void *)fltk::THIN_DOWN_BOX},
+{"Flat",	"FLAT_BOX",	(void *)fltk::FLAT_BOX},
+{"Border",	"BORDER_BOX",	(void *)fltk::BORDER_BOX},
+{"Frame",	"BORDER_FRAME",	(void *)fltk::BORDER_FRAME},
+{"Engraved",	"ENGRAVED_BOX",	(void *)fltk::ENGRAVED_BOX},
+{"Embossed",	"EMBOSSED_BOX",	(void *)fltk::EMBOSSED_BOX},
+{"Highlight",	"HIGHLIGHT_UP_BOX",(void *)fltk::HIGHLIGHT_UP_BOX},
+{"Highlight Down","HIGHLIGHT_DOWN_BOX",(void *)fltk::HIGHLIGHT_DOWN_BOX},
+{"Round",	"ROUND_UP_BOX",	(void *)fltk::ROUND_UP_BOX},
+{"Round Down",	"ROUND_DOWN_BOX",(void *)fltk::ROUND_DOWN_BOX},
+{"Diamond",	"DIAMOND_UP_BOX",(void *)fltk::DIAMOND_UP_BOX},
+{"Diamond Down","DIAMOND_DOWN_BOX",(void *)fltk::DIAMOND_DOWN_BOX},
+{"Shadow",	"SHADOW_BOX",	(void *)fltk::SHADOW_BOX},
+{"Rounded",	"ROUNDED_BOX",	(void *)fltk::ROUNDED_BOX},
+{"Rounded Shadow","RSHADOW_BOX",(void *)fltk::RSHADOW_BOX},
+{"Rounded Flat","RFLAT_BOX",	(void *)fltk::RFLAT_BOX},
+{"Oval",	"OVAL_BOX",	(void *)fltk::OVAL_BOX},
+{"Oval Shadow",	"OSHADOW_BOX",	(void *)fltk::OSHADOW_BOX},
+{"Oval Flat",	"OFLAT_BOX",	(void *)fltk::OFLAT_BOX},
+{"Plastic Up",	"PLASTIC_UP_BOX",	(void *)fltk::PLASTIC_UP_BOX},
+{"Plastic Down",	"PLASTIC_DOWN_BOX",	(void *)fltk::PLASTIC_DOWN_BOX},
+{0}};
+
+#define NOT_DEFAULT(W, what) (W->o->what() != ((WidgetType*)(W->factory))->o->what())
+
+void box_cb(fltk::Choice* i, void *v) {
+  if (v == LOAD) {
+    set_menu(i, boxmenu);
+    const Enumeration* e = from_value((void*)(current_widget->o->box()), boxmenu);
+    i->value(e ? e-boxmenu : 0);
+  } else {
+    int m = i->value();
+    fltk::Box* n = (fltk::Box*)(boxmenu[m].compiled);
+    if (!n) return; // should not happen
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      q->o->box(n);
+      q->redraw();
+    }
+  }
+  fltk::Color c = fltk::BLACK;
+  if (NOT_DEFAULT(current_widget, box)) c = fltk::RED;
+  if (i->labelcolor() != c) {
+    i->labelcolor(c);
+    i->redraw_label();
+  }
+}
+
+void button_box_cb(fltk::Choice* i, void *v) {
+  if (v == LOAD) {
+    set_menu(i, boxmenu);
+    const Enumeration* e = from_value((void*)(current_widget->o->buttonbox()), boxmenu);
+    i->value(e ? e-boxmenu : 0);
+  } else {
+    int m = i->value();
+    fltk::Box* n = (fltk::Box*)(boxmenu[m].compiled);
+    if (!n) return; // should not happen
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      q->o->buttonbox(n);
+      q->redraw();
+    }
+  }
+  fltk::Color c = fltk::BLACK;
+  if (NOT_DEFAULT(current_widget, buttonbox)) c = fltk::RED;
+  if (i->labelcolor() != c) {
+    i->labelcolor(c);
+    i->redraw_label();
+  }
+}
+
+////////////////////////////////////////////////////////////////
+
+static const Enumeration whenmenu[] = {
+  {"never",	"NEVER",	(void*)fltk::WHEN_NEVER},
+  {"Changed",	"CHANGED",	(void*)fltk::WHEN_CHANGED},
+  {"Release",	"RELEASE",	(void*)fltk::WHEN_RELEASE},
+  {"Release always","RELEASE_ALWAYS",(void*)fltk::WHEN_RELEASE_ALWAYS},
+  {"Enter key",	"ENTER_KEY",	(void*)fltk::WHEN_ENTER_KEY},
+  {"Enter key always","ENTER_KEY_ALWAYS",(void*)fltk::WHEN_ENTER_KEY_ALWAYS},
+  {0}
+};
+
+void when_cb(fltk::Choice* i, void *v) {
+  if (v == LOAD) {
+    if (current_widget->is_menu_item()) {i->hide(); return;}
+    set_menu(i, whenmenu);
+    i->show();
+    const Enumeration* e =
+      from_value(current_widget->o->when(), whenmenu);
+    i->value(e ? e-whenmenu : 0);
+  } else {
+    int m = i->value();
+    int n = int((long)(whenmenu[m].compiled));
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      q->o->when(n);
+    }
+  }
+  i->redraw();
+}
+
+void when_button_cb(fltk::CheckButton*, void *) {} // delete this!
+
+bool WidgetType::resizable() const {
+  if (is_window()) return ((Window*)o)->resizable() != 0;
+  Group* p = (Group*)o->parent();
+  return p ? p->resizable() == o : false;
+}
+
+void WidgetType::resizable(bool v) {
+  if (v) {
+    if (resizable()) return;
+    if (is_window()) ((Window*)o)->resizable(o);
+    else {
+      Group* p = (Group*)o->parent();
+      if (p) p->resizable(o);
+    }
+  } else {
+    if (!resizable()) return;
+    if (is_window()) {
+      ((Window*)o)->resizable(0);
+    } else {
+      Group* p = (Group*)o->parent();
+      if (p) p->resizable(0);
+    }
+  }
+}
+
+void resizable_cb(fltk::CheckButton* i,void* v) {
+  if (v == LOAD) {
+    if (current_widget->is_menu_item()) {i->deactivate(); return;}
+    if (numselected > 1) {i->deactivate(); return;}
+    i->activate();
+    i->value(current_widget->resizable());
+  } else {
+    current_widget->resizable(i->value());
+    modflag=1;
+  }
+  if (current_widget->resizable()) i->labelcolor(fltk::RED);
+  else i->labelcolor(fltk::BLACK);
+  i->redraw();
+}
+
+void hotspot_cb(fltk::CheckButton* i,void* v) {
+  if (v == LOAD) {
+    if (numselected > 1 || current_widget->is_menu_item()) {i->hide(); return;}
+    i->show();
+    i->value(current_widget->hotspot());
+  } else {
+    modflag = 1;
+    current_widget->hotspot(i->value());
+    if (i->value()) {
+      // turn off hotspot in all siblings
+      for (FluidType *p = current_widget->parent; p; p = p->parent) {
+	if (!p->is_widget()) continue;
+	for (FluidType* o = p->first_child; o; o = o->walk())
+	  if (o != current_widget && o->is_widget())
+	    ((WidgetType*)o)->hotspot(0);
+      }
+    }
+  }
+  if (current_widget->hotspot()) i->labelcolor(fltk::RED);
+  else i->labelcolor(fltk::BLACK);  
+  i->redraw();
+}
+
+void visible_cb(fltk::CheckButton* i, void* v) {
+  if (v == LOAD) {
+    i->value(current_widget->o->visible());
+  } else {
+    int n = i->value();
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      n ? q->o->show() : q->o->hide();
+      q->redraw();
+    }
+  }
+  if (!i->value()) i->labelcolor(fltk::RED);
+  else i->labelcolor(fltk::BLACK);
+  i->redraw();
+}
+
+void active_cb(fltk::CheckButton* i, void* v) {
+  if (v == LOAD) {
+    i->value(current_widget->o->active());
+  } else {
+    int n = i->value();
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      n ? q->o->activate() : q->o->deactivate();
+      q->redraw();
+    }
+  }
+  if (!i->value()) i->labelcolor(fltk::RED);
+  else i->labelcolor(fltk::BLACK);  
+  i->redraw();
+}
+
+////////////////////////////////////////////////////////////////
+
+static const Enumeration fontmenu[] = {
+  {"Helvetica",		"HELVETICA",		(void*)fltk::HELVETICA},
+  {"Helvetica bold",	"HELVETICA_BOLD",	(void*)fltk::HELVETICA_BOLD},
+  {"Helvetica italic",	"HELVETICA_ITALIC",	(void*)fltk::HELVETICA_ITALIC},
+  {"Helvetica bold italic","HELVETICA_BOLD_ITALIC",(void*)fltk::HELVETICA_BOLD_ITALIC},
+  {"Courier",		"COURIER",		(void*)fltk::COURIER},
+  {"Courier bold",	"COURIER_BOLD",		(void*)fltk::COURIER_BOLD},
+  {"Courier italic",	"COURIER_ITALIC",	(void*)fltk::COURIER_ITALIC},
+  {"Courier bold italic","COURIER_BOLD_ITALIC",	(void*)fltk::COURIER_BOLD_ITALIC},
+  {"Times",		"TIMES",		(void*)fltk::TIMES},
+  {"Times bold",	"TIMES_BOLD",		(void*)fltk::TIMES_BOLD},
+  {"Times italic",	"TIMES_ITALIC",		(void*)fltk::TIMES_ITALIC},
+  {"Times bold italic",	"TIMES_BOLD_ITALIC",	(void*)fltk::TIMES_BOLD_ITALIC},
+  {"Symbol",		"SYMBOL_FONT",		(void*)fltk::SYMBOL_FONT},
+  {"Terminal",		"SCREEN_FONT",		(void*)fltk::SCREEN_FONT},
+  {"Terminal Bold",	"SCREEN_BOLD_FONT",	(void*)fltk::SCREEN_BOLD_FONT},
+  {"Zapf Dingbats",	"ZAPF_DINGBATS",	(void*)fltk::ZAPF_DINGBATS},
+  {0}
+};
+
+int fontnumber(fltk::Font* f) {
+  for (int n = 0; ; n++) {
+    if (n > 15) return 0;
+    if (f == fontmenu[n].compiled) return n;
+  }
+}
+
+void label_font_cb(fltk::Choice* i, void *v) {
+  if (v == LOAD) {
+    set_menu(i, fontmenu);
+    i->value(fontnumber(current_widget->o->labelfont()));
+  } else {
+    int n = i->value();
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      q->o->labelfont(fltk::font(n));
+      q->redraw();
+    }
+  }
+  fltk::Color c = fltk::BLACK;
+  if (NOT_DEFAULT(current_widget, labelfont)) c = fltk::RED;
+  if (i->labelcolor() != c)
+    { i->labelcolor(c); i->redraw_label(); }
+}
+
+void label_size_cb(fltk::ValueInput* i, void *v) {
+  float n;
+  if (v == LOAD) {
+    n = current_widget->o->labelsize();
+  } else {
+    n = float(i->value());
+    if (n <= 0) n = WidgetType::default_size;
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      q->o->labelsize(n);
+      q->redraw();
+    }
+  }
+  i->value(n);
+  fltk::Color c = fltk::BLACK;
+  if (NOT_DEFAULT(current_widget, labelsize)) c = fltk::RED;
+  if (i->textcolor() != c)
+    { i->textcolor(c); i->redraw();}
+}
+
+void image_cb(fltk::Button *a, void * v) {
+  if (v != LOAD) {
+    Fluid_Image *i = ui_find_image(current_widget->image);
+    if (i == current_widget->image) return; // user hit "Cancel"
+    for_all_selected_widgets() {
+      WidgetType* p = (WidgetType*)o;
+      p->set_image(i);
+    }
+    image_inlined_cb(include_image_button, LOAD); // update the button state
+  }
+  const char* s = current_widget->image ? 
+    current_widget->image->name() : 0;
+  if (s != image_button->label()) 
+    {image_button->label(s); image_button->redraw();}
+  fltk::Color c = fltk::BLACK;
+  if (current_widget->image) c = fltk::RED;
+  if (image_button->labelcolor() != c)
+    { image_button->labelcolor(c); image_button->redraw();}
+}
+
+static const Enumeration labelstylemenu[] = {
+  {"Normal",	"NORMAL_LABEL",	(void*)fltk::NORMAL_LABEL},
+  {"Symbol",	"SYMBOL_LABEL",	(void*)fltk::SYMBOL_LABEL},
+  {"Shadow",	"SHADOW_LABEL",	(void*)fltk::SHADOW_LABEL},
+  {"Engraved",	"ENGRAVED_LABEL",(void*)fltk::ENGRAVED_LABEL},
+  {"Embossed",	"EMBOSSED_LABEL",(void*)fltk::EMBOSSED_LABEL},
+  {"None",	"NO_LABEL",	(void*)(fltk::NO_LABEL)},
+{0}};
+
+void label_style_cb(fltk::Choice* i, void *v) {
+  if (v == LOAD) {
+    set_menu(i, labelstylemenu);
+    const Enumeration* e = from_value((void*)(current_widget->o->labeltype()), labelstylemenu);
+    i->value(e ? e-labelstylemenu : 0);
+  } else {
+    int m = i->value();
+    fltk::LabelType* n = (fltk::LabelType*)(labelstylemenu[m].compiled);
+    if (!n) return; // should not happen
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* p = (WidgetType*)o;
+      p->o->labeltype(n);
+      p->redraw();
+    }
+  }
+  fltk::Color c = fltk::BLACK;
+  if (NOT_DEFAULT(current_widget, labeltype)) c = fltk::RED;
+  if (i->labelcolor() != c)
+    { i->labelcolor(c); i->redraw_label(); }
+}
+
+////////////////////////////////////////////////////////////////
+
+void color_cb(fltk::LightButton* i, void *v) {
+  fltk::Color c = current_widget->o->color();
+  if (v == LOAD) {
+    i->show();
+  } else {
+    if (!fltk::color_chooser(i->label(), c)) return;
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      q->o->color(c); q->redraw();
+    }
+  }
+  i->color(c);
+  i->selection_color(c);
+  i->labelcolor(NOT_DEFAULT(current_widget, color) ? fltk::RED : fltk::BLACK);
+  i->redraw();
+}
+
+void selection_color_cb(fltk::LightButton* i, void *v) {
+  fltk::Color c = current_widget->o->selection_color();
+  if (v == LOAD) {
+    i->label("Selection Color");
+    i->show();
+  } else {
+    if (!fltk::color_chooser(i->label(), c)) return;
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      q->o->selection_color(c); q->redraw();
+    }
+  }
+  i->color(c);
+  i->selection_color(c);
+  i->labelcolor(NOT_DEFAULT(current_widget, selection_color) ? fltk::RED : fltk::BLACK);
+  i->redraw();
+}
+
+void button_color_cb(fltk::LightButton* i, void *v) {
+  fltk::Color c = current_widget->o->buttoncolor();
+  if (v == LOAD) {
+    i->show();
+  } else {
+    if (!fltk::color_chooser(i->label(), c)) return;
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      q->o->buttoncolor(c); q->redraw();
+    }
+  }
+  i->color(c);
+  i->selection_color(c);
+  i->labelcolor(NOT_DEFAULT(current_widget, buttoncolor) ? fltk::RED : fltk::BLACK);
+  i->redraw();
+}
+
+void label_color_cb(fltk::LightButton* i, void *v) {
+  fltk::Color c = current_widget->o->labelcolor();
+  if (v != LOAD) {
+    if (!fltk::color_chooser(i->label(), c)) return;
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      q->o->labelcolor(c); q->redraw();
+    }
+  } else {
+    i->show();
+  }
+  i->color(c);
+  i->selection_color(c);
+  i->labelcolor(NOT_DEFAULT(current_widget, labelcolor) ? fltk::RED : fltk::BLACK);
+  i->redraw();
+}
+
+void text_font_cb(fltk::Choice* i, void* v) {
+  fltk::Font* n;
+  if (v == LOAD) {
+    set_menu(i, fontmenu);
+    if (current_widget->is_menu_item()) i->label("Shortcut Font:");
+    else i->label("Text Font:");
+    i->show();
+    i->value(fontnumber(current_widget->o->textfont()));
+  } else {
+    n = fltk::font(i->value());
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      q->o->textfont(n);
+      q->redraw();
+    }
+  }
+  fltk::Color c = fltk::BLACK;
+  if (NOT_DEFAULT(current_widget, textfont)) c = fltk::RED;
+  if (i->labelcolor() != c)
+    { i->labelcolor(c); i->redraw_label(); }
+}
+
+void text_size_cb(fltk::ValueInput* i, void* v) {
+  float n;
+  if (v == LOAD) {
+    n = current_widget->o->textsize();
+    i->show();
+  } else {
+    n = float(i->value());
+    if (n <= 0) n = WidgetType::default_size;
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      q->o->textsize(n);
+      q->redraw();
+    }
+  }
+  i->value(n);
+  fltk::Color c = fltk::BLACK;
+  if (NOT_DEFAULT(current_widget, textsize)) c = fltk::RED;
+  if (i->textcolor() != c)
+    { i->textcolor(c); i->redraw(); }
+}
+
+void text_color_cb(fltk::LightButton* i, void* v) {
+  fltk::Color c;
+  if (v == LOAD) {
+    c = current_widget->o->textcolor();
+    i->show();
+  } else {
+    c = i->selection_color();
+    if (!fltk::color_chooser(i->label(), c)) return;
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      q->o->textcolor(c);
+      q->redraw();
+    }
+  }
+  i->color(c);
+  i->selection_color(c);
+  i->labelcolor(NOT_DEFAULT(current_widget, textcolor) ? fltk::RED : fltk::BLACK);
+  i->redraw();
+}
+
+void selected_text_color_cb(fltk::LightButton* i, void* v) {
+  fltk::Color c;
+  if (v == LOAD) {
+    i->label("Selected Text Color");
+    c = current_widget->o->selection_textcolor();
+    i->show();
+  } else {
+    c = i->selection_color();
+    if (!fltk::color_chooser(i->label(), c)) return;
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      q->o->selection_textcolor(c);
+      q->redraw();
+    }
+  }
+  i->color(c);
+  i->selection_color(c);
+  i->labelcolor(NOT_DEFAULT(current_widget, selection_textcolor) ? fltk::RED : fltk::BLACK);
+  i->redraw();
+}
+
+void highlight_color_cb(fltk::LightButton* i, void *v) {
+  fltk::Color c = fltk::BLACK;
+  if (v == LOAD) {
+    c = current_widget->o->highlight_color();
+    if (!c) c = current_widget->o->buttoncolor();
+    i->show();
+  } else {
+    c = i->selection_color();
+    if (!fltk::color_chooser(i->label(), c)) return;
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      q->o->highlight_color(c); q->redraw();
+    }
+  }
+  i->color(c);
+  i->selection_color(c);
+  i->labelcolor(NOT_DEFAULT(current_widget, highlight_color) ? fltk::RED : fltk::BLACK);
+  i->redraw();
+}
+
+void highlight_label_color_cb(fltk::LightButton* i, void *v) {
+  fltk::Color c = fltk::BLACK;
+  if (v == LOAD) {
+    i->label("Highlight Label Color");
+    c = current_widget->o->highlight_textcolor();
+    if (!c) c = current_widget->o->labelcolor();
+    i->show();
+  } else {
+    c = i->selection_color();
+    if (!fltk::color_chooser(i->label(), c)) return;
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      q->o->highlight_textcolor(c); q->redraw();
+    }
+  }
+  i->color(c);
+  i->selection_color(c);
+  i->labelcolor(NOT_DEFAULT(current_widget, highlight_textcolor) ? fltk::RED : fltk::BLACK);
+  i->redraw();
+}
+
+static const Enumeration alignmenu[] = {
+  {"x", "fltk::ALIGN_CENTER",	(void*)(fltk::ALIGN_CENTER)},
+  {"x", "fltk::ALIGN_TOP",	(void*)(fltk::ALIGN_TOP)},
+  {"x", "fltk::ALIGN_BOTTOM",	(void*)(fltk::ALIGN_BOTTOM)},
+  {"x", "fltk::ALIGN_LEFT",	(void*)(fltk::ALIGN_LEFT)},
+  {"x", "fltk::ALIGN_RIGHT",	(void*)(fltk::ALIGN_RIGHT)},
+  {"x", "fltk::ALIGN_INSIDE",	(void*)(fltk::ALIGN_INSIDE)},
+  {"x", "fltk::ALIGN_CLIP",	(void*)(fltk::ALIGN_CLIP)},
+  {"x", "fltk::ALIGN_WRAP",	(void*)(fltk::ALIGN_WRAP)},
+{0}};
+
+void align_cb(fltk::Button* i, void *v) {
+  fltk::Flags b = fltk::Flags(i->argument());
+  // fabien: I don't understand how colors codification
+  // should work here i get strange results once i propagate the load events
+  // bill if you read these lines please specify how you intented it to work.
+
+  if (v == LOAD) {
+    i->value((current_widget->o->flags() & b) != 0);
+    fltk::Flags tplate = ((WidgetType*)(current_widget->factory))->o->flags();
+    fltk::Color c = fltk::BLACK;
+    fltk::Color d = fltk::RED;
+    if (tplate & b) {c = fltk::RED; d = fltk::BLACK;}
+    if (i->labelcolor() != c) {i->labelcolor(c); i->redraw();}
+    i->selection_textcolor(d);
+    i->selection_color(i->color());
+  } else {
+      Undo::checkpoint();
+
+    for_all_selected_widgets() {
+      WidgetType* q = (WidgetType*)o;
+      int x = q->o->flags() & fltk::ALIGN_MASK;
+      int y;
+      if (i->value()) {
+	y = x | b;
+      } else {
+	y = x & ~b;
+      }
+      if (x != y) {q->o->align(y); q->redraw(); modflag = 1;}
+    }
+  }
+}
+
+void image_inlined_cb(fltk::CheckButton* i, void *v) {
+  if (v==LOAD) { // for now all images are inlined or none is.
+    if (current_widget->image) {
+      i->activate();
+      i->value(current_widget->image->inlined);
+    } else {
+      i->deactivate();
+      i->value(false);
+    }
+  } else {
+    for_all_selected_widgets() {
+      WidgetType* q = (WidgetType*)o;
+      if (q->image) q->image->inlined = i->value();
+    }
+  }
+}
+
+////////////////////////////////////////////////////////////////
+
+void callback_cb(fltk::MultiLineInput* i, void *v) {
+  if (v == LOAD) {
+    i->static_value(current_widget->callback());
+  } else {
+    const char *c = i->value();
+    const char *d = c_check(c);
+    if (d) {fltk::message("Error in callback: %s",d); haderror = 1; return;}
+    for_all_selected_widgets() o->callback(c);
+  }
+  fltk::Color c = fltk::BLACK;
+  if (current_widget->callback()) c = fltk::RED;
+  if (i->labelcolor() != c) {
+    i->labelcolor(c);
+    i->redraw_label();
+  }
+}
+
+void user_data_cb(fltk::Input *i, void *v) {
+  if (v == LOAD) {
+    i->static_value(current_widget->user_data());
+  } else {
+    const char *c = i->value();
+    const char *d = c_check(c);
+    if (d) {fltk::message("Error in user_data: %s",d); haderror = 1; return;}
+    for_all_selected_widgets() o->user_data(c);
+  }
+  fltk::Color c = fltk::BLACK;
+  if (current_widget->user_data()) c = fltk::RED;
+  if (i->labelcolor() != c)
+    { i->labelcolor(c); i->redraw_label(); }
+}
+
+void user_data_type_cb(fltk::Input *i, void *v) {
+  static const char *dflt = "void*";
+  if (v == LOAD) {
+    const char *c = current_widget->user_data_type();
+    if (!c) c = dflt;
+    i->static_value(c);
+  } else {
+    const char *c = i->value();
+    const char *d = c_check(c);
+    if (!*c) i->value(dflt);
+    else if (!strcmp(c,dflt)) c = 0;
+    if (!d) {
+      if (c && *c && c[strlen(c)-1] != '*' && strcmp(c,"long"))
+	d = "must be pointer or long";
+    }
+    if (d) {fltk::message("Error in type: %s",d); haderror = 1; return;}
+    for_all_selected_widgets() o->user_data_type(c);
+  }
+  fltk::Color c = fltk::BLACK;
+  if (strcmp(i->value(), "void*")) c = fltk::RED;
+  if (i->labelcolor() != c)
+    { i->labelcolor(c); i->redraw_label(); }
+}
+
+void extra_code_input_cb(fltk::MultiLineInput* i, void* v) {
+  if (v == LOAD) {
+    i->static_value(current_widget->extra_code());
+  } else {
+    const char *c = i->value();
+    const char *d = c_check(c&&c[0]=='#' ? c+1 : c);
+    if (d) {fltk::message("Error in %s: %s",i->label(),d); haderror = 1; return;}
+    for_all_selected_widgets() {
+      WidgetType *t = (WidgetType*)o;
+      t->extra_code(c);
+    }
+  }
+  fltk::Color c = fltk::BLACK;
+  if (i->value() && *i->value()) c = fltk::RED;
+  if (i->labelcolor() != c)
+    { i->labelcolor(c); i->redraw_label(); }
+}
+
+void user_class_cb(fltk::Input* i, void* v) {
+  if (v == LOAD) {
+    const char* s = 0;
+    for_all_selected_widgets() {
+      WidgetType *t = (WidgetType*)o;
+      const char* c = t->subclass();
+      if (!s || !*s) s = c;
+      else if (strcmp(s,c)) {s = 0; break;}
+    }
+    i->static_value(s);
+  } else {
+    const char *c = i->value();
+    while (isspace(*c)) c++;
+    for_all_selected_widgets() {
+      WidgetType *t = (WidgetType*)o;
+      t->user_class(0);
+      if (*c && strcmp(c, t->subclass())) t->user_class(c);
+    }
+  }
+  fltk::Color c = fltk::BLACK;
+  if (current_widget->user_class()) c = fltk::RED;
+  if (i->labelcolor() != c)
+    { i->labelcolor(c); i->redraw_label(); }
+}
+
+////////////////////////////////////////////////////////////////
+// Kludges to the panel for subclasses:
+
+void slider_size_cb(fltk::ValueInput* i, void* v) {
+  if (v == LOAD) {
+    if (current_widget->is_valuator()!=2) {i->hide(); return;}
+    i->show();
+    i->value(((fltk::Slider*)(current_widget->o))->slider_size());
+  } else {
+    int n = int(i->value());
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      if (q->is_valuator()==2) {
+	((fltk::Slider*)(q->o))->slider_size(n);
+	q->redraw();
+      }
+    }
+  }
+}
+
+void min_cb(fltk::ValueInput* i, void* v) {
+  if (v == LOAD) {
+    if (!current_widget->is_valuator()) {i->hide(); return;}
+    i->show();
+    i->value(((fltk::Valuator*)(current_widget->o))->minimum());
+  } else {
+    double n = i->value();
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      if (q->is_valuator()) {
+	((fltk::Valuator*)(q->o))->minimum(n);
+	q->redraw();
+      }
+    }
+  }
+  fltk::Color c = fltk::BLACK;
+  if (i->value() != 0.0) c = fltk::RED;
+  if (i->labelcolor() != c)
+    { i->labelcolor(c); i->redraw_label(); }
+}
+
+void max_cb(fltk::ValueInput* i, void* v) {
+  if (v == LOAD) {
+    if (!current_widget->is_valuator()) {i->hide(); return;}
+    i->show();
+    i->value(((fltk::Valuator*)(current_widget->o))->maximum());
+  } else {
+    double n = i->value();
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      if (q->is_valuator()) {
+	((fltk::Valuator*)(q->o))->maximum(n);
+	q->redraw();
+      }
+    }
+  }
+  fltk::Color c = fltk::BLACK;
+  if (i->value() != 1.0) c = fltk::RED;
+  if (i->labelcolor() != c)
+    { i->labelcolor(c); i->redraw_label(); }
+}
+
+void step_cb(fltk::ValueInput* i, void* v) {
+  if (v == LOAD) {
+    if (!current_widget->is_valuator()) {i->hide(); return;}
+    i->show();
+    i->value(((fltk::Valuator*)(current_widget->o))->step());
+  } else {
+    double n = i->value();
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      if (q->is_valuator()) {
+	((fltk::Valuator*)(q->o))->step(n);
+	q->redraw();
+      }
+    }
+  }
+  fltk::Color c = fltk::BLACK;
+  if (i->value() != 0.0) c = fltk::RED;
+  if (i->labelcolor() != c)
+    { i->labelcolor(c); i->redraw_label(); }
+}
+
+void line_cb(fltk::ValueInput* i, void* v) {
+  if (v == LOAD) {
+    if (!current_widget->is_valuator()) {i->hide(); return;}
+    i->show();
+    i->value(((fltk::Valuator*)(current_widget->o))->linesize());
+  } else {
+    int n = int(i->value());
+    if (n >= 0) for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      if (q->is_valuator()) {
+	((fltk::Valuator*)(q->o))->linesize(n);
+	q->redraw();
+      }
+    }
+  }
+  fltk::Color c = fltk::BLACK;
+  if (i->value() != 1.0) c = fltk::RED;
+  if (i->labelcolor() != c)
+    { i->labelcolor(c); i->redraw_label(); }
+}
+
+void value_cb(fltk::ValueInput* i, void* v) {
+  if (v == LOAD) {
+    if (current_widget->is_valuator()) {
+      i->show();
+      i->value(((fltk::Valuator*)(current_widget->o))->value());
+    } else if (current_widget->is_button()) {
+      i->show();
+      i->value(current_widget->o->state());
+    } else 
+      i->hide();
+  } else {
+    double n = i->value();
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      if (q->is_valuator()) {
+	((fltk::Valuator*)(q->o))->value(n);
+      } else {
+	q->o->state(n != 0);
+	if (q->is_menu_item()) q->redraw();
+      }
+    }
+  }
+  fltk::Color c = fltk::BLACK;
+  if (i->value() != 0.0) c = fltk::RED;
+  if (i->labelcolor() != c)
+    { i->labelcolor(c); i->redraw_label(); }
+}
+
+////////////////////////////////////////////////////////////////
+
+// subtypes:
+
+const Enumeration *WidgetType::subtypes() const {return 0;}
+
+void subtype_cb(fltk::Choice* i, void* v) {
+  if (v == LOAD) {
+    const Enumeration* table = current_widget->subtypes();
+    if (!table) {i->hide(); return;}
+    i->show();
+    set_menu(i, table);
+    const Enumeration* e = from_value(current_widget->o->type(), table);
+    i->value(e ? e-table : 0);
+    i->redraw();
+  } else {
+    const Enumeration* table = current_widget->subtypes();
+    int n = int((long)(table[i->value()].compiled));
+    for_all_selected_widgets() {
+      modflag = 1;
+      WidgetType* q = (WidgetType*)o;
+      if (q->subtypes()==table) {
+        q->o->type(n);
+        q->redraw();
+      }
+    }
+  }
+}
+
+/**
+ * Groups in the panel send LOAD to all widgets, send any other
+ * callback to only the changed widgets, and recursively call
+ * themselves:
+ */
+void propagate_group(fltk::Group* g, void* v) {
+  if (v == LOAD) {
+    for (int i=g->children(); i--;) {
+      fltk::Widget* o = g->child(i);
+      o->do_callback(o,LOAD);
+    }
+  } else {
+    for (int i=g->children(); i--;) {
+      fltk::Widget* o = g->child(i);
+      if (o->changed() || o->callback()==(fltk::Callback*)propagate_group ||
+          o->callback()==(fltk::Callback*)propagate_tabs)
+      {
+	o->do_callback();
+	if (haderror) return;
+	o->clear_changed();
+      }
+    }
+  }    
+}
+
+/**
+ * Fluid insists on giving the correct type to arguments so we need
+ * a different call for the tabs:
+ */
+void propagate_tabs(fltk::TabGroup* g, void* v) {
+  propagate_group(g, v);
+}
+
+inline Fluid_Plugin** next_panel(Fluid_Plugin** pp, Fluid_Plugin* &p)
+{
+  while(pp < plugins+nbplugins && !(*pp)->make_panel) pp++;
+  if(pp < plugins+nbplugins) p = *pp;
+  return pp;
+}
+
+void set_cb(fltk::Button*, void*) {
+  haderror = 0;
+  propagate_group(the_panel, 0);
+  Fluid_Plugin *p = 0, **pp;
+  for(pp = next_panel(plugins, p); pp-plugins<nbplugins; pp = next_panel(pp+1, p))
+    if(p->panel_is_orphan) propagate_group(p->panel, 0);
+}
+
+void ok_cb(fltk::ReturnButton* o, void* v) {
+  set_cb(o,v);
+  if (!haderror)
+    the_panel->hide();
+}
+
+static void load_panel();
+
+void default_cb(fltk::Button*, void* v) {
+  if (v == LOAD) return;
+  const fltk::Style* default_style =
+    ((WidgetType*)(current_widget->factory))->o->style();
+  fltk::Style* s1 = (fltk::Style*)(current_widget->o->style());
+  if (s1 == default_style) return;
+  // Delete the style:
+  delete s1;
+  // this just assigns the pointer:
+  current_widget->o->style((fltk::Style*)default_style);
+  load_panel();
+  current_widget->redraw();
+}
+
+void revert_cb(fltk::Button*, void*) {
+  if (!current_widget) return;
+  // We have to revert all dynamically changing fields:
+  // but for now only the first label works...
+  if (numselected == 1) current_widget->label(oldlabel);
+  propagate_group(the_panel, LOAD);
+  Fluid_Plugin *p = 0, **pp;
+  for(pp = next_panel(plugins, p); pp-plugins<nbplugins; pp = next_panel(pp+1, p))
+    if(p->panel_is_orphan) propagate_group(p->panel, LOAD);
+}
+
+void cancel_cb(fltk::Button* o, void* v) {
+  revert_cb(o, v);
+  the_panel->hide();
+}
+
+void toggle_overlays(fltk::Widget *,void *); // in WindowType.C
+void overlay_cb(fltk::CheckButton*o,void *v) {
+  toggle_overlays(o,v);
+}
+
+/**
+ * Update the panel according to current widget set:
+ */
+static void load_panel() {
+  if (!the_panel) return;
+
+  // find all the fltk::Widget subclasses currently selected:
+  numselected = 0;
+  current_widget = 0;
+  if (FluidType::current) {
+    if (FluidType::current->is_widget())
+      current_widget=(WidgetType*)FluidType::current;
+    for_all_selected_widgets() {
+      numselected++;
+      if (!current_widget) current_widget = (WidgetType*)o;
+    }
+  }
+  if (numselected) {
+    Fluid_Plugin *p = 0, **pp;
+    for(pp = next_panel(plugins, p); pp-plugins<nbplugins; pp = next_panel(pp+1, p))
+      p->please_show_panel = 0;
+    propagate_group(the_panel, LOAD);
+    for(pp = next_panel(plugins, p); pp-plugins<nbplugins; pp = next_panel(pp+1, p))
+    {
+      if (p->panel_is_orphan) {
+	propagate_group(p->panel, LOAD);
+	if (p->please_show_panel) {
+	  p->panel_is_orphan = 0;
+	  panel_tabs->add(*p->panel);
+	  if (p->was_visible) panel_tabs->selected_child(p->panel);
+	  the_panel->redraw();
+	  p->panel->redraw();
+	}
+      } else {
+	if (!p->please_show_panel) {
+	  if (panel_tabs->selected_child() == p->panel) {
+	    panel_tabs->value(0);
+	    p->was_visible = 1;
+	  } else
+	    p->was_visible = 0;
+	  p->panel_is_orphan = 1;
+	  panel_tabs->remove(*p->panel);
+	  the_panel->redraw();
+	}
+      }
+    }	
+  }
+}
+
+/**
+ * This is called when user double-clicks an item, open or update the panel:
+ */
+void WidgetType::open() {
+  if (!the_panel) {
+    the_panel = make_widget_panel();
+    initialize_tab_colors();
+    Fluid_Plugin *p = 0, **pp;
+    for(pp = next_panel(plugins, p); pp-plugins<nbplugins; pp = next_panel(pp+1, p))
+    {
+      p->make_panel();
+      // All plugin panels are initially not mapped in the main pannel
+      p->panel_is_orphan = 1; 
+      p->panel->position(panel_tabs->child(0)->x(), panel_tabs->child(0)->y());
+      p->panel->layout();
+      p->panel->resizable(0);
+      p->panel->resize(panel_tabs->child(0)->w(), panel_tabs->child(0)->h());
+      p->panel->label(p->name);
+    }
+  }
+
+  load_panel();
+  if (numselected) {
+    the_panel->show();
+  }
+}
+
+extern void redraw_overlays();
+
+/**
+ * Called when the select value on the passed object changes, or when
+ * objects are deleted (in which case the passed object is null).
+ */
+void selection_changed(FluidType *p) {
+  if (p && the_panel && the_panel->visible()) {
+    // store all changes to the current selected objects:
+    set_cb(0,0);
+#if 0
+    if (haderror) {
+      // If there is an error, try to put selected flags and FluidType::current
+      // back to the previous values:
+      FluidType *q = 0;
+      for (FluidType *o = FluidType::first; o; o = o->walk()) {
+        o->new_selected = o->selected();
+        if (!q && o->selected()) q = o;
+      }
+      if (!p || !p->selected()) p = q;
+      FluidType::current = p;
+      redraw_browser();
+      return;
+    }
+#endif
+  }
+  // update the selected flags to new set:
+  for (FluidType* o = FluidType::first; o; o = o->walk()) {
+    o->selected(o->new_selected);
+    //if (o->selected()) FluidType::current = o;
+  }
+  if (p && p->new_selected) FluidType::current = p;
+  redraw_overlays();
+  // load the panel with the new settings:
+  load_panel();
+}
+
+/**
+ *
+ * Writing the C code:
+ *
+ * test to see if user named a function, or typed in code:
+ */
+int is_name(const char *c) {
+  for (; *c; c++) if (ispunct(*c) && *c!='_' && *c!=':') return 0;
+  return 1;
+}
+
+// Test to see if name() is an array entry.  If so, and this is the
+// highest number, return name[num+1].  Return null if not the highest
+// number or a field or function.  Return name() if not an array entry.
+const char* WidgetType::array_name() const {
+  const char *c = name();
+  if (!c) return 0;
+  const char *d;
+  for (d = c; *d != '['; d++) {
+    if (!*d) return c;
+    if (ispunct(*d) && *d!='_') return 0;
+  }
+  char* p;
+  long num = strtol(d+1, &p, 0); if (*p != ']') return 0;
+  int sawthis = 0;
+  FluidType* parent = this->parent;
+  while (parent && !parent->is_class()) parent = parent->parent;
+  for (FluidType* t = parent?parent->first_child : FluidType::first;
+       t; t = t->walk(parent)) {
+    if (t == (FluidType*)this) {sawthis=1; continue;}
+    const char *e = t->name();
+    if (!e) continue;
+    if (strncmp(c,e,d-c)) continue;
+    int n1 = strtol(e+(d-c)+1,0,0);
+    if (n1 > num || (n1 == num && sawthis)) return 0;
+  }
+  static char buffer[128];
+  strncpy(buffer,c,d-c+1);
+  sprintf(buffer+(d-c+1), "%ld]", num+1);
+  return buffer;
+}
+
+void WidgetType::write_static() {
+  const char* subclass = this->subclass();
+  if (!user_class() || !strncmp(subclass, "fltk::", 6)) 
+    ::write_declare("#include <fltk/%s.h>", subclass+6);
+  if (extra_code()) write_includes_from_code((char*)extra_code());
+  if (callback()) {
+    if (is_name(callback()))
+      ::write_declare("extern void %s(%s*, %s);", callback(), subclass,
+		      user_data_type() ? user_data_type() : "void*");
+    else
+      write_includes_from_code((char*)callback());
+  }
+  const char* array_name = this->array_name();
+  const char* member_of = this->member_of(true);
+  if (array_name && !member_of) {
+    write_c("\n");
+    if (!public_) write_c("static ");
+    else write_h("extern %s* %s;\n", subclass, array_name);
+    //write_c("%s* %s;\n", subclass, array_name);
+    if (strchr(array_name, '[') == NULL) write_c("%s *%s=(%s *)0;\n", subclass, array_name, subclass);
+    else write_c("%s *%s={(%s *)0};\n", subclass, array_name, subclass);
+  }
+  if (callback() && !is_name(callback())) {
+    // see if 'o' or 'v' used, to prevent unused argument warnings:
+    int use_o = 0;
+    int use_v = 0;
+    const char *d;
+    for (d = callback(); *d;) {
+      if (*d == 'o' && !is_id(d[1])) use_o = 1;
+      if (*d == 'v' && !is_id(d[1])) use_v = 1;
+      do d++; while (is_id(*d));
+      while (*d && !is_id(*d)) d++;
+    }
+    const char* cn = callback_name();
+    if (member_of) {
+      write_c("\ninline void %s::%s_i(%s*", member_of, cn, subclass);
+    } else {
+      write_c("\nstatic void %s(%s*", cn, subclass);
+    }
+    if (use_o) write_c(" o");
+    const char* ut = user_data_type() ? user_data_type() : "void*";
+    write_c(", %s", ut);
+    if (use_v) write_c(" v");
+    write_c(")%s", get_opening_brace(1));
+    indentation += 2;
+    write_code_block((char *)callback());
+    indentation -= 2;
+    if (*(d-1) != ';') {
+      const char *p = strrchr(callback(), '\n');
+      if (p) p ++;
+      else p = callback();
+      // Only add trailing semicolon if the last line is not a preprocessor
+      // statement...
+      if (*p != '#' && *p) write_c(";");
+    }
+    write_c("}\n");
+    if (member_of) {
+      write_c("void %s::%s(%s* o, %s v)%s", member_of, cn, subclass,
+	      ut, get_opening_brace(1));
+      write_c("%s((%s*)(o->", get_indent_string(1), member_of);
+      for (FluidType* p = parent; p->is_widget(); p = p->parent)
+	     write_c("parent()->");
+      write_c("user_data()))->%s_i(o,v);\n}\n", cn);
+    }
+  }
+  if (image && image->written != write_number) {
+    image->written = write_number; // do this first so they can recurse
+    image->write_static();
+  }
+}
+
+const char *FluidType::callback_name() {
+  if (is_name(callback())) return callback();
+  return unique_id(this, "cb", name(), label());
+}
+
+extern int varused_test, varused;
+extern WidgetType* last_group;
+  
+void WidgetType::write_code1() {
+  const char* subclass = this->subclass();
+  const char* array_name = this->array_name();
+  bool member_of = this->member_of() != 0;
+  if (array_name) {
+    if (member_of) {
+      write_public(public_);
+      write_h("%s%s *%s;\n", indent(), subclass, array_name);
+    }
+  }
+  if (member_of && callback() && !is_name(callback())) {
+    const char* cn = callback_name();
+    const char* ut = user_data_type() ? user_data_type() : "void*";
+    write_public(0);
+    write_h("%sinline void %s_i(%s*, %s);\n", indent(), cn, subclass, ut);
+    write_h("%sstatic void %s(%s*, %s);\n", indent(), cn, subclass, ut);
+  }
+  // figure out if local variable will be used (prevent compiler warnings):
+  if (is_parent() || extra_code())
+    varused = 1;
+  else {
+    varused_test = 1; varused = 0;
+    write_widget_code();
+    varused_test = 0;
+  }
+  write_c(indent());
+  if (varused) write_c("%s%s* o = ", get_opening_brace(0), subclass);
+  if (name()) write_c("%s = ", name());
+  if (is_window()) {
+    // Handle special case where user is faking a fltk::Group type as a window,
+    // there is no 2-argument constructor in that case:
+    if (set_xy)
+      write_c("new %s(%d, %d, %d, %d", subclass, o->x(),o->y(),o->w(),o->h());
+    else if (strstr(subclass, "Window"))
+      write_c("new %s(%d, %d", subclass, o->w(), o->h());
+    else
+      write_c("new %s(0, 0, %d, %d", subclass, o->w(), o->h());
+  } else if (is_menu_item()) {
+    write_c("new %s(", subclass);
+  } else {
+    write_c("new %s(%d, %d, %d, %d", subclass, o->x(), o->y(), o->w(), o->h());
+  }
+  if (label() && *label()) {
+    if (!is_menu_item()) write_c(", ");
+    write_cstring(label());
+  }
+  write_c(");\n");
+  indentation += 2;
+  if (this == last_group) write_c("%sw = o;\n",indent());
+  if (varused) write_widget_code();
+}
+
+static void write_color(const char* function, fltk::Color c) {
+  if (c > 255) write_c("%so->%s((fltk::Color)0x%x);\n", indent(), function, c);
+  else write_c("%so->%s((fltk::Color)%i);\n", indent(), function, c);
+}
+
+// this is split from write_code1() for WindowType:
+void WidgetType::write_widget_code() {
+  fltk::Widget* tplate = ((WidgetType*)factory)->o;
+
+  if (o->type() != tplate->type()) {
+    const Enumeration* e = subtypes();
+    if (e) e = from_value(o->type(), e);
+    if (e && e->symbol)
+      write_c("%so->type(%s::%s);\n", indent(), subclass(), e->symbol);
+    else
+      write_c("%so->type(%d);\n", indent(), o->type());
+  }
+
+  if (o->vertical()) write_c("%so->set_vertical();\n", indent());
+
+  if (image) image->write_code();
+
+  if (o->box() != tplate->box())
+    write_c("%so->box(fltk::%s);\n",indent(),to_text((void*)(o->box()),boxmenu));
+  if (o->buttonbox() != tplate->buttonbox())
+    write_c("%so->buttonbox(fltk::%s);\n", indent(), to_text((void*)(o->buttonbox()),boxmenu));
+  if (o->labelfont() != tplate->labelfont())
+    write_c("%so->labelfont(fltk::%s);\n", indent(), fontmenu[fontnumber(o->labelfont())].symbol);
+  if (o->textfont() != tplate->textfont())
+    write_c("%so->textfont(fltk::%s);\n", indent(), fontmenu[fontnumber(o->textfont())].symbol);
+  if (o->labeltype() != tplate->labeltype())
+    write_c("%so->labeltype(fltk::%s);\n", indent(),
+	    to_text((void*)(o->labeltype()),labelstylemenu));
+  if (o->color() != tplate->color())
+    write_color("color", o->color());
+  if (o->textcolor() != tplate->textcolor())
+    write_color("textcolor", o->textcolor());
+  if (o->selection_color() != tplate->selection_color())
+    write_color("selection_color", o->selection_color());
+  if (o->selection_textcolor() != tplate->selection_textcolor())
+    write_color("selection_textcolor", o->selection_textcolor());
+  if (o->buttoncolor() != tplate->buttoncolor())
+    write_color("buttoncolor", o->buttoncolor());
+  if (o->labelcolor() != tplate->labelcolor())
+    write_color("labelcolor", o->labelcolor());
+  if (o->highlight_color() != tplate->highlight_color())
+    write_color("highlight_color", o->highlight_color());
+  if (o->highlight_textcolor() != tplate->highlight_textcolor())
+    write_color("highlight_textcolor", o->highlight_textcolor());
+  if (o->labelsize() != tplate->labelsize())
+    write_c("%so->labelsize(%g);\n", indent(), o->labelsize());
+  if (o->textsize() != tplate->textsize())
+    write_c("%so->textsize(%g);\n", indent(), o->textsize());
+  if (o->state() && !tplate->state())
+    write_c("%so->set_flag(fltk::STATE);\n", indent());
+  if (o->shortcut())
+    write_c("%so->shortcut(0x%x);\n", indent(), o->shortcut());
+
+  if (is_valuator()) {
+    fltk::Valuator* v = (fltk::Valuator*)o;
+    fltk::Valuator* f = (fltk::Valuator*)(tplate);
+    if (v->minimum()!=f->minimum())
+      write_c("%so->minimum(%g);\n", indent(), v->minimum());
+    if (v->maximum()!=f->maximum())
+      write_c("%so->maximum(%g);\n", indent(), v->maximum());
+    if (v->step()!=f->step())
+      write_c("%so->step(%g);\n", indent(), v->step());
+    if (v->linesize_setting()!=f->linesize_setting())
+      write_c("%so->linesize(%g);\n", indent(), v->linesize_setting());
+    if (v->value())
+      write_c("%so->value(%g);\n", indent(), v->value());
+    if (is_valuator()==2) {
+      double x = ((fltk::Slider*)v)->slider_size();
+      double y = ((fltk::Slider*)f)->slider_size();
+      if (x != y) write_c("%so->slider_size(%g);\n", indent(), x);
+    }
+  }
+
+  const char* ud = user_data();
+  if (member_of() && !parent->is_widget()) ud = "this";
+  if (callback()) {
+    write_c("%so->callback((fltk::Callback*)%s", indent(), callback_name());
+    if (ud)
+      write_c(", (void*)(%s));\n", ud);
+    else
+      write_c(");\n");
+  } else if (ud) {
+    write_c("%so->user_data((void*)(%s));\n", indent(), ud);
+  }
+  if ((o->flags()&fltk::ALIGN_MASK) != (tplate->flags()&fltk::ALIGN_MASK)) {
+    fltk::Flags i = o->flags() & fltk::ALIGN_MASK;
+    write_c("%so->align(", indent());
+    bool first = true;
+    for (int n = 0; n < 8; n++) if (i & (1<<n)) {
+      if (!first) write_c("|");
+      first = false;
+      write_c(number_to_text(1<<n, alignmenu));
+    }
+    if (first) write_c("fltk::ALIGN_CENTER");
+    write_c(");\n");
+  }
+  if (o->when() != tplate->when())
+    write_c("%so->when(fltk::WHEN_%s);\n", indent(), number_to_text(o->when(), whenmenu));
+  if (!o->visible() && o->parent())
+    write_c("%so->hide();\n", indent());
+  if (!o->active())
+    write_c("%so->deactivate();\n", indent());
+  if (!is_group() && resizable())
+    write_c("%sfltk::Group::current()->resizable(o);\n",indent());
+  if (hotspot()) {
+    write_c("%s((fltk::Window*)(o", indent());
+    fltk::Widget* p = o->parent();
+    while (p) { p = p->parent(); write_c("->parent()"); }
+    write_c("))->hotspot(o);\n");
+  }
+  if (tooltip() && *tooltip()) {
+    write_c("%so->tooltip(", indent());
+    write_cstring(tooltip());
+    write_c(");\n");
+  }
+}
+
+void WidgetType::write_extra_code() {
+  if (extra_code()) write_code_block((char*)extra_code());
+}
+
+void WidgetType::write_block_close() {
+  indentation -= 2;
+  if (is_parent() || varused) write_c("%s}\n", indent());
+}
+
+void WidgetType::write_code() {
+  write_code1();
+  for (FluidType* q = first_child; q; q = q->next_brother) q->write_code();
+  write_extra_code();
+  write_block_close();
+}
+
+////////////////////////////////////////////////////////////////
+
+static void save_color(const char* name, fltk::Color color) {
+  if (color > 255) write_string("%s 0x%x", name, color);
+  else write_string("%s %u", name, color);
+}
+
+void WidgetType::write_properties() {
+  FluidType::write_properties();
+  int indent = 1;
+
+  for (FluidType* p = parent; p; p = p->parent) indent++;
+  write_indent(indent);
+  if (!public_) write_string("private");
+  if (!is_menu_item())
+    write_string("xywh {%d %d %d %d}", o->x(), o->y(), o->w(), o->h());
+  fltk::Widget* tplate = ((WidgetType*)factory)->o;
+  if (o->type() != tplate->type()) {
+    write_string("type");
+    write_word(number_to_text(o->type(), subtypes()));
+  }
+  // write horizontal or vertical if it disagrees with dimensions:
+  if (o->h()>o->w()) {
+    if (!o->vertical()) write_string("horizontal");
+  } else {
+    if (o->vertical()) write_string("vertical");
+  }
+  if (set_xy && is_window())
+    write_string("set_xy");
+
+  if (o->align() != tplate->align())
+    write_string("align %d", o->align());
+  if (o->when() != tplate->when())
+    write_string("when %s", number_to_text(o->when(), whenmenu));
+  if (!o->visible()) write_string("hide");
+  if (!o->active()) write_string("deactivate");
+  if (resizable()) write_string("resizable");
+  if (hotspot()) write_string("hotspot");
+
+  if (o->box() != tplate->box()) {
+    write_string("box"); write_word(to_text((void*)(o->box()),boxmenu));}
+  if (o->buttonbox() != tplate->buttonbox()) {
+    write_string("buttonbox"); write_word(to_text((void*)(o->buttonbox()),boxmenu));}
+  if (o->labelfont() != tplate->labelfont())
+    write_string("labelfont %d", fontnumber(o->labelfont()));
+  if (o->textfont() != tplate->textfont())
+    write_string("textfont %d", fontnumber(o->textfont()));
+  if (o->labeltype() != tplate->labeltype()) {
+    write_string("labeltype");
+    write_word(to_text((void*)(o->labeltype()),labelstylemenu));
+  }
+  if (image) {
+    write_indent(indent);
+    write_string("image");  // when only one image is required
+    if (!image->inlined) write_string("not_inlined");
+    write_word(image->name());
+  }
+  if (o->color() != tplate->color())
+    save_color("color", o->color());
+  if (o->textcolor() != tplate->textcolor())
+    save_color("textcolor", o->textcolor());
+  if (o->selection_color() != tplate->selection_color())
+    save_color("selection_color", o->selection_color());
+  if (o->selection_textcolor() != tplate->selection_textcolor())
+    save_color("selection_textcolor", o->selection_textcolor());
+  if (o->buttoncolor() != tplate->buttoncolor())
+    save_color("buttoncolor", o->buttoncolor());
+  if (o->labelcolor() != tplate->labelcolor())
+    save_color("labelcolor", o->labelcolor());
+  if (o->highlight_color() != tplate->highlight_color())
+    save_color("highlight_color", o->highlight_color());
+  if (o->highlight_textcolor() != tplate->highlight_textcolor())
+    save_color("highlight_textcolor", o->highlight_textcolor());
+  if (o->labelsize() != tplate->labelsize())
+    write_string("labelsize %g", o->labelsize());
+  if (o->textsize() != tplate->textsize())
+    write_string("textsize %g", o->textsize());
+  unsigned s = o->shortcut(); if (s && s != tplate->shortcut())
+    write_string("shortcut 0x%x", s);
+  if (o->state() && !tplate->state())
+    write_string("value 1");
+
+  if (is_valuator()) {
+    fltk::Valuator* v = (fltk::Valuator*)o;
+    fltk::Valuator* f = (fltk::Valuator*)(tplate);
+    if (v->minimum()!=f->minimum()) write_string("minimum %g",v->minimum());
+    if (v->maximum()!=f->maximum()) write_string("maximum %g",v->maximum());
+    if (v->step()!=f->step()) write_string("step %g",v->step());
+    if (v->linesize_setting()!=f->linesize_setting())
+      write_string("linesize %d",v->linesize());
+    if (v->value()!=0.0) write_string("value %g",v->value());
+    if (is_valuator()==2) {
+      double x = ((fltk::Slider*)v)->slider_size();
+      double y = ((fltk::Slider*)f)->slider_size();
+      if (x != y) write_string("slider_size %g", x);
+    }
+  }
+
+  if (extra_code()) {
+    write_indent(indent);
+    write_string("extra_code");
+    write_word(extra_code());
+  }
+  if (user_class()) {
+    write_indent(indent);
+    write_string("class");
+    write_word(user_class());
+  }
+}
+
+int pasteoffset;
+
+void WidgetType::read_property(const char *c) {
+  fltk::Widget* o = this->o;
+  int x,y,w,h;
+  if (!strcmp(c,"private")) {
+    public_ = 0;
+  } else if (!strcmp(c,"xywh")) {
+    if (sscanf(read_word(),"%d %d %d %d",&x,&y,&w,&h) == 4) {
+      x += pasteoffset;
+      y += pasteoffset;
+      // adjust for older relative coordinates:
+      if (read_version < 2.0001 && !is_menu_item() && o->parent()) {
+	fltk::Group* p = o->parent();
+	while (p->parent()) {x -= p->x(); y -= p->y(); p = p->parent();}
+      }
+      o->x(x); o->y(y); o->w(w); o->h(h);
+      if (h > w) o->set_vertical(); else o->set_horizontal();
+      //o->layout();
+    }
+  } else if (!strcmp(c,"horizontal")) {
+    o->set_horizontal();
+  } else if (!strcmp(c,"vertical")) {
+    o->set_vertical();
+  } else if (!strcmp(c,"type")) {
+    const char* c = read_word();
+    // Strip off leading "VERTICAL|fltk::Type::" written by older fltk2 fluid:
+    if (!strncmp(c,"VERTICAL",8)) c += 8;
+    else if (!strncmp(c,"HORIZONTAL",10)) c += 10;
+    if (*c == '|') {
+      c++;
+      const char* d = c;
+      while (*d && *d != '|') if (*d++ == ':') c = d;
+    }
+    o->type(number_from_text(c, subtypes()));
+  } else if (!strcmp(c,"set_xy")) {
+    set_xy = true;
+  } else if (!strcmp(c,"align")) {
+    o->align((int)strtoul(read_word(),0,0));
+  } else if (!strcmp(c,"when")) {
+    o->when(number_from_text(read_word(), whenmenu));
+  } else if (!strcmp(c,"hide")) {
+    o->hide();
+  } else if (!strcmp(c,"deactivate")) {
+    o->deactivate();
+  } else if (!strcmp(c,"resizable")) {
+    resizable(1);
+  } else if (!strcmp(c,"hotspot")) {
+    hotspot(1);
+  //} else if (!strcmp(c, "divider")) { // do something here...
+  } else if (!strcmp(c,"class")) {
+    user_class(read_word());
+  } else if (!strcmp(c,"shortcut")) {
+    o->shortcut(strtol(read_word(),0,0));
+  } else if (!strcmp(c,"box") || !strcmp(c,"text_box") || !strcmp(c, "window_box")) {
+    const char* value = read_word();
+    const Enumeration* e = from_text(value, boxmenu);
+    if (e) o->box((fltk::Box*)(e->compiled));
+    else read_error("Box* '%s' not found", value);
+  } else if (!strcmp(c,"buttonbox") || !strcmp(c,"button_box") || !strcmp(c,"glyph_box")) {
+    const char* value = read_word();
+    const Enumeration* e = from_text(value, boxmenu);
+    if (e) o->buttonbox((fltk::Box*)(e->compiled));
+    else read_error("Box* '%s' not found", value);
+  } else if (!strcmp(c, "down_box")) { // ignore this fltk 1.0 item
+    read_word();
+  } else if (!strcmp(c,"labelfont") || !strcmp(c,"label_font")) {
+    if (sscanf(read_word(),"%d",&x) == 1) o->labelfont(fltk::font(x));
+  } else if (!strcmp(c,"textfont") || !strcmp(c,"text_font")) {
+    if (sscanf(read_word(),"%d",&x) == 1) o->textfont(fltk::font(x));
+  } else if (!strcmp(c,"labeltype") || !strcmp(c,"label_type")
+	     || !strcmp(c,"label_style")) {
+    c = read_word();
+    // back compatability with 1.0 and Vincent's original graphical patch:
+    if (!strncmp(c,"image",5) || !strcmp(c, "image_file")) {
+      // WAS: since it used the label(), I don't think mulitple images
+      // could have been supported.
+      Fluid_Image *i = Fluid_Image::find(label());
+      if (!i) read_error("Image file '%s' not found", label());
+      set_image(i); label(0);
+      if (!strcmp(c,"image_file")) {
+        c = read_word();
+        if (i && c[0]=='d') i->inlined = 0;
+        // if (c[1]=='t') do something here to make it fltk::Tiled_Image
+      }
+    } else {
+      const Enumeration* e = from_text(c, labelstylemenu);
+      if (e) o->labeltype((fltk::LabelType*)(e->compiled));
+    }
+
+  } else if (!strcmp(c,"image") || !strcmp(c,"image1")) {
+    c = read_word();
+    // back compatability with a prefixed inlined indicator:
+    bool inlined = true;
+    if (!strcmp(c, "inlined")) {
+      c = read_word();
+    } else if (!strcmp(c, "not_inlined")) {
+      inlined = 0;
+      c = read_word();
+    }
+    Fluid_Image *i = Fluid_Image::find(c);
+    if (!i) read_error("Image file '%s' not found", c);
+    else {
+      set_image(i);
+      if (!inlined) i->inlined = 0;
+    }
+
+  } else if (!strcmp(c,"image2")||!strcmp(c,"image3")||!strcmp(c,"image4")) {
+    // Read the multi-image api, this should be converted to a new
+    // MultiImage instance for compatability. Unfortunatly I don't have
+    // time for that, and instead throw all except image1 away...
+    // 2 = INACTIVE_R
+    // 3 = HIGHLIGHT
+    // 4 = PUSHED
+
+  } else if (!strcmp(c,"color") || !strcmp(c,"text_background")
+	     || !strcmp(c,"off_color") || !strcmp(c,"window_color")) {
+    char* p;
+    o->color((fltk::Color)strtoul(read_word(),&p,0));
+    // back compatability with very old fluid versions that wrote 2 numbers:
+    if (*p) o->selection_color((fltk::Color)strtoul(p,0,0));
+  } else if (!strcmp(c,"labelcolor") || !strcmp(c,"label_color")) {
+    o->labelcolor((fltk::Color)strtoul(read_word(),0,0));
+  } else if (!strcmp(c,"selection_color")) {
+    o->selection_color((fltk::Color)strtoul(read_word(),0,0));
+  } else if (!strcmp(c,"selection_textcolor") ||
+	     !strcmp(c,"selected_text_color") || !strcmp(c,"selected_textcolor")) {
+    o->selection_textcolor((fltk::Color)strtoul(read_word(),0,0));
+  } else if (!strcmp(c,"buttoncolor") ||
+	     !strcmp(c,"button_color") || !strcmp(c,"off_color")) {
+    o->buttoncolor((fltk::Color)strtoul(read_word(),0,0));
+  } else if (!strcmp(c,"highlight_color")) {
+    o->highlight_color((fltk::Color)strtoul(read_word(),0,0));
+  } else if (!strcmp(c,"highlight_textcolor") ||
+	     !strcmp(c,"highlight_labelcolor") ||
+	     !strcmp(c,"highlight_label_color")) {
+    o->highlight_textcolor((fltk::Color)strtoul(read_word(),0,0));
+  } else if (!strcmp(c,"textcolor") || !strcmp(c,"text_color")) {
+    o->textcolor((fltk::Color)strtoul(read_word(),0,0));
+  } else if (!strcmp(c,"labelsize") || !strcmp(c,"label_size")) {
+    o->labelsize((float)strtoul(read_word(),0,0));
+  } else if (!strcmp(c,"textsize") || !strcmp(c,"text_size")) {
+    o->textsize((float)strtoul(read_word(),0,0));
+
+  } else if (!strcmp(c,"minimum") && is_valuator()) {
+    ((fltk::Valuator*)o)->minimum(strtod(read_word(),0));
+  } else if (!strcmp(c,"maximum") && is_valuator()) {
+    ((fltk::Valuator*)o)->maximum(strtod(read_word(),0));
+  } else if (!strcmp(c,"step") && is_valuator()) {
+    ((fltk::Valuator*)o)->step(strtod(read_word(),0));
+  } else if (!strcmp(c,"linesize") && is_valuator()) {
+    ((fltk::Valuator*)o)->linesize(strtod(read_word(),0));
+  } else if (!strcmp(c,"value")) {
+    if (is_valuator()) {
+      ((fltk::Valuator*)o)->value(strtod(read_word(),0));
+    } else {
+      const char* value = read_word();
+      o->state(value[0]!=0 && value[0]!='0');
+    }
+  } else if ((!strcmp(c,"slider_size")||!strcmp(c,"size"))&&is_valuator()==2) {
+    double v = strtod(read_word(),0);
+    if (v < 1.0)
+      ((fltk::Slider*)o)->slider_size(int(v*o->w()));
+    else
+      ((fltk::Slider*)o)->slider_size(int(v));
+
+  } else if (!strcmp(c, "extra_code")) {
+    extra_code(read_word());
+  } else if (!strncmp(c,"code",4)) {
+    // for back-compatabilty all old code0, code1, ... fields are concatenated
+    const char* newtext = read_word();
+    const char* oldtext = extra_code();
+    if (!oldtext) {extra_code(newtext); return;}
+    int n = strlen(oldtext)+1+strlen(newtext)+1;
+    char* buffer = new char[n];
+    sprintf(buffer, "%s\n%s", oldtext, newtext);
+    extra_code(buffer);
+    delete[] buffer;
+  } else {
+    FluidType::read_property(c);
+  }
+}
+
+static const Enumeration boxmenu1[] = {
+  // these extra ones are for looking up fdesign saved strings:
+  {"x", "NO_FRAME",		(void *)fltk::NO_BOX},
+  {"x", "ROUNDED3D_UPBOX",	(void *)fltk::ROUND_UP_BOX},
+  {"x", "ROUNDED3D_DOWNBOX",	(void *)fltk::ROUND_DOWN_BOX},
+  {"x", "OVAL3D_UPBOX",		(void *)fltk::ROUND_UP_BOX},
+  {"x", "OVAL3D_DOWNBOX",	(void *)fltk::ROUND_DOWN_BOX},
+  {"x", "0",			(void *)fltk::NO_BOX},
+  {"x", "1",			(void *)fltk::UP_BOX},
+  {"x", "2",			(void *)fltk::DOWN_BOX},
+  {"x", "3",			(void *)fltk::FLAT_BOX},
+  {"x", "4",			(void *)fltk::BORDER_BOX},
+  {"x", "5",			(void *)fltk::SHADOW_BOX},
+  {"x", "6",			(void *)fltk::ENGRAVED_BOX},
+  {"x", "7",			(void *)fltk::ROUNDED_BOX},
+  {"x", "8",			(void *)fltk::RFLAT_BOX},
+  {"x", "9",			(void *)fltk::RSHADOW_BOX},
+  {"x", "10",			(void *)fltk::UP_BOX},
+  {"x", "11",			(void *)fltk::DOWN_BOX},
+{0}};
+
+extern int fdesign_flip;
+extern int lookup_fdesign(const char *name, int &v, int numberok=0);
+
+int WidgetType::read_fdesign(const char* name, const char* value) {
+  int v;
+  if (!strcmp(name,"box")) {
+    float x,y,w,h;
+    if (sscanf(value,"%f %f %f %f",&x,&y,&w,&h) == 4) {
+      if (fdesign_flip) {
+	FluidType *p;
+	for (p = parent; p && !p->is_window(); p = p->parent);
+	if (p && p->is_widget()) y = ((WidgetType*)p)->o->h()-(y+h);
+      }
+      x += pasteoffset;
+      y += pasteoffset;
+      o->resize(int(x),int(y),int(w),int(h));
+      if (h>w) o->set_vertical();
+      o->layout();
+    }
+  } else if (!strcmp(name,"label")) {
+    label(value);
+    if (value[0] == '@') o->labeltype(fltk::SYMBOL_LABEL);
+  } else if (!strcmp(name,"name")) {
+    this->name(value);
+  } else if (!strcmp(name,"callback")) {
+    callback(value); user_data_type("long");
+  } else if (!strcmp(name,"argument")) {
+    user_data(value);
+  } else if (!strcmp(name,"shortcut")) {
+    if (value[0]) {
+      char buf[128]; sprintf(buf,"o->shortcut(\"%s\");",value);
+      extra_code(buf);
+    }
+  } else if (!strcmp(name,"style")) {
+    if (!strncmp(value,"fltk::NORMAL",9)) return 1;
+    if (!lookup_fdesign(value,v,1)) return 0;
+    o->labelfont(fltk::font(v)); o->labeltype((fltk::LabelType*)(v>>8));
+  } else if (!strcmp(name,"size")) {
+      if (!lookup_fdesign(value,v,1)) return 0;
+    o->labelsize((float)v);
+  } else if (!strcmp(name,"type")) {
+    if (!strncmp(value,"NORMAL",6)) return 1;
+    if (lookup_fdesign(value,v,1)) {o->type(v); return 1;}
+    if (!strcmp(value+strlen(value)-5,"FRAME")) goto TRY_BOXTYPE;
+    if (!strcmp(value+strlen(value)-3,"BOX")) goto TRY_BOXTYPE;
+    return 0;
+  } else if (!strcmp(name,"lcol")) {
+    if (!lookup_fdesign(value,v,1)) return 0;
+    o->labelcolor(v);
+  } else if (!strcmp(name,"return")) {
+    if (!lookup_fdesign(value,v,0)) return 0;
+    o->when(v|fltk::WHEN_RELEASE);
+  } else if (!strcmp(name,"alignment")) {
+    if (!lookup_fdesign(value,v)) {
+      // convert old numeric values:
+      int v1 = strtol(value,0,0); if (v1 <= 0 && strcmp(value,"0")) return 0;
+      v = 0;
+      if (v1 >= 5) {v = fltk::ALIGN_INSIDE; v1 -= 5;}
+      switch (v1) {
+      case 0: v += fltk::ALIGN_TOP; break;
+      case 1: v += fltk::ALIGN_BOTTOM; break;
+      case 2: v += fltk::ALIGN_LEFT; break;
+      case 3: v += fltk::ALIGN_RIGHT; break;
+      case 4: v += fltk::ALIGN_CENTER; break;
+      default: return 0;
+      }
+    }
+    o->align(v);
+  } else if (!strcmp(name,"resizebox")) {
+    resizable(1);
+  } else if (!strcmp(name,"colors")) {
+    char* p = (char*)value;
+    while (*p != ' ') {if (!*p) return 0; p++;}
+    *p = 0;
+    int v1;
+    if (!lookup_fdesign(value,v,1) || !lookup_fdesign(p+1,v1,1)) {
+      *p=' '; return 0;}
+    o->color(v); o->selection_color(v1);
+  } else if (!strcmp(name,"resize")) {
+    return !strcmp(value,"fltk::RESIZE_ALL");
+  } else if (!strcmp(name,"gravity")) {
+    return !strcmp(value,"Fl_NoGravity Fl_NoGravity");
+  } else if (!strcmp(name,"boxtype")) {
+  TRY_BOXTYPE:
+    const Enumeration* e = from_text(value, boxmenu);
+    if (!e) {e = from_text(value, boxmenu1); if (!e) return 0;}
+    fltk::Box* x = (fltk::Box*)(e->compiled);
+    if (x == fltk::NO_BOX) {
+      if (o->box() != ((WidgetType*)factory)->o->box()) return 1; // kludge for frame
+    }
+    o->box(x);
+  } else {
+    return 0;
+  }
+  return 1;
+}
+
+////////////////////////////////////////////////////////////////
+// live mode
+
+#include "WindowType.h"
+
+void leave_live_mode_cb(Widget*, void*);
+
+Window *live_window = 0L;
+void live_mode_cb(LightButton*o,void *v) {
+  /// \todo live mode should end gracefully when the application quits
+  ///       or when the user closes the live widget
+  static FluidType *live_type = 0L;
+  static Widget *live_widget = 0L;
+  // if 'o' is 0, we must quit live mode
+  if (!o) {
+    o = wLiveMode;
+    o->value(0);
+  }
+  if (o->value()) {
+    if (numselected == 1) {
+      live_widget = current_widget->enter_live_mode(1);
+      if (live_widget) {
+        live_type = current_widget;
+        Group::current(0);
+        int w = live_widget->w();
+        int h = live_widget->h();
+	// create main live mode Window, green backgnd no border
+        live_window = new DoubleBufferWindow(w+20, h+55, "Fluid Live Mode Widget");
+	live_window->begin();
+        live_window->box(fltk::FLAT_BOX);
+        live_window->color(fltk::GREEN);
+        Button *btn = new Button(10, h+20, 100, 25, "Exit Live Mode");
+        btn->labelsize(12);
+        btn->callback(leave_live_mode_cb);
+        live_widget->position(10, 10);
+        live_window->add(live_widget);
+        live_window->resizable(live_widget);
+        live_window->set_modal(); // block all other UI
+        live_window->callback(leave_live_mode_cb);
+        if (current_widget->is_window()) {
+          WindowType *w = (WindowType*)current_widget;
+          int mw = w->sr_min_w; if (mw>0) mw += 20;
+          int mh = w->sr_min_h; if (mh>0) mh += 55;
+          int MW = w->sr_max_w; if (MW>0) MW += 20; 
+          int MH = w->sr_max_h; if (MH>2) MH += 55;
+          if (mw || mh || MW || MH)
+            live_window->size_range(mw, mh, MW, MH);
+        }
+	live_window->end();
+        live_window->show();
+      } else o->value(0);
+    } else o->value(0);
+  } else {
+    if (live_type)
+      live_type->leave_live_mode();
+    if (live_window) {
+	live_window->hide();
+	live_window->clear_changed();
+      delete live_window; // was delete_widget(live_window); but deferred call obsolete in fltk2
+    }
+    live_type = 0L;
+    live_widget = 0L;
+    live_window = 0L;
+  }
+}
+
+void leave_live_mode_cb(Widget*, void*) {
+  live_mode_cb(0, 0);
+}
+
+fltk::Widget *WidgetType::enter_live_mode(int top) {
+  live_widget = widget(o->x(), o->y(), o->w(), o->h());
+  if (live_widget)
+    copy_properties();
+  return live_widget;
+}
+
+void WidgetType::leave_live_mode() {
+}
+
+/**
+ * copy all properties from the edit widget to the live widget
+ */
+void WidgetType::copy_properties() {
+  if (!live_widget) 
+    return;
+
+  // copy all attributes common to all widget types
+  Widget *w = live_widget;
+  if (o->style() ) {
+      if (o->style()->dynamic()) w->copy_style(o->style());
+      else w->style(o->style());
+  }
+  w->default_style = o->default_style;
+  w->default_glyph= o->default_glyph;
+
+  w->flags(o->flags());
+  w->label(o->label());
+  w->image(o->image());
+  w->tooltip(tooltip());
+  w->type(o->type());
+    
+  w->align(o->align());
+  w->shortcut(o->shortcut());
+  w->Rectangle::set(o->x(), o->y(),o->w(),o->h());
+
+  // copy all attributes specific to widgets derived from Button
+  if (is_button()) {
+    Button* d = (Button*)live_widget, *s = (Button*)o;
+    d->value(s->value());
+  }
+
+  // copy all attributes specific to Valuator and derived classes
+  if (is_valuator()) {
+    Valuator* d = (Valuator*)live_widget, *s = (Valuator*)o;
+    d->minimum(s->minimum());
+    d->maximum(s->maximum());
+    d->step(s->step());
+    d->value(s->value());
+    if (is_valuator()==2) {
+      Slider *d = (Slider*)live_widget, *s = (Slider*)o;
+      d->slider_size(s->slider_size());
+    }
+  }
+ 
+/* TODO: implement this
+  {Font ff; int fs; Color fc; if (textstuff(4,ff,fs,fc)) {
+    Font f; int s; Color c; textstuff(0,f,s,c);
+    if (f != ff) write_string("textfont %d", f);
+    if (s != fs) write_string("textsize %d", s);
+    if (c != fc) write_string("textcolor %d", c);
+  }}*/
+
+  if (!o->visible()) 
+    w->hide();
+  if (!o->active()) 
+    w->deactivate();
+  if (resizable() && w->parent()) 
+    w->parent()->resizable(o);
+}
+
+int WidgetType::textstuff(int w, fltk::Font* f, float& s, fltk::Color c) {
+  fltk::Widget *myo = (fltk::Widget *)(w==4 ? ((WidgetType*)factory)->o : o);
+  switch (w) {
+    case 4:
+    case 0: f = myo->textfont(); s = myo->textsize(); c = myo->textcolor(); break;
+    case 1: myo->textfont(f); break;
+    case 2: myo->textsize((float)s); break;
+    case 3: myo->textcolor(c); break;
+  }
+  return 1;
+}
+
+//
+// End of "$Id: WidgetType.cxx 7513 2010-04-15 17:19:27Z spitzak $".
+//

Added: branches/branch-3.0-2011/fluid2/WidgetType.h
===================================================================
--- branches/branch-3.0-2011/fluid2/WidgetType.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/WidgetType.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,80 @@
+#ifndef WidgetType_h
+#define WidgetType_h
+
+#include "FluidType.h"
+
+struct Enumeration;
+
+class FLUID_API WidgetType : public FluidType {
+  virtual fltk::Widget *widget(int,int,int,int);
+  virtual WidgetType *_make(); // virtual constructor
+  virtual void setlabel(const char *);
+
+  const char *extra_code_;
+  const char *user_class_;
+  bool hotspot_;
+
+protected:
+
+  void write_static();
+  void write_code();
+  void write_code1();
+  void write_widget_code();
+  void write_extra_code();
+  void write_block_close();
+
+public:
+
+  bool set_xy;
+  fltk::Widget *o;
+  bool public_;
+  
+  Fluid_Image* image;
+  void set_image(Fluid_Image* i);
+
+  WidgetType();
+  FluidType *make();
+  void open();
+
+  const char *extra_code() const {return extra_code_;}
+  void extra_code(const char *);
+  const char *user_class() const {return user_class_;}
+  void user_class(const char *);
+  bool hotspot() const {return hotspot_;}
+  void hotspot(bool v) {hotspot_ = v;}
+  bool resizable() const;
+  void resizable(bool v);
+
+  virtual const Enumeration* subtypes() const;
+
+  virtual int is_widget() const;
+
+  virtual void write_properties();
+  virtual void read_property(const char *);
+  virtual int read_fdesign(const char*, const char*);
+
+  virtual ~WidgetType();
+  void redraw();
+
+  const char* subclass() const;
+  const char* array_name() const;
+
+  virtual const char *type_name() const;
+
+  // live mode functionalities
+  fltk::Widget *enter_live_mode(int top);
+  void leave_live_mode();
+  void copy_properties();
+  
+  virtual int textstuff(int w, fltk::Font* f, float& s, fltk::Color c);
+
+  static float default_size;
+  int pixmapID() { return 5;}
+  
+};
+
+#define LOAD ((void*)9831)
+
+FLUID_API extern WidgetType *current_widget; // one of the selected ones
+
+#endif

Added: branches/branch-3.0-2011/fluid2/Widget_Types.h
===================================================================
--- branches/branch-3.0-2011/fluid2/Widget_Types.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/Widget_Types.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,549 @@
+// "$Id:"
+//
+// Subclasses of FluidType for each type of Widget in 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 needs to be split up into important subclasses that are
+// used by multiple files. Many of these subclasses are only used by
+// the fluid_menus file and should just be imbedded in there.
+
+#ifndef fltk_widget_type_h
+#define fltk_widget_type_h
+
+#include <fltk/Box.h>
+#include <fltk/TabGroup.h>
+#include <fltk/WizardGroup.h>
+#include <fltk/PopupMenu.h>
+#include <fltk/Choice.h>
+#include <fltk/MenuBar.h>
+#include <fltk/InputBrowser.h>
+#include <fltk/FileBrowser.h>
+#include <fltk/Divider.h>
+#include <fltk/InvisibleBox.h>
+#include <fltk/Button.h>
+#include <fltk/ReturnButton.h>
+#include <fltk/RepeatButton.h>
+#include <fltk/LightButton.h>
+#include <fltk/CheckButton.h>
+#include <fltk/RadioButton.h>
+#include <fltk/Clock.h>
+#include <fltk/Adjuster.h>
+#include <fltk/Dial.h>
+#include <fltk/ThumbWheel.h>
+#include <fltk/TextDisplay.h>
+#include <fltk/TextEditor.h>
+#include <fltk/FileInput.h>
+#include <fltk/ProgressBar.h>
+#include <fltk/Scrollbar.h>
+#include <fltk/Output.h>
+#include <fltk/ValueInput.h>
+#include <fltk/ValueOutput.h>
+#include <fltk/ValueSlider.h>
+#include <fltk/BarGroup.h>
+#include <fltk/StatusBarGroup.h>
+#include <fltk/HelpView.h>
+#include <fltk/Item.h>
+#include "GroupType.h"
+
+class InvisibleBoxType : public WidgetType {
+ public:
+  virtual const char *type_name() const {return "fltk::InvisibleBox";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::InvisibleBox(x,y,w,h,0);}
+  WidgetType *_make() {return new InvisibleBoxType();}
+  int pixmapID() { return 5; }
+};
+
+extern const Enumeration buttontype_menu[];
+class ButtonType : public WidgetType {
+  const Enumeration *subtypes() const {return buttontype_menu;}
+ public:
+  virtual const char *type_name() const {return "fltk::Button";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::Button(x,y,w,h,"button");}
+  WidgetType *_make() {return new ButtonType();}
+  int is_button() const {return 1;}
+  int pixmapID() { return 2; }
+};
+
+class ReturnButtonType : public ButtonType {
+ public:
+  virtual const char *type_name() const {return "fltk::ReturnButton";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::ReturnButton(x,y,w,h,0);}
+  WidgetType *_make() {return new ReturnButtonType();}
+  int pixmapID() { return 23; }
+};
+
+class RepeatButtonType : public WidgetType {
+ public:
+  virtual const char *type_name() const {return "fltk::RepeatButton";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::RepeatButton(x,y,w,h,0);}
+  WidgetType *_make() {return new RepeatButtonType();}
+  int pixmapID() { return 25; }
+};
+
+class CheckButtonType : public ButtonType {
+ public:
+  virtual const char *type_name() const {return "fltk::CheckButton";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::CheckButton(x,y,w,h,"button");}
+  WidgetType *_make() {return new CheckButtonType();}
+  int pixmapID() { return 3; }
+};
+
+class LightButtonType : public ButtonType {
+ public:
+  virtual const char *type_name() const {return "fltk::LightButton";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::LightButton(x,y,w,h,"button");}
+  WidgetType *_make() {return new LightButtonType();}
+  int pixmapID() { return 24; }
+};
+
+class RadioButtonType : public ButtonType {
+ public:
+  virtual const char *type_name() const {return "fltk::RadioButton";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::RadioButton(x,y,w,h,"button");}
+  WidgetType *_make() {return new RadioButtonType();}
+  int pixmapID() { return  4; }
+};
+
+extern const Enumeration input_type_menu[] ;
+
+class InputType : public WidgetType {
+  int is_input() const {return 1;}
+  const Enumeration *subtypes() const {return input_type_menu;}
+ public:
+  virtual const char *type_name() const {return "fltk::Input";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    fltk::Input *o = new fltk::Input(x,y,w,h,"input:");
+    o->value("Text Input");
+    return o;
+  }
+  WidgetType *_make() {return new InputType();}
+  int pixmapID() { return  14; }
+};
+
+class PackType : public GroupType {
+  //const Enumeration *subtypes() const {return pack_type_menu;}
+ public:
+  virtual const char *type_name() const {return "fltk::PackedGroup";}
+  WidgetType *_make() {return new PackType();}
+  int pixmapID() { return  22; }
+};
+
+class TabsType : public GroupType {
+ public:
+  virtual const char *type_name() const {return "fltk::TabGroup";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    fltk::TabGroup *g = new fltk::TabGroup(x,y,w,h); g->resizable(0);
+    fltk::Group::current(0); return g;}
+  WidgetType *_make() {return new TabsType();}
+  FluidType* click_test(int,int);
+  void add_child(FluidType*, FluidType*);
+  void remove_child(FluidType*);
+  // live mode functionalities
+  fltk::Widget* enter_live_mode(int top);
+  int pixmapID() { return 13; }
+};
+
+class WizardGroupType : public GroupType {
+ public:
+  virtual const char *type_name() const {return "fltk::WizardGroup";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::WizardGroup(x,y,w,h);}
+  WidgetType *_make() {return new WizardGroupType();}
+  // live mode functionalities
+  int pixmapID() { return 21; }
+};
+
+extern const Enumeration scroll_type_menu[];
+
+class ScrollType : public GroupType {
+  const Enumeration *subtypes() const {return scroll_type_menu;}
+ public:
+  virtual const char *type_name() const {return "fltk::ScrollGroup";}
+  WidgetType *_make() {return new ScrollType();}
+  int pixmapID() { return 19; }
+};
+
+class TileType : public GroupType {
+ public:
+  virtual const char *type_name() const {return "fltk::TiledGroup";}
+  WidgetType *_make() {return new TileType();}
+  int pixmapID() { return 20; }
+};
+
+class MenuType : public GroupType {
+ public:
+  int is_group() const {return 0;}
+  MenuType() : GroupType() {}
+  ~MenuType() {}
+  FluidType* click_test(int x, int y);
+  int pixmapID() { return -1; }
+};
+
+extern const Enumeration button_type_menu[];
+
+class PopupMenuType : public MenuType {
+  const Enumeration *subtypes() const {return button_type_menu;}
+ public:
+  virtual const char *type_name() const {return "fltk::PopupMenu";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::PopupMenu(x,y,w,h,"menu");}
+  WidgetType *_make() {return new PopupMenuType();}
+  int pixmapID() { return 26; }
+};
+
+extern const Enumeration input_browser_type_menu[];
+
+class InputBrowserType : public MenuType {
+  int is_input_browser() const {return 1;}
+  const Enumeration *subtypes() const {return input_browser_type_menu;}
+ public:
+  virtual const char *type_name() const {return "fltk::InputBrowser";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::InputBrowser(x,y,w,h);
+  }
+  WidgetType *_make() {return new InputBrowserType();}
+  int pixmapID() { return 15; }
+};
+
+extern const Enumeration browser_type_menu[];
+
+class FileBrowserType : public WidgetType {
+  const Enumeration *subtypes() const {return browser_type_menu;}
+ public:
+  virtual const char *type_name() const {return "fltk::FileBrowser";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::FileBrowser(x,y,w,h);
+  }
+  WidgetType *_make() {return new FileBrowserType();}
+  int pixmapID() { return 33; }
+};
+
+class MenuBarType : public MenuType {
+ public:
+  virtual const char *type_name() const {return "fltk::MenuBar";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::MenuBar(x,y,w,h);}
+  WidgetType *_make() {return new MenuBarType();}
+  int pixmapID() { return 17; }
+};
+
+extern const Enumeration item_type_menu[];
+class ItemType : public WidgetType {
+ public:
+  const Enumeration* subtypes() const {return item_type_menu;}
+  const char* type_name() const {return "fltk::Item";}
+  int is_menu_item() const {return 1;}
+  int is_button() const {return 1;} // this gets shortcut to work
+  fltk::Widget* widget(int x,int y,int w,int h);
+  WidgetType *_make() {return new ItemType();}
+  int pixmapID() { return 16; }
+};
+
+class DividerType : public WidgetType {
+ public:
+  const Enumeration* subtypes() const {return 0;}
+  const char* type_name() const {return "fltk::Divider";}
+  int is_menu_item() const {return 1;}
+  fltk::Widget* widget(int x,int y,int w,int h) { return new fltk::Divider; }
+  WidgetType *_make() {return new DividerType();}
+  int pixmapID() { return 16; }
+};
+
+class SubmenuType : public GroupType {
+ public:
+  const Enumeration* subtypes() const {return 0;}
+  const char* type_name() const {return "fltk::ItemGroup";}
+  int is_menu_item() const {return 1;}
+  fltk::Widget* widget(int x,int y,int w,int h);
+  WidgetType *_make() {return new SubmenuType();}
+  int pixmapID() { return 18; }
+};
+
+class ChoiceType : public MenuType {
+ public:
+  virtual const char *type_name() const {return "fltk::Choice";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::Choice(x,y,w,h,"choice:");
+  }
+  WidgetType *_make() {return new ChoiceType();}
+  int pixmapID() { return 15; }
+};
+
+class BrowserType : public MenuType {
+  const Enumeration *subtypes() const {return browser_type_menu;}
+ public:
+  virtual const char *type_name() const {return "fltk::Browser";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::Browser(x,y,w,h);
+  }
+  WidgetType *_make() {return new BrowserType();}
+  int pixmapID() { return 31; }
+};
+
+class ClockType : public WidgetType {
+ public:
+  virtual const char *type_name() const {return "fltk::Clock";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::Clock(x,y,w,h);}
+  WidgetType *_make() {return new ClockType();}
+  int pixmapID() { return 34; }
+};
+
+class AdjusterType : public WidgetType {
+  int is_valuator() const {return 1;}
+ public:
+  virtual const char *type_name() const {return "fltk::Adjuster";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::Adjuster(x,y,w,h);}
+  WidgetType *_make() {return new AdjusterType();}
+  int pixmapID() { return 40; }
+};
+
+extern const Enumeration dial_type_menu[];
+
+class DialType : public WidgetType {
+  const Enumeration *subtypes() const {return dial_type_menu;}
+  int is_valuator() const {return 1;}
+ public:
+  virtual const char *type_name() const {return "fltk::Dial";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::Dial(x,y,w,h);}
+  WidgetType *_make() {return new DialType();}
+  int pixmapID() { return 42; }
+};
+
+class ThumbWheelType : public WidgetType {
+  int is_valuator() const {return 1;}
+ public:
+  virtual const char *type_name() const {return "fltk::ThumbWheel";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::ThumbWheel(x,y,w,h);
+  }
+  WidgetType *_make() {return new ThumbWheelType();}
+  int pixmapID() { return 43; }
+};
+
+class TextDisplayType : public WidgetType {
+  int textstuff(int w, fltk::Font* f, int& s, fltk::Color c);
+ public:
+  virtual void ideal_size(int &w, int &h) {
+    fltk::TextDisplay *myo = (fltk::TextDisplay *)o;
+    fltk::setfont(myo->textfont(), myo->textsize());
+    h -= o->box()->dh();
+    w -= o->box()->dw();
+    int ww = (int) fltk::getwidth("m");
+    w = ((w + ww - 1) / ww) * ww + o->box()->dw();
+    h = (int) (((h + fltk::getascent() - 1) / fltk::getascent() ) * fltk::getascent() +
+               o->box()->dh());
+    if (h < 30) h = 30;
+    if (w < 50) w = 50;
+  }
+  virtual const char *type_name() const {return "fltk::TextDisplay";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    fltk::TextDisplay *myo = new fltk::TextDisplay(x,y,w,h);
+    myo->box(fltk::DOWN_BOX);
+    return myo;
+  }
+  WidgetType *_make() {return new TextDisplayType();}
+  int pixmapID() { return 28; }
+};
+
+class TextEditorType : public WidgetType {
+  int textstuff(int w, fltk::Font* f, int& s, fltk::Color c);
+ public:
+  virtual void ideal_size(int &w, int &h) {
+    fltk::TextEditor *myo = (fltk::TextEditor *)o;
+    fltk::setfont(myo->textfont(), myo->textsize());
+    h -= o->box()->dh();
+    w -= o->box()->dw();
+    int ww = (int)fltk::getwidth("m");
+    w = ((w + ww - 1) / ww) * ww + o->box()->dw();
+    h = (int) (((h + fltk::getascent() - 1) / fltk::getascent()) * fltk::getascent() +
+               o->box()->dh());
+    if (h < 30) h = 30;
+    if (w < 50) w = 50;
+  }
+  virtual const char *type_name() const {return "fltk::TextEditor";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    fltk::TextEditor *myo = new fltk::TextEditor(x,y,w,h);
+    return myo;
+  }
+  WidgetType *_make() {return new TextEditorType();}
+  int pixmapID() { return 29; }
+};
+
+class FileInputType: public WidgetType {
+  fltk::Item *subtypes() {return 0;}
+  int textstuff(int w,fltk::Font* f, int& s, fltk::Color c);
+ public:
+  virtual void ideal_size(int &w, int &h) {
+    fltk::FileInput *myo = (fltk::FileInput *)o;
+    fltk::setfont(myo->textfont(), myo->textsize());
+    h = (int) (fltk::getdescent() + myo->textsize() + 4);
+    w -= o->box()->dw();
+    int ww = (int)fltk::getwidth("m",1);
+    w = ((w + ww - 1) / ww) * ww + o->box()->dw();
+    if (h < 20) h = 20;
+    if (w < 50) w = 50;
+  }
+  virtual const char *type_name() const {return "fltk::FileInput";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    fltk::FileInput *myo = new fltk::FileInput(x,y,w,h,"file:");
+    myo->value("/now/is/the/time/for/a/filename.ext");
+    return myo;
+  }
+  WidgetType *_make() {      return new FileInputType();  }
+  int pixmapID() { return 30; }
+};
+
+class HelpViewType : public WidgetType {
+ public:
+  void ideal_size(int &w, int &h) {
+    fltk::HelpView *myo = (fltk::HelpView *)o;
+    fltk::setfont(myo->textfont(), (float) myo->textsize());
+    h -= o->box()->dh();
+    w -= o->box()->dw();
+    int ww = (int) fltk::getwidth("m");
+    w = ((w + ww - 1) / ww) * ww + o->box()->dw();
+    h = (int) (((h + fltk::getascent() - 1) / fltk::getascent() ) * fltk::getascent() +
+               o->box()->dh());
+    if (h < 30) h = 30;
+    if (w < 50) w = 50;
+  }
+  const char *type_name() const {return "fltk::HelpView";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    fltk::HelpView *myo = new fltk::HelpView(x,y,w,h);
+    myo->value("<HTML><BODY><H1>HelpView Widget</H1>"
+               "<P>This is a HelpView widget.</P></BODY></HTML>");
+    return myo;}
+  WidgetType *_make() {return new HelpViewType();}
+  int pixmapID() { return 35; }
+};
+
+class ProgressBarType : public WidgetType {
+ public:
+  virtual const char *type_name() const { return "fltk::ProgressBar"; }
+  fltk::Widget* widget(int x, int y, int w, int h) {
+    return new fltk::ProgressBar(x, y, w, h);
+  }
+  WidgetType *_make() { return new ProgressBarType(); }
+  int pixmapID() { return 36; }
+};
+
+extern const Enumeration slider_type_menu[];
+
+class SliderType : public WidgetType {
+  const Enumeration *subtypes() const {return slider_type_menu;}
+  int is_valuator() const {return 2;}
+ public:
+  virtual const char *type_name() const {return "fltk::Slider";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::Slider(x,y,w,h);
+  }
+  WidgetType *_make() {return new SliderType();}
+  int pixmapID() { return 37; }
+};
+
+class ScrollbarType : public SliderType {
+  const Enumeration *subtypes() const {return 0;}
+ public:
+  virtual const char *type_name() const {return "fltk::Scrollbar";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::Scrollbar(x,y,w,h);
+  }
+  WidgetType *_make() {return new ScrollbarType();}
+  int pixmapID() { return 19; }
+};
+
+extern const Enumeration output_type_menu[];
+class OutputType : public InputType {
+  const Enumeration *subtypes() const {return output_type_menu;}
+ public:
+  virtual const char *type_name() const {return "fltk::Output";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    fltk::Output *o = new fltk::Output(x,y,w,h,"output:");
+    o->value("Text Output");
+    return o;
+  }
+  WidgetType *_make() {return new OutputType();}
+};
+
+class ValueInputType : public WidgetType {
+ public:
+  virtual const char *type_name() const {return "fltk::ValueInput";}
+  int is_valuator() const {return 1;}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::ValueInput(x,y,w,h,"value:");
+  }
+  WidgetType *_make() {return new ValueInputType();}
+  int pixmapID() { return 44; }
+};
+
+class ValueOutputType : public WidgetType {
+ public:
+  virtual const char *type_name() const {return "fltk::ValueOutput";}
+  int is_valuator() const {return 1;}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::ValueOutput(x,y,w,h,"value:");
+  }
+  WidgetType *_make() {return new ValueOutputType();}
+  int pixmapID() { return 45; }
+};
+
+class ValueSliderType : public SliderType {
+ public:
+  virtual const char *type_name() const {return "fltk::ValueSlider";}
+  fltk::Widget* widget(int x,int y,int w,int h) {
+    return new fltk::ValueSlider(x,y,w,h);
+  }
+  WidgetType *_make() {return new ValueSliderType();}
+  int pixmapID() { return 39; }
+};
+
+class BarGroupType : public WidgetType {
+ public:
+  virtual const char *type_name() const { return "fltk::BarGroup"; }
+  fltk::Widget* widget(int x, int y, int w, int h) {
+    return new fltk::BarGroup(x, y, w, h);
+  }
+  WidgetType *_make() { return new BarGroupType(); }
+  int pixmapID() { return 17; }
+};
+
+class StatusBarGroupType : public WidgetType {
+ public:
+  virtual const char *type_name() const { return "fltk::StatusBarGroup"; }
+  fltk::Widget* widget(int x, int y, int w, int h) {
+    return new fltk::StatusBarGroup(x, y, w, h);
+  }
+  WidgetType *_make() { return new StatusBarGroupType(); }
+  int pixmapID() { return 5; } // no nice bitmap yet use the WidgetType one
+};
+
+#endif
+// End of "$Id"

Added: branches/branch-3.0-2011/fluid2/WindowType.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/WindowType.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/WindowType.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,805 @@
+//
+// "$Id: WindowType.cxx 7513 2010-04-15 17:19:27Z spitzak $"
+//
+// Window type code for the Fast Light Tool Kit (FLTK).
+//
+// The widget describing an fltk::Window.  This is also all the code
+// for interacting with the overlay, which allows the user to
+// select, move, and resize the children 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".
+//
+
+#include <fltk/events.h>
+#include <fltk/damage.h>
+#include <fltk/Window.h>
+#include <fltk/ask.h>
+#include <fltk/draw.h>
+#include <fltk/Box.h>
+#include <fltk/layout.h>
+#include <fltk/Preferences.h>
+#include <fltk/MenuBuild.h>
+
+#include <math.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "PrefsData.h"
+#include "Enumeration.h"
+#include "WindowType.h"
+#include "alignment_panel.h"
+#include "widget_panel.h"
+#include "fluid_menus.h"
+#include "undo.h"
+
+using namespace fltk;
+
+bool include_H_from_C = true;
+
+
+void alignment_cb(fltk::Input *i, long v) {
+  int n = (int)strtol(i->value(),0,0);
+  if (n < 0) n = 0;
+  switch (v) {
+  case 1: prefs.gridx(n); break;
+  case 2: prefs.gridy(n); break;
+  case 3: prefs.snap(n); break;
+  }
+}
+
+extern const char* header_file_name;
+extern const char* code_file_name;
+
+int  read_alignment_prefs();
+
+void set_preferences_window(){
+    if (!preferences_window) {
+	make_preferences_window();
+    }
+  read_alignment_prefs();
+  include_H_from_C_button->value(include_H_from_C);
+  header_file_input->value(header_file_name);
+  code_file_input->value(code_file_name);
+  char buf[128];
+  sprintf(buf,"%d",prefs.gridx()); horizontal_input->value(buf);
+  sprintf(buf,"%d",prefs.gridy()); vertical_input->value(buf);
+  sprintf(buf,"%d",prefs.snap()); snap_input->value(buf);
+  float s = WidgetType::default_size;
+  if (s<=8) def_widget_size[0]->setonly();
+  else if (s<=11) def_widget_size[1]->setonly();
+  else if (s<=14) def_widget_size[2]->setonly();
+  else if (s<=18) def_widget_size[3]->setonly();
+  else if (s<=24) def_widget_size[4]->setonly();
+  else if (s<=32) def_widget_size[5]->setonly();
+}
+
+void show_preferences_cb(Widget *, void * tabnum) {
+  set_preferences_window();
+  int n = (int) (long) tabnum;
+  if (n>=0 && n<3)
+      pref_tabs->value(n);
+  preferences_window->show();
+}
+
+void header_input_cb(fltk::Input* i, void*) {
+  header_file_name = i->value();
+}
+void code_input_cb(fltk::Input* i, void*) {
+  code_file_name = i->value();
+}
+
+void include_H_from_C_button_cb(fltk::CheckButton* b, void*) {
+  include_H_from_C = b->value();
+}
+
+////////////////////////////////////////////////////////////////
+
+const char* WindowType::type_name() const {return "fltk::Window";}
+
+static const Enumeration window_type_menu[] = {
+  {"Single", 0, (void*)fltk::Widget::WINDOW_TYPE},
+  {"Double", 0, (void*)(fltk::Widget::WINDOW_TYPE+1), "fltk::DoubleBufferWindow"},
+  {0}};
+
+const Enumeration* WindowType::subtypes() const {return window_type_menu;}
+
+bool overlays_invisible;
+
+// The following fltk::Widget is used to simulate the windows.  It has
+// an overlay for the fluid ui, and special-cases the fltk::NO_BOX.
+
+class Overlay_Window : public fltk::Window {
+  void layout();
+  void draw();
+  void draw_overlay();
+public:
+  WindowType *window;
+  int handle(int);
+  void resize(int X,int Y,int W,int H);
+  Overlay_Window(int w,int h) : fltk::Window(w,h) {fltk::Group::current(0);}
+};
+void Overlay_Window::layout() {
+  // Don't rearrange children unless use is resizing the window itself:
+  if (!(layout_damage()&fltk::LAYOUT_XYWH)) init_sizes();
+  Window::layout();
+}
+void Overlay_Window::draw() {
+  const int CHECKSIZE = 8;
+  // see if box is clear or a frame or rounded:
+  if ((damage()&fltk::DAMAGE_ALL) && !box()->fills_rectangle()) {
+    // if so, draw checkerboard so user can see what areas are clear:
+    for (int y = 0; y < h(); y += CHECKSIZE) 
+      for (int x = 0; x < w(); x += CHECKSIZE) {
+	fltk::setcolor(((y/(2*CHECKSIZE))&1) != ((x/(2*CHECKSIZE))&1) ?
+		 fltk::WHITE : fltk::BLACK);
+	fltk::fillrect(x,y,CHECKSIZE,CHECKSIZE);
+      }
+  }
+#ifdef __sgi
+  fltk::Window::draw();
+#else
+  Window::draw();
+#endif
+}
+
+void Overlay_Window::draw_overlay() {
+  window->draw_overlay();
+}
+
+// Update the XYWH values in the widget panel...
+static void update_xywh() {
+  if (current_widget && current_widget->is_widget()) {
+    Undo::checkpoint();
+    Widget& c = *((WidgetType*) current_widget)->o;
+    if (widget_x->value()!=c.x()) {widget_x->value(c.x());}
+    if (widget_y->value()!=c.y()) {widget_y->value(c.y());}
+    if (widget_w->value()!=c.w()) {widget_w->value(c.w());}
+    if (widget_h->value()!=c.h()) {widget_h->value(c.h());}
+  }
+
+}
+
+// Resize from window manager...
+void Overlay_Window::resize(int X,int Y,int W,int H) {
+  if (X==x() && Y==y() && W==w() && H==h()) return;
+  Undo::checkpoint();
+  Widget* t = resizable(); resizable(0);
+  Overlay_Window::resize(X,Y,W,H);
+  resizable(t);
+  update_xywh();
+}
+int Overlay_Window::handle(int e) {
+    switch(e) {
+    case SHORTCUT: // redirect the key pressed to the Menu
+	if (Main_Menu->handle(e))
+	    return 1;
+	break;
+    default:
+	break;
+    }
+    return window->handle(e);
+}
+
+#include <fltk/StyleSet.h>
+extern fltk::StyleSet* fluid_style_set;
+extern fltk::StyleSet* style_set;
+
+void WindowType::make_fltk_window() {
+  Overlay_Window *w = new Overlay_Window(100,100);
+  w->window = this;
+  this->o = w;
+}
+
+FluidType *WindowType::make() {
+  FluidType *p = FluidType::current;
+  while (p && !p->is_code_block()) p = p->parent;
+  if (!p) {
+    fltk::message("Please select a function");
+    return 0;
+  }
+  style_set->make_current();
+  WindowType *o = new WindowType();
+  if (!this->o) {// template widget
+    this->o = new fltk::Window(100,100);
+    fltk::Group::current(0);
+  }
+  o->factory = this;
+  o->drag = 0;
+  o->numselected = 0;
+  o->make_fltk_window();
+  fluid_style_set->make_current();
+  o->add(p);
+  o->modal = false;
+  o->non_modal = false;
+  o->set_xy = false;
+  o->border = true;
+  return o;
+}
+
+WindowType::WindowType() {
+  sr_min_w = sr_min_h = sr_max_w = sr_max_h = 0; 
+  mx=my=x1=y1=bx=by=br=bt=dx=dy=drag=numselected=recalc=0;
+}
+
+void WindowType::add_child(FluidType* cc, FluidType* before) {
+  WidgetType* c = (WidgetType*)cc;
+  fltk::Widget* b = before ? ((WidgetType*)before)->o : 0;
+  ((fltk::Window*)o)->insert(*(c->o), b);
+  o->redraw();
+}
+
+void WindowType::remove_child(FluidType* cc) {
+  WidgetType* c = (WidgetType*)cc;
+  ((fltk::Window*)o)->remove(c->o);
+  o->redraw();
+}
+
+void WindowType::move_child(FluidType* cc, FluidType* before) {
+  WidgetType* c = (WidgetType*)cc;
+  ((fltk::Window*)o)->remove(c->o);
+  fltk::Widget* b = before ? ((WidgetType*)before)->o : 0;
+  ((fltk::Window*)o)->insert(*(c->o), b);
+  o->redraw();
+}
+
+////////////////////////////////////////////////////////////////
+
+// Double-click on window widget shows the window, or if already shown,
+// it shows the control panel.
+void WindowType::open() {
+  Overlay_Window *w = (Overlay_Window *)o;
+  if (w->shown()) {
+    w->show();
+    WidgetType::open();
+  } else {
+    w->size_range(10, 10, 0, 0, prefs.gridx(), prefs.gridy());
+    w->resizable(w);
+    w->show();
+  }
+}
+
+// control panel items:
+#include "widget_panel.h"
+
+void modal_cb(fltk::CheckButton* i, void* v) {
+  if (v == LOAD) {
+    if (!current_widget->is_window()) {i->hide(); return;}
+    i->show();
+    i->value(((WindowType *)current_widget)->modal);
+  } else {
+    ((WindowType *)current_widget)->modal = i->value();
+  }
+}
+
+void non_modal_cb(fltk::CheckButton* i, void* v) {
+  if (v == LOAD) {
+    if (!current_widget->is_window()) {i->hide(); return;}
+    i->show();
+    i->value(((WindowType *)current_widget)->non_modal);
+  } else {
+    ((WindowType *)current_widget)->non_modal = i->value();
+  }
+}
+
+void border_cb(fltk::CheckButton* i, void* v) {
+  if (v == LOAD) {
+    if (!current_widget->is_window()) {i->hide(); return;}
+    i->show();
+    i->value(((WindowType *)current_widget)->border);
+  } else {
+    ((WindowType *)current_widget)->border = i->value();
+  }
+}
+
+////////////////////////////////////////////////////////////////
+
+void WindowType::setlabel(const char *n) {
+  if (o) ((fltk::Window *)o)->label(n);
+}
+
+// make() is called on this widget when user picks window off New menu:
+
+// calculate actual move by moving mouse position (mx,my) to
+// nearest multiple of gridsize, and snap to original position
+void WindowType::newdx() {
+  int dx, dy;
+  if (fltk::event_state(fltk::ALT) || drag == BOX) {
+    dx = mx-x1;
+    dy = my-y1;
+  } else {
+    int dx0 = mx-x1;
+    int ix = (drag&RIGHT) ? br : bx;
+    dx = prefs.gridx ()? 
+	((ix+dx0+prefs.gridx()/2)/prefs.gridx())*prefs.gridx ()- ix : dx0;
+    if (dx0 > prefs.snap()) {
+      if (dx < 0) dx = 0;
+    } else if (dx0 < -prefs.snap()) {
+      if (dx > 0) dx = 0;
+    } else 
+      dx = 0;
+    int dy0 = my-y1;
+    int iy = (drag&BOTTOM) ? by : bt;
+    dy = prefs.gridy ()? ((iy+dy0+prefs.gridy()/2)/prefs.gridy())*prefs.gridy()- iy : dy0;
+    if (dy0 > prefs.snap()) {
+      if (dy < 0) dy = 0;
+    } else if (dy0 < - prefs.snap()) {
+      if (dy > 0) dy = 0;
+    } else 
+      dy = 0;
+  }
+  if (this->dx != dx || this->dy != dy) {
+    this->dx = dx; this->dy = dy;
+    ((Overlay_Window *)(this->o))->redraw_overlay();
+  }
+}
+
+// Move a widget according to dx and dy calculated above
+void WindowType::newposition(WidgetType *o,int &X,int &Y,int &R,int &T) {
+  X = o->o->x();
+  Y = o->o->y();
+  R = X+o->o->w();
+  T = Y+o->o->h();
+  if (!drag) return;
+  if (drag&DRAG) {
+    X += dx;
+    Y += dy;
+    R += dx;
+    T += dy;
+  } else {
+    int ox = 0; int oy = 0;
+    fltk::Group* p = o->o->parent();
+    while (p->parent()) {ox += p->x(); oy += p->y(); p = p->parent();}
+    if (drag&LEFT) {if (X+ox==bx) X += dx; else if (X<bx+dx-ox) X = bx+dx-ox;}
+    if (drag&BOTTOM) {if (Y+oy==by) Y += dy; else if (Y<by+dy-oy) Y = by+dy-oy;}
+    if (drag&RIGHT) {if (R+ox==br) R += dx; else if (R>br+dx-ox) R = br+dx-ox;}
+    if (drag&TOP) {if (T+oy==bt) T += dy; else if (T>bt+dx-oy) T = bt+dx-oy;}
+  }
+  if (R<X) {int n = X; X = R; R = n;}
+  if (T<Y) {int n = Y; Y = T; T = n;}
+}
+
+void WindowType::draw_overlay() {
+  if (recalc) {
+    bx = o->w(); by = o->h(); br = 0; bt = 0;
+    numselected = 0;
+    for (FluidType* q = first_child; q; q = q->walk(this)) {
+      if (q->selected() && q->is_widget() && !q->is_menu_item()) {
+	numselected++;
+	fltk::Widget* o = ((WidgetType*)q)->o;
+	int x = o->x(); int y = o->y();
+	fltk::Group* p = o->parent();
+	while (p->parent()) {x += p->x(); y += p->y(); p = p->parent();}
+	if (x < bx) bx = x;
+	if (y < by) by = y;
+	if (x+o->w() > br) br = x+o->w();
+	if (y+o->h() > bt) bt = y+o->h();
+      }
+    }
+    recalc = 0;
+  }
+  fltk::setcolor(fltk::RED);
+  if (drag==BOX && (x1 != mx || y1 != my)) {
+    int x = x1; int r = mx; if (x > r) {x = mx; r = x1;}
+    int y = y1; int b = my; if (y > b) {y = my; b = y1;}
+    fltk::strokerect(x,y,r-x,b-y);
+  }
+  if (overlays_invisible && !drag) return;
+  if (selected()) fltk::strokerect(0,0,o->w(),o->h());
+  if (!numselected) return;
+  int bx,by,br,bt;
+  bx = o->w(); by = o->h(); br = 0; bt = 0;
+  for (FluidType* q = first_child; q; q = q->walk(this)) {
+    if (q->selected() && q->is_widget() && !q->is_menu_item()) {
+      int x,y,r,t;
+      newposition((WidgetType*)q,x,y,r,t);
+      fltk::Widget* o = ((WidgetType*)q)->o;
+      fltk::Group* p = o->parent();
+      while (p->parent()) {
+	x += p->x(); r += p->x();
+	y += p->y(); t += p->y();
+	p = p->parent();
+      }
+      int hidden = (!o->visible_r());
+      if (hidden) fltk::line_style(fltk::DASH);
+      fltk::strokerect(x,y,r-x,t-y);
+      if (x < bx) bx = x;
+      if (y < by) by = y;
+      if (r > br) br = r;
+      if (t > bt) bt = t;
+      if (hidden) fltk::line_style(fltk::SOLID);
+    }
+  }
+  if (selected()) return;
+  if (numselected>1) fltk::strokerect(bx,by,br-bx,bt-by);
+  fltk::fillrect(bx,by,5,5);
+  fltk::fillrect(br-5,by,5,5);
+  fltk::fillrect(br-5,bt-5,5,5);
+  fltk::fillrect(bx,bt-5,5,5);
+}
+
+// Calculate new bounding box of selected widgets:
+void WindowType::fix_overlay() {
+  recalc = 1;
+  ((Overlay_Window *)(this->o))->redraw_overlay();
+}
+
+// do that for every window (when selected set changes):
+void redraw_overlays() {
+  for (FluidType *o=FluidType::first; o; o=o->walk())
+    if (o->is_window()) ((WindowType*)o)->fix_overlay();
+}
+
+#include <fltk/MenuBar.h>
+extern fltk::MenuBar* menubar;
+
+void toggle_overlays(fltk::Widget *,void *) {
+  ishow_overlay->state(overlays_invisible);
+  if (overlaybutton) overlaybutton->value(overlays_invisible);
+  overlays_invisible = !overlays_invisible;
+  for (FluidType *o=FluidType::first; o; o=o->walk())
+    if (o->is_window()) {
+      WidgetType* w = (WidgetType*)o;
+      ((Overlay_Window*)(w->o))->redraw_overlay();
+    }
+}
+
+extern void select(FluidType *,int);
+extern void select_only(FluidType *);
+extern FluidType* in_this_only;
+extern void fix_group_size(FluidType *t);
+
+// move the selected children according to current dx,dy,drag state:
+void WindowType::moveallchildren()
+{
+  Undo::checkpoint();
+  FluidType *i;
+  bool first = true;
+  for (i = first_child; i;) {
+    if (i->selected() && i->is_widget() && !i->is_menu_item()) {
+      WidgetType* o = (WidgetType*)i;
+      int x,y,r,t;
+      newposition(o,x,y,r,t);
+      o->o->resize(x,y,r-x,t-y);
+      if (first && (drag != DRAG)) {
+	first = false;
+	if (r-x > t-y) o->o->set_horizontal();
+	else if (r-x < t-y) o->o->set_vertical();
+      }
+      i = i->next_brother;
+    } else {
+      i = i->walk(this);
+    }
+  }
+  for (i = first_child; i; i = i->walk(this))
+    fix_group_size(i);
+  o->redraw();
+  recalc = 1;
+  ((Overlay_Window *)(this->o))->init_sizes();
+  modflag = 1;
+  dx = dy = 0;
+  update_xywh();
+}
+
+// find the innermost item clicked on:
+WidgetType* WindowType::clicked_widget() {
+  WidgetType* selection = this;
+  int x = fltk::event_x(); int y = fltk::event_y();
+  for (;;) {
+    WidgetType* inner_selection = 0;
+    for (FluidType* i = selection->first_child; i; i = i->next_brother) {
+      if (i->is_widget() && !i->is_menu_item()) {
+	WidgetType* o = (WidgetType*)i;
+	fltk::Widget* w = o->o;
+	if (w->visible_r() && w->Rectangle::contains(x,y))
+	  inner_selection = o;
+      }
+    }
+    if (inner_selection) {
+      selection = inner_selection;
+      fltk::Widget* w = inner_selection->o;
+      x -= w->x();
+      y -= w->y();
+    } else {
+      break;
+    }
+  }
+  return selection;
+}
+
+int WindowType::handle(int event) {
+  static FluidType* selection;
+  switch (event) {
+  case fltk::PUSH:
+    x1 = mx = fltk::event_x();
+    y1 = my = fltk::event_y();
+    drag = 0;
+    // test for popup menu:
+    if (fltk::event_button() >= 3) {
+      in_this_only = this; // modifies how some menu items work.
+      newMenu->popup(fltk::Rectangle(mx,my,0,0),"New");
+      in_this_only = 0;
+      return 1;
+    }
+    selection = clicked_widget();
+    // see if user grabs edges of selected region:
+    if (numselected && !(fltk::event_state(fltk::SHIFT)) &&
+	mx<=br+prefs.snap() && mx>=bx-prefs.snap() && 
+	my<=bt+prefs.snap() && my>=by-prefs.snap()) {
+      int snap1 = prefs.snap()>5 ? prefs.snap () : 5;
+      int w1 = (br-bx)/4; if (w1 > snap1) w1 = snap1;
+      if (mx>=br-w1) drag |= RIGHT;
+      else if (mx<bx+w1) drag |= LEFT;
+      w1 = (bt-by)/4; if (w1 > snap1) w1 = snap1;
+      if (my<=by+w1) drag |= BOTTOM;
+      else if (my>bt-w1) drag |= TOP;
+      if (!drag) drag = DRAG;
+    }
+    // do object-specific selection of other objects:
+    {FluidType* t = selection->click_test(mx, my);
+    if (t) {
+      //if (t == selection) return 1; // indicates mouse eaten w/o change
+      if (fltk::event_state(fltk::SHIFT)) {
+	fltk::event_is_click(0);
+	select(t, !t->selected());
+      } else {
+	select_only(t);
+	if (t->is_menu_item()) t->open();
+      }
+      selection = t;
+      drag = 0;
+    } else {
+      if (!drag) drag = BOX; // if all else fails, start a new selection region
+    }}
+    return 1;
+  case fltk::DRAG:
+    if (!drag) return 0;
+    mx = fltk::event_x();
+    my = fltk::event_y();
+    newdx();
+    return 1;
+  case fltk::RELEASE:
+    if (!drag) return 0;
+    mx = fltk::event_x();
+    my = fltk::event_y();
+    newdx();
+    if (drag != BOX && (dx || dy || !fltk::event_is_click())) {
+      if (dx || dy) moveallchildren();
+    } else if ((fltk::event_clicks() || fltk::event_state(fltk::CTRL))) {
+      WidgetType::open();
+    } else {
+      if (mx<x1) {int t = x1; x1 = mx; mx = t;}
+      if (my<y1) {int t = y1; y1 = my; my = t;}
+      int n = 0;
+      int toggle = fltk::event_state(fltk::SHIFT);
+      if (toggle) fltk::event_is_click(0);
+
+      // select everything in box:
+      for (FluidType* i = first_child; i; i = i->walk(this)) {
+	if (i->is_widget() && !i->is_menu_item()) {
+	  fltk::Widget* o = ((WidgetType*)i)->o;
+	  int x = o->x(); int y = o->y();
+	  fltk::Group* p = o->parent(); if (!p->visible_r()) continue;
+	  while (p->parent()) {x += p->x(); y += p->y(); p = p->parent();}
+	  if (x >= x1 && y > y1 && x+o->w() < mx && y+o->h() < my) {
+	    if (toggle) select(i, !i->selected());
+	    else if (!n) select_only(i);
+	    else select(i, 1);
+	    n++;
+	  }
+	}
+      }
+
+      // if nothing in box, select what was clicked on:
+      if (!n) {
+	// find the innermost item clicked on:
+	selection = clicked_widget();
+	if (toggle) select(selection, !selection->selected());
+	else select_only(selection);
+      }
+      if (overlays_invisible) toggle_overlays(0,0);
+      ((Overlay_Window *)(this->o))->redraw_overlay();
+    }
+    drag = 0;
+    if (widget_x)
+      {
+	x_cb (widget_x, LOAD);
+	y_cb (widget_y, LOAD);
+	width_cb (widget_w, LOAD);
+	height_cb (widget_h, LOAD);
+      }
+    return 1;
+
+  case fltk::FOCUS:
+  case fltk::UNFOCUS:
+    return 1;
+
+  case fltk::KEY: {
+
+    switch (fltk::event_key()) {
+
+    case fltk::EscapeKey:
+      ((fltk::Window*)o)->hide();
+      return 1;
+
+    case fltk::TabKey: {
+      int backtab = (fltk::event_state(fltk::SHIFT));
+      // see if the current item is in this window:
+      FluidType *i = FluidType::current;
+      while (i && i->parent != this) i = i->parent;
+      if (i) {
+	i = FluidType::current;
+	for (;;) {
+	  if (backtab) {
+	    if (i->previous_brother) {
+	      i = i->previous_brother;
+	      while (i->first_child) {
+		i = i->first_child;
+		while (i->next_brother) i = i->next_brother;
+	      }
+	    } else {
+	      i = i->parent;
+	      if (i == this) i = 0;
+	    }
+	  } else i = i->walk(this);
+	  if (!i) break;
+	  if (i->is_widget() && !i->is_menu_item() &&
+	      ((WidgetType*)i)->o->parent()->visible_r()) break;
+	}
+      }
+      if (!i) i = first_child;
+      select_only(i);
+      return 1;}
+
+    case fltk::LeftKey:  dx = -1; dy = 0; goto ARROW;
+    case fltk::RightKey: dx = +1; dy = 0; goto ARROW;
+    case fltk::UpKey:    dx = 0; dy = -1; goto ARROW;
+    case fltk::DownKey:  dx = 0; dy = +1; goto ARROW;
+    ARROW:
+      // for some reason BOTTOM/TOP are swapped... should be fixed...
+      drag = (fltk::event_state(fltk::SHIFT)) ? (RIGHT|TOP) : DRAG;
+      if (fltk::event_state(fltk::CTRL)) {dx *= prefs.gridx(); dy *= prefs.gridy();}
+      moveallchildren();
+      drag = 0;
+      return 1;
+
+    case 'o':
+      toggle_overlays(0, 0);
+      break;
+
+    default:
+      return 0;
+    }}
+
+  case fltk::SHORTCUT: {
+    in_this_only = this; // modifies how some menu items work.
+    bool found = Main_Menu->test_shortcut();
+    in_this_only = 0;
+    return found != false;}
+
+  default:
+#ifdef _WIN32
+    return ((Overlay_Window *)o)->Window::handle(event);
+#else
+    return ((Overlay_Window *)o)->fltk::Window::handle(event);
+#endif
+  }
+}
+
+////////////////////////////////////////////////////////////////
+
+#include <stdio.h>
+#include <string.h>
+
+void WindowType::write_code() {
+  WidgetType::write_code1();
+  if (first_child) {
+    write_c("%so->begin();\n", indent());
+    for (FluidType* q = first_child; q; q = q->next_brother) q->write_code();
+    write_c("%so->end();\n", indent());
+  }
+  write_extra_code();
+  if (modal) write_c("%so->set_modal();\n", indent());
+  else if (non_modal) write_c("%so->set_non_modal();\n", indent());
+  if (!border) write_c("%so->clear_border();\n", indent());
+  if (((fltk::Window*)o)->resizable() == o)
+    write_c("%so->resizable(o);\n", indent());
+  write_block_close();
+}
+
+void WindowType::write_properties() {
+  WidgetType::write_properties();
+  if (modal) write_string("modal");
+  else if (non_modal) write_string("non_modal");
+  if (!border) write_string("noborder");
+  if (o->visible()) write_string("visible");
+}
+
+extern int pasteoffset;
+void WindowType::read_property(const char *c) {
+  if (!strcmp(c,"modal")) {
+    modal = 1;
+  } else if (!strcmp(c,"non_modal")) {
+    non_modal = 1;
+  } else if (!strcmp(c, "visible")) {
+    if (fltk::Window::first()) open(); // only if we are using user interface
+  } else if (!strcmp(c,"noborder")) {
+    border = 0;
+  } else if (!strcmp(c,"xclass")) {
+    // This old data is ignored, mostly because it only does anything on X.
+    // It may be a good idea to turn this into w->xclass(xyz) in the "extra code"
+    // so that compatability is kept
+  } else if (!strcmp(c,"xywh")) {
+    WidgetType::read_property(c);
+    pasteoffset = 0; // make it not apply to contents
+  } else {
+    WidgetType::read_property(c);
+  }
+}
+
+int WindowType::read_fdesign(const char* name, const char* value) {
+  int x;
+  o->box(fltk::NO_BOX); // because fdesign always puts an fltk::Box next
+  if (!strcmp(name,"Width")) {
+    if (sscanf(value,"%d",&x) == 1) o->resize(x,o->h());
+  } else if (!strcmp(name,"Height")) {
+    if (sscanf(value,"%d",&x) == 1) o->resize(o->w(),x);
+  } else if (!strcmp(name,"NumberofWidgets")) {
+    return 1; // we can figure out count from file
+  } else if (!strcmp(name,"border")) {
+    if (sscanf(value,"%d",&x) == 1) border = x!=0;
+  } else if (!strcmp(name,"title")) {
+    label(value);
+  } else {
+    return WidgetType::read_fdesign(name,value);
+  }
+  return 1;
+}
+
+////////////////////////////////////////////////////////////////
+// live mode support
+
+Widget *WindowType::enter_live_mode(int top) {
+  Window *win = new Window(o->x(), o->y(), o->w(), o->h());
+  live_widget = win;
+  win->begin();
+  if (live_widget) {
+    copy_properties();
+    for (FluidType* n = first_child; n; n = n->next_brother) {
+        n->enter_live_mode();
+    }
+    win->end();
+  }
+  return live_widget;
+}
+
+void WindowType::leave_live_mode() {
+}
+
+/**
+ * copy all properties from the edit widget to the live widget
+ */
+void WindowType::copy_properties() {
+  WidgetType::copy_properties();
+  /// \todo copy resizing constraints over
+}
+
+//
+// End of "$Id: WindowType.cxx 7513 2010-04-15 17:19:27Z spitzak $".
+//

Added: branches/branch-3.0-2011/fluid2/WindowType.h
===================================================================
--- branches/branch-3.0-2011/fluid2/WindowType.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/WindowType.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,72 @@
+// Represents an fltk::Window. Also lots of methods for the fluid ui
+// for selecting and moving widgets.
+
+#ifndef WindowType_h
+#define WindowType_h
+
+#include "GroupType.h"
+
+class FLUID_API WindowType : public GroupType {
+  const Enumeration* subtypes() const;
+
+  friend class Overlay_Window;
+  int mx,my;		// mouse position during dragging
+  int x1,y1;		// initial position of selection box
+  int bx,by,br,bt;	// bounding box of selection
+  int dx,dy;
+  int recalc;		// set by fix_overlay()
+public:
+  int drag;		// which parts of bbox are being moved
+  int numselected;	// number of children selected
+
+  enum {LEFT=1,RIGHT=2,BOTTOM=4,TOP=8,DRAG=16,BOX=32};
+  void draw_overlay();
+  void newdx();
+  void newposition(WidgetType *,int &x,int &y,int &w,int &h);
+  int handle(int);
+  virtual void setlabel(const char *);
+  void write_code();
+  WidgetType *_make() {return 0;} // we don't call this
+  fltk::Widget *widget(int,int,int,int) {return 0;}
+  void moveallchildren();
+  void move_children(FluidType*, int);
+  WidgetType* clicked_widget();
+
+protected:
+  void make_fltk_window();
+
+public:
+  WindowType();
+
+  bool modal, non_modal, border;
+
+  FluidType *make();
+  virtual const char *type_name() const;
+
+  void open();
+
+  void fix_overlay();	// update the bounding box, etc
+
+  virtual void write_properties();
+  virtual void read_property(const char *);
+  virtual int read_fdesign(const char*, const char*);
+
+  void add_child(FluidType*, FluidType*);
+  void move_child(FluidType*, FluidType*);
+  void remove_child(FluidType*);
+
+  int is_parent() const {return 1;}
+  int is_group() const {return 1;}
+  int is_window() const {return 1;}
+
+  // live mode functionalities
+  fltk::Widget *enter_live_mode(int top);
+  void leave_live_mode();
+  void copy_properties();
+  
+  int sr_min_w, sr_min_h, sr_max_w, sr_max_h; // size_range related
+
+  int pixmapID() { return 1; }
+};
+
+#endif

Added: branches/branch-3.0-2011/fluid2/about_panel.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/about_panel.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/about_panel.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,1850 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0100
+
+#include "about_panel.h"
+
+fltk::DoubleBufferWindow *about_panel=(fltk::DoubleBufferWindow *)0;
+
+fltk::Group *display_group=(fltk::Group *)0;
+
+#include <fltk/xpmImage.h>
+static const char *datas_fluid_about[] = {
+  "550 400 1404 2",
+  "  	c #000064",
+  ". 	c #0B0B6C",
+  "+ 	c #24247C",
+  "@ 	c #3B3B8C",
+  "# 	c #50509B",
+  "$ 	c #6464A9",
+  "% 	c #7676B6",
+  "& 	c #8282BF",
+  "* 	c #8C8CC5",
+  "= 	c #9595CB",
+  "- 	c #9D9DD1",
+  "; 	c #A6A6D7",
+  "> 	c #AEAEDB",
+  ", 	c #B1B1DE",
+  "' 	c #B2B2DF",
+  ") 	c #B4B4E1",
+  "! 	c #B5B5E2",
+  "~ 	c #B5B5E3",
+  "{ 	c #B6B6E4",
+  "] 	c #B7B7E5",
+  "^ 	c #B9B9E7",
+  "/ 	c #B9B9E8",
+  "( 	c #BABAE8",
+  "_ 	c #BCBCE9",
+  ": 	c #B9B9E6",
+  "< 	c #B8B8E5",
+  "[ 	c #B7B7E4",
+  "} 	c #B6B6E3",
+  "| 	c #B5B5E1",
+  "1 	c #B3B3DF",
+  "2 	c #ADADDB",
+  "3 	c #9F9FD2",
+  "4 	c #9898CD",
+  "5 	c #8E8EC6",
+  "6 	c #8686C1",
+  "7 	c #7D7DBB",
+  "8 	c #7373B4",
+  "9 	c #52529D",
+  "0 	c #3F3F90",
+  "a 	c #2D2D82",
+  "b 	c #181875",
+  "c 	c #030366",
+  "d 	c #111170",
+  "e 	c #3C3C8E",
+  "f 	c #6363A9",
+  "g 	c #8080BC",
+  "h 	c #9797CC",
+  "i 	c #ABABD9",
+  "j 	c #B8B8E4",
+  "k 	c #BFBFEB",
+  "l 	c #C5C5EF",
+  "m 	c #C9C9F4",
+  "n 	c #CACAF7",
+  "o 	c #CACAF8",
+  "p 	c #C8C8F9",
+  "q 	c #C8C8FA",
+  "r 	c #C9C9F9",
+  "s 	c #CBCBF9",
+  "t 	c #CBCBF7",
+  "u 	c #C7C7F1",
+  "v 	c #C1C1EC",
+  "w 	c #AAAADA",
+  "x 	c #9C9CD0",
+  "y 	c #8A8AC3",
+  "z 	c #7676B5",
+  "A 	c #5C5CA4",
+  "B 	c #3E3E8E",
+  "C 	c #1B1B77",
+  "D 	c #020265",
+  "E 	c #09096B",
+  "F 	c #363688",
+  "G 	c #5F5FA5",
+  "H 	c #8181BC",
+  "I 	c #B1B1E1",
+  "J 	c #C0C0ED",
+  "K 	c #C8C8F5",
+  "L 	c #C7C7F9",
+  "M 	c #C3C3EE",
+  "N 	c #BABAE7",
+  "O 	c #ACACDB",
+  "P 	c #9B9BCF",
+  "Q 	c #8686BF",
+  "R 	c #6E6EAE",
+  "S 	c #51519A",
+  "T 	c #303084",
+  "U 	c #060668",
+  "V 	c #6969B0",
+  "W 	c #C8C8F4",
+  "X 	c #BEBEEB",
+  "Y 	c #ADADDC",
+  "Z 	c #9393C9",
+  "` 	c #7272B1",
+  " .	c #4B4B94",
+  "..	c #1A1A74",
+  "+.	c #7171B9",
+  "@.	c #CDCDFA",
+  "#.	c #CCCCF5",
+  "$.	c #C3C3EC",
+  "%.	c #B3B3DE",
+  "&.	c #9C9CCD",
+  "*.	c #7C7CB5",
+  "=.	c #55559A",
+  "-.	c #2A2A7D",
+  ";.	c #0B0B6A",
+  ">.	c #050567",
+  ",.	c #2C2C7E",
+  "'.	c #585899",
+  ").	c #8484B4",
+  "!.	c #B1B1CF",
+  "~.	c #DDDDEA",
+  "{.	c #2E2E80",
+  "].	c #C2C2F5",
+  "^.	c #CACAFA",
+  "/.	c #D0D0FB",
+  "(.	c #D1D1F7",
+  "_.	c #C7C7ED",
+  ":.	c #B0B0DC",
+  "<.	c #9090C4",
+  "[.	c #6464A6",
+  "}.	c #303083",
+  "|.	c #040466",
+  "1.	c #0A0A6A",
+  "2.	c #45458D",
+  "3.	c #7A7AAE",
+  "4.	c #A6A6C8",
+  "5.	c #D3D3E4",
+  "6.	c #FAFAFB",
+  "7.	c #FFFFFF",
+  "8.	c #2F2F80",
+  "9.	c #CACAF9",
+  "0.	c #CBCBF6",
+  "a.	c #C0C0EC",
+  "b.	c #AAAADB",
+  "c.	c #6060A6",
+  "d.	c #2A2A81",
+  "e.	c #0D0D6B",
+  "f.	c #48488F",
+  "g.	c #8787B6",
+  "h.	c #C6C6DC",
+  "i.	c #C1C1F5",
+  "j.	c #0F0F6D",
+  "k.	c #4C4C92",
+  "l.	c #8B8BB8",
+  "m.	c #CACADE",
+  "n.	c #FCFCFD",
+  "o.	c #26267B",
+  "p.	c #0C0C6B",
+  "q.	c #12126E",
+  "r.	c #505094",
+  "s.	c #8F8FBA",
+  "t.	c #CECEE1",
+  "u.	c #FDFDFD",
+  "v.	c #BFBFD8",
+  "w.	c #E3E3ED",
+  "x.	c #BBBBD5",
+  "y.	c #9494BD",
+  "z.	c #6C6CA5",
+  "A.	c #44448D",
+  "B.	c #1C1C75",
+  "C.	c #010164",
+  "D.	c #161671",
+  "E.	c #545497",
+  "F.	c #9393BD",
+  "G.	c #D2D2E3",
+  "H.	c #FEFEFE",
+  "I.	c #C8C8F2",
+  "J.	c #BFBFEA",
+  "K.	c #BABAE6",
+  "L.	c #B2B2E0",
+  "M.	c #ACACDC",
+  "N.	c #A5A5D6",
+  "O.	c #9797CE",
+  "P.	c #9494CB",
+  "Q.	c #9292C9",
+  "R.	c #8F8FC7",
+  "S.	c #8E8EC5",
+  "T.	c #8B8BC3",
+  "U.	c #8989C1",
+  "V.	c #8686BE",
+  "W.	c #8383BC",
+  "X.	c #8383BB",
+  "Y.	c #8181BB",
+  "Z.	c #8585BB",
+  "`.	c #8989BE",
+  " +	c #8D8DC0",
+  ".+	c #9090C1",
+  "++	c #9494C4",
+  "@+	c #9898C6",
+  "#+	c #9B9BC9",
+  "$+	c #9E9ECC",
+  "%+	c #A3A3CF",
+  "&+	c #AAAAD3",
+  "*+	c #B0B0D6",
+  "=+	c #B5B5DA",
+  "-+	c #BABADE",
+  ";+	c #BEBEE1",
+  ">+	c #C1C1E3",
+  ",+	c #C4C4E5",
+  "'+	c #C7C7E8",
+  ")+	c #C8C8EC",
+  "!+	c #C9C9EF",
+  "~+	c #CACAF2",
+  "{+	c #C8C8F7",
+  "]+	c #F4F4F8",
+  "^+	c #CDCDE0",
+  "/+	c #A5A5C8",
+  "(+	c #7D7DAF",
+  "_+	c #565698",
+  ":+	c #2E2E7F",
+  "<+	c #080868",
+  "[+	c #8383B3",
+  "}+	c #D4D4E4",
+  "|+	c #C9C9FA",
+  "1+	c #CCCCF9",
+  "2+	c #CBCBF4",
+  "3+	c #C3C3ED",
+  "4+	c #B6B6E2",
+  "5+	c #9191C9",
+  "6+	c #7E7EBB",
+  "7+	c #6E6EAF",
+  "8+	c #5C5CA2",
+  "9+	c #474794",
+  "0+	c #323285",
+  "a+	c #1A1A75",
+  "b+	c #1B1B76",
+  "c+	c #434391",
+  "d+	c #56569F",
+  "e+	c #6B6BAD",
+  "f+	c #A4A4D5",
+  "g+	c #B1B1DF",
+  "h+	c #BCBCE7",
+  "i+	c #C5C5EE",
+  "j+	c #CBCBF3",
+  "k+	c #CCCCF7",
+  "l+	c #DFDFEB",
+  "m+	c #8080B1",
+  "n+	c #4F4F94",
+  "o+	c #1E1E76",
+  "p+	c #333383",
+  "q+	c #DBDBE9",
+  "r+	c #444491",
+  "s+	c #0E0E6C",
+  "t+	c #030365",
+  "u+	c #1D1D76",
+  "v+	c #3F3F8D",
+  "w+	c #5D5DA3",
+  "x+	c #7878B5",
+  "y+	c #9090C7",
+  "z+	c #A3A3D5",
+  "A+	c #B2B2E1",
+  "B+	c #BEBEEA",
+  "C+	c #C6C6F1",
+  "D+	c #EDEDF4",
+  "E+	c #BDBDD6",
+  "F+	c #8C8CB9",
+  "G+	c #5C5C9B",
+  "H+	c #2B2B7E",
+  "I+	c #363684",
+  "J+	c #8A8AB7",
+  "K+	c #DEDEEA",
+  "L+	c #BFBFF3",
+  "M+	c #0C0C6D",
+  "N+	c #1B1B75",
+  "O+	c #474793",
+  "P+	c #7171B1",
+  "Q+	c #9393C8",
+  "R+	c #ABABDB",
+  "S+	c #BDBDEA",
+  "T+	c #C7C7F4",
+  "U+	c #F6F6F9",
+  "V+	c #C9C9DE",
+  "W+	c #9999C1",
+  "X+	c #6868A3",
+  "Y+	c #373785",
+  "Z+	c #3A3A87",
+  "`+	c #8E8EBA",
+  " @	c #E1E1EC",
+  ".@	c #BCBCF1",
+  "+@	c #10106F",
+  "@@	c #3F3F8F",
+  "#@	c #6A6AAD",
+  "$@	c #A7A7D9",
+  "%@	c #C4C4F3",
+  "&@	c #D6D6E6",
+  "*@	c #7474AA",
+  "=@	c #43438C",
+  "-@	c #13136F",
+  ";@	c #3E3E89",
+  ">@	c #9292BC",
+  ",@	c #E4E4EE",
+  "'@	c #4E4E93",
+  ")@	c #060667",
+  "!@	c #161674",
+  "~@	c #6E6EB1",
+  "{@	c #9393CB",
+  "]@	c #B0B0E1",
+  "^@	c #C1C1EF",
+  "/@	c #C9C9F8",
+  "(@	c #E2E2ED",
+  "_@	c #8181B2",
+  ":@	c #1F1F76",
+  "<@	c #41418B",
+  "[@	c #9595BE",
+  "}@	c #E7E7F0",
+  "|@	c #080869",
+  "1@	c #3E3E8D",
+  "2@	c #6F6FB0",
+  "3@	c #9797CB",
+  "4@	c #B4B4E0",
+  "5@	c #C5C5F0",
+  "6@	c #CECEF8",
+  "7@	c #C4C4F5",
+  "8@	c #EEEEF4",
+  "9@	c #BEBED7",
+  "0@	c #8D8DB9",
+  "a@	c #8686B5",
+  "b@	c #E8E8F1",
+  "c@	c #11116D",
+  "d@	c #F7F7FA",
+  "e@	c #383886",
+  "f@	c #46468E",
+  "g@	c #B0B0CE",
+  "h@	c #F8F8FA",
+  "i@	c #C2C2D9",
+  "j@	c #B0B0CF",
+  "k@	c #7575AB",
+  "l@	c #10106D",
+  "m@	c #7070A8",
+  "n@	c #DADAE8",
+  "o@	c #7F7FB1",
+  "p@	c #40408A",
+  "q@	c #3B3B87",
+  "r@	c #62629F",
+  "s@	c #D9D9E7",
+  "t@	c #FBFBFC",
+  "u@	c #D7D7E6",
+  "v@	c #A2A2C6",
+  "w@	c #6D6DA6",
+  "x@	c #303081",
+  "y@	c #9B9BC2",
+  "z@	c #F5F5F8",
+  "A@	c #BABAD5",
+  "B@	c #7B7BAE",
+  "C@	c #3C3C88",
+  "D@	c #28287C",
+  "E@	c #7777AC",
+  "F@	c #9F9FC4",
+  "G@	c #6464A0",
+  "H@	c #5B5B9B",
+  "I@	c #C5C5DB",
+  "J@	c #AFAFCE",
+  "K@	c #171771",
+  "L@	c #7979AD",
+  "M@	c #AAAACB",
+  "N@	c #9090BB",
+  "O@	c #ADADCD",
+  "P@	c #8585B4",
+  "Q@	c #E9E9F1",
+  "R@	c #3D3D89",
+  "S@	c #6E6EA6",
+  "T@	c #D0D0E2",
+  "U@	c #F0F0F5",
+  "V@	c #BCBCD6",
+  "W@	c #525295",
+  "X@	c #1D1D75",
+  "Y@	c #F2F2F7",
+  "Z@	c #090969",
+  "`@	c #323282",
+  " #	c #6363A0",
+  ".#	c #F3F3F7",
+  "+#	c #B3B3D0",
+  "@#	c #7E7EB0",
+  "##	c #494990",
+  "$#	c #141470",
+  "%#	c #EFEFF5",
+  "&#	c #070768",
+  "*#	c #27277B",
+  "=#	c #8989B7",
+  "-#	c #B9B9D4",
+  ";#	c #EAEAF2",
+  ">#	c #9D9DC3",
+  ",#	c #4A4A90",
+  "'#	c #1B1B74",
+  ")#	c #AEAECD",
+  "!#	c #A1A1C5",
+  "~#	c #F9F9FB",
+  "{#	c #11116E",
+  "]#	c #7272A9",
+  "^#	c #A3A3C7",
+  "/#	c #9898C0",
+  "(#	c #6767A2",
+  "_#	c #C4C4DB",
+  ":#	c #515195",
+  "<#	c #C1C1D9",
+  "[#	c #202077",
+  "}#	c #F1F1F6",
+  "|#	c #60609E",
+  "1#	c #EBEBF2",
+  "2#	c #B7B7D3",
+  "3#	c #8282B3",
+  "4#	c #4D4D92",
+  "5#	c #191973",
+  "6#	c #353584",
+  "7#	c #6A6AA4",
+  "8#	c #47478F",
+  "9#	c #A8A8CA",
+  "0#	c #7373A9",
+  "a#	c #A9A9CA",
+  "b#	c #F0F0F6",
+  "c#	c #181872",
+  "d#	c #B2B2D0",
+  "e#	c #393986",
+  "f#	c #A1A1C6",
+  "g#	c #535396",
+  "h#	c #343483",
+  "i#	c #D8D8E7",
+  "j#	c #7676AB",
+  "k#	c #2D2D7F",
+  "l#	c #E6E6EF",
+  "m#	c #CFCFE1",
+  "n#	c #A0A0C5",
+  "o#	c #7171A8",
+  "p#	c #B4B4D1",
+  "q#	c #222278",
+  "r#	c #575798",
+  "s#	c #C0C0D8",
+  "t#	c #C8C8DD",
+  "u#	c #29297C",
+  "v#	c #5E5E9D",
+  "w#	c #C7C7DC",
+  "x#	c #DCDCE9",
+  "y#	c #313181",
+  "z#	c #6565A1",
+  "A#	c #9A9AC1",
+  "B#	c #42428C",
+  "C#	c #1A1A73",
+  "D#	c #3F3F8A",
+  "E#	c #151570",
+  "F#	c #6B6BA5",
+  "G#	c #6969A3",
+  "H#	c #E5E5EF",
+  "I#	c #C3C3DA",
+  "J#	c #5F5F9D",
+  "K#	c #333387",
+  "L#	c #494996",
+  "M#	c #5E5EA5",
+  "N#	c #7171B2",
+  "O#	c #8282BE",
+  "P#	c #8D8DC6",
+  "Q#	c #9696CC",
+  "R#	c #A0A0D3",
+  "S#	c #A8A8D8",
+  "T#	c #B0B0DD",
+  "U#	c #B7B7E3",
+  "V#	c #BABAE5",
+  "W#	c #BCBCE8",
+  "X#	c #BDBDE9",
+  "Y#	c #BFBFEC",
+  "Z#	c #C1C1EE",
+  "`#	c #BEBEE9",
+  " $	c #BEBEE8",
+  ".$	c #B9B9E5",
+  "+$	c #B3B3E0",
+  "@$	c #9090C8",
+  "#$	c #8888C2",
+  "$$	c #7E7EBC",
+  "%$	c #7070B1",
+  "&$	c #6161A7",
+  "*$	c #2B2B80",
+  "=$	c #171772",
+  "-$	c #5D5D9C",
+  ";$	c #9696BF",
+  ">$	c #7C7CAF",
+  ",$	c #555597",
+  "'$	c #101070",
+  ")$	c #28287F",
+  "!$	c #53539D",
+  "~$	c #7474B4",
+  "{$	c #8D8DC5",
+  "]$	c #A2A2D4",
+  "^$	c #BDBDE8",
+  "/$	c #CACAF6",
+  "($	c #CBCBF8",
+  "_$	c #CACAF4",
+  ":$	c #C4C4EF",
+  "<$	c #A5A5D7",
+  "[$	c #6969AB",
+  "}$	c #4C4C98",
+  "|$	c #2B2B81",
+  "1$	c #61619E",
+  "2$	c #C6C6F2",
+  "3$	c #B4B4E2",
+  "4$	c #9292C8",
+  "5$	c #7C7CB8",
+  "6$	c #6262A5",
+  "7$	c #3C3C8B",
+  "8$	c #10106E",
+  "9$	c #9191BC",
+  "0$	c #6F6FA7",
+  "a$	c #B6B6D2",
+  "b$	c #C9C9F6",
+  "c$	c #C2C2EE",
+  "d$	c #B3B3E2",
+  "e$	c #7E7EBA",
+  "f$	c #59599F",
+  "g$	c #D1D1E3",
+  "h$	c #CBCBDF",
+  "i$	c #A7A7C9",
+  "j$	c #C7C7F0",
+  "k$	c #B9B9E4",
+  "l$	c #A4A4D3",
+  "m$	c #8686BD",
+  "n$	c #6262A4",
+  "o$	c #D2D2F9",
+  "p$	c #C9C9F0",
+  "q$	c #B6B6E1",
+  "r$	c #9999CB",
+  "s$	c #7171AF",
+  "t$	c #5A5A9A",
+  "u$	c #B1B1E0",
+  "v$	c #9494CA",
+  "w$	c #6C6CAF",
+  "x$	c #39398A",
+  "y$	c #D5D5E5",
+  "z$	c #9797BF",
+  "A$	c #7878AC",
+  "B$	c #9C9CC2",
+  "C$	c #CBCBFA",
+  "D$	c #C6C6EF",
+  "E$	c #C1C1EA",
+  "F$	c #8B8BC4",
+  "G$	c #8989C2",
+  "H$	c #8686C0",
+  "I$	c #8484BE",
+  "J$	c #7F7FBA",
+  "K$	c #7D7DB8",
+  "L$	c #7A7AB6",
+  "M$	c #7878B4",
+  "N$	c #7676B2",
+  "O$	c #7A7AB5",
+  "P$	c #7E7EB7",
+  "Q$	c #8282B9",
+  "R$	c #8686BC",
+  "S$	c #8B8BBF",
+  "T$	c #8E8EC1",
+  "U$	c #9292C3",
+  "V$	c #9696C5",
+  "W$	c #A3A3CE",
+  "X$	c #AAAAD2",
+  "Y$	c #BABADD",
+  "Z$	c #BDBDE0",
+  "`$	c #C1C1E2",
+  " %	c #C6C6E9",
+  ".%	c #C8C8ED",
+  "+%	c #C9C9F3",
+  "@%	c #C8C8F6",
+  "#%	c #C8C8F8",
+  "$%	c #CCCCF8",
+  "%%	c #AFAFDD",
+  "&%	c #9C9CCF",
+  "*%	c #7272B2",
+  "=%	c #6060A5",
+  "-%	c #4C4C97",
+  ";%	c #202079",
+  ">%	c #1F1F79",
+  ",%	c #464694",
+  "'%	c #5E5EA4",
+  ")%	c #7575B4",
+  "!%	c #9B9BCE",
+  "~%	c #A9A9D9",
+  "{%	c #C1C1EB",
+  "]%	c #C8C8F1",
+  "^%	c #373789",
+  "/%	c #2E2E82",
+  "(%	c #4E4E98",
+  "_%	c #6B6BAC",
+  ":%	c #9999CE",
+  "<%	c #B7B7E6",
+  "[%	c #CCCCE0",
+  "}%	c #242479",
+  "|%	c #8888B6",
+  "1%	c #A4A4C7",
+  "2%	c #373788",
+  "3%	c #6363A6",
+  "4%	c #8787C0",
+  "5%	c #C4C4F0",
+  "6%	c #59599A",
+  "7%	c #4B4B91",
+  "8%	c #25257A",
+  "9%	c #070769",
+  "0%	c #2D2D83",
+  "a%	c #5B5BA3",
+  "b%	c #7F7FBD",
+  "c%	c #9D9DD3",
+  "d%	c #B3B3E4",
+  "e%	c #C1C1F0",
+  "f%	c #C7C7F8",
+  "g%	c #0F0F6F",
+  "h%	c #2D2D85",
+  "i%	c #5E5EA6",
+  "j%	c #8888C4",
+  "k%	c #A7A7DB",
+  "l%	c #BDBDEB",
+  "m%	c #C7C7F6",
+  "n%	c #232379",
+  "o%	c #2C2C82",
+  "p%	c #6161A6",
+  "q%	c #8C8CC4",
+  "r%	c #ABABDA",
+  "s%	c #CCCCF6",
+  "t%	c #C5C5F5",
+  "u%	c #6666A2",
+  "v%	c #B8B8D3",
+  "w%	c #A8A8C9",
+  "x%	c #E0E0EC",
+  "y%	c #9E9EC4",
+  "z%	c #B8B8D4",
+  "A%	c #B5B5D2",
+  "B%	c #ABABCB",
+  "C%	c #39398E",
+  "D%	c #8D8DCE",
+  "E%	c #B3B3EA",
+  "F%	c #3A3A8F",
+  "G%	c #20207C",
+  "H%	c #6A6AB4",
+  "I%	c #313189",
+  "J%	c #7676BC",
+  "K%	c #7878BE",
+  "L%	c #3A3A90",
+  "M%	c #0A0A6C",
+  "N%	c #3D3D92",
+  "O%	c #5E5EAA",
+  "P%	c #6262AE",
+  "Q%	c #6E6EB6",
+  "R%	c #141473",
+  "S%	c #C0C0F4",
+  "T%	c #4C4C9D",
+  "U%	c #4E4E9E",
+  "V%	c #6969B2",
+  "W%	c #6D6DB5",
+  "X%	c #6767B1",
+  "Y%	c #454598",
+  "Z%	c #48489A",
+  "`%	c #0A0A6B",
+  " &	c #B9B9EF",
+  ".&	c #BBBBF0",
+  "+&	c #ACACCC",
+  "@&	c #5757A5",
+  "#&	c #C4C4F7",
+  "$&	c #5A5AA7",
+  "%&	c #1D1D7A",
+  "&&	c #9191D0",
+  "*&	c #1E1E7A",
+  "=&	c #212178",
+  "-&	c #ECECF3",
+  ";&	c #3C3C91",
+  ">&	c #7373BA",
+  ",&	c #7B7BC0",
+  "'&	c #7979BF",
+  ")&	c #6F6FB7",
+  "!&	c #5A5AA8",
+  "~&	c #404094",
+  "{&	c #1F1F7B",
+  "]&	c #2B2B84",
+  "^&	c #171775",
+  "/&	c #1D1D79",
+  "(&	c #4D4D9E",
+  "_&	c #8686C8",
+  ":&	c #B9B9EE",
+  "<&	c #8787C9",
+  "[&	c #49499B",
+  "}&	c #36368D",
+  "|&	c #6B6BB4",
+  "1&	c #303088",
+  "2&	c #8484C7",
+  "3&	c #5050A0",
+  "4&	c #5151A1",
+  "5&	c #21217D",
+  "6&	c #7D7DC2",
+  "7&	c #191976",
+  "8&	c #1B1B78",
+  "9&	c #8282C6",
+  "0&	c #C6C6F8",
+  "a&	c #7474BB",
+  "b&	c #5D5DAA",
+  "c&	c #B5B5EB",
+  "d&	c #3B3B90",
+  "e&	c #151574",
+  "f&	c #9D9DDA",
+  "g&	c #010165",
+  "h&	c #2F2F87",
+  "i&	c #B5B5EC",
+  "j&	c #8A8ACC",
+  "k&	c #38388E",
+  "l&	c #9595D3",
+  "m&	c #2E2E86",
+  "n&	c #37378D",
+  "o&	c #474799",
+  "p&	c #6565AF",
+  "q&	c #8888CA",
+  "r&	c #9595D4",
+  "s&	c #8F8FCF",
+  "t&	c #424296",
+  "u&	c #08086A",
+  "v&	c #BDBDF1",
+  "w&	c #9090D0",
+  "x&	c #8686C9",
+  "y&	c #0E0E6E",
+  "z&	c #6868B2",
+  "A&	c #B7B7ED",
+  "B&	c #AFAFE7",
+  "C&	c #36368C",
+  "D&	c #9494D3",
+  "E&	c #040467",
+  "F&	c #A3A3DE",
+  "G&	c #C5C5F8",
+  "H&	c #2A2A83",
+  "I&	c #9B9BD8",
+  "J&	c #7F7FC3",
+  "K&	c #5555A4",
+  "L&	c #454597",
+  "M&	c #A1A1DD",
+  "N&	c #A4A4DF",
+  "O&	c #AEAEE7",
+  "P&	c #6666B1",
+  "Q&	c #8989CA",
+  "R&	c #B8B8EE",
+  "S&	c #9292D2",
+  "T&	c #BEBEF2",
+  "U&	c #7C7CC1",
+  "V&	c #AAAAE4",
+  "W&	c #191977",
+  "X&	c #ADADE6",
+  "Y&	c #9999D7",
+  "Z&	c #8282C5",
+  "`&	c #5C5CA9",
+  " *	c #414194",
+  ".*	c #6565B0",
+  "+*	c #3F3F93",
+  "@*	c #292983",
+  "#*	c #6D6DB6",
+  "$*	c #32328A",
+  "%*	c #323289",
+  "&*	c #34348B",
+  "**	c #7070B8",
+  "=*	c #8080C4",
+  "-*	c #6969B3",
+  ";*	c #7E7EC2",
+  ">*	c #6262AD",
+  ",*	c #272781",
+  "'*	c #24247F",
+  ")*	c #7575BC",
+  "!*	c #5353A2",
+  "~*	c #6C6CB5",
+  "{*	c #0E0E6F",
+  "]*	c #6161AC",
+  "^*	c #7272B9",
+  "/*	c #9E9EDA",
+  "(*	c #B6B6ED",
+  "_*	c #B0B0E8",
+  ":*	c #414195",
+  "<*	c #9F9FDB",
+  "[*	c #C3C3F6",
+  "}*	c #121272",
+  "|*	c #B4B4EB",
+  "1*	c #464698",
+  "2*	c #22227D",
+  "3*	c #1A1A78",
+  "4*	c #33338A",
+  "5*	c #A6A6E0",
+  "6*	c #2D2D86",
+  "7*	c #A7A7E1",
+  "8*	c #8D8DCD",
+  "9*	c #050568",
+  "0*	c #AAAAE3",
+  "a*	c #1C1C79",
+  "b*	c #8B8BCC",
+  "c*	c #B2B2E9",
+  "d*	c #5454A3",
+  "e*	c #262680",
+  "f*	c #050566",
+  "g*	c #0A0A69",
+  "h*	c #131372",
+  "i*	c #5656A4",
+  "j*	c #434396",
+  "k*	c #242476",
+  "l*	c #3C3C82",
+  "m*	c #4E4E8B",
+  "n*	c #55558E",
+  "o*	c #595990",
+  "p*	c #57578F",
+  "q*	c #212174",
+  "r*	c #15156E",
+  "s*	c #3D3D82",
+  "t*	c #585890",
+  "u*	c #646496",
+  "v*	c #5A5A91",
+  "w*	c #3F3F83",
+  "x*	c #1B1B71",
+  "y*	c #A0A0DC",
+  "z*	c #6464AF",
+  "A*	c #0D0D6E",
+  "B*	c #3B3B81",
+  "C*	c #616194",
+  "D*	c #5C5C92",
+  "E*	c #30307C",
+  "F*	c #090968",
+  "G*	c #444486",
+  "H*	c #636395",
+  "I*	c #4C4C8A",
+  "J*	c #36367F",
+  "K*	c #2D2D7A",
+  "L*	c #33337D",
+  "M*	c #434385",
+  "N*	c #5D5D92",
+  "O*	c #4D4D8A",
+  "P*	c #13136D",
+  "Q*	c #A8A8E2",
+  "R*	c #BABAF0",
+  "S*	c #5E5E93",
+  "T*	c #54548E",
+  "U*	c #12126D",
+  "V*	c #454586",
+  "W*	c #0E0E6B",
+  "X*	c #31317C",
+  "Y*	c #626295",
+  "Z*	c #2B2B79",
+  "`*	c #4B4B9C",
+  " =	c #9898D6",
+  ".=	c #282882",
+  "+=	c #9A9AD7",
+  "@=	c #2E2E7B",
+  "#=	c #4A4A89",
+  "$=	c #191970",
+  "%=	c #16166F",
+  "&=	c #606094",
+  "*=	c #32327D",
+  "==	c #BDBDF2",
+  "-=	c #9797D5",
+  ";=	c #7A7ABF",
+  ">=	c #6060AC",
+  ",=	c #7777BD",
+  "'=	c #A9A9E3",
+  ")=	c #9393D2",
+  "!=	c #282878",
+  "~=	c #56568F",
+  "{=	c #2A2A79",
+  "]=	c #0C0C6A",
+  "^=	c #0F0F6B",
+  "/=	c #383880",
+  "(=	c #222275",
+  "_=	c #4F4F9F",
+  ":=	c #34347E",
+  "<=	c #494988",
+  "[=	c #5252A1",
+  "}=	c #202074",
+  "|=	c #3A3A81",
+  "1=	c #17176F",
+  "2=	c #252576",
+  "3=	c #070767",
+  "4=	c #5F5F93",
+  "5=	c #10106C",
+  "6=	c #23237E",
+  "7=	c #ABABE4",
+  "8=	c #474787",
+  "9=	c #121271",
+  "0=	c #8C8CCD",
+  "a=	c #ACACE5",
+  "b=	c #14146E",
+  "c=	c #393980",
+  "d=	c #464687",
+  "e=	c #1E1E73",
+  "f=	c #2C2C85",
+  "g=	c #51518C",
+  "h=	c #444497",
+  "i=	c #4A4A9B",
+  "j=	c #181876",
+  "k=	c #0B0B69",
+  "l=	c #292978",
+  "m=	c #252580",
+  "n=	c #3E3E93",
+  "o=	c #3D3D91",
+  "p=	c #35358C",
+  "q=	c #5B5B91",
+  "r=	c #161675",
+  "s=	c #5959A7",
+  "t=	c #1D1D72",
+  "u=	c #8A8ACB",
+  "v=	c #5F5FAB",
+  "w=	c #50508C",
+  "x=	c #232375",
+  "y=	c #9C9CD9",
+  "z=	c #A5A5E0",
+  "A=	c #8383C6",
+  "B=	c #B1B1E8",
+  "C=	c #5E5EAB",
+  "D=	c #5858A6",
+  "E=	c #8585C8",
+  "F=	c #AEAEE0",
+  "G=	c #7676A8",
+  "H=	c #181870",
+  "I=	c #7C7CBB",
+  "J=	c #656597",
+  "K=	c #69699B",
+  "L=	c #9292CA",
+  "M=	c #9696D4",
+  "N=	c #C1C1F4",
+  "O=	c #9696C8",
+  "P=	c #9A9ACC",
+  "Q=	c #C2C2F4",
+  "R=	c #A6A6D8",
+  "S=	c #151573",
+  "T=	c #A2A2DD",
+  "U=	c #8181C5",
+  "V=	c #BCBCEF",
+  "W=	c #6F6FA1",
+  "X=	c #9F9FD1",
+  "Y=	c #A1A1D3",
+  "Z=	c #A8A8E0",
+  "`=	c #C1C1F3",
+  " -	c #AAAADC",
+  ".-	c #8E8ECF",
+  "+-	c #9191D1",
+  "@-	c #676799",
+  "#-	c #B3B3E5",
+  "$-	c #7070A2",
+  "%-	c #BFBFF1",
+  "&-	c #8282B4",
+  "*-	c #6363AE",
+  "=-	c #6D6DA0",
+  "--	c #9898CA",
+  ";-	c #ADADE5",
+  ">-	c #8B8BBD",
+  ",-	c #B2B2E4",
+  "'-	c #B5B5E7",
+  ")-	c #414184",
+  "!-	c #B9B9ED",
+  "~-	c #2F2F7B",
+  "{-	c #ACACDE",
+  "]-	c #5B5BA8",
+  "^-	c #8A8ABC",
+  "/-	c #8989BB",
+  "(-	c #8585B9",
+  "_-	c #5757A2",
+  ":-	c #7474B1",
+  "<-	c #7878AA",
+  "[-	c #3E3E84",
+  "}-	c #B8B8EA",
+  "|-	c #AEAEE6",
+  "1-	c #7A7AAC",
+  "2-	c #8D8DC7",
+  "3-	c #8C8CBE",
+  "4-	c #6E6EA0",
+  "5-	c #6D6D9F",
+  "6-	c #9898D0",
+  "7-	c #B6B6E8",
+  "8-	c #6464AC",
+  "9-	c #C3C3F5",
+  "0-	c #6C6C9E",
+  "a-	c #666698",
+  "b-	c #BDBDEF",
+  "c-	c #A7A7DE",
+  "d-	c #C5C5F7",
+  "e-	c #7272A4",
+  "f-	c #B6B6E9",
+  "g-	c #7575A7",
+  "h-	c #B4B4E8",
+  "i-	c #ADADDF",
+  "j-	c #A9A9DB",
+  "k-	c #161670",
+  "l-	c #2D2D7D",
+  "m-	c #424289",
+  "n-	c #B1B1E3",
+  "o-	c #484888",
+  "p-	c #7373A5",
+  "q-	c #9292C4",
+  "r-	c #4F4F8B",
+  "s-	c #0D0D6A",
+  "t-	c #BDBDF0",
+  "u-	c #65659B",
+  "v-	c #53538D",
+  "w-	c #B2B2EA",
+  "x-	c #BCBCEE",
+  "y-	c #262677",
+  "z-	c #424285",
+  "A-	c #3E3E83",
+  "B-	c #2C2C7A",
+  "C-	c #35357E",
+  "D-	c #272777",
+  "E-	c #4B4B89",
+  "F-	c #11116C",
+  "G-	c #52528D",
+  "H-	c #37377F",
+  "I-	c #404084",
+  "J-	c #1A1A71",
+  "K-	c #7373A0",
+  "L-	c #9494B6",
+  "M-	c #7C7CA6",
+  "N-	c #8686AD",
+  "O-	c #9B9BBB",
+  "P-	c #676798",
+  "Q-	c #7676A2",
+  "R-	c #9F9FBE",
+  "S-	c #9A9ABB",
+  "T-	c #9090B4",
+  "U-	c #7575A1",
+  "V-	c #9292B5",
+  "W-	c #8C8CB1",
+  "X-	c #E5E5ED",
+  "Y-	c #ABABC6",
+  "Z-	c #C7C7D9",
+  "`-	c #7878A3",
+  " ;	c #D0D0DF",
+  ".;	c #9797B9",
+  "+;	c #8888AE",
+  "@;	c #DFDFE9",
+  "#;	c #CACADB",
+  "$;	c #BFBFD3",
+  "%;	c #9595B7",
+  "&;	c #DCDCE7",
+  "*;	c #6A6A9A",
+  "=;	c #CECEDE",
+  "-;	c #CBCBDC",
+  ";;	c #AAAAC5",
+  ">;	c #8181A9",
+  ",;	c #72729F",
+  "';	c #F1F1F5",
+  ");	c #C4C4D7",
+  "!;	c #A3A3C0",
+  "~;	c #A3A3C1",
+  "{;	c #C8C8DA",
+  "];	c #6D6D9C",
+  "^;	c #E8E8EF",
+  "/;	c #AFAFC9",
+  "(;	c #EAEAF1",
+  "_;	c #EDEDF3",
+  ":;	c #A1A1BF",
+  "<;	c #F4F4F7",
+  "[;	c #ECECF2",
+  "};	c #DDDDE8",
+  "|;	c #B9B9D0",
+  "1;	c #B3B3CB",
+  "2;	c #E3E3EC",
+  "3;	c #9898B9",
+  "4;	c #D2D2E0",
+  "5;	c #B0B0C9",
+  "6;	c #A4A4C1",
+  "7;	c #C3C3D6",
+  "8;	c #AEAEC8",
+  "9;	c #ACACC7",
+  "0;	c #BBBBD1",
+  "a;	c #6B6B9B",
+  "b;	c #F2F2F6",
+  "c;	c #C9C9DA",
+  "d;	c #8989AF",
+  "e;	c #6E6E9D",
+  "f;	c #C1C1D5",
+  "g;	c #686898",
+  "h;	c #DBDBE6",
+  "i;	c #8282AA",
+  "j;	c #D5D5E3",
+  "k;	c #BCBCD1",
+  "l;	c #B6B6CD",
+  "m;	c #7E7EA8",
+  "n;	c #A7A7C3",
+  "o;	c #6F6F9D",
+  "p;	c #D1D1E0",
+  "q;	c #A6A6C3",
+  "r;	c #D5D5E2",
+  "s;	c #EBEBF1",
+  "t;	c #CCCCDC",
+  "u;	c #FAFAFC",
+  "v;	c #7777A3",
+  "w;	c #6C6C9B",
+  "x;	c #6B6B9A",
+  "y;	c #B5B5CD",
+  "z;	c #71719F",
+  "A;	c #70709E",
+  "B;	c #8383AB",
+  "C;	c #7878A4",
+  "D;	c #7D7DA7",
+  "E;	c #B7B7CE",
+  "F;	c #E7E7EE",
+  "G;	c #7F7FA8",
+  "H;	c #A0A0BE",
+  "I;	c #B4B4CC",
+  "J;	c #DEDEE8",
+  "K;	c #B8B8CF",
+  "L;	c #666697",
+  "M;	c #7B7BA5",
+  "N;	c #D4D4E2",
+  "O;	c #9191B4",
+  "P;	c #656596",
+  "Q;	c #ADADC7",
+  "R;	c #8484AC",
+  "S;	c #8181AA",
+  "T;	c #BEBED3",
+  "U;	c #9E9EBD",
+  "V;	c #E6E6EE",
+  "W;	c #A9A9C4",
+  "X;	c #E9E9F0",
+  "Y;	c #EEEEF3",
+  "Z;	c #8787AE",
+  "`;	c #E0E0EA",
+  " >	c #8B8BB0",
+  ".>	c #D8D8E4",
+  "+>	c #D7D7E4",
+  "@>	c #8F8FB3",
+  "#>	c #9999BA",
+  "$>	c #7474A1",
+  "%>	c #8484AB",
+  "&>	c #BABAD0",
+  "*>	c #DADAE6",
+  "=>	c #9D9DBD",
+  "->	c #C2C2D6",
+  ";>	c #EFEFF4",
+  ">>	c #7B7BA6",
+  ",>	c #A8A8C4",
+  "'>	c #C6C6D8",
+  ")>	c #9393B6",
+  "!>	c #E2E2EB",
+  "~>	c #B9B9CF",
+  "{>	c #686899",
+  "]>	c #BDBDD2",
+  "^>	c #9C9CBC",
+  "/>	c #8080A9",
+  "(>	c #C2C2D5",
+  "_>	c #A2A2C0",
+  ":>	c #7A7AA5",
+  "<>	c #8D8DB2",
+  "[>	c #B2B2CB",
+  "}>	c #DBDBE7",
+  "|>	c #D3D3E1",
+  "1>	c #C8C8D9",
+  "2>	c #D6D6E3",
+  "3>	c #A9A9C5",
+  "4>	c #C5C5D8",
+  "5>	c #7979A4",
+  "6>	c #B1B1CA",
+  "7>	c #8E8EB2",
+  "8>	c #9D9DBC",
+  "9>	c #CDCDDD",
+  "0>	c #B6B6CE",
+  "a>	c #CFCFDE",
+  "b>	c #BFBFD4",
+  "c>	c #D8D8E5",
+  "d>	c #A5A5C2",
+  "e>	c #8A8AB0",
+  "f>	c #C0C0D4",
+  "g>	c #9696B8",
+  "h>	c #696999",
+  "i>	c #F7F7F9",
+  "j>	c #1D1D6F",
+  "k>	c #020264",
+  "l>	c #1F1F70",
+  "m>	c #050565",
+  "n>	c #1A1A6E",
+  "o>	c #040465",
+  "p>	c #18186D",
+  "q>	c #060666",
+  "r>	c #11116A",
+  "s>	c #0D0D69",
+  "t>	c #13136B",
+  "u>	c #0B0B68",
+  "v>	c #262672",
+  "w>	c #15156C",
+  "x>	c #16166C",
+  "y>	c #080867",
+  "z>	c #1C1C6E",
+  "A>	c #10106A",
+  "B>	c #0E0E69",
+  "C>	c #39397A",
+  "D>	c #9C9CA1",
+  "E>	c #9B9BA0",
+  "F>	c #9F9FA2",
+  "G>	c #94949E",
+  "H>	c #242472",
+  "I>	c #B3B3AA",
+  "J>	c #5D5D88",
+  "K>	c #CFCFB5",
+  "L>	c #D6D6B7",
+  "M>	c #8A8A9A",
+  "N>	c #7F7F95",
+  "O>	c #D4D4B7",
+  "P>	c #D2D2B6",
+  "Q>	c #69698D",
+  "R>	c #A2A2A3",
+  "S>	c #D3D3B6",
+  "T>	c #787893",
+  "U>	c #818196",
+  "V>	c #E4E4BD",
+  "W>	c #B4B4AA",
+  "X>	c #252572",
+  "Y>	c #2B2B74",
+  "Z>	c #C0C0AF",
+  "`>	c #DDDDBA",
+  " ,	c #A1A1A3",
+  ".,	c #0A0A67",
+  "+,	c #4A4A81",
+  "@,	c #CCCCB4",
+  "#,	c #D8D8B8",
+  "$,	c #848497",
+  "%,	c #9A9AA0",
+  "&,	c #DEDEBB",
+  "*,	c #E5E5BD",
+  "=,	c #E8E8BE",
+  "-,	c #0F0F69",
+  ";,	c #12126B",
+  ">,	c #C8C8B2",
+  ",,	c #C4C4B0",
+  "',	c #AFAFA8",
+  "),	c #47477F",
+  "!,	c #BEBEAE",
+  "~,	c #343478",
+  "{,	c #EAEABF",
+  "],	c #FCFCC6",
+  "^,	c #63638A",
+  "/,	c #C9C9B2",
+  "(,	c #8B8B9A",
+  "_,	c #5E5E88",
+  ":,	c #383879",
+  "<,	c #43437E",
+  "[,	c #2A2A74",
+  "},	c #D5D5B7",
+  "|,	c #272773",
+  "1,	c #D0D0B5",
+  "2,	c #7A7A93",
+  "3,	c #C3C3B0",
+  "4,	c #9999A0",
+  "5,	c #3B3B7B",
+  "6,	c #CACAB3",
+  "7,	c #282873",
+  "8,	c #8E8E9B",
+  "9,	c #98989F",
+  "0,	c #5F5F89",
+  "a,	c #C1C1AF",
+  "b,	c #363679",
+  "c,	c #0C0C68",
+  "d,	c #C6C6B1",
+  "e,	c #737391",
+  "f,	c #B6B6AB",
+  "g,	c #41417D",
+  "h,	c #B9B9AC",
+  "i,	c #A7A7A5",
+  "j,	c #5B5B87",
+  "k,	c #61618A",
+  "l,	c #606089",
+  "m,	c #6D6D8E",
+  "n,	c #535384",
+  "o,	c #ACACA7",
+  "p,	c #070766",
+  "q,	c #E6E6BE",
+  "r,	c #858598",
+  "s,	c #A6A6A5",
+  "t,	c #3A3A7A",
+  "u,	c #767692",
+  "v,	c #D7D7B8",
+  "w,	c #555585",
+  "x,	c #AEAEA8",
+  "y,	c #44447E",
+  "z,	c #91919C",
+  "A,	c #A4A4A4",
+  "B,	c #67678C",
+  "C,	c #E1E1BC",
+  "D,	c #FFFFC8",
+  "E,	c #14146B",
+  "F,	c #40407D",
+  "G,	c #090967",
+  "H,	c #70708F",
+  "I,	c #B0B0A9",
+  "J,	c #8C8C9A",
+  "K,	c #45457F",
+  "L,	c #66668C",
+  "M,	c #1B1B6E",
+  "N,	c #BBBBAD",
+  "O,	c #DBDBB9",
+  "P,	c #46467F",
+  "Q,	c #92929D",
+  "R,	c #BDBDAE",
+  "S,	c #595986",
+  "T,	c #6F6F8F",
+  "U,	c #17176D",
+  "V,	c #F9F9C5",
+  "W,	c #525284",
+  "X,	c #CDCDB4",
+  "Y,	c #2C2C75",
+  "Z,	c #95959E",
+  "`,	c #212170",
+  " '	c #878798",
+  ".'	c #F4F4C3",
+  "+'	c #4C4C81",
+  "@'	c #F1F1C2",
+  "#'	c #5A5A87",
+  "$'	c #575786",
+  "%'	c #747491",
+  "&'	c #7C7C94",
+  "*'	c #7B7B94",
+  "='	c #6B6B8D",
+  "-'	c #DCDCBA",
+  ";'	c #333378",
+  ">'	c #303076",
+  ",'	c #AAAAA6",
+  "''	c #232371",
+  ")'	c #515183",
+  "!'	c #ECECC0",
+  "~'	c #CBCBB3",
+  "{'	c #EBEBC0",
+  "]'	c #868698",
+  "^'	c #B7B7AB",
+  "/'	c #545484",
+  "('	c #727290",
+  "_'	c #9E9EA1",
+  ":'	c #93939D",
+  "<'	c #BCBCAD",
+  "['	c #42427D",
+  "}'	c #DADAB9",
+  "|'	c #292974",
+  "1'	c #A8A8A5",
+  "2'	c #ADADA7",
+  "3'	c #E0E0BB",
+  "4'	c #4B4B81",
+  "5'	c #494980",
+  "6'	c #838397",
+  "7'	c #F8F8C5",
+  "8'	c #EFEFC1",
+  "9'	c #B1B1A9",
+  "0'	c #505083",
+  "a'	c #E9E9BF",
+  "b'	c #EDEDC0",
+  "c'	c #797993",
+  "d'	c #8D8D9B",
+  "e'	c #DFDFBB",
+  "f'	c #CECEB4",
+  "g'	c #3E3E7C",
+  "h'	c #A0A0A2",
+  "i'	c #888899",
+  "j'	c #EEEEC1",
+  "k'	c #353578",
+  "l'	c #D9D9B9",
+  "m'	c #565685",
+  "n'	c #FEFEC7",
+  "o'	c #717190",
+  "p'	c #3C3C7B",
+  "q'	c #BABAAC",
+  "r'	c #202070",
+  "s'	c #68688C",
+  "t'	c #313177",
+  "u'	c #828296",
+  "v'	c #E3E3BD",
+  "w'	c #3F3F7C",
+  "x'	c #B5B5AA",
+  "y'	c #4F4F82",
+  "z'	c #C5C5B1",
+  "A'	c #E7E7BE",
+  "B'	c #FDFDC7",
+  "C'	c #6E6E8F",
+  "D'	c #A5A5A4",
+  "E'	c #9D9DA1",
+  "F'	c #757591",
+  "G'	c #898999",
+  "H'	c #7E7E95",
+  "I'	c #90909C",
+  "J'	c #D1D1B5",
+  "K'	c #7D7D95",
+  "L'	c #BFBFAE",
+  "M'	c #97979F",
+  "N'	c #62628A",
+  "O'	c #C7C7B2",
+  "P'	c #65658B",
+  "Q'	c #8F8F9C",
+  "R'	c #373779",
+  "S'	c #777792",
+  "T'	c #808096",
+  "U'	c #19196D",
+  "V'	c #96969E",
+  "W'	c #2D2D75",
+  "X'	c #F2F2C2",
+  "Y'	c #1E1E6F",
+  "Z'	c #3D3D7B",
+  "`'	c #F5F5C4",
+  " )	c #5C5C88",
+  ".)	c #2E2E76",
+  "+)	c #FBFBC6",
+  "@)	c #E2E2BC",
+  "#)	c #F6F6C4",
+  "$)	c #ABABA7",
+  "%)	c #222271",
+  "&)	c #4E4E82",
+  "*)	c #585886",
+  "=)	c #A3A3A3",
+  "-)	c #323277",
+  ";)	c #A9A9A6",
+  ">)	c #B2B2A9",
+  ",)	c #F0F0C2",
+  "')	c #4D4D82",
+  "))	c #B8B8AC",
+  "!)	c #64648B",
+  "~)	c #6A6A8D",
+  "{)	c #FAFAC6",
+  "])	c #F7F7C4",
+  "^)	c #6C6C8E",
+  "/)	c #2F2F76",
+  "()	c #C2C2B0",
+  "_)	c #F3F3C3",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                              . + @ # $ % & * = - ; > , ' ) ! ~ { ] ^ / ( _ ( / ^ : < [ } | 1 2   ; 3 4 5 6 7 8 $ 9 0 a b c                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ",
+  "                                                                                                                                                                    d e f g h i j k l m n o p q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q r s t m u v [ w x y z A B C D                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ",
+  "                                                                                                                                                  E F G H - I J K p q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q q q q q q q q q q q q q q q L o K M N O P Q R S T U                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ",
+  "                                                                                                                                              V o L q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q L o W X Y Z `  ...                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                        D                     +.q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q @.#.$.%.&.*.=.-.;.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ",
+  "                                                                                                            >.,.'.).!.~.{.                    ].q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q ^./.(._.:.<.[.}.|.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                  1.2.3.4.5.6.7.7.7.7.7.8.                    ].q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q 9.0.a.b.y c.d.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ",
+  "                                                                                          e.f.g.h.6.7.7.7.7.7.7.7.7.7.7.8.                    ].q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q i.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ",
+  "                                                                                  j.k.l.m.n.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.                    ].q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q i.                      o.p.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                          q.r.s.t.u.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.                    ].q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q i.                      v.7.w.x.y.z.A.B.C.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ",
+  "                                                                  D.E.F.G.H.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.                    ].q q q q q q q q q q q q q q q q q q q q q q q q s s 0.I.l J.K.L.M.N.- O.P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+++@+#+$+%+&  +*+=+-+;+>+,+'+)+!+~+m {+q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q i.                      v.7.7.7.7.7.7.7.]+^+/+(+_+:+<+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                            8.[+}+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.                    ].q q q q q q q q q q |+1+2+3+4+N.5+6+7+8+9+0+a+D                                                                                           U b+T c+d+e+g Z f+g+h+i+j+k+r q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q i.                      v.7.7.7.7.7.7.7.7.7.7.7.7.7.u.l+!.m+n+o+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+  "                                                      p+g.q+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.                    ].q q q q q q q q q r+s+                                                                                                                                                t+u+v+w+x+y+z+A+B+C+n 9.q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q i.                      v.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.D+E+F+G+H+t+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                I+J+K+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.                    L+q q q q q q q q q M+                                                                                                                                                                          N+O+P+Q+R+S+T+o q q q q q q q q q q q q q q q q q q q q q q i.                      v.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.U+V+W+X+Y+1.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                        C.Z+`+ @7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.                    .@q q q q q q q q q M+                                                                                                                                                                                          +@@@#@* $@( %@p q q q q q q q q q q q q q q i.                      v.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.n.&@/+*@=@-@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+  "                                  D ;@>@,@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.6.5.4.3.'@)@                    .@q q q q q q q q q M+                                                                                                                                                                                                        C.!@e ~@{@]@^@/@L q q q q q q i.                      v.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.(@!._@r.:@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ",
+  "                            t+<@[@}@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.n.m.l.'.,.>.                              .@q q q q q q q q q M+                                                                                                                                                                                                                        |@1@2@3@4@5@6@7@                      v.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8@9@0@G+H+t+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                        o+a@b@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.6.h.g.f.e.                                        .@q q q q q q q q q M+                                                                                                                                                                                                                                      c@                      v.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.d@m  .W+X+e@1.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ",
+  "                  C.f@g@n.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.h@i@[+A.1.                                                .@q q q q q q q q q M+                                                                                                                                                                                                                                                              j@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.u.&@4.k@=@s+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "              l@m@n@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.U+9@o@p@<+                                                        .@q q q q q q q q q M+                                                                                                                                                                                                                                                                -@q@r@J+!.s@t@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.H.u@v@w@e@<+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "          x@y@z@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.h@A@B@C@)@                                                                .@q q q q q q q q q M+                                                                                                                                                                                                                                                                            >.D@r.E@F@h.8@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.t@t.W+G@8.|.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+  "    )@H@I@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.U+J@H@s+                                                                        .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                          K@f.L@M@q+H.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.U+I@N@H@o.C.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ",
+  "O@P@Q@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.]+M@_+p.                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                    e.R@S@F@T@6.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.U@V@g.W@X@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ",
+  "H.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.Y@4.W@Z@                                                                                    .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                              )@`@ #y.I@.#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.b@+#@###$#                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.%#v@'@&#                                                                                          .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                        D *#'.=#-#;#7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.l+M@k@p@e.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.D+>#,#)@                                                                                                .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                    '#k.(+)#l+7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.u.&@!#z.Y+&#                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+  "7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.~#4.2.|.                                                                                                      .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                              {#<@]#^#}+n.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.6.^+/# #:+t+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ",
+  "7.7.7.7.7.7.7.7.7.7.7.7.7.7.w.B@K@                                                                                                            .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                        Z@I+(  #/#V+U+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.z@_#N@H@*#C.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ",
+  "7.7.7.7.7.7.7.7.7.7.7.7.V@:#t+                                                                                                                .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                    t+H+G+0@<#.#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.U@E+=#E.[#                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "7.7.7.7.7.7.7.7.7.}#>@D@                                                                                                                      .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                              D H+|#[@m.~#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.1#2#3#4#5#                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "7.7.7.7.7.7.7.G.(#;.                                                                                                                          .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                        )@6#7#F@}+u.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.,@g@B@8#-@                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+  "u.7.7.7.6.9#R@                                                                                                                                .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                  p.;@0#9#~.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.~.a#*@p@e.                                                                                                                                                                                                                                                                                                                                                                                                                                                                ",
+  "b#7.,@@#c#                                                                                                                                    .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                            -@f.(+d#}@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.u.u@v@w@e#Z@                                                                                                                                                                                                                                                                                                                                                                                                                                                      ",
+  "f#g#|.                                                                                                                                        .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                      B.:#a@x.%#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.t@T@y@(#`@>.                                                                                                                                                                                                                                                                                                                                                                                                                                            ",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                              C.o.H@N@I@U+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.h@V+y.|#H+D                                                                                                                                                                                                                                                                                                                                                                                                                                   ",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                                        |.8.G@W+t.t@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.]+<#>@ #h#<+                                                                                                                                                                                                                                                                                                                                                                                                                        ",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                                                  <+e#S@^#i#H.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.n.&@4.E@f.5#                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                                                            s+<@j#M@l+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.;#x.F+G+k#>.                                                                                                                                                                                                                                                                                                                                                                                                  ",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                                                                      $#f.(+d#l#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.~#m#n#o#<@q.                                                                                                                                                                                                                                                                                                                                                                                        ",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                '#r.).-#D+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.w.p#P@_+o.D                                                                                                                                                                                                                                                                                                                                                                             ",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          q#r#l.s#Y@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.z@t#W+7#q@e.                                                                                                                                                                                                                                                                                                                                                                  ",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  D u#v#F.w#d@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.H.x#O@@#n+[#                                                                                                                                                                                                                                                                                                                                                        ",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |.y#z#A#m#t@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.U@<#>@7  #B#C#                                                                                                                                                                                                                                                                                                                                          ",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      <+e@w@!#&@u.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.Y@m.^#B@g#H+&#                                                                                                                                                                                                                                                                                                                      j.=@3.",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                e.D#*@a#~.H.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.n.x#p#F+z#R@E#                                                                                                                                                                                                                                                                                                )@6#F#!#u@H.7.7.",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          p.Z+G#/#t#z@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.D+I@>#E@_+h#-@                                                                                                                                                                                                                                                                        C.D@v#y.m.~#7.7.7.7.7.7.7.",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    D o._+P@p#w.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.}#T@)#0@F###D@<+                                                                                                                                                                                                                                                C#r.a@V@U@7.7.7.7.7.7.7.7.7.7.7.7.",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                -@B#o#n#T@~#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.H.H#I#v@m+J#R@'#D                                                                                                                                                                                                                   ;.:+g#E@y@s#l#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.",
+  "                                                                                                                                              .@q q q q q q q q q M+                        |.b+K#L#M#N#O#P#Q#R#S#T#U#V#K.h+W#X#B+X Y#J Z#^@^@Z#J a.k B+`# $.$+  $Y ; 3 4 @$#$$$%$&$# B *$=$D                                                                                                                                                                                                                                                                                                                                                                                                                                                 >.:+-$0@V@1#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.t@w.m.g@;$>$ ###8.D.C.                                                                                                                                                                                p.x@,$L@>#i@l#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.",
+  "                                                                                                                                              .@q q q q q q q q q '$)$!$~${$]$4@^$M I./$($9.q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q q ^.1+k+_$:$_ A+<$Q#O#[$}$|$Z@                                                                                                                                                                                                                                                                                                                                                                                                                                '#,#L@9#i#u.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.6.(@t#J@[@B@1$f.:+c#&#                                                                                                                                        )@C  #k#<@'.B@F@I#b@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.",
+  "                                                                                                                                              .@q q q q q q q q q p q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q q q q q q q q q q q q q q q q 9.n 2$k 3$N.4$5$6$7$8$                                                                                                                                                                                                                                                                                                                                                                                                                    1.I+z#[@_#Y@7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.U+H#}+I#+#v@9$m+0$v#4#C@H+C#Z@                                                                                >.c#,.D#g#(#B@s.^#a$m.K+Y@7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.",
+  "                                                                                                                                              ].q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q 9.b$c$d$- e$f$*$|.                                                                                                                                                                                                                                                                                                                                                                                                            C.q#W@_@g@l+7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.h@}@~.u@g$h$I@v.-#+#O@i$!#y@[@s.=#3#>$j#o#*@3._@g.`+[@y@v@9#J@a$V@I#V+T@u@~.,@U@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.",
+  "                                                                                                                        t+                    ].q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q ^.k+j$k$l$m$n$6#-@                                                                                                                                                                                                                                                                                                                                                                                                        j.;@G#9$-  #(@H.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.",
+  "                                                                                                            1.h#|#F+-#H#8.                    ].q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q @.o$p$q$r$s$v+1.                                                                                                                                                                                                                                                                                                                                                                                                        ;.`@t$3#M@G.d@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.Y@v.",
+  "                                                                                                  E#W@3#)#q+u.7.7.7.7.7.8.                    ].q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q |+t M u$v$w$x$                                                                                                                                                                                                                                                                                                                                                                                                        D q#,#]#A#i@1#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.~#h$;$|#-.D   ",
+  "                                                                                          K@_+[@y$7.7.7.7.7.7.7.7.7.7.7.8.                    ].q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q i.                                                                                                                                                                                                                                                                                                                                                                                                                      -@q@v#o@n#i@,@H.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.H.u@v@z.I+&#            ",
+  "                                                                                  5#'.z$u@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.                    ].q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q i.                      8.c#                                                                                                                                                                                                                                                                                                                                                                                                          &#*###F#0@)#T@Y@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.w.)#A$=@j.                      ",
+  "                                                                          '#t$A#s@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.                    ].q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q   q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q i.                      v.7.U@V+!#3.W@H+)@                                                                                                                                                                                                                                                                                                                                                                                                            $#6#r#L@y@V@~.U+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.1#w#^#o@H@Y+-@                                ",
+  "                                                                  X@G+B$q+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.                    ].q q q q q q q q q q q q q q q q q q q q q q q C$1+k+_$D$E$V#4@O N.- P.5 F$G$H$I$H J$K$L$M$N$O$P$Q$R$S$T$U$V$#+W  $X$*+=+Y$Z$`$,+ %.%p$+%@%#%q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q i.                      v.7.7.7.7.7.7.7.n.x#p#F+z#R@D.                                                                                                                                                                                                                                                                                                                                                                                                                l@-.2.J#L@F.O@w# @6.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.b@_#n#B@r#p+j.                                              ",
+  "                                                          C.e@F+x#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.                    ].q q q q q q q q q q |+$%+%`#%%&%H$*%=%-%F ;%&#                                                                                              1.>%K#,%'%)%G$!%~%4+{%]%0.s p q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q i.                      v.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8@<#N@J#:+|.                                                                                                                                                                                                                                                                                                                                                                                                                      C.D.x@,#G@@#/#+#^+(@Y@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.H.D  +s@_#g@A#A$E.x@p.                                                            ",
+  "                                                    D R@9$w.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.                    ].q q q q q q q q q ^%)@                                                                                                                                                  ;./%(%_%I$:%b.<%Z#K 9.q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q i.                      v.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.h@[%y@7#e#;.                                                                                                                                                                                                                                                                                                                                                                                                                                  t+-@}%6#2._+(#A$|%W+M@x.h$x#D+n.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.U+ @^+-#1%N@>$(#g#D#-.D.t+                                                                                ",
+  "                                              t+B#;$}@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.                    L+q q q q q q q q q M+                                                                                                                                                                          ;.2%3%4%z+] 5%/@p q q q q q q q q q q q q q q q q q q q q q i.                      v.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.u.u@4.k@A.$#                                                                                                                                                                                                                                                                                                                                                                                                                                                      C.s+X@}%-.x@I+C@B#f.'@g#6%J#z#F#o#E@(+[+=#`+l.P@o@A$]#F#z#J#'.W@7%2.D#e@`@H+8%:@c#1.                                                                                                          ",
+  "                                        >.8#y@1#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.                    .@q q q q q q q q q M+                                                                                                                                                                                          9%0%a%b%c%d%e%f%q q q q q q q q q q q q q q i.                      v.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.w.d#_@r.:@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+  "                                  &#k.n#8@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.]+m.>#m@=@|.                    .@q q q q q q q q q M+                                                                                                                                                                                                          g%h%i%j%k%l%m%p q q q q q q i.                      v.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.D+E+F+H@-.t+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                            Z@:#/+}#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.h@i@[+r.n%C.                              .@q q q q q q q q q M+                                                                                                                                                                                                                        D o%p%q%r%v s%t%                      v.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.U+t#z$u%6#<+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                        }%0@%#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.U+9@o@p@<+                                        .@q q q q q q q q q M+                                                                                                                                                                                                                                      )@                      v.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.n.}  +^#]#<@{#                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ",
+  "                  D 4#v%H.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.]+A@B@C@)@                                                .@q q q q q q q q q M+                                                                                                                                                                                                                                                              w%H.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.l+)#(+'@B.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "              E#A$x%7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.}#a$E@e@|.                                                        .@q q q q q q q q q M+                                                                                                                                                                                                                                                                1.y#'.m+9#m#z@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.}@d#(+8#-@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "          e@^#h@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.z@d#0#h#t+                                                                .@q q q q q q q q q M+                                                                                                                                                                                                                                                                            C.:@8#S@;$9@H#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.~.9#0#R@;.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+  "    Z@ #^+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.Y@i$g#1.                                                                        .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                          l@p@o#v@5.t@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.n.5.y%X+p+>.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ",
+  "z%`+8@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.U@v@'@<+                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                    <+6#u%z$t#U+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.h@V+y.v#u#D                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ",
+  "H.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.D+y%,#)@                                                                                    .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                              t+-.H@F+E+D+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.Y@v.J+E.:@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.;#A#f@|.                                                                                          .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                          :@r._@!.(@7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.;#A%o@,#E#                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.}@;$B#t+                                                                                                .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                    $#A.k@4.u@u.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.x%B%k@p@e.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+  "7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.]+W+;@D                                                                                                       .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                              ;.e#7#y@[%h@7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.u.&@n#F#I+&#                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ",
+  "7.7.7.7.7.7.7.7.7.7.7.7.7.7.s@0$j.                                                                                                            .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                        |.:+J  #N@<#}#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.6.[%/#G@8.|.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ",
+  "7.7.7.7.7.7.7.7.7.7.7.u.!.f@C.                                                                                                                .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                    C.n%E.P@-#D+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.U+h.>@-$u#D                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ",
+  "7.7.7.7.7.7.7.7.7.1#g.:@                                                                                                                      .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                n%'.0@i@]+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.Y@s#F+r#n%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "7.7.7.7.7.7.7.t#-$&#                                                                                                                          .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                        t+k#r@z$[%6.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.D+A@P@:#B.                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+  "u.7.7.7.d@F@h#                                                                                                                                .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                  &#I+F#n#y$u.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.b@+#o@7%D.                                                                                                                                                                                                                                                                                                                                                                                                                                                                ",
+  "%#7.K+k@-@                                                                                                                                    .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                            e.p@k@M@l+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.(@O@L@A.{#                                                                                                                                                                                                                                                                                                                                                                                                                                                      ",
+  "B$7%D                                                                                                                                         .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                      $###@#+#b@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.q+i$0#;@p.                                                                                                                                                                                                                                                                                                                                                                                                                                            ",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                                o+g#|%E+U@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.u.y$!#z.e@<+                                                                                                                                                                                                                                                                                                                                                                                                                                  ",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                                        C.*#G+9$h.d@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.t@m.A#F#C@s+                                                                                                                                                                                                                                                                                                                                                                                                                        ",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                                                  |.y#u%y@T@t@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.K+J@m+:#q#C.                                                                                                                                                                                                                                                                                                                                                                                                            ",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                                                                                                                                                                                                                                                                                            Z@e#w@!#&@u.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.Y@_#[@u%Y+;.                                                                                                                                                                                                                                                                                                                                                                                                  ",
+  "                                                                                                                                              .@q q q q q q q q q M+                                                                                                                                                                                              C%D%E%E%D%F%                                                                                                                                                                                                                                                            e.D#0#9#x#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.u.s@M@B@k.X@                                                                                                                                                                                                                                                                                                                                                                                        ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          G%H%H%H%H%H%H%I%                                                                                                                                                  J%q q q q q q K%                                                                                                                      L%H%H%H%H%H%H%M%                                                                                                                              {#2.3.)#(@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8@v.N@1$`@&#                                                                                                                                                                                                                                                                                                                                                                            ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                                P%q q q q q q q q P%                                                                                                                    Q%q q q q q q R%                                                                                                                                        K@7%m+p#Q@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.t@}+/+j#8#c#                                                                                                                                                                                                                                                                                                                                                                  ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                              d S%q q q q q q q q ].R%                                                                                                                  Q%q q q q q q R%                                                                                                                                                  X@W@a@x.8@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.Q@A@l.G+k#>.                                                                                                                                                                                                                                                                                                                                                      ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                              T%q q q q q q q q q q U%                                                                                                                  Q%q q q q q q R%                                                                                                                                                            n%'.F+<#.#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.~#m#B$]  #,#q#D                                                                                                                                                                                                                                                                                                                                         ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                              V%q q q q q q q q q q W%                                                                                                                  Q%q q q q q q R%                                                                                                                                                                    D -.v#F.w#d@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.h@G.B%[+H@p+p.                                                                                                                                                                                                                                                                                                                      o+E.=#",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                              X%q q q q q q q q q q H%                                                                                                                  Q%q q q q q q R%                                                                                                                                                                              |.x@G@W+^+t@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.,@V@y.w@2.X@C.                                                                                                                                                                                                                                                                                              {#f@>$d#b@7.7.7.",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                              Y%q q q q q q q q q q Z%                                                                                                                  Q%q q q q q q R%                                                                                                                                                                                        &#`@1$N@v.8@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.]+^+/+o@v#R@'#C.                                                                                                                                                                                                                                                                      <+e@S@1%n@H.7.7.7.7.7.7.7.",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                              `% &q q q q q q q q .&M+                                                                                                                  Q%q q q q q q R%                                                                                                                                                                                                    X@k.B@M@s@u.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.h@i#2#;$*@g#y#l@                                                                                                                                                                                                                                              D -.|#;$[%6.7.7.7.7.7.7.7.7.7.7.7.7.",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                                T%q q q q q q q q T%                                                                                                                    Q%q q q q q q R%                                                                                                                                                                                                              ;.Y+u%[@I@Y@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.%#^++&J+G#f.o.)@                                                                                                                                                                                                                  C#;@ #g.B%T@]+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                                  @&#&q q q q #&$&                                                                                                                      Q%q q q q q q R%                                                                                                                                                                                                                        C.n%W@_@g@l+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.H.1#G.v%y%).F#:#Y+o+>.                                                                                                                                                                              C.B.p@z#=#O@G.z@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                                    %&H%&&&&H%*&                                                                                                                        Q%q q q q q q R%                                                                                                                                                                                                                                    j.R@z.y@m.U+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.H.;#T@2#>#[+G#r.I+q#q.D                                                                                                                                     D $#D  @R@:#X+l.J@5.U+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                                                                                                                                                                        Q%q q q q q q R%                                                                                                                                                                                                                                              t+D@r#a@a$H#7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.H.U@K+^+V@B%A#=#A$(#_+2.h#n%q.D                                                                               e.=&6###v#]#a@y@J@I#u@-&u.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                                                                                                                                                                        Q%q q q q q q R%                                                                                                                                                                                                                                                          $#=@]#!#T@~#7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.H.U@-&l#x%n@}+t.t#i@V@a$g@M@1%y%/#>@F+a@_@[+J+N@;$B$v@9#)#A%x.<#w#^+5.n@x%l#-&h@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                                                                                                                                                                        Q%q q q q q q R%                                                                                                                                                                                                                                                                    >.8.6%_@a  #G.d@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                                                                                                                                                                        Q%q q q q q q R%                                                                                                                                                                                                                                                                                  D q#,#]#A#i@;#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.-&2#",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                                                                                                                                                                        Q%q q q q q q R%                                                                                                                                                                                                                                                                                                q.Z+r@J+d#q+n.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.z@I#`+'.q#    ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                                                                                                                                                                        Q%q q q q q q R%                                                                                                                                                                                                                                                                                                            )@H+E.E@/#A@x#6.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.t@m#A#G@:+t+            ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                                                                                                                                                                        Q%q q q q q q R%                                                                                                                                                                                                                                                                                                                          t+:@<@ #P@4.t#;#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.q+4.m@q@Z@                      ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                                                                                                                                                                        Q%q q q q q q R%                                                                                                                                                                                                                                                                                                                                          p.k#n+o#F.p#y$8@7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.7.7.7.7.7.7.7.H.w.v.y@E@g#8.;.                                ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                                                                                                                                                                        Q%q q q q q q R%                                                                                                                                                                                                                                                                                                                                                          <+=&q@,$0$|%v@V@y$%#7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7  .7.7.7.7.7.7.7.u.x%V@/#0#n+H+Z@                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                                                                                                                                                                                                                    %&;&$&H%>&,&'&)&!&~&{&                              Q%q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                              Z@n%C@_+m@J+^#E+i#;#6.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.d@w  .T@V@9#9$m@k.D@)@                                                            ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        . ]&]&]&]&]&]&^&                                                                `%]&]&]&]&]&]&/&                          d ]&]&]&]&]&]&d                                                           `%(&_&:&q q q q q q q q q q q .@<&[&`%                      Q%q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                    ;.B.k#R@'@J#m@m+9$v@+#I#}+H#U+7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.6.l#5.v.B%z$[+0$H@8#p+:@;.                                                                                  ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                                                      5&6&S%q q q q q q q q q q q q q q q q q L+>&7&                  Q%q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                  )@E#B.q#D@:+h#Z+p@f@7%:#r#-$ #G#0$k@B@_@a@[+(+E@m@7# #-$r#r.,#=@R@Y+x@-.n%X@K@j.                                                                                                            ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                                                  8&9&0&q q q q q q q q q q q q q q q q q q q q q #&a&M+              Q%q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                                              c b&S%q q q q q q q q q q q q q q q q q q q q q q q q q c&d&            Q%q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                                            e&f&q q q q q q q q q q q q q q q q q q q q q q q q q q q q q |&g&        Q%q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                                          h&i&q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q j&9%      Q%q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                                        k&i.q q q q q q q q q q q ].l&H%T%}&m&h&n&o&p&q&:&q q q q q q q q q q r&9%    Q%q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                                      F%].q q q q q q q q q L s&t&u&                      ]&J%v&q q q q q q q q w&c   Q%q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                                    ]&S%q q q q q q q q q x&5&                                y&z&S%q q q q q q q K%  Q%q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                                  8&A&q q q q q q q q B&C&                                        8&D&q q q q q q q T%Q%q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                                E&F&q q q q q q q q _&M%                                            g&X%L q q q q q S%s&q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                                |&q q q q q q q q |&                                                    Z%G&q q q q q q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                              H&0&q q q q q q q X%                                                        t&G&q q q q q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                              I&q q q q q q q J&                                                            K&q q q q q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                            L&q q q q q q q M&U                                                               ,&q q q q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                            N&q q q q q q ].G%                                                                `%O&q q q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                          }&q q q q q q q P&                                                                    L%q q q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                          Q&q q q q q q R&E                                                                       S&q q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                        M%].q q q q q q b&                                                                        I%q q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                        Z%q q q q q q T&.                                                                           F&q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                        U&q q q q q q U&                                                                            !&q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                        V&q q q q q q F%                                                                            W&q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                      y&q q q q q q S%U                                                                               X&q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                      ]&q q q q q q Y&                                                                                Z&q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                      Y%q q q q q q a&                                                                                `&q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                      `&q q q q q q @&                                                                                 *q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q |&                                                                1&q q q q q q 2&                          3&q q q q q q 4&                      .*q q q q q q +*                                                                                @*q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        }&q q q q q q #*                                                                $*q q q q q q 2&                          3&q q q q q q 4&                      Q%q q q q q q %*                                                                                G%q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        &*q q q q q q **                                                                C&q q q q q q 9&                          3&q q q q q q 4&                      +.q q q q q q h&                                                                                7&q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        %*q q q q q q a&                                                                k&q q q q q q =*                          3&q q q q q q 4&                      -*q q q q q q %*                                                                                /&q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        m&q q q q q q J%                                                                L%q q q q q q ;*                          3&q q q q q q 4&                      >*q q q q q q ~&                                                                                ,*q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        '*q q q q q q ;*                                                                +*q q q q q q )*                          3&q q q q q q 4&                      !*q q q q q q @&                                                                                n&q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        8&q q q q q q q&                                                                Z%q q q q q q ~*                          3&q q q q q q 4&                      F%q q q q q q )*                                                                                4&q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        {*q q q q q q S&                                                                !*q q q q q q ]*                          3&q q q q q q 4&                      G%q q q q q q f&                                                                                ^*q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                        g&0&q q q q q /*                                                                `&q q q q q q 4&                          3&q q q q q q 4&                      E&i.q q q q q #&`%                                                                              Y&q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                          (*q q q q q _*                                                                H%q q q q q q  *                          3&q q q q q q 4&                        Y&q q q q q q :*                                                                            u&#&q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                          <*q q q q q [*                                                                =*q q q q q q H&                          3&q q q q q q 4&                        ~*q q q q q q 2&                                                                             *q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                          _&q q q q q q }*                                                              r&q q q q q q d                           3&q q q q q q 4&                        $*q q q q q q ].d                                                                           q&q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                          X%q q q q q q F%                                                              |*q q q q q  &                            3&q q q q q q 4&                        D R&q q q q q q .*                                                                        ^&G&q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                          1*q q q q q q p&                                                            e&q q q q q q r&                            3&q q q q q q 4&                          K%q q q q q q .&M+                                                                      a&q q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                          /&q q q q q q F&                                                            3&q q q q q q |&                            3&q q q q q q 4&                          2*q q q q q q q )&                                                                    3*[*q q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                            (*q q q q q q ,*                                                          M&q q q q q q ;&                            3&q q q q q q 4&                            &&q q q q q q #&,*                                                                  j&q q q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                            ;*q q q q q q 9&                                                        4*q q q q q q ].E                             3&q q q q q q 4&                            m&q q q q q q q 5*9%                                                              T%q q q q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                            ~&q q q q q q L 6*                                                    c 7*q q q q q q 8*                              3&q q q q q q 4&                              q&q q q q q q q =*                                                            ,*S%q q q q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                            9*.&q q q q q q 0*E                                                   P&q q q q q q q :*                              3&q q q q q q 4&                              a*S%q q q q q q q X%                                                        a*|*q q q q q q q q q q q R%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                              Q%q q q q q q q b*D                                               L&q q q q q q q c*c                               3&q q q q q q 4&                                d*q q q q q q q q p&                                                    e*c&q q q q q q q q q q q q R%                                                                                                                                    f*g*t+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                              h*S%q q q q q q q x  &9*                                        L&].q q q q q q q i*                                3&q q q q q q 4&                                  s&q q q q q q q q 6&U                                               j*L+q q q q q q E%q q q q q q R%                            f*k*l*m*n*o*p*m*l*q*t+                                                                            r*s*t*u*u*u*v*w*x*                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                .*q q q q q q q q   y*8&                                  D z*L q q q q q q q 0*c                                 3&q q q q q q 4&                                  A*0*q q q q q q q q N&'*                                        g%U&q q q q q q q ,&Q%q q q q q q R%                        g*B*C*u*u*u*u*u*u*u*u*u*D*E*t+                                                                    F*G*u*H*I*J*K*L*M*N*u*O*P*                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                U Q*q q q q q q q   q T&b&9%                            h&/*q q q q q q q q L I%                                  3&q q q q q q 4&                                    /& &q q q q q q q q #&**g%                                U @&R*q q q q q q q S&c Q%q q q q q q R%                      q*S*u*u*u*u*u*u*u*u*u*u*u*u*u*T*U*                                                                r*o*u*V*W*          |.X*Y*C*Z*                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                  '*S%q q q q q q   q q q  &)&]&D                 g%`* =q q q q q q q q q q -*                                    3&q q q q q q 4&                                      .=R*q q q q q q q q q S%)*.=                        %&X%(*q q q q q q q q +=`%  Q%q q q q q q R%                    @=u*u*u*u*H*n*#=I*p*u*u*u*u*u*u*u*S*$=                                                            %=S*u*@=                  $=&=u**=                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                    t&0&q q q q q   q q q q q q ==-=;=-*>=z*+.x&Q*L q q q q q q q q q q q b*D                                     3&q q q q q q 4&                                        e* &q q q q q q q q q q q B&U&4&h&a*d '$8&6*(&,='=q q q q q q q q q q )=`%    Q%q q q q q q R%                  !=u*u*u*~={=F*        ]=E*N*u*u*u*u*u*S*U*                                                        ^=N*u*/=                      (=u*u*K*                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                      _=L q q q q   q q q q q q q q q q q q q q q q q q q q q q q q q q D&9%                                      3&q q q q q q 4&                                          /&7*q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q ,&E&      Q%q q q q q q R%                P*C*u*Y*:=t+                <+I*u*u*u*u*u*n*t+                                                    t+n*u*v*t+                        <=u*Y*r*                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                        o&].q q q   q q q q q q q q q q q q q q q q q q q q q q q q q <&U                                         3&q q q q q q 4&                                            `%x&q q q q q q q q q q q q q q q q q q q q q q q q q q q q i.[=          Q%q q q q q q R%                I*u*Y*}=                      D #=u*u*u*u*u*L*                                                    |=u*u*E*                          1=u*u*n*D                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                          .=V&q q   q q q q q q q q q q q q q q q q q q q q q q q #&b&                                            3&q q q q q q 4&                                                1*:&q q q q q q q q q q q q q q q q q q q q q q q q q +=G%            Q%q q q q q q R%              x*u*u*2=                          3=o*u*u*u*u*4=|.                                                5=H*u*u*^=                            ~=u*u*Z*                                                                                                                                                                                                                                                                                                                                                                                                                                                                ",
+  "                                                                                                                                              .@q q q q q q q q q M+                          N%q q q q q q O%                                            u&V%i  .q q q q q q q q q q q q q q q q q q q q q q l&6=                                              3&q q q q q q 4&                                                  g%#*S%q q q q q q q q q q q q q q q q q q q q q 7=Y%                Q%q q q q q q R%              8=u*<=                              2=u*u*u*u*u*}=                                                M*u*u*v*                              J*u*u*D*f*                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                              )&,=,=,=,=,=,=,=,=,=9%                          N%q q q q q q O%                                                9  =X%|*q q q q q q q q q q q q q q q q q G&0=%*                                                  3&q q q q q q 4&                                                      9=P%a=q q q q q q q q q q q q q q q q L r& *g&                  Q%q q q q q q R%          g  *H*u*b=                              C.S*u*u*u*u*c=                                              g*Y*u*u*d=                              e=u*u*u*{=                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                                                                                                                                                    D 4*|&I&].q q q q q q q q q q _*Z&T%}*                                                                                                                                  f=p&I&].q q q q q q q q q R&D%K&e&                                                  {  =u*<=                                  V*u*u*u*u*8=                                              E*u*u*u*X*                              3=u*u*u*g=                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                                                                                                                                                            D 3*$*h=T%3&U%i=d&.=.                                                                                                                                                 g&j=4*~&[&3&T% *m&9=                                                          M  *u*$=                                  c=u*u*u*u*I*                                              g=u*u*u*q*                                N*u*u*u*P*                                                                                                                                                                                                                                                                                                                                                                                                                                                            ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                V  *m*                                    L*u*u*u*u*8=                                            ]=u*u*u*u*r*                                g=u*u*u*X*                                                                                                                                                                                                                                                                                                                                                                                                                                                            ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                g  *k=                                    |=u*u*u*u*s*                                            !=u*u*u*u*g*                                #=u*u*u*O*                                                                                                                                                                                                                                                                                                                                                                                                                                                            ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          d=u*u*u*u*l=                                            w*u*u*u*Y*                                  M*u*u*u*Y*C.                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+  "                                                                                                                                              m=4&4&4&4&4&4&4&4&g%                                              c               9%n=n=8&              %&4&4&c                           }&4&o=                    c               g&4&4&.=        .=4&4&9*                                                                  j*4&k&                              c                                         E @&K%**C&                                                      D*u*u*u*u*5=    9*4&4&4&4&3&Z%p=9%                      ~=u*u*u*q=                1&4& *            s*u*u*u*u*W*                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+  "                                                                                                                                              `&q q q q q q q q e*                                          . )&X%              r=q q s=              Z%q q 9%                          <&q  =                9*b&=*              c q q .*        >*q q y&                                                                  7*q b*                          g%J%b&                                        +=q q q #*                                                    U*u*u*u*u*m*      {*q q q q q q q  &Y%                  |.H*u*u*u*n*                K%q y*            |=u*u*u*u*t=                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+  "                                                                                                                                              `&q q r&w&w&w&w&w&8&                                          Q*q ~*              r=q q s=              N%'='=U                           <&q  =                u=q b*              c q q .*        >*q q y&                                                                  7*q b*                          c&q v=                                      g%q q q&F%%&                                                    :=u*u*u*u*k*      {*q q V&&&+='=q q L L%                b=u*u*u*u*w=                .*'=<&            J*u*u*u*u*!=                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+  "                                                                                                                                              `&q q h*                    '$'$D             c h*U           E%q ~*              r=q q s=                                }*E             <&q  =  g&h*U         D&q b*              c q q .*        >*q q y&        . '$                {*'$                  M+9*            7*q b*            9*g%          S%q v=          E h*c                 9%M%  8&q q C%          y&}*E&                A*d               c R%|@t*u*u*u*g=        {*q q ]*      h&:&q V&          M+9=g&x=u*u*u*u*#=  g%A*                        c h*J*u*u*u*u*X*          U g%              9%R%c                 9*M+                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                              `&q q h*              u&,&S%q q L+'&U     ]&y=L q q z=N%     &L q ]..@'*          r=q q s=              h=.@.@9%      n&0*q G&A=i=.@B=    <&q  =3&R&q S%]*    y=#&q #&.@:*          c q q .*        >*q q y&    C=R&q q ].x&d       h&F&q q |*D=      J&.@Q%E=L L+e&          7*q b*    Q*.@o&a&i.q c&1*  E .@q q i..@7&  r=8*G&q T&,=E     3&.@+=!&].0&J&==q q L+.@A*g&z&R*q q #&j  &d       k&z=q q T&a&9%    D V%==q 0&F=G=u*H*H=        {*q q ]*        $&q q H&    '*+=q q :&I=J=u*u*K=L=S%q q .&**c     +..@M=      D=:&q N=O=P=Q=R=|=  a=.@L&J%].q |*j*      '$_&#&q S%;*y&    :*.@Q*U%S%q U%                                                                                                                                                                                                                                                                                                                                                                                                  ",
+  "                                                                                                                                              `&q q 1*k&k&k&k&S=    =*q G&<*Q*q q >=  {* &q y=2&O&q #&'*  0&q q q q ,*          r=q q s=              Z%q q 9%    ]&#&q T&I&S%.&q ==    <&q i.L T=:&q q ~&  7*q q q q 1*          c q q .*        >*q q y&  4&q L+Q&s&S%q  =    .=].q |*<*q q >*    x&q ==q q Q*            7*q b*    E%q i&#&<*i.q 0&a*`%q q q q q 3*. X&q L+I&S%q )=    d*q L+L q 0&|&q q q q q {*v=q q z=y*q q   U=    L%L q .&_*q q x&    '&q q <*V=q Q=W=L*          {*q q ]*        .=q q !*  3*.@q :&y=G&q X=u*u*Y=q c&2& =0&q Q%    K%q y*    @&q q c&Z=L `=q  -s*  A&q i&[*<*i.q #&7&  U F&q i.I&T&q y*c   1*q i.#&q q G%                                                                                                                                                                                                                                                                                                                                                                                                  ",
+  "                                                                                                                                              `&q q q q q q q T%  g&** =o&    y*q j&  ;&q [*9=  9%,&v=G%    E%q ~*              r=q q s=              Z%q q 9%    b*q R*^&  3*.&q ==    <&q q ;&  A*:&q a&    D&q b*              c q q .*        >*q q y&  8*q 9&g&  k&,=3&c   )=q T=9%  3&q S%.   x&q q X%7&@*            7*q b*    E%q T&%&  p=q q `*    S%q v=    ]*q S%a*  2*[*q C&  d*q q .-7&&*  a*q q &*    `&+-P%    J&q   7=    7*q f&E   !*q  &7&5&q q d*E*@-#-q = C.          {*q q ]*        W&q q p&  J&q _*y&  d&q L $-u*%-q !&    d*Q% *    K%q y*  D R&q I&9%X*&-q q  -w*  A&q v&8&  C%q q o&  [=q #&e*  W&==q L&  1*q q  =3*C&                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                              `&q q c*B&B&B&B&t&        U m&b&_*q r&  5&q q ].S&`&G%        E%q ~*              r=q q s=              Z%q q 9%    .&q )*      a&q ==    <&q c&      y*q 2&    D&q b*              c q q P&        *-q q .   >&q q E%6&h=.     9*#&q W%7&7&{&L q F%  x&q .@c                 7*q b*    E%q J&    u&q q `&    S%q v=    -=q  =7&7&7&M&q ~*  d*q q @*      a*q q &*        c ,*d*F&q   (*  S=q q 3&    E&r=    @&q q a =-$---q ;-            {*q q ]*        3*q q .*  i&q ;*7&7&7&L+q >-u*,-q q Q*^*n&E&      K%q y*  2*q q Y%  E*u*'-q  -)-  A&q ,&    A*q q D=  Q&q z=7&7&7&l&q ,&  1*q q n&                                                                                                                                                                                                                                                                                                                                                                                                        ",
+  "                                                                                                                                              `&q q h*              .=+-#&q L S%q l&    >=#&q q q q -=r=    E%q ~*              r=q q s=              Z%q q 9%    q q z*      >*q ==    <&q y=      r&q b*    D&q b*                #&q )&        W%q q 9*  {*/*q q q q S%z*  }*q q q q q q q q 3&  x&q 7*                  7*q b*    E%q )&      ].q v=    S%q v=    '=q q q q q q q A=  d*q q '$      a*q q &*    j=A=S%q q T&q   i&  H&q q L%            V%q q q q q q q [*            {*q q ]*        ]&q q 3&  0&q q q q q q q O=u*G=!-q q q q (*L&    K%q y*  h&q q &*  ~-u*{-q  -)-  A&q H%      0&q ]-  +=q q q q q q q +-  1*q q *&                                                                                                                                                                                                                                                                                                                                                                                                        ",
+  "                                                                                                                                              `&q q h*            A*R*q +=j*y&J&q S&      R%i*j&v&q q A=    E%q ~*              r=q q s=              Z%q q 9%    i&q J%      K%q ==    <&q  =      D&q b*    D&q b*                R&q J&        ;=q i.        1&|&y*L q q $*E&0&q Z&`*`*`*`*`*G%  x&q /*                  7*q b*    E%q ~*      S%q v=    S%q >=    Y&q M&`*`*`*`*`*4*  d*q q 9%      a*q q &*    z=q 0*(&S=C=q   E%  *&q q `*      .=9%  s=q L ^-/-(-_-`*i=            {*q q ]*        C=q q '*  A&q .-`*`*`*:-/-<-u*u*[-+*J%V&q q [*y&  K%q y*  /&q q Y%  @=u*}-q  -s*  A&q z&      #&q ]-  j&q 0*`*`*`*`*`*C%  1*q q e&                                                                                                                                                                                                                                                                                                                                                                                                        ",
+  "                                                                                                                                              `&q q h*            L%q q ]&    /*q l&  }&**,&    9*S&q y*    |-q >&              r=q q s=              Z%q q 9%    8*q :&R%  W&.@q ==    <&q  =      D&q b*    .-q S&                 =q T&e*    e&c&q F&  c b&U&Y%    5&q q U%  Q*q 2&    '*)&(&y&  x&q  =                  7*q b*    E%q ~*      S%q v=    R*q X%    J%q c*E&  9%^*i**&  d*q q D       a*q q &*  3*q q T%    ;*q   i&  D .@q 0=    f=q 0&1&}&q q 1-S*r*D=]*}&            {*q q ]*      d&.@q y*    D&q  =    r=2-3-4-5-O=6-,*    `*q q '*  K%q y*  c R&q  =9*~-&-q q  -c=  A&q z&      #&q ]-  z&q R*`%  c **D='*  1*q q d                                                                                                                                                                                                                                                                                                                                                                                                         ",
+  "                                                                                                                                              `&q q h*            2*q q w&+*6&q q T=  N%q q ;*+*!*R*q **    M&q E%J&'*          r=q q R*B&B&B&B&B&s&  Z%q q 9%    I%L q .&Y&T&].q ==    <&q  =      D&q b*    Z&q T&6&L%            Z%q q 0&y*+=i.q q K&    .-q .&i*n=,&q G&5&  3&q L K%d*7*q |*9%  x&q  =                  7*q b*    E%q ~*      S%q v=    X&q O&U=8&{&0&q D&4&.-q L e*  d*q q D       a*q q &*  9%[*q T=j*V%L q   [*    .*q q D&>&i&q |-D $=7-q V=8-|&L q z*            {*q q .&B&c*i.q q i.@*    d&q q A=[=/*q 9-0-a-b-q '=i=t&r&q R&E&  K%q y*    >=q q B=c-0&d-q  -L*  A&q z&      #&q ]-  S=].q I&4&<&q q 4*  1*q q '$                                                                                                                                                                                                                                                                                                                                                                                                        ",
+  "                                                                                                                                              `&q q h*              K%q q q |*'&q S%`%  $&S%q q q q D%9%    ]*q q q L&          r=q q q q q q q q N&  Z%q q 9%      _=T&q q u=|&q R*    <&q  =      D&q b*    t&L q q z*              `&].q q q q G&~*g&    y&l&q q q q ==3&      )&L q q q c&.=    x&q  =                  7*q b*    E%q ~*      S%q v=    W%q q q k&  o&==q q q i.(&    d*q q D       a*q q &*    s=0&q q T&)&q   q '*  c ,&L q q q X&2*5=S*e-f-q q q q 9&c             {*q q q q q q q Y&]&        C=#&q q q T&o@u*u*g-h-q q q q c*%*    K%q y*    D )*G&q G&O=i-q j-!=  A&q z&      #&q ]-    ;& &q q q #&$&    1*q q '$                                                                                                                                                                                                                                                                                                                                                                                                        ",
+  "                                                                                                                                              r=%*%*E&                ]&!*o=M%9%%*%*.     '$j*@&o&6=          &*@&Y%M+          9*%*%*%*%*%*%*%*%*.=  9=%*%*g&    g%c E ]&3*  |&q a=    5&%*m=      '*%*2*      @*d*`*R%                d j*K&D=o&e&            .=T%K&;&y&          8&U%@&d&9*      5&%*m=                  @*%*2*    f=%*3*      h&%*^&      k&@&j*`%    y&Y%D=L&'$      S=%*%*        9%%*%*M+      G%3&h=}*  I  %%*h*      /&_=!*}&c g*t*u*D*k-}&@&(&6=                c %*%*%*%*I%H&g%              S=`*@&~&l-u*u*u*u*V*p=3&[=C&9*      %&%*.=    9=  9=]&m-u*n-q ]$x*  6*%*W&      1&%*r=      M%t&D=1*R%      d %*%*c                                                                                                                                                                                                                                                                                                                                                                                                         ",
+  "                                                                                                                                                                                                                                                                  ;*G&B=$*  M%F&q 0=                                                                                                                                                                                                                                                                  3=g=u*v*5=                                                                H=u*u*u*u*o-                          |-].z=9=l*p-9-q q-]=                                                                                                                                                                                                                                                                                                                                                                                                                                                          ",
+  "                                                                                                                                                                                                                                                                  p=0&q q R&#&q L }&                                                                                                                                                                                                                                                                f*r-u*p*s-                                                                  3=H*u*u*u*m*                          P%q q 0&t-L q `=u-                                                                                                                                                                                                                                                                                                                                                                                                                                                            ",
+  "                                                                                                                                                                                                                                                                    $*.-|-==i&.-6*                                                                                                                                                                                                                                                                |.O*u*v-g*                                                                      T*u*u*u*n*                            T%I&w-Q=x-]$$-V*                                                                                                                                                                                                                                                                                                                                                                                                                                                            ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                t+#=u*m*3=                                                                        B*u*u*u*&=                                  v*u*u*u*!=                                                                                                                                                                                                                                                                                                                                                                                                                                                            ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              t+<=u*#=|.                                                                          }=u*u*u*u*<+                              t+H*u*u*H*g*                                                                                                                                                                                                                                                                                                                                                                                                                                                            ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            t+o-u*o-t+                                                                            t+4=u*u*u*1=                              P*u*u*u*#=                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          C.8=u*I*t+                                |.E*b=                                          l*u*u*u*l=                              x=u*u*u*y-                                                                                                                                                                                                                                                                                                                                                                                                                                                              ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          z-u*g=f*                                  Z*u*l=                                          5=H*u*u*A-                              |=u*u*v*D                                                                                                                                                                                                                                                                                                                                                                                                                                                               ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        l*u*p*F*                                  C.p*u*1=                                            z-u*u*p*                              v-u*u*B-                                                                                                                                                                                                                                                                                                                                                                                                                                                                ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      C-u*q=W*                                    D-u*u*k=              x*)-E-J*f*                    F-Y*u*u*U*                          s-u*u*p*D                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    B-u*4=b=                                    ]=S*u*H*C.            Z*H*u*u*u*G-D                     J*u*u*/=                          X*u*u*x*                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }  =H*u*G-B*/=:=X*~-K*Z*{=l={=K*X*:=H-C-*=E*K*:=D*u*u*q=            g*C*u*u*u*u*u*Z*                    |.n*u*&=g*                      3=D*u*/=                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              b=&  =u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*w=            (=u*u*u*u*u*u*I-                      5=S*u*o-                      I-u*#=C.                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |.~=u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*V*            }=u*u*u*u*u*u*A-                        $=S*u*s*C.              C.c=u*O*f*                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            :=u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*c=            F*&=u*u*u*u*u*k*                          P*n*u*O*1=        C.e=g=u*w*t+                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            C-M*A  -|=|=A-z-M*I-s*|=/=:=*=~-~-E*X*X**=L*:=C-/=|=s*w*z-}=              {=H*u*u*u*d=                              t+*=N*u*o*d=M*I*S*u*T*}=                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        J-s*M*!=                                    |.}=/=d=E-M*:=1=                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "<=Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z  *Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z  *Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z  *Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z  *Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*K-L-u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*M-N-u*u*u*u*O-P-u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*Q-R-S-Q-T-u*u*u*u*u*u*U-V-u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*W-X-u*u*u*u*u*u*Y-L-u*u*u*Z-`-u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u* ;.;u*u*u*+;@;u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*Q-.##;$;%;&;u**;=;*;u*u*V-@;u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*W-X-u*u*u*u*u*u*-;;;u*u*u*z@>;u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*,;';P-u*u*u*);!;u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*~;{;u*u*%;&;u*];7.];u*u*V-@;u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*W-^;/;(;_;:;u*V-<;[;};|;1;u.2;};3;M-4;5;^;[;6;u*u*u*7;8;u*u*u*u*9;0;u*u*u*a;b;];u*c;d;u*];&;e;u*d;f;g;h;,;u*i;4;u  *u*R-Y-M-j;u*u*3;k;u*u*l;%;u*u*u*u*m;_;';};n;%;&;u*);7.@;};d;V-@;u*u*L- ;o;u*u*u*u*u*Q-p;';2;L-u*u*;;~;q;r;O-u*Y-s;b;=;t;u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*W-u;Y-v;.;u;w;x;4;y;v;z;A;U+T-v;w;B;t@Y-C;V-6.D;u*u*=;E;u*u*u*u*F;G;u*u*u*H;Z-u*u*f;1;u*O-t@R-u*I;E;u*J;.;u*K;t@B  ;u* ;O-L;d@M;u*N;U+a;u*[;m;u*u*u*u*g;E;-;v;e;%;&;u*M;7.G;v;*;V-@;u*O;_;m;u*u*u*u*u*P;2;Q;g;R;.#S;u*T;z@E;L-G;U;V;D;*;W;X;u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*W-X-u*u*u*<;>;u*-;;;u*u*u*z@>;u*u*B;Y;u*u*u*4;W;u*u*u*u*u*u*u*Z;`;u*u*u*u*&; >u*u*3;.>u*=;8;4;u*+>@>u*y;k;u*V;1;l  ;u*b;K-u*p;R-e;2;Z-#>$>';u*u*u*u*u*u*Q;);u*u*%;&;u*];7.];u*u*V-@;@>s;M-u*u*u*u*u*u*%>';P;u*u*k;&>u*T;I;u*u*u**>=>u*u*W-X;u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*W-X-u*u*u*_;%>u*-;;;u*u*u*z@>;u*u*B;Y;u*u*u*->1;u*u*u*u*u*u*u*);~;u*u*u*M-(;u*u*u*A;h@e;V;P-;>A;z@*;u*W-`;i; ;Q-^  ;>>V;u*u*,>);U;1;V-t;3;#;u*u*u*u*u*u*Q;);u*u*%;&;u*];7.];u*u*V-.#d@'>u*u*u*u*u*u*u*)>!>u*u*u*Y-#;u*T;1;u*u*u*[;W-u*u*W-X;u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*W-X-u*u*u*_;%>u*#;Y-u*u*u*.#>;u*u*B;Y;u*u*u*&;U;u*u*u*u*u*u*x;b;];u*u*u*E;/;u*u*u*u*!>&>~>u*f;0;*>u*u*{>d@]>^>u*J  ;0;]>u*u*G;^;p;/>P-;>(>_>u*u*u*u*u*u*Q;);u*u*%;&;u*x;7.];u*u*V-Y;:>V;I;u*u*u*u*u*u*B;.#J=u*u*T;&>u*T;1;u*u*u**>_>u*u*<>X;u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*W-X-u*u*u*_;%>u*[>j;`-:>u*}>1;Q-$>B;z@<>M-9;;>x;u*u*|>&>u*u*R-1>u*u*u*L;;>U-u*u*u*u*|;t@N-u*<>t@[>u*u*u*2>d@];u*3  >t@%;u*u*u*';X-u*u*4>t@5>u*u*9;`;u*u*Q;);u*u*%;&;u*u*;>_>`-A;V-@;u*U-_;W;u*u*&;6>u*P;`;l;z;7>z@G;u*T;1;u*u*u*8>';,>6>[;X;u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*i;);u*u*u*-;>>u*A;9>F;0>u*N-}>X-%;B;U+t;V;a>M;u*u*u*b>Y-u*u*h;W-u*u*u*L-|>u*u*u*u*u*d;a>u*u*J=|>%>u*u*u*U;&>u*u*Q  -c>e;u*u*u*1;d>u*u*e>=;u*u*u*H;-;u*u*S-9;u*u*d;]>u*u*V-`;2;N-N-f>u*u*M-2>B;u*Z-6;u*u*K-{;[;}>7>u*u*n;R-u*u*u*u*g>f;[>=>J;u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*B;Y;u*u*u*u*u*u*u*u*u*u*>>(;u*u*u*u*a>3;u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*h>P-u*u*k;k;u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*B;Y;u*u*u*u*u*u*u*u*u*u*+;L-u*u*u*P;1;g;u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*N-i>`;(;@;z;u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*{>5>u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*,;i;Q-u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "o*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u  *u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*",
+  "r-/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/  =/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/  =/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/  =/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/  =/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ",
+  "                                                                                                                                                                    j>C.                                                  j>k>  l>                                                                              m>n>                                                  o>n>                                p>q>                                                                                                                                                  r>s>                                            t>u>                                        p>q>                                                                                                                  t+v>w>                  x>y>                                                                                                      k>z>                                                                                        A>B>          n>m>                                                                                                                  ",
+  "            C>D>E>F>G>H>                t+I>A>      J>K>L>M>t+  k>N>O>P>Q>    s>R>S>L>T>              U>S>V>W>X>    Y>Z>`> ,.,    +,@,#,$,C.    p>%,&,*,o>          =,-,                            ;,>,>,,,',),    !,~,  {,w>t+],            ^,/,&,>,(,m>                _,G>  :,<,                            [,},                                                  |,1,                        2,C.    3,~,                                                          4,5,        6,7,                                                                        8,Q>                                            9,0,                                T>t+    a,b,                              Q>;,                                                                              c,O>d,U>        e,y  >    f,g,                                ),h,&,L>i,<,  j,>,+,    k,l,  m,l,      2,n,          o,7,      p,#,t>r>q,                                                              r,>,,,s,t,                U>u,          v,7,  #,n>                    N>w,          x,y,                                                                      ",
+  "          _,z,y>    x>A,C>            B,C,D,E,    F,S>t>G,I>H,  H,I,p,x>L>F,  J,9,C.c,`>K,            L,M,s>z,N,  C.O,P,o>Q,M>  E,=,X>.,R,S,  t+P>T,s>t>C.          =,-,                            U,V,p>j>n,V,.,  [,u>  {,w>t+],          W,X,l>m>Y,Z,c,                E,`,  H, '                            [,},                                                  |,1,                        .'t+    3,~,                                                          3,+'        Y,G,                                                                        8,Q>                                            9,0,                                @'q>    a,b,                              P>X>                                                                              W,x,            q,r  >    f,g,                              #'C,),p,c,$'E>  %'Z>},k>  &'*'  J,*'      D>='          -';'      C.>'o>r>q,                                                              ,'T>'')'!'v>              U>u,          v,7,  >'m>                    R>m,          v>-,                                                                      ",
+  "        l>A,  T>~'X,r,q>I>q>              {'E,    ]'r,    g,K>  ^'/'    ('_'  G>:'    <'['                  g,}'  >'#,    |'&,  k,1'    S,2'  _,A,                  =,J,3'V>4'  E>5'    S,6'        U,7'    ;,8'q>  9'v>  {,w>t+],          $,%,          y>X,:  'q,-'b,  0' 'M,a'b'#,c'd'#,#,#,N,  Q>e'&,f'g'  [,},  t+h'L,        k>1,C,e'E>m>  z,i'K>j'r,    k'@,q,@,1,          u>F>l'O>m'  M>n'#,#,G,3,J,},b'o'    p',,X,q'r'   's'h'K>o>E>v,-'E>                  3,+'        <'M,  C>>,-'X,t'k>u'X,1, '  o>K>]'v'3'w'  U,x  'L>}'o'  w>,'X,X,y'    &'v'`>-'Q>          z'c,  y>K>  p>a,:'A'#,>'  C.6'V>-'&,0,  x>,'X,X,y'  ['Z,&'6,F,      i'B'l'#,c,a,J,O>b'e,    5,,,X,N,`,        C'7'`>#,v>;,D'X,f'$'  :,E'F'/,5'G>G'P>=,='6'v'C,g'  n>h,L>l'='          g,K>l'x,x>A>A'b'#,),      H'],}  '#,w>f,I'J'j'K'    k'a,X,L'|,        C.*,y,            %'6'x'_,  &'*'  J,*'      D>='          -';'        J'q>r>b'M'A'v,>'  $']' '@,Y,:'C,&,L'r'  w, ']'@,N'A,    y>O's>        ,'P'    9'0,['Q'    J>2,  U>o,/,b'D>t+  v,7,  6,s>  ['X,-'>,|,        R>m,          h'R'  |,R,O,O>),  ='X,K>E'm>  Z>N>-'a'$'  G,s,v,-'(,  u>%,X,1,B,          ",
+  "        S';'),!,o>  7,  ^,),              {'E,    H,I,    |'q,   ,T'    #'x'  U'J'3,V'(,C.                  E>z,  +,!,    -,V,  *'d'    F,/,  9,3,~'3'1'c,          =,_,m>R'A'q>w,h,    ~'R'        U,B'1','&,&'    P>W'  {,w>t+],          >'X'',('5,k>  G,7'5  't+#'P>  0,h'  H, '        k>q'l,  Y'G,  <,f'  [,},C.R>d'          C.v>  t+h,/'  o,4,B>x>j'p>p,&,Z'  C>1,          r,:'  U'C,''  .'t+    3,]'.,`,`'q>t>L>M,   )1'  h'3,<,Y>$'R,C.o>),                  3,+'        e'r'r>V>;'  [,.)B,D>k>t+!,<,m>+))'t+0,R,  (,(  ,  c,w'  ',w,  p>@)G,y'O's>C._'Q>          a'B>  G,#)  z>@'y,k>u,s,  S,L'.,k>i,0,  I,/'  U'@)y>y'a'l,7,r>        @'q>    a,G'u>r'`'p,r>L>j>  S,$)          P>X>    A,l,  E,C,-,<,b'P'7,E,I,Z,c,H>n'^,q>N'h,  :'u'  s>Z'        -,V>v>  S'i,  ^,G>            q,r  >    f,Q,s>n>X'A>c,L>%)  &)f,        ''V,t+            %'6'>'`>q>&'*'  J,*'      D>='          -';'        7'p,r>`'<,k>_,d,  B,e'$'7,s>H>t+  u,D>  P'3'*)|,r>v'v>  _,=)          ,'P'  U,*,-)&);)    C'z,  U>>)U,G,z'w,  v,7,  ,)-,n>*,|'  t'v>        R>m,          !,g,o>v,')  z>5,K,))p,  h'!)  V>~)q>g'e'  Q>$)  q>K,  8,S'  u>l'l>        ",
+  "        :'c,u,N>        p's'              {'E,    B>>,~'I>X,P>  X>3'R,))#, ,  y'$)5,h'J'r'  1,3'3'),      C'K>c,  y'N,    s>],C.T'(,    g'X,  9'F'  o>i,I'          =,-,    v,|,o>v'X>~,6,          U,{):,:,4'@,o'  P>W'  {,w>t+],            j>C'=)@)J's>G,j'      C.])G,0,h'  H, '         'G>    U,r,h,@,q,  [,L>9,I'              y'R>,,q,^)  o,4'    /,-)k'z'    |,1,          X,/)    V'L,  .'t+    3,~,    C,M,y'#,I'I'E>l'  h'$'    >'{'U>y,k>                  3,+'        e'r'+,I>        x'o,I'I'O'e,m>X'    %)l'  0,e  'o'~,  t+#)I'I'I'A'Y>E>0,    8,Q>          a'B>  G,#)  z>O,    C>()  D'w,    9,0,o>#)I'I'I'A'[,y'1'              @'q>    a,b,    &,j>')}'I'I'4,O,          P>X>    @'Q,I'I'@)k'<,W>      I,),    X'-,  [,f'  B,-'T,t'          y,))    B>j'  ^,G>            q,r  >    f,g,    S>7,['&,I'I'Z,q,        X>#)C.  y'=,=,x,  %'6'  s,^)&'*'  J,*'      D>='          -';'        7'p,r>q,    o>])t+B,I'      Y,z,L'v,I>  P':'      K'I'  O'b,          ,'&,1,*,~)  &);)    C'z,  U>u,    o'd'  v,7,  ,)-,#'=)                R>m,          !,g,|'},        G>N,I'I'))G>  V>t>  k>V,  F,=,*'w'    -'E>I'I'#,+'        ",
+  "        N>Y>n,>)    n>  j,0'              {'E,        %)Y'j,,'    o>v>w>(,c'  K>C>    9,(,  B>A>A>m>    C'>,E,    C>f'    l>=,  ~)_'    0'^'  9,~)    /'q'          =,-,    L>v>  K'Q'E'J>          U,7'      m'!,  P>W'  {,w>t+],                  o>L>n,G,j'      C.`'q>0,h'  H,i'      )'()m>    P>^)E,;,q,  [,B'I>N,q>          ')J'/)p,(,^)  o,4'    ,,;'<,q'    |,1,          S>[,    z,m,  .'o>    3,~,    O,z>*)q'>'>'>'[,  h'$'      ''*'3,L'                  3,+'        e'r')'2'        !,B,>'>'>'U,m>X'    j>}'    R  ']'L>(,y>7'-)>'>'>'G,;)/'    8,Q>          a'-,  G,#)  z>O,    ~,3,  I>+,    9,0,G,7't'>'>'>'G,y'1'              @'p,    a,b,    l'Y'w,<'>'>'>'[,          P>X>  k>7'b,>'>'>'u><,W>      I,),    ,)-,  7,K>    5,i'l'6'        4'>)    G,.'  ^,G>            q,;  ,    f,g,    f'|'+,z'>'>'>'Y,        m>_)/)      ),Z>  %'6'  H>v'i'*'  T>G'      ,'m'          -';'        7'p,r>q,    t+`'t+B,I'    A>!'5'B>y,I>  P':'      U,a'p'/,            ,'e,;,      &),'    C'z,  U>u,    T,d'  v,7,  ,)-,N'E'                R>m,          !,g,>'f'        D>u'>'>'>'j>  V>t>    7'    [,N>6,o,  *,),>'>'>'-,        ",
+  "        W'Q'C.Z,6,@,V'C.$)s>              {'E,          M,#,5,        ;'V>p>  >,_,    R>e,            J,W>c,      y>{'l>  C'D'  7,3'G,  F>F'  $'q'C.  (,(,          =,r>  Y>@)m>  U,a'e'q>          U,7'    p,R>d'  P>W'  {,w>t+],          Q>k'    ;,&,Y,G,8'C  .  n,,,  0,h'  P'_'    7,v,p>    m>+)p>  C>q,  [,},  z,o,t+        *'E'  m>x,^)  o,4'    ,,;'U'{,E,  W,1,          %,F'  y>#,~,  a'n>    3,~,    O,z>%)*,z>    ~,  h'$'    7,s>  G,7'.,A>T'-,          3,+'        e'r'l>=,x>  u>Y'U>h'k>  A>H>m>X'    j>}'  -)o  >  b,},  6,#'    |'u>2,_'  p,9'Q>          L>~,  :,#)  z>O,    ~,3,  $,G>  G,h,0,  ~'S,    |'u>y'1'              q,j>    a,b,    l'Y'r'q,j>    ~,          O'5,    L'P'    H>-,<,W>      I,),    ,)-,  7,K>  ;'t+  w'X,        U'q,A>  *)<'  ^,G>            O,7  ,    f,g,    f'|'U'A'''    ~,          (,d,p>    4'Z>  %'6'    9,{,*'  ['O>s>  U'q,%)          -';'        7'p,r>A'    0'a,  B,I'    ;'@)C.  ='I>  P':'        D'*, )            ,'P'        5,X,C.t+%,z,  U>S'  t+R,)'  v,7,  ,)-,W'C,A>  -,n>        R>m,          !,g,.,a'[,  m>H>l,R,q>  y>Y>  V>t>    7'  Y,G,  x>.'  1'*'    z>p>        ",
+  "          N>^)  k>m>q>J,n,            m,>,+)@,]'    f,~'}'#'    o>L>1,K>t,    k'#,,'q'$)p,          y>D,{,=,=,=,-)  S,3'()J'%)    6'}'/,N,B>    F>S>d,^'B>          =,>,Z>V>),      x,6'            U,D,3'C,`>%,u>  P>W'  {,w>t+],          L,@)q,/,e'~)  G,+)O  >P>S>7,  0,h'  M,3'/,c'I,b'#,#,J'  G'b'1,',q,  [,},  C.D'E'        l>@)S>P>>,^)  o,4'    ,,;'  T>b'}'f,1,          U'@,L'O,U>    6'@)K>.,3,~,    O,z>  S,e'3,v'E'  h'$'    $'A'L'L>H'  `,D,Y'          3,8'=,=,=,|,e'r'  l,e'3,&,p'y>A,O,>,*,),m>X'    j>}'  $,*  ,R,v,w,  |,6,@,O>l';,-,X,l'O,/,Q>          L,b'L>i,#)  z>O,    ~,3,  E,S>#,l'X,0,  7,~'~'O>#,r>y'1'              U>v'f'c,a,b,    l'Y'  $'&,3,@)h'          P'A'~'|,%)d,f'J'O,U'<,W>      I,),    ,)-,  7,K>  (,V>R,v,y'          L,&,<'L>Y>  ^,G>            u,V  >X,x>f,g,    f'|'  0'`>,,C,,'          m>&'q,f'1,l'm,  %'6'    n>#)*'    M>A',,*,B,            -'!'=,=,=,r>7'p,r>])O'3,-'Y,  B,I'    t+))C,S>^'I>  P':'        ['=,q>            ,'P'        t+,,-'v,q'z,  U>e'a,-'_'    v,7,  ,)-,  m,e'3,`>>'        R>X'=,=,=  ,P,!,g,  5'O,,,e'm'C.d'3',,q,N'  V>t>    7'  L,A'!,v,C'  U,q'S>X,e'|'        ",
+  "            l,1'8,V';)['                            x>j>C.        j>U,          C.r't>                                o>U'          G,E,          B>E,                k>z>m>      o>&,M,                                                        -,M,      G,j'o  >w>              t+U,C.              p>E,                            q>r'm>                      A>-,                  U'u>        A>u>                    x>y>              m>Y'y>                                        C.x>k>      q>x>C.                  G  ,Y'o>        B>A>      C.M,t+                ;,-,                      C.M,t+          B>A>                        A>c,                    x>y>              c,-,      s>r>                                    .,Y't+              p,M,C.                      -  ,s>                    w>G,                  p>A>                          p,Y'o>                                  m>j>k>              C.j>s>                  *'u'                            k>z>t+          ;,;,                    k>x>C.                                  w>o>      t+U,t+                  q>Y'q>        .,E,            ",
+  "                s>y>                                                                                                                                                              #';)                                                                    G,j'                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    q>@)n>                                                                                                                                                                            ",
+  "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    "};
+
+fltk::ReturnButton *about_ok=(fltk::ReturnButton *)0;
+
+static void cb_about_ok(fltk::ReturnButton*, void*) {
+  about_panel->hide()
+;}
+
+fltk::DoubleBufferWindow* make_about_panel(const char *copyright) {
+  fltk::DoubleBufferWindow* w;
+   {fltk::DoubleBufferWindow* o = about_panel = new fltk::DoubleBufferWindow(550, 400, "about fluid");
+    w = o;
+    o->type(241);
+    o->color((fltk::Color)97);
+    o->selection_color((fltk::Color)47);
+    o->begin();
+     {fltk::Group* o = display_group = new fltk::Group(0, 0, 550, 400);
+       o->image(new fltk::xpmImage(datas_fluid_about));
+      o->begin();
+       {fltk::ReturnButton* o = about_ok = new fltk::ReturnButton(483, 364, 50, 16, "OK");
+        o->buttoncolor((fltk::Color)0x4c519000);
+        o->labelcolor((fltk::Color)0xffffff00);
+        o->highlight_color((fltk::Color)0x6a4fe800);
+        o->shortcut(0xff0d);
+        o->callback((fltk::Callback*)cb_about_ok);
+      }
+      o->end();
+      o->resizable(o);
+    }
+    o->end();
+    o->set_non_modal();
+    o->clear_border();
+    o->resizable(o);
+  }
+  return  w;
+}

Added: branches/branch-3.0-2011/fluid2/about_panel.fl
===================================================================
--- branches/branch-3.0-2011/fluid2/about_panel.fl	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/about_panel.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,27 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.0100 
+images_dir ./ 
+header_name {.h} 
+code_name {.cxx} 
+gridx 5 
+gridy 5 
+snap 3
+Function {make_about_panel(const char *copyright)} {open
+} {
+  {fltk::Window} about_panel {
+    label {about fluid} open
+    xywh {391 101 550 400} type Double resizable color 97 selection_color 47 non_modal noborder visible
+  } {
+    {fltk::Group} display_group {selected
+      xywh {0 0 550 400}
+      image {/home/fabien/devl/fltk/trunk/pixmaps/fluid/fluid_about.gif}
+      extra_code {o->resizable(o);}
+    } {
+      {fltk::ReturnButton} about_ok {
+        label OK
+        callback {about_panel->hide()}
+        xywh {483 364 50 16} buttoncolor 0x4c519000 labelcolor 0xffffff00 highlight_color 0x6a4fe800 shortcut 0xff0d
+      }
+    }
+  }
+} 

Added: branches/branch-3.0-2011/fluid2/about_panel.h
===================================================================
--- branches/branch-3.0-2011/fluid2/about_panel.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/about_panel.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,12 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0100
+
+#ifndef about_panel_h
+#define about_panel_h
+#include <fltk/DoubleBufferWindow.h>
+extern fltk::DoubleBufferWindow* about_panel;
+#include <fltk/Group.h>
+extern fltk::Group* display_group;
+#include <fltk/ReturnButton.h>
+extern fltk::ReturnButton* about_ok;
+fltk::DoubleBufferWindow* make_about_panel(const char *copyright);
+#endif

Added: branches/branch-3.0-2011/fluid2/align_widget.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/align_widget.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/align_widget.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,449 @@
+//
+// "$Id: align_widget.cxx 4561 2005-09-09 11:36:36Z matt $"
+//
+// Alignment code 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
+//
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Font.h>
+#include "WidgetType.h"
+#include "undo.h"
+
+using namespace fltk;
+/**
+ * the first behaviour always uses the first selected widget as a reference
+ * the second behaviour uses the largest widget (most extreme positions) as
+ * a reference.
+ */
+#define BREAK_ON_FIRST break
+//#define BREAK_ON_FIRST
+
+void align_widget_cb(Widget*, long how) 
+{
+  const int max = 32768, min = -32768;
+  int left, right, top, bot, wdt, hgt, n;
+  FluidType *o;
+  int changed = 0;
+  switch ( how )
+  {
+  //---- align
+  case 10: // align left
+    left = max;
+    for (o = FluidType::first; o; o = o->walk(0)) 
+      if (o->selected() && o->is_widget())
+      {
+	Widget *w = ((WidgetType *)o)->o;
+	if (w->x()<left)
+	  left = w->x();
+	BREAK_ON_FIRST;
+      }
+    if (left!=max)
+	for (FluidType* o = FluidType::first; o; o = o->walk(0)) 
+	if (o->selected() && o->is_widget())
+	{
+	  if (!changed) {
+	    changed = 1;
+	    modflag = 1;
+	    Undo::checkpoint();
+	  }
+
+	  Widget *w = ((WidgetType *)o)->o;
+          w->resize(left, w->y(), w->w(), w->h());
+	  w->redraw();
+	  if (w->window()) w->window()->redraw();
+	}
+    break;
+  case 11: // align h.center
+    left = max; right = min;
+    for (o = FluidType::first; o; o = o->walk(0)) 
+      if (o->selected() && o->is_widget())
+      {
+	Widget *w = ((WidgetType *)o)->o;
+	if (w->x()<left)
+	  left = w->x();
+	if (w->x()+w->w()>right)
+	  right = w->x()+w->w();
+	BREAK_ON_FIRST;
+      }
+    if (left!=max)
+    {
+      int center2 = left+right;
+      for (FluidType *o = FluidType::first; o; o = o->walk(0)) 
+	if (o->selected() && o->is_widget())
+	{
+	  if (!changed) {
+	    changed = 1;
+	    modflag = 1;
+	    Undo::checkpoint();
+	  }
+
+	  Widget *w = ((WidgetType *)o)->o;
+          w->resize((center2-w->w())/2, w->y(), w->w(), w->h());
+	  w->redraw();
+	  if (w->window()) w->window()->redraw();
+	}
+    }
+    break;
+  case 12: // align right
+    right = min;
+    for (o = FluidType::first; o; o = o->walk(0)) 
+      if (o->selected() && o->is_widget())
+      {
+	Widget *w = ((WidgetType *)o)->o;
+	if (w->x()+w->w()>right)
+	  right = w->x()+w->w();
+	BREAK_ON_FIRST;
+      }
+    if (right!=min)
+      for (FluidType *o = FluidType::first; o; o = o->walk(0)) 
+	if (o->selected() && o->is_widget())
+	{
+	  if (!changed) {
+	    changed = 1;
+	    modflag = 1;
+	    Undo::checkpoint();
+	  }
+
+	  Widget *w = ((WidgetType *)o)->o;
+          w->resize(right-w->w(), w->y(), w->w(), w->h());
+	  w->redraw();
+	  if (w->window()) w->window()->redraw();
+	}
+    break;
+  case 13: // align top
+    top = max;
+    for (o = FluidType::first; o; o = o->walk(0)) 
+      if (o->selected() && o->is_widget())
+      {
+	Widget *w = ((WidgetType *)o)->o;
+	if (w->y()<top)
+	  top = w->y();
+	BREAK_ON_FIRST;
+      }
+    if (top!=max)
+      for (FluidType *o = FluidType::first; o; o = o->walk(0)) 
+	if (o->selected() && o->is_widget())
+	{
+	  if (!changed) {
+	    changed = 1;
+	    modflag = 1;
+	    Undo::checkpoint();
+	  }
+
+	  Widget *w = ((WidgetType *)o)->o;
+          w->resize(w->x(), top, w->w(), w->h());
+	  w->redraw();
+	  if (w->window()) w->window()->redraw();
+	}
+    break;
+  case 14: // align v.center
+    top = max; bot = min;
+    for (o = FluidType::first; o; o = o->walk(0)) 
+      if (o->selected() && o->is_widget())
+      {
+	Widget *w = ((WidgetType *)o)->o;
+	if (w->y()<top)
+	  top = w->y();
+	if (w->y()+w->h()>bot)
+	  bot = w->y()+w->h();
+	BREAK_ON_FIRST;
+      }
+    if (top!=max)
+    {
+      int center2 = top+bot;
+      for (FluidType *o = FluidType::first; o; o = o->walk(0))
+	if (o->selected() && o->is_widget())
+	{
+	  if (!changed) {
+	    changed = 1;
+	    modflag = 1;
+	    Undo::checkpoint();
+	  }
+
+	  Widget *w = ((WidgetType *)o)->o;
+          w->resize(w->x(), (center2-w->h())/2, w->w(), w->h());
+	  w->redraw();
+	  if (w->window()) w->window()->redraw();
+	}
+    }
+    break;
+  case 15: // align bottom
+    bot = min;
+    for (o = FluidType::first; o; o = o->walk(0))
+      if (o->selected() && o->is_widget())
+      {
+	Widget *w = ((WidgetType *)o)->o;
+	if (w->y()+w->h()>bot)
+	  bot = w->y()+w->h();
+	BREAK_ON_FIRST;
+      }
+    if (bot!=min)
+      for (FluidType *o = FluidType::first; o; o = o->walk(0))
+	if (o->selected() && o->is_widget())
+	{
+	  if (!changed) {
+	    changed = 1;
+	    modflag = 1;
+	    Undo::checkpoint();
+	  }
+
+	  Widget *w = ((WidgetType *)o)->o;
+          w->resize( w->x(), bot-w->h(), w->w(), w->h());
+	  w->redraw();
+	  if (w->window()) w->window()->redraw();
+	}
+    break;
+  //---- space evently
+  case 20: // space evenly across
+    left = max; right = min; wdt = 0, n = 0;
+    for (o = FluidType::first; o; o = o->walk(0))
+      if (o->selected() && o->is_widget())
+      {
+	Widget *w = ((WidgetType *)o)->o;
+	if (w->x()<left)
+	  left = w->x();
+	if (w->x()+w->w()>right)
+	  right = w->x()+w->w();
+	wdt += w->w();
+	n++;
+      }
+    wdt = (right-left)-wdt;
+    n--;
+    if (n>0)
+    {
+      int cnt = 0, wsum = 0;
+      for (FluidType *o = FluidType::first; o; o = o->walk(0))
+	if (o->selected() && o->is_widget())
+	{
+	  if (!changed) {
+	    changed = 1;
+	    modflag = 1;
+	    Undo::checkpoint();
+	  }
+
+	  Widget *w = ((WidgetType *)o)->o;
+          w->resize(left+wsum+wdt*cnt/n, w->y(), w->w(), w->h());
+	  w->redraw();
+	  if (w->window()) w->window()->redraw();
+	  cnt++;
+	  wsum += w->w();
+	}
+    }
+    break;
+  case 21: // space evenly down
+    top = max; bot = min; hgt = 0, n = 0;
+    for (o = FluidType::first; o; o = o->walk(0))
+      if (o->selected() && o->is_widget())
+      {
+	Widget *w = ((WidgetType *)o)->o;
+	if (w->y()<top)
+	  top = w->y();
+	if (w->y()+w->h()>bot)
+	  bot = w->y()+w->h();
+	hgt += w->h();
+	n++;
+      }
+    hgt = (bot-top)-hgt;
+    n--;
+    if (n>0)
+    {
+      int cnt = 0, hsum = 0;
+      for (FluidType *o = FluidType::first; o; o = o->walk(0))
+	if (o->selected() && o->is_widget())
+	{
+	  if (!changed) {
+	    changed = 1;
+	    modflag = 1;
+	    Undo::checkpoint();
+	  }
+
+	  Widget *w = ((WidgetType *)o)->o;
+          w->resize(w->x(), top+hsum+hgt*cnt/n, w->w(), w->h());
+	  w->redraw();
+	  if (w->window()) w->window()->redraw();
+	  cnt++;
+	  hsum += w->h();
+	}
+    }
+    break;
+  //---- make same size
+  case 30: // same width
+    wdt = min;
+    for (o = FluidType::first; o; o = o->walk(0))
+      if (o->selected() && o->is_widget())
+      {
+	Widget *w = ((WidgetType *)o)->o;
+	if (w->w()>wdt)
+	  wdt = w->w();
+	BREAK_ON_FIRST;
+      }
+    if (wdt!=min)
+      for (FluidType *o = FluidType::first; o; o = o->walk(0))
+	if (o->selected() && o->is_widget())
+	{
+	  if (!changed) {
+	    changed = 1;
+	    modflag = 1;
+	    Undo::checkpoint();
+	  }
+
+	  Widget *w = ((WidgetType *)o)->o;
+          w->resize(w->x(), w->y(), wdt, w->h());
+	  w->redraw();
+	  if (w->window()) w->window()->redraw();
+	}
+    break;
+  case 31: // same height
+    hgt = min;
+    for (o = FluidType::first; o; o = o->walk(0))
+      if (o->selected() && o->is_widget())
+      {
+	Widget *w = ((WidgetType *)o)->o;
+	if (w->h()>hgt)
+	  hgt = w->h();
+	BREAK_ON_FIRST;
+      }
+    if (hgt!=min)
+      for (FluidType *o = FluidType::first; o; o = o->walk(0))
+	if (o->selected() && o->is_widget())
+	{
+	  if (!changed) {
+	    changed = 1;
+	    modflag = 1;
+	    Undo::checkpoint();
+	  }
+
+	  Widget *w = ((WidgetType *)o)->o;
+          w->resize( w->x(), w->y(), w->w(), hgt);
+	  w->redraw();
+	  if (w->window()) w->window()->redraw();
+	}
+    break;
+  case 32: // same size
+    hgt = min; wdt = min;
+    for (o = FluidType::first; o; o = o->walk(0))
+      if (o->selected() && o->is_widget())
+      {
+	Widget *w = ((WidgetType *)o)->o;
+	if (w->w()>wdt)
+	  wdt = w->w();
+	if (w->h()>hgt)
+	  hgt = w->h();
+	BREAK_ON_FIRST;
+      }
+    if (hgt!=min)
+      for (FluidType *o = FluidType::first; o; o = o->walk(0))
+	if (o->selected() && o->is_widget())
+	{
+	  if (!changed) {
+	    changed = 1;
+	    modflag = 1;
+	    Undo::checkpoint();
+	  }
+
+	  Widget *w = ((WidgetType *)o)->o;
+          w->resize( w->x(), w->y(), wdt, hgt);
+	  w->redraw();
+	  if (w->window()) w->window()->redraw();
+	}
+    break;
+  //---- center in group
+  case 40: // center hor
+    for (o = FluidType::first; o; o = o->walk(0))
+      if (o->selected() && o->is_widget() && o->parent)
+      {
+	if (!changed) {
+	  changed = 1;
+	  modflag = 1;
+	  Undo::checkpoint();
+	}
+
+	Widget *w = ((WidgetType *)o)->o;
+	Widget *p = ((WidgetType *)o->parent)->o;
+	int center2;
+
+	if (w->window() == p) center2 = p->w();
+	else center2 = 2*p->x()+p->w();
+        w->resize((center2-w->w())/2, w->y(), w->w(), w->h());
+	w->redraw();
+	if (w->window()) w->window()->redraw();
+      }
+    break;
+  case 41: // center vert
+    for (o = FluidType::first; o; o = o->walk(0))
+      if (o->selected() && o->is_widget() && o->parent)
+      {
+	if (!changed) {
+	  changed = 1;
+	  modflag = 1;
+	  Undo::checkpoint();
+	}
+
+	Widget *w = ((WidgetType *)o)->o;
+	Widget *p = ((WidgetType *)o->parent)->o;
+	int center2;
+
+	if (w->window() == p) center2 = p->h();
+	else center2 = 2*p->y()+p->h();
+        w->resize(w->x(), (center2-w->h())/2, w->w(), w->h());
+	modflag = 1;
+	w->redraw();
+	if (w->window()) w->window()->redraw();
+      }
+    break;
+  }
+}
+
+// Set sizes of selected widgets...
+void widget_size_cb(Widget *, long size) {
+  // Update any selected widgets...
+  int changed = 0;
+  for (FluidType *o = FluidType::first; o; o = o->walk(0)) {
+    if (o->selected() && o->is_widget()) {
+      if (!changed) {
+	changed = 1;
+	modflag = 1;
+	Undo::checkpoint();
+      }
+
+      Widget *w = ((WidgetType *)o)->o;
+      w->labelsize((float) size);
+      Font f;
+      float s = (float) size;
+      Color c=fltk::BLACK;
+      ((WidgetType *)o)->textstuff(2, &f, s, c);
+
+      w->redraw();
+      // since this may be a major change, the whole window should be redrawn
+      if (w->window()) w->window()->redraw();
+    }
+  }
+}
+
+
+//
+// End of "$Id: align_widget.cxx 4561 2005-09-09 11:36:36Z matt $".
+//
+

Added: branches/branch-3.0-2011/fluid2/alignment_panel.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/alignment_panel.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/alignment_panel.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,296 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#include "alignment_panel.h"
+#include "PrefsData.h"
+#include "FluidType.h"
+fltk::TextBuffer *shell_run_buffer;
+
+fltk::Window *preferences_window=(fltk::Window *)0;
+
+fltk::TabGroup *pref_tabs=(fltk::TabGroup *)0;
+
+static void cb_pref_tabs(fltk::TabGroup*, void*) {
+  initialize_tab_colors();
+}
+
+fltk::CheckButton *openlast_button=(fltk::CheckButton *)0;
+
+static void cb_openlast_button(fltk::CheckButton*, void*) {
+  prefs.open_previous_file(openlast_button->value());
+}
+
+fltk::CheckButton *prevpos_button=(fltk::CheckButton *)0;
+
+static void cb_prevpos_button(fltk::CheckButton*, void*) {
+  prefs.prev_window_pos(prevpos_button->value());
+}
+
+fltk::CheckButton *completion_button=(fltk::CheckButton *)0;
+
+static void cb_completion_button(fltk::CheckButton*, void*) {
+  prefs.show_completion_dialogs(completion_button->value());
+}
+
+fltk::ValueInput *recent_spinner=(fltk::ValueInput *)0;
+
+static void cb_recent_spinner(fltk::ValueInput*, void*) {
+  prefs.recent_files((int) recent_spinner->value()); load_history();
+}
+
+fltk::CheckButton *tabcolor_button=(fltk::CheckButton *)0;
+
+static void cb_tabcolor_button(fltk::CheckButton* o, void*) {
+  prefs.tabcolor(o->value());
+  initialize_tab_colors();
+}
+
+fltk::CheckButton *splash_button=(fltk::CheckButton *)0;
+
+static void cb_splash_button(fltk::CheckButton* o, void*) {
+  prefs.show_splash(o->value());
+}
+
+fltk::Input *header_file_input=(fltk::Input *)0;
+
+fltk::Input *code_file_input=(fltk::Input *)0;
+
+fltk::CheckButton *include_H_from_C_button=(fltk::CheckButton *)0;
+
+fltk::Input *horizontal_input=(fltk::Input *)0;
+
+fltk::Input *vertical_input=(fltk::Input *)0;
+
+fltk::Input *snap_input=(fltk::Input *)0;
+
+fltk::RadioButton *def_widget_size[6]={(fltk::RadioButton *)0};
+
+static void cb_Close(fltk::Button*, void*) {
+  preferences_window->hide();
+}
+
+fltk::Window* make_preferences_window() {
+  fltk::Window* w;
+   {fltk::Window* o = preferences_window = new fltk::Window(370, 253, "fluid Preferences");
+    w = o;
+    o->shortcut(0xff1b);
+    o->begin();
+     {fltk::TabGroup* o = pref_tabs = new fltk::TabGroup(5, 4, 360, 210);
+      o->callback((fltk::Callback*)cb_pref_tabs);
+      o->begin();
+       {fltk::Group* o = new fltk::Group(0, 21, 360, 188, "General");
+        o->color((fltk::Color)0x54c2d400);
+        o->begin();
+         {fltk::CheckButton* o = openlast_button = new fltk::CheckButton(10, 5, 190, 25, "Open Previous File on Startup");
+          o->callback((fltk::Callback*)cb_openlast_button);
+          openlast_button->value(prefs.open_previous_file() ? true : false);
+        }
+         {fltk::CheckButton* o = prevpos_button = new fltk::CheckButton(10, 25, 190, 25, "Remember Window Positions");
+          o->callback((fltk::Callback*)cb_prevpos_button);
+          prevpos_button->value(prefs.prev_window_pos() ? true : false);
+        }
+         {fltk::CheckButton* o = completion_button = new fltk::CheckButton(10, 45, 186, 25, "Show Completion Dialog Info");
+          o->callback((fltk::Callback*)cb_completion_button);
+          completion_button->value(prefs.show_completion_dialogs() ? true : false);
+        }
+         {fltk::ValueInput* o = recent_spinner = new fltk::ValueInput(13, 93, 37, 25, "# Recent Files");
+          o->callback((fltk::Callback*)cb_recent_spinner);
+          o->align(fltk::ALIGN_RIGHT);
+          o->when(fltk::WHEN_CHANGED);
+          recent_spinner->maximum(10); recent_spinner->value(prefs.recent_files());
+        }
+         {fltk::CheckButton* o = tabcolor_button = new fltk::CheckButton(10, 125, 100, 25, "Colorful tabs");
+          o->callback((fltk::Callback*)cb_tabcolor_button);
+          o->value(prefs.tabcolor() ? true : false);
+        }
+         {fltk::CheckButton* o = splash_button = new fltk::CheckButton(10, 65, 190, 25, "Show splash screen on startup");
+          o->callback((fltk::Callback*)cb_splash_button);
+          o->value(prefs.show_splash() ? true : false);
+        }
+        o->end();
+      }
+       {fltk::Group* o = new fltk::Group(0, 20, 360, 190, "Code generation");
+        o->color((fltk::Color)0x13d47a00);
+        o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+        o->hide();
+        o->begin();
+         {fltk::Widget* o = new fltk::Widget(16, 0, 323, 25, "Use \"name.ext\" to set name or just \".ext\" to set only extension.");
+          o->box(fltk::NO_BOX);
+          o->labelsize(11);
+          o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE|fltk::ALIGN_WRAP);
+        }
+         {fltk::Input* o = header_file_input = new fltk::Input(96, 30, 185, 22, "Header File:");
+          o->callback((fltk::Callback*)header_input_cb, (void*)(1));
+          o->when(fltk::WHEN_CHANGED);
+        }
+         {fltk::Input* o = code_file_input = new fltk::Input(96, 57, 185, 22, "Code File:");
+          o->callback((fltk::Callback*)code_input_cb, (void*)(1));
+          o->when(fltk::WHEN_CHANGED);
+        }
+         {fltk::CheckButton* o = include_H_from_C_button = new fltk::CheckButton(16, 84, 170, 22, "#include \"header\" in code");
+          o->set_flag(fltk::STATE);
+          o->callback((fltk::Callback*)include_H_from_C_button_cb);
+        }
+        o->end();
+      }
+       {fltk::Group* o = new fltk::Group(0, 21, 360, 189, "Alignment");
+        o->color((fltk::Color)0xd49a5600);
+        o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+        o->hide();
+        o->begin();
+         {fltk::Input* o = horizontal_input = new fltk::Input(75, 6, 100, 22, "Horizontal:");
+          o->labelsize(14);
+          o->textsize(14);
+          o->callback((fltk::Callback*)alignment_cb, (void*)(1));
+          o->when(fltk::WHEN_RELEASE|fltk::WHEN_ENTER_KEY);
+        }
+         {fltk::Input* o = vertical_input = new fltk::Input(238, 6, 100, 22, "Vertical:");
+          o->labelsize(14);
+          o->textsize(14);
+          o->callback((fltk::Callback*)alignment_cb, (void*)(2));
+          o->when(fltk::WHEN_RELEASE|fltk::WHEN_ENTER_KEY);
+        }
+         {fltk::Input* o = snap_input = new fltk::Input(75, 40, 100, 22, "Snap:");
+          o->labelsize(14);
+          o->textsize(14);
+          o->callback((fltk::Callback*)alignment_cb, (void*)(3));
+          o->when(fltk::WHEN_RELEASE|fltk::WHEN_ENTER_KEY);
+        }
+         {fltk::Group* o = new fltk::Group(73, 75, 207, 85, "Widget\n Size:");
+          o->align(fltk::ALIGN_LEFT);
+          o->begin();
+           {fltk::RadioButton* o = def_widget_size[0] = new fltk::RadioButton(0, 0, 83, 25, "Tiny");
+            o->labelsize(8);
+            o->callback((fltk::Callback*)default_widget_size_cb, (void*)(8));
+            o->align(fltk::ALIGN_LEFT|fltk::ALIGN_RIGHT|fltk::ALIGN_INSIDE);
+          }
+           {fltk::RadioButton* o = def_widget_size[1] = new fltk::RadioButton(100, 0, 70, 25, "Small");
+            o->labelsize(11);
+            o->callback((fltk::Callback*)default_widget_size_cb, (void*)(11));
+          }
+           {fltk::RadioButton* o = def_widget_size[2] = new fltk::RadioButton(0, 25, 83, 25, "Normal");
+            o->callback((fltk::Callback*)default_widget_size_cb, (void*)(14));
+            o->align(fltk::ALIGN_LEFT|fltk::ALIGN_RIGHT|fltk::ALIGN_INSIDE);
+          }
+           {fltk::RadioButton* o = def_widget_size[3] = new fltk::RadioButton(100, 25, 90, 25, "medium");
+            o->labelsize(18);
+            o->callback((fltk::Callback*)default_widget_size_cb, (void*)(18));
+          }
+           {fltk::RadioButton* o = def_widget_size[4] = new fltk::RadioButton(0, 50, 83, 26, "large");
+            o->labelsize(24);
+            o->callback((fltk::Callback*)default_widget_size_cb, (void*)(24));
+            o->align(fltk::ALIGN_LEFT|fltk::ALIGN_RIGHT|fltk::ALIGN_INSIDE);
+          }
+           {fltk::RadioButton* o = def_widget_size[5] = new fltk::RadioButton(100, 50, 95, 25, "huge");
+            o->labelsize(32);
+            o->callback((fltk::Callback*)default_widget_size_cb, (void*)(32));
+          }
+          o->end();
+        }
+        o->end();
+      }
+      o->end();
+    }
+     {fltk::Button* o = new fltk::Button(139, 222, 106, 25, "Close");
+      o->callback((fltk::Callback*)cb_Close);
+    }
+    o->end();
+    o->set_non_modal();
+    o->resizable(o);
+  }
+  return  w;
+}
+
+fltk::DoubleBufferWindow *shell_window=(fltk::DoubleBufferWindow *)0;
+
+fltk::Input *shell_command_input=(fltk::Input *)0;
+
+static void cb_shell_command_input(fltk::Input*, void*) {
+  prefs.shell_command(shell_command_input->value());
+}
+
+fltk::CheckButton *shell_writecode_button=(fltk::CheckButton *)0;
+
+static void cb_shell_writecode_button(fltk::CheckButton*, void*) {
+  prefs.shell_writecode(shell_writecode_button->value());
+}
+
+fltk::CheckButton *shell_writemsgs_button=(fltk::CheckButton *)0;
+
+static void cb_shell_writemsgs_button(fltk::CheckButton*, void*) {
+  prefs.shell_writemsgs(shell_writemsgs_button->value());
+}
+
+fltk::CheckButton *shell_savefl_button=(fltk::CheckButton *)0;
+
+static void cb_shell_savefl_button(fltk::CheckButton*, void*) {
+  prefs.shell_savefl(shell_savefl_button->value());
+}
+
+static void cb_Cancel(fltk::Button*, void*) {
+  shell_window->hide();
+}
+
+fltk::DoubleBufferWindow *shell_run_window=(fltk::DoubleBufferWindow *)0;
+
+fltk::TextDisplay *shell_run_display=(fltk::TextDisplay *)0;
+
+fltk::ReturnButton *shell_run_button=(fltk::ReturnButton *)0;
+
+static void cb_shell_run_button(fltk::ReturnButton*, void*) {
+  shell_run_window->hide();
+}
+
+fltk::DoubleBufferWindow* make_shell_window() {
+  fltk::DoubleBufferWindow* w;
+   {fltk::DoubleBufferWindow* o = shell_window = new fltk::DoubleBufferWindow(365, 125, "Shell Command");
+    o->type(241);
+    o->shortcut(0xff1b);
+    o->begin();
+     {fltk::Input* o = shell_command_input = new fltk::Input(10, 27, 347, 25, "Command:");
+      o->labelfont(fltk::HELVETICA_BOLD);
+      o->callback((fltk::Callback*)cb_shell_command_input);
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+      shell_command_input->value(prefs.shell_command());
+    }
+     {fltk::CheckButton* o = shell_writecode_button = new fltk::CheckButton(127, 61, 93, 19, "Write Code");
+      o->callback((fltk::Callback*)cb_shell_writecode_button);
+      shell_writecode_button->value(prefs.shell_writecode() ? true : false);
+    }
+     {fltk::CheckButton* o = shell_writemsgs_button = new fltk::CheckButton(231, 61, 126, 19, "Write Messages");
+      o->callback((fltk::Callback*)cb_shell_writemsgs_button);
+      o->hide();
+      shell_writemsgs_button->value(prefs.shell_writemsgs() ? true : false);
+    }
+     {fltk::CheckButton* o = shell_savefl_button = new fltk::CheckButton(10, 61, 108, 19, "Save Fluid File");
+      o->callback((fltk::Callback*)cb_shell_savefl_button);
+      shell_savefl_button->value(prefs.shell_savefl() ? true : false);
+    }
+     {fltk::ReturnButton* o = new fltk::ReturnButton(132, 90, 143, 25, "Run Command");
+      o->shortcut(0xff0d);
+      o->callback((fltk::Callback*)do_shell_command);
+    }
+     {fltk::Button* o = new fltk::Button(285, 90, 72, 25, "Cancel");
+      o->callback((fltk::Callback*)cb_Cancel);
+    }
+    o->end();
+    o->resizable(o);
+  }
+   {fltk::DoubleBufferWindow* o = shell_run_window = new fltk::DoubleBufferWindow(555, 430, "Shell Command Output");
+    w = o;
+    o->type(241);
+    o->shortcut(0xff1b);
+    o->begin();
+     {fltk::TextDisplay* o = shell_run_display = new fltk::TextDisplay(10, 10, 535, 375);
+      o->textfont(fltk::COURIER);
+      shell_run_buffer = new fltk::TextBuffer();
+      shell_run_display->buffer(shell_run_buffer);
+    }
+     {fltk::ReturnButton* o = shell_run_button = new fltk::ReturnButton(468, 395, 77, 25, "Close");
+      o->shortcut(0xff0d);
+      o->callback((fltk::Callback*)cb_shell_run_button);
+    }
+    o->end();
+    o->resizable(o);
+  }
+  return  w;
+}

Added: branches/branch-3.0-2011/fluid2/alignment_panel.fl
===================================================================
--- branches/branch-3.0-2011/fluid2/alignment_panel.fl	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/alignment_panel.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,239 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.0100 
+images_dir ./ 
+header_name {.h} 
+code_name {.cxx} 
+gridx 5 
+gridy 5 
+snap 3
+decl {\#include "PrefsData.h"} {} 
+
+decl {\#include "FluidType.h"} {} 
+
+decl {\#include <fltk/Preferences.h>} {public
+} 
+
+decl {\#include <fltk/TextBuffer.h>} {public
+} 
+
+decl {\#include <fltk/TextDisplay.h>} {public
+} 
+
+decl {extern void load_history();} {public
+} 
+
+decl {fltk::TextBuffer *shell_run_buffer;} {public
+} 
+
+Function {make_preferences_window()} {open
+} {
+  {fltk::Window} preferences_window {
+    label {fluid Preferences} open
+    xywh {487 250 370 253} resizable non_modal visible
+  } {
+    {fltk::TabGroup} pref_tabs {
+      callback {initialize_tab_colors();} open
+      xywh {5 4 360 210}
+    } {
+      {fltk::Group} {} {
+        label General open
+        xywh {0 21 360 188} color 0x54c2d400
+      } {
+        {fltk::CheckButton} openlast_button {
+          label {Open Previous File on Startup}
+          callback {prefs.open_previous_file(openlast_button->value());}
+          xywh {10 5 190 25}
+          extra_code {openlast_button->value(prefs.open_previous_file() ? true : false);}
+        }
+        {fltk::CheckButton} prevpos_button {
+          label {Remember Window Positions}
+          callback {prefs.prev_window_pos(prevpos_button->value());}
+          xywh {10 25 190 25}
+          extra_code {prevpos_button->value(prefs.prev_window_pos() ? true : false);}
+        }
+        {fltk::CheckButton} completion_button {
+          label {Show Completion Dialog Info}
+          callback {prefs.show_completion_dialogs(completion_button->value());}
+          xywh {10 45 186 25}
+          extra_code {completion_button->value(prefs.show_completion_dialogs() ? true : false);}
+        }
+        {fltk::ValueInput} recent_spinner {
+          label {\# Recent Files}
+          callback {prefs.recent_files((int) recent_spinner->value()); load_history();}
+          xywh {13 93 37 25} align 8 when CHANGED
+          extra_code {recent_spinner->maximum(10); recent_spinner->value(prefs.recent_files());}
+        }
+        {fltk::CheckButton} tabcolor_button {
+          label {Colorful tabs}
+          callback {prefs.tabcolor(o->value());
+initialize_tab_colors();}
+          xywh {10 125 100 25}
+          extra_code {o->value(prefs.tabcolor() ? true : false);}
+        }
+        {fltk::CheckButton} splash_button {
+          label {Show splash screen on startup}
+          callback {prefs.show_splash(o->value());} selected
+          xywh {10 65 190 25}
+          extra_code {o->value(prefs.show_splash() ? true : false);}
+        }
+      }
+      {fltk::Group} {} {
+        label {Code generation}
+        xywh {0 20 360 190} align 5 hide color 0x13d47a00
+      } {
+        {fltk::Widget} {} {
+          label {Use "name.ext" to set name or just ".ext" to set only extension.}
+          xywh {16 0 323 25} align 180 box NO_BOX labelsize 11
+        }
+        {fltk::Input} header_file_input {
+          label {Header File:}
+          user_data 1 user_data_type {void*}
+          callback header_input_cb
+          xywh {96 30 185 22} when CHANGED
+        }
+        {fltk::Input} code_file_input {
+          label {Code File:}
+          user_data 1 user_data_type {void*}
+          callback code_input_cb
+          xywh {96 57 185 22} when CHANGED
+        }
+        {fltk::CheckButton} include_H_from_C_button {
+          label {\#include "header" in code}
+          callback include_H_from_C_button_cb
+          xywh {16 84 170 22} value 1
+        }
+      }
+      {fltk::Group} {} {
+        label Alignment open
+        xywh {0 21 360 189} align 5 hide color 0xd49a5600
+      } {
+        {fltk::Input} horizontal_input {
+          label {Horizontal:}
+          user_data 1 user_data_type long
+          callback alignment_cb
+          xywh {75 6 100 22} labelsize 14 textsize 14
+          extra_code {o->when(fltk::WHEN_RELEASE|fltk::WHEN_ENTER_KEY);}
+        }
+        {fltk::Input} vertical_input {
+          label {Vertical:}
+          user_data 2 user_data_type long
+          callback alignment_cb
+          xywh {238 6 100 22} labelsize 14 textsize 14
+          extra_code {o->when(fltk::WHEN_RELEASE|fltk::WHEN_ENTER_KEY);}
+        }
+        {fltk::Input} snap_input {
+          label {Snap:}
+          user_data 3 user_data_type long
+          callback alignment_cb
+          xywh {75 40 100 22} labelsize 14 textsize 14
+          extra_code {o->when(fltk::WHEN_RELEASE|fltk::WHEN_ENTER_KEY);}
+        }
+        {fltk::Group} {} {
+          label {Widget
+ Size:} open
+          xywh {73 75 207 85} align 4
+        } {
+          {fltk::RadioButton} {def_widget_size[0]} {
+            label Tiny
+            user_data 8 user_data_type long
+            callback default_widget_size_cb
+            xywh {0 0 83 25} align 44 labelsize 8
+          }
+          {fltk::RadioButton} {def_widget_size[1]} {
+            label Small
+            user_data 11 user_data_type long
+            callback default_widget_size_cb
+            xywh {100 0 70 25} labelsize 11
+          }
+          {fltk::RadioButton} {def_widget_size[2]} {
+            label Normal
+            user_data 14 user_data_type long
+            callback default_widget_size_cb
+            xywh {0 25 83 25} align 44
+          }
+          {fltk::RadioButton} {def_widget_size[3]} {
+            label medium
+            user_data 18 user_data_type long
+            callback default_widget_size_cb
+            xywh {100 25 90 25} labelsize 18
+          }
+          {fltk::RadioButton} {def_widget_size[4]} {
+            label large
+            user_data 24 user_data_type long
+            callback default_widget_size_cb
+            xywh {0 50 83 26} align 44 labelsize 24
+          }
+          {fltk::RadioButton} {def_widget_size[5]} {
+            label huge
+            user_data 32 user_data_type long
+            callback default_widget_size_cb
+            xywh {100 50 95 25} labelsize 32
+          }
+        }
+      }
+    }
+    {fltk::Button} {} {
+      label Close
+      callback {preferences_window->hide();}
+      xywh {139 222 106 25}
+    }
+  }
+} 
+
+Function {make_shell_window()} {open
+} {
+  {fltk::Window} shell_window {
+    label {Shell Command} open
+    xywh {492 86 365 125} type Double resizable visible
+  } {
+    {fltk::Input} shell_command_input {
+      label {Command:}
+      callback {prefs.shell_command(shell_command_input->value());}
+      xywh {10 27 347 25} align 5 labelfont 1
+      extra_code {shell_command_input->value(prefs.shell_command());}
+    }
+    {fltk::CheckButton} shell_writecode_button {
+      label {Write Code}
+      callback {prefs.shell_writecode(shell_writecode_button->value());}
+      xywh {127 61 93 19}
+      extra_code {shell_writecode_button->value(prefs.shell_writecode() ? true : false);}
+    }
+    {fltk::CheckButton} shell_writemsgs_button {
+      label {Write Messages}
+      callback {prefs.shell_writemsgs(shell_writemsgs_button->value());}
+      xywh {231 61 126 19} hide
+      extra_code {shell_writemsgs_button->value(prefs.shell_writemsgs() ? true : false);}
+    }
+    {fltk::CheckButton} shell_savefl_button {
+      label {Save Fluid File}
+      callback {prefs.shell_savefl(shell_savefl_button->value());}
+      xywh {10 61 108 19}
+      extra_code {shell_savefl_button->value(prefs.shell_savefl() ? true : false);}
+    }
+    {fltk::ReturnButton} {} {
+      label {Run Command}
+      callback do_shell_command
+      xywh {132 90 143 25} shortcut 0xff0d
+    }
+    {fltk::Button} {} {
+      label Cancel
+      callback {shell_window->hide();}
+      xywh {285 90 72 25}
+    }
+  }
+  {fltk::Window} shell_run_window {
+    label {Shell Command Output} open
+    xywh {459 284 555 430} type Double hide resizable
+  } {
+    {fltk::TextDisplay} shell_run_display {
+      xywh {10 10 535 375} textfont 4
+      extra_code {shell_run_buffer = new fltk::TextBuffer();
+shell_run_display->buffer(shell_run_buffer);}
+    }
+    {fltk::ReturnButton} shell_run_button {
+      label Close
+      callback {shell_run_window->hide();}
+      xywh {468 395 77 25} shortcut 0xff0d
+    }
+  }
+} 

Added: branches/branch-3.0-2011/fluid2/alignment_panel.h
===================================================================
--- branches/branch-3.0-2011/fluid2/alignment_panel.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/alignment_panel.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,53 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#ifndef alignment_panel_h
+#define alignment_panel_h
+#include <fltk/Preferences.h>
+#include <fltk/TextBuffer.h>
+#include <fltk/TextDisplay.h>
+extern void load_history();
+extern fltk::TextBuffer *shell_run_buffer;
+#include <fltk/Window.h>
+extern fltk::Window* preferences_window;
+#include <fltk/TabGroup.h>
+extern fltk::TabGroup* pref_tabs;
+#include <fltk/Group.h>
+#include <fltk/CheckButton.h>
+extern fltk::CheckButton* openlast_button;
+extern fltk::CheckButton* prevpos_button;
+extern fltk::CheckButton* completion_button;
+#include <fltk/ValueInput.h>
+extern fltk::ValueInput* recent_spinner;
+extern fltk::CheckButton* tabcolor_button;
+extern fltk::CheckButton* splash_button;
+#include <fltk/Widget.h>
+#include <fltk/Input.h>
+extern void header_input_cb(fltk::Input*, void*);
+extern fltk::Input* header_file_input;
+extern void code_input_cb(fltk::Input*, void*);
+extern fltk::Input* code_file_input;
+extern void include_H_from_C_button_cb(fltk::CheckButton*, void*);
+extern fltk::CheckButton* include_H_from_C_button;
+extern void alignment_cb(fltk::Input*, long);
+extern fltk::Input* horizontal_input;
+extern fltk::Input* vertical_input;
+extern fltk::Input* snap_input;
+#include <fltk/RadioButton.h>
+extern void default_widget_size_cb(fltk::RadioButton*, long);
+extern fltk::RadioButton* def_widget_size[6];
+#include <fltk/Button.h>
+fltk::Window* make_preferences_window();
+#include <fltk/DoubleBufferWindow.h>
+extern fltk::DoubleBufferWindow* shell_window;
+extern fltk::Input* shell_command_input;
+extern fltk::CheckButton* shell_writecode_button;
+extern fltk::CheckButton* shell_writemsgs_button;
+extern fltk::CheckButton* shell_savefl_button;
+#include <fltk/ReturnButton.h>
+extern void do_shell_command(fltk::ReturnButton*, void*);
+extern fltk::DoubleBufferWindow* shell_run_window;
+#include <fltk/TextDisplay.h>
+extern fltk::TextDisplay* shell_run_display;
+extern fltk::ReturnButton* shell_run_button;
+fltk::DoubleBufferWindow* make_shell_window();
+#endif

Added: branches/branch-3.0-2011/fluid2/clean.sed
===================================================================
--- branches/branch-3.0-2011/fluid2/clean.sed	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/clean.sed	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,2 @@
+s/FLUID_IMPORT FLUID_IMPORT/FL_IMPORT/
+s/write_FLUID_IMPORT static/write_static/

Added: branches/branch-3.0-2011/fluid2/clean.sh
===================================================================
--- branches/branch-3.0-2011/fluid2/clean.sh	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/clean.sh	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,4 @@
+for i in Fl_Type.h Fluid_Plugins.h Fluid_Image.h; do
+	sed -f clean.sed < $i > tmp
+	mv tmp $i
+done

Added: branches/branch-3.0-2011/fluid2/code.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/code.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/code.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,396 @@
+//
+// "$Id: code.cxx 7513 2010-04-15 17:19:27Z spitzak $"
+//
+// Code output routines 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".
+//
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+
+#include <fltk/run.h>
+#include "FluidType.h"
+#include "alignment_panel.h"
+#include "coding_style.h"
+
+static FILE *code_file;
+static FILE *header_file;
+
+using namespace fltk;
+
+// return true if c can be in a C identifier.  I needed this so
+// it is not messed up by locale settings:
+int is_id(char c) {
+  return (c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9') || c=='_';
+}
+
+////////////////////////////////////////////////////////////////
+// Generate unique but human-readable identifiers:
+
+struct id {
+  char* text;
+  void* object;
+  id *left, *right;
+  id (const char* t, void* o) : text(strdup(t)), object(o) {left = right = 0;}
+  ~id();
+};
+
+id::~id() {
+  delete left;
+  free((void *)text);
+  delete right;
+}
+
+static id* id_root;
+
+const char* unique_id(void* o, const char* type, const char* name, const char* label) {
+  char buffer[128];
+  char* q = buffer;
+  while (*type) *q++ = *type++;
+  *q++ = '_';
+  const char* n = name;
+  if (!n || !*n) n = label;
+  if (n && *n) {
+    while (*n && !is_id(*n)) n++;
+    while (is_id(*n)) *q++ = *n++;
+  }
+  *q = 0;
+  // okay, search the tree and see if the name was already used:
+  id** p = &id_root;
+  int which = 0;
+  while (*p) {
+    int i = strcmp(buffer, (*p)->text);
+    if (!i) {
+      if ((*p)->object == o) return (*p)->text;
+      // already used, we need to pick a new name:
+      sprintf(q,"%x",++which);
+      p = &id_root;
+      continue;
+    }
+    else if (i < 0) p = &((*p)->left);
+    else p  = &((*p)->right);
+  }
+  *p = new id(buffer, o);
+  return (*p)->text;
+}
+
+////////////////////////////////////////////////////////////////
+// return current indentation:
+
+int indentation;
+const char* indent() {
+	return get_indent_string(indentation / 2);
+}
+
+////////////////////////////////////////////////////////////////
+// declarations/include files:
+// Each string generated by write_declare is written only once to
+// the header file.  This is done by keeping a binary tree of all
+// the calls so far and not printing it if it is in the tree.
+
+struct included {
+  char *text;
+  included *left, *right;
+  included(const char *t) {
+    text = strdup(t);
+    left = right = 0;
+  }
+  ~included();
+};
+
+included::~included() {
+  delete left;
+  free((void *)text);
+  delete right;
+}
+static included *included_root;
+
+int write_declare(const char *format, ...) {
+  va_list args;
+  char buf[1024];
+  va_start(args, format);
+  vsprintf(buf, format, args);
+  va_end(args);
+  included **p = &included_root;
+  while (*p) {
+    int i = strcmp(buf,(*p)->text);
+    if (!i) return 0;
+    else if (i < 0) p = &((*p)->left);
+    else p  = &((*p)->right);
+  }
+  fprintf(header_file,"%s\n",buf);
+  *p = new included(buf);
+  return 1;
+}
+
+////////////////////////////////////////////////////////////////
+
+// silly thing to prevent declaring unused variables:
+// When this symbol is on, all attempts to write code don't write
+// anything, but set a variable if it looks like the varaible "o" is used:
+int varused_test;
+int varused;
+
+// write an array of C characters (adds a null):
+void write_cstring(const char *w, int length) {
+  if (varused_test) return;
+  const char *e = w+length;
+  int linelength = 1;
+  putc('\"', code_file);
+  for (; w < e;) {
+    int c = *w++;
+    switch (c) {
+    case '\b': c = 'b'; goto QUOTED;
+    case '\t': c = 't'; goto QUOTED;
+    case '\n': c = 'n'; goto QUOTED;
+    case '\f': c = 'f'; goto QUOTED;
+    case '\r': c = 'r'; goto QUOTED;
+    case '\"':
+    //case '\'':
+    case '\\':
+    QUOTED:
+      if (linelength >= 77) {fputs("\\\n",code_file); linelength = 0;}
+      putc('\\', code_file);
+      putc(c, code_file);
+      linelength += 2;
+      break;
+    case '?': // prevent trigraphs by writing ?? as ?\?
+      if (*(w-2) == '?') goto QUOTED;
+      // else fall through:
+    default:
+      if (c >= ' ' && c < 127) {
+	// a legal ASCII character
+	if (linelength >= 78) {fputs("\\\n",code_file); linelength = 0;}
+	putc(c, code_file);
+	linelength++;
+	break;
+      }
+      // otherwise we must print it as an octal constant:
+      c &= 255;
+      if (c < 8) {
+	if (linelength >= 76) {fputs("\\\n",code_file); linelength = 0;}
+	fprintf(code_file, "\\%o",c);
+	linelength += 2;
+      } else if (c < 64) {
+	if (linelength >= 75) {fputs("\\\n",code_file); linelength = 0;}
+	fprintf(code_file, "\\%o",c);
+	linelength += 3;
+      } else {
+	if (linelength >= 74) {fputs("\\\n",code_file); linelength = 0;}
+	fprintf(code_file, "\\%o",c);
+	linelength += 4;
+      }
+      // We must not put more numbers after it, because some C compilers
+      // consume them as part of the quoted sequence.  Use string constant
+      // pasting to avoid this:
+      c = *w;
+      if (w < e && ((c>='0'&&c<='9') || (c>='a'&&c<='f') || (c>='A'&&c<='F'))) {
+	putc('\"', code_file); linelength++;
+	if (linelength >= 79) {fputs("\n",code_file); linelength = 0;}
+	putc('\"', code_file); linelength++;
+      }
+      break;
+    }
+  }
+  putc('\"', code_file);
+}
+
+// write an array of C characters in a decimal format
+void write_carray(const char *w, int length) {
+  if (varused_test) return;
+#if 0
+  write_cstring(w,length);
+#else
+  const char *e = w+length;
+  int linelength = 1;
+  for (; w < e;) {
+    if (linelength >= 75) {fputs("\n",code_file); linelength = 0;}
+    int c = (uchar)*w++;
+    fprintf(code_file, "%d", c);
+    if (w < e) fputc(',',code_file);
+    linelength+=2;
+    if(c>=10) linelength++;
+    if(c>=100) linelength++;
+  }
+#endif
+}
+
+// write a C string, quoting characters if necessary:
+void write_cstring(const char *w) {write_cstring(w,strlen(w));}
+void write_carray(const char *w) {write_carray(w,strlen(w));}
+
+// write some raw data in the code file (used to write inlined XPM)
+void write_craw(const char* str) {
+  fputs(str, code_file);
+}
+
+void write_c(const char* format,...) {
+  if (varused_test) {varused = 1; return;}
+  va_list args;
+  va_start(args, format);
+  vfprintf(code_file, format, args);
+  va_end(args);
+}
+
+void write_h(const char* format,...) {
+  if (varused_test) return;
+  va_list args;
+  va_start(args, format);
+  vfprintf(header_file, format, args);
+  va_end(args);
+}
+
+#include <fltk/filename.h>
+#include <fltk/ask.h>
+#include <fltk/FL_VERSION.h>
+
+int write_number=0;
+int write_sourceview=0;
+
+/////////////////////////////////////////////////////////////////////
+// recursively dump code, putting children between the two parts
+// of the parent code:
+/////////////////////////////////////////////////////////////////////
+static FluidType* write_code(FluidType* p) {
+  if (write_sourceview) {
+    p->code_line = (int)ftell(code_file);
+    if (p->header_line_end==-1)
+      p->header_line = (int)ftell(header_file);
+  }
+  // write all code that come before the children code
+  // (but don't write the last comment until the very end)
+  if (!(p->next_brother==0 && p->is_comment()))
+    p->write_code();
+  // recursively write the code of all children
+  FluidType* q;
+  if (p->is_widget() && p->is_class()) {
+    // Handle widget classes specially
+    for (q = p->first_child; q; q = q->walk(p)) {
+      if (strcmp(q->type_name(), "Function")) 
+	  q = write_code(q);
+    }
+    // write all code that come after the children 
+    p->write_code();
+
+    for (q = p->first_child; q; q = q->walk(p)) {
+      if (!strcmp(q->type_name(), "Function")) 
+	  q = write_code(q);
+    }
+
+    write_h("};\n");
+  } else {
+    for (q = p->first_child; q; ) 
+	q = write_code(q);
+    // write all code that come after the children 
+    p->write_code();
+  }
+  if (write_sourceview) {
+    p->code_line_end = (int)ftell(code_file);
+    if (p->header_line_end==-1)
+      p->header_line_end = (int)ftell(header_file);
+  }
+  return q;
+}
+/////////////////////////////////////////////////////////////////////
+int write_code(const char *s, const char *t) {
+  const char *filemode = write_sourceview ? "wb" : "w";
+
+  write_number++;
+  delete id_root; id_root = 0;
+  indentation = 0;
+
+  if (!s) code_file = stdout;
+  else {
+    FILE *f = fopen(s,filemode);	
+    if (!f) return 0;
+    code_file = f;
+  }
+  if (!t) header_file = stdout;
+  else {
+    FILE *f = fopen(t,filemode);
+    if (!f) {fclose(code_file); return 0;}
+    header_file = f;
+  }
+  const char *hdr = "\
+// generated by Fast Light User Interface Designer (fluid) version %.4f\n\n";
+  fprintf(header_file, hdr, FL_VERSION);
+  fprintf(code_file, hdr, FL_VERSION);
+
+  {char define_name[102];
+  const char* a = filename_name(t);
+  char* b = define_name;
+  if (!isalpha(*a)) {*b++ = '_';}
+  while (*a) {*b++ = isalnum(*a) ? *a : '_'; a++;}
+  *b = 0;
+  fprintf(header_file, "#ifndef %s\n", define_name);
+  fprintf(header_file, "#define %s\n", define_name);
+  }  
+
+  if (t) {
+    // Ideally this should figure out the relative path between s and t:
+    write_c("#include \"%s\"\n", filename_name(t));
+  }
+
+  for (FluidType* p = FluidType::first; p; p = p->next_brother) {
+    // write all static data for this & all children first
+    p->write_static();
+    if (write_sourceview) {
+      p->header_line_end = (int)ftell(header_file);
+      if (p->header_line==p->header_line_end) p->header_line_end = -1;
+    }
+    for (FluidType* q = p->first_child; q; q = q->walk(p)) {
+      if (write_sourceview) q->header_line = (int)ftell(header_file);
+      q->write_static();
+      if (write_sourceview) {
+        q->header_line_end = (int)ftell(header_file);
+        if (q->header_line==q->header_line_end) q->header_line_end = -1;
+      }
+    }
+    // then write the nested code:
+    p->write_code();
+  }
+
+  delete included_root; included_root = 0;
+
+  if (!s) return 1;
+  int x = fclose(code_file);
+  code_file = 0;
+  fprintf(header_file, "#endif\n");
+  int y = fclose(header_file);
+  header_file = 0;
+  return x >= 0 && y >= 0;
+}
+
+////////////////////////////////////////////////////////////////
+
+void FluidType::write_static() {}
+
+void FluidType::write_code() {
+  write_h("// Header for %s\n", title());
+  write_c("// Code for %s\n", title());
+}
+
+//
+// End of "$Id: code.cxx 7513 2010-04-15 17:19:27Z spitzak $".
+//

Added: branches/branch-3.0-2011/fluid2/coding_style.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/coding_style.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/coding_style.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,240 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0100
+
+#include "coding_style.h"
+static int brace_style;
+static int no_space_parens;
+static int brace_functions;
+static int indent_tabs;
+static int tab_size;
+static int always_return_parens;
+static int indent_code;
+
+static void use_coding_style() {
+  gbrace_style = brace_style;
+  gno_space_parens = no_space_parens;
+  gbrace_functions = brace_functions;
+  gindent_tabs = indent_tabs;
+  gtab_size = tab_size;
+  galways_return_parens = always_return_parens;
+}
+
+static fltk::RadioButton *pStyle1=(fltk::RadioButton *)0;
+
+static void cb_pStyle1(fltk::RadioButton* o, void*) {
+  if(o->value())
+     brace_style = 1;
+}
+
+static fltk::RadioButton *pStyle2=(fltk::RadioButton *)0;
+
+static void cb_pStyle2(fltk::RadioButton* o, void*) {
+  if(o->value())
+     brace_style = 2;
+}
+
+static fltk::RadioButton *pStyle3=(fltk::RadioButton *)0;
+
+static void cb_pStyle3(fltk::RadioButton* o, void*) {
+  if(o->value())
+     brace_style = 3;
+}
+
+static fltk::CheckButton *pNoSpaceParens=(fltk::CheckButton *)0;
+
+static void cb_pNoSpaceParens(fltk::CheckButton* o, void*) {
+  no_space_parens = o->value();;
+}
+
+static fltk::CheckButton *pBraceFuncs=(fltk::CheckButton *)0;
+
+static void cb_pBraceFuncs(fltk::CheckButton* o, void*) {
+  brace_functions = o->value();
+}
+
+static fltk::ValueInput *pTabSize=(fltk::ValueInput *)0;
+
+static void cb_pTabSize(fltk::ValueInput* o, void*) {
+  tab_size = (int)o->value();
+}
+
+static fltk::CheckButton *pIndentTabs=(fltk::CheckButton *)0;
+
+static void cb_pIndentTabs(fltk::CheckButton* o, void*) {
+  indent_tabs = o->value();
+  if(o->value())
+      pTabSize->hide();
+  else
+     pTabSize->show();
+}
+
+static fltk::CheckButton *pIndentCode=(fltk::CheckButton *)0;
+
+static void cb_pIndentCode(fltk::CheckButton* o, void*) {
+  indent_code = o->value();
+}
+
+static fltk::CheckButton *pReturnParens=(fltk::CheckButton *)0;
+
+static void cb_pReturnParens(fltk::CheckButton* o, void*) {
+  always_return_parens = o->value();
+}
+
+static void cb_Cancel(fltk::Button* o, void*) {
+  o->window()->hide();
+}
+
+static void cb_Save(fltk::Button* o, void*) {
+  use_coding_style();
+  save_coding_style();
+  o->window()->hide();
+}
+
+static void cb_Use(fltk::Button* o, void*) {
+  use_coding_style();
+  o->window()->hide();
+}
+
+fltk::Window* make_codingstyle_window() {
+  fltk::Window* w;
+   {fltk::Window* o = new fltk::Window(310, 255);
+    w = o;
+    o->begin();
+     {fltk::TabGroup* o = new fltk::TabGroup(0, 0, 303, 220);
+      o->box(fltk::EMBOSSED_BOX);
+      o->begin();
+       {fltk::Group* o = new fltk::Group(0, 25, 303, 195, "Brace Style");
+        o->selection_color((fltk::Color)0x7f00);
+        o->begin();
+         {fltk::Group* o = new fltk::Group(14, 10, 282, 134);
+          o->box(fltk::ENGRAVED_BOX);
+          o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+          o->begin();
+           {fltk::Widget* o = new fltk::Widget(20, 6, 47, 20, "if ( x ) {");
+            o->box(fltk::NO_BOX);
+            o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+          }
+           {fltk::Widget* o = new fltk::Widget(20, 25, 45, 20, "++y;");
+            o->box(fltk::NO_BOX);
+            o->align(fltk::ALIGN_RIGHT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+          }
+           {fltk::Widget* o = new fltk::Widget(20, 41, 36, 20, "}");
+            o->box(fltk::NO_BOX);
+            o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+          }
+           {fltk::Widget* o = new fltk::Widget(114, 6, 47, 20, "if ( x )");
+            o->box(fltk::NO_BOX);
+            o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+          }
+           {fltk::Widget* o = new fltk::Widget(114, 25, 36, 20, "{");
+            o->box(fltk::NO_BOX);
+            o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+          }
+           {fltk::Widget* o = new fltk::Widget(115, 42, 46, 20, "++y;");
+            o->box(fltk::NO_BOX);
+            o->align(fltk::ALIGN_RIGHT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+          }
+           {fltk::Widget* o = new fltk::Widget(114, 59, 36, 20, "}");
+            o->box(fltk::NO_BOX);
+            o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+          }
+           {fltk::Widget* o = new fltk::Widget(201, 6, 47, 20, "if ( x )");
+            o->box(fltk::NO_BOX);
+            o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+          }
+           {fltk::Widget* o = new fltk::Widget(201, 25, 36, 20, "{");
+            o->box(fltk::NO_BOX);
+            o->align(fltk::ALIGN_RIGHT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+          }
+           {fltk::Widget* o = new fltk::Widget(227, 42, 34, 22, "++y;");
+            o->box(fltk::NO_BOX);
+            o->align(fltk::ALIGN_RIGHT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+          }
+           {fltk::Widget* o = new fltk::Widget(201, 59, 36, 20, "}");
+            o->box(fltk::NO_BOX);
+            o->align(fltk::ALIGN_RIGHT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+          }
+           {fltk::RadioButton* o = pStyle1 = new fltk::RadioButton(16, 84, 66, 25, "Style 1");
+            o->set_flag(fltk::STATE);
+            o->callback((fltk::Callback*)cb_pStyle1);
+          }
+           {fltk::RadioButton* o = pStyle2 = new fltk::RadioButton(109, 84, 66, 25, "Style 2");
+            o->callback((fltk::Callback*)cb_pStyle2);
+          }
+           {fltk::RadioButton* o = pStyle3 = new fltk::RadioButton(200, 84, 66, 25, "Style 3");
+            o->callback((fltk::Callback*)cb_pStyle3);
+          }
+          o->end();
+        }
+         {fltk::CheckButton* o = pNoSpaceParens = new fltk::CheckButton(15, 147, 195, 22, "No space before parentheses");
+          o->callback((fltk::Callback*)cb_pNoSpaceParens);
+        }
+         {fltk::CheckButton* o = pBraceFuncs = new fltk::CheckButton(15, 170, 174, 22, "Apply to function braces");
+          o->set_flag(fltk::STATE);
+          o->callback((fltk::Callback*)cb_pBraceFuncs);
+        }
+        o->end();
+      }
+       {fltk::Group* o = new fltk::Group(0, 25, 303, 183, "Other");
+        o->hide();
+        o->begin();
+         {fltk::Group* o = new fltk::Group(11, 22, 218, 90, "Indentation");
+          o->box(fltk::ENGRAVED_BOX);
+          o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+          o->begin();
+           {fltk::ValueInput* o = pTabSize = new fltk::ValueInput(129, 33, 31, 22, "Tab size for indents");
+            o->maximum(12);
+            o->value(2);
+            o->callback((fltk::Callback*)cb_pTabSize);
+          }
+           {fltk::CheckButton* o = pIndentTabs = new fltk::CheckButton(13, 7, 114, 22, "Indent with tabs");
+            o->callback((fltk::Callback*)cb_pIndentTabs);
+          }
+           {fltk::CheckButton* o = pIndentCode = new fltk::CheckButton(14, 58, 151, 22, "Indent code blocks");
+            o->callback((fltk::Callback*)cb_pIndentCode);
+          }
+          o->end();
+        }
+         {fltk::CheckButton* o = pReturnParens = new fltk::CheckButton(10, 120, 220, 22, "Always use parentheses on return");
+          o->callback((fltk::Callback*)cb_pReturnParens);
+        }
+        o->end();
+      }
+      o->end();
+    }
+     {fltk::Button* o = new fltk::Button(106, 223, 59, 25, "Cancel");
+      o->callback((fltk::Callback*)cb_Cancel);
+    }
+     {fltk::Button* o = new fltk::Button(171, 223, 59, 25, "Save");
+      o->callback((fltk::Callback*)cb_Save);
+    }
+     {fltk::Button* o = new fltk::Button(236, 223, 59, 25, "Use");
+      o->callback((fltk::Callback*)cb_Use);
+    }
+    o->end();
+    o->resizable(o);
+  }
+  return  w;
+}
+
+void load_codingstyle_window() {
+  brace_style = gbrace_style;
+  no_space_parens = gno_space_parens;
+  brace_functions = gbrace_functions;  
+  indent_tabs = gindent_tabs;
+  tab_size = gtab_size;
+  always_return_parens = galways_return_parens;
+  indent_code = gindent_code;
+  pStyle1->value(gbrace_style == 1);
+  pStyle2->value(gbrace_style == 2);
+  pStyle3->value(gbrace_style == 3);
+  pNoSpaceParens->value(gno_space_parens);
+  pBraceFuncs->value(gbrace_functions);
+  pIndentTabs->value(gindent_tabs);
+  pTabSize->value(gtab_size);
+  pReturnParens->value(galways_return_parens);
+  if(gindent_tabs)
+     pTabSize->hide();
+  else
+     pTabSize->show();
+  pIndentCode->value(gindent_code);
+}

Added: branches/branch-3.0-2011/fluid2/coding_style.fl
===================================================================
--- branches/branch-3.0-2011/fluid2/coding_style.fl	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/coding_style.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,245 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.0100 
+images_dir ./ 
+header_name {.h} 
+code_name {.cxx} 
+gridx 5 
+gridy 5 
+snap 3
+decl {extern int gbrace_style;} {public
+} 
+
+decl {extern int gno_space_parens;} {public
+} 
+
+decl {extern int gbrace_functions;} {public
+} 
+
+decl {extern int gindent_tabs;} {public
+} 
+
+decl {extern int gtab_size;} {public
+} 
+
+decl {extern int galways_return_parens;} {public
+} 
+
+decl {extern int gindent_code;} {public
+} 
+
+decl {extern void save_coding_style();} {public
+} 
+
+decl {extern void write_code_block(char *pBlock);} {public
+} 
+
+decl {extern void load_coding_style();} {public
+} 
+
+decl {extern const char *get_opening_brace(int is_function);} {public
+} 
+
+decl {extern const char *get_indent_string(int level);} {public
+} 
+
+decl {\#include <fltk/Widget.h>} {public
+} 
+
+decl {extern void show_coding_style_cb(fltk::Widget *, void *);} {public
+} 
+
+decl {extern void write_includes_from_code(char*);} {public
+} 
+
+decl {int brace_style;} {} 
+
+decl {int no_space_parens;} {} 
+
+decl {int brace_functions;} {} 
+
+decl {int indent_tabs;} {} 
+
+decl {int tab_size;} {} 
+
+decl {int always_return_parens;} {} 
+
+decl {int indent_code;} {} 
+
+Function {use_coding_style()} {private return_type void attributes static
+} {
+  code {gbrace_style = brace_style;
+gno_space_parens = no_space_parens;
+gbrace_functions = brace_functions;
+gindent_tabs = indent_tabs;
+gtab_size = tab_size;
+galways_return_parens = always_return_parens;} {}
+} 
+
+Function {make_codingstyle_window()} {open
+} {
+  {fltk::Window} {} {open
+    xywh {408 452 310 255} resizable visible
+  } {
+    {fltk::TabGroup} {} {open
+      xywh {0 0 303 220} box EMBOSSED_BOX
+    } {
+      {fltk::Group} {} {
+        label {Brace Style} open selected
+        xywh {0 25 303 195} selection_color 0x7f00
+      } {
+        {fltk::Group} {} {
+          xywh {14 10 282 134} align 5 box ENGRAVED_BOX
+        } {
+          {fltk::Widget} {} {
+            label {if ( x ) \{}
+            private xywh {20 6 47 20} align 52 box NO_BOX
+          }
+          {fltk::Widget} {} {
+            label {++y;}
+            private xywh {20 25 45 20} align 56 box NO_BOX
+          }
+          {fltk::Widget} {} {
+            label {\}}
+            private xywh {20 41 36 20} align 52 box NO_BOX
+          }
+          {fltk::Widget} {} {
+            label {if ( x )}
+            private xywh {114 6 47 20} align 52 box NO_BOX
+          }
+          {fltk::Widget} {} {
+            label {\{}
+            private xywh {114 25 36 20} align 52 box NO_BOX
+          }
+          {fltk::Widget} {} {
+            label {++y;}
+            private xywh {115 42 46 20} align 56 box NO_BOX
+          }
+          {fltk::Widget} {} {
+            label {\}}
+            private xywh {114 59 36 20} align 52 box NO_BOX
+          }
+          {fltk::Widget} {} {
+            label {if ( x )}
+            private xywh {201 6 47 20} align 52 box NO_BOX
+          }
+          {fltk::Widget} {} {
+            label {\{}
+            private xywh {201 25 36 20} align 56 box NO_BOX
+          }
+          {fltk::Widget} {} {
+            label {++y;}
+            private xywh {227 42 34 22} align 56 box NO_BOX
+          }
+          {fltk::Widget} {} {
+            label {\}}
+            private xywh {201 59 36 20} align 56 box NO_BOX
+          }
+          {fltk::RadioButton} pStyle1 {
+            label {Style 1}
+            callback {if(o->value())
+   brace_style = 1;}
+            private xywh {16 84 66 25} value 1
+          }
+          {fltk::RadioButton} pStyle2 {
+            label {Style 2}
+            callback {if(o->value())
+   brace_style = 2;}
+            private xywh {109 84 66 25}
+          }
+          {fltk::RadioButton} pStyle3 {
+            label {Style 3}
+            callback {if(o->value())
+   brace_style = 3;}
+            private xywh {200 84 66 25}
+          }
+        }
+        {fltk::CheckButton} pNoSpaceParens {
+          label {No space before parentheses}
+          callback {no_space_parens = o->value();;}
+          private xywh {15 147 195 22}
+        }
+        {fltk::CheckButton} pBraceFuncs {
+          label {Apply to function braces}
+          callback {brace_functions = o->value();}
+          private xywh {15 170 174 22} value 1
+        }
+      }
+      {fltk::Group} {} {
+        label Other
+        xywh {0 25 303 183} hide
+      } {
+        {fltk::Group} {} {
+          label Indentation
+          xywh {11 22 218 90} align 5 box ENGRAVED_BOX
+        } {
+          {fltk::ValueInput} pTabSize {
+            label {Tab size for indents}
+            callback {tab_size = (int)o->value();}
+            private xywh {129 33 31 22} maximum 12 value 2
+          }
+          {fltk::CheckButton} pIndentTabs {
+            label {Indent with tabs}
+            callback {indent_tabs = o->value();
+if(o->value())
+    pTabSize->hide();
+else
+   pTabSize->show();}
+            private xywh {13 7 114 22}
+          }
+          {fltk::CheckButton} pIndentCode {
+            label {Indent code blocks}
+            callback {indent_code = o->value();}
+            private xywh {14 58 151 22}
+          }
+        }
+        {fltk::CheckButton} pReturnParens {
+          label {Always use parentheses on return}
+          callback {always_return_parens = o->value();}
+          private xywh {10 120 220 22}
+        }
+      }
+    }
+    {fltk::Button} {} {
+      label Cancel
+      callback {o->window()->hide();}
+      xywh {106 223 59 25}
+    }
+    {fltk::Button} {} {
+      label Save
+      callback {use_coding_style();
+save_coding_style();
+o->window()->hide();}
+      xywh {171 223 59 25}
+    }
+    {fltk::Button} {} {
+      label Use
+      callback {use_coding_style();
+o->window()->hide();}
+      xywh {236 223 59 25}
+    }
+  }
+} 
+
+Function {load_codingstyle_window()} {return_type void
+} {
+  code {brace_style = gbrace_style;
+no_space_parens = gno_space_parens;
+brace_functions = gbrace_functions;  
+indent_tabs = gindent_tabs;
+tab_size = gtab_size;
+always_return_parens = galways_return_parens;
+indent_code = gindent_code;
+pStyle1->value(gbrace_style == 1);
+pStyle2->value(gbrace_style == 2);
+pStyle3->value(gbrace_style == 3);
+pNoSpaceParens->value(gno_space_parens);
+pBraceFuncs->value(gbrace_functions);
+pIndentTabs->value(gindent_tabs);
+pTabSize->value(gtab_size);
+pReturnParens->value(galways_return_parens);
+if(gindent_tabs)
+   pTabSize->hide();
+else
+   pTabSize->show();
+pIndentCode->value(gindent_code);} {}
+} 

Added: branches/branch-3.0-2011/fluid2/coding_style.h
===================================================================
--- branches/branch-3.0-2011/fluid2/coding_style.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/coding_style.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,30 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0100
+
+#ifndef coding_style_h
+#define coding_style_h
+extern int gbrace_style;
+extern int gno_space_parens;
+extern int gbrace_functions;
+extern int gindent_tabs;
+extern int gtab_size;
+extern int galways_return_parens;
+extern int gindent_code;
+extern void save_coding_style();
+extern void write_code_block(char *pBlock);
+extern void load_coding_style();
+extern const char *get_opening_brace(int is_function);
+extern const char *get_indent_string(int level);
+#include <fltk/Widget.h>
+extern void show_coding_style_cb(fltk::Widget *, void *);
+extern void write_includes_from_code(char*);
+#include <fltk/Window.h>
+#include <fltk/TabGroup.h>
+#include <fltk/Group.h>
+#include <fltk/Widget.h>
+#include <fltk/RadioButton.h>
+#include <fltk/CheckButton.h>
+#include <fltk/ValueInput.h>
+#include <fltk/Button.h>
+fltk::Window* make_codingstyle_window();
+void load_codingstyle_window();
+#endif

Added: branches/branch-3.0-2011/fluid2/coding_style_func.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/coding_style_func.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/coding_style_func.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,180 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <fltk/Window.h>
+#include "FluidType.h"	// for indent() prototype
+#ifdef _WIN32
+# define strcasecmp(a,b) stricmp(a,b)
+# define strncasecmp(a,b,c) strnicmp(a,b,c)
+#endif
+
+// these two are in the FLUID output from coding_style.fl									  
+extern fltk::Window *make_codingstyle_window();
+extern void load_codingstyle_window();
+
+int gbrace_style = 1;
+int gno_space_parens = 0;
+int gbrace_functions = 0;
+int gindent_tabs = 0;
+int gtab_size = 2;
+int galways_return_parens = 0;
+int gindent_code = 1;
+
+struct coding_style_option {
+	const char *name;
+	int *value;
+};
+
+coding_style_option options[] = {
+	{ "Brace_Style", &gbrace_style },
+	{ "No_Space_Parens", &gno_space_parens },
+	{ "Brace_Functions", &gbrace_functions },
+	{ "Indent_Tabs", &gindent_tabs },
+	{ "Tab_Size", &gtab_size },
+	{ "Force_Return_Parens", &galways_return_parens },
+	//	{ "Indent_Code", &gindent_code },
+	{ NULL, NULL }
+};
+
+		
+static FILE *get_coding_style_file(const char *mode)
+{
+#ifdef _WIN32
+  FILE *fp = fopen("fluid_coding_style", mode);
+#else
+  char s[256];
+  sprintf(s, "%s/.fluid_coding_style", getenv("HOME"));
+  FILE *fp = fopen(s, mode);
+#endif
+  return(fp);
+}
+
+
+void load_coding_style()
+{
+  FILE *fp = get_coding_style_file("r");
+  if(fp){
+    char buffer[256];
+    while(!feof(fp)){
+  	  fgets(buffer, sizeof(buffer), fp);
+  	  char *p = strtok(buffer, "=");
+	  for(int i=0; options[i].name; i++)
+		  if(strcasecmp(options[i].name, buffer) == 0)
+			  *(options[i].value) = atol(p + strlen(p) + 1);
+    }
+    fclose(fp);
+   }
+}
+
+void save_coding_style()
+{
+	FILE *fp = get_coding_style_file("w");
+	if(fp){
+      for(int i=0; options[i].name; i++)
+		fprintf(fp, "%s=%d\n", options[i].name, *(options[i].value));
+	  fclose(fp);
+	 }
+}
+
+const char *get_indent_string(int level)
+{
+	static char buffer[256];
+
+	if(gindent_tabs) {
+		int i;
+		for(i = 0; i < level && i < (int)sizeof(buffer) - 2; i++) {
+			buffer[i] = '\t';
+		}
+		buffer[i] = '\0';
+	}
+	else {
+		int pos = 0;
+		for(int i=0; i < level && pos < (int)sizeof(buffer) - 2; i++) {
+			for(int j=0; j < gtab_size && pos < (int)sizeof(buffer) - 2; j++, pos++)
+				buffer[pos] = ' ';
+		}
+		buffer[pos] = '\0';
+	}
+	return (buffer);
+}
+
+
+const char *get_opening_brace(int isfunction)
+{
+  static char buffer[256];
+  if (isfunction && !gbrace_functions)
+    return " {\n";
+  if (gbrace_style == 1) {
+    if(isfunction)
+      return " {\n";
+    else
+      return " {";
+  }
+  if (gbrace_style == 2) {
+    sprintf(buffer, "\n%s{\n", indent());
+    return buffer;
+  }
+  if (gbrace_style == 3) {
+    static char buffer[20];
+    sprintf(buffer, "\n%s{\n", get_indent_string(1));
+    return(buffer);
+  }
+  return " {\n";
+}
+
+void show_coding_style_cb(fltk::Widget *, void *)
+{
+	static fltk::Window *pWindow = NULL;
+
+	if(!pWindow)
+		pWindow = make_codingstyle_window();
+	if(pWindow)
+	{
+		load_codingstyle_window();
+		pWindow->show();
+	}
+}
+
+// For back compatabilty any lines that start with # are written at
+// into the include header file:
+
+// Test to see if extra code is a declaration:
+static bool isdeclare(const char *c) {
+  while (isspace(*c)) c++;
+  if (*c == '#') return true;
+  if (!strncmp(c,"extern",6)) return true;
+  if (!strncmp(c,"typedef",7)) return true;
+  return false;
+}
+
+void write_includes_from_code(char* pBlock)
+{
+  char *pTemp = strchr(pBlock, '\n');
+  while (pTemp) {
+    *pTemp = '\0';
+    if (isdeclare(pBlock)) write_declare("%s", pBlock);
+    *pTemp = '\n';
+    pBlock = pTemp + 1;
+    pTemp = strchr(pBlock, '\n');
+  }
+  if (*pBlock) {
+    if (isdeclare(pBlock)) write_declare("%s", pBlock);
+  }
+}
+
+// And the code is written out with all the # lines removed:
+void write_code_block(char *pBlock)
+{
+  char *pTemp = strchr(pBlock, '\n');
+  while (pTemp) {
+    *pTemp = '\0';
+    if (!isdeclare(pBlock)) write_c("%s%s\n", indent(), pBlock);
+    *pTemp = '\n';
+    pBlock = pTemp + 1;
+    pTemp = strchr(pBlock, '\n');
+  }
+  if (*pBlock) {
+    if (!isdeclare(pBlock)) write_c("%s%s\n", indent(), pBlock);
+  }
+}

Added: branches/branch-3.0-2011/fluid2/comments.h
===================================================================
--- branches/branch-3.0-2011/fluid2/comments.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/comments.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,82 @@
+
+static const char * const comment_text[] = {
+  // GNU Public License/GPL Header
+    "//\n"
+    "// NameOfProgram, ShortDescription\n"
+    "// Copyright (C) YYYY  NameOfAuthor\n"
+    "//\n"
+    "// This program is free software; you can redistribute it and/or\n"
+    "// modify it under the terms of the GNU General Public License\n"
+    "// as published by the Free Software Foundation; either version 2\n"
+    "// of the License, or (at your option) any later version.\n"
+    "//\n"
+    "// This program is distributed in the hope that it will be useful,\n"
+    "// but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+    "// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+    "// GNU General Public License for more details.\n"
+    "//\n"
+    "// You should have received a copy of the GNU General Public License\n"
+    "// along with this program; if not, write to the Free Software\n"
+    "// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n"
+    "//\n",
+  // GNU Public License/GPL Footer
+    "\n//\n"
+    "// NameOfProgram, ShortDescription\n"
+    "// Copyright (C) YYYY  NameOfAuthor\n"
+    "//",
+  // GNU Public License/LGPL Header
+    "//\n"
+    "// NameOfLibrary, ShortDescription\n"
+    "// Copyright (C) YYYY  NameOfAuthor\n"
+    "//\n"
+    "// This library is free software; you can redistribute it and/or\n"
+    "// modify it under the terms of the GNU Lesser General Public\n"
+    "// License as published by the Free Software Foundation; either\n"
+    "// version 2.1 of the License, or (at your option) any later version.\n"
+    "//\n"
+    "// This library is distributed in the hope that it will be useful,\n"
+    "// but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+    "// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+    "// GNU Lesser General Public License for more details.\n"
+    "//\n"
+    "// You should have received a copy of the GNU Lesser General Public\n"
+    "// License along with this program; if not, write to the Free Software\n"
+    "// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n"
+    "//\n",
+  // GNU Public License/LGPL Footer
+    "\n//\n"
+    "// NameOfLibrary, ShortDescription\n"
+    "// Copyright (C) YYYY  NameOfAuthor\n"
+    "//",
+  // FLTK/Header
+    "//\n"
+    "// \"$Id$\"\n"
+    "//\n"
+    "// ... for the Fast Light Tool Kit (FLTK).\n"
+    "//\n"
+    "// Copyright 1998-2006 by Bill Spitzak and others.\n"
+    "//\n"
+    "// This library is free software; you can redistribute it and/or\n"
+    "// modify it under the terms of the GNU Library General Public\n"
+    "// License as published by the Free Software Foundation; either\n"
+    "// version 2 of the License, or (at your option) any later version.\n"
+    "//\n"
+    "// This library is distributed in the hope that it will be useful,\n"
+    "// but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+    "// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
+    "// Library General Public License for more details.\n"
+    "//\n"
+    "// You should have received a copy of the GNU Library General Public\n"
+    "// License along with this library; if not, write to the Free Software\n"
+    "// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307\n"
+    "// USA.\n"
+    "//\n"
+    "// Please report all bugs and problems on the following page:\n"
+    "//\n"
+    "//     http://www.fltk.org/str.php\n";
+    "//\n",
+  // FLTK/Footer
+    "\n//\n"
+    "// End of \"$Id$\".\n"
+    "//",
+};

Added: branches/branch-3.0-2011/fluid2/dll.sed
===================================================================
--- branches/branch-3.0-2011/fluid2/dll.sed	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/dll.sed	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,2 @@
+s/static /FLUID_IMPORT static /
+s/extern /FLUID_IMPORT extern /

Added: branches/branch-3.0-2011/fluid2/dll.sh
===================================================================
--- branches/branch-3.0-2011/fluid2/dll.sh	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/dll.sh	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,4 @@
+for i in Fl_Type.h Fluid_Plugins.h Fluid_Image.h; do
+	sed -f dll.sed < $i > tmp
+	mv tmp $i
+done

Added: branches/branch-3.0-2011/fluid2/factory.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/factory.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/factory.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,361 @@
+//
+// "$Id: factory.cxx 5940 2007-08-02 14:22:54Z spitzak $"
+//
+// Widget factory code for the Fast Light Tool Kit (FLTK).
+//
+// Type classes for most of the fltk widgets.  Most of the work
+// is done by code in WidgetType.C.  Also a factory instance
+// of each of these type classes.
+//
+// This file also contains the "new" menu, which has a pointer
+// to a factory instance for every class (both the ones defined
+// here and ones in other files)
+//
+// 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".
+//
+#include <fltk/run.h>
+#include <fltk/Group.h>
+#include <fltk/MenuBuild.h>
+#include <fltk/MenuBar.h>
+#include <fltk/string.h>
+
+#include <string.h>
+#include <stdio.h>
+
+#include "Enumeration.h"
+#include "Widget_Types.h"
+#include "Fluid_Plugins.h"
+#include "fluid_menus.h"
+#include "undo.h"
+
+using namespace fltk;
+
+////////////////////////////////////////////////////////////////
+const Enumeration buttontype_menu[] = {
+  {"Normal", 0,		(void*)0},
+  {"Toggle", "TOGGLE",	(void*)fltk::Button::TOGGLE},
+  {"Radio",  "RADIO",	(void*)fltk::Button::RADIO},
+  {0}};
+
+const Enumeration input_type_menu[] = {
+  {"Normal",	0,	(void*)Input::NORMAL},
+  {"Numeric",	0,	(void*)6,			"fltk::NumericInput"},
+  {"Float",	0,	(void*)1,			"fltk::FloatInput"},
+  {"Int",	0,	(void*)2,			"fltk::IntInput"},
+  {"Secret",	0,	(void*)Input::SECRET,		"fltk::SecretInput"},
+  {"Multiline",	0,	(void*)Input::MULTILINE,	"fltk::MultiLineInput"},
+  {"Wordwrap",	0,	(void*)Input::WORDWRAP,		"fltk::WordwrapInput"},
+  {0}};
+
+const Enumeration dial_type_menu[] = {
+  {"Dot", 	0,	(void*)Dial::NORMAL},
+  {"Line",	"LINE",	(void*)Dial::LINE},
+  {"Fill",	"FILL",	(void*)Dial::FILL},
+  {0}};
+
+const Enumeration slider_type_menu[] = {
+  {"Linear No ticks",	"LINEAR",	(void*)(fltk::Slider::LINEAR)},
+  {"Linear Top/left ticks","TICK_ABOVE",(void*)(fltk::Slider::TICK_ABOVE)},
+  {"Linear Bottom/right ticks","TICK_BELOW",(void*)(fltk::Slider::TICK_BELOW)},
+  {"Linear Both ticks","TICK_BOTH", (void*)(fltk::Slider::TICK_BOTH)},
+
+  {"Log No ticks",	"LOG",	(void*)(fltk::Slider::LOG)},
+  {"Log Top/left ticks","LOG|fltk::Slider::TICK_ABOVE",(void*)(fltk::Slider::LOG|fltk::Slider::TICK_ABOVE)},
+  {"Log Bottom/right ticks","LOG|fltk::Slider::TICK_BELOW",(void*)(fltk::Slider::LOG|fltk::Slider::TICK_BELOW)},
+  {"Log Both ticks","LOG|fltk::Slider::TICK_BOTH", (void*)(fltk::Slider::LOG|fltk::Slider::TICK_BOTH)},
+  {0}};
+
+const Enumeration output_type_menu[] = {
+  {"Normal",	0,	(void*)fltk::Output::NORMAL},
+  {"Multiline",	0,	(void*)fltk::Output::MULTILINE, "fltk::MultiLineOutput"},
+  {"Wordwrap",	0,	(void*)fltk::Output::WORDWRAP, "fltk::WordwrapOutput"},
+  {0}};
+
+////////////////////////////////////////////////////////////////
+int TextEditorType::textstuff(int w, fltk::Font* f, int& s, fltk::Color c) {
+    fltk::TextEditor *myo = (fltk::TextEditor*)(w==4 ? ((WidgetType*)factory)->o : o);
+    switch (w) {
+    case 4:
+    case 0: f = myo->textfont(); s = (int) myo->textsize(); c = myo->textcolor(); break;
+    case 1: myo->textfont(f); break;
+    case 2: myo->textsize((float)s); break;
+    case 3: myo->textcolor(c); break;
+    }
+    return 1;
+}
+
+int TextDisplayType::textstuff(int w, fltk::Font* f, int& s, fltk::Color c) {
+  fltk::TextDisplay *myo = (fltk::TextDisplay*)(w==4 ? ((WidgetType*)factory)->o : o);
+  switch (w) {
+    case 4:
+    case 0: f = myo->textfont(); s = (int) myo->textsize(); c = myo->textcolor(); break;
+    case 1: myo->textfont(f); break;
+    case 2: myo->textsize((float)s); break;
+    case 3: myo->textcolor(c); break;
+  }
+  return 1;
+}
+
+int FileInputType::textstuff(int w, fltk::Font* f, int& s, fltk::Color c) {
+    fltk::FileInput *myo = (fltk::FileInput*)(w==4 ? ((WidgetType*)factory)->o : o);
+  switch (w) {
+    case 4:
+    case 0: f = myo->textfont(); s = (int) myo->textsize(); c = myo->textcolor(); break;
+    case 1: myo->textfont(f); break;
+    case 2: myo->textsize((float)s); break;
+    case 3: myo->textcolor(c); break;
+  }
+  return 1;
+}
+
+////////////////////////////////////////////////////////////////
+
+extern void select(FluidType *,int);
+
+using namespace fltk;
+
+
+//////////////////////////////////////////////////////////////////////
+
+int reading_file;
+
+// Recursive function for searching submenus:
+static FluidType *FluidType_make(const char *tn, fltk::ItemGroup * menu) {
+  FluidType *r = 0;
+  fltk::Item * m=0;
+  char menuName[128];
+  int n;
+
+  reading_file = 1; // makes labels be null
+
+  if (!tn || strlen(tn)==0) 
+      return 0;
+
+  for (n = menu->children(); n--;) {
+    fltk::Widget* w = menu->child(n);
+    if (w->label() && w->is_group() && tn && *tn) {
+	snprintf(menuName,sizeof(menuName),"%s/%s",w->label(),tn);
+	m = (fltk::Item *) menu->find(menuName);
+	if (m)  break;
+      }
+  }
+  if (m && m->user_data())
+    r = ((FluidType*)(m->user_data()))->make();
+
+  reading_file = 0; // makes labels be null
+
+  return r;
+}
+
+static struct {const char* oldname; const char* newname;} ntable[] = {
+  {"submenu",		"fltk::ItemGroup"},
+  {"menuitem",		"fltk::Item"},
+  {"Fl_Counter",	"fltk::ValueInput"},
+  {"Fl_Spinner",	"fltk::ValueInput"},
+  {"Fl_Tabs",		"fltk::TabGroup"},
+  {"Fl_Return_Button",	"fltk::ReturnButton"},
+  {"fltk::EnterButton",	"fltk::ReturnButton"},
+  {"Fl_Menu_Button",	"fltk::PopupMenu"},
+  {"Fl_Box",		"fltk::InvisibleBox"},
+  {"Fl_Boxtype",	"fltk::InvisibleBoxType"},
+  {"Fl_Round_Button",	"fltk::RadioButton"},
+  {"Fl_Pack",		"fltk::PackedGroup"},
+  {"Fl_Tabs",		"fltk::TabGroup"},
+  {"Fl_Scroll",		"fltk::ScrollGroup"},
+  {"Fl_Bar",		"fltk::BarGroup"},
+  {"Fl_Roller",		"fltk::ThumbWheel"},
+  {"Fl_File_Browser",	"fltk::FileBrowser"},
+  {"Fl_Text_Display",	"fltk::TextDisplay"},
+  {"Fl_Text_Editor",	"fltk::TextEditor"},
+  {"Fl_Tile",		"fltk::TiledGroup"}
+};
+
+// Create a new type by name.
+FluidType* FluidType::make(const char *tn) {
+  // Translate fltk1.0 names into fltk2.0 ones:
+  const char* p = 0;
+  // First try any of our direct translations:
+  for (unsigned n = 0; n < sizeof(ntable)/sizeof(*ntable); n++) {
+    if (!strcasecmp(ntable[n].oldname, tn)) {p = ntable[n].newname; break;}
+  }
+  char buffer[128];
+  // Now try cooking old names into new ones:
+  if (!p && !strncmp(tn, "Fl_", 3)) {
+    p = buffer;
+    strcpy(buffer, "fltk::");
+    char* q = buffer+6;
+    for (const char* r = tn+3; *r; r++) if (*r != '_') *q++ = *r;
+    *q = 0;
+  } else if (!p) {
+    p = tn;
+  }
+  // Now search the "new" menu for them
+  return ::FluidType_make(p, newMenu);
+}
+
+////////////////////////////////////////////////////////////////
+
+// Since I have included all the .h files, do this table here:
+
+// This table is only used for back compatability with XForms fdesign files,
+// there should be no need to add to it in future versions of fluid.
+
+struct symbol {const char *name; int value;};
+
+static symbol table[] = {
+  {"BLACK",	fltk::BLACK},
+  {"RED",	fltk::RED},
+  {"GREEN",	fltk::GREEN},
+  {"YELLOW",	fltk::YELLOW},
+  {"BLUE",	fltk::BLUE},
+  {"MAGENTA",	fltk::MAGENTA},
+  {"CYAN",	fltk::CYAN},
+  {"WHITE",	fltk::WHITE},
+
+  {"LCOL",		fltk::BLACK},
+  {"COL1",		fltk::GRAY75},
+  {"MCOL",		51},
+  {"LEFT_BCOL",		55},
+  {"TOP_BCOL",		53},
+  {"BOTTOM_BCOL",	45},
+  {"RIGHT_BCOL",	39},
+  {"INACTIVE",		fltk::GRAY66},
+  {"INACTIVE_COL",	fltk::GRAY66},
+  {"FREE_COL1",		16},
+  {"FREE_COL2",		17},
+  {"FREE_COL3",		18},
+  {"FREE_COL4",		19},
+  {"FREE_COL5",		20},
+  {"FREE_COL6",		21},
+  {"FREE_COL7",		22},
+  {"FREE_COL8",		23},
+  {"FREE_COL9",		24},
+  {"FREE_COL10",	25},
+  {"FREE_COL11",	26},
+  {"FREE_COL12",	27},
+  {"FREE_COL13",	28},
+  {"FREE_COL14",	29},
+  {"FREE_COL15",	30},
+  {"FREE_COL16",	31},
+  {"TOMATO",		131},
+  {"INDIANRED",		164},
+  {"SLATEBLUE",		195},
+  {"DARKGOLD",		84},
+  {"PALEGREEN",		157},
+  {"ORCHID",		203},
+  {"DARKCYAN",		189},
+  {"DARKTOMATO",	113},
+  {"WHEAT",		174},
+
+  {"ALIGN_CENTER",	fltk::ALIGN_CENTER},
+  {"ALIGN_TOP",		fltk::ALIGN_TOP},
+  {"ALIGN_BOTTOM",	fltk::ALIGN_BOTTOM},
+  {"ALIGN_LEFT",	fltk::ALIGN_LEFT},
+  {"ALIGN_RIGHT",	fltk::ALIGN_RIGHT},
+  {"ALIGN_INSIDE",	fltk::ALIGN_INSIDE},
+  {"ALIGN_TOP_LEFT",	 fltk::ALIGN_TOP | fltk::ALIGN_LEFT},
+  {"ALIGN_TOP_RIGHT",	 fltk::ALIGN_TOP | fltk::ALIGN_RIGHT},
+  {"ALIGN_BOTTOM_LEFT",	 fltk::ALIGN_BOTTOM | fltk::ALIGN_LEFT},
+  {"ALIGN_BOTTOM_RIGHT", fltk::ALIGN_BOTTOM | fltk::ALIGN_RIGHT},
+  {"ALIGN_CENTER|FL_ALIGN_INSIDE",	fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE},
+  {"ALIGN_TOP|FL_ALIGN_INSIDE",		fltk::ALIGN_TOP|fltk::ALIGN_INSIDE},
+  {"ALIGN_BOTTOM|FL_ALIGN_INSIDE",	fltk::ALIGN_BOTTOM|fltk::ALIGN_INSIDE},
+  {"ALIGN_LEFT|FL_ALIGN_INSIDE",	fltk::ALIGN_LEFT|fltk::ALIGN_INSIDE},
+  {"ALIGN_RIGHT|FL_ALIGN_INSIDE",	fltk::ALIGN_RIGHT|fltk::ALIGN_INSIDE},
+  {"ALIGN_INSIDE|FL_ALIGN_INSIDE",	fltk::ALIGN_INSIDE|fltk::ALIGN_INSIDE},
+  {"ALIGN_TOP_LEFT|FL_ALIGN_INSIDE",	fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_INSIDE},
+  {"ALIGN_TOP_RIGHT|FL_ALIGN_INSIDE",	fltk::ALIGN_TOP|fltk::ALIGN_RIGHT|fltk::ALIGN_INSIDE},
+  {"ALIGN_BOTTOM_LEFT|FL_ALIGN_INSIDE",	fltk::ALIGN_BOTTOM|fltk::ALIGN_LEFT|fltk::ALIGN_INSIDE},
+  {"ALIGN_BOTTOM_RIGHT|FL_ALIGN_INSIDE",fltk::ALIGN_BOTTOM|fltk::ALIGN_RIGHT|fltk::ALIGN_INSIDE},
+
+  {"ALIGN_LEFT_TOP",	 fltk::ALIGN_TOP | fltk::ALIGN_LEFT},
+  {"ALIGN_RIGHT_TOP",	 fltk::ALIGN_TOP | fltk::ALIGN_RIGHT},
+  {"ALIGN_LEFT_BOTTOM",	 fltk::ALIGN_BOTTOM | fltk::ALIGN_LEFT},
+  {"ALIGN_RIGHT_BOTTOM", fltk::ALIGN_BOTTOM | fltk::ALIGN_RIGHT},
+  {"INVALID_STYLE",	 255},
+  {"NORMAL_STYLE",	 0},
+  {"BOLD_STYLE",	 1},
+  {"ITALIC_STYLE",	 2},
+  {"BOLDITALIC_STYLE",	 3},
+  {"FIXED_STYLE",	 4},
+  {"FIXEDBOLD_STYLE",	 5},
+  {"FIXEDITALIC_STYLE",	 6},
+  {"FIXEDBOLDITALIC_STYLE",  7},
+  {"TIMES_STYLE",	 8},
+  {"TIMESBOLD_STYLE",	 9},
+  {"TIMESITALIC_STYLE",	 10},
+  {"TIMESBOLDITALIC_STYLE",  11},
+//   {"SHADOW_STYLE",	0x100
+//   {"ENGRAVED_STYLE",	0x200
+//   {"EMBOSSED_STYLE",	0x300
+  {"TINY_SIZE",		8},
+  {"SMALL_SIZE",	11},
+  {"NORMAL_SIZE",	12},
+  {"MEDIUM_SIZE",	18},
+  {"LARGE_SIZE",	24},
+  {"HUGE_SIZE",		32},
+  {"DEFAULT_SIZE",	12},
+  {"TINY_FONT",		8},
+  {"SMALL_FONT",	11},
+  {"NORMAL_FONT",	12},
+  {"MEDIUM_FONT",	18},
+  {"LARGE_FONT",	24},
+  {"HUGE_FONT",		32},
+  {"NORMAL_FONT1",	11},
+  {"NORMAL_FONT2",	12},
+  {"DEFAULT_FONT",	11},
+  {"RETURN_END_CHANGED",0},
+  {"RETURN_CHANGED",	1},
+  {"RETURN_END",	2},
+  {"RETURN_ALWAYS",	3},
+  {"PUSH_BUTTON",	fltk::Button::TOGGLE},
+  {"RADIO_BUTTON",	fltk::Button::RADIO},
+  {"HIDDEN_BUTTON",	fltk::Button::HIDDEN},
+  {"SELECT_BROWSER",	fltk::Browser::NORMAL},
+  {"HOLD_BROWSER",	fltk::Browser::NORMAL},
+  {"MULTI_BROWSER",	fltk::Browser::MULTI},
+  //  {"SIMPLE_COUNTER",	fltk::Counter::SIMPLE},
+  {"LINE_DIAL",		fltk::Dial::LINE},
+  {"FILL_DIAL",		fltk::Dial::FILL},
+  {"VERT_SLIDER",	fltk::Slider::LINEAR},
+  {"HOR_SLIDER",	fltk::Slider::LINEAR},
+  {"VERT_FILL_SLIDER",	fltk::Slider::LINEAR},
+  {"HOR_FILL_SLIDER",	fltk::Slider::LINEAR},
+  {"VERT_NICE_SLIDER",	fltk::Slider::LINEAR},
+  {"HOR_NICE_SLIDER",	fltk::Slider::LINEAR},
+};
+
+#include <stdlib.h>
+
+int lookup_fdesign(const char *name, int &v, int numberok) {
+  if (name[0]=='F' && name[1]=='L' && name[2]=='_') name += 3;
+  for (int i=0; i < int(sizeof(table)/sizeof(*table)); i++)
+    if (!strcasecmp(name,table[i].name)) {v = table[i].value; return 1;}
+  if (numberok) {
+    char* p;
+    v = strtol(name, &p, 0);
+    if (!*p && p > name) return 1;
+  }
+  return 0;
+}
+
+//
+// End of "$Id: factory.cxx 5940 2007-08-02 14:22:54Z spitzak $".
+//

Added: branches/branch-3.0-2011/fluid2/file.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/file.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/file.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,662 @@
+//
+// "$Id: file.cxx 5738 2007-03-12 18:07:45Z spitzak $"
+//
+// Fluid file routines for the Fast Light Tool Kit (FLTK).
+//
+// You may find the basic read_* and write_* routines to
+// be useful for other programs.  I have used them many times.
+// They are somewhat similar to tcl, using matching { and }
+// to quote strings.
+//
+// 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".
+//
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <fltk/FL_VERSION.h>
+
+#include "alignment_panel.h"
+#include "Fluid_Image.h"
+#include "WidgetType.h"
+#include "PrefsData.h"
+
+////////////////////////////////////////////////////////////////
+// BASIC FILE WRITING:
+
+static FILE *fout;
+
+#include <fltk/ask.h>
+int open_write(const char *s) {
+  if (!s) {fout = stdout; return 1;}
+  FILE *f = fopen(s,"w");
+  if (!f) return 0;
+  fout = f;
+  return 1;
+}
+
+int close_write() {
+  if (fout != stdout) {
+    int x = fclose(fout);
+    fout = stdout;
+    return x >= 0;
+  }
+  return 1;
+}
+
+static int needspace;
+int is_id(char); // in code.C
+
+// write a string, quoting characters if necessary:
+void write_word(const char *w) {
+  if (needspace) putc(' ', fout);
+  needspace = 1;
+  if (!w || !*w) {fprintf(fout,"{}"); return;}
+  const char *p;
+  // see if it is a single word:
+  for (p = w; is_id(*p); p++) ;
+  if (!*p) {fprintf(fout,"%s",w); return;}
+  // see if there are matching braces:
+  int n = 0;
+  for (p = w; *p; p++) {
+    if (*p == '{') n++;
+    else if (*p == '}') {n--; if (n<0) break;}
+  }
+  int mismatched = (n != 0);
+  // write out brace-quoted string:
+  putc('{', fout);
+  for (; *w; w++) {
+    switch (*w) {
+    case '{':
+    case '}':
+      if (!mismatched) break;
+    case '\\':
+    case '#':
+      putc('\\',fout);
+      break;
+    }
+    putc(*w,fout);
+  }
+  putc('}', fout);
+}
+
+// write an arbitrary formatted word, or a comment, etc:
+void write_string(const char *format, ...) {
+  va_list args;
+  va_start(args, format);
+  if (needspace) fputc(' ',fout);
+  vfprintf(fout, format, args);
+  va_end(args);
+  needspace = !isspace(format[strlen(format)-1]);
+}
+
+// start a new line and indent it for a given nesting level:
+void write_indent(int n) {
+  fputc('\n',fout);
+  while (n--) {fputc(' ',fout); fputc(' ',fout);}
+  needspace = 0;
+}
+
+// write a '{' at the given indenting level:
+void write_open(int) {
+  if (needspace) fputc(' ',fout);
+  fputc('{',fout);
+  needspace = 0;
+}
+
+// write a '}' at the given indenting level:
+void write_close(int n) {
+  if (needspace) write_indent(n);
+  fputc('}',fout);
+  needspace = 1;
+}
+
+////////////////////////////////////////////////////////////////
+// BASIC FILE READING:
+
+static FILE *fin;
+static int lineno;
+static const char *fname;
+
+int open_read(const char *s) {
+  lineno = 1;
+  if (!s) {fin = stdin; fname = "stdin"; return 1;}
+  FILE *f = fopen(s,"r");
+  if (!f) return 0;
+  fin = f;
+  fname = s;
+  return 1;
+}
+
+int close_read() {
+  if (fin != stdin) {
+    int x = fclose(fin);
+    fin = 0;
+    return x >= 0;
+  }
+  return 1;
+}
+
+#include <fltk/ask.h>
+
+void read_error(const char *format, ...) {
+  va_list args;
+  va_start(args, format);
+  if (!fin) {
+    char buffer[1024];
+    vsprintf(buffer, format, args);
+    fltk::message(buffer);
+  } else {
+    fprintf(stderr, "%s:%d: ", fname, lineno);
+    vfprintf(stderr, format, args);
+    fprintf(stderr, "\n");
+  }
+  va_end(args);
+}
+
+static int hexdigit(int x) {
+  if (isdigit(x)) return x-'0';
+  if (isupper(x)) return x-'A'+10;
+  if (islower(x)) return x-'a'+10;
+  return 20;
+}
+
+
+static int read_quoted() {	// read whatever character is after a \ .
+  int c,d,x;
+  switch(c = fgetc(fin)) {
+  case '\n': lineno++; return -1;
+  case 'a' : return('\a');
+  case 'b' : return('\b');
+  case 'f' : return('\f');
+  case 'n' : return('\n');
+  case 'r' : return('\r');
+  case 't' : return('\t');
+  case 'v' : return('\v');
+  case 'x' :	/* read hex */
+    for (c=x=0; x<3; x++) {
+      int ch = fgetc(fin);
+      d = hexdigit(ch);
+      if (d > 15) {ungetc(ch,fin); break;}
+      c = (c<<4)+d;
+    }
+    break;
+  default:		/* read octal */
+    if (c<'0' || c>'7') break;
+    c -= '0';
+    for (x=0; x<2; x++) {
+      int ch = fgetc(fin);
+      d = hexdigit(ch);
+      if (d>7) {ungetc(ch,fin); break;}
+      c = (c<<3)+d;
+    }
+    break;
+  }
+  return(c);
+}
+
+// return a word read from the file, or NULL at the EOF:
+// This will skip all comments (# to end of line), and evaluate
+// all \xxx sequences and use \ at the end of line to remove the newline.
+// A word is any one of:
+//	a continuous string of non-space chars except { and } and #
+//	everything between matching {...} (unless wantbrace != 0)
+//	the characters '{' and '}'
+
+static char *buffer;
+static int buflen;
+static void expand_buffer(int length) {
+  if (length >= buflen) {
+    if (!buflen) {
+      buflen = length+1;
+      buffer = (char*)malloc(buflen);
+    } else {
+      buflen = 2*buflen;
+      if (length >= buflen) buflen = length+1;
+      buffer = (char *)realloc((void *)buffer,buflen);
+    }
+  }
+}
+
+const char *read_word(int wantbrace) {
+  int x;
+
+  // skip all the whitespace before it:
+  for (;;) {
+    x = getc(fin);
+    if (x < 0) {	// eof
+      return 0;
+    } else if (x == '#') {	// comment
+      do x = getc(fin); while (x >= 0 && x != '\n');
+      lineno++;
+      continue;
+    } else if (x == '\n') {
+      lineno++;
+    } else if (!isspace(x)) {
+      break;
+    }
+  }
+
+  expand_buffer(100);
+
+  if (x == '{' && !wantbrace) {
+
+    // read in whatever is between braces
+    int length = 0;
+    int nesting = 0;
+    for (;;) {
+      x = getc(fin);
+      if (x<0) {read_error("Missing '}'"); break;}
+      else if (x == '#') { // embedded comment
+	do x = getc(fin); while (x >= 0 && x != '\n');
+	lineno++;
+	continue;
+      } else if (x == '\n') lineno++;
+      else if (x == '\\') {x = read_quoted(); if (x<0) continue;}
+      else if (x == '{') nesting++;
+      else if (x == '}') {if (!nesting--) break;}
+      buffer[length++] = x;
+      expand_buffer(length);
+    }
+    buffer[length] = 0;
+    return buffer;
+
+  } else if (x == '{' || x == '}') {
+    // all the punctuation is a word:
+    buffer[0] = x;
+    buffer[1] = 0;
+    return buffer;
+
+  } else {
+
+    // read in an unquoted word:
+    int length = 0;
+    for (;;) {
+      if (x == '\\') {x = read_quoted(); if (x<0) continue;}
+      else if (x<0 || isspace(x) || x=='{' || x=='}' || x=='#') break;
+      buffer[length++] = x;
+      expand_buffer(length);
+      x = getc(fin);
+    }
+    ungetc(x, fin);
+    buffer[length] = 0;
+    return buffer;
+
+  }
+}
+
+////////////////////////////////////////////////////////////////
+
+// global int variables:
+static struct {const char* name; int* value;} inttable[] = {
+  {"gridx", prefs.gridxPtr()},
+  {"gridy", prefs.gridyPtr()},
+  {"snap", prefs.snapPtr()}
+};
+
+extern int header_file_set;
+extern int code_file_set;
+extern const char* header_file_name;
+extern const char* code_file_name;
+extern char* theme;
+
+int write_file(const char *filename, int selected_only) {
+  if (!open_write(filename)) return 0;
+  write_string("# data file for the FLTK User Interface Designer (FLUID)\n"
+	       "version %.4f",FL_VERSION);
+  if (images_dir) write_string("\nimages_dir %s", images_dir);
+  if(!include_H_from_C)
+    write_string("\ndo_not_include_H_from_C");
+  if (!selected_only) {
+    write_string("\nheader_name"); write_word(header_file_name);
+    write_string("\ncode_name"); write_word(code_file_name);
+    write_string("\n%s %d","gridx", prefs.gridx());
+    write_string("\n%s %d","gridy", prefs.gridy());
+    write_string("\n%s %d","snap", prefs.snap());
+  }
+  if (theme && *theme) { write_string("\ntheme "); write_word(theme); }
+  for (FluidType *p = FluidType::first; p;) {
+    if (!selected_only || p->selected()) {
+      p->write();
+      write_string("\n");
+      p = p->next_brother;
+    } else {
+      p = p->walk();
+    }
+  }
+  return close_write();
+}
+
+////////////////////////////////////////////////////////////////
+// read all the objects out of the input file:
+
+void read_fdesign();
+
+double read_version;
+
+extern void set_theme(const char* s);
+
+static void read_children(FluidType *p, int paste) {
+  FluidType::current = p;
+  for (;;) {
+    unsigned int i;
+    const char *c = read_word();
+  REUSE_C:
+    if (!c) {
+      if (p && !paste) read_error("Missing '}'");
+      break;
+    }
+
+    if (!strcmp(c,"}")) {
+      if (!p) read_error("Unexpected '}'");
+      break;
+    }
+
+    // this is the first word in a .fd file:
+    if (!strcmp(c,"Magic:")) {
+      read_fdesign();
+      return;
+    }
+
+    if (!strcmp(c,"version")) {
+      c = read_word();
+      read_version = strtod(c,0);
+      if (read_version<=0 || read_version>FL_VERSION)
+	read_error("unknown version '%s'",c);
+      continue;
+    }
+
+    // back compatability with Vincent Penne's original class code:
+    if (!p && !strcmp(c,"define_in_struct")) {
+	FluidType *t = FluidType::make("class");
+      t->name(read_word());
+      FluidType::current = p = t;
+      paste = 1; // stops "missing }" error
+      continue;
+    }
+
+    if (!strcmp(c,"do_not_include_H_from_C"))
+    {
+      include_H_from_C=0;
+      goto CONTINUE;
+    }
+    if (!strcmp(c,"images_dir"))
+    {
+      images_dir = strdup(read_word()); // This will never get deleted ...
+      if (!*images_dir) images_dir = 0;
+      goto CONTINUE;
+    }
+    if (!strcmp(c,"header_name")) {
+      if (!header_file_set) header_file_name = strdup(read_word());
+      else read_word();
+      goto CONTINUE;
+    }
+
+    if (!strcmp(c,"code_name")) {
+      if (!code_file_set) code_file_name = strdup(read_word());
+      else read_word();
+      goto CONTINUE;
+    }
+
+    if (!strcmp(c, "theme") || !strcmp(c, "scheme")) {
+      set_theme(read_word());
+      goto CONTINUE;
+    }
+
+    for (i=0; i<sizeof(inttable)/sizeof(*inttable); i++) {
+      if (!strcmp(c,inttable[i].name)) {
+	c = read_word();
+	*inttable[i].value = int(strtol(c,0,0));
+	goto CONTINUE;
+      }
+    }
+
+    {FluidType *t = FluidType::make(c);
+    if (!t) {
+      read_error("Unknown word \"%s\"", c);
+      continue;
+    }
+    t->name(read_word());
+
+    c = read_word(1);
+    
+	if (strcmp(c,"{") && t->is_class()) {   // <prefix> <name>
+      t->prefix(t->name());
+      t->name(c);
+      c = read_word(1);
+    }
+
+    if (strcmp(c,"{")) {
+      read_error("Missing property list for %s\n",t->title());
+      goto REUSE_C;
+    }
+
+    t->open_ = false;
+    for (;;) {
+      const char *c = read_word();
+      if (!c || !strcmp(c,"}")) break;
+      t->read_property(c);
+    }
+
+    if (!t->is_parent()) continue;
+    c = read_word(1);
+    if (strcmp(c,"{")) {
+      read_error("Missing child list for %s\n",t->title());
+      goto REUSE_C;
+    }
+    read_children(t, 0);}
+    FluidType::current = p;
+  CONTINUE:;
+  }
+}
+
+extern void deselect();
+
+int read_file(const char *filename, int merge) {
+  FluidType* parent = merge ? FluidType::current : 0;
+  read_version = 0.0;
+  if (!open_read(filename)) return 0;
+  if (merge) deselect();
+  else delete_all();
+  read_children(parent, merge);
+  FluidType::current = parent;
+  for (FluidType *o = FluidType::first; o; o = o->walk())
+    if (o->selected()) {
+      FluidType::current = o; break;
+    }
+  return close_read();
+}
+
+////////////////////////////////////////////////////////////////
+// Read Forms and XForms fdesign files:
+
+int read_fdesign_line(const char*& name, const char*& value) {
+
+  int length = 0;
+  int x;
+  // find a colon:
+  for (;;) {
+    x = getc(fin);
+    if (x < 0) return 0;
+    if (x == '\n') {length = 0; continue;} // no colon this line...
+    if (!isspace(x)) {
+      buffer[length++] = x;
+      expand_buffer(length);
+    }
+    if (x == ':') break;
+  }
+  int valueoffset = length;
+  buffer[length-1] = 0;
+
+  // skip to start of value:
+  for (;;) {
+    x = getc(fin);
+    if (x < 0 || x == '\n' || !isspace(x)) break;
+  }
+
+  // read the value:
+  for (;;) {
+    if (x == '\\') {x = read_quoted(); if (x<0) continue;}
+    else if (x == '\n') break;
+    buffer[length++] = x;
+    expand_buffer(length);
+    x = getc(fin);
+  }
+  buffer[length] = 0;
+  name = buffer;
+  value = buffer+valueoffset;
+  return 1;
+}
+
+int fdesign_flip;
+int fdesign_magic;
+#include <fltk/Group.h>
+
+static const char *class_matcher[] = {
+"fltk::CHECKBUTTON", "fltk::CheckButton",
+"fltk::ROUNDBUTTON", "fltk::RadioButton",
+"fltk::ROUND3DBUTTON", "fltk::RadioButton",
+"fltk::LIGHTBUTTON", "fltk::LightButton",
+"fltk::FRAME", "fltk::Box",
+"fltk::LABELFRAME", "fltk::Box",
+"fltk::TEXT", "fltk::Box",
+"fltk::VALSLIDER", "fltk::ValueSlider",
+"fltk::MENU", "fltk::PopupMenu",
+"3", "fltk::BITMAP",
+"1", "fltk::BOX",
+"71","fltk::BROWSER",
+"11","fltk::BUTTON",
+"4", "fltk::CHART",
+"42","fltk::CHOICE",
+"61","fltk::CLOCK",
+"25","fltk::COUNTER",
+"22","fltk::DIAL",
+"101","fltk::FREE",
+"31","fltk::INPUT",
+"12","fltk::LightButton",
+"41","fltk::MENU",
+"23","fltk::POSITIONER",
+"13","fltk::RadioButton",
+"21","fltk::SLIDER",
+"2", "fltk::BOX", // was fltk::TEXT
+"62","fltk::TIMER",
+"24","fltk::ValueSlider",
+0};
+
+// This is copied from forms_compatability.cxx:
+
+static void fl_end_group() {
+  fltk::Group* g = fltk::Group::current();
+  // set the dimensions of a group to surround contents
+  if (g->children() && !g->w()) {
+    fltk::Widget* o = g->child(0);
+    int rx = o->x();
+    int ry = o->y();
+    int rw = rx+o->w();
+    int rh = ry+o->h();
+    for (int i=g->children()-1; i>0; i--) {
+      o = g->child(i);
+      if (o->x() < rx) rx = o->x();
+      if (o->y() < ry) ry = o->y();
+      if (o->x()+o->w() > rw) rw = o->x()+o->w();
+      if (o->y()+o->h() > rh) rh = o->y()+o->h();
+    }
+    g->x(rx);
+    g->y(ry);
+    g->w(rw-rx);
+    g->h(rh-ry);
+  }
+  // flip all the children's coordinate systems:
+  //if (fltk::flip) {
+    fltk::Widget* o = g->is_window() ? g : g->window();
+    int Y = o->h();
+    for (int i=g->children(); i--;) {
+      fltk::Widget* o = g->child(i);
+//      o->y(Y-o->y()-o->h());
+      // I think this is equivalent?
+      o->position(o->x(), Y-o->y()-o->h());
+    }
+    //g->oy_ = Y-g->oy_-g->h();
+    //}
+  g->fix_old_positions();
+  g->end();
+}
+
+void read_fdesign() {
+  fdesign_magic = atoi(read_word());
+  fdesign_flip = (fdesign_magic < 13000);
+  WidgetType *window = 0;
+  WidgetType *group = 0;
+  WidgetType *widget = 0;
+  if (!FluidType::current) {
+    FluidType *t = FluidType::make("Function");
+    t->name("create_the_forms()");
+    FluidType::current = t;
+  }
+  for (;;) {
+    const char *name;
+    const char *value;
+    if (!read_fdesign_line(name, value)) break;
+
+    if (!strcmp(name,"Name")) {
+
+      window = (WidgetType*)FluidType::make("fltk::Window");
+      window->name(value);
+      window->label(value);
+      FluidType::current = widget = window;
+
+    } else if (!strcmp(name,"class")) {
+
+      if (!strcmp(value,"fltk::BEGIN_GROUP")) {
+	  group = widget = (WidgetType*)FluidType::make("fltk::Group");
+	FluidType::current = group;
+      } else if (!strcmp(value,"fltk::END_GROUP")) {
+	if (group) {
+	  fltk::Group* g = (fltk::Group*)(group->o);
+	  g->begin();
+	  // g->forms_end();
+	  fl_end_group(); // how 'bout this instead?
+	  fltk::Group::current(0);
+	}
+	group = widget = 0;
+	FluidType::current = window;
+      } else {
+	for (int i = 0; class_matcher[i]; i += 2)
+	  if (!strcmp(value,class_matcher[i])) {
+	    value = class_matcher[i+1]; break;}
+	  widget = (WidgetType*)FluidType::make(value);
+	if (!widget) {
+	  printf("class %s not found, using fltk::Button\n", value);
+	  widget = (WidgetType*)FluidType::make("fltk::Button");
+	}
+      }
+
+    } else if (widget) {
+      if (!widget->read_fdesign(name, value))
+	printf("Ignoring \"%s: %s\"\n", name, value);
+    }
+  }
+}
+
+//
+// End of "$Id: file.cxx 5738 2007-03-12 18:07:45Z spitzak $".
+//

Added: branches/branch-3.0-2011/fluid2/fluid.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/fluid.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/fluid.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,1436 @@
+//
+// "$Id: fluid.cxx 6100 2008-04-13 20:29:52Z fabien $"
+//
+// FLUID main entry 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".
+//
+
+const char *copyright =
+"The FLTK user interface designer version 2.0\n"
+"Copyright 1998-2006 by Bill Spitzak and others.\n"
+"\n"
+"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.\n"
+"\n"
+"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.\n"
+"\n"
+"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.\n"
+"\n"
+"Please report bugs to fltk-bugs@fltk.org.";
+
+#include <config.h>
+#include <fltk/run.h>
+#include <fltk/visual.h>
+#include <fltk/events.h>
+#include <fltk/damage.h>
+#include <fltk/Window.h>
+#include <fltk/Box.h>
+#include <fltk/Button.h>
+#include <fltk/Browser.h>
+#include <fltk/MenuBar.h>
+#include <fltk/StatusBarGroup.h>
+#include <fltk/Input.h>
+#include <fltk/Tooltip.h>
+#include <fltk/ask.h>
+#include <fltk/draw.h>
+#include <fltk/file_chooser.h>
+#include <fltk/ask.h>
+#include <fltk/filename.h>
+#include <fltk/FileIcon.h>
+#include <fltk/Preferences.h>
+#include <fltk/MenuBuild.h>
+#include <fltk/string.h>
+#include <fltk/HelpDialog.h>
+#include <fltk/PackedGroup.h>
+#include <fltk/Monitor.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <errno.h>
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+# undef _POSIX_
+# include <io.h>
+# define access(a,b) _access(a,b)
+# include <fltk/win32.h>	// for MAX_PATH definition
+# include <direct.h>
+#else
+# include <unistd.h>
+# include <sys/stat.h>
+#endif
+
+#include "about_panel.h"
+#include "alignment_panel.h"
+#include "function_panel.h"
+#include "template_panel.h"
+#include "widget_panel.h"
+
+#include "PrefsData.h"
+#include "Fluid_Plugins.h"
+#include "FluidType.h"
+#include "WidgetType.h"
+#include "coding_style.h"
+#include "fluid_menus.h"
+#include "undo.h"
+
+using namespace fltk;
+
+DECL_MENUCBV2(toggle_sourceview_cb,DoubleBufferWindow);
+
+
+/////////////////////////////////////////
+// Read preferences file 
+PrefsData prefs(Preferences::USER, "fltk.org", "fluid2");
+int modflag=0;
+
+int  read_alignment_prefs() {
+    prefs.get("widget_size", WidgetType::default_size, 14.0f);
+    Tooltip::enable(prefs.show_tooltip()? true : false);
+    return 0;
+}
+
+/////////////////////////////////////////
+
+// File history info...
+char	absolute_history[MAX_HISTORY][1024];
+char	relative_history[MAX_HISTORY][1024];
+
+void    check_history (const char * fname);
+void	load_history();
+void	update_history(const char *);
+void	set_preferences_window();
+
+////////////////////////////////////////////////////////////////
+
+void nyi(Widget *,void *) {
+    message("That's not yet implemented, sorry");
+}
+
+static char *filename;
+static char* file_directory;
+
+void fix_images_dir() {
+  static char* pvalue;
+  delete[] pvalue;
+  pvalue = 0;
+  if (!images_dir) {
+    SharedImage::set_root_directory(file_directory);
+    return;
+  }
+  if (!file_directory || *images_dir == '/'
+#ifdef _WIN32
+      || *images_dir && images_dir[1]==':'
+#endif
+      ) {
+    SharedImage::set_root_directory(images_dir);
+    return;
+  }
+  // append them together so images dir is relative to this dir...
+  pvalue = new char[strlen(file_directory)+strlen(images_dir)+2];
+  sprintf(pvalue, "%s/%s", file_directory, images_dir);
+  SharedImage::set_root_directory(pvalue);
+}
+
+void set_filename(const char *c) {
+  if (!c || !*c) {
+    delete[] filename; filename = 0;
+    delete[] file_directory; file_directory = 0;
+    SharedImage::set_root_directory(images_dir && *images_dir ? images_dir:0);
+    return;
+  }
+  if (c != filename) {
+    delete[] filename;
+    filename = newstring(c);
+#ifdef _WIN32
+    for (char* p = filename; *p; p++)
+      if (*p == '\\') *p = '/';
+#endif
+  }
+  delete[] file_directory;
+  file_directory = newstring(c);
+  const char* a = file_directory;
+#ifdef _WIN32
+  if (*a && a[1]==':') a+=2;
+#endif
+  if (*a=='/') a++;
+  char* p = (char*)(fltk::filename_name(a));
+  if (p > a && *(p-1)=='/') p--;
+  *p = 0;
+  fix_images_dir();
+}
+
+Window *main_window;
+
+char position_window(Window *w, const char *prefsName, int Visible, int X, int Y, int W=0, int H=0 ) {
+    Preferences pos(prefs, prefsName);
+    if (prevpos_button && prevpos_button->value() ) {
+	pos.get("x", X, X);
+	pos.get("y", Y, Y);
+	if ( W!=0 ) {
+	    pos.get("w", W, W);
+	    pos.get("h", H, H);
+	    w->resize( X, Y, W, H );
+	}
+	else
+	    w->position( X, Y );
+    }
+    pos.get("visible", Visible, Visible);
+    return Visible;
+}
+void save_position(Window *w, const char *prefsName) {
+    Preferences pos(prefs, prefsName);
+    pos.set("x", w->x());
+    pos.set("y", w->y());
+    pos.set("w", w->w());
+    pos.set("h", w->h());
+    pos.set("visible", (int)(w->shown() && w->visible()));
+}
+
+void save_cb(Widget *, void *v) {
+    const char *c = filename;
+    if (v || !c || !*c) {
+	if (!(c=file_chooser("Save to:", "*.f[ld]", c))) return;
+	if (v != (void *)2L) set_filename(c);
+    }
+    if (!write_file(c)) {
+	message("Error writing %s: %s", c, strerror(errno));
+	return;
+    }
+
+    if (v != (void *)2L) {
+      modflag = 0;
+      Undo::update_saved();
+    }
+}
+void template_browser_cb(Browser* b,void*) {
+    if (fltk::event_clicks()) {
+      template_panel->hide();
+      return;
+    }
+    fltk::SharedImage *img = (fltk::SharedImage *)template_preview->image();
+    if (img) img->remove();
+    template_preview->image((fltk::Symbol*)0);
+    template_preview->redraw();
+
+    int item = template_browser->value();
+
+    if (item <= 0) template_instance->deactivate();
+    else template_instance->activate();
+
+    if (item < 0) {
+      template_submit->deactivate();
+      template_delete->deactivate();
+      return;
+    }
+
+    template_submit->activate();
+
+    const char *flfile = (const char *)template_browser->child(item)->label();
+    if (!flfile || item<=0) {
+      template_delete->deactivate();
+      return;
+    }
+    else
+      template_delete->activate();
+    template_name->value(template_browser->child(item)->label());
+
+
+    char pngfile[1024], *ext;
+
+    strlcpy(pngfile, flfile, sizeof(pngfile));
+    if ((ext = strrchr(pngfile, '.')) == NULL) return;
+    strcpy(ext, ".png");
+
+    img = fltk::SharedImage::get(pngfile);
+
+    if (img) {
+      template_preview->image(img);
+      template_preview->redraw();
+    }
+}
+
+// get a filename string from a template name
+bool template_filename_from(const char * c, char * filename, size_t size) {
+    // Convert template name to filename_with_underscores
+  char safename[1024], *safeptr;
+  strlcpy(safename, c, sizeof(safename));
+  for (safeptr = safename; *safeptr; safeptr ++) {
+    if (isspace(*safeptr)) *safeptr = '_';
+  }
+
+  // Find the templates directory...
+  prefs.getUserdataPath(filename, size);
+
+  strlcat(filename, "templates", size);
+#if defined(WIN32) && !defined(__CYGWIN__)
+  if (access(filename, 0)) mkdir(filename);
+#else
+  if (access(filename, 0)) mkdir(filename, 0777);
+#endif // WIN32 && !__CYGWIN__
+
+  strlcat(filename, "/", size);
+  strlcat(filename, safename, size);
+
+  char *ext = filename + strlen(filename);
+  if (ext >= (filename + size - 5)) {
+    alert("The template name \"%s\" is too long!", c);
+    return false;
+  }
+
+  // Save the .fl file...
+  strcpy(ext, ".fl");
+  return true;
+}
+
+void template_delete_cb(fltk::Button *, void *) {
+  int item = template_browser->value();
+  if (item < 1) return;
+  
+  char filename[1024];
+  const char *name = template_browser->child(item)->label();
+  if (!template_filename_from(name, filename, sizeof(filename) )) return;
+  
+  if (!fltk::choice("Are you sure you want to delete the template \"%s\"?",
+                 "Cancel", "Delete", 0, name)) return;
+  
+  if (unlink(filename)) {
+    fltk::alert("Unable to delete template file \"%s\":\n%s", filename, strerror(errno));
+    return;
+  }
+  template_browser->remove(item);
+  template_browser->do_callback();
+  
+}
+
+void save_template_cb(Widget *, void *) {
+  // Setup the template panel...
+  if (!template_panel) make_template_panel();
+
+  template_clear();
+  template_browser->add("New Template");
+  template_load();
+
+  template_name->show();
+  template_name->value("");
+
+  template_instance->hide();
+
+  template_delete->deactivate();
+
+  template_submit->label("Save");
+  template_submit->deactivate();
+
+  template_panel->label("Save Template");
+
+  // Show the panel and wait for the user to do something...
+  template_panel->show();
+  while (template_panel->visible()) fltk::wait();
+
+  // Get the template name, return if it is empty...
+  const char *c = template_name->value();
+  if (!c || !*c) return;
+  
+  char filename[1024];
+  // calculate the template filename from it's name
+  if(!template_filename_from(c, filename,sizeof(filename))) return;
+
+  if (!access(filename, 0)) {
+    if (choice("The template \"%s\" already exists.\n"
+                  "Do you want to replace it?", "Cancel",
+		  "Replace", NULL, c) == 0) return;
+  }
+
+  if (!write_file(filename)) {
+    alert("Error writing %s: %s", filename, strerror(errno));
+    return;
+  }
+
+// FIXME : need offscreen capabilities
+#if 0
+//#if defined(HAVE_LIBPNG) && defined(HAVE_LIBZ)
+  // Get the screenshot, if any...
+  FluidType *t;
+
+  for (t = FluidType::first; t; t = t->walk(0)) 
+      if (t->is_window()) break;  // Find the first window...
+  if (!t) return;
+
+  // Grab a screenshot...
+  WindowType *wt = (WindowType *)t;
+  uchar *pixels;
+  int w, h;
+
+  if ((pixels = wt->read_image(w, h)) == NULL) return;
+
+  // Save to a PNG file...
+  strcpy(ext, ".png");
+
+  FILE *fp;
+
+  if ((fp = fopen(filename, "wb")) == NULL) {
+    delete[] pixels;
+    fltk::alert("Error writing %s: %s", filename, strerror(errno));
+    return;
+  }
+
+  png_structp pptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
+  png_infop iptr = png_create_info_struct(pptr);
+  png_bytep ptr = (png_bytep)pixels;
+
+  png_init_io(pptr, fp);
+  png_set_IHDR(pptr, iptr, w, h, 8, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE,
+               PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
+  png_set_sRGB(pptr, iptr, PNG_sRGB_INTENT_PERCEPTUAL);
+
+  png_write_info(pptr, iptr);
+
+  for (int i = h; i > 0; i --, ptr += w * 3) {
+    png_write_row(pptr, ptr);
+  }
+
+  png_write_end(pptr, iptr);
+  png_destroy_write_struct(&pptr, &iptr);
+
+  fclose(fp);
+
+#  if 0 // The original PPM output code...
+  strcpy(ext, ".ppm");
+  fp = fopen(filename, "wb");
+  fprintf(fp, "P6\n%d %d 255\n", w, h);
+  fwrite(pixels, w * h, 3, fp);
+  fclose(fp);
+#  endif // 0
+
+  delete[] pixels;
+#endif // HAVE_LIBPNG && HAVE_LIBZ
+}
+
+void revert_cb(Widget *,void *) {
+  if (modflag) {
+    if (!choice("This user interface has been changed. Really revert?",
+                "Cancel", "Revert", NULL)) return;
+  }
+  Undo::suspend();
+  if (!read_file(filename, 0)) {
+    Undo::resume();
+    message("Can't read %s: %s", filename, strerror(errno));
+    return;
+  }
+  Undo::resume();
+  modflag=0;
+  Undo::clear();
+}
+
+void exit_cb(Widget *,void *) {
+    if (modflag)
+	switch (choice("Save changes before exiting?", "Yes", "No", "Cancel")) {
+      case 2 : /* Cancel */
+          return;
+      case 0 : /* Yes */
+          save_cb(NULL, NULL);
+	  if (modflag) return;	// Didn't save!
+    }
+    
+  save_position(main_window,"main_window_pos");
+
+  if (widgetbin_panel) {
+    save_position(widgetbin_panel,"widgetbin_pos");
+    delete widgetbin_panel;
+  }
+
+  if (sourceview_panel) {
+    prefs.sv_autorefresh(sv_autorefresh->value());
+    prefs.sv_autoposition(sv_autoposition->value());
+    prefs.sv_tab(sv_tab->value());
+    save_position(sourceview_panel,"sourceview_pos");
+    delete sourceview_panel;
+  }
+    exit(0);
+}
+
+void open_cb(Widget *, void *v) {
+  if (!v && modflag && !ask("Discard changes?")) return;
+  const char *c;
+  if (!(c = file_chooser("Open:", "*.f[ld]", filename))) return;
+  if (!fltk::filename_exist(c)) {
+    message("%s not found", c);
+    return;
+  }
+  Undo::suspend();
+
+  if (!v) set_filename(c);
+  if (!read_file(c, v!=0)) {
+    message("Can't read %s: %s", c, strerror(errno));
+  } else {
+    if (!v) modflag = 0;
+    else modflag = 1;
+  }
+  Undo::resume();
+  Undo::clear();
+}
+
+void open_history_cb(Widget *, void *v) {
+  if (modflag) {
+    switch (choice("Do you want to save changes to this user\n"
+                   "interface before opening another one?", "Cancel",
+                   "Save", "Don't Save"))
+      {
+      case 0 : /* Cancel */
+        return;
+      case 1 : /* Save */
+        save_cb(NULL, NULL);
+        if (modflag) return;	// Didn't save!
+      }
+  }
+  char *oldfilename = (char *)v;
+  if (!fltk::filename_exist(oldfilename )) {
+    message("%s not found", oldfilename );
+    check_history(oldfilename);
+    return;
+  }
+  set_filename(oldfilename);
+  Undo::suspend(); 
+  if (!read_file(filename, 0)) {
+    message("Can't read %s: %s", filename, strerror(errno));
+  }
+  modflag = 0;
+  Undo::resume();
+  Undo::clear();
+}
+
+static char* cutfname(int which = 0) {
+  static char name[2][1024];
+  static char beenhere = 0;
+
+  if (!beenhere) {
+    beenhere = 1;
+    prefs.getUserdataPath(name[0], sizeof(name[0]));
+    strlcat(name[0], "cut_buffer", sizeof(name[0]));
+    prefs.getUserdataPath(name[1], sizeof(name[1]));
+    strlcat(name[1], "dup_buffer", sizeof(name[1]));
+  }
+
+  return name[which];
+}
+
+// Set default widget sizes...
+void default_widget_size_cb(RadioButton *b, long size) {
+  // Update the "normal" text size of new widgets...
+  b->setonly();
+  WidgetType::default_size = (float) size;
+  prefs.set("widget_size", WidgetType::default_size);
+}
+
+// new_cb() : new (possibly template) fulid file creation from File/New menu
+void new_cb(Widget *, void *v) {
+  // Check if the current file has been modified...
+  if (!v && modflag) {
+    // Yes, ask the user what to do...
+    switch (choice("Do you want to save changes to this user\n"
+                      "interface before creating a new one?", "Cancel",
+                      "Save", "Don't Save"))
+    {
+      case 0 : /* Cancel */
+          return;
+      case 1 : /* Save */
+          save_cb(NULL, NULL);
+	  if (modflag) return;	// Didn't save!
+    }
+  }
+
+  // Setup the template panel...
+  if (!template_panel) make_template_panel();
+
+  template_clear();
+  template_browser->add("Blank");
+  template_load();
+
+  template_name->hide();
+  template_name->value("");
+
+  template_instance->show();
+  template_instance->deactivate();
+  template_instance->value("");
+
+  template_submit->label("New");
+  template_submit->deactivate();
+
+  template_panel->label("New");
+
+  // Show the panel and wait for the user to do something...
+  template_panel->show();
+  while (template_panel->visible()) fltk::wait();
+
+  // See if the user chose anything...
+  int item = template_browser->value();
+  if (item < 0) return;
+
+  // Clear the current data...
+  delete_all();
+  set_filename(NULL);
+
+  // Load the template, if any...
+  const char *tname = (const char *)template_browser->child(item)->user_data();
+
+  if (tname) {
+    // Grab the instance name...
+    const char *iname = template_instance->value();
+
+    if (iname && *iname) {
+      // Copy the template to a temp file, then read it in...
+      char line[1024], *ptr, *next;
+      FILE *infile, *outfile;
+
+      if ((infile = fopen(tname, "r")) == NULL) {
+	alert("Error reading template file \"%s\":\n%s", tname,
+        	 strerror(errno));
+	modflag=0;
+	Undo::clear();
+	return;
+      }
+
+      if ((outfile = fopen(cutfname(1), "w")) == NULL) {
+	alert("Error writing buffer file \"%s\":\n%s", cutfname(1),
+        	 strerror(errno));
+	fclose(infile);
+	modflag = 0;
+	Undo::clear();
+	return;
+      }
+
+      while (fgets(line, sizeof(line), infile)) {
+	// Replace @INSTANCE@ with the instance name...
+	for (ptr = line; (next = strstr(ptr, "@INSTANCE@")) != NULL; ptr = next + 10) {
+	  fwrite(ptr, next - ptr, 1, outfile);
+	  fputs(iname, outfile);
+	}
+
+	fputs(ptr, outfile);
+      }
+
+      fclose(infile);
+      fclose(outfile);
+
+      Undo::suspend();
+      read_file(cutfname(1), 0);
+      unlink(cutfname(1));
+      Undo::resume();
+    } else {
+      // No instance name, so read the template without replacements...
+	Undo::suspend();
+      read_file(tname, 0);
+      Undo::resume();
+    }
+  }
+
+  modflag =0;
+  Undo::clear();
+}
+
+/*void new_cb(Widget *, void *v) {
+    if (!v && modflag && !ask("Discard changes?")) return;
+    const char *c;
+    if (!(c = file_chooser("New:", "*.f[ld]", 0))) return;
+    delete_all();
+    set_filename(c);
+    modflag = 0;
+}
+*/
+int compile_only = 0;
+int header_file_set = 0;
+int code_file_set = 0;
+const char* header_file_name = ".h";
+const char* code_file_name = ".cxx";
+
+void write_cb(Widget *, void *) {
+    if (!filename) {
+	save_cb(0,0);
+	if (!filename) return;
+    }
+    char cname[1024];
+    char hname[1024];
+    if (code_file_name[0] == '.' && isalpha(code_file_name[1])) {
+	strlcpy(cname, filename, 1024);
+	*filename_ext(cname) = 0;
+	strlcat(cname, code_file_name, 1024);
+    } else {
+	strcpy(cname, code_file_name);
+    }
+    if (header_file_name[0] == '.' && isalpha(header_file_name[1])) {
+	strlcpy(hname, filename, 1024);
+	*filename_ext(hname) = 0;
+	strlcat(hname, header_file_name, 1024);
+    } else {
+	strcpy(hname, header_file_name);
+    }
+    int x = write_code(cname,hname);
+    strcat(cname, "/"); strcat(cname,header_file_name);
+    if (compile_only) {
+	if (!x) {fprintf(stderr,"%s : %s\n",cname,strerror(errno)); exit(1);}
+    } else {
+	if (!x) {
+	    message("Can't write %s: %s", cname, strerror(errno));
+	} else {
+	    message("Wrote %s", cname, 0);
+	}
+    }
+}
+
+void openwidget_cb(Widget *, void *) {
+    if (!FluidType::current) {
+	message("Please select a widget");
+	return;
+    }
+    FluidType::current->open();
+}
+
+void toggle_overlays(Widget *,void *);
+
+void select_all_cb(Widget *,void *);
+
+void group_cb(Widget *, void *);
+
+void ungroup_cb(Widget *, void *);
+
+extern int pasteoffset;
+static int ipasteoffset;
+
+void copy_cb(Widget*, void*) {
+    if (!FluidType::current) return;
+    Undo::checkpoint();
+    ipasteoffset = 10;
+    if (!write_file(cutfname(),1)) {
+	message("Can't write %s: %s", cutfname(), strerror(errno));
+	return;
+    }
+}
+
+extern void select_only(FluidType *);
+void cut_cb(Widget *, void *) {
+    if (!FluidType::current) return;
+    Undo::checkpoint();
+    ipasteoffset = 0;
+    FluidType *p = FluidType::current->parent;
+    while (p && p->selected()) p = p->parent;
+    if (!write_file(cutfname(),1)) {
+	message("Can't write %s: %s", cutfname(), strerror(errno));
+	return;
+    }
+    delete_all(1);
+    if (p) select_only(p);
+}
+
+extern int force_parent;
+
+void paste_cb(Widget*, void*) {
+    Undo::checkpoint();
+    if (ipasteoffset) force_parent = 1;
+    pasteoffset = ipasteoffset;
+    if (prefs.gridx()>1) pasteoffset = ((pasteoffset-1)/prefs.gridx()+1)*prefs.gridx();
+    if (prefs.gridy()>1) pasteoffset = ((pasteoffset-1)/prefs.gridy()+1)*prefs.gridy();
+    if (!read_file(cutfname(), 1)) {
+	message("Can't read %s: %s", cutfname(), strerror(errno));
+    }
+    pasteoffset = 0;
+    ipasteoffset += 10;
+    force_parent = 0;
+}
+
+void earlier_cb(Widget*,void*);
+void later_cb(Widget*,void*);
+void sort(FluidType *parent); // in WidgetType.cxx
+
+void sort_cb(Widget *,void *) {
+    FluidType* f = FluidType::first;
+    if(!f) return;
+    Undo::checkpoint();
+    for (; f; f = f->next_brother) sort(f);
+}
+
+void show_preferences_cb(Widget *, void *);
+
+void set_images_dir_cb(Widget *, void *);
+
+//! fluid splashscreen implementation:
+//      reuse the about_panel but changes its drawing defaults
+Window * splash() {
+    if (!about_panel) make_about_panel(copyright);
+    Window * o= about_panel;
+    o->border(false);
+    o->Rectangle::set(fltk::Monitor::find(0,0),o->w(),o->h(),fltk::ALIGN_CENTER);
+    o->show();
+    about_ok->clear_visible();
+    o->flush();
+    do {fltk::check(); } while(!o->visible()) ;
+    return about_panel;
+}
+
+void about_cb(Widget *, void *) {
+    if (!about_panel) make_about_panel(copyright);
+    Window * o= about_panel;
+    //copyright_box->hide();
+    //display_group->show();
+    o->border(true);
+    o->Rectangle::set(fltk::Monitor::find(0,0),o->w(),o->h(),fltk::ALIGN_CENTER);
+    about_ok->set_visible();
+    o->show();
+}
+
+void show_help(const char *name) {
+  const char	*docdir;
+  char		helpname[1024];
+  static HelpDialog *help_dialog = 0;
+  
+  if (!help_dialog) help_dialog = new HelpDialog();
+
+  if ((docdir = getenv("FLTK_DOCDIR")) == NULL) {
+#ifdef __EMX__
+    // Doesn't make sense to have a hardcoded fallback
+    static char fltk_docdir[1024];
+
+    strlcpy(fltk_docdir, __XOS2RedirRoot("/XFree86/lib/X11/fltk/doc"),
+            sizeof(fltk_docdir));
+
+    docdir = fltk_docdir;
+#else
+# ifdef FLTK_DOCDIR
+    docdir = FLTK_DOCDIR;
+# else
+    docdir = "/usr/local/share/doc/fltk";
+# endif
+#endif // __EMX__
+  }
+  snprintf(helpname, sizeof(helpname), "%s/%s", docdir, name);  
+
+  help_dialog->load(helpname);
+  help_dialog->show();
+}
+
+void help_cb(Widget *, void *) {
+  show_help("fluid.html");
+}
+
+void manual_cb(Widget *, void *) {
+  show_help("index.html");
+}
+
+void tt_cb(Widget *w, void *) {
+    prefs.show_tooltip(((Button*)w)->value()); 
+    Tooltip::enable(prefs.show_tooltip() ? true : false);
+}
+
+#include <string.h>
+#include <fltk/ask.h>
+
+#include <fltk/StyleSet.h>
+StyleSet* fluid_style_set;
+StyleSet* style_set;
+char* theme;
+
+void set_theme(const char* s) {
+#if 0
+    if (!s || !*s) {
+	if (!theme) return;
+	free((void*)theme);
+	theme = 0;
+    } else {
+	if (theme) {
+	    if (!strcmp(theme, s)) return;
+	    free((void*)theme);
+	}
+	theme = strdup(s);
+    }
+    style_set->make_current();
+    Theme f = Style::load_theme(theme);
+    Style::theme(f);
+    // set the scheme...
+    Style::reload_theme();
+    fluid_style_set->make_current();
+    redraw();
+    if (!f) alert("Error loading theme \"%s\" (plugin not found?)",
+	theme ? theme : "");
+#endif
+}
+
+void theme_cb(Widget *, void *) {
+    const char* s = input("Enter the theme name:", ::theme);
+    if (!s) return;
+    set_theme(s);
+}
+
+
+void initialize_tab_colors() {
+    int c = prefs.tabcolor();
+    if (panel_tabs) {
+	panel_tabs->child(0)->color((unsigned) c ? prefs.tabcolor1() : fltk::GRAY75);
+	panel_tabs->child(1)->color((unsigned) c ? prefs.tabcolor2() : fltk::GRAY75);
+	panel_tabs->child(2)->color((unsigned) c ? prefs.tabcolor3() : fltk::GRAY75);
+    }
+    if (pref_tabs) {
+	pref_tabs->child(0)->color((unsigned) c ? prefs.tabcolor1() : fltk::GRAY75);
+	pref_tabs->child(1)->color((unsigned) c ? prefs.tabcolor3() : fltk::GRAY75);
+	pref_tabs->child(2)->color((unsigned) c ? prefs.tabcolor2() : fltk::GRAY75);
+    }
+}
+
+void toggle_widgetbin_cb(Widget *o, void * v) {
+    if (!widgetbin_panel) {
+	make_widgetbin();
+	widgetbin_panel->callback(toggle_widgetbin_cb);
+	if (!position_window(widgetbin_panel,"widgetbin_pos", 1, 320, 30)) return;
+    }
+    
+    if (widgetbin_panel->visible()) {
+	widgetbin_panel->hide();
+	iwidget_bin->label("Show Widget &Bin...");
+    } else {
+	widgetbin_panel->show();
+	iwidget_bin->label("Hide Widget &Bin");
+    }
+}
+
+
+////////////////////////////////////////////////////////////////
+// New fltk2 menu generation
+////////////////////////////////////////////////////////////////
+
+
+#define BROWSERWIDTH 350
+#define BROWSERHEIGHT 500
+#define WINWIDTH 350
+#define MENUHEIGHT 23
+#define WINHEIGHT (BROWSERHEIGHT+MENUHEIGHT)
+
+
+MenuBar* menubar;
+Browser* widget_browser;
+StatusBarGroup* status_bar;
+
+////////////////////////////////////////////////////////////////
+void toggle_statusbar_cb(Widget *,void *) {
+
+    if (status_bar->visible()) {
+    status_bar->hide();
+    istatusbar->label("Show Status Bar ...");
+    prefs.show_statusbar(0);
+  } else {
+    status_bar->show();
+    istatusbar->label("Hide Status Bar ...");
+    prefs.show_statusbar(1);
+  }
+}
+
+////////////////////////////////////////////////////////////////
+void toggle_sourceview_cb(DoubleBufferWindow *, void *) {
+  if (!sourceview_panel) {
+    make_sourceview();
+    sourceview_panel->callback((Callback*)toggle_sourceview_cb);
+    sv_autorefresh->value(prefs.sv_autorefresh() ? true : false);
+    sv_autoposition->value(prefs.sv_autoposition() ? true : false);
+    if (prefs.sv_tab()>=0 && prefs.sv_tab()<sv_tab->children()) sv_tab->value(prefs.sv_tab());
+    if (!position_window(sourceview_panel,"sourceview_pos", 0, 320, 120, 550, 500)) return;
+  }
+
+  if (sourceview_panel->visible()) {
+    sourceview_panel->hide();
+    isource_view->label("Show Source Code...");
+  } else {
+    sourceview_panel->show();
+    isource_view->label("Hide Source Code...");
+    update_sourceview_cb(0,0);
+  }
+}
+////////////////////////////////////////////////////////////////
+void toggle_sourceview_b_cb(Button*, void *) {
+  toggle_sourceview_cb(0,0);
+}
+////////////////////////////////////////////////////////////////
+void make_main_window() {
+    if (!main_window) {
+	Widget *o;
+	main_window = new Window(WINWIDTH,WINHEIGHT,"fluid2");
+	//in_window->size_range(WINWIDTH,100);
+	main_window->box(NO_BOX);
+	main_window->begin();
+	menubar = new MenuBar(0,0,BROWSERWIDTH,MENUHEIGHT);
+	menubar->box(FLAT_BOX);
+	o = widget_browser = (Browser *) make_widget_browser(0,MENUHEIGHT,BROWSERWIDTH,BROWSERHEIGHT);
+	//  o->text_box(FLAT_BOX);
+	main_window->resizable(o);
+	build_hierarchy(menubar);
+	if (prefs.show_tooltip()) itooltip->set_flag(STATE);
+	// this is removed because the new ctrl+bindings mess up emacs in
+	// the text fields:
+	//    menubar->global();
+	// create a status bar, only care for h(), other dims are automatically resized
+	status_bar = new StatusBarGroup();
+	status_bar->child_box(THIN_DOWN_BOX, StatusBarGroup::SBAR_RIGHT);
+	status_bar->child_box(FLAT_BOX, StatusBarGroup::SBAR_CENTER);
+	
+	if (!prefs.show_statusbar()) toggle_statusbar_cb(0, 0);
+	main_window->end();
+	load_history();
+	make_shell_window();
+    }
+}
+////////////////////////////////////////////////////////////////
+// Shell command support...
+////////////////////////////////////////////////////////////////
+#if (!defined(WIN32) || defined(__CYGWIN__)) && !defined(__MWERKS__)
+// Support the full piped shell command...
+static FILE *shell_pipe = 0;
+
+void
+shell_pipe_cb(int, void*) {
+  char	line[1024];		// Line from command output...
+
+  if (fgets(line, sizeof(line), shell_pipe) != NULL) {
+    // Add the line to the output list...
+    shell_run_buffer->append(line);
+  } else {
+    // End of file; tell the parent...
+    fltk::remove_fd(fileno(shell_pipe));
+
+    pclose(shell_pipe);
+    shell_pipe = NULL;
+    shell_run_buffer->append("... END SHELL COMMAND ...\n");
+  }
+
+  shell_run_display->scroll(shell_run_display->total_lines(), 0);
+}
+
+////////////////////////////////////////////////////////////////
+void do_shell_command(fltk::ReturnButton*, void*) {
+    const char	*command;	// Command to run
+
+  shell_window->hide();
+
+  if (shell_pipe) {
+    fltk::alert("Previous shell command still running!");
+    return;
+  }
+
+  if ((command = shell_command_input->value()) == NULL || !*command) {
+    fltk::alert("No shell command entered!");
+    return;
+  }
+
+  if (shell_savefl_button->value()) {
+    save_cb(0, 0);
+  }
+
+  if (shell_writecode_button->value()) {
+    compile_only = 1;
+    write_cb(0, 0);
+    compile_only = 0;
+  }
+
+#if 0 // FIXME intl strings
+  if (shell_writemsgs_button->value()) {
+    compile_only = 1;
+    write_strings_cb(0, 0);
+    compile_only = 0;
+  }
+#endif
+
+  // Show the output window and clear things...
+  shell_run_buffer->text("");
+  shell_run_buffer->append(command);
+  shell_run_buffer->append("\n");
+  shell_run_window->label("Shell Command Running...");
+
+  if ((shell_pipe = popen((char *)command, "r")) == NULL) {
+    fltk::alert("Unable to run shell command: %s", strerror(errno));
+    return;
+  }
+
+  shell_run_button->deactivate();
+  shell_run_window->show();
+  shell_run_window->hotspot(shell_run_display);
+
+  fltk::add_fd(fileno(shell_pipe), shell_pipe_cb);
+
+  while (shell_pipe) fltk::wait();
+
+  shell_run_button->activate();
+  shell_run_window->label("Shell Command Complete");
+  fltk::beep();
+
+  while (shell_run_window->shown()) fltk::wait();
+}
+#else
+// Just do basic shell command stuff, no status window...
+void do_shell_command(fltk::ReturnButton*, void*) {
+    const char	*command;	// Command to run
+  int		status;		// Status from command...
+
+  shell_window->hide();
+
+  if ((command = shell_command_input->value()) == NULL || !*command) {
+    fltk::alert("No shell command entered!");
+    return;
+  }
+
+  if (shell_savefl_button->value()) {
+    save_cb(0, 0);
+  }
+
+  if (shell_writecode_button->value()) {
+    compile_only = 1;
+    write_cb(0, 0);
+    compile_only = 0;
+  }
+
+/* FIXME : write strings : should it be implemented in fluid 2 as in fltk1 ?
+  if (shell_writemsgs_button->value()) {
+    compile_only = 1;
+    write_strings_cb(0, 0);
+    compile_only = 0;
+  }
+*/
+  if ((status = system(command)) != 0) {
+    fltk::alert("Shell command returned status %d!", status);
+  } else if (completion_button->value()) {
+    fltk::message("Shell command completed successfully!");
+  }
+}
+#endif // (!WIN32 || __CYGWIN__) && !__MWERKS__
+////////////////////////////////////////////////////////////////
+void show_shell_window(Widget*, void*) {
+  shell_window->show();
+  shell_window->hotspot(shell_command_input);
+}
+//
+// The Source View system offers an immediate preview of the code 
+// files that will be generated by FLUID. It also marks the code
+// generated for the last selected item in the header and the source
+// file.
+//
+// Can we patent this?  ;-)  - Matt, mm@matthiasm.com
+//
+
+//
+// Update the header and source code highlighting depending on the
+// currently selected object
+//
+void update_sourceview_position() {
+  if (!sourceview_panel || !sourceview_panel->visible()) 
+    return;
+  if (sv_autoposition->value()==0) 
+    return;
+  if (sourceview_panel && sourceview_panel->visible() && FluidType::current) {
+    int pos0, pos1;
+    if (sv_source->visible_r()) {
+      pos0 = FluidType::current->code_line;
+      pos1 = FluidType::current->code_line_end;
+      if (pos0>=0) {
+        if (pos1<pos0)
+          pos1 = pos0;
+        sv_source->buffer()->highlight(pos0, pos1);
+        int line = sv_source->buffer()->count_lines(0, pos0);
+        sv_source->scroll(line, 0);
+      }
+    }
+    if (sv_header->visible_r()) {
+      pos0 = FluidType::current->header_line;
+      pos1 = FluidType::current->header_line_end;
+      if (pos0>=0) {
+        if (pos1<pos0)
+          pos1 = pos0;
+        sv_header->buffer()->highlight(pos0, pos1);
+        int line = sv_header->buffer()->count_lines(0, pos0);
+        sv_header->scroll(line, 0);
+      }
+    }
+  }
+}
+
+void update_sourceview_position_cb(TabGroup*, void*) {
+  update_sourceview_position();
+}
+
+static char *sv_source_filename = 0;
+static char *sv_header_filename = 0;
+
+//
+// Generate a header and source file in a temporary directory and
+// load those into the Code Viewer widgets.
+//
+extern int write_sourceview;
+
+void update_sourceview_cb(Button*, void*) {
+  if (!sourceview_panel || !sourceview_panel->visible()) 
+    return;
+  // generate space for the source and header file filenames
+  if (!sv_source_filename) {
+    sv_source_filename = (char*)malloc(PATH_MAX);
+    prefs.getUserdataPath(sv_source_filename, PATH_MAX);
+    strlcat(sv_source_filename, "source_view_tmp.cxx", PATH_MAX);
+  }
+  if (!sv_header_filename) {
+    sv_header_filename = (char*)malloc(PATH_MAX);
+    prefs.getUserdataPath(sv_header_filename, PATH_MAX);
+    strlcat(sv_header_filename, "source_view_tmp.h", PATH_MAX);
+  }
+
+//FIXME
+//  strlcpy(i18n_program, fltk::filename_name(sv_source_filename), sizeof(i18n_program));
+//  fltk::filename_ext(i18n_program, sizeof(i18n_program), "");
+  const char *code_file_name_bak = code_file_name;
+  code_file_name = sv_source_filename;
+  const char *header_file_name_bak = header_file_name;
+  header_file_name = sv_header_filename;
+
+  // generate the code and load the files
+  write_sourceview = 1;
+  // generate files
+  if (write_code(sv_source_filename, sv_header_filename)) 
+  {
+    // load file into source editor
+    int pos = sv_source->top_line();
+    sv_source->buffer()->loadfile(sv_source_filename);
+    sv_source->scroll(pos, 0);
+    // load file into header editor
+    pos = sv_header->top_line();
+    sv_header->buffer()->loadfile(sv_header_filename);
+    sv_header->scroll(pos, 0);
+    // update the source code highlighting
+    update_sourceview_position();
+  }
+  write_sourceview = 0;
+
+  code_file_name = code_file_name_bak;
+  header_file_name = header_file_name_bak;
+}
+
+void update_sourceview_timer(void*)  {
+  update_sourceview_cb(0,0);
+}
+
+////////////////////////////////////////////////////////////////
+// Check that file is valid, remove from history if not
+void check_history (const char * fname) {
+    int i;
+    for (i=0;i<MAX_HISTORY;i++) {
+	if (!strcmp(fname,absolute_history[i]) && !fltk::filename_exist(absolute_history[i])) {
+	    if (i<MAX_HISTORY-1) {
+		for (int p=i;p<MAX_HISTORY-1;p++) {
+		    strcpy(absolute_history[p],absolute_history[p+1]);
+		    strcpy(relative_history[p],relative_history[p+1]);
+		}
+		*absolute_history[MAX_HISTORY-1]='\0';
+	    }
+	    else
+		*absolute_history[i]='\0';
+	}
+    }
+    for (i=0;i<MAX_HISTORY; i ++) 
+	prefs.set( Preferences::Name("file%d", i), absolute_history[i]);
+    for (i=0;i<MAX_HISTORY && *absolute_history[i]; i ++);
+    if (i<MAX_HISTORY ) history_item[i]->hide();
+}
+// Load file history from preferences...
+void load_history() {
+    int	i;		// Looping var
+    int	max_files = prefs.recent_files();
+    
+    if (max_files > MAX_HISTORY) max_files = MAX_HISTORY;
+    
+    for (i = 0; i < max_files; i ++) {
+	prefs.get( Preferences::Name("file%d", i), absolute_history[i], "", sizeof(absolute_history[i]));
+	if (absolute_history[i][0]) {
+	    // Make a relative version of the filename for the menu...
+	    filename_relative(relative_history[i], sizeof(relative_history[i]),
+		absolute_history[i]);
+	    history_item[i]->show();
+	} else break;
+    }
+    
+    for (; i < MAX_HISTORY; i ++) {
+	history_item[i]->hide();
+    }
+    menubar->redraw();
+}
+
+// Update file history from preferences...
+void update_history(const char *flname) {
+    int	i;		// Looping var
+    char	absolute[1024];
+    int	max_files=prefs.recent_files();
+    
+    
+    if (max_files > MAX_HISTORY) max_files = MAX_HISTORY;
+    
+    filename_absolute(absolute, sizeof(absolute), flname);
+    
+    for (i = 0; i < max_files; i ++)
+#if defined(WIN32) || defined(__APPLE__)
+	if (!strcasecmp(absolute, absolute_history[i])) break;
+#else
+	if (!strcmp(absolute, absolute_history[i])) break;
+#endif // WIN32 || __APPLE__
+	
+    if (i == 0) return;
+    
+    if (i >= max_files) i = max_files - 1;
+    
+    // Move the other flnames down in the list...
+    memmove(absolute_history + 1, absolute_history,
+	i * sizeof(absolute_history[0]));
+    memmove(relative_history + 1, relative_history,
+	i * sizeof(relative_history[0]));
+    
+    // Put the new file at the top...
+    strlcpy(absolute_history[0], absolute, sizeof(absolute_history[0]));
+    
+    filename_relative(relative_history[0], sizeof(relative_history[0]),
+	absolute_history[0]);
+    
+    // Update the menu items as needed...
+    for (i = 0; i < max_files; i ++) {
+	prefs.set( Preferences::Name("file%d", i), absolute_history[i]);
+	if (!absolute_history[i][0]) break;
+	history_item[i]->show();
+    }
+    
+    for (; i < MAX_HISTORY; i ++) {
+	prefs.set( Preferences::Name("file%d", i), "");
+	history_item[i]->hide();
+    }
+}
+////////////////////////////////////////////////////////////////
+
+static int arg(int argc, char** argv, int& i) {
+    if (argv[i][1] == 'c' && !argv[i][2]) {compile_only = 1; i++; return 1;}
+    if (argv[i][1] == 'o' && !argv[i][2] && i+1 < argc) {
+	code_file_name = argv[i+1];
+	code_file_set  = 1;
+	i += 2;
+	return 2;
+    }
+    if (argv[i][1] == 'h' && !argv[i][2]) {
+	header_file_name = argv[i+1];
+	header_file_set  = 1;
+	i += 2;
+	return 2;
+    }
+    return 0;
+}
+
+#ifndef _WIN32
+
+#include <signal.h>
+#ifdef _sigargs
+#define SIGARG _sigargs
+#else
+#ifdef __sigargs
+#define SIGARG __sigargs
+#else
+#define SIGARG int // you may need to fix this for older systems
+#endif
+#endif
+
+extern "C" {
+    static void sigint(SIGARG) {
+	signal(SIGINT,sigint);
+	exit_cb(0,0);
+    }
+}
+#endif
+
+int main(int argc,char **argv) {
+  int i = 1;
+  if (!args(argc,argv,i,::arg) || i < argc-1) {
+    fprintf(stderr,"usage: %s <switches> name.fl\n"
+	    " -c : write .cxx and .h and exit\n"
+	    " -o <name> : .cxx output filename, or extension if <name> starts with '.'\n"
+	    " -h <name> : .h output filename, or extension if <name> starts with '.'\n"
+	    "%s\n", argv[0], help);
+    return 1;
+  }
+  const char *c = argv[i];
+
+  register_images();
+
+  Window * sw = 0;
+  double splash_time = fltk::get_time_secs();
+  if(!compile_only && prefs.show_splash()) sw = splash();
+
+  fluid_style_set = new StyleSet();
+  style_set = new StyleSet();
+
+  read_plugins();
+  make_main_window();
+  load_coding_style();
+
+  if (c) set_filename(c);
+  if (!compile_only) {
+    visual(DOUBLE_BUFFER|INDEXED_COLOR);
+
+    FileIcon::load_system_icons();
+    main_window->callback(exit_cb);
+    main_window->show(argc,argv);
+    set_preferences_window();
+    position_window(main_window,"main_window_pos", 1, 10, 30, WINWIDTH, WINHEIGHT );
+    toggle_widgetbin_cb(0,0);
+    toggle_sourceview_cb(0,0);
+    if (!c && openlast_button->value() && absolute_history[0][0]) {
+      // Open previous file when no file specified...
+      open_history_cb(0, absolute_history[0]);
+    }
+    if(sw) sw->show(); // keep splash screen on top if any
+  }
+  Undo::suspend();
+  if (c && !read_file(c,0)) {
+    if (compile_only) {
+      Undo::resume();
+      fprintf(stderr,"%s : %s\n", c, strerror(errno));
+      exit(1);
+    }
+    message("Can't read %s: %s", c, strerror(errno));
+  }
+  if(sw) sw->show(); // keep splash screen on top if any
+  Undo::resume();
+  if (compile_only) {write_cb(0,0); exit(0);}
+  modflag = 0;
+#ifndef _WIN32
+  signal(SIGINT,sigint);
+#endif
+  if (sw) { // hide splash screen if still visible (no escape have been pressed)
+    while(sw->visible() && fltk::get_time_secs()-splash_time<1.0)
+      fltk::check();
+    sw->hide();
+  }
+  return run();
+
+}
+
+//
+// End of "$Id: fluid.cxx 6100 2008-04-13 20:29:52Z fabien $".
+//

Added: branches/branch-3.0-2011/fluid2/fluid_img.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/fluid_img.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/fluid_img.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,168 @@
+//
+// "$Id"
+//
+// fluid_img merge all the fluid xpm into one table
+//
+// Type classes for most of the fltk widgets.  Most of the work
+// is done by code in WidgetType.C.  Also a factory instance
+// of each of these type classes.
+//
+// This file also contains the "new" menu, which has a pointer
+// to a factory instance for every class (both the ones defined
+// here and ones in other files)
+//
+// 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".
+//
+
+#include <pixmaps/fluid/lock.xpm>
+#include <pixmaps/fluid/flWindow.xpm>
+#include <pixmaps/fluid/flButton.xpm>
+#include <pixmaps/fluid/flCheckButton.xpm>
+#include <pixmaps/fluid/flRoundButton.xpm>
+#include <pixmaps/fluid/flBox.xpm>
+#include <pixmaps/fluid/flGroup.xpm>
+#include <pixmaps/fluid/flFunction.xpm>
+#include <pixmaps/fluid/flCode.xpm>
+#include <pixmaps/fluid/flCodeBlock.xpm>
+#include <pixmaps/fluid/flComment.xpm>
+#include <pixmaps/fluid/flDeclaration.xpm>
+#include <pixmaps/fluid/flDeclarationBlock.xpm>
+#include <pixmaps/fluid/flClass.xpm>
+#include <pixmaps/fluid/flNamespace.xpm>
+#include <pixmaps/fluid/flTabs.xpm>
+#include <pixmaps/fluid/flInput.xpm>
+#include <pixmaps/fluid/flChoice.xpm>
+#include <pixmaps/fluid/flMenuitem.xpm>
+#include <pixmaps/fluid/flMenubar.xpm>
+#include <pixmaps/fluid/flSubmenu.xpm>
+#include <pixmaps/fluid/flScroll.xpm>
+#include <pixmaps/fluid/flTile.xpm>
+#include <pixmaps/fluid/flWizard.xpm>
+#include <pixmaps/fluid/flPack.xpm>
+#include <pixmaps/fluid/flReturnButton.xpm>
+#include <pixmaps/fluid/flLightButton.xpm>
+#include <pixmaps/fluid/flRepeatButton.xpm>
+#include <pixmaps/fluid/flMenuButton.xpm>
+#include <pixmaps/fluid/flOutput.xpm>
+#include <pixmaps/fluid/flTextDisplay.xpm>
+#include <pixmaps/fluid/flTextEdit.xpm>
+#include <pixmaps/fluid/flFileInput.xpm>
+#include <pixmaps/fluid/flBrowser.xpm>
+#include <pixmaps/fluid/flCheckBrowser.xpm>
+#include <pixmaps/fluid/flFileBrowser.xpm>
+#include <pixmaps/fluid/flClock.xpm>
+#include <pixmaps/fluid/flHelp.xpm>
+#include <pixmaps/fluid/flProgress.xpm>
+#include <pixmaps/fluid/flSlider.xpm>
+#include <pixmaps/fluid/flScrollBar.xpm>
+#include <pixmaps/fluid/flValueSlider.xpm>
+#include <pixmaps/fluid/flAdjuster.xpm>
+#include <pixmaps/fluid/flCounter.xpm>
+#include <pixmaps/fluid/flDial.xpm>
+#include <pixmaps/fluid/flRoller.xpm>
+#include <pixmaps/fluid/flValueInput.xpm>
+#include <pixmaps/fluid/flValueOutput.xpm>
+#include <pixmaps/fluid/flSpinner.xpm>
+#include <pixmaps/fluid/flWidgetClass.xpm>
+//#include <pixmaps/file_small.xpm>
+//#include <pixmaps/folder_save.xpm>
+#include <pixmaps/file_small2.xpm>
+#include <pixmaps/folder_small.xpm>
+#include <pixmaps/book.xpm>
+#include <pixmaps/recycle.xpm>
+
+#include "fluid_img.h"
+#include <fltk/xpmImage.h>
+
+using namespace fltk;
+
+xpmImage	open_pixmap(folder_small);
+xpmImage	new_pixmap(file_small2);
+xpmImage	write_pixmap(book);
+xpmImage	save_pixmap(book);
+xpmImage	saveas_pixmap(book);
+xpmImage	merge_pixmap(recycle_xpm);
+xpmImage	exit_pixmap(recycle_xpm);
+
+static xpmImage	lock_pixmap(lock_xpm);
+static xpmImage	window_pixmap(flWindow_xpm);
+static xpmImage	button_pixmap(flButton_xpm);
+static xpmImage	checkbutton_pixmap(flCheckButton_xpm);
+static xpmImage	roundbutton_pixmap(flRoundButton_xpm);
+static xpmImage	box_pixmap(flBox_xpm);
+static xpmImage	group_pixmap(flGroup_xpm);
+static xpmImage	function_pixmap(flFunction_xpm);
+static xpmImage	code_pixmap(flCode_xpm);
+static xpmImage	codeblock_pixmap(flCodeBlock_xpm);
+static xpmImage	comment_pixmap(flComment_xpm);
+static xpmImage	declaration_pixmap(flDeclaration_xpm);
+static xpmImage	declarationblock_pixmap(flDeclarationBlock_xpm);
+static xpmImage	class_pixmap(flClass_xpm);
+static xpmImage	namespace_pixmap(flNamespace_xpm);
+static xpmImage	tabs_pixmap(flTabs_xpm);
+static xpmImage	input_pixmap(flInput_xpm);
+static xpmImage	choice_pixmap(flChoice_xpm);
+static xpmImage	menuitem_pixmap(flMenuitem_xpm);
+static xpmImage	menubar_pixmap(flMenubar_xpm);
+static xpmImage	submenu_pixmap(flSubmenu_xpm);
+static xpmImage	scroll_pixmap(flScroll_xpm);
+static xpmImage	tile_pixmap(flTile_xpm);
+static xpmImage	wizard_pixmap(flWizard_xpm);
+static xpmImage	pack_pixmap(flPack_xpm);
+static xpmImage	returnbutton_pixmap(flReturnButton_xpm);
+static xpmImage	lightbutton_pixmap(flLightButton_xpm);
+static xpmImage	repeatbutton_pixmap(flRepeatButton_xpm);
+static xpmImage	menubutton_pixmap(flMenuButton_xpm);
+static xpmImage	output_pixmap(flOutput_xpm);
+static xpmImage	textdisplay_pixmap(flTextDisplay_xpm);
+static xpmImage	textedit_pixmap(flTextEdit_xpm);
+static xpmImage	fileinput_pixmap(flFileInput_xpm);
+static xpmImage	browser_pixmap(flBrowser_xpm);
+static xpmImage	checkbrowser_pixmap(flCheckBrowser_xpm);
+static xpmImage	filebrowser_pixmap(flFileBrowser_xpm);
+static xpmImage	clock_pixmap(flClock_xpm);
+static xpmImage	help_pixmap(flHelp_xpm);
+static xpmImage	progress_pixmap(flProgress_xpm);
+static xpmImage	slider_pixmap(flSlider_xpm);
+static xpmImage	scrollbar_pixmap(flScrollBar_xpm);
+static xpmImage	valueslider_pixmap(flValueSlider_xpm);
+static xpmImage	adjuster_pixmap(flAdjuster_xpm);
+static xpmImage	counter_pixmap(flCounter_xpm);
+static xpmImage	dial_pixmap(flDial_xpm);
+static xpmImage	roller_pixmap(flRoller_xpm);
+static xpmImage	valueinput_pixmap(flValueInput_xpm);
+static xpmImage	valueoutput_pixmap(flValueOutput_xpm);
+static xpmImage	spinner_pixmap(flSpinner_xpm);
+static xpmImage	widgetclass_pixmap(flWidgetClass_xpm);
+
+xpmImage * fluid_pixmap[] = { 
+ 0, &window_pixmap, &button_pixmap, &checkbutton_pixmap, &roundbutton_pixmap, /* 0..4 */
+ &box_pixmap, &group_pixmap, &function_pixmap, &code_pixmap, &codeblock_pixmap, &declaration_pixmap, /* 5..10 */ 
+ &declarationblock_pixmap, &class_pixmap, &tabs_pixmap, &input_pixmap, &choice_pixmap,               /* 11..15 */
+ &menuitem_pixmap, &menubar_pixmap, &submenu_pixmap, &scroll_pixmap, &tile_pixmap, &wizard_pixmap,   /* 16..21 */
+ &pack_pixmap, &returnbutton_pixmap, &lightbutton_pixmap, &repeatbutton_pixmap, &menubutton_pixmap,  /* 22..26 */
+ &output_pixmap, &textdisplay_pixmap, &textedit_pixmap, &fileinput_pixmap, &browser_pixmap,          /* 27..32 */
+ &checkbrowser_pixmap, &filebrowser_pixmap, &clock_pixmap, &help_pixmap, &progress_pixmap,	     /* 33..36 */
+ &slider_pixmap, &scrollbar_pixmap, &valueslider_pixmap, &adjuster_pixmap, &counter_pixmap,          /* 37..41 */
+ &dial_pixmap, &roller_pixmap, &valueinput_pixmap, &valueoutput_pixmap, &comment_pixmap,             /* 42..46 */
+ &spinner_pixmap, &widgetclass_pixmap,&namespace_pixmap /* 47..49 */ 
+};
+
+// End of "$Id"

Added: branches/branch-3.0-2011/fluid2/fluid_img.h
===================================================================
--- branches/branch-3.0-2011/fluid2/fluid_img.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/fluid_img.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,49 @@
+//
+// "$Id"
+//
+// fluid_img declaration: all fluid xpm's into one table
+//
+// Type classes for most of the fltk widgets.  Most of the work
+// is done by code in WidgetType.C.  Also a factory instance
+// of each of these type classes.
+//
+// This file also contains the "new" menu, which has a pointer
+// to a factory instance for every class (both the ones defined
+// here and ones in other files)
+//
+// 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_fluid_img_h
+#define fltk_fluid_img_h
+
+#include <fltk/xpmImage.h>
+
+extern fltk::xpmImage*	fluid_pixmap[];
+extern fltk::xpmImage	open_pixmap;
+extern fltk::xpmImage	new_pixmap;
+extern fltk::xpmImage	save_pixmap;
+extern fltk::xpmImage	saveas_pixmap;
+extern fltk::xpmImage	merge_pixmap;
+extern fltk::xpmImage	write_pixmap;
+extern fltk::xpmImage	exit_pixmap;
+
+#endif
+
+// End of "$Id"

Added: branches/branch-3.0-2011/fluid2/fluid_menus.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/fluid_menus.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/fluid_menus.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,349 @@
+//
+// "$Id"
+//
+// Fluid Menus implementation 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".
+//
+#include <fltk/MenuBuild.h>
+#include <fltk/DoubleBufferWindow.h>
+#include <fltk/ToggleItem.h>
+#include "fluid_menus.h"
+#include "Widget_Types.h"
+#include "FunctionType.h"
+#include "WindowType.h"
+#include "fluid_img.h"
+#include "undo.h"
+
+using namespace fltk;
+
+DECL_MENUCBV(new_cb);
+DECL_MENUCBV(open_cb);
+DECL_MENUCBV(save_cb);
+DECL_MENUCBV(save_template_cb);
+DECL_MENUCBV(revert_cb);
+DECL_MENUCBV(write_cb);
+DECL_MENUCBV(exit_cb);
+DECL_MENUCBV(cut_cb);
+DECL_MENUCBV(copy_cb);
+DECL_MENUCBV(paste_cb);
+DECL_MENUCBV(exit_cb);
+DECL_MENUCBV(earlier_cb);
+DECL_MENUCBV(later_cb);
+DECL_MENUCBV(group_cb);
+DECL_MENUCBV(ungroup_cb);
+DECL_MENUCBV(sort_cb);
+DECL_MENUCBV(show_preferences_cb);
+DECL_MENUCBV(show_coding_style_cb);
+DECL_MENUCBV(select_all_cb);
+DECL_MENUCBV(select_none_cb);
+DECL_MENUCBV(openwidget_cb);
+DECL_MENUCBV(toggle_widgetbin_cb);
+DECL_MENUCBV(open_history_cb);
+DECL_MENUCBV(theme_cb);
+DECL_MENUCBV(set_images_dir_cb);
+DECL_MENUCBV(about_cb);
+DECL_MENUCBV(tt_cb);
+DECL_MENUCBV(toggle_overlays);
+DECL_MENUCBV2(toggle_sourceview_cb,DoubleBufferWindow);
+DECL_MENUCBV(toggle_statusbar_cb);
+DECL_MENUCBV(show_shell_window);
+DECL_MENUCBV2(do_shell_command,ReturnButton);
+DECL_MENUCBV(help_cb);
+DECL_MENUCBV(manual_cb);
+DECL_MENUCBL(align_widget_cb);
+DECL_MENUCBL2(default_widget_size_cb, RadioButton);
+DECL_MENUCBL(widget_size_cb);
+
+//////////////////////////////////////////////////////////////////////
+
+GroupType Grouptype; // used by group_cb
+static PackType Packtype;
+static TabsType Tabstype;
+static WizardGroupType WizardGrouptype;
+static ScrollType Scrolltype;
+static TileType Tiletype;
+static WindowType Windowtype;
+
+static BrowserType Browsertype;
+static InputBrowserType InputBrowsertype;
+static FileBrowserType FileBrowsertype;
+
+static ItemType Itemtype;
+static DividerType Dividertype;
+static SubmenuType Submenutype;
+static MenuBarType MenuBartype;
+static PopupMenuType PopupMenutype;
+static ChoiceType Choicetype;
+
+static FunctionType Functiontype;
+static CodeType Codetype;
+static CodeBlockType CodeBlocktype;
+static DeclType Decltype;
+static DeclBlockType DeclBlocktype;
+static CommentType Commenttype;
+static ClassType Classtype;
+static NamespaceType Namespacetype;
+
+static WidgetType Widgettype;
+static InvisibleBoxType InvisibleBoxtype;
+static ButtonType Buttontype;
+static ReturnButtonType ReturnButtontype;
+static RepeatButtonType RepeatButtontype;
+static LightButtonType LightButtontype;
+static CheckButtonType CheckButtontype;
+static RadioButtonType RadioButtontype;
+static InputType Inputtype;
+static DialType Dialtype;
+static ClockType Clocktype;
+static AdjusterType Adjustertype;
+static ThumbWheelType ThumbWheeltype;
+static TextEditorType TextEditortype;
+static FileInputType FileInputtype;
+static HelpViewType HelpViewtype;
+static ProgressBarType ProgressBartype;
+static SliderType Slidertype;
+static ScrollbarType Scrollbartype;
+static OutputType Outputtype;
+static ValueInputType ValueInputtype;
+static ValueOutputType ValueOutputtype;
+static ValueSliderType ValueSlidertype;
+static BarGroupType BarGrouptype;
+static StatusBarGroupType StatusBarGrouptype;
+static TextDisplayType TextDisplaytype;
+
+//////////////////////////////////////////////////////////////////////
+
+MenuBar* Main_Menu;
+Item *history_item[10],*undo_item[2],*iwidget_bin,
+    *itooltip,*isource_view,*istatusbar,*ishow_overlay;
+ItemGroup* newMenu;
+
+//////////////////////////////////////////////////////////////////////
+
+static void cb(fltk::Widget *, void *v) {
+  Undo::checkpoint();
+  Undo::suspend();
+  FluidType *t = ((FluidType*)v)->make();
+  if (t) {select_only(t); modflag = 1; t->open();}
+  else Undo::remove_last();
+  Undo::resume();
+}
+
+//////////////////////////////////////////////////////////////////////
+
+MenuBar* build_hierarchy(MenuBar* menubar) {
+    Main_Menu = menubar;
+    menubar->begin();
+
+    {MenuSection g("&File");
+	new Item("&New", COMMAND+'N', new_cb, 0);//)->image(new_pixmap);
+	new Item("&Open...", COMMAND+'O', open_cb, 0);//)->image(open_pixmap);
+	new Item("&Save", COMMAND+'S', save_cb, 0); //)->image(save_pixmap);
+	new Item("S&ave As", SHIFT+COMMAND+'S', save_cb, (void*)1);
+	new Item("Sa&ve a Copy", ACCELERATOR+COMMAND+'S', save_cb, (void*)2);
+	new Item("Save &Template", COMMAND+'T', save_template_cb, (void*)1);
+	new Divider();
+	new Item("&Revert", COMMAND+'R', revert_cb, (void*)1);
+	//new Item("&Print", COMMAND+'P', print_menu_cb, (void*)1); // TODO: add nice printing code
+	new Item("&Merge...", COMMAND+'I', open_cb, (void*)1);//)->image(merge_pixmap);
+	new Item("&Write code", COMMAND+'W', write_cb, 0);//)->image(write_pixmap);
+	new Divider();
+	for (int h=0; h<MAX_HISTORY; h++)
+	    history_item[h] = new Item(relative_history[h], COMMAND+('0'+h), open_history_cb, absolute_history[h]);
+	new Divider();
+	new Item("&Quit", COMMAND+'Q', exit_cb);
+    }
+    {MenuSection g("&Edit");
+	undo_item[0] = new Item("U&ndo", COMMAND+'Z', Undo::undo_cb,0,INACTIVE);
+	undo_item[1] = new Item("&Redo", SHIFT+COMMAND+'Z', Undo::redo_cb,0,INACTIVE);
+	new Divider();
+	new Item("&Cut", COMMAND+'X', cut_cb);
+	new Item("C&opy", COMMAND+'C', copy_cb);
+	new Item("&Paste", COMMAND+'V', paste_cb);
+	new Item("Select &All", COMMAND+'A', select_all_cb);
+	new Item("Select &None", SHIFT+COMMAND+'A', select_none_cb);
+	new Divider();
+	new Item("Ed&it this widget", ReturnKey, openwidget_cb);
+	new Item("&Sort these widgets", 0, sort_cb);
+	new Divider();
+	new Item("Move widget &earlier", F2Key, earlier_cb);
+	new Item("Move widget &later", F3Key, later_cb);
+	new Divider();
+	//new Item("Show", F5Key, show_cb);
+	//new Item("Hide", F6Key, hide_cb);
+	new Item("&Group", F7Key, group_cb);
+	new Item("&Ungroup", F8Key, ungroup_cb,0);
+	new Divider();
+	//new Item("Deactivate", 0, nyi);
+	//new Item("Activate", 0, nyi, 0, FL_MENU_DIVIDER);
+	{MenuSection g("&Show / Hide"); 
+	    ishow_overlay = new ToggleItem("Show &Overlays",ACCELERATOR+'O',toggle_overlays);
+	    iwidget_bin   = new ToggleItem("Show &Widget Bin",ACCELERATOR+'B',toggle_widgetbin_cb);
+	    isource_view  = new ToggleItem("Show &Source Code",ACCELERATOR+COMMAND+'S',(Callback*) toggle_sourceview_cb);
+	    istatusbar    = new ToggleItem("Show Status &Bar",ACCELERATOR+COMMAND+'B',(Callback*) toggle_statusbar_cb);
+	}
+	//new Divider();
+	new Item("&Preferences",COMMAND+'P',show_preferences_cb);
+	new Item("Coding St&yle", 0, show_coding_style_cb);
+	new Item("T&heme", 0, theme_cb);
+	new Item("Set i&mages root directory", COMMAND+'D', set_images_dir_cb);
+    }    
+    {MenuSection g("&New"); fill_in_New_Menu(g.group()); }
+    {MenuSection g("&Plugins"); Plugins_Options_Menu->add_to(g.group());}
+    {MenuSection g("&Layout");
+      {MenuSection sg("&Align");
+	new Item("&Left",0,(Callback *)align_widget_cb,(void*)10);
+	new Item("&Center",0,(Callback *)align_widget_cb,(void*)11);
+	new Item("&Right",0,(Callback *)align_widget_cb,(void*)12);
+	new Item("&Top",0,(Callback *)align_widget_cb,(void*)13);
+	new Item("&Middle",0,(Callback *)align_widget_cb,(void*)14);
+	new Item("&Bottom",0,(Callback *)align_widget_cb,(void*)15);
+      }
+      {MenuSection sg("&Space Evenly");
+	new Item("&Across",0,(Callback *)align_widget_cb,(void*)20);
+	new Item("&Down",0,(Callback *)align_widget_cb,(void*)21);
+      }
+      {MenuSection sg("&Make Same Size");
+	new Item("&Width",0,(Callback *)align_widget_cb,(void*)30);
+	new Item("&Height",0,(Callback *)align_widget_cb,(void*)31);
+	new Item("&Both",0,(Callback *)align_widget_cb,(void*)32);
+      }
+      {MenuSection sg("&Center In Group");
+	new Item("&Horizontal",0,(Callback *)align_widget_cb,(void*)40);
+	new Item("&Vertical",0,(Callback *)align_widget_cb,(void*)41);
+      }
+      {MenuSection sg("Set &Widget Size");
+	(new Item("&Tiny",ACCELERATOR+'1',(Callback *)widget_size_cb,(void*)8))->textsize(8);
+	(new Item("&Small",ACCELERATOR+'2',(Callback *)widget_size_cb,(void*)11))->textsize(11);
+	(new Item("&Normal",ACCELERATOR+'3',(Callback *)widget_size_cb,(void*)14))->textsize(14);
+	(new Item("&Medium",ACCELERATOR+'4',(Callback *)widget_size_cb,(void*)18))->textsize(18);
+	(new Item("&Large",ACCELERATOR+'5',(Callback *)widget_size_cb,(void*)24))->textsize(24);
+	(new Item("&Huge",ACCELERATOR+'6',(Callback *)widget_size_cb,(void*)32))->textsize(32);
+      }
+      new Divider();
+      new Item("&Grid and Size Settings...",COMMAND+'G',show_preferences_cb,(void*)2);
+    }
+    {MenuSection g("&Shell");
+	new Item("Execute &Command",ACCELERATOR+'X',show_shell_window);
+	new Item("Execute &Again",ACCELERATOR+'G', (Callback*)do_shell_command);
+    }
+    {MenuSection g("&Help");
+	new Item("&About fluid",0,about_cb);
+	new Divider();
+	new Item("&On fluid...",0,help_cb);
+	new Item("&FLTK Manual...",0,manual_cb);
+	new Divider();
+	itooltip= new ToggleItem("&Tooltips", 0, tt_cb, 0);
+        //new Item("Manual",0,nyi);
+    }
+    menubar->end();
+
+    return menubar;
+}
+
+//////////////////////////////////////////////////////////////////////
+// All Fluid buildable widgets are accesible from the New menu:
+//////////////////////////////////////////////////////////////////////
+
+void fill_in_New_Menu(ItemGroup* menu) {
+  newMenu= menu;
+  xpmImage** i = fluid_pixmap;
+    newMenu->begin();
+	{MenuSection g("code",i[12]);
+	  fluidMenuItem(Functiontype,7);
+	  fluidMenuItem(Codetype, 8);
+	  fluidMenuItem(CodeBlocktype, 9);
+	  fluidMenuItem(Decltype, 10);
+	  fluidMenuItem(DeclBlocktype, 11);
+	  fluidMenuItem(Classtype, 12);
+	  fluidMenuItem(Namespacetype, 49);
+	  fluidMenuItem(Commenttype, 46);
+	}
+	{MenuSection g("group",i[1]);
+	    fluidMenuItem(Windowtype  , 1);
+	    fluidMenuItem(Grouptype  , 6);
+	    fluidMenuItem(Packtype  , 22);
+	    fluidMenuItem(Tabstype  , 13);
+	    fluidMenuItem(Scrolltype  , 19);
+	    fluidMenuItem(Tiletype  , 20);
+	    fluidMenuItem(WizardGrouptype  , 21);
+	    fluidMenuItem(BarGrouptype  , 17);
+	    fluidMenuItem(StatusBarGrouptype  , 5);
+	}
+	{MenuSection g("buttons",i[24]);
+	    fluidMenuItem(Buttontype  , 2);
+	    fluidMenuItem(ReturnButtontype  , 23);
+	    fluidMenuItem(LightButtontype  , 24);
+	    fluidMenuItem(CheckButtontype  , 3);
+	    fluidMenuItem(RadioButtontype  , 4);
+	    fluidMenuItem(RepeatButtontype  , 25);
+	}
+	{MenuSection g("valuators",i[37]);
+	    fluidMenuItem(Slidertype  , 37);
+	    fluidMenuItem(ValueSlidertype  , 39);
+	    fluidMenuItem(ValueInputtype  , 44);
+	    fluidMenuItem(ValueOutputtype  , 45);
+	    fluidMenuItem(Scrollbartype  ,38);
+	    fluidMenuItem(Adjustertype  , 40);
+	    fluidMenuItem(Dialtype  , 42);
+	    fluidMenuItem(ThumbWheeltype  , 43);
+	    fluidMenuItem(ProgressBartype  , 36);
+	}
+	{MenuSection g("text",i[27]);
+	    fluidMenuItem(Inputtype  , 14);
+	    fluidMenuItem(Outputtype  ,  27);
+	    fluidMenuItem(TextDisplaytype  , 28);
+	    fluidMenuItem(TextEditortype  , 29);
+	    fluidMenuItem(FileInputtype  , 30);
+	}
+	{MenuSection g("menus",i[17]);
+	    fluidMenuItem(MenuBartype  , 17);
+	    fluidMenuItem(PopupMenutype  , 26);
+	    fluidMenuItem(Choicetype  , 15);
+	    fluidMenuItem(Browsertype  , 31);
+	    fluidMenuItem(InputBrowsertype  , 15);
+	    fluidMenuItem(FileBrowsertype  , 33);
+	    fluidMenuItem(Submenutype  ,18);
+	    fluidMenuItem(Itemtype  , 16);
+	    fluidMenuItem(Dividertype  , 16);
+	}
+	{MenuSection g("other",i[5]);
+	    fluidMenuItem(Widgettype  , 5);
+	    fluidMenuItem(InvisibleBoxtype  , 5);
+	    fluidMenuItem(HelpViewtype  , 35);
+	    fluidMenuItem(Clocktype  , 34);
+	    //helpview 35
+	}
+      newMenu->end();
+}
+//////////////////////////////////////////////////////////////////////
+
+Item * fluidMenuItem(FluidType& wt,int n) {
+  Item* i = new Item(wt.type_name(),0,cb,(void*)&wt);
+  if (n >= 0) i->image(fluid_pixmap[n]);
+  return i;
+}
+
+//////////////////////////////////////////////////////////////////////
+
+//
+// End of "$Id"
+//

Added: branches/branch-3.0-2011/fluid2/fluid_menus.h
===================================================================
--- branches/branch-3.0-2011/fluid2/fluid_menus.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/fluid_menus.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,61 @@
+// "$Id:"
+//
+// Stuff to build menus in the Fast Light toolkit Interface Designer (fluid)
+//
+// 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_fluid_menus_h
+#define fltk_fluid_menus_h
+
+#include "FluidType.h"
+
+namespace fltk {
+    class MenuBar;
+    class ItemGroup;
+    class Item;
+    class xpmImage;
+};
+
+fltk::MenuBar* build_hierarchy(fltk::MenuBar* menubar);
+void fill_in_New_Menu(fltk::ItemGroup* menu);
+fltk::Item* fluidMenuItem(FluidType& wt,int n=-1);
+
+const int MAX_HISTORY = 10; //!< maximum number of items in menu File
+extern char absolute_history[MAX_HISTORY][1024];
+extern char relative_history[MAX_HISTORY][1024];
+
+extern fltk::Item *history_item[10],*undo_item[2],
+    *iwidget_bin,*itooltip,*isource_view,*istatusbar, *ishow_overlay;
+extern fltk::ItemGroup *newMenu;
+extern fltk::MenuBar* Main_Menu;
+
+#define DECL_MENUCBV(n) void n(Widget *, void *)
+#define DECL_MENUCBL(n) void n(Widget *, long)
+#define DECL_MENUCBV2(n,type) void n(type *, void *)
+#define DECL_MENUCBL2(n,type) void n(type *, long)
+#define IMPL_MENUCB(n) void n(Widget *, void *) {}
+
+#endif
+//
+// End of "$Id"
+//
+

Added: branches/branch-3.0-2011/fluid2/function_panel.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/function_panel.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/function_panel.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,540 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#include "function_panel.h"
+
+fltk::Window *function_panel=(fltk::Window *)0;
+
+fltk::CheckButton *f_public_button=(fltk::CheckButton *)0;
+
+fltk::CheckButton *f_c_button=(fltk::CheckButton *)0;
+
+fltk::Input *f_name_input=(fltk::Input *)0;
+
+fltk::Input *f_attributes_input=(fltk::Input *)0;
+
+fltk::Input *f_return_type_input=(fltk::Input *)0;
+
+fltk::ReturnButton *f_panel_ok=(fltk::ReturnButton *)0;
+
+fltk::Button *f_panel_cancel=(fltk::Button *)0;
+
+static void cb_static(fltk::Item*, void*) {
+  f_attributes_input->value("static");
+}
+
+static void cb_virtual(fltk::Item*, void*) {
+  f_attributes_input->value("virtual");
+}
+
+static void cb_const(fltk::Item*, void*) {
+  f_attributes_input->value("const");
+}
+
+static void cb_inline(fltk::Item*, void*) {
+  f_attributes_input->value("inline");
+}
+
+static void cb_export(fltk::Item*, void*) {
+  f_attributes_input->value("export");
+}
+
+static void cb___declspec(fltk::Item*, void*) {
+  f_attributes_input->value("__declspec(dllexport)");
+}
+
+static void cb___declspec1(fltk::Item*, void*) {
+  f_attributes_input->value("__declspec(dllimport)");
+}
+
+static void cb___stdcall(fltk::Item*, void*) {
+  f_attributes_input->value("__stdcall");
+}
+
+static void cb_Set(fltk::Button*, void*) {
+  f_name_input->value("");
+  f_attributes_input->value("");
+  f_return_type_input->value("");
+  f_public_button->value(1);
+  f_c_button->value(0);
+}
+
+fltk::Window* make_function_panel() {
+  fltk::Window* w;
+   {fltk::Window* o = function_panel = new fltk::Window(400, 208, "function/method");
+    w = o;
+    o->shortcut(0xff1b);
+    o->begin();
+     {fltk::CheckButton* o = f_public_button = new fltk::CheckButton(13, 8, 95, 25, "public");
+      o->when(fltk::WHEN_NEVER);
+    }
+    f_c_button = new fltk::CheckButton(129, 8, 133, 25, "C declaration");
+     {fltk::Input* o = f_name_input = new fltk::Input(13, 55, 237, 22, "Name(args): (blank for main())");
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+      o->when(fltk::WHEN_NEVER);
+    }
+     {fltk::Input* o = f_attributes_input = new fltk::Input(13, 99, 237, 22, "Attributes (virtual, static, __declspec, ...)");
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+      o->when(fltk::WHEN_NEVER);
+    }
+     {fltk::Input* o = f_return_type_input = new fltk::Input(13, 143, 377, 22, "Return Type: (blank to return outermost widget)");
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+      o->when(fltk::WHEN_NEVER);
+    }
+     {fltk::ReturnButton* o = f_panel_ok = new fltk::ReturnButton(220, 176, 80, 22, "OK");
+      o->box(fltk::UP_BOX);
+      o->shortcut(0xff0d);
+      ((fltk::Window*)(o->parent()))->hotspot(o);
+    }
+     {fltk::Button* o = f_panel_cancel = new fltk::Button(310, 176, 80, 22, "Cancel");
+      o->box(fltk::UP_BOX);
+      o->buttonbox(fltk::NO_BOX);
+      o->shortcut(0xff1b);
+    }
+     {fltk::Choice* o = new fltk::Choice(280, 99, 110, 22, "attr:");
+      o->begin();
+       {fltk::Item* o = new fltk::Item("static");
+        o->callback((fltk::Callback*)cb_static);
+      }
+       {fltk::Item* o = new fltk::Item("virtual");
+        o->callback((fltk::Callback*)cb_virtual);
+      }
+       {fltk::Item* o = new fltk::Item("const");
+        o->callback((fltk::Callback*)cb_const);
+      }
+       {fltk::Item* o = new fltk::Item("inline");
+        o->buttonbox(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)cb_inline);
+      }
+       {fltk::Item* o = new fltk::Item("export");
+        o->buttonbox(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)cb_export);
+      }
+       {fltk::Item* o = new fltk::Item("__declspec(dllexport)");
+        o->set_vertical();
+        o->buttonbox(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)cb___declspec);
+      }
+       {fltk::Item* o = new fltk::Item("__declspec(dllimport)");
+        o->set_vertical();
+        o->buttonbox(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)cb___declspec1);
+      }
+       {fltk::Item* o = new fltk::Item("__stdcall");
+        o->set_vertical();
+        o->buttonbox(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)cb___stdcall);
+      }
+      o->end();
+    }
+     {fltk::Button* o = new fltk::Button(280, 55, 110, 22, "Set main()");
+      o->box(fltk::UP_BOX);
+      o->buttonbox(fltk::DOWN_BOX);
+      o->callback((fltk::Callback*)cb_Set);
+    }
+    o->end();
+    o->set_modal();
+    o->resizable(o);
+  }
+  return  w;
+}
+
+fltk::Window *code_panel=(fltk::Window *)0;
+
+static void cb_code_panel(fltk::Window* o, void*) {
+  o->resizable(code_input);
+}
+
+CodeEditor *code_input=(CodeEditor *)0;
+
+fltk::ReturnButton *code_panel_ok=(fltk::ReturnButton *)0;
+
+fltk::Button *code_panel_cancel=(fltk::Button *)0;
+
+fltk::Window* make_code_panel() {
+  fltk::Window* w;
+   {fltk::Window* o = code_panel = new fltk::Window(290, 175, "code");
+    w = o;
+    o->shortcut(0xff1b);
+    o->callback((fltk::Callback*)cb_code_panel);
+    o->begin();
+     {CodeEditor* o = code_input = new CodeEditor(6, 5, 280, 138);
+      o->type(4);
+      o->align(fltk::ALIGN_CENTER);
+      o->when(fltk::WHEN_NEVER);
+      fltk::Group::current()->resizable(o);
+    }
+     {fltk::Group* o = new fltk::Group(6, 148, 279, 22);
+      o->begin();
+       {fltk::InvisibleBox* o = new fltk::InvisibleBox(0, 0, 99, 22);
+        fltk::Group::current()->resizable(o);
+      }
+       {fltk::ReturnButton* o = code_panel_ok = new fltk::ReturnButton(109, 0, 80, 22, "OK");
+        o->shortcut(0xff0d);
+        ((fltk::Window*)(o->parent()->parent()))->hotspot(o);
+      }
+       {fltk::Button* o = code_panel_cancel = new fltk::Button(199, 0, 80, 22, "Cancel");
+        o->shortcut(0xff1b);
+      }
+      o->end();
+    }
+    o->end();
+    o->set_modal();
+  }
+  return  w;
+}
+
+fltk::Window *codeblock_panel=(fltk::Window *)0;
+
+fltk::Input *code_before_input=(fltk::Input *)0;
+
+fltk::Input *code_after_input=(fltk::Input *)0;
+
+fltk::ReturnButton *codeblock_panel_ok=(fltk::ReturnButton *)0;
+
+fltk::Button *codeblock_panel_cancel=(fltk::Button *)0;
+
+fltk::Window* make_codeblock_panel() {
+  fltk::Window* w;
+   {fltk::Window* o = codeblock_panel = new fltk::Window(290, 131, "codeblock");
+    w = o;
+    o->shortcut(0xff1b);
+    o->begin();
+     {fltk::Input* o = code_before_input = new fltk::Input(10, 22, 270, 22, "Conditional code block");
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+      o->when(fltk::WHEN_NEVER);
+    }
+     {fltk::Input* o = code_after_input = new fltk::Input(10, 65, 270, 23, "\"{...child code...}\" is inserted here");
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+      o->when(fltk::WHEN_NEVER);
+    }
+     {fltk::ReturnButton* o = codeblock_panel_ok = new fltk::ReturnButton(110, 99, 80, 22, "OK");
+      o->shortcut(0xff0d);
+      ((fltk::Window*)(o->parent()))->hotspot(o);
+    }
+     {fltk::Button* o = codeblock_panel_cancel = new fltk::Button(200, 99, 80, 22, "Cancel");
+      o->shortcut(0xff1b);
+    }
+    o->end();
+    o->set_modal();
+    o->resizable(o);
+  }
+  return  w;
+}
+
+fltk::Window *declblock_panel=(fltk::Window *)0;
+
+fltk::Input *decl_before_input=(fltk::Input *)0;
+
+fltk::Input *decl_after_input=(fltk::Input *)0;
+
+fltk::ReturnButton *declblock_panel_ok=(fltk::ReturnButton *)0;
+
+fltk::Button *declblock_panel_cancel=(fltk::Button *)0;
+
+fltk::Window* make_declblock_panel() {
+  fltk::Window* w;
+   {fltk::Window* o = declblock_panel = new fltk::Window(290, 131, "declaration block");
+    w = o;
+    o->shortcut(0xff1b);
+    o->begin();
+     {fltk::Input* o = decl_before_input = new fltk::Input(10, 22, 270, 22, "Block start");
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+      o->when(fltk::WHEN_NEVER);
+    }
+     {fltk::Input* o = decl_after_input = new fltk::Input(10, 66, 270, 22, "\"\\n...child code...\\n\" is inserted here");
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+      o->when(fltk::WHEN_NEVER);
+    }
+     {fltk::ReturnButton* o = declblock_panel_ok = new fltk::ReturnButton(110, 99, 80, 22, "OK");
+      o->shortcut(0xff0d);
+      ((fltk::Window*)(o->parent()))->hotspot(o);
+    }
+     {fltk::Button* o = declblock_panel_cancel = new fltk::Button(200, 99, 80, 22, "Cancel");
+      o->shortcut(0xff1b);
+    }
+    o->end();
+    o->set_modal();
+    o->resizable(o);
+  }
+  return  w;
+}
+
+fltk::Window *decl_panel=(fltk::Window *)0;
+
+fltk::CheckButton *decl_public_button=(fltk::CheckButton *)0;
+
+fltk::Input *decl_input=(fltk::Input *)0;
+
+fltk::ReturnButton *decl_panel_ok=(fltk::ReturnButton *)0;
+
+fltk::Button *decl_panel_cancel=(fltk::Button *)0;
+
+fltk::Window* make_decl_panel() {
+  fltk::Window* w;
+   {fltk::Window* o = decl_panel = new fltk::Window(290, 175, "declaration");
+    w = o;
+    o->shortcut(0xff1b);
+    o->begin();
+     {fltk::CheckButton* o = decl_public_button = new fltk::CheckButton(10, 11, 65, 22, "public");
+      o->when(fltk::WHEN_NEVER);
+    }
+     {fltk::Input* o = decl_input = new fltk::Input(10, 44, 270, 22, "can be any declartion, like \"int x;\",\nan external symbol like \"extern int\
+ foo();\",\na #directive like \"#include <foo.h>\",\nor a comment like \"//foo\
+\" or \"/*foo*/\"");
+      o->align(fltk::ALIGN_BOTTOM|fltk::ALIGN_LEFT);
+      o->when(fltk::WHEN_NEVER);
+    }
+     {fltk::ReturnButton* o = decl_panel_ok = new fltk::ReturnButton(110, 143, 80, 22, "OK");
+      o->shortcut(0xff0d);
+      ((fltk::Window*)(o->parent()))->hotspot(o);
+    }
+     {fltk::Button* o = decl_panel_cancel = new fltk::Button(200, 143, 80, 22, "Cancel");
+      o->shortcut(0xff1b);
+    }
+    o->end();
+    o->resizable(o);
+  }
+  return  w;
+}
+
+fltk::Window *class_panel=(fltk::Window *)0;
+
+fltk::CheckButton *c_public_button=(fltk::CheckButton *)0;
+
+fltk::Input *c_name_input=(fltk::Input *)0;
+
+fltk::Input *c_subclass_input=(fltk::Input *)0;
+
+fltk::ReturnButton *c_panel_ok=(fltk::ReturnButton *)0;
+
+fltk::Button *c_panel_cancel=(fltk::Button *)0;
+
+fltk::Window* make_class_panel() {
+  fltk::Window* w;
+   {fltk::Window* o = class_panel = new fltk::Window(280, 164, "class");
+    w = o;
+    o->shortcut(0xff1b);
+    o->begin();
+     {fltk::CheckButton* o = c_public_button = new fltk::CheckButton(10, 11, 65, 22, "public");
+      o->when(fltk::WHEN_NEVER);
+    }
+     {fltk::Input* o = c_name_input = new fltk::Input(10, 44, 260, 22, "name:");
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+      o->when(fltk::WHEN_NEVER);
+    }
+     {fltk::Input* o = c_subclass_input = new fltk::Input(10, 89, 260, 21, "subclass of (text between : and {)");
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+      o->when(fltk::WHEN_NEVER);
+    }
+     {fltk::ReturnButton* o = c_panel_ok = new fltk::ReturnButton(100, 132, 80, 22, "OK");
+      o->shortcut(0xff0d);
+      ((fltk::Window*)(o->parent()))->hotspot(o);
+    }
+     {fltk::Button* o = c_panel_cancel = new fltk::Button(190, 132, 80, 22, "Cancel");
+      o->shortcut(0xff1b);
+    }
+    o->end();
+    o->set_modal();
+    o->resizable(o);
+  }
+  return  w;
+}
+
+fltk::Window *namespace_panel=(fltk::Window *)0;
+
+fltk::Input *namespace_input=(fltk::Input *)0;
+
+fltk::ReturnButton *namespace_panel_ok=(fltk::ReturnButton *)0;
+
+fltk::Button *namespace_panel_cancel=(fltk::Button *)0;
+
+fltk::Window* make_namespace_panel() {
+  fltk::Window* w;
+   {fltk::Window* o = namespace_panel = new fltk::Window(300, 120, "namespace");
+    w = o;
+    o->shortcut(0xff1b);
+    o->begin();
+     {fltk::Input* o = namespace_input = new fltk::Input(10, 21, 281, 20, "default is  \"fltk\", can be declared at the root or  imbricated into another\
+ namespace");
+      o->align(fltk::ALIGN_BOTTOM|fltk::ALIGN_LEFT|fltk::ALIGN_WRAP);
+      o->when(fltk::WHEN_NEVER);
+    }
+     {fltk::ReturnButton* o = namespace_panel_ok = new fltk::ReturnButton(120, 92, 80, 20, "OK");
+      o->shortcut(0xff0d);
+      ((fltk::Window*)(o->parent()))->hotspot(o);
+    }
+     {fltk::Button* o = namespace_panel_cancel = new fltk::Button(210, 92, 80, 20, "Cancel");
+      o->shortcut(0xff1b);
+    }
+    o->end();
+    o->resizable(o);
+  }
+  return  w;
+}
+
+fltk::DoubleBufferWindow *comment_panel=(fltk::DoubleBufferWindow *)0;
+
+static void cb_comment_panel(fltk::DoubleBufferWindow* o, void*) {
+  o->hide();
+}
+
+fltk::MultiLineInput *comment_input=(fltk::MultiLineInput *)0;
+
+fltk::ReturnButton *comment_panel_ok=(fltk::ReturnButton *)0;
+
+fltk::Button *comment_panel_cancel=(fltk::Button *)0;
+
+static void cb_comment_panel_cancel(fltk::Button*, void*) {
+  comment_panel->hide();
+}
+
+fltk::LightButton *comment_in_source=(fltk::LightButton *)0;
+
+fltk::LightButton *comment_in_header=(fltk::LightButton *)0;
+
+fltk::PopupMenu *comment_predefined=(fltk::PopupMenu *)0;
+
+fltk::Button *comment_load=(fltk::Button *)0;
+
+fltk::DoubleBufferWindow* make_comment_panel() {
+  fltk::DoubleBufferWindow* w;
+   {fltk::DoubleBufferWindow* o = comment_panel = new fltk::DoubleBufferWindow(550, 318, "Comment Properties");
+    w = o;
+    o->type(241);
+    o->labelsize(11);
+    o->shortcut(0xff1b);
+    o->callback((fltk::Callback*)cb_comment_panel);
+    o->begin();
+     {fltk::MultiLineInput* o = comment_input = new fltk::MultiLineInput(110, 10, 430, 265, "input");
+      o->type(4);
+      o->align(fltk::ALIGN_BOTTOM|fltk::ALIGN_LEFT);
+      o->when(fltk::WHEN_NEVER);
+      o->when(fltk::WHEN_ENTER_KEY_CHANGED|fltk::WHEN_RELEASE);
+    }
+     {fltk::Group* o = new fltk::Group(0, -1, 550, 318);
+      o->labelsize(11);
+      o->begin();
+       {fltk::ReturnButton* o = comment_panel_ok = new fltk::ReturnButton(371, 286, 80, 21, "OK");
+        o->shortcut(0xff0d);
+        ((fltk::Window*)(o->parent()->parent()))->hotspot(o);
+      }
+       {fltk::Button* o = comment_panel_cancel = new fltk::Button(460, 286, 79, 21, "Cancel");
+        o->shortcut(0xff1b);
+        o->callback((fltk::Callback*)cb_comment_panel_cancel);
+      }
+       {fltk::InvisibleBox* o = new fltk::InvisibleBox(110, 285, 244, 21);
+        o->labelsize(11);
+        fltk::Group::current()->resizable(o);
+      }
+      o->end();
+    }
+     {fltk::Group* o = new fltk::Group(7, 10, 103, 291);
+      o->set_vertical();
+      o->labelsize(11);
+      o->begin();
+       {fltk::LightButton* o = comment_in_source = new fltk::LightButton(0, 10, 90, 20, "In Source");
+        o->labelsize(11);
+        o->when(fltk::WHEN_NEVER);
+        o->tooltip("Put the comment into the source (.cxx) file.");
+      }
+       {fltk::LightButton* o = comment_in_header = new fltk::LightButton(0, 40, 90, 20, "In Header");
+        o->labelsize(11);
+        o->when(fltk::WHEN_NEVER);
+        o->tooltip("Put the comment into the header (.h) file.");
+      }
+       {fltk::PopupMenu* o = comment_predefined = new fltk::PopupMenu(0, 69, 90, 20, "Predefined");
+        o->labelsize(11);
+        o->textsize(11);
+      }
+       {fltk::Button* o = comment_load = new fltk::Button(0, 100, 90, 20, "Import...");
+        o->labelsize(11);
+      }
+       {fltk::InvisibleBox* o = new fltk::InvisibleBox(0, 132, 93, 131);
+        o->set_vertical();
+        o->labelsize(11);
+        fltk::Group::current()->resizable(o);
+      }
+      o->end();
+      fltk::Group::current()->resizable(o);
+    }
+    o->end();
+    o->size_range(320, 180);
+    o->set_modal();
+  }
+  return  w;
+}
+
+fltk::DoubleBufferWindow *sourceview_panel=(fltk::DoubleBufferWindow *)0;
+
+fltk::TabGroup *sv_tab=(fltk::TabGroup *)0;
+
+CodeViewer *sv_source=(CodeViewer *)0;
+
+CodeViewer *sv_header=(CodeViewer *)0;
+
+fltk::LightButton *sv_autorefresh=(fltk::LightButton *)0;
+
+fltk::LightButton *sv_autoposition=(fltk::LightButton *)0;
+
+fltk::DoubleBufferWindow* make_sourceview() {
+  fltk::DoubleBufferWindow* w;
+   {fltk::DoubleBufferWindow* o = sourceview_panel = new fltk::DoubleBufferWindow(520, 483, "Code View");
+    w = o;
+    o->type(241);
+    o->shortcut(0xff1b);
+    o->callback((fltk::Callback*)toggle_sourceview_cb);
+    o->begin();
+     {fltk::TabGroup* o = sv_tab = new fltk::TabGroup(10, 10, 500, 433);
+      o->selection_color((fltk::Color)4);
+      o->labelcolor((fltk::Color)7);
+      o->callback((fltk::Callback*)update_sourceview_position_cb);
+      o->begin();
+       {fltk::Group* o = new fltk::Group(0, 25, 500, 408, "Source");
+        o->hide();
+        o->begin();
+         {CodeViewer* o = sv_source = new CodeViewer(10, 15, 480, 383);
+          o->textfont(fltk::COURIER);
+          o->textsize(11);
+          fltk::Group::current()->resizable(o);
+        }
+        o->end();
+        fltk::Group::current()->resizable(o);
+      }
+       {fltk::Group* o = new fltk::Group(0, 25, 500, 408, "Header");
+        o->begin();
+         {CodeViewer* o = sv_header = new CodeViewer(10, 15, 480, 383);
+          o->textfont(fltk::COURIER);
+          o->textsize(11);
+          fltk::Group::current()->resizable(o);
+        }
+        o->end();
+      }
+      o->end();
+      fltk::Group::current()->resizable(o);
+    }
+     {fltk::Group* o = new fltk::Group(10, 453, 500, 20);
+      o->begin();
+       {fltk::Button* o = new fltk::Button(0, 0, 61, 20, "Refresh");
+        o->labelsize(11);
+        o->callback((fltk::Callback*)update_sourceview_cb);
+      }
+       {fltk::LightButton* o = sv_autorefresh = new fltk::LightButton(66, 0, 91, 20, "Auto-Refresh");
+        o->labelsize(11);
+        o->callback((fltk::Callback*)update_sourceview_cb);
+      }
+       {fltk::LightButton* o = sv_autoposition = new fltk::LightButton(162, 0, 89, 20, "Auto-Position");
+        o->labelsize(11);
+      }
+       {fltk::Button* o = new fltk::Button(450, 0, 50, 20, "Close");
+        o->labelsize(11);
+        o->callback((fltk::Callback*)toggle_sourceview_b_cb);
+      }
+       {fltk::InvisibleBox* o = new fltk::InvisibleBox(255, 0, 190, 20);
+        fltk::Group::current()->resizable(o);
+      }
+      o->end();
+    }
+    o->end();
+  }
+  return  w;
+}

Added: branches/branch-3.0-2011/fluid2/function_panel.fl
===================================================================
--- branches/branch-3.0-2011/fluid2/function_panel.fl	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/function_panel.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,369 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.1000 
+images_dir ./ 
+header_name {.h} 
+code_name {.cxx} 
+gridx 10 
+gridy 11 
+snap 3
+Function {make_function_panel()} {open
+} {
+  {fltk::Window} function_panel {
+    label {function/method}
+    xywh {488 153 400 208} resizable modal visible
+  } {
+    {fltk::CheckButton} f_public_button {
+      label public
+      xywh {13 8 95 25} when NEVER
+    }
+    {fltk::CheckButton} f_c_button {
+      label {C declaration}
+      xywh {129 8 133 25}
+    }
+    {fltk::Input} f_name_input {
+      label {Name(args): (blank for main())}
+      xywh {13 55 237 22} align 5 when NEVER
+    }
+    {fltk::Input} f_attributes_input {
+      label {Attributes (virtual, static, __declspec, ...)}
+      xywh {13 99 237 22} align 5 when NEVER
+    }
+    {fltk::Input} f_return_type_input {
+      label {Return Type: (blank to return outermost widget)}
+      xywh {13 143 377 22} align 5 when NEVER
+    }
+    {fltk::ReturnButton} f_panel_ok {
+      label OK
+      xywh {220 176 80 22} hotspot box UP_BOX
+    }
+    {fltk::Button} f_panel_cancel {
+      label Cancel
+      xywh {310 176 80 22} box UP_BOX buttonbox NO_BOX shortcut 0xff1b
+    }
+    {fltk::Choice} {} {
+      label {attr:} open
+      xywh {280 99 110 22}
+    } {
+      {fltk::Item} {} {
+        label static
+        callback {f_attributes_input->value("static");}
+        }
+      {fltk::Item} {} {
+        label virtual
+        callback {f_attributes_input->value("virtual");}
+        }
+      {fltk::Item} {} {
+        label const
+        callback {f_attributes_input->value("const");}
+        }
+      {fltk::Item} {} {
+        label inline
+        callback {f_attributes_input->value("inline");}
+        buttonbox THIN_UP_BOX
+      }
+      {fltk::Item} {} {
+        label export
+        callback {f_attributes_input->value("export");}
+        buttonbox THIN_UP_BOX
+      }
+      {fltk::Item} {} {
+        label {__declspec(dllexport)}
+        callback {f_attributes_input->value("__declspec(dllexport)");}
+        vertical buttonbox THIN_UP_BOX
+      }
+      {fltk::Item} {} {
+        label {__declspec(dllimport)}
+        callback {f_attributes_input->value("__declspec(dllimport)");}
+        vertical buttonbox THIN_UP_BOX
+      }
+      {fltk::Item} {} {
+        label __stdcall
+        callback {f_attributes_input->value("__stdcall");}
+        vertical buttonbox THIN_UP_BOX
+      }
+    }
+    {fltk::Button} {} {
+      label {Set main()}
+      callback {f_name_input->value("");
+f_attributes_input->value("");
+f_return_type_input->value("");
+f_public_button->value(1);
+f_c_button->value(0);}
+      xywh {280 55 110 22} box UP_BOX buttonbox DOWN_BOX
+    }
+  }
+} 
+
+Function {make_code_panel()} {open
+} {
+  {fltk::Window} code_panel {
+    label code
+    callback {o->resizable(code_input);}
+    xywh {599 205 290 175} resizable modal visible
+  } {
+    {fltk::Input} code_input {
+      xywh {6 5 280 138} type Multiline align 0 when NEVER resizable
+      extra_code {\#include "CodeEditor.h"}
+      class CodeEditor
+    }
+    {fltk::Group} {} {open
+      xywh {6 148 279 22}
+    } {
+      {fltk::InvisibleBox} {} {
+        xywh {0 0 99 22} resizable
+      }
+      {fltk::ReturnButton} code_panel_ok {
+        label OK
+        xywh {109 0 80 22} hotspot
+      }
+      {fltk::Button} code_panel_cancel {
+        label Cancel
+        xywh {199 0 80 22} shortcut 0xff1b
+      }
+    }
+  }
+} 
+
+Function {make_codeblock_panel()} {open
+} {
+  {fltk::Window} codeblock_panel {
+    label codeblock open
+    xywh {539 536 290 131} resizable modal visible
+  } {
+    {fltk::Input} code_before_input {
+      label {Conditional code block}
+      xywh {10 22 270 22} align 5 when NEVER
+    }
+    {fltk::Input} code_after_input {
+      label {"{...child code...}" is inserted here}
+      xywh {10 65 270 23} align 5 when NEVER
+    }
+    {fltk::ReturnButton} codeblock_panel_ok {
+      label OK
+      xywh {110 99 80 22} hotspot
+    }
+    {fltk::Button} codeblock_panel_cancel {
+      label Cancel
+      xywh {200 99 80 22} shortcut 0xff1b
+    }
+  }
+} 
+
+Function {make_declblock_panel()} {open
+} {
+  {fltk::Window} declblock_panel {
+    label {declaration block} open
+    xywh {448 327 290 131} resizable modal visible
+  } {
+    {fltk::Input} decl_before_input {
+      label {Block start}
+      xywh {10 22 270 22} align 5 when NEVER
+    }
+    {fltk::Input} decl_after_input {
+      label {"\\n...child code...\\n" is inserted here}
+      xywh {10 66 270 22} align 5 when NEVER
+    }
+    {fltk::ReturnButton} declblock_panel_ok {
+      label OK
+      xywh {110 99 80 22} hotspot
+    }
+    {fltk::Button} declblock_panel_cancel {
+      label Cancel
+      xywh {200 99 80 22} shortcut 0xff1b
+    }
+  }
+} 
+
+Function {make_decl_panel()} {open
+} {
+  {fltk::Window} decl_panel {
+    label declaration open
+    xywh {389 398 290 175} resizable visible
+  } {
+    {fltk::CheckButton} decl_public_button {
+      label public
+      xywh {10 11 65 22} when NEVER
+    }
+    {fltk::Input} decl_input {
+      label {can be any declartion, like "int x;",
+an external symbol like "extern int foo();",
+a \#directive like "\#include <foo.h>",
+or a comment like "//foo" or "/*foo*/"}
+      xywh {10 44 270 22} align 6 when NEVER
+    }
+    {fltk::ReturnButton} decl_panel_ok {
+      label OK
+      xywh {110 143 80 22} hotspot
+    }
+    {fltk::Button} decl_panel_cancel {
+      label Cancel
+      xywh {200 143 80 22} shortcut 0xff1b
+    }
+  }
+} 
+
+Function {make_class_panel()} {open
+} {
+  {fltk::Window} class_panel {
+    label class open
+    xywh {356 346 280 164} resizable modal visible
+  } {
+    {fltk::CheckButton} c_public_button {
+      label public
+      xywh {10 11 65 22} when NEVER
+    }
+    {fltk::Input} c_name_input {
+      label {name:}
+      xywh {10 44 260 22} align 5 when NEVER
+    }
+    {fltk::Input} c_subclass_input {
+      label {subclass of (text between : and \{)}
+      xywh {10 89 260 21} align 5 when NEVER
+    }
+    {fltk::ReturnButton} c_panel_ok {
+      label OK
+      xywh {100 132 80 22} hotspot
+    }
+    {fltk::Button} c_panel_cancel {
+      label Cancel
+      xywh {190 132 80 22} shortcut 0xff1b
+    }
+  }
+} 
+
+Function {make_namespace_panel()} {open
+} {
+  {fltk::Window} namespace_panel {
+    label namespace open
+    xywh {688 486 300 120} resizable visible
+  } {
+    {fltk::Input} namespace_input {
+      label {default is  "fltk", can be declared at the root or  imbricated into another namespace}
+      xywh {10 21 281 20} align 134 when NEVER
+    }
+    {fltk::ReturnButton} namespace_panel_ok {
+      label OK
+      xywh {120 92 80 20} hotspot
+    }
+    {fltk::Button} namespace_panel_cancel {
+      label Cancel
+      xywh {210 92 80 20} shortcut 0xff1b
+    }
+  }
+} 
+
+Function {make_comment_panel()} {open
+} {
+  {fltk::Window} comment_panel {
+    label {Comment Properties}
+    callback {o->hide();} open
+    xywh {409 235 550 318} type Double resizable labelsize 11
+    extra_code {o->size_range(320, 180);} modal visible
+  } {
+    {fltk::Input} comment_input {
+      label input
+      xywh {110 10 430 265} type Multiline align 6 when NEVER
+      extra_code {o->when(fltk::WHEN_ENTER_KEY_CHANGED|fltk::WHEN_RELEASE);}
+    }
+    {fltk::Group} {} {open
+      xywh {0 -1 550 318} labelsize 11
+    } {
+      {fltk::ReturnButton} comment_panel_ok {
+        label OK
+        xywh {371 286 80 21} hotspot
+      }
+      {fltk::Button} comment_panel_cancel {
+        label Cancel
+        callback {comment_panel->hide();}
+        xywh {460 286 79 21} shortcut 0xff1b
+      }
+      {fltk::InvisibleBox} {} {
+        xywh {110 285 244 21} resizable labelsize 11
+      }
+    }
+    {fltk::Group} {} {open
+      xywh {7 10 103 291} resizable labelsize 11
+    } {
+      {fltk::LightButton} comment_in_source {
+        label {In Source}
+        tooltip {Put the comment into the source (.cxx) file.}
+        xywh {0 10 90 20} when NEVER labelsize 11
+      }
+      {fltk::LightButton} comment_in_header {
+        label {In Header}
+        tooltip {Put the comment into the header (.h) file.}
+        xywh {0 40 90 20} when NEVER labelsize 11
+      }
+      {fltk::PopupMenu} comment_predefined {
+        label Predefined open
+        xywh {0 69 90 20} labelsize 11 textsize 11
+      } {}
+      {fltk::Button} comment_load {
+        label {Import...}
+        xywh {0 100 90 20} labelsize 11
+      }
+      {fltk::InvisibleBox} {} {
+        xywh {0 132 93 131} resizable labelsize 11
+      }
+    }
+  }
+} 
+
+Function {make_sourceview()} {open
+} {
+  {fltk::Window} sourceview_panel {
+    label {Code View}
+    callback toggle_sourceview_cb open
+    xywh {804 133 520 483} type Double resizable visible
+  } {
+    {fltk::TabGroup} sv_tab {
+      callback update_sourceview_position_cb open
+      xywh {10 10 500 433} resizable selection_color 4 labelcolor 7
+    } {
+      {fltk::Group} {} {
+        label Source
+        xywh {0 25 500 408} hide resizable
+      } {
+        {fltk::TextEditor} sv_source {
+          xywh {10 15 480 383} resizable textfont 4 textsize 11
+          class CodeViewer
+        }
+      }
+      {fltk::Group} {} {
+        label Header open
+        xywh {0 25 500 408}
+      } {
+        {fltk::TextEditor} sv_header {selected
+          xywh {10 15 480 383} resizable textfont 4 textsize 11
+          class CodeViewer
+        }
+      }
+    }
+    {fltk::Group} {} {open
+      xywh {10 453 500 20}
+    } {
+      {fltk::Button} {} {
+        label Refresh
+        callback update_sourceview_cb
+        xywh {0 0 61 20} labelsize 11
+      }
+      {fltk::LightButton} sv_autorefresh {
+        label {Auto-Refresh}
+        xywh {66 0 91 20} labelsize 11
+        extra_code {o->callback((fltk::Callback*)update_sourceview_cb);}
+      }
+      {fltk::LightButton} sv_autoposition {
+        label {Auto-Position}
+        xywh {162 0 89 20} labelsize 11
+      }
+      {fltk::Button} {} {
+        label Close
+        callback toggle_sourceview_b_cb
+        xywh {450 0 50 20} labelsize 11
+      }
+      {fltk::InvisibleBox} {} {
+        xywh {255 0 190 20} resizable
+      }
+    }
+  }
+} 

Added: branches/branch-3.0-2011/fluid2/function_panel.h
===================================================================
--- branches/branch-3.0-2011/fluid2/function_panel.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/function_panel.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,84 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#ifndef function_panel_h
+#define function_panel_h
+#include <fltk/Window.h>
+extern fltk::Window* function_panel;
+#include <fltk/CheckButton.h>
+extern fltk::CheckButton* f_public_button;
+extern fltk::CheckButton* f_c_button;
+#include <fltk/Input.h>
+extern fltk::Input* f_name_input;
+extern fltk::Input* f_attributes_input;
+extern fltk::Input* f_return_type_input;
+#include <fltk/ReturnButton.h>
+extern fltk::ReturnButton* f_panel_ok;
+#include <fltk/Button.h>
+extern fltk::Button* f_panel_cancel;
+#include <fltk/Choice.h>
+#include <fltk/Item.h>
+fltk::Window* make_function_panel();
+extern fltk::Window* code_panel;
+#include "CodeEditor.h"
+extern CodeEditor* code_input;
+#include <fltk/Group.h>
+#include <fltk/InvisibleBox.h>
+extern fltk::ReturnButton* code_panel_ok;
+extern fltk::Button* code_panel_cancel;
+fltk::Window* make_code_panel();
+extern fltk::Window* codeblock_panel;
+extern fltk::Input* code_before_input;
+extern fltk::Input* code_after_input;
+extern fltk::ReturnButton* codeblock_panel_ok;
+extern fltk::Button* codeblock_panel_cancel;
+fltk::Window* make_codeblock_panel();
+extern fltk::Window* declblock_panel;
+extern fltk::Input* decl_before_input;
+extern fltk::Input* decl_after_input;
+extern fltk::ReturnButton* declblock_panel_ok;
+extern fltk::Button* declblock_panel_cancel;
+fltk::Window* make_declblock_panel();
+extern fltk::Window* decl_panel;
+extern fltk::CheckButton* decl_public_button;
+extern fltk::Input* decl_input;
+extern fltk::ReturnButton* decl_panel_ok;
+extern fltk::Button* decl_panel_cancel;
+fltk::Window* make_decl_panel();
+extern fltk::Window* class_panel;
+extern fltk::CheckButton* c_public_button;
+extern fltk::Input* c_name_input;
+extern fltk::Input* c_subclass_input;
+extern fltk::ReturnButton* c_panel_ok;
+extern fltk::Button* c_panel_cancel;
+fltk::Window* make_class_panel();
+extern fltk::Window* namespace_panel;
+extern fltk::Input* namespace_input;
+extern fltk::ReturnButton* namespace_panel_ok;
+extern fltk::Button* namespace_panel_cancel;
+fltk::Window* make_namespace_panel();
+#include <fltk/DoubleBufferWindow.h>
+extern fltk::DoubleBufferWindow* comment_panel;
+#include <fltk/MultiLineInput.h>
+extern fltk::MultiLineInput* comment_input;
+extern fltk::ReturnButton* comment_panel_ok;
+extern fltk::Button* comment_panel_cancel;
+#include <fltk/LightButton.h>
+extern fltk::LightButton* comment_in_source;
+extern fltk::LightButton* comment_in_header;
+#include <fltk/PopupMenu.h>
+extern fltk::PopupMenu* comment_predefined;
+extern fltk::Button* comment_load;
+fltk::DoubleBufferWindow* make_comment_panel();
+extern void toggle_sourceview_cb(fltk::DoubleBufferWindow*, void*);
+extern fltk::DoubleBufferWindow* sourceview_panel;
+#include <fltk/TabGroup.h>
+extern void update_sourceview_position_cb(fltk::TabGroup*, void*);
+extern fltk::TabGroup* sv_tab;
+extern CodeViewer* sv_source;
+extern CodeViewer* sv_header;
+extern void update_sourceview_cb(fltk::Button*, void*);
+extern fltk::LightButton* sv_autorefresh;
+extern fltk::LightButton* sv_autoposition;
+extern void toggle_sourceview_b_cb(fltk::Button*, void*);
+fltk::DoubleBufferWindow* make_sourceview();
+#endif

Added: branches/branch-3.0-2011/fluid2/image_file_panel.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/image_file_panel.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/image_file_panel.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,56 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#include "image_file_panel.h"
+
+fltk::Window *images_dir_window=(fltk::Window *)0;
+
+static void cb_images_dir_window(fltk::Window*, void*) {
+  images_dir_window->hide();
+  modal=0;
+}
+
+fltk::Input *images_dir_input=(fltk::Input *)0;
+
+static void cb_Browse(fltk::Button*, void*) {
+  browse_dir_cb();
+}
+
+static void cb_OK(fltk::ReturnButton*, void*) {
+  images_dir_window->hide();
+  modal=0;
+}
+
+static void cb_Cancel(fltk::Button*, void*) {
+  images_dir_window->hide();
+  modal=0; cancel=1;
+}
+
+fltk::Window* make_images_dir_window() {
+  fltk::Window* w;
+   {fltk::Window* o = images_dir_window = new fltk::Window(310, 98, "Images root directory");
+    w = o;
+    o->callback((fltk::Callback*)cb_images_dir_window);
+    o->begin();
+     {fltk::Input* o = images_dir_input = new fltk::Input(10, 22, 220, 22);
+      ((fltk::Window*)(o->parent()))->hotspot(o);
+    }
+     {fltk::Button* o = new fltk::Button(230, 22, 70, 22, "Browse ...");
+      o->callback((fltk::Callback*)cb_Browse);
+    }
+     {fltk::Widget* o = new fltk::Widget(10, 44, 220, 16, "(relative to the location of the .fl file)");
+      o->box(fltk::NO_BOX);
+      o->labelsize(10);
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE|fltk::ALIGN_WRAP);
+    }
+     {fltk::ReturnButton* o = new fltk::ReturnButton(150, 66, 70, 22, "OK");
+      o->shortcut(0xff0d);
+      o->callback((fltk::Callback*)cb_OK);
+    }
+     {fltk::Button* o = new fltk::Button(230, 66, 70, 22, "Cancel");
+      o->callback((fltk::Callback*)cb_Cancel);
+    }
+    o->end();
+    o->resizable(o);
+  }
+  return  w;
+}

Added: branches/branch-3.0-2011/fluid2/image_file_panel.fl
===================================================================
--- branches/branch-3.0-2011/fluid2/image_file_panel.fl	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/image_file_panel.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,43 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.0100 
+images_dir ./ 
+do_not_include_H_from_C 
+header_name {.h} 
+code_name {.cxx} 
+gridx 10 
+gridy 11 
+snap 3
+Function {make_images_dir_window()} {open
+} {
+  {fltk::Window} images_dir_window {
+    label {Images root directory}
+    callback {images_dir_window->hide();
+modal=0;} open
+    xywh {409 202 310 98} resizable visible
+  } {
+    {fltk::Input} images_dir_input {
+      xywh {10 22 220 22} hotspot
+    }
+    {fltk::Button} {} {
+      label {Browse ...}
+      callback {browse_dir_cb();}
+      private xywh {230 22 70 22}
+    }
+    {fltk::Widget} {} {
+      label {(relative to the location of the .fl file)}
+      xywh {10 44 220 16} align 181 box NO_BOX labelsize 10
+    }
+    {fltk::ReturnButton} {} {
+      label OK
+      callback {images_dir_window->hide();
+modal=0;}
+      private xywh {150 66 70 22} shortcut 0xff0d
+    }
+    {fltk::Button} {} {
+      label Cancel
+      callback {images_dir_window->hide();
+modal=0; cancel=1;}
+      private xywh {230 66 70 22}
+    }
+  }
+} 

Added: branches/branch-3.0-2011/fluid2/image_file_panel.h
===================================================================
--- branches/branch-3.0-2011/fluid2/image_file_panel.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/image_file_panel.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,13 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#ifndef image_file_panel_h
+#define image_file_panel_h
+#include <fltk/Window.h>
+extern fltk::Window* images_dir_window;
+#include <fltk/Input.h>
+extern fltk::Input* images_dir_input;
+#include <fltk/Button.h>
+#include <fltk/Widget.h>
+#include <fltk/ReturnButton.h>
+fltk::Window* make_images_dir_window();
+#endif

Added: branches/branch-3.0-2011/fluid2/makedepend
===================================================================

Added: branches/branch-3.0-2011/fluid2/template_panel.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/template_panel.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/template_panel.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,165 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#include "template_panel.h"
+// Code for //\n// "$Id$"\n//\n// FLUID template support for ...
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <fltk/string.h>
+#include <fltk/events.h>
+#include <fltk/filename.h>
+#include <fltk/ask.h>
+#include <fltk/SharedImage.h>
+#include "PrefsData.h"
+#if defined(WIN32) && !defined(__CYGWIN__)
+#include <io.h>
+#else
+#include <unistd.h>
+#endif // WIN32 && !__CYGWIN__
+
+fltk::DoubleBufferWindow *template_panel=(fltk::DoubleBufferWindow *)0;
+
+static void cb_template_panel(fltk::DoubleBufferWindow*, void*) {
+  fltk::SharedImage *img = (fltk::SharedImage *)template_preview->image();
+  if (img) img->remove();
+  template_preview->image((fltk::Symbol*)0);
+  
+  template_browser->deselect();
+  template_name->value("");
+  template_instance->value("");
+  template_panel->hide();
+}
+
+fltk::Browser *template_browser=(fltk::Browser *)0;
+
+fltk::InvisibleBox *template_preview=(fltk::InvisibleBox *)0;
+
+fltk::Input *template_name=(fltk::Input *)0;
+
+static void cb_template_name(fltk::Input*, void*) {
+  if (strlen(template_name->value())) {
+    template_submit->activate();
+    if (fltk::event_key() == fltk::KeypadEnter || fltk::event_key() == fltk::ReturnKey) template_panel->hide();
+  } else template_submit->deactivate();
+}
+
+fltk::Input *template_instance=(fltk::Input *)0;
+
+fltk::Button *template_delete=(fltk::Button *)0;
+
+static void cb_Cancel(fltk::Button*, void*) {
+  fltk::SharedImage *img = (fltk::SharedImage *)template_preview->image();
+  if (img) img->remove();
+  template_preview->image((fltk::Symbol*)0);
+  
+  template_browser->deselect();
+  template_name->value("");
+  template_instance->value("");
+  template_panel->hide();
+}
+
+fltk::ReturnButton *template_submit=(fltk::ReturnButton *)0;
+
+static void cb_template_submit(fltk::ReturnButton*, void*) {
+  fltk::SharedImage *img = 
+  	 (fltk::SharedImage *)template_preview->image();
+  if (img) img->remove();
+  template_preview->image((fltk::Symbol*)0);
+  
+  template_panel->hide();
+}
+
+fltk::DoubleBufferWindow* make_template_panel() {
+  fltk::DoubleBufferWindow* w;
+   {fltk::DoubleBufferWindow* o = template_panel = new fltk::DoubleBufferWindow(460, 355, "New/Save Template");
+    w = o;
+    o->type(241);
+    o->shortcut(0xff1b);
+    o->callback((fltk::Callback*)cb_template_panel);
+    o->begin();
+     {fltk::Browser* o = template_browser = new fltk::Browser(10, 28, 180, 250, "Available Templates:");
+      o->set_vertical();
+      o->labelfont(fltk::HELVETICA_BOLD);
+      o->callback((fltk::Callback*)template_browser_cb);
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+      o->when(fltk::WHEN_CHANGED);
+    }
+     {fltk::InvisibleBox* o = template_preview = new fltk::InvisibleBox(200, 28, 250, 250);
+      o->box(fltk::THIN_DOWN_BOX);
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_CLIP);
+      fltk::Group::current()->resizable(o);
+    }
+     {fltk::Input* o = template_name = new fltk::Input(124, 288, 326, 25, "Template Name:");
+      o->labelfont(fltk::HELVETICA_BOLD);
+      o->textfont(fltk::COURIER);
+      o->callback((fltk::Callback*)cb_template_name);
+      o->when(fltk::WHEN_NEVER);
+    }
+     {fltk::Input* o = template_instance = new fltk::Input(124, 288, 326, 25, "Instance Name:");
+      o->labelfont(fltk::HELVETICA_BOLD);
+      o->textfont(fltk::COURIER);
+      o->hide();
+    }
+     {fltk::Group* o = new fltk::Group(10, 323, 440, 25);
+      o->begin();
+       {fltk::Button* o = template_delete = new fltk::Button(0, 0, 133, 25, "Delete Template");
+        o->callback((fltk::Callback*)template_delete_cb);
+      }
+       {fltk::InvisibleBox* o = new fltk::InvisibleBox(143, 0, 126, 25);
+        fltk::Group::current()->resizable(o);
+      }
+       {fltk::Button* o = new fltk::Button(279, 0, 72, 25, "Cancel");
+        o->callback((fltk::Callback*)cb_Cancel);
+      }
+       {fltk::ReturnButton* o = template_submit = new fltk::ReturnButton(361, 0, 79, 25, "Save");
+        o->shortcut(0xff0d);
+        o->callback((fltk::Callback*)cb_template_submit);
+      }
+      o->end();
+    }
+    o->end();
+    o->set_modal();
+  }
+  return  w;
+}
+
+void template_clear() {
+  // in fltk2 no need to delete label because they have the COPIED 
+  // internal flags set so that it will delete automatically on destruction
+  template_browser->deselect();
+  template_browser->clear();
+}
+
+void template_load() {
+  int i;
+  char name[1024], filename[1024], path[1024], *ptr;
+  struct dirent **files;
+  int num_files;
+  
+  prefs.getUserdataPath(path, sizeof(path));
+  strlcat(path, "templates", sizeof(path));
+  
+  num_files = fltk::filename_list(path, &files);
+  
+  for (i = 0; i < num_files; i ++) {
+    if (fltk::filename_match(files[i]->d_name, "*.fl")) {
+      // Format the name as the filename with "_" replaced with " "
+      // and without the trailing ".fl"...
+      strlcpy(name, files[i]->d_name, sizeof(name));
+      *strstr(name, ".fl") = '\0';
+  
+      for (ptr = name; *ptr; ptr ++) {
+        if (*ptr == '_') *ptr = ' ';
+      }
+  
+      // Add the template to the browser...
+      snprintf(filename, sizeof(filename), "%s/%s", path, files[i]->d_name);
+      template_browser->add(name, strdup(filename));
+    }
+  
+    free(files[i]);
+  }
+  
+  if (num_files > 0) free(files);
+}
+// Code for //\n// End of "$Id$".\n//

Added: branches/branch-3.0-2011/fluid2/template_panel.fl
===================================================================
--- branches/branch-3.0-2011/fluid2/template_panel.fl	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/template_panel.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,179 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.0100 
+header_name {.h} 
+code_name {.cxx} 
+gridx 5 
+gridy 5 
+snap 3
+comment {//
+// "$Id$"
+//
+// FLUID template support 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
+//} {in_source in_header
+} 
+
+decl {\#include <stdio.h>} {selected
+} 
+
+decl {\#include <stdlib.h>} {selected
+} 
+
+decl {\#include <errno.h>} {} 
+
+decl {\#include <fltk/string.h>} {} 
+
+decl {\#include <fltk/events.h>} {} 
+
+decl {\#include <fltk/filename.h>} {} 
+
+decl {\#include <fltk/ask.h>} {} 
+
+decl {\#include <fltk/SharedImage.h>} {} 
+
+decl {\#include "PrefsData.h"} {} 
+
+declblock {\#if defined(WIN32) && !defined(__CYGWIN__)} {after {\#endif // WIN32 && !__CYGWIN__}
+} {
+  decl {\#include <io.h>} {}
+  decl {\#else} {}
+  decl {\#include <unistd.h>} {}
+} 
+
+Function {make_template_panel()} {open
+} {
+  {fltk::Window} template_panel {
+    label {New/Save Template}
+    callback {fltk::SharedImage *img = (fltk::SharedImage *)template_preview->image();
+if (img) img->remove();
+template_preview->image((fltk::Symbol*)0);
+
+template_browser->deselect();
+template_name->value("");
+template_instance->value("");
+template_panel->hide();} open
+    xywh {421 186 460 355} type Double resizable modal visible
+  } {
+    {fltk::Browser} template_browser {
+      label {Available Templates:}
+      callback template_browser_cb open
+      xywh {10 28 180 250} align 5 when CHANGED labelfont 1
+    } {}
+    {fltk::InvisibleBox} template_preview {
+      xywh {200 28 250 250} align 85 resizable box THIN_DOWN_BOX
+    }
+    {fltk::Input} template_name {
+      label {Template Name:}
+      callback {if (strlen(template_name->value())) {
+  template_submit->activate();
+  if (fltk::event_key() == fltk::KeypadEnter || fltk::event_key() == fltk::ReturnKey) template_panel->hide();
+} else template_submit->deactivate();}
+      xywh {124 288 326 25} when NEVER labelfont 1 textfont 4
+    }
+    {fltk::Input} template_instance {
+      label {Instance Name:}
+      xywh {124 288 326 25} hide labelfont 1 textfont 4
+    }
+    {fltk::Group} {} {open
+      xywh {10 323 440 25}
+    } {
+      {fltk::Button} template_delete {
+        label {Delete Template}
+        callback template_delete_cb
+        xywh {0 0 133 25}
+      }
+      {fltk::InvisibleBox} {} {
+        xywh {143 0 126 25} resizable
+      }
+      {fltk::Button} {} {
+        label Cancel
+        callback {fltk::SharedImage *img = (fltk::SharedImage *)template_preview->image();
+if (img) img->remove();
+template_preview->image((fltk::Symbol*)0);
+
+template_browser->deselect();
+template_name->value("");
+template_instance->value("");
+template_panel->hide();}
+        xywh {279 0 72 25}
+      }
+      {fltk::ReturnButton} template_submit {
+        label Save
+        callback {fltk::SharedImage *img = 
+	 (fltk::SharedImage *)template_preview->image();
+if (img) img->remove();
+template_preview->image((fltk::Symbol*)0);
+
+template_panel->hide();}
+        xywh {361 0 79 25} shortcut 0xff0d
+      }
+    }
+  }
+} 
+
+Function {template_clear()} {open return_type void
+} {
+  code {// in fltk2 no need to delete label because they have the COPIED 
+// internal flags set so that it will delete automatically on destruction
+template_browser->deselect();
+template_browser->clear();} {}
+} 
+
+Function {template_load()} {open return_type void
+} {
+  code {int i;
+char name[1024], filename[1024], path[1024], *ptr;
+struct dirent **files;
+int num_files;
+
+prefs.getUserdataPath(path, sizeof(path));
+strlcat(path, "templates", sizeof(path));
+
+num_files = fltk::filename_list(path, &files);
+
+for (i = 0; i < num_files; i ++) {
+  if (fltk::filename_match(files[i]->d_name, "*.fl")) {
+    // Format the name as the filename with "_" replaced with " "
+    // and without the trailing ".fl"...
+    strlcpy(name, files[i]->d_name, sizeof(name));
+    *strstr(name, ".fl") = '\\0';
+
+    for (ptr = name; *ptr; ptr ++) {
+      if (*ptr == '_') *ptr = ' ';
+    }
+
+    // Add the template to the browser...
+    snprintf(filename, sizeof(filename), "%s/%s", path, files[i]->d_name);
+    template_browser->add(name, strdup(filename));
+  }
+
+  free(files[i]);
+}
+
+if (num_files > 0) free(files);} {}
+} 
+
+comment {//
+// End of "$Id$".
+//} {in_source in_header
+} 

Added: branches/branch-3.0-2011/fluid2/template_panel.h
===================================================================
--- branches/branch-3.0-2011/fluid2/template_panel.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/template_panel.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,26 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#ifndef template_panel_h
+#define template_panel_h
+// Header for //\n// "$Id$"\n//\n// FLUID template support for ...
+#include <fltk/DoubleBufferWindow.h>
+extern fltk::DoubleBufferWindow* template_panel;
+#include <fltk/Browser.h>
+extern void template_browser_cb(fltk::Browser*, void*);
+extern fltk::Browser* template_browser;
+#include <fltk/InvisibleBox.h>
+extern fltk::InvisibleBox* template_preview;
+#include <fltk/Input.h>
+extern fltk::Input* template_name;
+extern fltk::Input* template_instance;
+#include <fltk/Group.h>
+#include <fltk/Button.h>
+extern void template_delete_cb(fltk::Button*, void*);
+extern fltk::Button* template_delete;
+#include <fltk/ReturnButton.h>
+extern fltk::ReturnButton* template_submit;
+fltk::DoubleBufferWindow* make_template_panel();
+void template_clear();
+void template_load();
+// Header for //\n// End of "$Id$".\n//
+#endif

Added: branches/branch-3.0-2011/fluid2/undo.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/undo.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/undo.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,187 @@
+//
+// "$Id$"
+//
+// FLUID undo support 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
+//
+
+//#include <fltk/run.h>
+#include <fltk/Preferences.h>
+#include <fltk/string.h>
+#include <fltk/MenuBar.h>
+#include <fltk/Item.h>
+
+#include "PrefsData.h"
+#include "FluidType.h"
+#include "undo.h"
+
+#if defined(WIN32) && !defined(__CYGWIN__)
+#  include <io.h>
+#  include <windows.h>
+#  define getpid (int)GetCurrentProcessId
+// Visual C++ 2005 incorrectly displays a warning about the use of POSIX APIs
+// on Windows, which is supposed to be POSIX compliant...
+#  define unlink _unlink
+#else
+#  include <unistd.h>
+#endif // WIN32 && !__CYGWIN__
+
+
+extern fltk::Item*  undo_item[2];
+const int UNDO_ITEM=0;
+const int REDO_ITEM=1;
+
+//
+// This file implements an undo system using temporary files; ideally
+// we'd like to do this in memory, however the current data structures
+// and design aren't well-suited...  Instead, we save and restore
+// checkpoint files.
+//
+int Undo::current = 0;
+int Undo::last = 0;
+int Undo::max = 0;
+int Undo::save = -1;			// Last undo level that was saved
+char Undo::path[1024]="";
+bool Undo::paused=false;
+
+// Return the undo filename
+const char *Undo::filename(int level, char *buf, int bufsize) {
+
+  if (!path[0]) prefs.getUserdataPath(path, sizeof(path));
+  snprintf(buf, bufsize, "%sundo_%d_%d.fl", path, getpid(), level);
+  return buf;
+}
+
+void Undo::update_saved() {
+  if (modflag && current <= save) save = -1;
+  else if (!modflag) save = current;
+}
+
+// Redo menu callback
+void Undo::redo_cb(fltk::Widget *, void *) {
+  char	fname[1024];			// Undo checkpoint file
+  if (current >= last) return;
+
+  suspend();
+  if (!read_file(filename(current + 1, fname, sizeof(fname)), 0)) {
+    // Unable to read checkpoint file, don't redo...
+    resume();
+    return;
+  }
+
+  current ++;
+
+  // Update modified flag...
+  modflag = current != save;
+
+  // Update undo/redo menu items...
+  if (current >= last) undo_item[REDO_ITEM]->deactivate();
+  undo_item[UNDO_ITEM]->activate();
+}
+
+// Undo menu callback
+void Undo::undo_cb(fltk::Widget *, void *) {
+  char	fname[1024];			// Undo checkpoint file
+  
+  if (current <= 0) return;
+
+  if (current == last) {
+    write_file(filename(current, fname, sizeof(fname)));
+  }
+
+  suspend();
+  if (!read_file(filename(current - 1, fname, sizeof(fname)), 0)) {
+    // Unable to read checkpoint file, don't undo...
+    resume();
+    return;
+  }
+
+  current--;
+
+  // Update modified flag...
+  modflag = (current != save);
+
+  // Update undo/redo menu items...
+  if (current <= 0) undo_item[UNDO_ITEM]->deactivate();
+  undo_item[REDO_ITEM]->activate();
+  resume();
+}
+
+// Save current file to undo buffer
+void Undo::checkpoint() {
+  char	fname[1024];			// Undo checkpoint filename
+
+//  printf("undo_checkpoint(): current=%d, undo_paused=%d, modflag=%d\n",
+//         current, undo_paused, modflag);
+
+  // Don't checkpoint if undo_suspend() has been called...
+  if (paused) return;
+
+  // Save the current UI to a checkpoint file...
+  if (!write_file(filename (current, fname, sizeof(fname)))) {
+    // Don't attempt to do undo stuff if we can't write a checkpoint file...
+    perror(fname);
+    return;
+  }
+
+  // Update the saved level...
+  if (modflag && current <= save) save = -1;
+  else if (!modflag) save = current;
+
+  // Update the current undo level...
+  current ++;
+  last = current;
+  if (current > max) max = current;
+
+  // Enable the Undo and disable the Redo menu items...
+  undo_item[UNDO_ITEM]->activate();
+  undo_item[REDO_ITEM]->deactivate();
+}
+
+// Clear undo buffer
+void Undo::clear() {
+  char	fname[1024];			// Undo checkpoint filename
+
+  // Remove old checkpoint files...
+  for (int i = 0; i <= max; i ++) {
+    unlink(filename (i, fname, sizeof(fname)));
+  }
+
+  // Reset current, last, and save indices...
+  current = last = max = 0;
+  if (modflag) save = -1;
+  else save = 0;
+}
+
+// remove the last set checkpoint
+void Undo::remove_last() {
+    current --;    
+    last --;
+    if (current <=0)   
+	undo_item[UNDO_ITEM]->deactivate();
+
+}
+
+//
+// End of "$Id$".
+//

Added: branches/branch-3.0-2011/fluid2/undo.h
===================================================================
--- branches/branch-3.0-2011/fluid2/undo.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/undo.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,61 @@
+//
+// "$Id$"
+//
+// FLUID undo definitions 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 fluid_undo_h
+# define fluid_undo_h
+
+namespace fltk {class Widget;}
+
+class Undo {
+  static int  current;  	// Current undo level in buffer
+  static int  last;		// Last undo level in buffer
+  static int  save;		// Last undo level that was saved
+  static int  max;		// Maximum undo level used
+  static bool paused;		// Undo checkpointing paused?
+  static char path[1024];	// Undo path
+
+ public:
+
+  static void checkpoint();	// Save current file to undo buffer
+  static void clear();		// Clear undo buffer
+
+  static void resume()  {  paused = 0;}	// Resume undo checkpoints
+  static void suspend() {  paused = 1;}	// Suspend undo checkpoints
+  static void update_saved();	// Update the undo pos when saved
+
+  static const char *filename(int level, char *buf, int bufsize);
+  static void remove_last();
+
+  static void redo_cb(fltk::Widget *, void *);  // Redo menu callback
+  static void undo_cb(fltk::Widget *, void *);  // Undo menu callback
+};
+
+#endif // !undo_h
+
+//
+// End of "$Id$".
+//

Added: branches/branch-3.0-2011/fluid2/widget_panel.cxx
===================================================================
--- branches/branch-3.0-2011/fluid2/widget_panel.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/widget_panel.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,909 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#include "widget_panel.h"
+#include <fltk/xpmImage.h>
+#include "FluidType.h"
+#include "fluid_img.h"
+#include "undo.h"
+
+fltk::Window *widgetbin_panel=(fltk::Window *)0;
+
+fltk::Window* make_widgetbin() {
+  fltk::Window* w;
+   {fltk::Window* o = widgetbin_panel = new fltk::Window(520, 85, "Widget Bin");
+    w = o;
+    o->shortcut(0xff1b);
+    o->begin();
+     {fltk::Group* o = new fltk::Group(3, 3, 79, 79);
+      o->box(fltk::THIN_DOWN_BOX);
+      o->begin();
+       {fltk::Button* o = new fltk::Button(2, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("Function"));
+        o->tooltip("Function");
+        o->image(fluid_pixmap[7]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("class"));
+        o->tooltip("Class");
+        o->image(fluid_pixmap[12]);
+      }
+       {fltk::Button* o = new fltk::Button(52, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("comment"));
+        o->tooltip("Comment");
+        o->image(fluid_pixmap[46]);
+      }
+       {fltk::Button* o = new fltk::Button(2, 27, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("code"));
+        o->tooltip("Code");
+        o->image(fluid_pixmap[8]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 27, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("codeblock"));
+        o->tooltip("Code Block");
+        o->image(fluid_pixmap[9]);
+      }
+       {fltk::Button* o = new fltk::Button(52, 27, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("namespace"));
+        o->tooltip("Namespace");
+        o->image(fluid_pixmap[49]);
+      }
+       {fltk::Button* o = new fltk::Button(2, 52, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("decl"));
+        o->tooltip("Declaration");
+        o->image(fluid_pixmap[10]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 52, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("declblock"));
+        o->tooltip("Declaration Block");
+        o->image(fluid_pixmap[11]);
+      }
+       {fltk::Button* o = new fltk::Button(52, 52, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("WidgetClass"));
+        o->tooltip("Namespace");
+        o->image(fluid_pixmap[48]);
+      }
+      o->end();
+    }
+     {fltk::Group* o = new fltk::Group(83, 3, 79, 79);
+      o->box(fltk::THIN_DOWN_BOX);
+      o->begin();
+       {fltk::Button* o = new fltk::Button(2, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::Window"));
+        o->tooltip("Window");
+        o->image(fluid_pixmap[1]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::Group"));
+        o->tooltip("Group");
+        o->image(fluid_pixmap[6]);
+      }
+       {fltk::Button* o = new fltk::Button(52, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::PackedGroup"));
+        o->tooltip("Pack");
+        o->image(fluid_pixmap[22]);
+      }
+       {fltk::Button* o = new fltk::Button(2, 27, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::TabGroup"));
+        o->tooltip("Tabs");
+        o->image(fluid_pixmap[13]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 27, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::ScrollGroup"));
+        o->tooltip("Scroll");
+        o->image(fluid_pixmap[19]);
+      }
+       {fltk::Button* o = new fltk::Button(2, 52, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::TiledGroup"));
+        o->tooltip("Tile");
+        o->image(fluid_pixmap[20]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 52, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::WizardGroup"));
+        o->tooltip("Wizard");
+        o->image(fluid_pixmap[21]);
+      }
+       {fltk::Button* o = new fltk::Button(52, 27, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::StatusBarGroup"));
+        o->tooltip("StatusBarGroup");
+        o->image(fluid_pixmap[5]);
+      }
+      o->end();
+    }
+     {fltk::Group* o = new fltk::Group(163, 3, 54, 79);
+      o->set_vertical();
+      o->box(fltk::THIN_DOWN_BOX);
+      o->begin();
+       {fltk::Button* o = new fltk::Button(2, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::Button"));
+        o->tooltip("Button");
+        o->image(fluid_pixmap[2]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::ReturnButton"));
+        o->tooltip("Return Button");
+        o->image(fluid_pixmap[23]);
+      }
+       {fltk::Button* o = new fltk::Button(2, 27, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::LightButton"));
+        o->tooltip("Light Button");
+        o->image(fluid_pixmap[24]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 27, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::RepeatButton"));
+        o->tooltip("Repeat Button");
+        o->image(fluid_pixmap[25]);
+      }
+       {fltk::Button* o = new fltk::Button(2, 52, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::CheckButton"));
+        o->tooltip("Check Button");
+        o->image(fluid_pixmap[3]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 52, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::RadioButton"));
+        o->tooltip("Round Button");
+        o->image(fluid_pixmap[4]);
+      }
+      o->end();
+    }
+     {fltk::Group* o = new fltk::Group(218, 3, 104, 79);
+      o->box(fltk::THIN_DOWN_BOX);
+      o->begin();
+       {fltk::Button* o = new fltk::Button(2, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::Slider"));
+        o->tooltip("Slider");
+        o->image(fluid_pixmap[37]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::Scrollbar"));
+        o->tooltip("Scroll Bar");
+        o->image(fluid_pixmap[38]);
+      }
+       {fltk::Button* o = new fltk::Button(52, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::ValueSlider"));
+        o->tooltip("Value Slider");
+        o->image(fluid_pixmap[39]);
+      }
+       {fltk::Button* o = new fltk::Button(77, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::ValueOutput"));
+        o->tooltip("Value Output");
+        o->image(fluid_pixmap[45]);
+      }
+       {fltk::Button* o = new fltk::Button(2, 27, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::Adjuster"));
+        o->tooltip("Adjuster");
+        o->image(fluid_pixmap[40]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 27, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::ValueInput"));
+        o->tooltip("Counter");
+        o->image(fluid_pixmap[41]);
+      }
+       {fltk::Button* o = new fltk::Button(52, 27, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::Dial"));
+        o->tooltip("Dial");
+        o->image(fluid_pixmap[42]);
+      }
+       {fltk::Button* o = new fltk::Button(2, 52, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::ThumbWheel"));
+        o->tooltip("ThumbWheel");
+        o->image(fluid_pixmap[43]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 52, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::ValueInput"));
+        o->tooltip("Spinner");
+        o->image(fluid_pixmap[47]);
+      }
+       {fltk::Button* o = new fltk::Button(52, 52, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::ValueInput"));
+        o->tooltip("Value Input");
+        o->image(fluid_pixmap[44]);
+      }
+      o->end();
+    }
+     {fltk::Group* o = new fltk::Group(323, 3, 54, 79);
+      o->set_vertical();
+      o->box(fltk::THIN_DOWN_BOX);
+      o->begin();
+       {fltk::Button* o = new fltk::Button(2, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::Input"));
+        o->tooltip("Input");
+        o->image(fluid_pixmap[14]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::Output"));
+        o->tooltip("Output");
+        o->image(fluid_pixmap[27]);
+      }
+       {fltk::Button* o = new fltk::Button(2, 27, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::TextEditor"));
+        o->tooltip("Text Edit");
+        o->image(fluid_pixmap[29]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 27, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::TextDisplay"));
+        o->tooltip("Text Display");
+        o->image(fluid_pixmap[28]);
+      }
+       {fltk::Button* o = new fltk::Button(2, 52, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::FileInput"));
+        o->tooltip("File Input");
+        o->image(fluid_pixmap[30]);
+      }
+      o->end();
+    }
+     {fltk::Group* o = new fltk::Group(378, 3, 54, 79);
+      o->set_vertical();
+      o->box(fltk::THIN_DOWN_BOX);
+      o->begin();
+       {fltk::Button* o = new fltk::Button(2, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::MenuBar"));
+        o->tooltip("Menu Bar");
+        o->image(fluid_pixmap[17]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::InputBrowser"));
+        o->tooltip("Input Browser");
+        o->image(fluid_pixmap[15]);
+      }
+       {fltk::Button* o = new fltk::Button(2, 27, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::PopupMenu"));
+        o->tooltip("Menu Button");
+        o->image(fluid_pixmap[26]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 27, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::Item"));
+        o->tooltip("Menu Item");
+        o->image(fluid_pixmap[16]);
+      }
+       {fltk::Button* o = new fltk::Button(2, 52, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::Choice"));
+        o->tooltip("Choice");
+        o->image(fluid_pixmap[15]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 52, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::ItemGroup"));
+        o->tooltip("Sub Menu");
+        o->image(fluid_pixmap[18]);
+      }
+      o->end();
+    }
+     {fltk::Group* o = new fltk::Group(433, 3, 29, 79);
+      o->set_vertical();
+      o->box(fltk::THIN_DOWN_BOX);
+      o->begin();
+       {fltk::Button* o = new fltk::Button(2, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::Browser"));
+        o->tooltip("Browser");
+        o->image(fluid_pixmap[31]);
+      }
+       {fltk::Button* o = new fltk::Button(2, 27, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::CheckBrowser"));
+        o->tooltip("Check Browser");
+        o->image(fluid_pixmap[32]);
+      }
+       {fltk::Button* o = new fltk::Button(2, 52, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::FileBrowser"));
+        o->tooltip("File Browser");
+        o->image(fluid_pixmap[33]);
+      }
+      o->end();
+    }
+     {fltk::Group* o = new fltk::Group(463, 3, 54, 79);
+      o->set_vertical();
+      o->box(fltk::THIN_DOWN_BOX);
+      o->begin();
+       {fltk::Button* o = new fltk::Button(2, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::InvisibleBox"));
+        o->tooltip("Box");
+        o->image(fluid_pixmap[5]);
+      }
+       {fltk::Button* o = new fltk::Button(27, 2, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::Clock"));
+        o->tooltip("Clock");
+        o->image(fluid_pixmap[34]);
+      }
+       {fltk::Button* o = new fltk::Button(2, 27, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::HelpView"));
+        o->tooltip("Help View");
+        o->image(fluid_pixmap[35]);
+      }
+       {fltk::Button* o = new fltk::Button(2, 52, 25, 25);
+        o->box(fltk::THIN_UP_BOX);
+        o->callback((fltk::Callback*)type_make_cb, (void*)("fltk::ProgressBar"));
+        o->tooltip("Progress");
+        o->image(fluid_pixmap[36]);
+      }
+      o->end();
+    }
+    o->end();
+    o->set_non_modal();
+    o->resizable(o);
+  }
+  return  w;
+}
+
+void type_make_cb(fltk::Widget*w,void*d) {
+  FluidType *t = FluidType::make((char*)d);
+    if (t) {
+      Undo::checkpoint();
+      select_only(t);
+      modflag = 1;
+      t->open();
+    }
+}
+
+fltk::TabGroup *panel_tabs=(fltk::TabGroup *)0;
+
+fltk::Group *gInput=(fltk::Group *)0;
+
+static fltk::Input *i_class_name=(fltk::Input *)0;
+
+static fltk::Choice *m_subtype=(fltk::Choice *)0;
+
+static fltk::Input *i_label=(fltk::Input *)0;
+
+fltk::Group *gAlignment=(fltk::Group *)0;
+
+fltk::CheckButton *include_image_button=(fltk::CheckButton *)0;
+
+fltk::Widget *image_label=(fltk::Widget *)0;
+
+fltk::Button *image_button=(fltk::Button *)0;
+
+fltk::Group *gDimensions=(fltk::Group *)0;
+
+fltk::ValueInput *widget_x=(fltk::ValueInput *)0;
+
+fltk::ValueInput *widget_y=(fltk::ValueInput *)0;
+
+fltk::ValueInput *widget_w=(fltk::ValueInput *)0;
+
+fltk::ValueInput *widget_h=(fltk::ValueInput *)0;
+
+fltk::CheckButton *set_xy=(fltk::CheckButton *)0;
+
+fltk::Group *gValues=(fltk::Group *)0;
+
+fltk::Group *gAttributes=(fltk::Group *)0;
+
+static fltk::Group *BoxColor=(fltk::Group *)0;
+
+static fltk::Group *ButtonBox=(fltk::Group *)0;
+
+static fltk::Group *Labels=(fltk::Group *)0;
+
+fltk::MultiLineInput *extra_code_input=(fltk::MultiLineInput *)0;
+
+fltk::CheckButton *overlaybutton=(fltk::CheckButton *)0;
+
+fltk::LightButton *wLiveMode=(fltk::LightButton *)0;
+
+fltk::Window* make_widget_panel() {
+  fltk::Window* w;
+   {fltk::Window* o = new fltk::Window(380, 380);
+    w = o;
+    o->shortcut(0xff1b);
+    ((fltk::Window*)(o))->hotspot(o);
+    o->begin();
+     {fltk::TabGroup* o = panel_tabs = new fltk::TabGroup(0, 0, 380, 340);
+      o->callback((fltk::Callback*)propagate_tabs);
+      o->begin();
+       {fltk::Group* o = new fltk::Group(0, 20, 380, 320, "GUI");
+        o->color((fltk::Color)0x14aef700);
+        o->callback((fltk::Callback*)propagate_group);
+        o->hide();
+        o->begin();
+         {fltk::Group* o = gInput = new fltk::Group(80, 9, 290, 44);
+          o->callback((fltk::Callback*)propagate_group);
+          o->begin();
+           {fltk::Input* o = i_class_name = new fltk::Input(0, 0, 170, 22, "Class");
+            o->callback((fltk::Callback*)user_class_cb, (void*)(4));
+            o->when(fltk::WHEN_CHANGED);
+            o->tooltip("This allows you to name a user-defined class that this widget is an instance \
+of, rather than an fltk built-in class. You will need to add a #include declar\
+ation so that the definition of your class is included in the fluid output.");
+          }
+           {fltk::Choice* o = m_subtype = new fltk::Choice(170, 0, 120, 22);
+            o->callback((fltk::Callback*)subtype_cb);
+            o->tooltip("Selects a value for type() for this widget");
+          }
+           {fltk::Input* o = i_label = new fltk::Input(0, 22, 290, 22, "Label");
+            o->callback((fltk::Callback*)label_cb);
+            o->when(fltk::WHEN_CHANGED);
+            o->tooltip("Text displayed on or next to the widget");
+            o->take_focus();
+          }
+          o->end();
+        }
+         {fltk::Group* o = gAlignment = new fltk::Group(80, 54, 293, 22, "Alignment");
+          o->callback((fltk::Callback*)propagate_group);
+          o->align(fltk::ALIGN_LEFT);
+          o->begin();
+           {fltk::CheckButton* o = include_image_button = new fltk::CheckButton(272, 0, 20, 22, "inline");
+            o->set_vertical();
+            o->callback((fltk::Callback*)image_inlined_cb);
+            o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_WRAP);
+            o->tooltip("The image data is inserted as inline data into the output C++ code, rather th\
+an generating code to read the image file.");
+          }
+           {fltk::Widget* o = new fltk::Widget(1, 0, 70, 22, "Alignment");
+            o->box(fltk::NO_BOX);
+            o->align(fltk::ALIGN_RIGHT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+            o->hide();
+          }
+           {fltk::Button* o = new fltk::Button(0, 2, 20, 20, "@4->");
+            o->type(fltk::Button::TOGGLE);
+            o->labelsize(11);
+            o->textsize(11);
+            o->callback((fltk::Callback*)align_cb, (void*)(fltk::ALIGN_LEFT));
+            o->tooltip("Places label on the left of the widget");
+          }
+           {fltk::Button* o = new fltk::Button(20, 2, 20, 20, "@6->");
+            o->type(fltk::Button::TOGGLE);
+            o->labelsize(11);
+            o->textsize(11);
+            o->callback((fltk::Callback*)align_cb, (void*)(fltk::ALIGN_RIGHT));
+            o->tooltip("Places label on the right of the widget");
+          }
+           {fltk::Button* o = new fltk::Button(40, 2, 20, 20, "@8->");
+            o->type(fltk::Button::TOGGLE);
+            o->labelsize(11);
+            o->textsize(11);
+            o->callback((fltk::Callback*)align_cb, (void*)(fltk::ALIGN_TOP));
+            o->tooltip("Places label on the top of the widget");
+          }
+           {fltk::Button* o = new fltk::Button(60, 2, 20, 20, "@2->");
+            o->type(fltk::Button::TOGGLE);
+            o->labelsize(11);
+            o->textsize(11);
+            o->callback((fltk::Callback*)align_cb, (void*)(fltk::ALIGN_BOTTOM));
+            o->tooltip("Places label on the bottom of the widget");
+          }
+           {fltk::Button* o = new fltk::Button(91, 2, 40, 20, "inside");
+            o->type(fltk::Button::TOGGLE);
+            o->callback((fltk::Callback*)align_cb, (void*)(fltk::ALIGN_INSIDE));
+            o->tooltip("Places label inside the widget");
+          }
+           {fltk::Button* o = new fltk::Button(131, 2, 40, 20, "clip");
+            o->type(fltk::Button::TOGGLE);
+            o->callback((fltk::Callback*)align_cb, (void*)(fltk::ALIGN_CLIP));
+            o->tooltip("Turn on clipping to the widget's area when drawing label.  This is slower so \
+it should be left off if label will fit");
+          }
+           {fltk::Button* o = new fltk::Button(171, 2, 40, 20, "wrap");
+            o->type(fltk::Button::TOGGLE);
+            o->callback((fltk::Callback*)align_cb, (void*)(fltk::ALIGN_WRAP));
+            o->tooltip("Word-wrap the label");
+          }
+          o->end();
+        }
+         {fltk::Widget* o = image_label = new fltk::Widget(5, 79, 78, 22, "Image");
+          o->box(fltk::NO_BOX);
+          o->align(fltk::ALIGN_RIGHT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+        }
+         {fltk::Button* o = image_button = new fltk::Button(80, 79, 290, 22);
+          o->color((fltk::Color)7);
+          o->callback((fltk::Callback*)image_cb, (void*)(1));
+          o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE|fltk::ALIGN_CLIP);
+          o->tooltip("Select an image to label the widget");
+        }
+         {fltk::Group* o = gDimensions = new fltk::Group(80, 112, 290, 23, "Dimensions");
+          o->callback((fltk::Callback*)propagate_group);
+          o->align(fltk::ALIGN_LEFT);
+          o->begin();
+           {fltk::ValueInput* o = widget_x = new fltk::ValueInput(0, 0, 55, 22, "x");
+            o->labelsize(11);
+            o->maximum(2000);
+            o->step(1);
+            o->value(10);
+            o->callback((fltk::Callback*)x_cb);
+            o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_CENTER);
+            o->when(fltk::WHEN_ENTER_KEY);
+            o->tooltip("The x coordinate of the widget.");
+          }
+           {fltk::ValueInput* o = widget_y = new fltk::ValueInput(55, 0, 55, 22, "y");
+            o->labelsize(11);
+            o->maximum(2000);
+            o->step(1);
+            o->value(10);
+            o->callback((fltk::Callback*)y_cb);
+            o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_CENTER);
+            o->when(fltk::WHEN_ENTER_KEY);
+            o->tooltip("The y coordinate of the widget.");
+          }
+           {fltk::ValueInput* o = widget_w = new fltk::ValueInput(110, 0, 55, 22, "w");
+            o->labelsize(11);
+            o->maximum(2000);
+            o->step(1);
+            o->value(10);
+            o->callback((fltk::Callback*)width_cb);
+            o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_CENTER);
+            o->when(fltk::WHEN_ENTER_KEY);
+            o->tooltip("The width of the widget.");
+          }
+           {fltk::ValueInput* o = widget_h = new fltk::ValueInput(165, 0, 55, 22, "h");
+            o->labelsize(11);
+            o->maximum(2000);
+            o->step(1);
+            o->value(10);
+            o->callback((fltk::Callback*)height_cb);
+            o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_CENTER);
+            o->when(fltk::WHEN_ENTER_KEY);
+            o->tooltip("The height of the widget.");
+          }
+           {fltk::CheckButton* o = set_xy = new fltk::CheckButton(225, 0, 25, 22, "xy");
+            o->labelsize(11);
+            o->callback((fltk::Callback*)set_xy_cb);
+            o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+            o->tooltip("Window will use this x,y rather than being positioned by the operating system\
+.");
+          }
+           {fltk::ValueInput* o = new fltk::ValueInput(245, 0, 45, 22, "slider size");
+            o->labelsize(11);
+            o->callback((fltk::Callback*)slider_size_cb);
+            o->align(fltk::ALIGN_TOP|fltk::ALIGN_CENTER);
+            o->when(fltk::WHEN_ENTER_KEY);
+            o->tooltip("The size of the scroller");
+          }
+          o->end();
+        }
+         {fltk::Group* o = gValues = new fltk::Group(80, 147, 290, 23, "Values");
+          o->callback((fltk::Callback*)propagate_group);
+          o->align(fltk::ALIGN_LEFT);
+          o->begin();
+           {fltk::ValueInput* o = new fltk::ValueInput(0, 0, 55, 22, "Value");
+            o->callback((fltk::Callback*)value_cb);
+            o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+            o->when(fltk::WHEN_ENTER_KEY);
+            o->tooltip("The initial value of this widget");
+          }
+           {fltk::ValueInput* o = new fltk::ValueInput(55, 0, 55, 22, "min");
+            o->labelsize(11);
+            o->callback((fltk::Callback*)min_cb);
+            o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_CENTER);
+            o->when(fltk::WHEN_ENTER_KEY);
+            o->tooltip("The minimum value for this valuator");
+          }
+           {fltk::ValueInput* o = new fltk::ValueInput(110, 0, 55, 23, "max");
+            o->labelsize(11);
+            o->callback((fltk::Callback*)max_cb);
+            o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_CENTER);
+            o->when(fltk::WHEN_ENTER_KEY);
+            o->tooltip("The maximum value for this valuator");
+          }
+           {fltk::ValueInput* o = new fltk::ValueInput(165, 0, 55, 22, "step");
+            o->labelsize(11);
+            o->callback((fltk::Callback*)step_cb);
+            o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_CENTER);
+            o->when(fltk::WHEN_ENTER_KEY);
+            o->tooltip("step:\nRound all movements to multiples of this.\n");
+          }
+           {fltk::ValueInput* o = new fltk::ValueInput(245, 0, 45, 22, "line");
+            o->labelsize(11);
+            o->minimum(1);
+            o->step(1);
+            o->callback((fltk::Callback*)line_cb);
+            o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_CENTER);
+            o->when(fltk::WHEN_ENTER_KEY);
+            o->tooltip("linesize:\nIncrement/decrement for arrow keys.");
+          }
+          o->end();
+        }
+         {fltk::Group* o = gAttributes = new fltk::Group(80, 171, 280, 44, "Attributes");
+          o->callback((fltk::Callback*)propagate_group);
+          o->align(fltk::ALIGN_LEFT);
+          o->begin();
+           {fltk::CheckButton* o = new fltk::CheckButton(0, 0, 65, 22, "Visible");
+            o->callback((fltk::Callback*)visible_cb);
+            o->tooltip("If unchecked the widget is initially invisible.");
+          }
+           {fltk::CheckButton* o = new fltk::CheckButton(65, 0, 65, 22, "Active");
+            o->callback((fltk::Callback*)active_cb);
+            o->tooltip("If unchecked the widget is initially inactive (disabled, grayed out).");
+          }
+           {fltk::CheckButton* o = new fltk::CheckButton(130, 0, 80, 22, "Resizable");
+            o->callback((fltk::Callback*)resizable_cb);
+            o->tooltip("If on, this widget and all its parents are resizable.  When the parent resize\
+s it moves/resizes all its children so that this widget's edges remain the sam\
+e distance from all four sides of the parent.  If this is off this widget will\
+ not resize, unless it overlaps a resizable sibling.");
+          }
+           {fltk::CheckButton* o = new fltk::CheckButton(210, 0, 70, 22, "Hotspot");
+            o->callback((fltk::Callback*)hotspot_cb);
+            o->tooltip("Positions the window so this widget is under the mouse.  This is done when sh\
+ow() is called.");
+          }
+           {fltk::CheckButton* o = new fltk::CheckButton(0, 20, 65, 22, "Border");
+            o->callback((fltk::Callback*)border_cb);
+            o->tooltip("Enable the window manager border");
+          }
+           {fltk::CheckButton* o = new fltk::CheckButton(65, 20, 65, 22, "Modal");
+            o->callback((fltk::Callback*)modal_cb);
+            o->tooltip("This window will stay on top of others in the application and will block even\
+ts from going to other windows until it is hidden or closed.");
+          }
+           {fltk::CheckButton* o = new fltk::CheckButton(130, 20, 65, 22, "Child");
+            o->callback((fltk::Callback*)non_modal_cb);
+            o->tooltip("This window will stay on top of others in the application.");
+          }
+          o->end();
+        }
+         {fltk::InvisibleBox* o = new fltk::InvisibleBox(25, 215, 55, 25, "Shortcut");
+          o->align(fltk::ALIGN_RIGHT|fltk::ALIGN_INSIDE);
+        }
+         {Shortcut_Button* o = new Shortcut_Button(80, 216, 290, 22);
+          o->color((fltk::Color)7);
+          o->callback((fltk::Callback*)shortcut_in_cb);
+          o->align(fltk::ALIGN_LEFT|fltk::ALIGN_INSIDE);
+          o->tooltip("To set a shortcut:\n   Click here, then type the key combination you want.\nT\
+o delete the shortcut:\n   Click here, then type backspace.\nTo get out of sho\
+rtcut-setting mode:\n   Click the mouse on this again, or on some other field.");
+        }
+         {fltk::WordwrapInput* o = new fltk::WordwrapInput(80, 240, 290, 70, "Tooltip");
+          o->type(5);
+          o->box(fltk::BORDER_BOX);
+          o->color((fltk::Color)0xffffe100);
+          o->callback((fltk::Callback*)tooltip_cb);
+          fltk::Group::current()->resizable(o);
+          o->tooltip("The pop up tooltip which should be used for the widget.");
+        }
+        o->end();
+      }
+       {fltk::Group* o = new fltk::Group(0, 20, 380, 320, "Style");
+        o->color((fltk::Color)0xd4b38d00);
+        o->callback((fltk::Callback*)propagate_group);
+        o->hide();
+        o->begin();
+         {fltk::Group* o = BoxColor = new fltk::Group(85, 9, 270, 66);
+          o->callback((fltk::Callback*)propagate_group);
+          o->begin();
+           {fltk::Choice* o = new fltk::Choice(0, 0, 270, 22, "Box");
+            o->callback((fltk::Callback*)box_cb);
+            o->tooltip("Type of box to draw around the contents of the widget.");
+          }
+           {fltk::LightButton* o = new fltk::LightButton(0, 22, 135, 22, "Color");
+            o->labelsize(11);
+            o->textsize(11);
+            o->callback((fltk::Callback*)color_cb);
+            o->tooltip("Color of the contents area.");
+            o->type(0);
+          }
+           {fltk::LightButton* o = new fltk::LightButton(135, 22, 135, 22, "Text Color");
+            o->labelsize(11);
+            o->textsize(11);
+            o->callback((fltk::Callback*)text_color_cb);
+            o->tooltip("Color of text drawn in the widget.");
+            o->type(0);
+          }
+           {fltk::LightButton* o = new fltk::LightButton(0, 44, 135, 22, "Selection Color");
+            o->labelsize(11);
+            o->textsize(11);
+            o->callback((fltk::Callback*)selection_color_cb);
+            o->tooltip("Color to draw behind selected text");
+            o->type(0);
+          }
+           {fltk::LightButton* o = new fltk::LightButton(135, 44, 135, 22, "Selected Text Color");
+            o->labelsize(11);
+            o->textsize(11);
+            o->callback((fltk::Callback*)selected_text_color_cb);
+            o->tooltip("Color to draw selected text");
+            o->type(0);
+          }
+          o->end();
+        }
+         {fltk::Group* o = ButtonBox = new fltk::Group(85, 88, 270, 66);
+          o->callback((fltk::Callback*)propagate_group);
+          o->begin();
+           {fltk::Choice* o = new fltk::Choice(0, 0, 270, 22, "Button box");
+            o->callback((fltk::Callback*)button_box_cb);
+            o->tooltip("Type of box to draw around buttons");
+          }
+           {fltk::LightButton* o = new fltk::LightButton(0, 22, 135, 22, "Button Color");
+            o->labelsize(11);
+            o->textsize(11);
+            o->callback((fltk::Callback*)button_color_cb);
+            o->tooltip("Color to draw buttons inside the widget.");
+            o->type(0);
+          }
+           {fltk::LightButton* o = new fltk::LightButton(135, 22, 135, 22, "Label Color");
+            o->labelsize(11);
+            o->textsize(11);
+            o->callback((fltk::Callback*)label_color_cb);
+            o->tooltip("Color to draw the labels on buttons, and color to draw the label.");
+            o->type(0);
+          }
+           {fltk::LightButton* o = new fltk::LightButton(0, 44, 135, 22, "Highlight Color");
+            o->labelsize(11);
+            o->textsize(11);
+            o->callback((fltk::Callback*)highlight_color_cb);
+            o->tooltip("Color to use to draw buttons when they are highlighted.  Use color zero (the \
+black top-left chip in the color chooser) to disable highlighting.");
+            o->type(0);
+          }
+           {fltk::LightButton* o = new fltk::LightButton(135, 44, 135, 22, "Highlight Label Color");
+            o->labelsize(11);
+            o->textsize(11);
+            o->callback((fltk::Callback*)highlight_label_color_cb);
+            o->tooltip("Color to draw the button labels when the buttons are highlighted.  Use color \
+zero (the black top-left chip in the color chooser) to leave the label colors \
+unchanged.");
+            o->type(0);
+          }
+          o->end();
+        }
+         {fltk::Group* o = Labels = new fltk::Group(85, 165, 270, 80);
+          o->callback((fltk::Callback*)propagate_group);
+          o->begin();
+           {fltk::Choice* o = new fltk::Choice(0, 0, 270, 22, "Label Style");
+            o->callback((fltk::Callback*)label_style_cb);
+            o->tooltip("How to draw the label.");
+          }
+           {fltk::Choice* o = new fltk::Choice(0, 22, 215, 22, "Label Font");
+            o->callback((fltk::Callback*)label_font_cb);
+            o->tooltip("Font to use for the label");
+          }
+           {fltk::ValueInput* o = new fltk::ValueInput(215, 22, 55, 22);
+            o->maximum(100);
+            o->step(0.1);
+            o->value(14);
+            o->callback((fltk::Callback*)label_size_cb);
+            o->when(fltk::WHEN_ENTER_KEY);
+            o->tooltip("Size of the font to use for the label");
+          }
+           {fltk::Choice* o = new fltk::Choice(0, 55, 215, 22, "Text Font");
+            o->callback((fltk::Callback*)text_font_cb);
+            o->tooltip("Font to use for text displayed inside the widget");
+          }
+           {fltk::ValueInput* o = new fltk::ValueInput(215, 55, 55, 22);
+            o->maximum(100);
+            o->step(0.1);
+            o->value(14);
+            o->callback((fltk::Callback*)text_size_cb);
+            o->when(fltk::WHEN_ENTER_KEY);
+            o->tooltip("Size of the font to use for text displayed inside the widget");
+          }
+           {fltk::Widget* o = new fltk::Widget(0, 77, 270, 3, "resizable");
+            o->align(fltk::ALIGN_BOTTOM);
+            o->hide();
+            o->deactivate();
+          }
+          o->end();
+        }
+         {fltk::Button* o = new fltk::Button(85, 258, 124, 22, "Reset to default");
+          o->callback((fltk::Callback*)default_cb);
+          o->tooltip("Reset all the above items to the default values for this widget class.");
+        }
+         {fltk::InvisibleBox* o = new fltk::InvisibleBox(85, 280, 270, 25);
+          fltk::Group::current()->resizable(o);
+        }
+        o->end();
+      }
+       {fltk::Group* o = new fltk::Group(0, 20, 380, 320, "C++");
+        o->color((fltk::Color)0x93d49c00);
+        o->callback((fltk::Callback*)propagate_group);
+        o->begin();
+         {fltk::Input* o = new fltk::Input(80, 9, 230, 22, "Name");
+          o->callback((fltk::Callback*)name_cb);
+          o->when(fltk::WHEN_CHANGED);
+          o->tooltip("The variable or member name in which to store a pointer to this widget.");
+        }
+         {fltk::CheckButton* o = new fltk::CheckButton(315, 9, 50, 22, "public");
+          o->callback((fltk::Callback*)name_public_cb);
+          o->tooltip("Make the variable public");
+        }
+         {fltk::MultiLineInput* o = extra_code_input = new fltk::MultiLineInput(80, 37, 285, 99, "Extra Code");
+          o->type(4);
+          o->textfont(fltk::COURIER);
+          o->textsize(11);
+          o->callback((fltk::Callback*)extra_code_input_cb, (void*)(0));
+          o->tooltip("Extra code to be exectuted after the widget is created. The variable \"o\" po\
+ints at the widget.");
+        }
+         {fltk::MultiLineInput* o = new fltk::MultiLineInput(80, 143, 285, 99, "Callback");
+          o->type(4);
+          o->textfont(fltk::COURIER);
+          o->textsize(11);
+          o->callback((fltk::Callback*)callback_cb);
+          o->tooltip("The name of the callback function, or code body of the callback function");
+        }
+         {fltk::Widget* o = new fltk::Widget(80, 154, 165, 65, "resizable");
+          o->hide();
+          o->deactivate();
+          fltk::Group::current()->resizable(o);
+        }
+         {fltk::Input* o = new fltk::Input(80, 242, 145, 22, "User Data");
+          o->callback((fltk::Callback*)user_data_cb);
+          o->tooltip("Value passed as the second argument to the callback.  This must be of the typ\
+e given below.");
+        }
+         {fltk::Choice* o = new fltk::Choice(265, 242, 100, 22, "When");
+          o->callback((fltk::Callback*)when_cb);
+          o->when(fltk::WHEN_CHANGED);
+          o->tooltip("What actions cause the callback to be called.");
+        }
+         {fltk::Input* o = new fltk::Input(80, 264, 145, 22, "Type");
+          o->callback((fltk::Callback*)user_data_type_cb);
+          o->tooltip("Type of User Data. This must be \"long\" or a pointer.");
+        }
+        o->end();
+        fltk::Group::current()->resizable(o);
+      }
+      o->end();
+      fltk::Group::current()->resizable(o);
+    }
+     {fltk::Group* o = new fltk::Group(0, 350, 380, 24);
+      o->begin();
+       {fltk::CheckButton* o = overlaybutton = new fltk::CheckButton(20, 0, 120, 24, "&Overlays");
+        o->callback((fltk::Callback*)overlay_cb);
+        fltk::Group::current()->resizable(o);
+        o->tooltip("Turns the overlays (red outlines) off so you can see the edges better.");
+        o->value(!overlays_invisible);
+      }
+       {fltk::ReturnButton* o = new fltk::ReturnButton(235, 1, 65, 23, "OK");
+        o->shortcut(0xff0d);
+        o->callback((fltk::Callback*)ok_cb);
+        o->tooltip("Closes this attribute window");
+      }
+       {fltk::Button* o = new fltk::Button(310, 1, 65, 23, "Cancel");
+        o->callback((fltk::Callback*)cancel_cb);
+        o->tooltip("Sorry, cancel does not really work yet.");
+      }
+       {fltk::LightButton* o = wLiveMode = new fltk::LightButton(95, 2, 90, 22, "LiveMode!");
+        o->callback((fltk::Callback*)live_mode_cb);
+      }
+      o->end();
+    }
+    o->end();
+  }
+  return  w;
+}

Added: branches/branch-3.0-2011/fluid2/widget_panel.fl
===================================================================
--- branches/branch-3.0-2011/fluid2/widget_panel.fl	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/widget_panel.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,907 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.1000 
+images_dir ./ 
+header_name {.h} 
+code_name {.cxx} 
+gridx 5 
+gridy 5 
+snap 3
+decl {\#include <fltk/Window.h>} {public
+} 
+
+decl {\#include <fltk/xpmImage.h>} {} 
+
+decl {\#include "FluidType.h"} {} 
+
+decl {\#include "fluid_img.h"} {} 
+
+decl {\#include "undo.h"} {} 
+
+Function {make_widgetbin()} {} {
+  {fltk::Window} widgetbin_panel {
+    label {Widget Bin} open
+    xywh {499 58 520 85} resizable non_modal visible
+  } {
+    {fltk::Group} {} {open
+      xywh {3 3 79 79} box THIN_DOWN_BOX
+    } {
+      {fltk::Button} {} {
+        user_data {"Function"}
+        callback type_make_cb
+        tooltip Function
+        xywh {2 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[7]);}
+      }
+      {fltk::Button} {} {
+        user_data {"class"}
+        callback type_make_cb
+        tooltip Class
+        xywh {27 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[12]);}
+      }
+      {fltk::Button} {} {
+        user_data {"comment"}
+        callback type_make_cb
+        tooltip Comment
+        xywh {52 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[46]);}
+      }
+      {fltk::Button} {} {
+        user_data {"code"}
+        callback type_make_cb
+        tooltip Code
+        xywh {2 27 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[8]);}
+      }
+      {fltk::Button} {} {
+        user_data {"codeblock"}
+        callback type_make_cb
+        tooltip {Code Block}
+        xywh {27 27 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[9]);}
+      }
+      {fltk::Button} {} {
+        user_data {"namespace"}
+        callback type_make_cb
+        tooltip Namespace
+        xywh {52 27 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[49]);}
+      }
+      {fltk::Button} {} {
+        user_data {"decl"}
+        callback type_make_cb
+        tooltip Declaration
+        xywh {2 52 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[10]);}
+      }
+      {fltk::Button} {} {
+        user_data {"declblock"}
+        callback type_make_cb
+        tooltip {Declaration Block}
+        xywh {27 52 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[11]);}
+      }
+      {fltk::Button} {} {
+        user_data {"WidgetClass"}
+        callback type_make_cb
+        tooltip Namespace
+        xywh {52 52 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[48]);}
+      }
+    }
+    {fltk::Group} {} {open
+      xywh {83 3 79 79} box THIN_DOWN_BOX
+    } {
+      {fltk::Button} {} {
+        user_data {"fltk::Window"}
+        callback type_make_cb
+        tooltip Window
+        xywh {2 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[1]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::Group"}
+        callback type_make_cb
+        tooltip Group
+        xywh {27 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[6]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::PackedGroup"}
+        callback type_make_cb
+        tooltip Pack
+        xywh {52 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[22]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::TabGroup"}
+        callback type_make_cb
+        tooltip Tabs
+        xywh {2 27 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[13]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::ScrollGroup"}
+        callback type_make_cb
+        tooltip Scroll
+        xywh {27 27 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[19]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::TiledGroup"}
+        callback type_make_cb
+        tooltip Tile
+        xywh {2 52 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[20]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::WizardGroup"}
+        callback type_make_cb
+        tooltip Wizard
+        xywh {27 52 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[21]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::StatusBarGroup"}
+        callback type_make_cb
+        tooltip StatusBarGroup
+        xywh {52 27 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[5]);}
+      }
+    }
+    {fltk::Group} {} {
+      xywh {163 3 54 79} box THIN_DOWN_BOX
+    } {
+      {fltk::Button} {} {
+        user_data {"fltk::Button"}
+        callback type_make_cb
+        tooltip Button
+        xywh {2 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[2]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::ReturnButton"}
+        callback type_make_cb
+        tooltip {Return Button}
+        xywh {27 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[23]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::LightButton"}
+        callback type_make_cb
+        tooltip {Light Button}
+        xywh {2 27 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[24]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::RepeatButton"}
+        callback type_make_cb
+        tooltip {Repeat Button}
+        xywh {27 27 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[25]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::CheckButton"}
+        callback type_make_cb
+        tooltip {Check Button}
+        xywh {2 52 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[3]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::RadioButton"}
+        callback type_make_cb
+        tooltip {Round Button}
+        xywh {27 52 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[4]);}
+      }
+    }
+    {fltk::Group} {} {
+      xywh {218 3 104 79} box THIN_DOWN_BOX
+    } {
+      {fltk::Button} {} {
+        user_data {"fltk::Slider"}
+        callback type_make_cb
+        tooltip Slider
+        xywh {2 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[37]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::Scrollbar"}
+        callback type_make_cb
+        tooltip {Scroll Bar}
+        xywh {27 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[38]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::ValueSlider"}
+        callback type_make_cb
+        tooltip {Value Slider}
+        xywh {52 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[39]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::ValueOutput"}
+        callback type_make_cb
+        tooltip {Value Output}
+        xywh {77 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[45]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::Adjuster"}
+        callback type_make_cb
+        tooltip Adjuster
+        xywh {2 27 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[40]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::ValueInput"}
+        callback type_make_cb
+        tooltip Counter
+        xywh {27 27 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[41]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::Dial"}
+        callback type_make_cb
+        tooltip Dial
+        xywh {52 27 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[42]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::ThumbWheel"}
+        callback type_make_cb
+        tooltip ThumbWheel
+        xywh {2 52 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[43]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::ValueInput"}
+        callback type_make_cb
+        tooltip Spinner
+        xywh {27 52 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[47]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::ValueInput"}
+        callback type_make_cb
+        tooltip {Value Input}
+        xywh {52 52 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[44]);}
+      }
+    }
+    {fltk::Group} {} {open
+      xywh {323 3 54 79} box THIN_DOWN_BOX
+    } {
+      {fltk::Button} {} {
+        user_data {"fltk::Input"}
+        callback type_make_cb
+        tooltip Input
+        xywh {2 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[14]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::Output"}
+        callback type_make_cb
+        tooltip Output
+        xywh {27 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[27]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::TextEditor"}
+        callback type_make_cb
+        tooltip {Text Edit}
+        xywh {2 27 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[29]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::TextDisplay"}
+        callback type_make_cb
+        tooltip {Text Display}
+        xywh {27 27 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[28]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::FileInput"}
+        callback type_make_cb
+        tooltip {File Input}
+        xywh {2 52 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[30]);}
+      }
+    }
+    {fltk::Group} {} {open
+      xywh {378 3 54 79} box THIN_DOWN_BOX
+    } {
+      {fltk::Button} {} {
+        user_data {"fltk::MenuBar"}
+        callback type_make_cb
+        tooltip {Menu Bar}
+        xywh {2 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[17]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::InputBrowser"}
+        callback type_make_cb
+        tooltip {Input Browser}
+        xywh {27 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[15]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::PopupMenu"}
+        callback type_make_cb
+        tooltip {Menu Button}
+        xywh {2 27 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[26]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::Item"}
+        callback type_make_cb
+        tooltip {Menu Item}
+        xywh {27 27 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[16]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::Choice"}
+        callback type_make_cb
+        tooltip Choice
+        xywh {2 52 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[15]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::ItemGroup"}
+        callback type_make_cb
+        tooltip {Sub Menu}
+        xywh {27 52 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[18]);}
+      }
+    }
+    {fltk::Group} {} {open
+      xywh {433 3 29 79} box THIN_DOWN_BOX
+    } {
+      {fltk::Button} {} {
+        user_data {"fltk::Browser"}
+        callback type_make_cb
+        tooltip Browser
+        xywh {2 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[31]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::CheckBrowser"}
+        callback type_make_cb
+        tooltip {Check Browser}
+        xywh {2 27 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[32]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::FileBrowser"}
+        callback type_make_cb
+        tooltip {File Browser}
+        xywh {2 52 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[33]);}
+      }
+    }
+    {fltk::Group} {} {open
+      xywh {463 3 54 79} box THIN_DOWN_BOX
+    } {
+      {fltk::Button} {} {
+        user_data {"fltk::InvisibleBox"}
+        callback type_make_cb
+        tooltip Box
+        xywh {2 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[5]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::Clock"}
+        callback type_make_cb
+        tooltip Clock
+        xywh {27 2 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[34]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::HelpView"}
+        callback type_make_cb
+        tooltip {Help View}
+        xywh {2 27 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[35]);}
+      }
+      {fltk::Button} {} {
+        user_data {"fltk::ProgressBar"}
+        callback type_make_cb
+        tooltip Progress
+        xywh {2 52 25 25} box THIN_UP_BOX
+        extra_code {o->image(fluid_pixmap[36]);}
+      }
+    }
+  }
+} 
+
+Function {type_make_cb(fltk::Widget*w,void*d)} {return_type void
+} {
+  code {FluidType *t = FluidType::make((char*)d);
+  if (t) {
+    Undo::checkpoint();
+    select_only(t);
+    modflag = 1;
+    t->open();
+  }} {}
+} 
+
+Function {make_widget_panel()} {open
+} {
+  {fltk::Window} {} {open
+    xywh {72 313 380 380} hide resizable hotspot
+  } {
+    {fltk::TabGroup} panel_tabs {
+      callback propagate_tabs open
+      xywh {0 0 380 340} resizable
+    } {
+      {fltk::Group} {} {
+        label GUI
+        callback propagate_group open
+        xywh {0 20 380 320} hide color 0x14aef700
+      } {
+        {fltk::Group} gInput {
+          callback propagate_group open
+          xywh {80 9 290 44}
+        } {
+          {fltk::Input} i_class_name {
+            label Class
+            user_data 4
+            callback user_class_cb
+            tooltip {This allows you to name a user-defined class that this widget is an instance of, rather than an fltk built-in class. You will need to add a \#include declaration so that the definition of your class is included in the fluid output.}
+            private xywh {0 0 170 22} when CHANGED
+          }
+          {fltk::Choice} m_subtype {
+            callback subtype_cb
+            tooltip {Selects a value for type() for this widget}
+            private xywh {170 0 120 22}
+          } {}
+          {fltk::Input} i_label {
+            label Label
+            callback label_cb
+            tooltip {Text displayed on or next to the widget}
+            private xywh {0 22 290 22} when CHANGED
+            extra_code {o->take_focus();}
+          }
+        }
+        {fltk::Group} gAlignment {
+          label Alignment
+          callback propagate_group open
+          xywh {80 54 293 22} align 4
+        } {
+          {fltk::CheckButton} include_image_button {
+            label inline
+            callback image_inlined_cb
+            tooltip {The image data is inserted as inline data into the output C++ code, rather than generating code to read the image file.}
+            xywh {272 0 20 22} align 148
+          }
+          {fltk::Widget} {} {
+            label Alignment
+            xywh {1 0 70 22} align 56 hide box NO_BOX
+          }
+          {fltk::Button} {} {
+            label {@4->}
+            user_data {fltk::ALIGN_LEFT}
+            callback align_cb
+            tooltip {Places label on the left of the widget}
+            xywh {0 2 20 20} type TOGGLE labelsize 11 textsize 11
+          }
+          {fltk::Button} {} {
+            label {@6->}
+            user_data {fltk::ALIGN_RIGHT}
+            callback align_cb
+            tooltip {Places label on the right of the widget}
+            xywh {20 2 20 20} type TOGGLE labelsize 11 textsize 11
+          }
+          {fltk::Button} {} {
+            label {@8->}
+            user_data {fltk::ALIGN_TOP}
+            callback align_cb
+            tooltip {Places label on the top of the widget}
+            xywh {40 2 20 20} type TOGGLE labelsize 11 textsize 11
+          }
+          {fltk::Button} {} {
+            label {@2->}
+            user_data {fltk::ALIGN_BOTTOM}
+            callback align_cb
+            tooltip {Places label on the bottom of the widget}
+            xywh {60 2 20 20} type TOGGLE labelsize 11 textsize 11
+          }
+          {fltk::Button} {} {
+            label inside
+            user_data {fltk::ALIGN_INSIDE}
+            callback align_cb
+            tooltip {Places label inside the widget}
+            xywh {91 2 40 20} type TOGGLE
+          }
+          {fltk::Button} {} {
+            label clip
+            user_data {fltk::ALIGN_CLIP}
+            callback align_cb
+            tooltip {Turn on clipping to the widget's area when drawing label.  This is slower so it should be left off if label will fit}
+            xywh {131 2 40 20} type TOGGLE
+          }
+          {fltk::Button} {} {
+            label wrap
+            user_data {fltk::ALIGN_WRAP}
+            callback align_cb
+            tooltip {Word-wrap the label}
+            xywh {171 2 40 20} type TOGGLE
+          }
+        }
+        {fltk::Widget} image_label {
+          label Image
+          xywh {5 79 78 22} align 56 box NO_BOX
+        }
+        {fltk::Button} image_button {
+          user_data 1 user_data_type {void*}
+          callback image_cb
+          tooltip {Select an image to label the widget}
+          xywh {80 79 290 22} align 116 color 7
+        }
+        {fltk::Group} gDimensions {
+          label Dimensions
+          callback propagate_group open
+          xywh {80 112 290 23} align 4
+        } {
+          {fltk::ValueInput} widget_x {
+            label x
+            callback x_cb
+            tooltip {The x coordinate of the widget.}
+            xywh {0 0 55 22} align 21 when ENTER_KEY labelsize 11 maximum 2000 step 1 value 10
+          }
+          {fltk::ValueInput} widget_y {
+            label y
+            callback y_cb
+            tooltip {The y coordinate of the widget.}
+            xywh {55 0 55 22} align 21 when ENTER_KEY labelsize 11 maximum 2000 step 1 value 10
+          }
+          {fltk::ValueInput} widget_w {
+            label w
+            callback width_cb
+            tooltip {The width of the widget.}
+            xywh {110 0 55 22} align 21 when ENTER_KEY labelsize 11 maximum 2000 step 1 value 10
+          }
+          {fltk::ValueInput} widget_h {
+            label h
+            callback height_cb
+            tooltip {The height of the widget.}
+            xywh {165 0 55 22} align 21 when ENTER_KEY labelsize 11 maximum 2000 step 1 value 10
+          }
+          {fltk::CheckButton} set_xy {
+            label xy
+            callback set_xy_cb
+            tooltip {Window will use this x,y rather than being positioned by the operating system.}
+            xywh {225 0 25 22} align 5 labelsize 11
+          }
+          {fltk::ValueInput} {} {
+            label {slider size}
+            callback slider_size_cb
+            tooltip {The size of the scroller}
+            xywh {245 0 45 22} align 17 when ENTER_KEY labelsize 11
+          }
+        }
+        {fltk::Group} gValues {
+          label Values
+          callback propagate_group open
+          xywh {80 147 290 23} align 4
+        } {
+          {fltk::ValueInput} {} {
+            label Value
+            callback value_cb
+            tooltip {The initial value of this widget}
+            xywh {0 0 55 22} align 5 when ENTER_KEY
+          }
+          {fltk::ValueInput} {} {
+            label min
+            callback min_cb
+            tooltip {The minimum value for this valuator}
+            xywh {55 0 55 22} align 21 when ENTER_KEY labelsize 11
+          }
+          {fltk::ValueInput} {} {
+            label max
+            callback max_cb
+            tooltip {The maximum value for this valuator}
+            xywh {110 0 55 23} align 21 when ENTER_KEY labelsize 11
+          }
+          {fltk::ValueInput} {} {
+            label step
+            callback step_cb
+            tooltip {step:
+Round all movements to multiples of this.
+}
+            xywh {165 0 55 22} align 21 when ENTER_KEY labelsize 11
+          }
+          {fltk::ValueInput} {} {
+            label line
+            callback line_cb
+            tooltip {linesize:
+Increment/decrement for arrow keys.}
+            xywh {245 0 45 22} align 21 when ENTER_KEY labelsize 11 minimum 1 step 1
+          }
+        }
+        {fltk::Group} gAttributes {
+          label Attributes
+          callback propagate_group open
+          xywh {80 171 280 44} align 4
+        } {
+          {fltk::CheckButton} {} {
+            label Visible
+            callback visible_cb
+            tooltip {If unchecked the widget is initially invisible.}
+            xywh {0 0 65 22}
+          }
+          {fltk::CheckButton} {} {
+            label Active
+            callback active_cb
+            tooltip {If unchecked the widget is initially inactive (disabled, grayed out).}
+            xywh {65 0 65 22}
+          }
+          {fltk::CheckButton} {} {
+            label Resizable
+            callback resizable_cb
+            tooltip {If on, this widget and all its parents are resizable.  When the parent resizes it moves/resizes all its children so that this widget's edges remain the same distance from all four sides of the parent.  If this is off this widget will not resize, unless it overlaps a resizable sibling.}
+            xywh {130 0 80 22}
+          }
+          {fltk::CheckButton} {} {
+            label Hotspot
+            callback hotspot_cb
+            tooltip {Positions the window so this widget is under the mouse.  This is done when show() is called.}
+            xywh {210 0 70 22}
+          }
+          {fltk::CheckButton} {} {
+            label Border
+            callback border_cb
+            tooltip {Enable the window manager border}
+            xywh {0 20 65 22}
+          }
+          {fltk::CheckButton} {} {
+            label Modal
+            callback modal_cb
+            tooltip {This window will stay on top of others in the application and will block events from going to other windows until it is hidden or closed.}
+            xywh {65 20 65 22}
+          }
+          {fltk::CheckButton} {} {
+            label Child
+            callback non_modal_cb
+            tooltip {This window will stay on top of others in the application.}
+            xywh {130 20 65 22}
+          }
+        }
+        {fltk::InvisibleBox} {} {
+          label Shortcut
+          xywh {25 215 55 25} align 40
+        }
+        {fltk::Button} {} {
+          callback shortcut_in_cb
+          tooltip {To set a shortcut:
+   Click here, then type the key combination you want.
+To delete the shortcut:
+   Click here, then type backspace.
+To get out of shortcut-setting mode:
+   Click the mouse on this again, or on some other field.}
+          xywh {80 216 290 22} align 36 color 7
+          extra_code {\#include "Shortcut_Button.h"}
+          class Shortcut_Button
+        }
+        {fltk::Input} {} {
+          label Tooltip
+          callback tooltip_cb
+          tooltip {The pop up tooltip which should be used for the widget.}
+          xywh {80 240 290 70} type Wordwrap resizable box BORDER_BOX color 0xffffe100
+        }
+      }
+      {fltk::Group} {} {
+        label Style
+        callback propagate_group open
+        private xywh {0 20 380 320} hide color 0xd4b38d00
+      } {
+        {fltk::Group} BoxColor {
+          callback propagate_group
+          private xywh {85 9 270 66}
+        } {
+          {fltk::Choice} {} {
+            label Box
+            callback box_cb
+            tooltip {Type of box to draw around the contents of the widget.}
+            xywh {0 0 270 22}
+          } {}
+          {fltk::LightButton} {} {
+            label Color
+            callback color_cb
+            tooltip {Color of the contents area.}
+            xywh {0 22 135 22} labelsize 11 textsize 11
+            extra_code {o->type(0);}
+          }
+          {fltk::LightButton} {} {
+            label {Text Color}
+            callback text_color_cb
+            tooltip {Color of text drawn in the widget.}
+            xywh {135 22 135 22} labelsize 11 textsize 11
+            extra_code {o->type(0);}
+          }
+          {fltk::LightButton} {} {
+            label {Selection Color}
+            callback selection_color_cb
+            tooltip {Color to draw behind selected text}
+            xywh {0 44 135 22} labelsize 11 textsize 11
+            extra_code {o->type(0);}
+          }
+          {fltk::LightButton} {} {
+            label {Selected Text Color}
+            callback selected_text_color_cb
+            tooltip {Color to draw selected text}
+            xywh {135 44 135 22} labelsize 11 textsize 11
+            extra_code {o->type(0);}
+          }
+        }
+        {fltk::Group} ButtonBox {
+          callback propagate_group
+          private xywh {85 88 270 66}
+        } {
+          {fltk::Choice} {} {
+            label {Button box}
+            callback button_box_cb open
+            tooltip {Type of box to draw around buttons}
+            xywh {0 0 270 22}
+          } {}
+          {fltk::LightButton} {} {
+            label {Button Color}
+            callback button_color_cb
+            tooltip {Color to draw buttons inside the widget.}
+            xywh {0 22 135 22} labelsize 11 textsize 11
+            extra_code {o->type(0);}
+          }
+          {fltk::LightButton} {} {
+            label {Label Color}
+            callback label_color_cb
+            tooltip {Color to draw the labels on buttons, and color to draw the label.}
+            xywh {135 22 135 22} labelsize 11 textsize 11
+            extra_code {o->type(0);}
+          }
+          {fltk::LightButton} {} {
+            label {Highlight Color}
+            callback highlight_color_cb
+            tooltip {Color to use to draw buttons when they are highlighted.  Use color zero (the black top-left chip in the color chooser) to disable highlighting.}
+            xywh {0 44 135 22} labelsize 11 textsize 11
+            extra_code {o->type(0);}
+          }
+          {fltk::LightButton} {} {
+            label {Highlight Label Color}
+            callback highlight_label_color_cb
+            tooltip {Color to draw the button labels when the buttons are highlighted.  Use color zero (the black top-left chip in the color chooser) to leave the label colors unchanged.}
+            xywh {135 44 135 22} labelsize 11 textsize 11
+            extra_code {o->type(0);}
+          }
+        }
+        {fltk::Group} Labels {
+          callback propagate_group
+          private xywh {85 165 270 80}
+        } {
+          {fltk::Choice} {} {
+            label {Label Style}
+            callback label_style_cb open
+            tooltip {How to draw the label.}
+            xywh {0 0 270 22}
+          } {}
+          {fltk::Choice} {} {
+            label {Label Font}
+            callback label_font_cb open
+            tooltip {Font to use for the label}
+            xywh {0 22 215 22}
+          } {}
+          {fltk::ValueInput} {} {
+            callback label_size_cb
+            tooltip {Size of the font to use for the label}
+            xywh {215 22 55 22} when ENTER_KEY maximum 100 step 0.1 value 14
+          }
+          {fltk::Choice} {} {
+            label {Text Font}
+            callback text_font_cb open
+            tooltip {Font to use for text displayed inside the widget}
+            xywh {0 55 215 22}
+          } {}
+          {fltk::ValueInput} {} {
+            callback text_size_cb
+            tooltip {Size of the font to use for text displayed inside the widget}
+            xywh {215 55 55 22} when ENTER_KEY maximum 100 step 0.1 value 14
+          }
+          {fltk::Widget} {} {
+            label resizable
+            xywh {0 77 270 3} align 2 hide deactivate
+          }
+        }
+        {fltk::Button} {} {
+          label {Reset to default}
+          callback default_cb
+          tooltip {Reset all the above items to the default values for this widget class.}
+          xywh {85 258 124 22}
+        }
+        {fltk::InvisibleBox} {} {
+          xywh {85 280 270 25} resizable
+        }
+      }
+      {fltk::Group} {} {
+        label {C++}
+        callback propagate_group open
+        xywh {0 20 380 320} resizable color 0x93d49c00
+      } {
+        {fltk::Input} {} {
+          label Name
+          callback name_cb
+          tooltip {The variable or member name in which to store a pointer to this widget.}
+          xywh {80 9 230 22} when CHANGED
+        }
+        {fltk::CheckButton} {} {
+          label public
+          callback name_public_cb
+          tooltip {Make the variable public}
+          xywh {315 9 50 22}
+        }
+        {fltk::Input} extra_code_input {
+          label {Extra Code}
+          user_data 0
+          callback extra_code_input_cb
+          tooltip {Extra code to be exectuted after the widget is created. The variable "o" points at the widget.}
+          xywh {80 37 285 99} type Multiline textfont 4 textsize 11
+        }
+        {fltk::Input} {} {
+          label Callback
+          callback callback_cb selected
+          tooltip {The name of the callback function, or code body of the callback function}
+          xywh {80 143 285 99} type Multiline textfont 4 textsize 11
+        }
+        {fltk::Widget} {} {
+          label resizable
+          xywh {80 154 165 65} hide deactivate resizable
+        }
+        {fltk::Input} {} {
+          label {User Data}
+          callback user_data_cb
+          tooltip {Value passed as the second argument to the callback.  This must be of the type given below.}
+          xywh {80 242 145 22}
+        }
+        {fltk::Choice} {} {
+          label When
+          callback when_cb
+          tooltip {What actions cause the callback to be called.}
+          xywh {265 242 100 22} when CHANGED
+        } {}
+        {fltk::Input} {} {
+          label Type
+          callback user_data_type_cb
+          tooltip {Type of User Data. This must be "long" or a pointer.}
+          xywh {80 264 145 22}
+        }
+      }
+    }
+    {fltk::Group} {} {open
+      xywh {0 350 380 24}
+    } {
+      {fltk::CheckButton} overlaybutton {
+        label {&Overlays}
+        callback overlay_cb
+        tooltip {Turns the overlays (red outlines) off so you can see the edges better.}
+        xywh {20 0 120 24} resizable
+        extra_code {extern bool overlays_invisible;
+o->value(!overlays_invisible);}
+      }
+      {fltk::ReturnButton} {} {
+        label OK
+        callback ok_cb
+        tooltip {Closes this attribute window}
+        xywh {235 1 65 23}
+      }
+      {fltk::Button} {} {
+        label Cancel
+        callback cancel_cb
+        tooltip {Sorry, cancel does not really work yet.}
+        xywh {310 1 65 23}
+      }
+      {fltk::LightButton} wLiveMode {
+        label {LiveMode!}
+        callback live_mode_cb
+        xywh {95 2 90 22}
+      }
+    }
+  }
+} 

Added: branches/branch-3.0-2011/fluid2/widget_panel.h
===================================================================
--- branches/branch-3.0-2011/fluid2/widget_panel.h	                        (rev 0)
+++ branches/branch-3.0-2011/fluid2/widget_panel.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,99 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#ifndef widget_panel_h
+#define widget_panel_h
+#include <fltk/Window.h>
+#include <fltk/Window.h>
+extern fltk::Window* widgetbin_panel;
+#include <fltk/Group.h>
+#include <fltk/Button.h>
+extern void type_make_cb(fltk::Button*, void*);
+fltk::Window* make_widgetbin();
+void type_make_cb(fltk::Widget*w,void*d);
+#include <fltk/TabGroup.h>
+extern void propagate_tabs(fltk::TabGroup*, void*);
+extern fltk::TabGroup* panel_tabs;
+extern void propagate_group(fltk::Group*, void*);
+extern fltk::Group* gInput;
+#include <fltk/Input.h>
+extern void user_class_cb(fltk::Input*, void*);
+#include <fltk/Choice.h>
+extern void subtype_cb(fltk::Choice*, void*);
+extern void label_cb(fltk::Input*, void*);
+extern fltk::Group* gAlignment;
+#include <fltk/CheckButton.h>
+extern void image_inlined_cb(fltk::CheckButton*, void*);
+extern fltk::CheckButton* include_image_button;
+#include <fltk/Widget.h>
+extern void align_cb(fltk::Button*, void*);
+extern fltk::Widget* image_label;
+extern void image_cb(fltk::Button*, void*);
+extern fltk::Button* image_button;
+extern fltk::Group* gDimensions;
+#include <fltk/ValueInput.h>
+extern void x_cb(fltk::ValueInput*, void*);
+extern fltk::ValueInput* widget_x;
+extern void y_cb(fltk::ValueInput*, void*);
+extern fltk::ValueInput* widget_y;
+extern void width_cb(fltk::ValueInput*, void*);
+extern fltk::ValueInput* widget_w;
+extern void height_cb(fltk::ValueInput*, void*);
+extern fltk::ValueInput* widget_h;
+extern void set_xy_cb(fltk::CheckButton*, void*);
+extern fltk::CheckButton* set_xy;
+extern void slider_size_cb(fltk::ValueInput*, void*);
+extern fltk::Group* gValues;
+extern void value_cb(fltk::ValueInput*, void*);
+extern void min_cb(fltk::ValueInput*, void*);
+extern void max_cb(fltk::ValueInput*, void*);
+extern void step_cb(fltk::ValueInput*, void*);
+extern void line_cb(fltk::ValueInput*, void*);
+extern fltk::Group* gAttributes;
+extern void visible_cb(fltk::CheckButton*, void*);
+extern void active_cb(fltk::CheckButton*, void*);
+extern void resizable_cb(fltk::CheckButton*, void*);
+extern void hotspot_cb(fltk::CheckButton*, void*);
+extern void border_cb(fltk::CheckButton*, void*);
+extern void modal_cb(fltk::CheckButton*, void*);
+extern void non_modal_cb(fltk::CheckButton*, void*);
+#include <fltk/InvisibleBox.h>
+#include "Shortcut_Button.h"
+extern void shortcut_in_cb(Shortcut_Button*, void*);
+#include <fltk/WordwrapInput.h>
+extern void tooltip_cb(fltk::WordwrapInput*, void*);
+extern void box_cb(fltk::Choice*, void*);
+#include <fltk/LightButton.h>
+extern void color_cb(fltk::LightButton*, void*);
+extern void text_color_cb(fltk::LightButton*, void*);
+extern void selection_color_cb(fltk::LightButton*, void*);
+extern void selected_text_color_cb(fltk::LightButton*, void*);
+extern void button_box_cb(fltk::Choice*, void*);
+extern void button_color_cb(fltk::LightButton*, void*);
+extern void label_color_cb(fltk::LightButton*, void*);
+extern void highlight_color_cb(fltk::LightButton*, void*);
+extern void highlight_label_color_cb(fltk::LightButton*, void*);
+extern void label_style_cb(fltk::Choice*, void*);
+extern void label_font_cb(fltk::Choice*, void*);
+extern void label_size_cb(fltk::ValueInput*, void*);
+extern void text_font_cb(fltk::Choice*, void*);
+extern void text_size_cb(fltk::ValueInput*, void*);
+extern void default_cb(fltk::Button*, void*);
+extern void name_cb(fltk::Input*, void*);
+extern void name_public_cb(fltk::CheckButton*, void*);
+#include <fltk/MultiLineInput.h>
+extern void extra_code_input_cb(fltk::MultiLineInput*, void*);
+extern fltk::MultiLineInput* extra_code_input;
+extern void callback_cb(fltk::MultiLineInput*, void*);
+extern void user_data_cb(fltk::Input*, void*);
+extern void when_cb(fltk::Choice*, void*);
+extern void user_data_type_cb(fltk::Input*, void*);
+extern bool overlays_invisible;
+extern void overlay_cb(fltk::CheckButton*, void*);
+extern fltk::CheckButton* overlaybutton;
+#include <fltk/ReturnButton.h>
+extern void ok_cb(fltk::ReturnButton*, void*);
+extern void cancel_cb(fltk::Button*, void*);
+extern void live_mode_cb(fltk::LightButton*, void*);
+extern fltk::LightButton* wLiveMode;
+fltk::Window* make_widget_panel();
+#endif

Modified: branches/branch-3.0-2011/ide/Xcode3/FLTK.xcodeproj/project.pbxproj
===================================================================
--- branches/branch-3.0-2011/ide/Xcode3/FLTK.xcodeproj/project.pbxproj	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/ide/Xcode3/FLTK.xcodeproj/project.pbxproj	2011-01-09 14:38:38 UTC (rev 8227)
@@ -506,155 +506,13 @@
 		C9A374AB3AD29E141C659819 /* fltk.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = FEB0F8FE6383384180570D94 /* fltk.framework */; };
 		C9C4C91FDA73557BB6B69F3D /* jchuff.c in Sources */ = {isa = PBXBuildFile; fileRef = D9DB580DCA05DE487FACA272 /* jchuff.c */; };
 		C9D72F10B7A22DD0349ABC68 /* fltk_forms.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 097D0B476E396B9AAC6FA1E0 /* fltk_forms.framework */; };
-		C9EDD4441274B93000ADB21C /* Enumerations.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84CE79448708855561FEE498 /* Enumerations.H */; };
-		C9EDD4451274B93000ADB21C /* Fl.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = C359E5D5187606DD69C7938B /* Fl.H */; };
-		C9EDD4461274B93000ADB21C /* Fl_Adjuster.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5CDA214AEABC15E3EF1BB172 /* Fl_Adjuster.H */; };
-		C9EDD4471274B93000ADB21C /* Fl_Bitmap.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = FE90AA3BB40510FA45E0C27B /* Fl_Bitmap.H */; };
-		C9EDD4481274B93000ADB21C /* Fl_Box.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 390863A4D5D1B4C7C9B58679 /* Fl_Box.H */; };
-		C9EDD4491274B93000ADB21C /* Fl_Browser.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = D90A34CD50A6825298459CCE /* Fl_Browser.H */; };
-		C9EDD44A1274B93000ADB21C /* Fl_Browser_.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 149DEBE486F3554738429684 /* Fl_Browser_.H */; };
-		C9EDD44B1274B93000ADB21C /* Fl_Button.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = E21339D33557BB5501B08AB1 /* Fl_Button.H */; };
-		C9EDD44C1274B93000ADB21C /* Fl_Cairo.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 87F89271469726AE756E4D93 /* Fl_Cairo.H */; };
-		C9EDD44D1274B93000ADB21C /* Fl_Cairo_Window.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8B02E11D61E46AD79DE7EFE7 /* Fl_Cairo_Window.H */; };
-		C9EDD44E1274B93000ADB21C /* Fl_Chart.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0CAFE7CA950A492FE35F2163 /* Fl_Chart.H */; };
-		C9EDD44F1274B93000ADB21C /* Fl_Check_Browser.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = A2B930ADD957B492869191EB /* Fl_Check_Browser.H */; };
-		C9EDD4501274B93000ADB21C /* Fl_Check_Button.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B1195741A8CCE772D17856C /* Fl_Check_Button.H */; };
-		C9EDD4511274B93000ADB21C /* Fl_Choice.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = C8AE10A8DDF53B8B27E3215A /* Fl_Choice.H */; };
-		C9EDD4521274B93000ADB21C /* Fl_Clock.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BCF393F94482AE7C7421397 /* Fl_Clock.H */; };
-		C9EDD4531274B93000ADB21C /* Fl_Color_Chooser.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2CD1EF8B4BFD0820E9A42641 /* Fl_Color_Chooser.H */; };
-		C9EDD4541274B93000ADB21C /* Fl_Counter.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE97D58B5B0F1A2A7DB2A3FF /* Fl_Counter.H */; };
-		C9EDD4551274B93000ADB21C /* Fl_Device.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 82863AEFE086C3469C386C22 /* Fl_Device.H */; };
-		C9EDD4561274B93000ADB21C /* Fl_Dial.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 02C21BB31E7DDFE9E76F4997 /* Fl_Dial.H */; };
-		C9EDD4571274B93000ADB21C /* Fl_Double_Window.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 80D32CF90973629228CAA7F0 /* Fl_Double_Window.H */; };
-		C9EDD4581274B93000ADB21C /* Fl_Export.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 53930BEE4CBAAF4C82825F9B /* Fl_Export.H */; };
-		C9EDD4591274B93000ADB21C /* Fl_File_Browser.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = DE2F47C61B9083A6E7811620 /* Fl_File_Browser.H */; };
-		C9EDD45A1274B93000ADB21C /* Fl_File_Chooser.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 729751A4A3DAAAF169C80ACC /* Fl_File_Chooser.H */; };
-		C9EDD45B1274B93000ADB21C /* Fl_File_Icon.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 18A8E88697605A73C46C0DDF /* Fl_File_Icon.H */; };
-		C9EDD45C1274B93000ADB21C /* Fl_File_Input.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0512326568039B9A0C5BD3DB /* Fl_File_Input.H */; };
-		C9EDD45D1274B93000ADB21C /* Fl_Fill_Dial.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = CEC9BC26680806AD2B47C07F /* Fl_Fill_Dial.H */; };
-		C9EDD45E1274B93000ADB21C /* Fl_Fill_Slider.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDEA9C0CFFA25A943140F7FC /* Fl_Fill_Slider.H */; };
-		C9EDD45F1274B93000ADB21C /* Fl_Float_Input.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00CAAA52DC3193E1133AE26C /* Fl_Float_Input.H */; };
-		C9EDD4601274B93000ADB21C /* Fl_FormsBitmap.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = E82DD2B5676CF315E945AF23 /* Fl_FormsBitmap.H */; };
-		C9EDD4611274B93000ADB21C /* Fl_FormsPixmap.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = B145D961F04ADDCF78EFDFD1 /* Fl_FormsPixmap.H */; };
-		C9EDD4621274B93000ADB21C /* Fl_Free.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D938B561E268ECE660B88D2 /* Fl_Free.H */; };
-		C9EDD4631274B93000ADB21C /* Fl_Group.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = BF88B604F8342EF96DFF5AEA /* Fl_Group.H */; };
-		C9EDD4641274B93000ADB21C /* Fl_Hold_Browser.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = A36535CFF8B14BA8B087A880 /* Fl_Hold_Browser.H */; };
-		C9EDD4651274B93000ADB21C /* Fl_Hor_Fill_Slider.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = EE6507EFCDDA13ACF9373E3E /* Fl_Hor_Fill_Slider.H */; };
-		C9EDD4661274B93000ADB21C /* Fl_Hor_Nice_Slider.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 21094B942E7FBFBCF1679259 /* Fl_Hor_Nice_Slider.H */; };
-		C9EDD4671274B93000ADB21C /* Fl_Hor_Slider.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = AE1717E43F50EBA343960B1E /* Fl_Hor_Slider.H */; };
-		C9EDD4681274B93000ADB21C /* Fl_Hor_Value_Slider.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5B8BFBDF9C48A998F0781C9E /* Fl_Hor_Value_Slider.H */; };
-		C9EDD4691274B93000ADB21C /* Fl_Image.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 332598626430923370C48554 /* Fl_Image.H */; };
-		C9EDD46A1274B93000ADB21C /* Fl_Input.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = EFEEE679374D7E4191873447 /* Fl_Input.H */; };
-		C9EDD46B1274B93000ADB21C /* Fl_Input_.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = A5166C3C9311628F6E450095 /* Fl_Input_.H */; };
-		C9EDD46C1274B93000ADB21C /* Fl_Input_Choice.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 648E9C3B61328280244FCCA5 /* Fl_Input_Choice.H */; };
-		C9EDD46D1274B93000ADB21C /* Fl_Int_Input.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1CFFC165E8EE6C1AD9CFD33C /* Fl_Int_Input.H */; };
-		C9EDD46E1274B93000ADB21C /* Fl_Light_Button.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6A59F303E6D6C2EE4481D78 /* Fl_Light_Button.H */; };
-		C9EDD46F1274B93000ADB21C /* Fl_Line_Dial.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 790078FB2B75406B2E250E59 /* Fl_Line_Dial.H */; };
-		C9EDD4701274B93000ADB21C /* Fl_Menu.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 75DEA03FA1E1CA10E4AF212A /* Fl_Menu.H */; };
-		C9EDD4711274B93000ADB21C /* Fl_Menu_.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8985E851BEC6BB2BC613E5AD /* Fl_Menu_.H */; };
-		C9EDD4721274B93000ADB21C /* Fl_Menu_Bar.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1DBDBB6B583C028BD8D1D2F4 /* Fl_Menu_Bar.H */; };
-		C9EDD4731274B93000ADB21C /* Fl_Menu_Button.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 97A233FBA4B73A1CA45A1388 /* Fl_Menu_Button.H */; };
-		C9EDD4741274B93000ADB21C /* Fl_Menu_Item.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = A0224B94F206123F3583F2A3 /* Fl_Menu_Item.H */; };
-		C9EDD4751274B93000ADB21C /* Fl_Menu_Window.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8DFB9E7E8DB3AEC762613348 /* Fl_Menu_Window.H */; };
-		C9EDD4761274B93000ADB21C /* Fl_Multi_Browser.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = B707DB501C8702446FA24146 /* Fl_Multi_Browser.H */; };
-		C9EDD4771274B93000ADB21C /* Fl_Multi_Label.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = D513CAE8AAED897D6B3B72F7 /* Fl_Multi_Label.H */; };
-		C9EDD4781274B93000ADB21C /* Fl_Multiline_Input.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8A322CF28E7EAA76A260345A /* Fl_Multiline_Input.H */; };
-		C9EDD4791274B93000ADB21C /* Fl_Multiline_Output.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = AC5B933E5C802F33BC495FF8 /* Fl_Multiline_Output.H */; };
-		C9EDD47A1274B93000ADB21C /* Fl_Native_File_Chooser.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = F91DEF40DC3592BE52CAB001 /* Fl_Native_File_Chooser.H */; };
-		C9EDD47B1274B93000ADB21C /* Fl_Nice_Slider.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = F8990CDEFF54C483BD6BF716 /* Fl_Nice_Slider.H */; };
-		C9EDD47C1274B93000ADB21C /* Fl_Object.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = EE2FB1F7B99BE408E1B4DFB7 /* Fl_Object.H */; };
-		C9EDD47D1274B93000ADB21C /* Fl_Output.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = D585CB55BDA143D343033352 /* Fl_Output.H */; };
-		C9EDD47E1274B93000ADB21C /* Fl_Overlay_Window.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1FCDDD4E00F7CAA8193CAE04 /* Fl_Overlay_Window.H */; };
-		C9EDD47F1274B93000ADB21C /* Fl_Pack.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 52C3B1D0A473BDC01D497917 /* Fl_Pack.H */; };
-		C9EDD4801274B93000ADB21C /* Fl_Pixmap.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = B8455C1BD96FF6FB3C197C34 /* Fl_Pixmap.H */; };
-		C9EDD4811274B93000ADB21C /* Fl_Plugin.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = A8F89055CABBCFECCC4CC940 /* Fl_Plugin.H */; };
-		C9EDD4821274B93000ADB21C /* Fl_Positioner.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 20A898FCF6349F72BABDC497 /* Fl_Positioner.H */; };
-		C9EDD4831274B93000ADB21C /* Fl_Preferences.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 91173358E60D137409651286 /* Fl_Preferences.H */; };
-		C9EDD4841274B93000ADB21C /* Fl_Printer.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = A694A1F3298E15E532C3F784 /* Fl_Printer.H */; };
-		C9EDD4851274B93000ADB21C /* Fl_Progress.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4CD4094D8712818EACF5C7C5 /* Fl_Progress.H */; };
-		C9EDD4861274B93000ADB21C /* Fl_RGB_Image.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1072C2A463FBCF2C5E278649 /* Fl_RGB_Image.H */; };
-		C9EDD4871274B93000ADB21C /* Fl_Radio_Button.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 59EAC37D26FEC2AB49D79C08 /* Fl_Radio_Button.H */; };
-		C9EDD4881274B93000ADB21C /* Fl_Radio_Light_Button.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 03D5B076E8097600496915F7 /* Fl_Radio_Light_Button.H */; };
-		C9EDD4891274B93000ADB21C /* Fl_Radio_Round_Button.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = FD1BB104911A6726B02EEE37 /* Fl_Radio_Round_Button.H */; };
-		C9EDD48A1274B93000ADB21C /* Fl_Repeat_Button.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4F64CD29833871B09CCB278E /* Fl_Repeat_Button.H */; };
-		C9EDD48B1274B93000ADB21C /* Fl_Return_Button.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = CFE13249EA12A63C478888A8 /* Fl_Return_Button.H */; };
-		C9EDD48C1274B93000ADB21C /* Fl_Roller.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9961D74307F5B7D0FE016FC7 /* Fl_Roller.H */; };
-		C9EDD48D1274B93000ADB21C /* Fl_Round_Button.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 270962DA6A7684128875ADDE /* Fl_Round_Button.H */; };
-		C9EDD48E1274B93000ADB21C /* Fl_Round_Clock.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 461BBD068DF8C58F4FFB131B /* Fl_Round_Clock.H */; };
-		C9EDD48F1274B93000ADB21C /* Fl_Scroll.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = EC2BAEE540612218DC9EEC75 /* Fl_Scroll.H */; };
-		C9EDD4901274B93000ADB21C /* Fl_Scrollbar.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 28F3E4EBB6E5F8420624A5DA /* Fl_Scrollbar.H */; };
-		C9EDD4911274B93000ADB21C /* Fl_Secret_Input.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 42FEA3A2967D04217C27FA61 /* Fl_Secret_Input.H */; };
-		C9EDD4921274B93000ADB21C /* Fl_Select_Browser.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DA766AE10DC532F3D0401A2 /* Fl_Select_Browser.H */; };
-		C9EDD4931274B93000ADB21C /* Fl_Shared_Image.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = A46A39199806D09CE0ABEE59 /* Fl_Shared_Image.H */; };
-		C9EDD4941274B93000ADB21C /* Fl_Simple_Counter.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B57B581401BD8575BFAF2F1 /* Fl_Simple_Counter.H */; };
-		C9EDD4951274B93000ADB21C /* Fl_Single_Window.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0EC11A5CAD4E3607A72BEF84 /* Fl_Single_Window.H */; };
-		C9EDD4961274B93000ADB21C /* Fl_Slider.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = F2E5612A81A6E8D53ED91CAE /* Fl_Slider.H */; };
-		C9EDD4971274B93000ADB21C /* Fl_Spinner.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 76DD2676B757CB7F19B6EF94 /* Fl_Spinner.H */; };
-		C9EDD4981274B93000ADB21C /* Fl_Sys_Menu_Bar.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = A71FBABB9EC90A680225B485 /* Fl_Sys_Menu_Bar.H */; };
-		C9EDD4991274B93000ADB21C /* Fl_Table.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 70CEC1A84E24275F0861403F /* Fl_Table.H */; };
-		C9EDD49A1274B93000ADB21C /* Fl_Table_Row.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0CFB24E7079EC601366BCECF /* Fl_Table_Row.H */; };
-		C9EDD49B1274B93000ADB21C /* Fl_Tabs.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = B8166E088FC996C9A89D2D37 /* Fl_Tabs.H */; };
-		C9EDD49C1274B93000ADB21C /* Fl_Text_Buffer.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 50E8E04A4389A8A2DAB7C53B /* Fl_Text_Buffer.H */; };
-		C9EDD49D1274B93000ADB21C /* Fl_Text_Display.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 64C9C1F20285A471398A7818 /* Fl_Text_Display.H */; };
-		C9EDD49E1274B93000ADB21C /* Fl_Text_Editor.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3E092095198BF5104BE09D78 /* Fl_Text_Editor.H */; };
-		C9EDD49F1274B93000ADB21C /* Fl_Tile.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = FAA6BA6E4DC1AF28F5FC8466 /* Fl_Tile.H */; };
-		C9EDD4A01274B93000ADB21C /* Fl_Tiled_Image.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 72C56BE76B2ECF1908249803 /* Fl_Tiled_Image.H */; };
-		C9EDD4A11274B93000ADB21C /* Fl_Timer.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCEE2710A7119519AEF640AD /* Fl_Timer.H */; };
-		C9EDD4A21274B93000ADB21C /* Fl_Toggle_Button.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = B7E85200DC5E9EBB605EE1CB /* Fl_Toggle_Button.H */; };
-		C9EDD4A31274B93000ADB21C /* Fl_Toggle_Light_Button.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 79EE61E7DCB96EF56E71DD19 /* Fl_Toggle_Light_Button.H */; };
-		C9EDD4A41274B93000ADB21C /* Fl_Toggle_Round_Button.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = A2C688326DDAF4AA29EA9120 /* Fl_Toggle_Round_Button.H */; };
-		C9EDD4A51274B93000ADB21C /* Fl_Tooltip.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8C5CB5680264401FDA1C693C /* Fl_Tooltip.H */; };
-		C9EDD4A61274B93000ADB21C /* Fl_Tree.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5E0EC227A972D2E4F34A2CEB /* Fl_Tree.H */; };
-		C9EDD4A71274B93000ADB21C /* Fl_Tree_Item.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0BD550D5F4A9E53E93B19234 /* Fl_Tree_Item.H */; };
-		C9EDD4A81274B93000ADB21C /* Fl_Tree_Item_Array.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = CCDF80CC7D27689DDC83FBA1 /* Fl_Tree_Item_Array.H */; };
-		C9EDD4A91274B93000ADB21C /* Fl_Tree_Prefs.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7E51DAB7D0F93ACFB736EE9A /* Fl_Tree_Prefs.H */; };
-		C9EDD4AA1274B93000ADB21C /* Fl_Valuator.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = F8BAA8B283D4CF4D904B6486 /* Fl_Valuator.H */; };
-		C9EDD4AB1274B93000ADB21C /* Fl_Value_Input.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = FF88A1DACCAFA2D143A7F234 /* Fl_Value_Input.H */; };
-		C9EDD4AC1274B93000ADB21C /* Fl_Value_Output.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 71034AFDF079B24D53146252 /* Fl_Value_Output.H */; };
-		C9EDD4AD1274B93000ADB21C /* Fl_Value_Slider.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 80D58C2358E8BBA86A8ADB7C /* Fl_Value_Slider.H */; };
-		C9EDD4AE1274B93000ADB21C /* Fl_Widget.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5426FC8371108CE8BCAB85B2 /* Fl_Widget.H */; };
-		C9EDD4AF1274B93000ADB21C /* Fl_Window.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = F98FE04C081FB5B1161C546C /* Fl_Window.H */; };
-		C9EDD4B01274B93000ADB21C /* Fl_Wizard.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = A57A8421086F1F0F9906B692 /* Fl_Wizard.H */; };
-		C9EDD4B11274B93000ADB21C /* Fl_XBM_Image.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = D2DE1079C826533A91053A9C /* Fl_XBM_Image.H */; };
-		C9EDD4B21274B93000ADB21C /* Fl_XPM_Image.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1433F1B8C4085D5D5E1BA0E1 /* Fl_XPM_Image.H */; };
-		C9EDD4B31274B93000ADB21C /* Xutf8.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 91A43F37963443EA5E91BF1F /* Xutf8.h */; };
-		C9EDD4B41274B93000ADB21C /* dirent.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = E448719A354B3D80FD2E1992 /* dirent.h */; };
-		C9EDD4B51274B93000ADB21C /* filename.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = AF65626F49A71525D24ED1B0 /* filename.H */; };
-		C9EDD4B61274B93000ADB21C /* fl_ask.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 87259ACF8723616344D9AEB2 /* fl_ask.H */; };
-		C9EDD4B71274B93000ADB21C /* fl_draw.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2621527FD926C67B778C41F3 /* fl_draw.H */; };
-		C9EDD4B81274B93000ADB21C /* fl_message.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = A8B7D1DA9AAC707EBD991D57 /* fl_message.H */; };
-		C9EDD4B91274B93000ADB21C /* fl_show_colormap.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7574410DEB61AC3D68A6C137 /* fl_show_colormap.H */; };
-		C9EDD4BA1274B93000ADB21C /* fl_show_input.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = EFAE92A1C7CA90BC56E5A70A /* fl_show_input.H */; };
-		C9EDD4BB1274B93000ADB21C /* fl_types.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = B719FC0289E54CA915BC0B94 /* fl_types.h */; };
-		C9EDD4BC1274B93000ADB21C /* fl_utf8.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4F46F93E8F77640543107453 /* fl_utf8.h */; };
-		C9EDD4BD1274B93000ADB21C /* mac.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = AC13C8877FA6231BEBF524FD /* mac.H */; };
-		C9EDD4BE1274B93000ADB21C /* math.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1D499CE6ECA4995EEA46EAD7 /* math.h */; };
-		C9EDD4BF1274B93000ADB21C /* names.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = D5CE28437ABB8513BE08AC77 /* names.h */; };
-		C9EDD4C01274B93000ADB21C /* win32.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 62281FC096BA407C4F1E6824 /* win32.H */; };
-		C9EDD4C11274B93000ADB21C /* x.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 83CED42A779FA76E98D37CA8 /* x.H */; };
-		C9EDD4C21274B93000ADB21C /* Fl_Paged_Device.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4CABCBB89F9DD5CF57BB9779 /* Fl_Paged_Device.H */; };
-		C9EDD4C31274B94D00ADB21C /* Fl_Gl_Window.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = E7C720E51DAC292F13358811 /* Fl_Gl_Window.H */; };
-		C9EDD4C41274B94D00ADB21C /* gl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8C1CBF782BBD9CCBFC0B451B /* gl.h */; };
-		C9EDD4C51274B94D00ADB21C /* gl2opengl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4C9AF6F2C1B78A67FFD177F9 /* gl2opengl.h */; };
-		C9EDD4C61274B94D00ADB21C /* gl_draw.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 88C72DFE480F42D0547F786B /* gl_draw.H */; };
-		C9EDD4C71274B94D00ADB21C /* glu.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = E159325B70E8DAA4D9DE0C1B /* glu.h */; };
-		C9EDD4C81274B94D00ADB21C /* glut.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 451D01896EFDD83277515630 /* glut.H */; };
-		C9EDD4C91274B95700ADB21C /* Fl_BMP_Image.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = B20D11CF3F871C99011F632E /* Fl_BMP_Image.H */; };
-		C9EDD4CA1274B95700ADB21C /* Fl_GIF_Image.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = BA939493F873CF0518DB0A1B /* Fl_GIF_Image.H */; };
-		C9EDD4CB1274B95700ADB21C /* Fl_Help_Dialog.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = A2E97BA0812AEC32965573B8 /* Fl_Help_Dialog.H */; };
-		C9EDD4CC1274B95700ADB21C /* Fl_Help_View.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 31D736821E68F01A1A11FC9F /* Fl_Help_View.H */; };
-		C9EDD4CD1274B95700ADB21C /* Fl_JPEG_Image.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 15B635124165659EFD5640FF /* Fl_JPEG_Image.H */; };
-		C9EDD4CE1274B95700ADB21C /* Fl_PNG_Image.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 87F83C8E6003FAE14C4E8249 /* Fl_PNG_Image.H */; };
-		C9EDD4CF1274B95700ADB21C /* Fl_PNM_Image.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = 330837DFFF31CE2EB245C7EC /* Fl_PNM_Image.H */; };
 		C9EDD4E01274BB7000ADB21C /* png.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C9EDD4DE1274BB6600ADB21C /* png.h */; };
 		C9EDD4E11274BB7000ADB21C /* pngconf.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C9EDD4DF1274BB6600ADB21C /* pngconf.h */; };
 		C9EDD4E91274BBC000ADB21C /* jconfig.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C9EDD4E31274BBB600ADB21C /* jconfig.h */; };
 		C9EDD4EA1274BBC000ADB21C /* jerror.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C9EDD4E41274BBB600ADB21C /* jerror.h */; };
 		C9EDD4EB1274BBC000ADB21C /* jmorecfg.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C9EDD4E51274BBB600ADB21C /* jmorecfg.h */; };
 		C9EDD4EC1274BBC000ADB21C /* jpeglib.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C9EDD4E61274BBB600ADB21C /* jpeglib.h */; };
-		C9EDD4ED1274BBCD00ADB21C /* forms.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = E0132688B22159A85307F264 /* forms.H */; };
 		C9EDD5531274C04500ADB21C /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05376DC900B2C885B847EA36 /* OpenGL.framework */; };
-		C9EDD5B31274C51600ADB21C /* Fl_PostScript.H in CopyFiles */ = {isa = PBXBuildFile; fileRef = C9EDD5B11274C4FA00ADB21C /* Fl_PostScript.H */; };
 		C9F9C0DE12CFCDAC0067ADCC /* rgb.txt in Resources */ = {isa = PBXBuildFile; fileRef = C9F9C0DD12CFCDAC0067ADCC /* rgb.txt */; };
 		CA035B0265710EFABD6E632D /* Fl_Dial.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 3AFC31503AB99F6D00BAC647 /* Fl_Dial.cxx */; };
 		CAA4C60E679571629681FAC8 /* fltk.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = FEB0F8FE6383384180570D94 /* fltk.framework */; };
@@ -3683,148 +3541,6 @@
 			dstPath = ../Headers/FL;
 			dstSubfolderSpec = 7;
 			files = (
-				C9EDD4ED1274BBCD00ADB21C /* forms.H in CopyFiles */,
-				C9EDD4C91274B95700ADB21C /* Fl_BMP_Image.H in CopyFiles */,
-				C9EDD4CA1274B95700ADB21C /* Fl_GIF_Image.H in CopyFiles */,
-				C9EDD4CB1274B95700ADB21C /* Fl_Help_Dialog.H in CopyFiles */,
-				C9EDD4CC1274B95700ADB21C /* Fl_Help_View.H in CopyFiles */,
-				C9EDD4CD1274B95700ADB21C /* Fl_JPEG_Image.H in CopyFiles */,
-				C9EDD4CE1274B95700ADB21C /* Fl_PNG_Image.H in CopyFiles */,
-				C9EDD4CF1274B95700ADB21C /* Fl_PNM_Image.H in CopyFiles */,
-				C9EDD4C31274B94D00ADB21C /* Fl_Gl_Window.H in CopyFiles */,
-				C9EDD4C41274B94D00ADB21C /* gl.h in CopyFiles */,
-				C9EDD4C51274B94D00ADB21C /* gl2opengl.h in CopyFiles */,
-				C9EDD4C61274B94D00ADB21C /* gl_draw.H in CopyFiles */,
-				C9EDD4C71274B94D00ADB21C /* glu.h in CopyFiles */,
-				C9EDD4C81274B94D00ADB21C /* glut.H in CopyFiles */,
-				C9EDD4441274B93000ADB21C /* Enumerations.H in CopyFiles */,
-				C9EDD4451274B93000ADB21C /* Fl.H in CopyFiles */,
-				C9EDD4461274B93000ADB21C /* Fl_Adjuster.H in CopyFiles */,
-				C9EDD4471274B93000ADB21C /* Fl_Bitmap.H in CopyFiles */,
-				C9EDD4481274B93000ADB21C /* Fl_Box.H in CopyFiles */,
-				C9EDD4491274B93000ADB21C /* Fl_Browser.H in CopyFiles */,
-				C9EDD44A1274B93000ADB21C /* Fl_Browser_.H in CopyFiles */,
-				C9EDD44B1274B93000ADB21C /* Fl_Button.H in CopyFiles */,
-				C9EDD44C1274B93000ADB21C /* Fl_Cairo.H in CopyFiles */,
-				C9EDD44D1274B93000ADB21C /* Fl_Cairo_Window.H in CopyFiles */,
-				C9EDD44E1274B93000ADB21C /* Fl_Chart.H in CopyFiles */,
-				C9EDD44F1274B93000ADB21C /* Fl_Check_Browser.H in CopyFiles */,
-				C9EDD4501274B93000ADB21C /* Fl_Check_Button.H in CopyFiles */,
-				C9EDD4511274B93000ADB21C /* Fl_Choice.H in CopyFiles */,
-				C9EDD4521274B93000ADB21C /* Fl_Clock.H in CopyFiles */,
-				C9EDD4531274B93000ADB21C /* Fl_Color_Chooser.H in CopyFiles */,
-				C9EDD4541274B93000ADB21C /* Fl_Counter.H in CopyFiles */,
-				C9EDD4551274B93000ADB21C /* Fl_Device.H in CopyFiles */,
-				C9EDD4561274B93000ADB21C /* Fl_Dial.H in CopyFiles */,
-				C9EDD4571274B93000ADB21C /* Fl_Double_Window.H in CopyFiles */,
-				C9EDD4581274B93000ADB21C /* Fl_Export.H in CopyFiles */,
-				C9EDD4591274B93000ADB21C /* Fl_File_Browser.H in CopyFiles */,
-				C9EDD45A1274B93000ADB21C /* Fl_File_Chooser.H in CopyFiles */,
-				C9EDD45B1274B93000ADB21C /* Fl_File_Icon.H in CopyFiles */,
-				C9EDD45C1274B93000ADB21C /* Fl_File_Input.H in CopyFiles */,
-				C9EDD45D1274B93000ADB21C /* Fl_Fill_Dial.H in CopyFiles */,
-				C9EDD45E1274B93000ADB21C /* Fl_Fill_Slider.H in CopyFiles */,
-				C9EDD45F1274B93000ADB21C /* Fl_Float_Input.H in CopyFiles */,
-				C9EDD4601274B93000ADB21C /* Fl_FormsBitmap.H in CopyFiles */,
-				C9EDD4611274B93000ADB21C /* Fl_FormsPixmap.H in CopyFiles */,
-				C9EDD4621274B93000ADB21C /* Fl_Free.H in CopyFiles */,
-				C9EDD4631274B93000ADB21C /* Fl_Group.H in CopyFiles */,
-				C9EDD4641274B93000ADB21C /* Fl_Hold_Browser.H in CopyFiles */,
-				C9EDD4651274B93000ADB21C /* Fl_Hor_Fill_Slider.H in CopyFiles */,
-				C9EDD4661274B93000ADB21C /* Fl_Hor_Nice_Slider.H in CopyFiles */,
-				C9EDD4671274B93000ADB21C /* Fl_Hor_Slider.H in CopyFiles */,
-				C9EDD4681274B93000ADB21C /* Fl_Hor_Value_Slider.H in CopyFiles */,
-				C9EDD4691274B93000ADB21C /* Fl_Image.H in CopyFiles */,
-				C9EDD46A1274B93000ADB21C /* Fl_Input.H in CopyFiles */,
-				C9EDD46B1274B93000ADB21C /* Fl_Input_.H in CopyFiles */,
-				C9EDD46C1274B93000ADB21C /* Fl_Input_Choice.H in CopyFiles */,
-				C9EDD46D1274B93000ADB21C /* Fl_Int_Input.H in CopyFiles */,
-				C9EDD46E1274B93000ADB21C /* Fl_Light_Button.H in CopyFiles */,
-				C9EDD46F1274B93000ADB21C /* Fl_Line_Dial.H in CopyFiles */,
-				C9EDD4701274B93000ADB21C /* Fl_Menu.H in CopyFiles */,
-				C9EDD4711274B93000ADB21C /* Fl_Menu_.H in CopyFiles */,
-				C9EDD4721274B93000ADB21C /* Fl_Menu_Bar.H in CopyFiles */,
-				C9EDD4731274B93000ADB21C /* Fl_Menu_Button.H in CopyFiles */,
-				C9EDD4741274B93000ADB21C /* Fl_Menu_Item.H in CopyFiles */,
-				C9EDD4751274B93000ADB21C /* Fl_Menu_Window.H in CopyFiles */,
-				C9EDD4761274B93000ADB21C /* Fl_Multi_Browser.H in CopyFiles */,
-				C9EDD4771274B93000ADB21C /* Fl_Multi_Label.H in CopyFiles */,
-				C9EDD4781274B93000ADB21C /* Fl_Multiline_Input.H in CopyFiles */,
-				C9EDD4791274B93000ADB21C /* Fl_Multiline_Output.H in CopyFiles */,
-				C9EDD47A1274B93000ADB21C /* Fl_Native_File_Chooser.H in CopyFiles */,
-				C9EDD47B1274B93000ADB21C /* Fl_Nice_Slider.H in CopyFiles */,
-				C9EDD47C1274B93000ADB21C /* Fl_Object.H in CopyFiles */,
-				C9EDD47D1274B93000ADB21C /* Fl_Output.H in CopyFiles */,
-				C9EDD47E1274B93000ADB21C /* Fl_Overlay_Window.H in CopyFiles */,
-				C9EDD47F1274B93000ADB21C /* Fl_Pack.H in CopyFiles */,
-				C9EDD4801274B93000ADB21C /* Fl_Pixmap.H in CopyFiles */,
-				C9EDD4811274B93000ADB21C /* Fl_Plugin.H in CopyFiles */,
-				C9EDD4821274B93000ADB21C /* Fl_Positioner.H in CopyFiles */,
-				C9EDD5B31274C51600ADB21C /* Fl_PostScript.H in CopyFiles */,
-				C9EDD4831274B93000ADB21C /* Fl_Preferences.H in CopyFiles */,
-				C9EDD4841274B93000ADB21C /* Fl_Printer.H in CopyFiles */,
-				C9EDD4851274B93000ADB21C /* Fl_Progress.H in CopyFiles */,
-				C9EDD4861274B93000ADB21C /* Fl_RGB_Image.H in CopyFiles */,
-				C9EDD4871274B93000ADB21C /* Fl_Radio_Button.H in CopyFiles */,
-				C9EDD4881274B93000ADB21C /* Fl_Radio_Light_Button.H in CopyFiles */,
-				C9EDD4891274B93000ADB21C /* Fl_Radio_Round_Button.H in CopyFiles */,
-				C9EDD48A1274B93000ADB21C /* Fl_Repeat_Button.H in CopyFiles */,
-				C9EDD48B1274B93000ADB21C /* Fl_Return_Button.H in CopyFiles */,
-				C9EDD48C1274B93000ADB21C /* Fl_Roller.H in CopyFiles */,
-				C9EDD48D1274B93000ADB21C /* Fl_Round_Button.H in CopyFiles */,
-				C9EDD48E1274B93000ADB21C /* Fl_Round_Clock.H in CopyFiles */,
-				C9EDD48F1274B93000ADB21C /* Fl_Scroll.H in CopyFiles */,
-				C9EDD4901274B93000ADB21C /* Fl_Scrollbar.H in CopyFiles */,
-				C9EDD4911274B93000ADB21C /* Fl_Secret_Input.H in CopyFiles */,
-				C9EDD4921274B93000ADB21C /* Fl_Select_Browser.H in CopyFiles */,
-				C9EDD4931274B93000ADB21C /* Fl_Shared_Image.H in CopyFiles */,
-				C9EDD4941274B93000ADB21C /* Fl_Simple_Counter.H in CopyFiles */,
-				C9EDD4951274B93000ADB21C /* Fl_Single_Window.H in CopyFiles */,
-				C9EDD4961274B93000ADB21C /* Fl_Slider.H in CopyFiles */,
-				C9EDD4971274B93000ADB21C /* Fl_Spinner.H in CopyFiles */,
-				C9EDD4981274B93000ADB21C /* Fl_Sys_Menu_Bar.H in CopyFiles */,
-				C9EDD4991274B93000ADB21C /* Fl_Table.H in CopyFiles */,
-				C9EDD49A1274B93000ADB21C /* Fl_Table_Row.H in CopyFiles */,
-				C9EDD49B1274B93000ADB21C /* Fl_Tabs.H in CopyFiles */,
-				C9EDD49C1274B93000ADB21C /* Fl_Text_Buffer.H in CopyFiles */,
-				C9EDD49D1274B93000ADB21C /* Fl_Text_Display.H in CopyFiles */,
-				C9EDD49E1274B93000ADB21C /* Fl_Text_Editor.H in CopyFiles */,
-				C9EDD49F1274B93000ADB21C /* Fl_Tile.H in CopyFiles */,
-				C9EDD4A01274B93000ADB21C /* Fl_Tiled_Image.H in CopyFiles */,
-				C9EDD4A11274B93000ADB21C /* Fl_Timer.H in CopyFiles */,
-				C9EDD4A21274B93000ADB21C /* Fl_Toggle_Button.H in CopyFiles */,
-				C9EDD4A31274B93000ADB21C /* Fl_Toggle_Light_Button.H in CopyFiles */,
-				C9EDD4A41274B93000ADB21C /* Fl_Toggle_Round_Button.H in CopyFiles */,
-				C9EDD4A51274B93000ADB21C /* Fl_Tooltip.H in CopyFiles */,
-				C9EDD4A61274B93000ADB21C /* Fl_Tree.H in CopyFiles */,
-				C9EDD4A71274B93000ADB21C /* Fl_Tree_Item.H in CopyFiles */,
-				C9EDD4A81274B93000ADB21C /* Fl_Tree_Item_Array.H in CopyFiles */,
-				C9EDD4A91274B93000ADB21C /* Fl_Tree_Prefs.H in CopyFiles */,
-				C9EDD4AA1274B93000ADB21C /* Fl_Valuator.H in CopyFiles */,
-				C9EDD4AB1274B93000ADB21C /* Fl_Value_Input.H in CopyFiles */,
-				C9EDD4AC1274B93000ADB21C /* Fl_Value_Output.H in CopyFiles */,
-				C9EDD4AD1274B93000ADB21C /* Fl_Value_Slider.H in CopyFiles */,
-				C9EDD4AE1274B93000ADB21C /* Fl_Widget.H in CopyFiles */,
-				C9EDD4AF1274B93000ADB21C /* Fl_Window.H in CopyFiles */,
-				C9EDD4B01274B93000ADB21C /* Fl_Wizard.H in CopyFiles */,
-				C9EDD4B11274B93000ADB21C /* Fl_XBM_Image.H in CopyFiles */,
-				C9EDD4B21274B93000ADB21C /* Fl_XPM_Image.H in CopyFiles */,
-				C9EDD4B31274B93000ADB21C /* Xutf8.h in CopyFiles */,
-				C9EDD4B41274B93000ADB21C /* dirent.h in CopyFiles */,
-				C9EDD4B51274B93000ADB21C /* filename.H in CopyFiles */,
-				C9EDD4B61274B93000ADB21C /* fl_ask.H in CopyFiles */,
-				C9EDD4B71274B93000ADB21C /* fl_draw.H in CopyFiles */,
-				C9EDD4B81274B93000ADB21C /* fl_message.H in CopyFiles */,
-				C9EDD4B91274B93000ADB21C /* fl_show_colormap.H in CopyFiles */,
-				C9EDD4BA1274B93000ADB21C /* fl_show_input.H in CopyFiles */,
-				C9EDD4BB1274B93000ADB21C /* fl_types.h in CopyFiles */,
-				C9EDD4BC1274B93000ADB21C /* fl_utf8.h in CopyFiles */,
-				C9EDD4BD1274B93000ADB21C /* mac.H in CopyFiles */,
-				C9EDD4BE1274B93000ADB21C /* math.h in CopyFiles */,
-				C9EDD4BF1274B93000ADB21C /* names.h in CopyFiles */,
-				C9EDD4C01274B93000ADB21C /* win32.H in CopyFiles */,
-				C9EDD4C11274B93000ADB21C /* x.H in CopyFiles */,
-				C9EDD4C21274B93000ADB21C /* Fl_Paged_Device.H in CopyFiles */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -4039,17 +3755,13 @@
 
 /* Begin PBXFileReference section */
 		00B08A2C8EA901C350696F8D /* Fl_compose.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_compose.cxx; path = ../../src/Fl_compose.cxx; sourceTree = SOURCE_ROOT; };
-		00CAAA52DC3193E1133AE26C /* Fl_Float_Input.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Float_Input.H; path = ../../FL/Fl_Float_Input.H; sourceTree = SOURCE_ROOT; };
 		00E3864092375950FE42449E /* Fl_Tree_Item_Array.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Tree_Item_Array.cxx; path = ../../src/Fl_Tree_Item_Array.cxx; sourceTree = SOURCE_ROOT; };
 		020FFBC4E06A072BF8D098FB /* resize.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = resize.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		02C21BB31E7DDFE9E76F4997 /* Fl_Dial.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Dial.H; path = ../../FL/Fl_Dial.H; sourceTree = SOURCE_ROOT; };
 		02EE866C628E67B0928F7E6C /* output.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = output.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		031DE3DC995A7F7219A471E9 /* resizebox.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = resizebox.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		0330777F0ECC3BA2B055C80E /* Fl_File_Icon2.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_File_Icon2.cxx; path = ../../src/Fl_File_Icon2.cxx; sourceTree = SOURCE_ROOT; };
 		037E92E807DF3B8C0B19FF85 /* pngrtran.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngrtran.c; path = ../../png/pngrtran.c; sourceTree = SOURCE_ROOT; };
 		03B092065D7DE42B7F633A41 /* message.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = message.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		03D5B076E8097600496915F7 /* Fl_Radio_Light_Button.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Radio_Light_Button.H; path = ../../FL/Fl_Radio_Light_Button.H; sourceTree = SOURCE_ROOT; };
-		0512326568039B9A0C5BD3DB /* Fl_File_Input.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_File_Input.H; path = ../../FL/Fl_File_Input.H; sourceTree = SOURCE_ROOT; };
 		052F1F0502DC2E28EA0D2405 /* code.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = code.cxx; path = ../../fluid/code.cxx; sourceTree = SOURCE_ROOT; };
 		05376DC900B2C885B847EA36 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
 		058BCBC36ADE724A418F1C43 /* Fl_Color_Chooser.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Color_Chooser.cxx; path = ../../src/Fl_Color_Chooser.cxx; sourceTree = SOURCE_ROOT; };
@@ -4066,36 +3778,27 @@
 		0B5987E1A293E67A6290612A /* fl_line_style.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_line_style.cxx; path = ../../src/fl_line_style.cxx; sourceTree = SOURCE_ROOT; };
 		0B800D01D215C41573FFE4DA /* Fl_Type.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Type.cxx; path = ../../fluid/Fl_Type.cxx; sourceTree = SOURCE_ROOT; };
 		0B9D4355B2E878715DD43AD3 /* Fl_Widget.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Widget.cxx; path = ../../src/Fl_Widget.cxx; sourceTree = SOURCE_ROOT; };
-		0BD550D5F4A9E53E93B19234 /* Fl_Tree_Item.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Tree_Item.H; path = ../../FL/Fl_Tree_Item.H; sourceTree = SOURCE_ROOT; };
 		0C4D02EC5E80D2BF56CFB48B /* jcapistd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcapistd.c; path = ../../jpeg/jcapistd.c; sourceTree = SOURCE_ROOT; };
 		0C9E126B5F827C426EC22043 /* tabs.fl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.fluid; name = tabs.fl; path = ../../test/tabs.fl; sourceTree = SOURCE_ROOT; };
-		0CAFE7CA950A492FE35F2163 /* Fl_Chart.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Chart.H; path = ../../FL/Fl_Chart.H; sourceTree = SOURCE_ROOT; };
 		0CBC6DC7942212D47B70681B /* Fl_XPM_Image.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_XPM_Image.cxx; path = ../../src/Fl_XPM_Image.cxx; sourceTree = SOURCE_ROOT; };
-		0CFB24E7079EC601366BCECF /* Fl_Table_Row.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Table_Row.H; path = ../../FL/Fl_Table_Row.H; sourceTree = SOURCE_ROOT; };
 		0DBD503036293A8AEFAC6725 /* Fl_Tooltip.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Tooltip.cxx; path = ../../src/Fl_Tooltip.cxx; sourceTree = SOURCE_ROOT; };
 		0DFF833B9E81E11FA3E3A85A /* tile.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tile.cxx; path = ../../test/tile.cxx; sourceTree = SOURCE_ROOT; };
 		0E259033BF45B73C21409C8F /* Fl_display.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_display.cxx; path = ../../src/Fl_display.cxx; sourceTree = SOURCE_ROOT; };
 		0EB55F59B3D0D0BD1A8BFE5E /* fl_color.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_color.cxx; path = ../../src/fl_color.cxx; sourceTree = SOURCE_ROOT; };
-		0EC11A5CAD4E3607A72BEF84 /* Fl_Single_Window.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Single_Window.H; path = ../../FL/Fl_Single_Window.H; sourceTree = SOURCE_ROOT; };
 		102A2F111D6E3FEE95E5B473 /* tabs.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = tabs.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		102D0B1D203936477107B2D8 /* widget_panel.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = widget_panel.cxx; path = ../../fluid/widget_panel.cxx; sourceTree = SOURCE_ROOT; };
-		1072C2A463FBCF2C5E278649 /* Fl_RGB_Image.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_RGB_Image.H; path = ../../FL/Fl_RGB_Image.H; sourceTree = SOURCE_ROOT; };
 		116F849BE68830F05CA66B9A /* Fl_Table.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Table.cxx; path = ../../src/Fl_Table.cxx; sourceTree = SOURCE_ROOT; };
 		11A4DF1725F38E4341C5C663 /* pngwrite.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngwrite.c; path = ../../png/pngwrite.c; sourceTree = SOURCE_ROOT; };
 		13BCF00369D5254F0CE49599 /* Fl_Round_Button.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Round_Button.cxx; path = ../../src/Fl_Round_Button.cxx; sourceTree = SOURCE_ROOT; };
-		1433F1B8C4085D5D5E1BA0E1 /* Fl_XPM_Image.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_XPM_Image.H; path = ../../FL/Fl_XPM_Image.H; sourceTree = SOURCE_ROOT; };
 		147BE92B6E470D0A80BD203D /* doublebuffer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = doublebuffer.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		149DEBE486F3554738429684 /* Fl_Browser_.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Browser_.H; path = ../../FL/Fl_Browser_.H; sourceTree = SOURCE_ROOT; };
 		14AA766D5DA5A8BCFF60B626 /* jcprepct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcprepct.c; path = ../../jpeg/jcprepct.c; sourceTree = SOURCE_ROOT; };
 		1501BD6AB688B2DB8120E852 /* fl_call_main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = fl_call_main.c; path = ../../src/fl_call_main.c; sourceTree = SOURCE_ROOT; };
 		15405AF3DA5E1FF9D702C263 /* input_choice.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = input_choice.cxx; path = ../../test/input_choice.cxx; sourceTree = SOURCE_ROOT; };
-		15B635124165659EFD5640FF /* Fl_JPEG_Image.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_JPEG_Image.H; path = ../../FL/Fl_JPEG_Image.H; sourceTree = SOURCE_ROOT; };
 		1649775917C34003C78C7576 /* cube.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = cube.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		16A1B66BA02AC26B38AD52A1 /* color_chooser.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = color_chooser.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		176A3053D562D80CD4D3A400 /* print_panel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = print_panel.h; path = ../../fluid/print_panel.h; sourceTree = SOURCE_ROOT; };
 		17D45DE262939B64E8894DBB /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = "<absolute>"; };
 		17D7629A8FC1C1A1DABEDAC0 /* Fl_File_Chooser2.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_File_Chooser2.cxx; path = ../../src/Fl_File_Chooser2.cxx; sourceTree = SOURCE_ROOT; };
-		18A8E88697605A73C46C0DDF /* Fl_File_Icon.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_File_Icon.H; path = ../../FL/Fl_File_Icon.H; sourceTree = SOURCE_ROOT; };
 		197D446B1F4FEB565793FC67 /* Fl_Tree_Prefs.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Tree_Prefs.cxx; path = ../../src/Fl_Tree_Prefs.cxx; sourceTree = SOURCE_ROOT; };
 		199EA4C60DD488096817D322 /* Fl_Menu_Button.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Menu_Button.cxx; path = ../../src/Fl_Menu_Button.cxx; sourceTree = SOURCE_ROOT; };
 		19C5DB6F3DD5011DAE6F79AB /* Fl_Adjuster.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Adjuster.cxx; path = ../../src/Fl_Adjuster.cxx; sourceTree = SOURCE_ROOT; };
@@ -4103,48 +3806,35 @@
 		1BCEDC8AA971784435AC3119 /* adjuster.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = adjuster.cxx; path = ../../test/adjuster.cxx; sourceTree = SOURCE_ROOT; };
 		1C17C98660CE64B98C8E2DFB /* fonts.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fonts.cxx; path = ../../test/fonts.cxx; sourceTree = SOURCE_ROOT; };
 		1C75365D167645656C3A6752 /* ps_image.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ps_image.cxx; path = ../../src/ps_image.cxx; sourceTree = SOURCE_ROOT; };
-		1CFFC165E8EE6C1AD9CFD33C /* Fl_Int_Input.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Int_Input.H; path = ../../FL/Fl_Int_Input.H; sourceTree = SOURCE_ROOT; };
 		1D02929D32167C37921C842E /* resizebox.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = resizebox.cxx; path = ../../test/resizebox.cxx; sourceTree = SOURCE_ROOT; };
 		1D152F81B7390EEECF3BB670 /* preferences.fl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.fluid; name = preferences.fl; path = ../../test/preferences.fl; sourceTree = SOURCE_ROOT; };
-		1D499CE6ECA4995EEA46EAD7 /* math.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = math.h; path = ../../FL/math.h; sourceTree = SOURCE_ROOT; };
-		1DBDBB6B583C028BD8D1D2F4 /* Fl_Menu_Bar.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Menu_Bar.H; path = ../../FL/Fl_Menu_Bar.H; sourceTree = SOURCE_ROOT; };
 		1E431497B296C454015D42C2 /* pixmap_browser.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = pixmap_browser.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		1F4662A0BC6D0B396E78A8B5 /* symbols.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = symbols.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		1F6E4CE3C0DF58D8F7B3A94A /* gl_overlay.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gl_overlay.cxx; path = ../../test/gl_overlay.cxx; sourceTree = SOURCE_ROOT; };
 		1FB7B9BDAA5F88A0223A5EA9 /* jddctmgr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jddctmgr.c; path = ../../jpeg/jddctmgr.c; sourceTree = SOURCE_ROOT; };
-		1FCDDD4E00F7CAA8193CAE04 /* Fl_Overlay_Window.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Overlay_Window.H; path = ../../FL/Fl_Overlay_Window.H; sourceTree = SOURCE_ROOT; };
-		20A898FCF6349F72BABDC497 /* Fl_Positioner.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Positioner.H; path = ../../FL/Fl_Positioner.H; sourceTree = SOURCE_ROOT; };
-		21094B942E7FBFBCF1679259 /* Fl_Hor_Nice_Slider.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Hor_Nice_Slider.H; path = ../../FL/Fl_Hor_Nice_Slider.H; sourceTree = SOURCE_ROOT; };
 		2148BFD8D4CD2F1527B71C3C /* cube.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cube.cxx; path = ../../test/cube.cxx; sourceTree = SOURCE_ROOT; };
 		231CFE382C2134110A029AD0 /* adjuster.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = adjuster.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		2333DEC98DFFAA27F3D85449 /* file.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = file.cxx; path = ../../fluid/file.cxx; sourceTree = SOURCE_ROOT; };
 		2483CB305CCA0A319EF35BCF /* jccoefct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jccoefct.c; path = ../../jpeg/jccoefct.c; sourceTree = SOURCE_ROOT; };
 		24E8C158A0FFA9C8900E98D8 /* pngwtran.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngwtran.c; path = ../../png/pngwtran.c; sourceTree = SOURCE_ROOT; };
 		25F7E879F4C04CF85422D2B7 /* keyboard.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = keyboard.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		2621527FD926C67B778C41F3 /* fl_draw.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = fl_draw.H; path = ../../FL/fl_draw.H; sourceTree = SOURCE_ROOT; };
-		270962DA6A7684128875ADDE /* Fl_Round_Button.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Round_Button.H; path = ../../FL/Fl_Round_Button.H; sourceTree = SOURCE_ROOT; };
 		274CBEBF1D1BFD5C91605CBE /* Fl_add_idle.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_add_idle.cxx; path = ../../src/Fl_add_idle.cxx; sourceTree = SOURCE_ROOT; };
 		27C65F509527076EB26E9C0F /* Fl_Gl_Choice.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Gl_Choice.cxx; path = ../../src/Fl_Gl_Choice.cxx; sourceTree = SOURCE_ROOT; };
 		28AFF174A53E38CCB7475C19 /* jdmaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdmaster.c; path = ../../jpeg/jdmaster.c; sourceTree = SOURCE_ROOT; };
 		28E8F2802DEA5334F914BE98 /* Fl_grab.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_grab.cxx; path = ../../src/Fl_grab.cxx; sourceTree = SOURCE_ROOT; };
-		28F3E4EBB6E5F8420624A5DA /* Fl_Scrollbar.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Scrollbar.H; path = ../../FL/Fl_Scrollbar.H; sourceTree = SOURCE_ROOT; };
 		29E61287C1F4A1123829C900 /* glut_font.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = glut_font.cxx; path = ../../src/glut_font.cxx; sourceTree = SOURCE_ROOT; };
 		2A3CEBA07E8AE9BF4C002531 /* CubeMain.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CubeMain.cxx; path = ../../test/CubeMain.cxx; sourceTree = SOURCE_ROOT; };
 		2A5CB08352A0DBD0980FC770 /* pngpread.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngpread.c; path = ../../png/pngpread.c; sourceTree = SOURCE_ROOT; };
 		2B5CC86924C64E849EBE0179 /* jidctfst.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jidctfst.c; path = ../../jpeg/jidctfst.c; sourceTree = SOURCE_ROOT; };
 		2BECA86D733575C07B9982DF /* filename_isdir.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = filename_isdir.cxx; path = ../../src/filename_isdir.cxx; sourceTree = SOURCE_ROOT; };
-		2CD1EF8B4BFD0820E9A42641 /* Fl_Color_Chooser.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Color_Chooser.H; path = ../../FL/Fl_Color_Chooser.H; sourceTree = SOURCE_ROOT; };
 		2D8189C8293D1D51B5409B28 /* CodeEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CodeEditor.h; path = ../../fluid/CodeEditor.h; sourceTree = SOURCE_ROOT; };
 		2DD93178E8AFA850DAC293FC /* fl_dnd.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_dnd.cxx; path = ../../src/fl_dnd.cxx; sourceTree = SOURCE_ROOT; };
 		2DE25DB4CE986C1857B5ECF7 /* Fl_Native_File_Chooser.cxx */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = Fl_Native_File_Chooser.cxx; path = ../../src/Fl_Native_File_Chooser.cxx; sourceTree = SOURCE_ROOT; };
 		2E774D7FE17DC45AFDF985FE /* message.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = message.cxx; path = ../../test/message.cxx; sourceTree = SOURCE_ROOT; };
 		30662FB4292F9C613576933B /* Fl_Sys_Menu_Bar.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Sys_Menu_Bar.cxx; path = ../../src/Fl_Sys_Menu_Bar.cxx; sourceTree = SOURCE_ROOT; };
-		31D736821E68F01A1A11FC9F /* Fl_Help_View.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Help_View.H; path = ../../FL/Fl_Help_View.H; sourceTree = SOURCE_ROOT; };
 		31FF037FBCA8B6C0CACB0A37 /* list_visuals.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = list_visuals.cxx; path = ../../test/list_visuals.cxx; sourceTree = SOURCE_ROOT; };
 		323779B8DE42371A98337337 /* CubeView.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CubeView.cxx; path = ../../test/CubeView.cxx; sourceTree = SOURCE_ROOT; };
 		3306C66283D192B1B1739E25 /* fl_curve.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_curve.cxx; path = ../../src/fl_curve.cxx; sourceTree = SOURCE_ROOT; };
-		330837DFFF31CE2EB245C7EC /* Fl_PNM_Image.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_PNM_Image.H; path = ../../FL/Fl_PNM_Image.H; sourceTree = SOURCE_ROOT; };
-		332598626430923370C48554 /* Fl_Image.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Image.H; path = ../../FL/Fl_Image.H; sourceTree = SOURCE_ROOT; };
 		33AF346DF043165E0A62ABB5 /* Fl_Double_Window.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Double_Window.cxx; path = ../../src/Fl_Double_Window.cxx; sourceTree = SOURCE_ROOT; };
 		33F18D02CA150D5654D48366 /* jidctint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jidctint.c; path = ../../jpeg/jidctint.c; sourceTree = SOURCE_ROOT; };
 		340E5CD1F39C1484B1BCE8F3 /* fl_oval_box.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_oval_box.cxx; path = ../../src/fl_oval_box.cxx; sourceTree = SOURCE_ROOT; };
@@ -4158,14 +3848,12 @@
 		37EC93410A76CE3EB094F162 /* jcapimin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcapimin.c; path = ../../jpeg/jcapimin.c; sourceTree = SOURCE_ROOT; };
 		37F324F95525339860AEED24 /* keyboard.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = keyboard.cxx; path = ../../test/keyboard.cxx; sourceTree = SOURCE_ROOT; };
 		382F938CFABC25BC02C13939 /* Fl_Menu_add.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Menu_add.cxx; path = ../../src/Fl_Menu_add.cxx; sourceTree = SOURCE_ROOT; };
-		390863A4D5D1B4C7C9B58679 /* Fl_Box.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Box.H; path = ../../FL/Fl_Box.H; sourceTree = SOURCE_ROOT; };
 		393BD835A7EBE8F1F43AC188 /* Fl_Help_Dialog.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Help_Dialog.cxx; path = ../../src/Fl_Help_Dialog.cxx; sourceTree = SOURCE_ROOT; };
 		39CD231E22E0B53E92CABDC9 /* file_chooser.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = file_chooser.cxx; path = ../../test/file_chooser.cxx; sourceTree = SOURCE_ROOT; };
 		39E501DBC41F2617B69BEE95 /* fl_arc.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_arc.cxx; path = ../../src/fl_arc.cxx; sourceTree = SOURCE_ROOT; };
 		3AFC31503AB99F6D00BAC647 /* Fl_Dial.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Dial.cxx; path = ../../src/Fl_Dial.cxx; sourceTree = SOURCE_ROOT; };
 		3D85A740C2D5F1D6C6A9420D /* fl_engraved_label.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_engraved_label.cxx; path = ../../src/fl_engraved_label.cxx; sourceTree = SOURCE_ROOT; };
 		3DAF0F1BE5742F8D8D130AF1 /* table.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = table.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		3E092095198BF5104BE09D78 /* Fl_Text_Editor.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Text_Editor.H; path = ../../FL/Fl_Text_Editor.H; sourceTree = SOURCE_ROOT; };
 		3E19864FD168E465A1DAFA6A /* blocks.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = blocks.cxx; path = ../../test/blocks.cxx; sourceTree = SOURCE_ROOT; };
 		3EB2D50857F16B94D2C516E9 /* Fl_BMP_Image.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_BMP_Image.cxx; path = ../../src/Fl_BMP_Image.cxx; sourceTree = SOURCE_ROOT; };
 		3F000DD5F091F66BC42822E3 /* Fl_Bitmap.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Bitmap.cxx; path = ../../src/Fl_Bitmap.cxx; sourceTree = SOURCE_ROOT; };
@@ -4180,44 +3868,31 @@
 		428497C5DD96FDB07B2A8BC5 /* jdmainct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdmainct.c; path = ../../jpeg/jdmainct.c; sourceTree = SOURCE_ROOT; };
 		42C67E2C7BDA83D7AACF300C /* CubeView.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CubeView.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		42C83618F3462133634D3CF9 /* output.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = output.cxx; path = ../../test/output.cxx; sourceTree = SOURCE_ROOT; };
-		42FEA3A2967D04217C27FA61 /* Fl_Secret_Input.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Secret_Input.H; path = ../../FL/Fl_Secret_Input.H; sourceTree = SOURCE_ROOT; };
 		431856A376572B057493295D /* fracviewer.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fracviewer.cxx; path = ../../test/fracviewer.cxx; sourceTree = SOURCE_ROOT; };
 		4343E645136756B9FEEE6902 /* fl_cursor.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_cursor.cxx; path = ../../src/fl_cursor.cxx; sourceTree = SOURCE_ROOT; };
 		43D9A7CD936B1382F5EA23E1 /* about_panel.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = about_panel.cxx; path = ../../fluid/about_panel.cxx; sourceTree = SOURCE_ROOT; };
 		44277061B27BFBE1FB22B79B /* menubar.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = menubar.cxx; path = ../../test/menubar.cxx; sourceTree = SOURCE_ROOT; };
-		451D01896EFDD83277515630 /* glut.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = glut.H; path = ../../FL/glut.H; sourceTree = SOURCE_ROOT; };
 		4577F046D6D5D93D2553BFBC /* jdtrans.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdtrans.c; path = ../../jpeg/jdtrans.c; sourceTree = SOURCE_ROOT; };
 		45B993D3FA0EED6037499D3A /* color_chooser.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = color_chooser.cxx; path = ../../test/color_chooser.cxx; sourceTree = SOURCE_ROOT; };
-		461BBD068DF8C58F4FFB131B /* Fl_Round_Clock.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Round_Clock.H; path = ../../FL/Fl_Round_Clock.H; sourceTree = SOURCE_ROOT; };
 		46DBACE210E8AEF57FFB5693 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = "<absolute>"; };
 		48A8DC166D69EDC6F24AE678 /* rotated_text.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = rotated_text.cxx; path = ../../test/rotated_text.cxx; sourceTree = SOURCE_ROOT; };
 		49F26943DBCFA9878A9C3F55 /* adler32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = adler32.c; path = ../../zlib/adler32.c; sourceTree = SOURCE_ROOT; };
 		4A588F0AA73E5324BEE111A7 /* Fl_Window_Type.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Window_Type.cxx; path = ../../fluid/Fl_Window_Type.cxx; sourceTree = SOURCE_ROOT; };
 		4A6DFBFA4FDD6D0B8F65009E /* template_panel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = template_panel.h; path = ../../fluid/template_panel.h; sourceTree = SOURCE_ROOT; };
-		4B1195741A8CCE772D17856C /* Fl_Check_Button.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Check_Button.H; path = ../../FL/Fl_Check_Button.H; sourceTree = SOURCE_ROOT; };
 		4B15B198B23709B54F5D52AD /* device.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = device.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		4B4931D88DEFF9253DD2B260 /* inffast.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = inffast.c; path = ../../zlib/inffast.c; sourceTree = SOURCE_ROOT; };
 		4BDB9923B5247EC384C1E74D /* pixmap.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = pixmap.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		4C2979BC9629FABDCC0271BB /* jcmainct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcmainct.c; path = ../../jpeg/jcmainct.c; sourceTree = SOURCE_ROOT; };
 		4C2EEE3E17025A63A0AEEF5F /* hello.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = hello.cxx; path = ../../test/hello.cxx; sourceTree = SOURCE_ROOT; };
-		4C9AF6F2C1B78A67FFD177F9 /* gl2opengl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gl2opengl.h; path = ../../FL/gl2opengl.h; sourceTree = SOURCE_ROOT; };
-		4CABCBB89F9DD5CF57BB9779 /* Fl_Paged_Device.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Paged_Device.H; path = ../../FL/Fl_Paged_Device.H; sourceTree = SOURCE_ROOT; };
-		4CD4094D8712818EACF5C7C5 /* Fl_Progress.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Progress.H; path = ../../FL/Fl_Progress.H; sourceTree = SOURCE_ROOT; };
 		4CD5A5D2975A2CCB77EBAD43 /* jutils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jutils.c; path = ../../jpeg/jutils.c; sourceTree = SOURCE_ROOT; };
 		4D124BD72F4E63D99837CE0C /* fl_encoding_latin1.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_encoding_latin1.cxx; path = ../../src/fl_encoding_latin1.cxx; sourceTree = SOURCE_ROOT; };
 		4D4D056FC1F1EFEC7585CA17 /* jdpostct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdpostct.c; path = ../../jpeg/jdpostct.c; sourceTree = SOURCE_ROOT; };
 		4D55C9FE101986BC47029A16 /* Fl_Choice.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Choice.cxx; path = ../../src/Fl_Choice.cxx; sourceTree = SOURCE_ROOT; };
 		4E2468990092988E147B08B3 /* fl_arci.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_arci.cxx; path = ../../src/fl_arci.cxx; sourceTree = SOURCE_ROOT; };
 		4E2BE7807B57162E18C7E63F /* Fl_Browser.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Browser.cxx; path = ../../src/Fl_Browser.cxx; sourceTree = SOURCE_ROOT; };
-		4F46F93E8F77640543107453 /* fl_utf8.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = fl_utf8.h; path = ../../FL/fl_utf8.h; sourceTree = SOURCE_ROOT; };
-		4F64CD29833871B09CCB278E /* Fl_Repeat_Button.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Repeat_Button.H; path = ../../FL/Fl_Repeat_Button.H; sourceTree = SOURCE_ROOT; };
-		50E8E04A4389A8A2DAB7C53B /* Fl_Text_Buffer.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Text_Buffer.H; path = ../../FL/Fl_Text_Buffer.H; sourceTree = SOURCE_ROOT; };
 		5191489A6263E11B65A57B4D /* valuators.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = valuators.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		51A1DE1F52564E84C104F074 /* jquant2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jquant2.c; path = ../../jpeg/jquant2.c; sourceTree = SOURCE_ROOT; };
-		52C3B1D0A473BDC01D497917 /* Fl_Pack.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Pack.H; path = ../../FL/Fl_Pack.H; sourceTree = SOURCE_ROOT; };
 		530B066D0F3AC2972D9FEC30 /* flstring.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = flstring.c; path = ../../src/flstring.c; sourceTree = SOURCE_ROOT; };
-		53930BEE4CBAAF4C82825F9B /* Fl_Export.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Export.H; path = ../../FL/Fl_Export.H; sourceTree = SOURCE_ROOT; };
-		5426FC8371108CE8BCAB85B2 /* Fl_Widget.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Widget.H; path = ../../FL/Fl_Widget.H; sourceTree = SOURCE_ROOT; };
 		54C40351BD50C2FC094055E5 /* iconize.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = iconize.cxx; path = ../../test/iconize.cxx; sourceTree = SOURCE_ROOT; };
 		5538B949B47F04D03589F2CE /* jdsample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdsample.c; path = ../../jpeg/jdsample.c; sourceTree = SOURCE_ROOT; };
 		5575DA9A654EB53C515F917A /* png.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = png.c; path = ../../png/png.c; sourceTree = SOURCE_ROOT; };
@@ -4230,18 +3905,14 @@
 		5876E03E2818B598FAA5C307 /* fl_rounded_box.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_rounded_box.cxx; path = ../../src/fl_rounded_box.cxx; sourceTree = SOURCE_ROOT; };
 		590C56F672356072A5C86BC3 /* valuators.fl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.fluid; name = valuators.fl; path = ../../test/valuators.fl; sourceTree = SOURCE_ROOT; };
 		598DD70F89D7731D61BBD8EF /* fractals.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fractals.cxx; path = ../../test/fractals.cxx; sourceTree = SOURCE_ROOT; };
-		59EAC37D26FEC2AB49D79C08 /* Fl_Radio_Button.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Radio_Button.H; path = ../../FL/Fl_Radio_Button.H; sourceTree = SOURCE_ROOT; };
 		5A7532B3CDA46030885D1D14 /* Fl_Button.cxx */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Button.cxx; path = ../../src/Fl_Button.cxx; sourceTree = SOURCE_ROOT; tabWidth = 8; };
 		5AE1F936F1C186E18C1B9C28 /* is_spacing.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = is_spacing.c; path = ../../src/xutf8/is_spacing.c; sourceTree = SOURCE_ROOT; };
 		5AF5119D08DFC92EA1032671 /* Fl_Slider.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Slider.cxx; path = ../../src/Fl_Slider.cxx; sourceTree = SOURCE_ROOT; };
 		5B2B6ED6A3649923BAAFFDF1 /* Fl_visual.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_visual.cxx; path = ../../src/Fl_visual.cxx; sourceTree = SOURCE_ROOT; };
 		5B566F3BAD7101C63D5494E3 /* Fl_get_key.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_get_key.cxx; path = ../../src/Fl_get_key.cxx; sourceTree = SOURCE_ROOT; };
-		5B8BFBDF9C48A998F0781C9E /* Fl_Hor_Value_Slider.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Hor_Value_Slider.H; path = ../../FL/Fl_Hor_Value_Slider.H; sourceTree = SOURCE_ROOT; };
 		5CD5D087391E39030838C823 /* jcomapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcomapi.c; path = ../../jpeg/jcomapi.c; sourceTree = SOURCE_ROOT; };
-		5CDA214AEABC15E3EF1BB172 /* Fl_Adjuster.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Adjuster.H; path = ../../FL/Fl_Adjuster.H; sourceTree = SOURCE_ROOT; };
 		5CE4CB9AEF9070A32A27696D /* fl_overlay_visual.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_overlay_visual.cxx; path = ../../src/fl_overlay_visual.cxx; sourceTree = SOURCE_ROOT; };
 		5D36F806A2C72F1894F0878E /* Fl_File_Icon.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_File_Icon.cxx; path = ../../src/Fl_File_Icon.cxx; sourceTree = SOURCE_ROOT; };
-		5E0EC227A972D2E4F34A2CEB /* Fl_Tree.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Tree.H; path = ../../FL/Fl_Tree.H; sourceTree = SOURCE_ROOT; };
 		5EF025FDE53B2276B6931CD5 /* clock.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = clock.cxx; path = ../../test/clock.cxx; sourceTree = SOURCE_ROOT; };
 		5F328DFEE7B768CF141C8E9E /* zutil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = zutil.c; path = ../../zlib/zutil.c; sourceTree = SOURCE_ROOT; };
 		5F4C18EEE3A4065D69073EDA /* tiled_image.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = tiled_image.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -4253,11 +3924,8 @@
 		6170B3704ED34EBCF80E43C1 /* Fl_Tree_Item.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Tree_Item.cxx; path = ../../src/Fl_Tree_Item.cxx; sourceTree = SOURCE_ROOT; };
 		61D90C98A833DD410C9D5BED /* checkers.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = checkers.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		622198DBFF6479ED2A8B6283 /* glpuzzle.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = glpuzzle.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		62281FC096BA407C4F1E6824 /* win32.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = win32.H; path = ../../FL/win32.H; sourceTree = SOURCE_ROOT; };
 		62777DA2221D60EC8F03C905 /* forms_fselect.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = forms_fselect.cxx; path = ../../src/forms_fselect.cxx; sourceTree = SOURCE_ROOT; };
 		63CB19652C470F1E58DCF01E /* Fl_Input.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Input.cxx; path = ../../src/Fl_Input.cxx; sourceTree = SOURCE_ROOT; };
-		648E9C3B61328280244FCCA5 /* Fl_Input_Choice.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Input_Choice.H; path = ../../FL/Fl_Input_Choice.H; sourceTree = SOURCE_ROOT; };
-		64C9C1F20285A471398A7818 /* Fl_Text_Display.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Text_Display.H; path = ../../FL/Fl_Text_Display.H; sourceTree = SOURCE_ROOT; };
 		65B20106A8A21FCCA56538F8 /* inftrees.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = inftrees.c; path = ../../zlib/inftrees.c; sourceTree = SOURCE_ROOT; };
 		65E1ABE72414529CBD1F937C /* jcsample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcsample.c; path = ../../jpeg/jcsample.c; sourceTree = SOURCE_ROOT; };
 		65E5BAE2A9732DA6B4A53098 /* deflate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = deflate.c; path = ../../zlib/deflate.c; sourceTree = SOURCE_ROOT; };
@@ -4278,21 +3946,12 @@
 		6F065A63833D5944E820C951 /* fl_draw_image.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_draw_image.cxx; path = ../../src/fl_draw_image.cxx; sourceTree = SOURCE_ROOT; };
 		6F23DFF159ADA2C05E62C263 /* jcmarker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcmarker.c; path = ../../jpeg/jcmarker.c; sourceTree = SOURCE_ROOT; };
 		6F994D2DFFEA5301950F21B3 /* rotated_text.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = rotated_text.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		70CEC1A84E24275F0861403F /* Fl_Table.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Table.H; path = ../../FL/Fl_Table.H; sourceTree = SOURCE_ROOT; };
-		71034AFDF079B24D53146252 /* Fl_Value_Output.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Value_Output.H; path = ../../FL/Fl_Value_Output.H; sourceTree = SOURCE_ROOT; };
 		71A50EE5EECC69DC5DD8BE13 /* list_visuals.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = list_visuals.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		729751A4A3DAAAF169C80ACC /* Fl_File_Chooser.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_File_Chooser.H; path = ../../FL/Fl_File_Chooser.H; sourceTree = SOURCE_ROOT; };
-		72C56BE76B2ECF1908249803 /* Fl_Tiled_Image.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Tiled_Image.H; path = ../../FL/Fl_Tiled_Image.H; sourceTree = SOURCE_ROOT; };
 		73374F6E214D9DC3E2264866 /* freeglut_stroke_mono_roman.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = freeglut_stroke_mono_roman.cxx; path = ../../src/freeglut_stroke_mono_roman.cxx; sourceTree = SOURCE_ROOT; };
 		754E11ECF7EB2B3E7E1E3C68 /* pngset.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngset.c; path = ../../png/pngset.c; sourceTree = SOURCE_ROOT; };
-		7574410DEB61AC3D68A6C137 /* fl_show_colormap.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = fl_show_colormap.H; path = ../../FL/fl_show_colormap.H; sourceTree = SOURCE_ROOT; };
-		75DEA03FA1E1CA10E4AF212A /* Fl_Menu.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Menu.H; path = ../../FL/Fl_Menu.H; sourceTree = SOURCE_ROOT; };
 		76726B622EF72DCDAD1C0D23 /* Fl_Tiled_Image.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Tiled_Image.cxx; path = ../../src/Fl_Tiled_Image.cxx; sourceTree = SOURCE_ROOT; };
-		76DD2676B757CB7F19B6EF94 /* Fl_Spinner.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Spinner.H; path = ../../FL/Fl_Spinner.H; sourceTree = SOURCE_ROOT; };
 		78EE1A0803C3AAA7BFAF79B8 /* pixmap_browser.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = pixmap_browser.cxx; path = ../../test/pixmap_browser.cxx; sourceTree = SOURCE_ROOT; };
-		790078FB2B75406B2E250E59 /* Fl_Line_Dial.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Line_Dial.H; path = ../../FL/Fl_Line_Dial.H; sourceTree = SOURCE_ROOT; };
 		790419B5A0AD64D66F9B19E1 /* Fl_Help_View.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Help_View.cxx; path = ../../src/Fl_Help_View.cxx; sourceTree = SOURCE_ROOT; };
-		79EE61E7DCB96EF56E71DD19 /* Fl_Toggle_Light_Button.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Toggle_Light_Button.H; path = ../../FL/Fl_Toggle_Light_Button.H; sourceTree = SOURCE_ROOT; };
 		7A2CE7959780A1C6E60103E8 /* fl_gtk.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_gtk.cxx; path = ../../src/fl_gtk.cxx; sourceTree = SOURCE_ROOT; };
 		7A76AE49F30DFB877BA43A02 /* jcphuff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcphuff.c; path = ../../jpeg/jcphuff.c; sourceTree = SOURCE_ROOT; };
 		7AC3212E8EECF086DCDEEC46 /* fractals.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = fractals.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -4303,7 +3962,6 @@
 		7D546B243A6858F60A678FF1 /* uncompr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = uncompr.c; path = ../../zlib/uncompr.c; sourceTree = SOURCE_ROOT; };
 		7DF4AD3769671959EA813845 /* jcparam.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcparam.c; path = ../../jpeg/jcparam.c; sourceTree = SOURCE_ROOT; };
 		7E05602BE68211B11E493E18 /* Fl_Menu.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Menu.cxx; path = ../../src/Fl_Menu.cxx; sourceTree = SOURCE_ROOT; };
-		7E51DAB7D0F93ACFB736EE9A /* Fl_Tree_Prefs.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Tree_Prefs.H; path = ../../FL/Fl_Tree_Prefs.H; sourceTree = SOURCE_ROOT; };
 		7F4762ED12D22C470073A4F9 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = System/Library/Frameworks/ApplicationServices.framework; sourceTree = SDKROOT; };
 		7F4B8ADD01CB2F8BFE43ACBA /* Fl_Menu_Bar.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Menu_Bar.cxx; path = ../../src/Fl_Menu_Bar.cxx; sourceTree = SOURCE_ROOT; };
 		7F66B1D612BB924C00C67B59 /* Fl_cocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = Fl_cocoa.mm; path = ../../src/Fl_cocoa.mm; sourceTree = SOURCE_ROOT; };
@@ -4315,43 +3973,26 @@
 		800E34DEF9E503C5EC6C4FA5 /* Fl_XBM_Image.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_XBM_Image.cxx; path = ../../src/Fl_XBM_Image.cxx; sourceTree = SOURCE_ROOT; };
 		806103D71A8CD0075BF8E1DA /* Fl_Group.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Group.cxx; path = ../../src/Fl_Group.cxx; sourceTree = SOURCE_ROOT; };
 		80CD4956321634F723D3C40B /* fluid.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = fluid.icns; path = icons/fluid.icns; sourceTree = "<group>"; };
-		80D32CF90973629228CAA7F0 /* Fl_Double_Window.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Double_Window.H; path = ../../FL/Fl_Double_Window.H; sourceTree = SOURCE_ROOT; };
-		80D58C2358E8BBA86A8ADB7C /* Fl_Value_Slider.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Value_Slider.H; path = ../../FL/Fl_Value_Slider.H; sourceTree = SOURCE_ROOT; };
 		80E4ACCB50A295390EC9C1AB /* Fl_Group_Type.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Group_Type.cxx; path = ../../fluid/Fl_Group_Type.cxx; sourceTree = SOURCE_ROOT; };
 		813C830680D031C1B2FCF9B6 /* Fl_Pack.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Pack.cxx; path = ../../src/Fl_Pack.cxx; sourceTree = SOURCE_ROOT; };
 		819B540345E59C29EE9DF3DA /* jcinit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcinit.c; path = ../../jpeg/jcinit.c; sourceTree = SOURCE_ROOT; };
 		81CBEA61461E59652A309159 /* filename_match.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = filename_match.cxx; path = ../../src/filename_match.cxx; sourceTree = SOURCE_ROOT; };
 		8222D901BB4DAF097B81C1FE /* mandelbrot_ui.fl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.fluid; name = mandelbrot_ui.fl; path = ../../test/mandelbrot_ui.fl; sourceTree = SOURCE_ROOT; };
 		8277A82AB4C46B991D48F852 /* label.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = label.cxx; path = ../../test/label.cxx; sourceTree = SOURCE_ROOT; };
-		82863AEFE086C3469C386C22 /* Fl_Device.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Device.H; path = ../../FL/Fl_Device.H; sourceTree = SOURCE_ROOT; };
 		834EF24528E256603D6F39FF /* menubar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = menubar.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		83733760D651C218178EAEB3 /* filename_setext.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = filename_setext.cxx; path = ../../src/filename_setext.cxx; sourceTree = SOURCE_ROOT; };
-		83CED42A779FA76E98D37CA8 /* x.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = x.H; path = ../../FL/x.H; sourceTree = SOURCE_ROOT; };
-		84CE79448708855561FEE498 /* Enumerations.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Enumerations.H; path = ../../FL/Enumerations.H; sourceTree = SOURCE_ROOT; };
 		86685DA60EFE7C0F07DC5C3B /* jerror.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jerror.c; path = ../../jpeg/jerror.c; sourceTree = SOURCE_ROOT; };
-		87259ACF8723616344D9AEB2 /* fl_ask.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = fl_ask.H; path = ../../FL/fl_ask.H; sourceTree = SOURCE_ROOT; };
 		877ED586A536CA9D898220D3 /* Fl_GIF_Image.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_GIF_Image.cxx; path = ../../src/Fl_GIF_Image.cxx; sourceTree = SOURCE_ROOT; };
-		87F83C8E6003FAE14C4E8249 /* Fl_PNG_Image.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_PNG_Image.H; path = ../../FL/Fl_PNG_Image.H; sourceTree = SOURCE_ROOT; };
-		87F89271469726AE756E4D93 /* Fl_Cairo.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Cairo.H; path = ../../FL/Fl_Cairo.H; sourceTree = SOURCE_ROOT; };
-		88C72DFE480F42D0547F786B /* gl_draw.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = gl_draw.H; path = ../../FL/gl_draw.H; sourceTree = SOURCE_ROOT; };
 		88F715478C4F84C8E55B0820 /* Fl_Menu_Type.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Menu_Type.cxx; path = ../../fluid/Fl_Menu_Type.cxx; sourceTree = SOURCE_ROOT; };
-		8985E851BEC6BB2BC613E5AD /* Fl_Menu_.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Menu_.H; path = ../../FL/Fl_Menu_.H; sourceTree = SOURCE_ROOT; };
-		8A322CF28E7EAA76A260345A /* Fl_Multiline_Input.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Multiline_Input.H; path = ../../FL/Fl_Multiline_Input.H; sourceTree = SOURCE_ROOT; };
 		8A748CC814B1697A7E2F9D1A /* blocks.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = blocks.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		8AA117275273E1E3B906DA35 /* pngget.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngget.c; path = ../../png/pngget.c; sourceTree = SOURCE_ROOT; };
-		8B02E11D61E46AD79DE7EFE7 /* Fl_Cairo_Window.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Cairo_Window.H; path = ../../FL/Fl_Cairo_Window.H; sourceTree = SOURCE_ROOT; };
-		8C1CBF782BBD9CCBFC0B451B /* gl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gl.h; path = ../../FL/gl.h; sourceTree = SOURCE_ROOT; };
 		8C53A414ED45A9276B8B4C40 /* cursor.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cursor.cxx; path = ../../test/cursor.cxx; sourceTree = SOURCE_ROOT; };
-		8C5CB5680264401FDA1C693C /* Fl_Tooltip.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Tooltip.H; path = ../../FL/Fl_Tooltip.H; sourceTree = SOURCE_ROOT; };
 		8D4E2F8A10BA06E332B7EB03 /* demo.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = demo.cxx; path = ../../test/demo.cxx; sourceTree = SOURCE_ROOT; };
-		8DFB9E7E8DB3AEC762613348 /* Fl_Menu_Window.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Menu_Window.H; path = ../../FL/Fl_Menu_Window.H; sourceTree = SOURCE_ROOT; };
 		8E81EE378D475F9CFDE296C9 /* Fl_Gl_Overlay.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Gl_Overlay.cxx; path = ../../src/Fl_Gl_Overlay.cxx; sourceTree = SOURCE_ROOT; };
 		8F311718B3CD16844535EEE6 /* comments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = comments.h; path = ../../fluid/comments.h; sourceTree = SOURCE_ROOT; };
 		8F40BFA65740DDA6E9240F30 /* overlay.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = overlay.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		90D9C06A2DCECD5B99C4A90A /* jdatadst.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdatadst.c; path = ../../jpeg/jdatadst.c; sourceTree = SOURCE_ROOT; };
-		91173358E60D137409651286 /* Fl_Preferences.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Preferences.H; path = ../../FL/Fl_Preferences.H; sourceTree = SOURCE_ROOT; };
 		91726A70C25E6155A2FAF315 /* undo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = undo.h; path = ../../fluid/undo.h; sourceTree = SOURCE_ROOT; };
-		91A43F37963443EA5E91BF1F /* Xutf8.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Xutf8.h; path = ../../FL/Xutf8.h; sourceTree = SOURCE_ROOT; };
 		91E088F22E63779E9E9FA651 /* alignment_panel.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = alignment_panel.cxx; path = ../../fluid/alignment_panel.cxx; sourceTree = SOURCE_ROOT; };
 		922182C23B114BA60D9CF160 /* native-filechooser.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "native-filechooser.cxx"; path = "../../test/native-filechooser.cxx"; sourceTree = SOURCE_ROOT; };
 		9305831B5D584A1C9652C308 /* scroll.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = scroll.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -4361,59 +4002,41 @@
 		9749479CF630E3B409C932A9 /* preferences.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = preferences.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		977642DF53013F6E6F98A12C /* numericsort.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = numericsort.c; path = ../../src/numericsort.c; sourceTree = SOURCE_ROOT; };
 		9795165015E763BF705783DC /* pngerror.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngerror.c; path = ../../png/pngerror.c; sourceTree = SOURCE_ROOT; };
-		97A233FBA4B73A1CA45A1388 /* Fl_Menu_Button.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Menu_Button.H; path = ../../FL/Fl_Menu_Button.H; sourceTree = SOURCE_ROOT; };
 		97BB0EFFDBDEA3B11ED79A73 /* input.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = input.cxx; path = ../../test/input.cxx; sourceTree = SOURCE_ROOT; };
 		982C59D5682A91A5959BA02F /* arc.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = arc.cxx; path = ../../test/arc.cxx; sourceTree = SOURCE_ROOT; };
 		98A16A4EC098BA7DB21E13DC /* fltk_png.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = fltk_png.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		98AAEBFD9218D1E1F24D81D8 /* navigation.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = navigation.cxx; path = ../../test/navigation.cxx; sourceTree = SOURCE_ROOT; };
 		98E423BB92A1B4F201F6B042 /* freeglut_geometry.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = freeglut_geometry.cxx; path = ../../src/freeglut_geometry.cxx; sourceTree = SOURCE_ROOT; };
 		9951B49F640C2C15321EED9C /* Fl_Wizard.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Wizard.cxx; path = ../../src/Fl_Wizard.cxx; sourceTree = SOURCE_ROOT; };
-		9961D74307F5B7D0FE016FC7 /* Fl_Roller.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Roller.H; path = ../../FL/Fl_Roller.H; sourceTree = SOURCE_ROOT; };
 		9A3D4184FF1C89B7CEE9FBD6 /* Fl_Return_Button.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Return_Button.cxx; path = ../../src/Fl_Return_Button.cxx; sourceTree = SOURCE_ROOT; };
 		9A9DEF157A356A54D1E9B6AE /* curve.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = curve.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		9B54C6B8D801E899981FC5E6 /* fl_boxtype.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_boxtype.cxx; path = ../../src/fl_boxtype.cxx; sourceTree = SOURCE_ROOT; };
-		9B57B581401BD8575BFAF2F1 /* Fl_Simple_Counter.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Simple_Counter.H; path = ../../FL/Fl_Simple_Counter.H; sourceTree = SOURCE_ROOT; };
-		9BCF393F94482AE7C7421397 /* Fl_Clock.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Clock.H; path = ../../FL/Fl_Clock.H; sourceTree = SOURCE_ROOT; };
 		9C87CC8FC8B566C55594BA36 /* sudoku.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = sudoku.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		9CA94171ECE3444BB9D65BAE /* fl_read_image.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_read_image.cxx; path = ../../src/fl_read_image.cxx; sourceTree = SOURCE_ROOT; };
 		9CBDD66D771449423070F912 /* template_panel.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = template_panel.cxx; path = ../../fluid/template_panel.cxx; sourceTree = SOURCE_ROOT; };
 		9CDFA6BC0C4F869C864E2EE0 /* gl_overlay.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = gl_overlay.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		9D49D6711A470C8334826252 /* iconize.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iconize.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		9D938B561E268ECE660B88D2 /* Fl_Free.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Free.H; path = ../../FL/Fl_Free.H; sourceTree = SOURCE_ROOT; };
 		9D942824B8FC886F6FCD853D /* Fl_Single_Window.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Single_Window.cxx; path = ../../src/Fl_Single_Window.cxx; sourceTree = SOURCE_ROOT; };
-		9DA766AE10DC532F3D0401A2 /* Fl_Select_Browser.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Select_Browser.H; path = ../../FL/Fl_Select_Browser.H; sourceTree = SOURCE_ROOT; };
 		9E22773911BDBADEA86730D4 /* Fl_Window_iconize.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Window_iconize.cxx; path = ../../src/Fl_Window_iconize.cxx; sourceTree = SOURCE_ROOT; };
 		9E227FFE277CB6E4EDF05454 /* arc.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = arc.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		9E4DE1CE4D10CA89D0D13AC7 /* Fl_Widget_Type.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Fl_Widget_Type.h; path = ../../fluid/Fl_Widget_Type.h; sourceTree = SOURCE_ROOT; };
 		9E8F7BCC0292044D887D423B /* fl_font.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_font.cxx; path = ../../src/fl_font.cxx; sourceTree = SOURCE_ROOT; };
 		9F484B5F88CDE466AC0D0592 /* Fl_arg.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_arg.cxx; path = ../../src/Fl_arg.cxx; sourceTree = SOURCE_ROOT; };
-		A0224B94F206123F3583F2A3 /* Fl_Menu_Item.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Menu_Item.H; path = ../../FL/Fl_Menu_Item.H; sourceTree = SOURCE_ROOT; };
 		A095F27EE603A15FD695F31C /* about_panel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = about_panel.h; path = ../../fluid/about_panel.h; sourceTree = SOURCE_ROOT; };
 		A0B57FF2A1D358159C950F7F /* boxtype.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = boxtype.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		A0C1440AC6EE3239EEC7D81B /* Fl_Text_Display.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Text_Display.cxx; path = ../../src/Fl_Text_Display.cxx; sourceTree = SOURCE_ROOT; };
 		A0E4F14B0B1B1BCD1307E3CC /* fullscreen.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = fullscreen.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		A136058B2D308F81E748921C /* fast_slow.fl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.fluid; name = fast_slow.fl; path = ../../test/fast_slow.fl; sourceTree = SOURCE_ROOT; };
-		A2B930ADD957B492869191EB /* Fl_Check_Browser.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Check_Browser.H; path = ../../FL/Fl_Check_Browser.H; sourceTree = SOURCE_ROOT; };
-		A2C688326DDAF4AA29EA9120 /* Fl_Toggle_Round_Button.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Toggle_Round_Button.H; path = ../../FL/Fl_Toggle_Round_Button.H; sourceTree = SOURCE_ROOT; };
 		A2CF2FD35911638AD607092F /* Fl_Check_Button.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Check_Button.cxx; path = ../../src/Fl_Check_Button.cxx; sourceTree = SOURCE_ROOT; };
-		A2E97BA0812AEC32965573B8 /* Fl_Help_Dialog.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Help_Dialog.H; path = ../../FL/Fl_Help_Dialog.H; sourceTree = SOURCE_ROOT; };
-		A36535CFF8B14BA8B087A880 /* Fl_Hold_Browser.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Hold_Browser.H; path = ../../FL/Fl_Hold_Browser.H; sourceTree = SOURCE_ROOT; };
 		A36EE3451F6FA70481742D83 /* browser.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = browser.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		A4456FF8D730E5BE234723F8 /* jfdctfst.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jfdctfst.c; path = ../../jpeg/jfdctfst.c; sourceTree = SOURCE_ROOT; };
-		A46A39199806D09CE0ABEE59 /* Fl_Shared_Image.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Shared_Image.H; path = ../../FL/Fl_Shared_Image.H; sourceTree = SOURCE_ROOT; };
-		A5166C3C9311628F6E450095 /* Fl_Input_.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Input_.H; path = ../../FL/Fl_Input_.H; sourceTree = SOURCE_ROOT; };
-		A57A8421086F1F0F9906B692 /* Fl_Wizard.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Wizard.H; path = ../../FL/Fl_Wizard.H; sourceTree = SOURCE_ROOT; };
 		A59208EAD1D0282D4FCD5839 /* sudoku.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = sudoku.cxx; path = ../../test/sudoku.cxx; sourceTree = SOURCE_ROOT; };
 		A5B9A5CE605BB8A57F66A2E6 /* Fl_Scrollbar.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Scrollbar.cxx; path = ../../src/Fl_Scrollbar.cxx; sourceTree = SOURCE_ROOT; };
 		A66819BE170F44B94F2E1981 /* Fl_File_Input.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_File_Input.cxx; path = ../../src/Fl_File_Input.cxx; sourceTree = SOURCE_ROOT; };
 		A68E1C76E8C3DC37B869BE48 /* fl_set_fonts.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_set_fonts.cxx; path = ../../src/fl_set_fonts.cxx; sourceTree = SOURCE_ROOT; };
-		A694A1F3298E15E532C3F784 /* Fl_Printer.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Printer.H; path = ../../FL/Fl_Printer.H; sourceTree = SOURCE_ROOT; };
 		A715D265EAD3C5DA5628485C /* jdcoefct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdcoefct.c; path = ../../jpeg/jdcoefct.c; sourceTree = SOURCE_ROOT; };
-		A71FBABB9EC90A680225B485 /* Fl_Sys_Menu_Bar.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Sys_Menu_Bar.H; path = ../../FL/Fl_Sys_Menu_Bar.H; sourceTree = SOURCE_ROOT; };
 		A723C22010FFFCA978570AC5 /* navigation.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = navigation.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		A7A692EB67C5CBE35D4A4B5C /* Fl_Gl_Device_Plugin.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Gl_Device_Plugin.cxx; path = ../../src/Fl_Gl_Device_Plugin.cxx; sourceTree = SOURCE_ROOT; };
-		A8B7D1DA9AAC707EBD991D57 /* fl_message.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = fl_message.H; path = ../../FL/fl_message.H; sourceTree = SOURCE_ROOT; };
-		A8F89055CABBCFECCC4CC940 /* Fl_Plugin.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Plugin.H; path = ../../FL/Fl_Plugin.H; sourceTree = SOURCE_ROOT; };
 		AA630D4D7FC09AEEA0D0424F /* colbrowser.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = colbrowser.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		AAA7458AD5CC6DCD9BA25E7F /* overlay.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = overlay.cxx; path = ../../test/overlay.cxx; sourceTree = SOURCE_ROOT; };
 		AACB2F49A22C3FB3E837EC61 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = "<absolute>"; };
@@ -4424,19 +4047,13 @@
 		AB3FA145ED96A9DA69465E9F /* table.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = table.cxx; path = ../../test/table.cxx; sourceTree = SOURCE_ROOT; };
 		AB46BE0BB9C13E4684CB6D76 /* jdhuff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdhuff.c; path = ../../jpeg/jdhuff.c; sourceTree = SOURCE_ROOT; };
 		AC0F7C69B25854F609BD1A0C /* cmap.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cmap.cxx; path = ../../src/cmap.cxx; sourceTree = SOURCE_ROOT; };
-		AC13C8877FA6231BEBF524FD /* mac.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = mac.H; path = ../../FL/mac.H; sourceTree = SOURCE_ROOT; };
 		AC14DA2BFF3CBEE249FC2E89 /* line_style.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = line_style.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		AC5B933E5C802F33BC495FF8 /* Fl_Multiline_Output.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Multiline_Output.H; path = ../../FL/Fl_Multiline_Output.H; sourceTree = SOURCE_ROOT; };
 		AD6E04F6F1B72EB797867D80 /* tile.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = tile.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		ADA5BC653C9EFBEAA8C0AD29 /* CubeViewUI.fl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.fluid; name = CubeViewUI.fl; path = ../../test/CubeViewUI.fl; sourceTree = SOURCE_ROOT; };
 		ADC532751F27C32E46DEFF6F /* pngtrans.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngtrans.c; path = ../../png/pngtrans.c; sourceTree = SOURCE_ROOT; };
-		AE1717E43F50EBA343960B1E /* Fl_Hor_Slider.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Hor_Slider.H; path = ../../FL/Fl_Hor_Slider.H; sourceTree = SOURCE_ROOT; };
-		AF65626F49A71525D24ED1B0 /* filename.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = filename.H; path = ../../FL/filename.H; sourceTree = SOURCE_ROOT; };
 		AFB1FA7E614E064C55880F21 /* gl_draw.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gl_draw.cxx; path = ../../src/gl_draw.cxx; sourceTree = SOURCE_ROOT; };
 		B140C9F8CF34FDAC94E15FE1 /* filename_ext.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = filename_ext.cxx; path = ../../src/filename_ext.cxx; sourceTree = SOURCE_ROOT; };
-		B145D961F04ADDCF78EFDFD1 /* Fl_FormsPixmap.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_FormsPixmap.H; path = ../../FL/Fl_FormsPixmap.H; sourceTree = SOURCE_ROOT; };
 		B1D1B6018D7240C1300914CD /* radio.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = radio.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		B20D11CF3F871C99011F632E /* Fl_BMP_Image.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_BMP_Image.H; path = ../../FL/Fl_BMP_Image.H; sourceTree = SOURCE_ROOT; };
 		B25F1323447C32308AA017DE /* fl_draw_pixmap.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_draw_pixmap.cxx; path = ../../src/fl_draw_pixmap.cxx; sourceTree = SOURCE_ROOT; };
 		B2F3E15BD31ADBA58ECD50C4 /* Fluid.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Fluid.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		B3022A0763D379E8707EC5D2 /* widget_panel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = widget_panel.h; path = ../../fluid/widget_panel.h; sourceTree = SOURCE_ROOT; };
@@ -4444,41 +4061,30 @@
 		B4CAFA162560925C4591997A /* Fl_Printer.cxx */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = Fl_Printer.cxx; path = ../../src/Fl_Printer.cxx; sourceTree = SOURCE_ROOT; };
 		B5AF439E5879211072C80F19 /* shape.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = shape.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		B60604913A508E327AA6C475 /* mandelbrot.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = mandelbrot.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		B6A59F303E6D6C2EE4481D78 /* Fl_Light_Button.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Light_Button.H; path = ../../FL/Fl_Light_Button.H; sourceTree = SOURCE_ROOT; };
-		B707DB501C8702446FA24146 /* Fl_Multi_Browser.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Multi_Browser.H; path = ../../FL/Fl_Multi_Browser.H; sourceTree = SOURCE_ROOT; };
-		B719FC0289E54CA915BC0B94 /* fl_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = fl_types.h; path = ../../FL/fl_types.h; sourceTree = SOURCE_ROOT; };
 		B77901D4A0022EBCA148E65F /* fonts.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = fonts.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		B7DE70E246F6A05A42991CC1 /* pngwio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngwio.c; path = ../../png/pngwio.c; sourceTree = SOURCE_ROOT; };
-		B7E85200DC5E9EBB605EE1CB /* Fl_Toggle_Button.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Toggle_Button.H; path = ../../FL/Fl_Toggle_Button.H; sourceTree = SOURCE_ROOT; };
-		B8166E088FC996C9A89D2D37 /* Fl_Tabs.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Tabs.H; path = ../../FL/Fl_Tabs.H; sourceTree = SOURCE_ROOT; };
-		B8455C1BD96FF6FB3C197C34 /* Fl_Pixmap.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Pixmap.H; path = ../../FL/Fl_Pixmap.H; sourceTree = SOURCE_ROOT; };
 		B91617AF27FEB2D15FA4DE42 /* hello.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = hello.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		B95D0F0F7652C2937824E87D /* crc32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = crc32.c; path = ../../zlib/crc32.c; sourceTree = SOURCE_ROOT; };
 		BA7B1E9C7AA7316E98D369C2 /* Fl_Light_Button.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Light_Button.cxx; path = ../../src/Fl_Light_Button.cxx; sourceTree = SOURCE_ROOT; };
-		BA939493F873CF0518DB0A1B /* Fl_GIF_Image.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_GIF_Image.H; path = ../../FL/Fl_GIF_Image.H; sourceTree = SOURCE_ROOT; };
 		BAF6DCFBAFBE016247558B82 /* fl_rect.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_rect.cxx; path = ../../src/fl_rect.cxx; sourceTree = SOURCE_ROOT; };
 		BB37899B104B362F32F0F417 /* jdmarker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdmarker.c; path = ../../jpeg/jdmarker.c; sourceTree = SOURCE_ROOT; };
 		BBD2663C0F428CC57126F4E2 /* pngrutil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngrutil.c; path = ../../png/pngrutil.c; sourceTree = SOURCE_ROOT; };
 		BD209D4716895D1365B6BA73 /* alignment_panel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = alignment_panel.h; path = ../../fluid/alignment_panel.h; sourceTree = SOURCE_ROOT; };
 		BD535A20C799334E639DDD81 /* pngmem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngmem.c; path = ../../png/pngmem.c; sourceTree = SOURCE_ROOT; };
 		BD87D324A97F12C5C38A1432 /* screen_xywh.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = screen_xywh.cxx; path = ../../src/screen_xywh.cxx; sourceTree = SOURCE_ROOT; };
-		BDEA9C0CFFA25A943140F7FC /* Fl_Fill_Slider.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Fill_Slider.H; path = ../../FL/Fl_Fill_Slider.H; sourceTree = SOURCE_ROOT; };
 		BF1FE1C69D048AA23CF27B1E /* Fl_Window.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Window.cxx; path = ../../src/Fl_Window.cxx; sourceTree = SOURCE_ROOT; };
 		BF27A6A9F541DE61B19AB234 /* Fl_Widget_Type.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Widget_Type.cxx; path = ../../fluid/Fl_Widget_Type.cxx; sourceTree = SOURCE_ROOT; };
 		BF30A6F91EA43AB094476FFC /* scandir.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = scandir.c; path = ../../src/scandir.c; sourceTree = SOURCE_ROOT; };
-		BF88B604F8342EF96DFF5AEA /* Fl_Group.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Group.H; path = ../../FL/Fl_Group.H; sourceTree = SOURCE_ROOT; };
 		BFEF05C334B87B518BFFEC1F /* threads.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = threads.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		C05E4BE052F69E6F1FD92730 /* utf8.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = utf8.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		C14982C1579C0303D84E569E /* subwindow.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = subwindow.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		C1848E31F46192797A1EEC5E /* Fluid_Image.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fluid_Image.cxx; path = ../../fluid/Fluid_Image.cxx; sourceTree = SOURCE_ROOT; };
-		C359E5D5187606DD69C7938B /* Fl.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl.H; path = ../../FL/Fl.H; sourceTree = SOURCE_ROOT; };
 		C39FA04F3B7CD8E53876D0F4 /* fltk_jpeg.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = fltk_jpeg.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		C3F048573FAEABD2D27401D4 /* Fl_Box.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Box.cxx; path = ../../src/Fl_Box.cxx; sourceTree = SOURCE_ROOT; };
 		C4CF7DDC2EC8792157A3F43B /* pngread.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngread.c; path = ../../png/pngread.c; sourceTree = SOURCE_ROOT; };
 		C64D06EA8317E22EE4B2376D /* inflate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = inflate.c; path = ../../zlib/inflate.c; sourceTree = SOURCE_ROOT; };
 		C7C5A11DD7448F61DFC69398 /* glpuzzle.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = glpuzzle.cxx; path = ../../test/glpuzzle.cxx; sourceTree = SOURCE_ROOT; };
 		C84F99F5AC8C6517F45055B0 /* jdmerge.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdmerge.c; path = ../../jpeg/jdmerge.c; sourceTree = SOURCE_ROOT; };
-		C8AE10A8DDF53B8B27E3215A /* Fl_Choice.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Choice.H; path = ../../FL/Fl_Choice.H; sourceTree = SOURCE_ROOT; };
 		C9165EAF1291A304003FF4F0 /* utf8.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = utf8.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		C9165ED31291A376003FF4F0 /* unittests.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = unittests.cxx; path = ../../test/unittests.cxx; sourceTree = SOURCE_ROOT; };
 		C95961641274CDEC009C0594 /* README.Xcode */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README.Xcode; path = ../../FL/README.Xcode; sourceTree = SOURCE_ROOT; };
@@ -4493,27 +4099,21 @@
 		C9EDD4E41274BBB600ADB21C /* jerror.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jerror.h; path = ../../jpeg/jerror.h; sourceTree = SOURCE_ROOT; };
 		C9EDD4E51274BBB600ADB21C /* jmorecfg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jmorecfg.h; path = ../../jpeg/jmorecfg.h; sourceTree = SOURCE_ROOT; };
 		C9EDD4E61274BBB600ADB21C /* jpeglib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jpeglib.h; path = ../../jpeg/jpeglib.h; sourceTree = SOURCE_ROOT; };
-		C9EDD5B11274C4FA00ADB21C /* Fl_PostScript.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_PostScript.H; path = ../../FL/Fl_PostScript.H; sourceTree = SOURCE_ROOT; };
 		C9F1464F0E6A4DCD77AF72B8 /* Fl_Function_Type.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Function_Type.cxx; path = ../../fluid/Fl_Function_Type.cxx; sourceTree = SOURCE_ROOT; };
 		C9F9C0DD12CFCDAC0067ADCC /* rgb.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = rgb.txt; path = ../../test/rgb.txt; sourceTree = SOURCE_ROOT; };
 		CAEC632CEFC2CA7592EF9D74 /* image.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = image.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		CB23A4CE90D5A89FA2640A78 /* label.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = label.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		CC0C80DA4DD31B6B2DB91096 /* CodeEditor.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CodeEditor.cxx; path = ../../fluid/CodeEditor.cxx; sourceTree = SOURCE_ROOT; };
 		CC2482EC04B752BF38D4DBE2 /* Fl_Window_hotspot.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Window_hotspot.cxx; path = ../../src/Fl_Window_hotspot.cxx; sourceTree = SOURCE_ROOT; };
-		CCDF80CC7D27689DDC83FBA1 /* Fl_Tree_Item_Array.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Tree_Item_Array.H; path = ../../FL/Fl_Tree_Item_Array.H; sourceTree = SOURCE_ROOT; };
 		CD0C572F3E0A8040E9C52E0F /* filename_list.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = filename_list.cxx; path = ../../src/filename_list.cxx; sourceTree = SOURCE_ROOT; };
 		CE1157541DFCB8DC69A00345 /* Fl_PNG_Image.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_PNG_Image.cxx; path = ../../src/Fl_PNG_Image.cxx; sourceTree = SOURCE_ROOT; };
-		CE97D58B5B0F1A2A7DB2A3FF /* Fl_Counter.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Counter.H; path = ../../FL/Fl_Counter.H; sourceTree = SOURCE_ROOT; };
-		CEC9BC26680806AD2B47C07F /* Fl_Fill_Dial.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Fill_Dial.H; path = ../../FL/Fl_Fill_Dial.H; sourceTree = SOURCE_ROOT; };
 		CF8C02ED9EB60F55A5713F10 /* jcdctmgr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcdctmgr.c; path = ../../jpeg/jcdctmgr.c; sourceTree = SOURCE_ROOT; };
-		CFE13249EA12A63C478888A8 /* Fl_Return_Button.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Return_Button.H; path = ../../FL/Fl_Return_Button.H; sourceTree = SOURCE_ROOT; };
 		D004B2D87C53E063F848C539 /* Fl_lock.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_lock.cxx; path = ../../src/Fl_lock.cxx; sourceTree = SOURCE_ROOT; };
 		D02CF2893ECCE831CD5D3176 /* Fl_Multi_Label.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Multi_Label.cxx; path = ../../src/Fl_Multi_Label.cxx; sourceTree = SOURCE_ROOT; };
 		D06E371A971A3BC1B399AD78 /* button.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = button.cxx; path = ../../test/button.cxx; sourceTree = SOURCE_ROOT; };
 		D0E376E93B4F22BE701D29E0 /* Fl_Roller.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Roller.cxx; path = ../../src/Fl_Roller.cxx; sourceTree = SOURCE_ROOT; };
 		D10B1EA053B5C8F02A636D93 /* tree.fl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.fluid; name = tree.fl; path = ../../test/tree.fl; sourceTree = SOURCE_ROOT; };
 		D1C792936D427CC48581BFAE /* Fl_Overlay_Window.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Overlay_Window.cxx; path = ../../src/Fl_Overlay_Window.cxx; sourceTree = SOURCE_ROOT; };
-		D2DE1079C826533A91053A9C /* Fl_XBM_Image.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_XBM_Image.H; path = ../../FL/Fl_XBM_Image.H; sourceTree = SOURCE_ROOT; };
 		D33C668435685F7CCB359EE2 /* pngrio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngrio.c; path = ../../png/pngrio.c; sourceTree = SOURCE_ROOT; };
 		D3761C93D5C7A48D4B80225A /* doublebuffer.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = doublebuffer.cxx; path = ../../test/doublebuffer.cxx; sourceTree = SOURCE_ROOT; };
 		D390A37D428892B9A8AD63AD /* Fl_Text_Buffer.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Text_Buffer.cxx; path = ../../src/Fl_Text_Buffer.cxx; sourceTree = SOURCE_ROOT; };
@@ -4523,11 +4123,8 @@
 		D4E11692C02E48A71A18527C /* function_panel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = function_panel.h; path = ../../fluid/function_panel.h; sourceTree = SOURCE_ROOT; };
 		D4FA9A41956E4654256AEB09 /* inactive.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = inactive.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		D50A8FFC111398E34136B192 /* Fl_Menu_.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Menu_.cxx; path = ../../src/Fl_Menu_.cxx; sourceTree = SOURCE_ROOT; };
-		D513CAE8AAED897D6B3B72F7 /* Fl_Multi_Label.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Multi_Label.H; path = ../../FL/Fl_Multi_Label.H; sourceTree = SOURCE_ROOT; };
 		D531F77A15AACC9E297B4490 /* Fl_Input_.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Input_.cxx; path = ../../src/Fl_Input_.cxx; sourceTree = SOURCE_ROOT; };
-		D585CB55BDA143D343033352 /* Fl_Output.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Output.H; path = ../../FL/Fl_Output.H; sourceTree = SOURCE_ROOT; };
 		D5CDFA360799E961187294DC /* jfdctflt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jfdctflt.c; path = ../../jpeg/jfdctflt.c; sourceTree = SOURCE_ROOT; };
-		D5CE28437ABB8513BE08AC77 /* names.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = names.h; path = ../../FL/names.h; sourceTree = SOURCE_ROOT; };
 		D5D41747D7B904747C2DFBB2 /* scroll.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = scroll.cxx; path = ../../test/scroll.cxx; sourceTree = SOURCE_ROOT; };
 		D5F75B6C9483B2BB47965789 /* Fl_Tabs.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Tabs.cxx; path = ../../src/Fl_Tabs.cxx; sourceTree = SOURCE_ROOT; };
 		D60CC89D1A70BE6AA3929604 /* filename_absolute.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = filename_absolute.cxx; path = ../../src/filename_absolute.cxx; sourceTree = SOURCE_ROOT; };
@@ -4544,7 +4141,6 @@
 		D816F0ECD89EEA82EC711076 /* trees.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = trees.c; path = ../../zlib/trees.c; sourceTree = SOURCE_ROOT; };
 		D82A25EBC21394EDE9AC33C4 /* minimum.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = minimum.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		D8332361B912AFCE6DDF4B11 /* fl_ask.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_ask.cxx; path = ../../src/fl_ask.cxx; sourceTree = SOURCE_ROOT; };
-		D90A34CD50A6825298459CCE /* Fl_Browser.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Browser.H; path = ../../FL/Fl_Browser.H; sourceTree = SOURCE_ROOT; };
 		D9A7DCBAFF41CBC3DCB67C6F /* Fl_Device.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Device.cxx; path = ../../src/Fl_Device.cxx; sourceTree = SOURCE_ROOT; };
 		D9DB580DCA05DE487FACA272 /* jchuff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jchuff.c; path = ../../jpeg/jchuff.c; sourceTree = SOURCE_ROOT; };
 		D9FC21A432D9F4C118B2B1D4 /* Fl_Text_Editor.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Text_Editor.cxx; path = ../../src/Fl_Text_Editor.cxx; sourceTree = SOURCE_ROOT; };
@@ -4553,27 +4149,19 @@
 		DAC97F0DCE974BD65C620792 /* help.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = help.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		DC4C39F3567A5571CABF1038 /* Fl_File_Browser.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_File_Browser.cxx; path = ../../src/Fl_File_Browser.cxx; sourceTree = SOURCE_ROOT; };
 		DC655A6341A86C1A28FF878B /* buttons.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = buttons.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		DCEE2710A7119519AEF640AD /* Fl_Timer.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Timer.H; path = ../../FL/Fl_Timer.H; sourceTree = SOURCE_ROOT; };
 		DD77F09FACBBCDC3C5276B93 /* glut_compatability.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = glut_compatability.cxx; path = ../../src/glut_compatability.cxx; sourceTree = SOURCE_ROOT; };
 		DD96B70D85E60B641F061D51 /* jquant1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jquant1.c; path = ../../jpeg/jquant1.c; sourceTree = SOURCE_ROOT; };
-		DE2F47C61B9083A6E7811620 /* Fl_File_Browser.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_File_Browser.H; path = ../../FL/Fl_File_Browser.H; sourceTree = SOURCE_ROOT; };
 		DECAFE2642928028BDF791B7 /* Shortcut_Button.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Shortcut_Button.h; path = ../../fluid/Shortcut_Button.h; sourceTree = SOURCE_ROOT; };
 		DEF20F6B91F7FB0EBCBD2411 /* fl_utf8.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_utf8.cxx; path = ../../src/fl_utf8.cxx; sourceTree = SOURCE_ROOT; };
 		DF2662F7275F8873F9BA6C64 /* device.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = device.cxx; path = ../../test/device.cxx; sourceTree = SOURCE_ROOT; };
-		E0132688B22159A85307F264 /* forms.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = forms.H; path = ../../FL/forms.H; sourceTree = SOURCE_ROOT; };
-		E159325B70E8DAA4D9DE0C1B /* glu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glu.h; path = ../../FL/glu.h; sourceTree = SOURCE_ROOT; };
 		E1BF46F43DB886EB2301F83A /* fast_slow.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = fast_slow.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		E21339D33557BB5501B08AB1 /* Fl_Button.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Button.H; path = ../../FL/Fl_Button.H; sourceTree = SOURCE_ROOT; };
 		E4337D2D7CEEDCAD78B068E5 /* jctrans.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jctrans.c; path = ../../jpeg/jctrans.c; sourceTree = SOURCE_ROOT; };
-		E448719A354B3D80FD2E1992 /* dirent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dirent.h; path = ../../FL/dirent.h; sourceTree = SOURCE_ROOT; };
 		E46A3C4F955A94AE095FF726 /* Fl_Browser_load.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Browser_load.cxx; path = ../../src/Fl_Browser_load.cxx; sourceTree = SOURCE_ROOT; };
 		E49427F44D81B0A6192BC7CB /* filename_expand.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = filename_expand.cxx; path = ../../src/filename_expand.cxx; sourceTree = SOURCE_ROOT; };
 		E4A2A361D4B13B70464C6A26 /* fl_plastic.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_plastic.cxx; path = ../../src/fl_plastic.cxx; sourceTree = SOURCE_ROOT; };
 		E618B793B357747DC837667E /* jmemmgr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jmemmgr.c; path = ../../jpeg/jmemmgr.c; sourceTree = SOURCE_ROOT; };
 		E73F55075EA0F5C4BC6C0D03 /* symbols.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = symbols.cxx; path = ../../test/symbols.cxx; sourceTree = SOURCE_ROOT; };
-		E7C720E51DAC292F13358811 /* Fl_Gl_Window.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Gl_Window.H; path = ../../FL/Fl_Gl_Window.H; sourceTree = SOURCE_ROOT; };
 		E82932DF2A0C624C6EDC9207 /* Fl_Tile.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Tile.cxx; path = ../../src/Fl_Tile.cxx; sourceTree = SOURCE_ROOT; };
-		E82DD2B5676CF315E945AF23 /* Fl_FormsBitmap.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_FormsBitmap.H; path = ../../FL/Fl_FormsBitmap.H; sourceTree = SOURCE_ROOT; };
 		E840F8E478F4C8C6038E235B /* resize.fl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.fluid; name = resize.fl; path = ../../test/resize.fl; sourceTree = SOURCE_ROOT; };
 		E887B4AE75EC9D885D592636 /* fluid.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fluid.cxx; path = ../../fluid/fluid.cxx; sourceTree = SOURCE_ROOT; };
 		E8D790E9361D2B311B6839B1 /* pixmap.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = pixmap.cxx; path = ../../test/pixmap.cxx; sourceTree = SOURCE_ROOT; };
@@ -4587,23 +4175,17 @@
 		EB5B18A1B9B1E41F2AB56A97 /* Fl_get_system_colors.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_get_system_colors.cxx; path = ../../src/Fl_get_system_colors.cxx; sourceTree = SOURCE_ROOT; };
 		EB9D2470FCD53D54DDB5CA10 /* jdinput.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdinput.c; path = ../../jpeg/jdinput.c; sourceTree = SOURCE_ROOT; };
 		EBC0D2C965EDD6503B0CF519 /* vsnprintf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = vsnprintf.c; path = ../../src/vsnprintf.c; sourceTree = SOURCE_ROOT; };
-		EC2BAEE540612218DC9EEC75 /* Fl_Scroll.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Scroll.H; path = ../../FL/Fl_Scroll.H; sourceTree = SOURCE_ROOT; };
 		EC57889382FB898FD3EF2580 /* Fl_Gl_Window.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Gl_Window.cxx; path = ../../src/Fl_Gl_Window.cxx; sourceTree = SOURCE_ROOT; };
 		EC5862E1FC79542DC55D8462 /* colbrowser.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = colbrowser.cxx; path = ../../test/colbrowser.cxx; sourceTree = SOURCE_ROOT; };
 		ECFF712363202EC351A51E53 /* Fl_PNM_Image.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_PNM_Image.cxx; path = ../../src/Fl_PNM_Image.cxx; sourceTree = SOURCE_ROOT; };
 		EDCB878D48197F6AE1C99614 /* jidctred.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jidctred.c; path = ../../jpeg/jidctred.c; sourceTree = SOURCE_ROOT; };
 		EDE6CE6B09D31AC0AAC9FF56 /* fullscreen.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fullscreen.cxx; path = ../../test/fullscreen.cxx; sourceTree = SOURCE_ROOT; };
-		EE2FB1F7B99BE408E1B4DFB7 /* Fl_Object.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Object.H; path = ../../FL/Fl_Object.H; sourceTree = SOURCE_ROOT; };
-		EE6507EFCDDA13ACF9373E3E /* Fl_Hor_Fill_Slider.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Hor_Fill_Slider.H; path = ../../FL/Fl_Hor_Fill_Slider.H; sourceTree = SOURCE_ROOT; };
 		EF6D2F48B12359DE60E499C2 /* fl_labeltype.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_labeltype.cxx; path = ../../src/fl_labeltype.cxx; sourceTree = SOURCE_ROOT; };
 		EF7E3948AA6D39FF92C88E06 /* forms_timer.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = forms_timer.cxx; path = ../../src/forms_timer.cxx; sourceTree = SOURCE_ROOT; };
-		EFAE92A1C7CA90BC56E5A70A /* fl_show_input.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = fl_show_input.H; path = ../../FL/fl_show_input.H; sourceTree = SOURCE_ROOT; };
-		EFEEE679374D7E4191873447 /* Fl_Input.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Input.H; path = ../../FL/Fl_Input.H; sourceTree = SOURCE_ROOT; };
 		F0F281028A82F2E8C2070B26 /* cursor.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = cursor.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		F123133D8A3AD430ED07DF17 /* jdcolor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdcolor.c; path = ../../jpeg/jdcolor.c; sourceTree = SOURCE_ROOT; };
 		F1C4032FB66042A96955A62E /* Fl_Value_Output.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Value_Output.cxx; path = ../../src/Fl_Value_Output.cxx; sourceTree = SOURCE_ROOT; };
 		F20C125E79B7CC1F5109248C /* jdphuff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdphuff.c; path = ../../jpeg/jdphuff.c; sourceTree = SOURCE_ROOT; };
-		F2E5612A81A6E8D53ED91CAE /* Fl_Slider.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Slider.H; path = ../../FL/Fl_Slider.H; sourceTree = SOURCE_ROOT; };
 		F319551D961725F0949D0235 /* ask.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ask.cxx; path = ../../test/ask.cxx; sourceTree = SOURCE_ROOT; };
 		F397A185D11C3DED903CB99F /* Fl_Chart.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Chart.cxx; path = ../../src/Fl_Chart.cxx; sourceTree = SOURCE_ROOT; };
 		F42EEFA08A75F71B33094D50 /* Fl_Window_fullscreen.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Fl_Window_fullscreen.cxx; path = ../../src/Fl_Window_fullscreen.cxx; sourceTree = SOURCE_ROOT; };
@@ -4615,24 +4197,16 @@
 		F6A596316AE6F65117FF7196 /* fl_shadow_box.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_shadow_box.cxx; path = ../../src/fl_shadow_box.cxx; sourceTree = SOURCE_ROOT; };
 		F7F5C1D22A1B4CB89BAAD201 /* file_chooser.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = file_chooser.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		F8880CD3FEF32388A24C1B94 /* fltk_zlib.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = fltk_zlib.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-		F8990CDEFF54C483BD6BF716 /* Fl_Nice_Slider.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Nice_Slider.H; path = ../../FL/Fl_Nice_Slider.H; sourceTree = SOURCE_ROOT; };
-		F8BAA8B283D4CF4D904B6486 /* Fl_Valuator.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Valuator.H; path = ../../FL/Fl_Valuator.H; sourceTree = SOURCE_ROOT; };
-		F91DEF40DC3592BE52CAB001 /* Fl_Native_File_Chooser.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Native_File_Chooser.H; path = ../../FL/Fl_Native_File_Chooser.H; sourceTree = SOURCE_ROOT; };
-		F98FE04C081FB5B1161C546C /* Fl_Window.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Window.H; path = ../../FL/Fl_Window.H; sourceTree = SOURCE_ROOT; };
 		FA2F70BA8FF4E7F4B7B36971 /* fl_file_dir.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_file_dir.cxx; path = ../../src/fl_file_dir.cxx; sourceTree = SOURCE_ROOT; };
-		FAA6BA6E4DC1AF28F5FC8466 /* Fl_Tile.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Tile.H; path = ../../FL/Fl_Tile.H; sourceTree = SOURCE_ROOT; };
 		FAD24127A06F3F9F0EEB843A /* fl_open_uri.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_open_uri.cxx; path = ../../src/fl_open_uri.cxx; sourceTree = SOURCE_ROOT; };
 		FB2A2DF5FA72AD6362BEC9E1 /* forms.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = forms.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		FB7A9EFB3C7CDAE324E9544F /* case.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = case.c; path = ../../src/xutf8/case.c; sourceTree = SOURCE_ROOT; };
 		FBB2C3FCFF8322A237DDBE23 /* fl_set_font.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_set_font.cxx; path = ../../src/fl_set_font.cxx; sourceTree = SOURCE_ROOT; };
 		FC940D10359580615C166335 /* shape.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = shape.cxx; path = ../../test/shape.cxx; sourceTree = SOURCE_ROOT; };
-		FD1BB104911A6726B02EEE37 /* Fl_Radio_Round_Button.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Radio_Round_Button.H; path = ../../FL/Fl_Radio_Round_Button.H; sourceTree = SOURCE_ROOT; };
 		FE29497A25C52BC2F7D5A9D4 /* inactive.fl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.fluid; name = inactive.fl; path = ../../test/inactive.fl; sourceTree = SOURCE_ROOT; };
 		FE466F26BF6C316E5A1770E6 /* jccolor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jccolor.c; path = ../../jpeg/jccolor.c; sourceTree = SOURCE_ROOT; };
-		FE90AA3BB40510FA45E0C27B /* Fl_Bitmap.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Bitmap.H; path = ../../FL/Fl_Bitmap.H; sourceTree = SOURCE_ROOT; };
 		FEB0F8FE6383384180570D94 /* fltk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = fltk.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		FEE2F6E62FECD745952CB51D /* function_panel.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = function_panel.cxx; path = ../../fluid/function_panel.cxx; sourceTree = SOURCE_ROOT; };
-		FF88A1DACCAFA2D143A7F234 /* Fl_Value_Input.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Fl_Value_Input.H; path = ../../FL/Fl_Value_Input.H; sourceTree = SOURCE_ROOT; };
 		FFFC4EDB5F397E3575B3A310 /* fl_draw.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_draw.cxx; path = ../../src/fl_draw.cxx; sourceTree = SOURCE_ROOT; };
 /* End PBXFileReference section */
 
@@ -5709,7 +5283,6 @@
 		3561F7EB989A4BBA606E380F /* Headers */ = {
 			isa = PBXGroup;
 			children = (
-				E0132688B22159A85307F264 /* forms.H */,
 			);
 			name = Headers;
 			sourceTree = "<group>";
@@ -5792,13 +5365,6 @@
 		54B6A2D8180AD6FCA26FB387 /* Headers */ = {
 			isa = PBXGroup;
 			children = (
-				B20D11CF3F871C99011F632E /* Fl_BMP_Image.H */,
-				BA939493F873CF0518DB0A1B /* Fl_GIF_Image.H */,
-				A2E97BA0812AEC32965573B8 /* Fl_Help_Dialog.H */,
-				31D736821E68F01A1A11FC9F /* Fl_Help_View.H */,
-				15B635124165659EFD5640FF /* Fl_JPEG_Image.H */,
-				87F83C8E6003FAE14C4E8249 /* Fl_PNG_Image.H */,
-				330837DFFF31CE2EB245C7EC /* Fl_PNM_Image.H */,
 			);
 			name = Headers;
 			sourceTree = "<group>";
@@ -5952,12 +5518,6 @@
 		7E097C61B5952D56DFB93ECF /* Headers */ = {
 			isa = PBXGroup;
 			children = (
-				E7C720E51DAC292F13358811 /* Fl_Gl_Window.H */,
-				8C1CBF782BBD9CCBFC0B451B /* gl.h */,
-				4C9AF6F2C1B78A67FFD177F9 /* gl2opengl.h */,
-				88C72DFE480F42D0547F786B /* gl_draw.H */,
-				E159325B70E8DAA4D9DE0C1B /* glu.h */,
-				451D01896EFDD83277515630 /* glut.H */,
 			);
 			name = Headers;
 			sourceTree = "<group>";
@@ -6169,134 +5729,6 @@
 		B04F6E032ADAF0A16A860A2E /* Headers */ = {
 			isa = PBXGroup;
 			children = (
-				84CE79448708855561FEE498 /* Enumerations.H */,
-				C359E5D5187606DD69C7938B /* Fl.H */,
-				5CDA214AEABC15E3EF1BB172 /* Fl_Adjuster.H */,
-				FE90AA3BB40510FA45E0C27B /* Fl_Bitmap.H */,
-				390863A4D5D1B4C7C9B58679 /* Fl_Box.H */,
-				D90A34CD50A6825298459CCE /* Fl_Browser.H */,
-				149DEBE486F3554738429684 /* Fl_Browser_.H */,
-				E21339D33557BB5501B08AB1 /* Fl_Button.H */,
-				87F89271469726AE756E4D93 /* Fl_Cairo.H */,
-				8B02E11D61E46AD79DE7EFE7 /* Fl_Cairo_Window.H */,
-				0CAFE7CA950A492FE35F2163 /* Fl_Chart.H */,
-				A2B930ADD957B492869191EB /* Fl_Check_Browser.H */,
-				4B1195741A8CCE772D17856C /* Fl_Check_Button.H */,
-				C8AE10A8DDF53B8B27E3215A /* Fl_Choice.H */,
-				9BCF393F94482AE7C7421397 /* Fl_Clock.H */,
-				2CD1EF8B4BFD0820E9A42641 /* Fl_Color_Chooser.H */,
-				CE97D58B5B0F1A2A7DB2A3FF /* Fl_Counter.H */,
-				82863AEFE086C3469C386C22 /* Fl_Device.H */,
-				02C21BB31E7DDFE9E76F4997 /* Fl_Dial.H */,
-				80D32CF90973629228CAA7F0 /* Fl_Double_Window.H */,
-				53930BEE4CBAAF4C82825F9B /* Fl_Export.H */,
-				DE2F47C61B9083A6E7811620 /* Fl_File_Browser.H */,
-				729751A4A3DAAAF169C80ACC /* Fl_File_Chooser.H */,
-				18A8E88697605A73C46C0DDF /* Fl_File_Icon.H */,
-				0512326568039B9A0C5BD3DB /* Fl_File_Input.H */,
-				CEC9BC26680806AD2B47C07F /* Fl_Fill_Dial.H */,
-				BDEA9C0CFFA25A943140F7FC /* Fl_Fill_Slider.H */,
-				00CAAA52DC3193E1133AE26C /* Fl_Float_Input.H */,
-				E82DD2B5676CF315E945AF23 /* Fl_FormsBitmap.H */,
-				B145D961F04ADDCF78EFDFD1 /* Fl_FormsPixmap.H */,
-				9D938B561E268ECE660B88D2 /* Fl_Free.H */,
-				BF88B604F8342EF96DFF5AEA /* Fl_Group.H */,
-				A36535CFF8B14BA8B087A880 /* Fl_Hold_Browser.H */,
-				EE6507EFCDDA13ACF9373E3E /* Fl_Hor_Fill_Slider.H */,
-				21094B942E7FBFBCF1679259 /* Fl_Hor_Nice_Slider.H */,
-				AE1717E43F50EBA343960B1E /* Fl_Hor_Slider.H */,
-				5B8BFBDF9C48A998F0781C9E /* Fl_Hor_Value_Slider.H */,
-				332598626430923370C48554 /* Fl_Image.H */,
-				EFEEE679374D7E4191873447 /* Fl_Input.H */,
-				A5166C3C9311628F6E450095 /* Fl_Input_.H */,
-				648E9C3B61328280244FCCA5 /* Fl_Input_Choice.H */,
-				1CFFC165E8EE6C1AD9CFD33C /* Fl_Int_Input.H */,
-				B6A59F303E6D6C2EE4481D78 /* Fl_Light_Button.H */,
-				790078FB2B75406B2E250E59 /* Fl_Line_Dial.H */,
-				75DEA03FA1E1CA10E4AF212A /* Fl_Menu.H */,
-				8985E851BEC6BB2BC613E5AD /* Fl_Menu_.H */,
-				1DBDBB6B583C028BD8D1D2F4 /* Fl_Menu_Bar.H */,
-				97A233FBA4B73A1CA45A1388 /* Fl_Menu_Button.H */,
-				A0224B94F206123F3583F2A3 /* Fl_Menu_Item.H */,
-				8DFB9E7E8DB3AEC762613348 /* Fl_Menu_Window.H */,
-				B707DB501C8702446FA24146 /* Fl_Multi_Browser.H */,
-				D513CAE8AAED897D6B3B72F7 /* Fl_Multi_Label.H */,
-				8A322CF28E7EAA76A260345A /* Fl_Multiline_Input.H */,
-				AC5B933E5C802F33BC495FF8 /* Fl_Multiline_Output.H */,
-				F91DEF40DC3592BE52CAB001 /* Fl_Native_File_Chooser.H */,
-				F8990CDEFF54C483BD6BF716 /* Fl_Nice_Slider.H */,
-				EE2FB1F7B99BE408E1B4DFB7 /* Fl_Object.H */,
-				D585CB55BDA143D343033352 /* Fl_Output.H */,
-				1FCDDD4E00F7CAA8193CAE04 /* Fl_Overlay_Window.H */,
-				52C3B1D0A473BDC01D497917 /* Fl_Pack.H */,
-				B8455C1BD96FF6FB3C197C34 /* Fl_Pixmap.H */,
-				A8F89055CABBCFECCC4CC940 /* Fl_Plugin.H */,
-				20A898FCF6349F72BABDC497 /* Fl_Positioner.H */,
-				C9EDD5B11274C4FA00ADB21C /* Fl_PostScript.H */,
-				91173358E60D137409651286 /* Fl_Preferences.H */,
-				A694A1F3298E15E532C3F784 /* Fl_Printer.H */,
-				4CD4094D8712818EACF5C7C5 /* Fl_Progress.H */,
-				1072C2A463FBCF2C5E278649 /* Fl_RGB_Image.H */,
-				59EAC37D26FEC2AB49D79C08 /* Fl_Radio_Button.H */,
-				03D5B076E8097600496915F7 /* Fl_Radio_Light_Button.H */,
-				FD1BB104911A6726B02EEE37 /* Fl_Radio_Round_Button.H */,
-				4F64CD29833871B09CCB278E /* Fl_Repeat_Button.H */,
-				CFE13249EA12A63C478888A8 /* Fl_Return_Button.H */,
-				9961D74307F5B7D0FE016FC7 /* Fl_Roller.H */,
-				270962DA6A7684128875ADDE /* Fl_Round_Button.H */,
-				461BBD068DF8C58F4FFB131B /* Fl_Round_Clock.H */,
-				EC2BAEE540612218DC9EEC75 /* Fl_Scroll.H */,
-				28F3E4EBB6E5F8420624A5DA /* Fl_Scrollbar.H */,
-				42FEA3A2967D04217C27FA61 /* Fl_Secret_Input.H */,
-				9DA766AE10DC532F3D0401A2 /* Fl_Select_Browser.H */,
-				A46A39199806D09CE0ABEE59 /* Fl_Shared_Image.H */,
-				9B57B581401BD8575BFAF2F1 /* Fl_Simple_Counter.H */,
-				0EC11A5CAD4E3607A72BEF84 /* Fl_Single_Window.H */,
-				F2E5612A81A6E8D53ED91CAE /* Fl_Slider.H */,
-				76DD2676B757CB7F19B6EF94 /* Fl_Spinner.H */,
-				A71FBABB9EC90A680225B485 /* Fl_Sys_Menu_Bar.H */,
-				70CEC1A84E24275F0861403F /* Fl_Table.H */,
-				0CFB24E7079EC601366BCECF /* Fl_Table_Row.H */,
-				B8166E088FC996C9A89D2D37 /* Fl_Tabs.H */,
-				50E8E04A4389A8A2DAB7C53B /* Fl_Text_Buffer.H */,
-				64C9C1F20285A471398A7818 /* Fl_Text_Display.H */,
-				3E092095198BF5104BE09D78 /* Fl_Text_Editor.H */,
-				FAA6BA6E4DC1AF28F5FC8466 /* Fl_Tile.H */,
-				72C56BE76B2ECF1908249803 /* Fl_Tiled_Image.H */,
-				DCEE2710A7119519AEF640AD /* Fl_Timer.H */,
-				B7E85200DC5E9EBB605EE1CB /* Fl_Toggle_Button.H */,
-				79EE61E7DCB96EF56E71DD19 /* Fl_Toggle_Light_Button.H */,
-				A2C688326DDAF4AA29EA9120 /* Fl_Toggle_Round_Button.H */,
-				8C5CB5680264401FDA1C693C /* Fl_Tooltip.H */,
-				5E0EC227A972D2E4F34A2CEB /* Fl_Tree.H */,
-				0BD550D5F4A9E53E93B19234 /* Fl_Tree_Item.H */,
-				CCDF80CC7D27689DDC83FBA1 /* Fl_Tree_Item_Array.H */,
-				7E51DAB7D0F93ACFB736EE9A /* Fl_Tree_Prefs.H */,
-				F8BAA8B283D4CF4D904B6486 /* Fl_Valuator.H */,
-				FF88A1DACCAFA2D143A7F234 /* Fl_Value_Input.H */,
-				71034AFDF079B24D53146252 /* Fl_Value_Output.H */,
-				80D58C2358E8BBA86A8ADB7C /* Fl_Value_Slider.H */,
-				5426FC8371108CE8BCAB85B2 /* Fl_Widget.H */,
-				F98FE04C081FB5B1161C546C /* Fl_Window.H */,
-				A57A8421086F1F0F9906B692 /* Fl_Wizard.H */,
-				D2DE1079C826533A91053A9C /* Fl_XBM_Image.H */,
-				1433F1B8C4085D5D5E1BA0E1 /* Fl_XPM_Image.H */,
-				91A43F37963443EA5E91BF1F /* Xutf8.h */,
-				E448719A354B3D80FD2E1992 /* dirent.h */,
-				AF65626F49A71525D24ED1B0 /* filename.H */,
-				87259ACF8723616344D9AEB2 /* fl_ask.H */,
-				2621527FD926C67B778C41F3 /* fl_draw.H */,
-				A8B7D1DA9AAC707EBD991D57 /* fl_message.H */,
-				7574410DEB61AC3D68A6C137 /* fl_show_colormap.H */,
-				EFAE92A1C7CA90BC56E5A70A /* fl_show_input.H */,
-				B719FC0289E54CA915BC0B94 /* fl_types.h */,
-				4F46F93E8F77640543107453 /* fl_utf8.h */,
-				AC13C8877FA6231BEBF524FD /* mac.H */,
-				1D499CE6ECA4995EEA46EAD7 /* math.h */,
-				D5CE28437ABB8513BE08AC77 /* names.h */,
-				62281FC096BA407C4F1E6824 /* win32.H */,
-				83CED42A779FA76E98D37CA8 /* x.H */,
-				4CABCBB89F9DD5CF57BB9779 /* Fl_Paged_Device.H */,
 				C95961641274CDEC009C0594 /* README.Xcode */,
 			);
 			name = Headers;

Modified: branches/branch-3.0-2011/src/Fl.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -31,17 +31,17 @@
 //          to implement clipping. This should be changed into pure
 //          Quartz calls in the near future.
 #include <config.h>
-#include <FL/Fl.H>
-#include <FL/Fl_Window.H>
-#include <FL/Fl_Tooltip.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/Fl_Tooltip.H>
 
 // recent versions of MinGW warn: "Please include winsock2.h before windows.h",
-// hence we must include winsock2.h before FL/x.H (A.S. Dec. 2010)
+// hence we must include winsock2.h before fltk3/x.H (A.S. Dec. 2010)
 #if defined(WIN32) && !defined(__CYGWIN__)
 #  include <winsock2.h>
 #endif
 
-#include <FL/x.H>
+#include <fltk3/x.H>
 
 #include <ctype.h>
 #include <stdio.h>
@@ -1401,7 +1401,7 @@
 
 ////////////////////////////////////////////////////////////////
 
-#include <FL/fl_draw.H>
+#include <fltk3/fl_draw.H>
 
 void Fl_Widget::redraw() {
   damage(FL_DAMAGE_ALL);

Modified: branches/branch-3.0-2011/src/Fl_Adjuster.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Adjuster.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Adjuster.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,10 +25,10 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Adjuster.H>
-#include <FL/Fl_Bitmap.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Adjuster.H>
+#include <fltk3/Fl_Bitmap.H>
+#include <fltk3/fl_draw.H>
 
 #include "fastarrow.h"
 static Fl_Bitmap fastarrow(fastarrow_bits, fastarrow_width, fastarrow_height);

Modified: branches/branch-3.0-2011/src/Fl_BMP_Image.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_BMP_Image.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_BMP_Image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -34,8 +34,8 @@
 // Include necessary header files...
 //
 
-#include <FL/Fl_BMP_Image.H>
-#include <FL/fl_utf8.h>
+#include <fltk3/Fl_BMP_Image.H>
+#include <fltk3/fl_utf8.h>
 #include <config.h>
 #include <stdio.h>
 #include <stdlib.h>

Modified: branches/branch-3.0-2011/src/Fl_Bitmap.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Bitmap.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Bitmap.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -31,13 +31,13 @@
 /** \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 <FL/Fl.H>
-#include <FL/x.H>
-#include <FL/fl_draw.H>
-#include <FL/Fl_Widget.H>
-#include <FL/Fl_Menu_Item.H>
-#include <FL/Fl_Bitmap.H>
-#include <FL/Fl_Printer.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/Fl_Widget.H>
+#include <fltk3/Fl_Menu_Item.H>
+#include <fltk3/Fl_Bitmap.H>
+#include <fltk3/Fl_Printer.H>
 #include "flstring.h"
 
 #if defined(__APPLE_QUARTZ__)

Modified: branches/branch-3.0-2011/src/Fl_Box.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Box.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Box.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,8 +25,8 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl_Widget.H>
-#include <FL/Fl_Box.H>
+#include <fltk3/Fl_Widget.H>
+#include <fltk3/Fl_Box.H>
 
 void Fl_Box::draw() {
   draw_box();

Modified: branches/branch-3.0-2011/src/Fl_Browser.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Browser.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Browser.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Browser.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Browser.H>
+#include <fltk3/fl_draw.H>
 #include "flstring.h"
 #include <stdlib.h>
 #include <math.h>

Modified: branches/branch-3.0-2011/src/Fl_Browser_.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Browser_.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Browser_.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -28,10 +28,10 @@
 #define DISPLAY_SEARCH_BOTH_WAYS_AT_ONCE
 
 #include <stdio.h>
-#include <FL/Fl.H>
-#include <FL/Fl_Widget.H>
-#include <FL/Fl_Browser_.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Widget.H>
+#include <fltk3/Fl_Browser_.H>
+#include <fltk3/fl_draw.H>
 
 
 // This is the base class for browsers.  To be useful it must be

Modified: branches/branch-3.0-2011/src/Fl_Browser_load.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Browser_load.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Browser_load.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,10 +25,10 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Browser.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Browser.H>
 #include <stdio.h>
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 
 /**
   Clears the browser and reads the file, adding each line from the file

Modified: branches/branch-3.0-2011/src/Fl_Button.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Button.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Button.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,10 +25,10 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Button.H>
-#include <FL/Fl_Group.H>
-#include <FL/Fl_Window.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Button.H>
+#include <fltk3/Fl_Group.H>
+#include <fltk3/Fl_Window.H>
 
 
 Fl_Widget_Tracker *Fl_Button::key_release_tracker = 0;

Modified: branches/branch-3.0-2011/src/Fl_Chart.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Chart.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Chart.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,10 +25,10 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/math.h>
-#include <FL/Fl.H>
-#include <FL/Fl_Chart.H>
-#include <FL/fl_draw.H>
+#include <fltk3/math.h>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Chart.H>
+#include <fltk3/fl_draw.H>
 #include "flstring.h"
 #include <stdlib.h>
 

Modified: branches/branch-3.0-2011/src/Fl_Check_Browser.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Check_Browser.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Check_Browser.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -28,8 +28,8 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include "flstring.h"
-#include <FL/fl_draw.H>
-#include <FL/Fl_Check_Browser.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/Fl_Check_Browser.H>
 
 /* This uses a cache for faster access when you're scanning the list
 either forwards or backwards. */

Modified: branches/branch-3.0-2011/src/Fl_Check_Button.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Check_Button.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Check_Button.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,8 +25,8 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Check_Button.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Check_Button.H>
 
 // TODO Correct incorrect Fl_Check_Button comments.
 // A subclass of Fl_Button that always draws as a diamond box.  This

Modified: branches/branch-3.0-2011/src/Fl_Choice.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Choice.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Choice.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Choice.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Choice.H>
+#include <fltk3/fl_draw.H>
 #include "flstring.h"
 
 // Emulates the Forms choice widget.  This is almost exactly the same

Modified: branches/branch-3.0-2011/src/Fl_Clock.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Clock.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Clock.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Clock.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Clock.H>
+#include <fltk3/fl_draw.H>
 #include <math.h>
 #include <time.h>
 #ifndef WIN32

Modified: branches/branch-3.0-2011/src/Fl_Color_Chooser.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Color_Chooser.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Color_Chooser.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,10 +25,10 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Color_Chooser.H>
-#include <FL/fl_draw.H>
-#include <FL/math.h>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Color_Chooser.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/math.h>
 #include <stdio.h>
 
 // Besides being a useful object on it's own, the Fl_Color_Chooser was
@@ -503,9 +503,9 @@
 ////////////////////////////////////////////////////////////////
 // fl_color_chooser():
 
-#include <FL/Fl_Window.H>
-#include <FL/Fl_Box.H>
-#include <FL/Fl_Return_Button.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/Fl_Box.H>
+#include <fltk3/Fl_Return_Button.H>
 
 class ColorChip : public Fl_Widget {
   void draw();
@@ -560,7 +560,7 @@
     @{ */
 /**
   \brief Pops up a window to let the user pick an arbitrary RGB color.
-  \note \#include <FL/Fl_Color_Chooser.H>
+  \note \#include <fltk3/Fl_Color_Chooser.H>
   \image html fl_color_chooser.jpg 
   \image latex  fl_color_chooser.jpg "fl_color_chooser" width=8cm
   \param[in] name Title label for the window
@@ -603,7 +603,7 @@
 
 /**
   \brief Pops up a window to let the user pick an arbitrary RGB color.
-  \note \#include <FL/Fl_Color_Chooser.H>
+  \note \#include <fltk3/Fl_Color_Chooser.H>
   \image html fl_color_chooser.jpg 
   \image latex  fl_color_chooser.jpg "fl_color_chooser" width=8cm
   \param[in] name Title label for the window

Modified: branches/branch-3.0-2011/src/Fl_Counter.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Counter.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Counter.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Counter.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Counter.H>
+#include <fltk3/fl_draw.H>
 
 void Fl_Counter::draw() {
   int i; Fl_Boxtype boxtype[5];

Modified: branches/branch-3.0-2011/src/Fl_Device.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Device.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Device.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Device.H>
-#include <FL/Fl_Image.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Device.H>
+#include <fltk3/Fl_Image.H>
 
 const char *Fl_Device::class_id = "Fl_Device";
 const char *Fl_Surface_Device::class_id = "Fl_Surface_Device";

Modified: branches/branch-3.0-2011/src/Fl_Dial.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Dial.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Dial.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,11 +25,11 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Dial.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Dial.H>
+#include <fltk3/fl_draw.H>
 #include <stdlib.h>
-#include <FL/math.h>
+#include <fltk3/math.h>
 
 // All angles are measured with 0 to the right and counter-clockwise
 /**

Modified: branches/branch-3.0-2011/src/Fl_Double_Window.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Double_Window.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Double_Window.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -26,11 +26,11 @@
 //
 
 #include <config.h>
-#include <FL/Fl.H>
-#include <FL/Fl_Double_Window.H>
-#include <FL/Fl_Printer.H>
-#include <FL/x.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Double_Window.H>
+#include <fltk3/Fl_Printer.H>
+#include <fltk3/x.H>
+#include <fltk3/fl_draw.H>
 
 // On systems that support double buffering "naturally" the base
 // Fl_Window class will probably do double-buffer and this subclass

Modified: branches/branch-3.0-2011/src/Fl_File_Browser.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_File_Browser.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_File_Browser.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -39,10 +39,10 @@
 // Include necessary header files...
 //
 
-#include <FL/Fl_File_Browser.H>
-#include <FL/fl_draw.H>
-#include <FL/filename.H>
-#include <FL/Fl_Image.H>	// icon
+#include <fltk3/Fl_File_Browser.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/filename.H>
+#include <fltk3/Fl_Image.H>	// icon
 #include <stdio.h>
 #include <stdlib.h>
 #include "flstring.h"

Modified: branches/branch-3.0-2011/src/Fl_File_Chooser.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_File_Chooser.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_File_Chooser.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -27,8 +27,8 @@
 
 // generated by Fast Light User Interface Designer (fluid) version 1.0300
 
-#include "../FL/Fl_File_Chooser.H"
-#include <FL/fl_draw.H>
+#include "../fltk3/Fl_File_Chooser.H"
+#include <fltk3/fl_draw.H>
 
 void Fl_File_Chooser::cb_window_i(Fl_Double_Window*, void*) {
   fileName->value("");
@@ -61,7 +61,7 @@
   ((Fl_File_Chooser*)(o->parent()->parent()->user_data()))->cb_newButton_i(o,v);
 }
 
-#include <FL/Fl_Bitmap.H>
+#include <fltk3/Fl_Bitmap.H>
 static unsigned char idata_new[] =
 {0,0,120,0,132,0,2,1,1,254,1,128,49,128,49,128,253,128,253,128,49,128,49,
 128,1,128,1,128,255,255,0,0};

Modified: branches/branch-3.0-2011/src/Fl_File_Chooser2.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_File_Chooser2.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_File_Chooser2.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -338,11 +338,11 @@
 // Include necessary headers.
 //
 
-#include <FL/Fl_File_Chooser.H>
-#include <FL/filename.H>
-#include <FL/fl_ask.H>
-#include <FL/x.H>
-#include <FL/Fl_Shared_Image.H>
+#include <fltk3/Fl_File_Chooser.H>
+#include <fltk3/filename.H>
+#include <fltk3/fl_ask.H>
+#include <fltk3/x.H>
+#include <fltk3/Fl_Shared_Image.H>
 
 #include <stdio.h>
 #include <stdlib.h>

Modified: branches/branch-3.0-2011/src/Fl_File_Icon.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_File_Icon.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_File_Icon.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -43,7 +43,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 #include "flstring.h"
 #include <errno.h>
 #include <sys/types.h>
@@ -55,10 +55,10 @@
 #  include <unistd.h>
 #endif /* WIN32 || __EMX__ */
 
-#include <FL/Fl_File_Icon.H>
-#include <FL/Fl_Widget.H>
-#include <FL/fl_draw.H>
-#include <FL/filename.H>
+#include <fltk3/Fl_File_Icon.H>
+#include <fltk3/Fl_Widget.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/filename.H>
 
 
 //

Modified: branches/branch-3.0-2011/src/Fl_File_Icon2.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_File_Icon2.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_File_Icon2.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -44,11 +44,11 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 #include "flstring.h"
 #include <ctype.h>
 #include <errno.h>
-#include <FL/math.h>
+#include <fltk3/math.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #if defined(WIN32) && !defined(__CYGWIN__)
@@ -61,11 +61,11 @@
 #  include <unistd.h>
 #endif // WIN32
 
-#include <FL/Fl_File_Icon.H>
-#include <FL/Fl_Shared_Image.H>
-#include <FL/Fl_Widget.H>
-#include <FL/fl_draw.H>
-#include <FL/filename.H>
+#include <fltk3/Fl_File_Icon.H>
+#include <fltk3/Fl_Shared_Image.H>
+#include <fltk3/Fl_Widget.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/filename.H>
 
 
 //

Modified: branches/branch-3.0-2011/src/Fl_File_Input.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_File_Input.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_File_Input.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -26,11 +26,11 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_File_Input.H>
-#include <FL/Fl_Window.H>
-#include <FL/fl_draw.H>
-#include <FL/filename.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_File_Input.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/filename.H>
 #include <stdio.h>
 #include "flstring.h"
 

Modified: branches/branch-3.0-2011/src/Fl_Font.H
===================================================================
--- branches/branch-3.0-2011/src/Fl_Font.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Font.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/src/Fl_GDI_Printer.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_GDI_Printer.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_GDI_Printer.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/src/Fl_GIF_Image.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_GIF_Image.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_GIF_Image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -32,11 +32,11 @@
 // Include necessary header files...
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_GIF_Image.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_GIF_Image.H>
 #include <stdio.h>
 #include <stdlib.h>
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 #include "flstring.h"
 
 // Read a .gif file and convert it to a "xpm" format (actually my

Modified: branches/branch-3.0-2011/src/Fl_Gl_Choice.H
===================================================================
--- branches/branch-3.0-2011/src/Fl_Gl_Choice.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Gl_Choice.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -57,7 +57,7 @@
 // Warning: whatever GLContext is defined to must take exactly the same
 // space in a structure as a void*!!!
 #ifdef WIN32
-#  include <FL/gl.h>
+#  include <fltk3/gl.h>
 #  define GLContext HGLRC
 #elif defined(__APPLE_QUARTZ__)
 // warning: the Quartz version should probably use Core GL (CGL) instead of AGL

Modified: branches/branch-3.0-2011/src/Fl_Gl_Choice.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Gl_Choice.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Gl_Choice.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -28,17 +28,17 @@
 #include <config.h>
 #if HAVE_GL
 
-#  include <FL/Fl.H>
-#  include <FL/x.H>
+#  include <fltk3/Fl.H>
+#  include <fltk3/x.H>
 #  include <stdlib.h>
 #  include "Fl_Gl_Choice.H"
-#  include <FL/gl_draw.H>
+#  include <fltk3/gl_draw.H>
 #  include "flstring.h"
-#  include <FL/fl_utf8.h>
+#  include <fltk3/fl_utf8.h>
 
 #  ifdef __APPLE__
 #    include <ApplicationServices/ApplicationServices.H>
-#    include <FL/Fl_Window.H>
+#    include <fltk3/Fl_Window.H>
 #  endif
 
 #  ifdef WIN32

Modified: branches/branch-3.0-2011/src/Fl_Gl_Device_Plugin.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Gl_Device_Plugin.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Gl_Device_Plugin.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -26,12 +26,12 @@
 //
 
 #include <config.h>
-#include <FL/Fl_Printer.H>
-#include <FL/Fl_Gl_Window.H>
+#include <fltk3/Fl_Printer.H>
+#include <fltk3/Fl_Gl_Window.H>
 #include "Fl_Gl_Choice.H"
-#include "FL/Fl.H"
+#include "fltk3/Fl.H"
 #ifndef __APPLE__
-#include "FL/fl_draw.H"
+#include "fltk3/fl_draw.H"
 #endif
 
 #if defined(__APPLE__)

Modified: branches/branch-3.0-2011/src/Fl_Gl_Overlay.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Gl_Overlay.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Gl_Overlay.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -28,10 +28,10 @@
 #include <config.h>
 #if HAVE_GL
 
-#include <FL/Fl.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
 #include "Fl_Gl_Choice.H"
-#include <FL/Fl_Gl_Window.H>
+#include <fltk3/Fl_Gl_Window.H>
 #include <stdlib.h>
 
 #if !HAVE_GL_OVERLAY

Modified: branches/branch-3.0-2011/src/Fl_Gl_Window.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Gl_Window.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Gl_Window.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -32,12 +32,12 @@
 
 static int temp = fl_gl_load_plugin;
 
-#include <FL/Fl.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
 #include "Fl_Gl_Choice.H"
-#include <FL/Fl_Gl_Window.H>
+#include <fltk3/Fl_Gl_Window.H>
 #include <stdlib.h>
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 
 ////////////////////////////////////////////////////////////////
 
@@ -518,7 +518,7 @@
   initialization if it is false.
 
   The draw() method can <I>only</I> use OpenGL calls.  Do not
-  attempt to call X, any of the functions in <FL/fl_draw.H>, or glX
+  attempt to call X, any of the functions in <fltk3/fl_draw.H>, or glX
   directly.  Do not call gl_start() or gl_finish().
 
   If double-buffering is enabled in the window, the back and front

Modified: branches/branch-3.0-2011/src/Fl_Group.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Group.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Group.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -31,10 +31,10 @@
 // handling is designed so windows themselves work correctly.
 
 #include <stdio.h>
-#include <FL/Fl.H>
-#include <FL/Fl_Group.H>
-#include <FL/Fl_Window.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Group.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/fl_draw.H>
 #include <stdlib.h>
 
 Fl_Group* Fl_Group::current_;

Modified: branches/branch-3.0-2011/src/Fl_Help_Dialog.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Help_Dialog.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Help_Dialog.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -27,9 +27,9 @@
 
 // generated by Fast Light User Interface Designer (fluid) version 1.0108
 
-#include "../FL/Fl_Help_Dialog.H"
+#include "../fltk3/Fl_Help_Dialog.H"
 #include "flstring.h"
-#include <FL/fl_ask.H>
+#include <fltk3/fl_ask.H>
 
 void Fl_Help_Dialog::cb_back__i(Fl_Button*, void*) {
   if (index_ > 0)

Modified: branches/branch-3.0-2011/src/Fl_Help_View.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Help_View.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Help_View.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -55,14 +55,14 @@
 // Include necessary header files...
 //
 
-#include <FL/Fl_Help_View.H>
-#include <FL/Fl_Window.H>
-#include <FL/Fl_Pixmap.H>
-#include <FL/x.H>
+#include <fltk3/Fl_Help_View.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/Fl_Pixmap.H>
+#include <fltk3/x.H>
 #include <stdio.h>
 #include <stdlib.h>
-#include <FL/fl_utf8.h>
-#include <FL/filename.H>	// fl_open_uri()
+#include <fltk3/fl_utf8.h>
+#include <fltk3/filename.H>	// fl_open_uri()
 #include "flstring.h"
 #include <ctype.h>
 #include <errno.h>

Modified: branches/branch-3.0-2011/src/Fl_Image.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Image.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,12 +25,12 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
-#include <FL/x.H>
-#include <FL/Fl_Widget.H>
-#include <FL/Fl_Menu_Item.H>
-#include <FL/Fl_Image.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/x.H>
+#include <fltk3/Fl_Widget.H>
+#include <fltk3/Fl_Menu_Item.H>
+#include <fltk3/Fl_Image.H>
 #include "flstring.h"
 
 #ifdef WIN32

Modified: branches/branch-3.0-2011/src/Fl_Input.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Input.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Input.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -33,11 +33,11 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <FL/Fl.H>
-#include <FL/Fl_Window.H>
-#include <FL/Fl_Input.H>
-#include <FL/fl_draw.H>
-#include <FL/fl_ask.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/Fl_Input.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/fl_ask.H>
 #include "flstring.h"
 
 #ifdef HAVE_LOCALE_H

Modified: branches/branch-3.0-2011/src/Fl_Input_.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Input_.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Input_.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,13 +25,13 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Input_.H>
-#include <FL/Fl_Window.H>
-#include <FL/fl_draw.H>
-#include <FL/fl_ask.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Input_.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/fl_ask.H>
 #include <math.h>
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 #include "flstring.h"
 #include <stdlib.h>
 #include <ctype.h>

Modified: branches/branch-3.0-2011/src/Fl_JPEG_Image.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_JPEG_Image.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_JPEG_Image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -34,8 +34,8 @@
 // Include necessary header files...
 //
 
-#include <FL/Fl_JPEG_Image.H>
-#include <FL/fl_utf8.h>
+#include <fltk3/Fl_JPEG_Image.H>
+#include <fltk3/fl_utf8.h>
 #include <config.h>
 #include <stdio.h>
 #include <stdlib.h>

Modified: branches/branch-3.0-2011/src/Fl_Light_Button.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Light_Button.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Light_Button.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -32,9 +32,9 @@
 // The default down_box of zero draws a rectangle designed to look
 // just like Flame's buttons.
 
-#include <FL/Fl.H>
-#include <FL/Fl_Light_Button.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Light_Button.H>
+#include <fltk3/fl_draw.H>
 #include "flstring.h"
 
 void Fl_Light_Button::draw() {

Modified: branches/branch-3.0-2011/src/Fl_Menu.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Menu.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Menu.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -31,10 +31,10 @@
 // methods for bringing up popup menu hierarchies without using the
 // Fl_Menu_ widget.
 
-#include <FL/Fl.H>
-#include <FL/Fl_Menu_Window.H>
-#include <FL/Fl_Menu_.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Menu_Window.H>
+#include <fltk3/Fl_Menu_.H>
+#include <fltk3/fl_draw.H>
 #include <stdio.h>
 #include "flstring.h"
 

Modified: branches/branch-3.0-2011/src/Fl_Menu_.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Menu_.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Menu_.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -31,8 +31,8 @@
 
 // More code in Fl_Menu_add.cxx
 
-#include <FL/Fl.H>
-#include <FL/Fl_Menu_.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Menu_.H>
 #include "flstring.h"
 #include <stdio.h>
 #include <stdlib.h>

Modified: branches/branch-3.0-2011/src/Fl_Menu_Bar.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Menu_Bar.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Menu_Bar.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Menu_Bar.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Menu_Bar.H>
+#include <fltk3/fl_draw.H>
 
 void Fl_Menu_Bar::draw() {
   draw_box();

Modified: branches/branch-3.0-2011/src/Fl_Menu_Button.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Menu_Button.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Menu_Button.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Menu_Button.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Menu_Button.H>
+#include <fltk3/fl_draw.H>
 
 
 static Fl_Menu_Button	*pressed_menu_button_ = 0;

Modified: branches/branch-3.0-2011/src/Fl_Menu_Window.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Menu_Window.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Menu_Window.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -33,10 +33,10 @@
 // can be used to dismiss the menus.
 
 #include <config.h>
-#include <FL/Fl.H>
-#include <FL/x.H>
-#include <FL/fl_draw.H>
-#include <FL/Fl_Menu_Window.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/Fl_Menu_Window.H>
 
 // WIN32 note: HAVE_OVERLAY is false
 #if HAVE_OVERLAY

Modified: branches/branch-3.0-2011/src/Fl_Menu_add.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Menu_add.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Menu_add.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -34,7 +34,7 @@
 // Not at all guaranteed to be Forms compatible, especially with any
 // string with a % sign in it!
 
-#include <FL/Fl_Menu_.H>
+#include <fltk3/Fl_Menu_.H>
 #include "flstring.h"
 #include <stdio.h>
 #include <stdlib.h>

Modified: branches/branch-3.0-2011/src/Fl_Menu_global.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Menu_global.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Menu_global.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -29,8 +29,8 @@
 // Currently only one menu at a time and you cannot destruct the menu,
 // is this sufficient?
 
-#include <FL/Fl.H>
-#include <FL/Fl_Menu_.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Menu_.H>
 
 static Fl_Menu_* the_widget;
 

Modified: branches/branch-3.0-2011/src/Fl_Multi_Label.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Multi_Label.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Multi_Label.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -28,10 +28,10 @@
 // Allows two labels to be used on a widget (by having one of them
 // be one of these it allows an infinte number!)
 
-#include <FL/Fl.H>
-#include <FL/Fl_Widget.H>
-#include <FL/Fl_Menu_Item.H>
-#include <FL/Fl_Multi_Label.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Widget.H>
+#include <fltk3/Fl_Menu_Item.H>
+#include <fltk3/Fl_Multi_Label.H>
 
 static void multi_labeltype(
     const Fl_Label* o, int x, int y, int w, int h, Fl_Align a)

Modified: branches/branch-3.0-2011/src/Fl_Native_File_Chooser_FLTK.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Native_File_Chooser_FLTK.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Native_File_Chooser_FLTK.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -26,8 +26,8 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl_Native_File_Chooser.H>
-#include <FL/Fl_File_Icon.H>
+#include <fltk3/Fl_Native_File_Chooser.H>
+#include <fltk3/Fl_File_Icon.H>
 #define FLTK_CHOOSER_SINGLE    Fl_File_Chooser::SINGLE
 #define FLTK_CHOOSER_DIRECTORY Fl_File_Chooser::DIRECTORY
 #define FLTK_CHOOSER_MULTI     Fl_File_Chooser::MULTI

Modified: branches/branch-3.0-2011/src/Fl_Native_File_Chooser_MAC.mm
===================================================================
--- branches/branch-3.0-2011/src/Fl_Native_File_Chooser_MAC.mm	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Native_File_Chooser_MAC.mm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -38,9 +38,9 @@
 #include <sys/stat.h>		// stat(2)
 
 
-#include <FL/Fl.H>
-#include <FL/Fl_Native_File_Chooser.H>
-#include <FL/filename.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Native_File_Chooser.H>
+#include <fltk3/filename.H>
 
 // FREE PATHNAMES ARRAY, IF IT HAS ANY CONTENTS
 void Fl_Native_File_Chooser::clear_pathnames() {

Modified: branches/branch-3.0-2011/src/Fl_Native_File_Chooser_WIN32.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Native_File_Chooser_WIN32.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Native_File_Chooser_WIN32.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/src/Fl_Native_File_Chooser_common.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Native_File_Chooser_common.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Native_File_Chooser_common.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/src/Fl_Overlay_Window.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Overlay_Window.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Overlay_Window.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -29,7 +29,7 @@
   You must subclass Fl_Overlay_Window and provide this method.
   It is just like a draw() method, except it draws the overlay.
   The overlay will have already been "cleared" when this is called.  You
-  can use any of the routines described in &lt;FL/fl_draw.H&gt;.
+  can use any of the routines described in &lt;fltk3/fl_draw.H&gt;.
 */
 
 // A window using double-buffering and able to draw an overlay
@@ -37,10 +37,10 @@
 // possible, otherwise it just draws in the front buffer.
 
 #include <config.h>
-#include <FL/Fl.H>
-#include <FL/Fl_Overlay_Window.H>
-#include <FL/fl_draw.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Overlay_Window.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/x.H>
 
 void Fl_Overlay_Window::show() {
   Fl_Double_Window::show();

Modified: branches/branch-3.0-2011/src/Fl_PNG_Image.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_PNG_Image.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_PNG_Image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -35,12 +35,12 @@
 // Include necessary header files...
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_PNG_Image.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_PNG_Image.H>
 #include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 
 extern "C"
 {

Modified: branches/branch-3.0-2011/src/Fl_PNM_Image.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_PNM_Image.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_PNM_Image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -34,11 +34,11 @@
 // Include necessary header files...
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_PNM_Image.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_PNM_Image.H>
 #include <stdio.h>
 #include <stdlib.h>
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 #include "flstring.h"
 
 

Modified: branches/branch-3.0-2011/src/Fl_Pack.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Pack.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Pack.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -30,9 +30,9 @@
 // them on each redraw (only if box() is zero)
 // Bugs: ?
 
-#include <FL/Fl.H>
-#include <FL/Fl_Pack.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Pack.H>
+#include <fltk3/fl_draw.H>
 
 /**
   Creates a new Fl_Pack widget using the given position, size,

Modified: branches/branch-3.0-2011/src/Fl_Paged_Device.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Paged_Device.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Paged_Device.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -28,9 +28,9 @@
  \brief implementation of class Fl_Paged_Device.
  */
 
-#include <FL/Fl_Paged_Device.H>
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl_Paged_Device.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
 
 const char *Fl_Paged_Device::class_id = "Fl_Paged_Device";
 

Modified: branches/branch-3.0-2011/src/Fl_Pixmap.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Pixmap.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Pixmap.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -41,13 +41,13 @@
 // Implemented without using the xpm library (which I can't use because
 // it interferes with the color cube used by fl_draw_image).
 
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
-#include <FL/x.H>
-#include <FL/Fl_Widget.H>
-#include <FL/Fl_Menu_Item.H>
-#include <FL/Fl_Pixmap.H>
-#include <FL/Fl_Printer.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/x.H>
+#include <fltk3/Fl_Widget.H>
+#include <fltk3/Fl_Menu_Item.H>
+#include <fltk3/Fl_Pixmap.H>
+#include <fltk3/Fl_Printer.H>
 
 #include <stdio.h>
 #include "flstring.h"

Modified: branches/branch-3.0-2011/src/Fl_Positioner.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Positioner.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Positioner.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -29,9 +29,9 @@
 // The positioner widget from Forms, gives 2D input
 // Written by: Mark Overmars
 
-#include <FL/Fl.H>
-#include <FL/Fl_Positioner.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Positioner.H>
+#include <fltk3/fl_draw.H>
 
 static double flinear(double val, double smin, double smax, double gmin, double gmax)
 {

Modified: branches/branch-3.0-2011/src/Fl_PostScript.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_PostScript.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_PostScript.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,12 +25,12 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/fl_ask.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_ask.H>
+#include <fltk3/fl_draw.H>
 #include <stdio.h>
-#include <FL/Fl_PostScript.H>
-#include <FL/Fl_Native_File_Chooser.H>
+#include <fltk3/Fl_PostScript.H>
+#include <fltk3/Fl_Native_File_Chooser.H>
 
 const char *Fl_PostScript_Graphics_Driver::class_id = "Fl_PostScript_Graphics_Driver";
 const char *Fl_PostScript_File_Device::class_id = "Fl_PostScript_File_Device";

Modified: branches/branch-3.0-2011/src/Fl_Preferences.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Preferences.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Preferences.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,15 +25,15 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Preferences.H>
-#include <FL/Fl_Plugin.H>
-#include <FL/filename.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Preferences.H>
+#include <fltk3/Fl_Plugin.H>
+#include <fltk3/filename.H>
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 #include "flstring.h"
 #include <sys/stat.h>
 #include <time.h>

Modified: branches/branch-3.0-2011/src/Fl_Printer.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Printer.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Printer.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -26,7 +26,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl_Printer.H>
+#include <fltk3/Fl_Printer.H>
 
 #ifdef __APPLE__
 //#include "Fl_Quartz_Printer.mm"

Modified: branches/branch-3.0-2011/src/Fl_Progress.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Progress.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Progress.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -35,9 +35,9 @@
 // Include necessary header files...
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Progress.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Progress.H>
+#include <fltk3/fl_draw.H>
 
 
 //

Modified: branches/branch-3.0-2011/src/Fl_Quartz_Printer.mm
===================================================================
--- branches/branch-3.0-2011/src/Fl_Quartz_Printer.mm	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Quartz_Printer.mm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -26,11 +26,11 @@
 //
 
 #ifdef __APPLE__
-#include <FL/Fl_Printer.H>
+#include <fltk3/Fl_Printer.H>
 
-#include <FL/Fl.H>
-#include <FL/fl_ask.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_ask.H>
+#include <fltk3/fl_draw.H>
 #import <Cocoa/Cocoa.h>
 
 extern void fl_quartz_restore_line_style_();

Modified: branches/branch-3.0-2011/src/Fl_Repeat_Button.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Repeat_Button.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Repeat_Button.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,8 +25,8 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Repeat_Button.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Repeat_Button.H>
 
 #define INITIALREPEAT .5
 #define REPEAT .1

Modified: branches/branch-3.0-2011/src/Fl_Return_Button.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Return_Button.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Return_Button.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Return_Button.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Return_Button.H>
+#include <fltk3/fl_draw.H>
 
 int fl_return_arrow(int x, int y, int w, int h) {
   int size = w; if (h<size) size = h;

Modified: branches/branch-3.0-2011/src/Fl_Roller.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Roller.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Roller.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -27,9 +27,9 @@
 
 // Rapid-App style knob
 
-#include <FL/Fl.H>
-#include <FL/Fl_Roller.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Roller.H>
+#include <fltk3/fl_draw.H>
 #include <math.h>
 
 int Fl_Roller::handle(int event) {

Modified: branches/branch-3.0-2011/src/Fl_Round_Button.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Round_Button.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Round_Button.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -29,8 +29,8 @@
 // circle is smaller than the widget size and can be surrounded by
 // another box type, for compatibility with Forms.
 
-#include <FL/Fl.H>
-#include <FL/Fl_Round_Button.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Round_Button.H>
 
 /**
   Creates a new Fl_Round_Button widget using the given

Modified: branches/branch-3.0-2011/src/Fl_Scroll.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Scroll.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Scroll.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,10 +25,10 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Tiled_Image.H>
-#include <FL/Fl_Scroll.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Tiled_Image.H>
+#include <fltk3/Fl_Scroll.H>
+#include <fltk3/fl_draw.H>
 
 /** Clear all but the scrollbars... */
 void Fl_Scroll::clear() {

Modified: branches/branch-3.0-2011/src/Fl_Scrollbar.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Scrollbar.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Scrollbar.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -26,9 +26,9 @@
 //
 
 
-#include <FL/Fl.H>
-#include <FL/Fl_Scrollbar.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Scrollbar.H>
+#include <fltk3/fl_draw.H>
 #include <math.h>
 #include "flstring.h"
 

Modified: branches/branch-3.0-2011/src/Fl_Shared_Image.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Shared_Image.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Shared_Image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -27,13 +27,13 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 #include "flstring.h"
 
-#include <FL/Fl.H>
-#include <FL/Fl_Shared_Image.H>
-#include <FL/Fl_XBM_Image.H>
-#include <FL/Fl_XPM_Image.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Shared_Image.H>
+#include <fltk3/Fl_XBM_Image.H>
+#include <fltk3/Fl_XPM_Image.H>
 
 
 //

Modified: branches/branch-3.0-2011/src/Fl_Single_Window.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Single_Window.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Single_Window.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -31,7 +31,7 @@
 //	buffered.  You can turn it off using this subclass in case
 //	your display looks better without it.
 
-#include <FL/Fl_Single_Window.H>
+#include <fltk3/Fl_Single_Window.H>
 
 void Fl_Single_Window::show() {Fl_Window::show();}
 void Fl_Single_Window::flush() {Fl_Window::flush();}

Modified: branches/branch-3.0-2011/src/Fl_Slider.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Slider.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Slider.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Slider.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Slider.H>
+#include <fltk3/fl_draw.H>
 #include <math.h>
 #include "flstring.h"
 

Modified: branches/branch-3.0-2011/src/Fl_Sys_Menu_Bar.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Sys_Menu_Bar.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Sys_Menu_Bar.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -54,9 +54,9 @@
 
 #if defined(__APPLE__) || defined(FL_DOXYGEN)
 
-#include <FL/x.H>
-#include <FL/Fl.H>
-#include <FL/Fl_Sys_Menu_Bar.H>
+#include <fltk3/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Sys_Menu_Bar.H>
 
 #include "flstring.h"
 #include <stdio.h>

Modified: branches/branch-3.0-2011/src/Fl_Table.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Table.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Table.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -23,11 +23,11 @@
 //
 
 #include <stdio.h>		// fprintf
-#include <FL/fl_draw.H>
-#include <FL/Fl_Table.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/Fl_Table.H>
 
 #if defined(USE_UTF8) && ( defined(MICROSOFT) || defined(LINUX) )
-#include <FL/fl_utf8.H>	// currently only Windows and Linux
+#include <fltk3/fl_utf8.H>	// currently only Windows and Linux
 #endif
 
 #define SCROLLBAR_SIZE	16

Modified: branches/branch-3.0-2011/src/Fl_Table_Row.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Table_Row.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Table_Row.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -31,9 +31,9 @@
 //
 
 #include <stdio.h>		// for debugging
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
-#include <FL/Fl_Table_Row.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/Fl_Table_Row.H>
 
 // Is row selected?
 int Fl_Table_Row::row_selected(int row) {

Modified: branches/branch-3.0-2011/src/Fl_Tabs.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Tabs.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Tabs.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -33,10 +33,10 @@
 // Clicking the tab makes that card visible.
 
 #include <stdio.h>
-#include <FL/Fl.H>
-#include <FL/Fl_Tabs.H>
-#include <FL/fl_draw.H>
-#include <FL/Fl_Tooltip.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Tabs.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/Fl_Tooltip.H>
 
 #define BORDER 2
 #define EXTRASPACE 10

Modified: branches/branch-3.0-2011/src/Fl_Text_Buffer.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Text_Buffer.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Text_Buffer.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -27,12 +27,12 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 #include "flstring.h"
 #include <ctype.h>
-#include <FL/Fl.H>
-#include <FL/Fl_Text_Buffer.H>
-#include <FL/fl_ask.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Text_Buffer.H>
+#include <fltk3/fl_ask.H>
 
 
 /*

Modified: branches/branch-3.0-2011/src/Fl_Text_Display.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Text_Display.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Text_Display.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -30,14 +30,14 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 #include "flstring.h"
 #include <limits.h>
 #include <ctype.h>
-#include <FL/Fl.H>
-#include <FL/Fl_Text_Buffer.H>
-#include <FL/Fl_Text_Display.H>
-#include <FL/Fl_Window.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Text_Buffer.H>
+#include <fltk3/Fl_Text_Display.H>
+#include <fltk3/Fl_Window.H>
 
 #undef min
 #undef max

Modified: branches/branch-3.0-2011/src/Fl_Text_Editor.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Text_Editor.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Text_Editor.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -29,10 +29,10 @@
 #include <stdlib.h>
 #include "flstring.h"
 #include <ctype.h>
-#include <FL/Fl.H>
-#include <FL/Fl_Window.H>
-#include <FL/Fl_Text_Editor.H>
-#include <FL/fl_ask.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/Fl_Text_Editor.H>
+#include <fltk3/fl_ask.H>
 
 
 /* Keyboard Control Matrix

Modified: branches/branch-3.0-2011/src/Fl_Tile.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Tile.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Tile.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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 <FL/Fl.H>
-#include <FL/Fl_Tile.H>
-#include <FL/Fl_Window.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Tile.H>
+#include <fltk3/Fl_Window.H>
 #include <stdlib.h>
 
 // Drag the edges that were initially at oldx,oldy to newx,newy:

Modified: branches/branch-3.0-2011/src/Fl_Tiled_Image.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Tiled_Image.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Tiled_Image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -26,9 +26,9 @@
 //
 
 
-#include <FL/Fl.H>
-#include <FL/Fl_Tiled_Image.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Tiled_Image.H>
+#include <fltk3/fl_draw.H>
 
 /**
   The constructors create a new tiled image containing the specified image.

Modified: branches/branch-3.0-2011/src/Fl_Tooltip.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Tooltip.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Tooltip.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl_Tooltip.H>
-#include <FL/fl_draw.H>
-#include <FL/Fl_Menu_Window.H>
+#include <fltk3/Fl_Tooltip.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/Fl_Menu_Window.H>
 
 #include <stdio.h>
 #include <string.h>	// strdup()

Modified: branches/branch-3.0-2011/src/Fl_Tree.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Tree.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Tree.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -6,8 +6,8 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include <FL/Fl_Tree.H>
-#include <FL/Fl_Preferences.H>
+#include <fltk3/Fl_Tree.H>
+#include <fltk3/Fl_Preferences.H>
 
 //////////////////////
 // Fl_Tree.cxx
@@ -468,7 +468,7 @@
 int Fl_Tree::handle(int e) {
   int ret = 0;
   // Developer note: Fl_Browser_::handle() used for reference here..
-  // #include <FL/names.h>	// for event debugging
+  // #include <fltk3/names.h>	// for event debugging
   // fprintf(stderr, "DEBUG: %s (%d)\n", fl_eventnames[e], e);
   if (e == FL_ENTER || e == FL_LEAVE) return(1);
   switch (e) {

Modified: branches/branch-3.0-2011/src/Fl_Tree_Item.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Tree_Item.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Tree_Item.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -5,9 +5,9 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <FL/Fl_Widget.H>
-#include <FL/Fl_Tree_Item.H>
-#include <FL/Fl_Tree_Prefs.H>
+#include <fltk3/Fl_Widget.H>
+#include <fltk3/Fl_Tree_Item.H>
+#include <fltk3/Fl_Tree_Prefs.H>
 
 //////////////////////
 // Fl_Tree_Item.cxx

Modified: branches/branch-3.0-2011/src/Fl_Tree_Item_Array.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Tree_Item_Array.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Tree_Item_Array.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -6,8 +6,8 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include <FL/Fl_Tree_Item_Array.H>
-#include <FL/Fl_Tree_Item.H>
+#include <fltk3/Fl_Tree_Item_Array.H>
+#include <fltk3/Fl_Tree_Item.H>
 
 //////////////////////
 // Fl_Tree_Item_Array.cxx

Modified: branches/branch-3.0-2011/src/Fl_Tree_Prefs.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Tree_Prefs.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Tree_Prefs.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -2,9 +2,9 @@
 // "$Id$"
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Pixmap.H>
-#include <FL/Fl_Tree_Prefs.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Pixmap.H>
+#include <fltk3/Fl_Tree_Prefs.H>
 #include <string.h>
 
 //////////////////////

Modified: branches/branch-3.0-2011/src/Fl_Valuator.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Valuator.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Valuator.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -28,9 +28,9 @@
 
 // Base class for sliders and all other one-value "knobs"
 
-#include <FL/Fl.H>
-#include <FL/Fl_Valuator.H>
-#include <FL/math.h>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Valuator.H>
+#include <fltk3/math.h>
 #include <stdio.h>
 #include "flstring.h"
 

Modified: branches/branch-3.0-2011/src/Fl_Value_Input.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Value_Input.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Value_Input.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -29,11 +29,11 @@
 // Warning: this works by making a child Fl_Input object, even
 // though this object is *not* an Fl_Group.  May be a kludge?
 
-#include <FL/Fl.H>
-#include <FL/Fl_Value_Input.H>
-#include <FL/Fl_Group.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Value_Input.H>
+#include <fltk3/Fl_Group.H>
 #include <stdlib.h>
-#include <FL/math.h>
+#include <fltk3/math.h>
 
 
 void Fl_Value_Input::input_cb(Fl_Widget*, void* v) {

Modified: branches/branch-3.0-2011/src/Fl_Value_Output.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Value_Output.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Value_Output.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -29,9 +29,9 @@
 // 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 <FL/Fl.H>
-#include <FL/Fl_Value_Output.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Value_Output.H>
+#include <fltk3/fl_draw.H>
 
 void Fl_Value_Output::draw() {
   Fl_Boxtype b = box() ? box() : FL_DOWN_BOX;

Modified: branches/branch-3.0-2011/src/Fl_Value_Slider.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Value_Slider.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Value_Slider.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Value_Slider.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Value_Slider.H>
+#include <fltk3/fl_draw.H>
 #include <math.h>
 
 /**

Modified: branches/branch-3.0-2011/src/Fl_Widget.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Widget.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Widget.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,11 +25,11 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Widget.H>
-#include <FL/Fl_Group.H>
-#include <FL/Fl_Tooltip.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Widget.H>
+#include <fltk3/Fl_Group.H>
+#include <fltk3/Fl_Tooltip.H>
+#include <fltk3/fl_draw.H>
 #include <stdlib.h>
 #include "flstring.h"
 

Modified: branches/branch-3.0-2011/src/Fl_Window.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Window.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Window.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -30,14 +30,14 @@
 // 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 <FL/Fl.H>
-#include <FL/x.H>
-#include <FL/Fl_Window.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
+#include <fltk3/Fl_Window.H>
 #include <stdlib.h>
 #include "flstring.h"
 
 #ifdef __APPLE_QUARTZ__
-#include <FL/fl_draw.H>
+#include <fltk3/fl_draw.H>
 #endif
 
 char *Fl_Window::default_xclass_ = 0L;

Modified: branches/branch-3.0-2011/src/Fl_Window_fullscreen.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Window_fullscreen.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Window_fullscreen.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -35,8 +35,8 @@
 // the window full screen will lose the size of the border off the
 // bottom and right.
 
-#include <FL/Fl.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
 
 #include <config.h>
 

Modified: branches/branch-3.0-2011/src/Fl_Window_hotspot.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Window_hotspot.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Window_hotspot.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Window.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/x.H>
 #include <stdio.h>
 
 void Fl_Window::hotspot(int X, int Y, int offscreen) {

Modified: branches/branch-3.0-2011/src/Fl_Window_iconize.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Window_iconize.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Window_iconize.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/x.H>
+#include <fltk3/x.H>
 
 extern char fl_show_iconic; // in Fl_x.cxx
 

Modified: branches/branch-3.0-2011/src/Fl_Wizard.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Wizard.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_Wizard.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -39,9 +39,9 @@
 // Include necessary header files...
 //
 
-#include <FL/Fl_Wizard.H>
-#include <FL/Fl_Window.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl_Wizard.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/fl_draw.H>
 
 
 //

Modified: branches/branch-3.0-2011/src/Fl_XBM_Image.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_XBM_Image.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_XBM_Image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -33,11 +33,11 @@
 // Include necessary header files...
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_XBM_Image.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_XBM_Image.H>
 #include <stdio.h>
 #include <stdlib.h>
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 #include "flstring.h"
 
 //

Modified: branches/branch-3.0-2011/src/Fl_XColor.H
===================================================================
--- branches/branch-3.0-2011/src/Fl_XColor.H	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_XColor.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/src/Fl_XPM_Image.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_XPM_Image.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_XPM_Image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -32,11 +32,11 @@
 // Include necessary header files...
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_XPM_Image.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_XPM_Image.H>
 #include <stdio.h>
 #include <stdlib.h>
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 #include "flstring.h"
 
 

Modified: branches/branch-3.0-2011/src/Fl_abort.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_abort.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_abort.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -29,7 +29,7 @@
 // do not need to be included in Fl.cxx:
 // You can also override this by redefining all of these.
 
-#include <FL/Fl.H>
+#include <fltk3/Fl.H>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>

Modified: branches/branch-3.0-2011/src/Fl_add_idle.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_add_idle.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_add_idle.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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 <FL/Fl.H>
+#include <fltk3/Fl.H>
 
 struct idle_cb {
   void (*cb)(void*);

Modified: branches/branch-3.0-2011/src/Fl_arg.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_arg.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_arg.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -28,12 +28,12 @@
 // OPTIONAL initialization code for a program using fltk.
 // You do not need to call this!  Feel free to make up your own switches.
 
-#include <FL/Fl.H>
-#include <FL/x.H>
-#include <FL/Fl_Window.H>
-#include <FL/Fl_Tooltip.H>
-#include <FL/filename.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/Fl_Tooltip.H>
+#include <fltk3/filename.H>
+#include <fltk3/fl_draw.H>
 #include <ctype.h>
 #include "flstring.h"
 

Modified: branches/branch-3.0-2011/src/Fl_cocoa.mm
===================================================================
--- branches/branch-3.0-2011/src/Fl_cocoa.mm	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_cocoa.mm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -46,14 +46,14 @@
 }
 
 
-#include <FL/Fl.H>
-#include <FL/x.H>
-#include <FL/Fl_Window.H>
-#include <FL/Fl_Tooltip.H>
-#include <FL/Fl_Sys_Menu_Bar.H>
-#include <FL/Fl_Printer.H>
-#include <FL/Fl_Input_.H>
-#include <FL/Fl_Text_Display.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/Fl_Tooltip.H>
+#include <fltk3/Fl_Sys_Menu_Bar.H>
+#include <fltk3/Fl_Printer.H>
+#include <fltk3/Fl_Input_.H>
+#include <fltk3/Fl_Text_Display.H>
 #include <stdio.h>
 #include <stdlib.h>
 #include "flstring.h"

Modified: branches/branch-3.0-2011/src/Fl_compose.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_compose.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_compose.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,8 +25,8 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
 
 #ifndef FL_DOXYGEN
 // at present, this is effectively used by Mac OS X only

Modified: branches/branch-3.0-2011/src/Fl_display.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_display.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_display.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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 <FL/Fl.H>
+#include <fltk3/Fl.H>
 #include <stdlib.h>
 #include "flstring.h"
 

Modified: branches/branch-3.0-2011/src/Fl_get_key.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_get_key.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_get_key.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -35,8 +35,8 @@
 // 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 <FL/Fl.H>
-#  include <FL/x.H>
+#  include <fltk3/Fl.H>
+#  include <fltk3/x.H>
 
 extern char fl_key_vector[32]; // in Fl_x.cxx
 

Modified: branches/branch-3.0-2011/src/Fl_get_key_mac.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_get_key_mac.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_get_key_mac.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -29,8 +29,8 @@
 // which are actually X keysyms.  So this has to translate to macOS
 // symbols.
 
-#include <FL/Fl.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
 #include <config.h>
 
 // convert an FLTK (X) keysym to a MacOS symbol:

Modified: branches/branch-3.0-2011/src/Fl_get_key_win32.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_get_key_win32.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_get_key_win32.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -29,8 +29,8 @@
 // which are actually X keysyms.  So this has to translate to MSWindows
 // VK_x symbols.
 
-#include <FL/Fl.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
 
 // convert an Fltk (X) keysym to a MSWindows VK symbol:
 // See also the inverse converter in Fl_win32.cxx

Modified: branches/branch-3.0-2011/src/Fl_get_system_colors.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_get_system_colors.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_get_system_colors.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,16 +25,16 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
-#include <FL/x.H>
-#include <FL/math.h>
-#include <FL/fl_utf8.h>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/x.H>
+#include <fltk3/math.h>
+#include <fltk3/fl_utf8.h>
 #include "flstring.h"
 #include <stdio.h>
 #include <stdlib.h>
-#include <FL/Fl_Pixmap.H>
-#include <FL/Fl_Tiled_Image.H>
+#include <fltk3/Fl_Pixmap.H>
+#include <fltk3/Fl_Tiled_Image.H>
 #include "tile.xpm"
 
 #if defined(WIN32) && !defined(__CYGWIN__) && !defined(__WATCOMC__)

Modified: branches/branch-3.0-2011/src/Fl_grab.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_grab.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_grab.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -26,8 +26,8 @@
 //
 
 #include <config.h>
-#include <FL/Fl.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
 
 ////////////////////////////////////////////////////////////////
 // "Grab" is done while menu systems are up.  This has several effects:

Modified: branches/branch-3.0-2011/src/Fl_lock.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_lock.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_lock.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -26,7 +26,7 @@
 //
 
 
-#include <FL/Fl.H>
+#include <fltk3/Fl.H>
 #include <config.h>
 
 #include <stdlib.h>
@@ -189,7 +189,7 @@
 #ifdef WIN32
 #  include <windows.h>
 #  include <process.h>
-#  include <FL/x.H>
+#  include <fltk3/x.H>
 
 // These pointers are in Fl_win32.cxx:
 extern void (*fl_lock_function)();

Modified: branches/branch-3.0-2011/src/Fl_mac.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_mac.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_mac.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -59,11 +59,11 @@
 }
 
 #include <config.h>
-#include <FL/Fl.H>
-#include <FL/x.H>
-#include <FL/Fl_Window.H>
-#include <FL/Fl_Tooltip.H>
-#include <FL/Fl_Sys_Menu_Bar.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/Fl_Tooltip.H>
+#include <fltk3/Fl_Sys_Menu_Bar.H>
 #include <stdio.h>
 #include <stdlib.h>
 #include "flstring.h"
@@ -1855,7 +1855,7 @@
 static int currDragSize = 0; 
 static OSErr currDragErr = noErr;
 Fl_Window *fl_dnd_target_window = 0;
-#include <FL/fl_draw.H>
+#include <fltk3/fl_draw.H>
 
 /**
  * Fill the currDrag* variables with the current DnD ASCII text.

Modified: branches/branch-3.0-2011/src/Fl_own_colormap.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_own_colormap.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_own_colormap.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -34,8 +34,8 @@
 // get huge color changes when switching windows.
 
 #include <config.h>
-#include <FL/Fl.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
 
 /** \fn Fl::own_colormap()
     Makes FLTK use its own colormap.  This may make FLTK display better

Modified: branches/branch-3.0-2011/src/Fl_visual.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_visual.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_visual.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -28,8 +28,8 @@
 // Set the default visual according to passed switches:
 
 #include <config.h>
-#include <FL/Fl.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
 
 /** \fn  Fl::visual(int flags)
     Selects a visual so that your graphics are drawn correctly.  This is

Modified: branches/branch-3.0-2011/src/Fl_win32.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_win32.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_win32.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -32,12 +32,12 @@
 // This file must be #include'd in Fl.cxx and not compiled separately.
 
 #ifndef FL_DOXYGEN
-#include <FL/Fl.H>
-#include <FL/fl_utf8.h>
-#include <FL/Fl_Window.H>
-#include <FL/fl_draw.H>
-#include <FL/Enumerations.H>
-#include <FL/Fl_Tooltip.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_utf8.h>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/Enumerations.H>
+#include <fltk3/Fl_Tooltip.H>
 #include "flstring.h"
 #include "Fl_Font.H"
 #include <stdio.h>
@@ -1713,7 +1713,7 @@
 
 ////////////////////////////////////////////////////////////////
 
-#include <FL/filename.H> // need so FL_EXPORT fl_filename_name works
+#include <fltk3/filename.H> // need so FL_EXPORT fl_filename_name works
 
 // returns pointer to the filename, or null if name ends with '/'
 const char *fl_filename_name(const char *name) {
@@ -1929,8 +1929,8 @@
 #ifdef USE_PRINT_BUTTON
 // to test the Fl_Printer class creating a "Print front window" button in a separate window
 // contains also preparePrintFront call above
-#include <FL/Fl_Printer.H>
-#include <FL/Fl_Button.H>
+#include <fltk3/Fl_Printer.H>
+#include <fltk3/Fl_Button.H>
 void printFront(Fl_Widget *o, void *data)
 {
   Fl_Printer printer;

Modified: branches/branch-3.0-2011/src/Fl_x.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_x.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/Fl_x.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -36,12 +36,12 @@
 /* #define BACKSPACE_HACK 1 */
 
 #  include <config.h>
-#  include <FL/Fl.H>
-#  include <FL/x.H>
-#  include <FL/Fl_Window.H>
-#  include <FL/fl_utf8.h>
-#  include <FL/Fl_Tooltip.H>
-#  include <FL/fl_draw.H>
+#  include <fltk3/Fl.H>
+#  include <fltk3/x.H>
+#  include <fltk3/Fl_Window.H>
+#  include <fltk3/fl_utf8.h>
+#  include <fltk3/Fl_Tooltip.H>
+#  include <fltk3/fl_draw.H>
 #  include <stdio.h>
 #  include <stdlib.h>
 #  include "flstring.h"
@@ -1879,8 +1879,8 @@
 #ifdef USE_PRINT_BUTTON
 // to test the Fl_Printer class creating a "Print front window" button in a separate window
 // contains also preparePrintFront call above
-#include <FL/Fl_Printer.H>
-#include <FL/Fl_Button.H>
+#include <fltk3/Fl_Printer.H>
+#include <fltk3/Fl_Button.H>
 void printFront(Fl_Widget *o, void *data)
 {
   Fl_Printer printer;

Modified: branches/branch-3.0-2011/src/filename_absolute.cxx
===================================================================
--- branches/branch-3.0-2011/src/filename_absolute.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/filename_absolute.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -31,8 +31,8 @@
    Returns true if any changes were made.
 */
 
-#include <FL/filename.H>
-#include <FL/fl_utf8.h>
+#include <fltk3/filename.H>
+#include <fltk3/fl_utf8.h>
 #include <stdlib.h>
 #include "flstring.h"
 #include <ctype.h>
@@ -50,7 +50,7 @@
 
 /** Makes a filename absolute from a relative filename.
     \code
-    #include <FL/filename.H>
+    #include <fltk3/filename.H>
     [..]
     chdir("/var/tmp");
     fl_filename_absolute(out, sizeof(out), "foo.txt");         // out="/var/tmp/foo.txt"
@@ -117,7 +117,7 @@
 
 /** Makes a filename relative to the current working directory.
     \code
-    #include <FL/filename.H>
+    #include <fltk3/filename.H>
     [..]
     chdir("/var/tmp/somedir");       // set cwd to /var/tmp/somedir
     [..]

Modified: branches/branch-3.0-2011/src/filename_expand.cxx
===================================================================
--- branches/branch-3.0-2011/src/filename_expand.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/filename_expand.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -30,8 +30,8 @@
    to & from may be the same buffer.
 */
 
-#include <FL/filename.H>
-#include <FL/fl_utf8.h>
+#include <fltk3/filename.H>
+#include <fltk3/fl_utf8.h>
 #include <stdlib.h>
 #include "flstring.h"
 #if defined(WIN32) && !defined(__CYGWIN__)
@@ -57,7 +57,7 @@
 
     \b Examples:
     \code
-    #include <FL/filename.H>
+    #include <fltk3/filename.H>
     [..]
     putenv("TMPDIR=/var/tmp");
     fl_filename_expand(out, sizeof(out), "~fred/.cshrc");     // out="/usr/fred/.cshrc"

Modified: branches/branch-3.0-2011/src/filename_ext.cxx
===================================================================
--- branches/branch-3.0-2011/src/filename_ext.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/filename_ext.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -27,11 +27,11 @@
 
 // returns pointer to the last '.' or to the null if none:
 
-#include <FL/filename.H>
+#include <fltk3/filename.H>
 
 /** Gets the extensions of a filename.
    \code
-   #include <FL/filename.H>
+   #include <fltk3/filename.H>
    [..]
    const char *out;
    out = fl_filename_ext("/some/path/foo.txt");        // result: ".txt"

Modified: branches/branch-3.0-2011/src/filename_isdir.cxx
===================================================================
--- branches/branch-3.0-2011/src/filename_isdir.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/filename_isdir.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -31,8 +31,8 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <ctype.h>
-#include <FL/filename.H>
-#include <FL/fl_utf8.h>
+#include <fltk3/filename.H>
+#include <fltk3/fl_utf8.h>
 
 
 #if defined(WIN32) || defined(__EMX__) && !defined(__CYGWIN__)
@@ -50,7 +50,7 @@
 /**
    Determines if a file exists and is a directory from its filename.
    \code
-   #include <FL/filename.H>
+   #include <fltk3/filename.H>
    [..]
    fl_filename_isdir("/etc");		// returns non-zero
    fl_filename_isdir("/etc/hosts");	// returns 0

Modified: branches/branch-3.0-2011/src/filename_list.cxx
===================================================================
--- branches/branch-3.0-2011/src/filename_list.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/filename_list.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -27,8 +27,8 @@
 
 // Wrapper for scandir with const-correct function prototypes.
 
-#include <FL/filename.H>
-#include <FL/fl_utf8.h>
+#include <fltk3/filename.H>
+#include <fltk3/fl_utf8.h>
 #include "flstring.h"
 #include <stdlib.h>
 
@@ -61,7 +61,7 @@
 
    \b Include:
    \code
-   #include <FL/filename.H>
+   #include <fltk3/filename.H>
    \endcode
 
    \param[in] d the name of the directory to list.  It does not matter if it has a trailing slash.

Modified: branches/branch-3.0-2011/src/filename_match.cxx
===================================================================
--- branches/branch-3.0-2011/src/filename_match.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/filename_match.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -26,7 +26,7 @@
 //
 
 /* Adapted from Rich Salz. */
-#include <FL/filename.H>
+#include <fltk3/filename.H>
 #include <ctype.h>
 
 /**
@@ -43,7 +43,7 @@
 
     \b Include:
     \code
-    #include <FL/filename.H>
+    #include <fltk3/filename.H>
     \endcode
 
     \param[in] s the string to check for a match

Modified: branches/branch-3.0-2011/src/filename_setext.cxx
===================================================================
--- branches/branch-3.0-2011/src/filename_setext.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/filename_setext.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -27,7 +27,7 @@
 
 // Replace .ext with new extension
 
-#include <FL/filename.H>
+#include <fltk3/filename.H>
 #include "flstring.h"
 
 /**
@@ -38,7 +38,7 @@
 
    \b Example
    \code
-   #include <FL/filename.H>
+   #include <fltk3/filename.H>
    [..]
    char buf[FL_PATH_MAX] = "/path/myfile.cxx";
    fl_filename_setext(buf, sizeof(buf), ".txt");      // buf[] becomes "/path/myfile.txt"

Modified: branches/branch-3.0-2011/src/fl_arc.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_arc.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_arc.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -34,8 +34,8 @@
 // the current fl_begin/fl_vertex/fl_end path.
 // Incremental math implementation:
 
-#include <FL/fl_draw.H>
-#include <FL/math.h>
+#include <fltk3/fl_draw.H>
+#include <fltk3/math.h>
 
 // avoid problems with some platforms that don't 
 // implement hypot.

Modified: branches/branch-3.0-2011/src/fl_arci.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_arci.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_arci.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -40,10 +40,10 @@
 
 // 3/10/98: created
 
-#include <FL/fl_draw.H>
-#include <FL/x.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/x.H>
 #ifdef WIN32
-#  include <FL/math.h>
+#  include <fltk3/math.h>
 #endif
 #include <config.h>
 

Modified: branches/branch-3.0-2011/src/fl_ask.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_ask.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_ask.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -34,18 +34,18 @@
 #include <stdarg.h>
 #include "flstring.h"
 
-#include <FL/Fl.H>
+#include <fltk3/Fl.H>
 
-#include <FL/fl_ask.H>
+#include <fltk3/fl_ask.H>
 
-#include <FL/Fl_Box.H>
-#include <FL/Fl_Button.H>
-#include <FL/Fl_Return_Button.H>
-#include <FL/Fl_Window.H>
-#include <FL/Fl_Input.H>
-#include <FL/Fl_Secret_Input.H>
-#include <FL/x.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl_Box.H>
+#include <fltk3/Fl_Button.H>
+#include <fltk3/Fl_Return_Button.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/Fl_Input.H>
+#include <fltk3/Fl_Secret_Input.H>
+#include <fltk3/x.H>
+#include <fltk3/fl_draw.H>
 
 static Fl_Window *message_form;
 static Fl_Box *message;
@@ -257,7 +257,7 @@
 // fltk functions:
 /**
    Emits a system beep message.
-   \note \#include <FL/fl_ask.H>
+   \note \#include <fltk3/fl_ask.H>
  */
 void fl_beep(int type) {
 #ifdef WIN32
@@ -309,7 +309,7 @@
 
    \note Common dialog boxes are application modal. No more than one common dialog box
    can be open at any time. Requests for additional dialog boxes are ignored.
-   \note \#include <FL/fl_ask.H>
+   \note \#include <fltk3/fl_ask.H>
 
 
    \param[in] fmt can be used as an sprintf-like format and variables for the message text
@@ -333,7 +333,7 @@
 
    \note Common dialog boxes are application modal. No more than one common dialog box
    can be open at any time. Requests for additional dialog boxes are ignored.
-   \note \#include <FL/fl_ask.H>
+   \note \#include <fltk3/fl_ask.H>
 
    \param[in] fmt can be used as an sprintf-like format and variables for the message text
  */
@@ -356,7 +356,7 @@
 
    \note Common dialog boxes are application modal. No more than one common dialog box
    can be open at any time. Requests for additional dialog boxes are ignored.
-   \note \#include <FL/fl_ask.H>
+   \note \#include <fltk3/fl_ask.H>
 
    \param[in] fmt can be used as an sprintf-like format and variables for the message text
    \retval 0 if the no button is selected or another dialog box is still open
@@ -382,7 +382,7 @@
 
    \note Common dialog boxes are application modal. No more than one common dialog box
     can be open at any time. Requests for additional dialog boxes are ignored.
-   \note \#include <FL/fl_ask.H>
+   \note \#include <fltk3/fl_ask.H>
 
    \param[in] fmt can be used as an sprintf-like format and variables for the message text
    \param[in] b0 text label of button 0
@@ -408,7 +408,7 @@
 /** Gets the Fl_Box icon container of the current default dialog used in 
     many common dialogs like fl_message(), fl_alert(), 
     fl_ask(), fl_choice(), fl_input(), fl_password() 
-    \note \#include <FL/fl_ask.H>
+    \note \#include <fltk3/fl_ask.H>
 */ 
 Fl_Widget *fl_message_icon() {makeform(); return icon;}
 
@@ -431,7 +431,7 @@
 
    \note Common dialog boxes are application modal. No more than one common dialog box
    can be open at any time. Requests for additional dialog boxes are ignored.
-   \note \#include <FL/fl_ask.H>
+   \note \#include <fltk3/fl_ask.H>
 
    \param[in] fmt can be used as an sprintf-like format and variables for the message text
    \param[in] defstr defines the default returned string if no text is entered
@@ -457,7 +457,7 @@
 
    \note Common dialog boxes are application modal. No more than one common dialog box
    can be open at any time. Requests for additional dialog boxes are ignored.
-   \note \#include <FL/fl_ask.H>
+   \note \#include <fltk3/fl_ask.H>
 
    \param[in] fmt can be used as an sprintf-like format and variables for the message text
    \param[in] defstr defines the default returned string if no text is entered

Modified: branches/branch-3.0-2011/src/fl_boxtype.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_boxtype.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_boxtype.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -34,9 +34,9 @@
 // boxtypes.  Other box types are in separate files so they are not
 // linked in if not used.
 
-#include <FL/Fl.H>
-#include <FL/Fl_Widget.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Widget.H>
+#include <fltk3/fl_draw.H>
 #include <config.h>
 
 ////////////////////////////////////////////////////////////////

Modified: branches/branch-3.0-2011/src/fl_call_main.c
===================================================================
--- branches/branch-3.0-2011/src/fl_call_main.c	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_call_main.c	2011-01-09 14:38:38 UTC (rev 8227)
@@ -51,7 +51,7 @@
 #  include <windows.h>
 #  include <stdio.h>
 #  include <stdlib.h>
-#  include <FL/fl_utf8.h>
+#  include <fltk3/fl_utf8.h>
 
 extern int main(int, char *[]);
 

Modified: branches/branch-3.0-2011/src/fl_color.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_color.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_color.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -46,9 +46,9 @@
 // before use.
 
 #  include "Fl_XColor.H"
-#  include <FL/Fl.H>
-#  include <FL/x.H>
-#  include <FL/fl_draw.H>
+#  include <fltk3/Fl.H>
+#  include <fltk3/x.H>
+#  include <fltk3/fl_draw.H>
 
 ////////////////////////////////////////////////////////////////
 // figure_out_visual() calculates masks & shifts for generating

Modified: branches/branch-3.0-2011/src/fl_color_mac.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_color_mac.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_color_mac.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -34,9 +34,9 @@
 // matt: Quartz support done
 
 #include <config.h>
-#include <FL/Fl.H>
-#include <FL/x.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
+#include <fltk3/fl_draw.H>
 
 static unsigned fl_cmap[256] = {
 #include "fl_cmap.h" // this is a file produced by "cmap.cxx":

Modified: branches/branch-3.0-2011/src/fl_color_win32.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_color_win32.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_color_win32.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -35,9 +35,9 @@
 // before use.
 
 #include <config.h>
-#include <FL/Fl.H>
-#include <FL/x.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
+#include <fltk3/fl_draw.H>
 
 static unsigned fl_cmap[256] = {
 #include "fl_cmap.h" // this is a file produced by "cmap.cxx":

Modified: branches/branch-3.0-2011/src/fl_cursor.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_cursor.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_cursor.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -31,17 +31,17 @@
 // This avoids a field in the Fl_Window, and I suspect is more
 // portable to other systems.
 
-#include <FL/Fl.H>
-#include <FL/Fl_Window.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/x.H>
 #if !defined(WIN32) && !defined(__APPLE__)
 #  include <X11/cursorfont.h>
 #endif
-#include <FL/fl_draw.H>
+#include <fltk3/fl_draw.H>
 
 /**
   Sets the cursor for the current window to the specified shape and colors.
-  The cursors are defined in the <FL/Enumerations.H> header file. 
+  The cursors are defined in the <fltk3/Enumerations.H> header file. 
   */
 void fl_cursor(Fl_Cursor c, Fl_Color fg, Fl_Color bg) {
   if (Fl::first_window()) Fl::first_window()->cursor(c,fg,bg);

Modified: branches/branch-3.0-2011/src/fl_curve.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_curve.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_curve.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -35,7 +35,7 @@
   If anybody has a better algorithm, please send it!
 */
 
-#include <FL/fl_draw.H>
+#include <fltk3/fl_draw.H>
 #include <math.h>
 
 void Fl_Graphics_Driver::curve(double X0, double Y0,

Modified: branches/branch-3.0-2011/src/fl_diamond_box.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_diamond_box.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_diamond_box.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -31,8 +31,8 @@
 
 // The diamond box draws best if the area is square!
 
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
 
 extern uchar* fl_gray_ramp();
 

Modified: branches/branch-3.0-2011/src/fl_dnd_win32.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_dnd_win32.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_dnd_win32.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -28,10 +28,10 @@
 // in.  Search other files for "WIN32" or filenames ending in _win32.cxx
 // for other system-specific code.
 
-#include <FL/Fl.H>
-#include <FL/x.H>
-#include <FL/Fl_Window.H>
-#include <FL/fl_utf8.h>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/fl_utf8.h>
 #include "flstring.h"
 #include <stdio.h>
 #include <stdlib.h>

Modified: branches/branch-3.0-2011/src/fl_dnd_x.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_dnd_x.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_dnd_x.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Window.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/x.H>
 #include "flstring.h"
 
 

Modified: branches/branch-3.0-2011/src/fl_draw.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_draw.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_draw.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -33,10 +33,10 @@
 // Aligns them against the inside of the box.
 
 #define min(a,b) ((a)<(b)?(a):(b))
-#include <FL/fl_utf8.h>
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
-#include <FL/Fl_Image.H>
+#include <fltk3/fl_utf8.h>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/Fl_Image.H>
 
 #include "flstring.h"
 #include <ctype.h>

Modified: branches/branch-3.0-2011/src/fl_draw_image.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_draw_image.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_draw_image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -59,9 +59,9 @@
 
 ////////////////////////////////////////////////////////////////
 
-#  include <FL/Fl.H>
-#  include <FL/fl_draw.H>
-#  include <FL/x.H>
+#  include <fltk3/Fl.H>
+#  include <fltk3/fl_draw.H>
+#  include <fltk3/x.H>
 #  include "Fl_XColor.H"
 #  include "flstring.h"
 

Modified: branches/branch-3.0-2011/src/fl_draw_image_mac.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_draw_image_mac.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_draw_image_mac.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -28,9 +28,9 @@
 ////////////////////////////////////////////////////////////////
 
 #include <config.h>
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/x.H>
 
 #define MAXBUFFER 0x40000 // 256k
 

Modified: branches/branch-3.0-2011/src/fl_draw_image_win32.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_draw_image_win32.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_draw_image_win32.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -45,10 +45,10 @@
 ////////////////////////////////////////////////////////////////
 
 #include <config.h>
-#include <FL/Fl.H>
-#include <FL/Fl_Printer.H>
-#include <FL/fl_draw.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Printer.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/x.H>
 
 #define MAXBUFFER 0x40000 // 256k
 

Modified: branches/branch-3.0-2011/src/fl_draw_pixmap.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_draw_pixmap.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_draw_pixmap.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -35,9 +35,9 @@
 // as I want to discourage programs that require support files to work.
 // All data needed by a program ui should be compiled in!!!
 
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/x.H>
 #include <stdio.h>
 #include "flstring.h"
 

Modified: branches/branch-3.0-2011/src/fl_encoding_latin1.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_encoding_latin1.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_encoding_latin1.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,8 +25,8 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/fl_draw.H>
-#include <FL/Enumerations.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/Enumerations.H>
 #include <stdlib.h>
 #include "flstring.h"
 

Modified: branches/branch-3.0-2011/src/fl_encoding_mac_roman.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_encoding_mac_roman.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_encoding_mac_roman.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,8 +25,8 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/fl_draw.H>
-#include <FL/Enumerations.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/Enumerations.H>
 #include <stdlib.h>
 #include "flstring.h"
 

Modified: branches/branch-3.0-2011/src/fl_engraved_label.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_engraved_label.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_engraved_label.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -27,9 +27,9 @@
 
 // Drawing code for XForms style engraved & embossed labels
 
-#include <FL/Fl.H>
-#include <FL/Fl_Widget.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Widget.H>
+#include <fltk3/fl_draw.H>
 
 // data[] is dx, dy, color triples
 

Modified: branches/branch-3.0-2011/src/fl_file_dir.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_file_dir.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_file_dir.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -26,9 +26,9 @@
 //
 
 #include "flstring.h"
-#include <FL/filename.H>
-#include <FL/Fl_File_Chooser.H>
-#include <FL/fl_ask.H>
+#include <fltk3/filename.H>
+#include <fltk3/Fl_File_Chooser.H>
+#include <fltk3/fl_ask.H>
 
 
 static Fl_File_Chooser	*fc = (Fl_File_Chooser *)0;
@@ -47,7 +47,7 @@
 
 /** \relates Fl_File_Chooser
     Set the file chooser callback
-    \note \#include <FL/Fl_File_Chooser.H>
+    \note \#include <fltk3/Fl_File_Chooser.H>
 */
 void fl_file_chooser_callback(void (*cb)(const char*)) {
   current_callback = cb;
@@ -56,7 +56,7 @@
 
 /** \relates Fl_File_Chooser
     Set the "OK" button label
-    \note \#include <FL/Fl_File_Chooser.H>
+    \note \#include <fltk3/Fl_File_Chooser.H>
 */
 void fl_file_chooser_ok_label(const char *l) {
   if (l) current_label = l;
@@ -65,7 +65,7 @@
 
 /** \relates Fl_File_Chooser
     Shows a file chooser dialog and gets a filename. 
-    \note \#include <FL/Fl_File_Chooser.H>
+    \note \#include <fltk3/Fl_File_Chooser.H>
     \image html Fl_File_Chooser.jpg 
     \image latex  Fl_File_Chooser.jpg "Fl_File_Chooser" width=12cm
     \param[in] message text in title bar
@@ -151,7 +151,7 @@
 
 /**  \relates Fl_File_Chooser
     Shows a file chooser dialog and gets a directory.
-    \note \#include <FL/Fl_File_Chooser.H>
+    \note \#include <fltk3/Fl_File_Chooser.H>
     \param[in] message title bar text
     \param[in] fname initial/default directory name
     \param[in] relative 0 for absolute path return, relative otherwise

Modified: branches/branch-3.0-2011/src/fl_font.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_font.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_font.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -40,9 +40,9 @@
 
 // Select fonts from the FLTK font table.
 #include "flstring.h"
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/x.H>
 #include "Fl_Font.H"
 
 #include <stdio.h>

Modified: branches/branch-3.0-2011/src/fl_font_win32.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_font_win32.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_font_win32.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl_Printer.H>
+#include <fltk3/Fl_Printer.H>
 
 static int fl_angle_ = 0;
 

Modified: branches/branch-3.0-2011/src/fl_gtk.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_gtk.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_gtk.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -32,8 +32,8 @@
 // These box types are in separate files so they are not linked
 // in if not used.
 
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
 
 extern void fl_internal_boxtype(Fl_Boxtype, Fl_Box_Draw_F*);
 

Modified: branches/branch-3.0-2011/src/fl_images_core.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_images_core.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_images_core.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -34,12 +34,12 @@
 // Include necessary header files...
 //
 
-#include <FL/Fl_Shared_Image.H>
-#include <FL/Fl_BMP_Image.H>
-#include <FL/Fl_GIF_Image.H>
-#include <FL/Fl_JPEG_Image.H>
-#include <FL/Fl_PNG_Image.H>
-#include <FL/Fl_PNM_Image.H>
+#include <fltk3/Fl_Shared_Image.H>
+#include <fltk3/Fl_BMP_Image.H>
+#include <fltk3/Fl_GIF_Image.H>
+#include <fltk3/Fl_JPEG_Image.H>
+#include <fltk3/Fl_PNG_Image.H>
+#include <fltk3/Fl_PNM_Image.H>
 #include <stdio.h>
 #include <stdlib.h>
 #include "flstring.h"

Modified: branches/branch-3.0-2011/src/fl_labeltype.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_labeltype.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_labeltype.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -29,11 +29,11 @@
 // Other label types (symbols) are in their own source files
 // to avoid linking if not used.
 
-#include <FL/Fl.H>
-#include <FL/Fl_Widget.H>
-#include <FL/Fl_Group.H>
-#include <FL/fl_draw.H>
-#include <FL/Fl_Image.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Widget.H>
+#include <fltk3/Fl_Group.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/Fl_Image.H>
 
 void
 fl_no_label(const Fl_Label*,int,int,int,int,Fl_Align) {}
@@ -137,7 +137,7 @@
 
 // include these vars here so they can be referenced without including
 // Fl_Input_ code:
-#include <FL/Fl_Input_.H>
+#include <fltk3/Fl_Input_.H>
 
 //
 // End of "$Id$".

Modified: branches/branch-3.0-2011/src/fl_line_style.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_line_style.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_line_style.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -30,10 +30,10 @@
   \brief Line style drawing utility hiding different platforms.
 */
 
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
-#include <FL/x.H>
-#include <FL/Fl_Printer.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/x.H>
+#include <fltk3/Fl_Printer.H>
 #include "flstring.h"
 #include <stdio.h>
 

Modified: branches/branch-3.0-2011/src/fl_open_uri.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_open_uri.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_open_uri.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -29,7 +29,7 @@
 // Include necessary headers...
 //
 
-#include <FL/filename.H>
+#include <fltk3/filename.H>
 #include <stdio.h>
 #include <stdlib.h>
 #include <errno.h>
@@ -75,7 +75,7 @@
  *
  * \b Example
  * \code
- * #include <FL/filename.H>
+ * #include <fltk3/filename.H>
  * [..]
  * char errmsg[512];
  * if ( !fl_open_uri("http://google.com/";, errmsg, sizeof(errmsg)) ) {

Modified: branches/branch-3.0-2011/src/fl_oval_box.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_oval_box.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_oval_box.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -29,8 +29,8 @@
 // Less-used box types are in separate files so they are not linked
 // in if not used.
 
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
 
 static void fl_oval_flat_box(int x, int y, int w, int h, Fl_Color c) {
   fl_color(c);

Modified: branches/branch-3.0-2011/src/fl_overlay.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_overlay.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_overlay.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -30,8 +30,8 @@
 // to erase the overlay before drawing anything that might intersect
 // it.
 
-#include <FL/x.H>
-#include <FL/fl_draw.H>
+#include <fltk3/x.H>
+#include <fltk3/fl_draw.H>
 #ifdef __APPLE__
 #include <config.h>
 #endif

Modified: branches/branch-3.0-2011/src/fl_overlay_visual.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_overlay_visual.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_overlay_visual.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -32,8 +32,8 @@
 
 #include <config.h>
 #if HAVE_OVERLAY
-#include <FL/Fl.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
 
 // SERVER_OVERLAY_VISUALS property element:
 struct OverlayInfo {

Modified: branches/branch-3.0-2011/src/fl_plastic.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_plastic.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_plastic.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -32,8 +32,8 @@
 // These box types are in separate files so they are not linked
 // in if not used.
 
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
 #include "flstring.h"
 
 //

Modified: branches/branch-3.0-2011/src/fl_read_image.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_read_image.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_read_image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,9 +25,9 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/x.H>
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
+#include <fltk3/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
 #include "flstring.h"
 
 #ifdef DEBUG

Modified: branches/branch-3.0-2011/src/fl_rect.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_rect.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_rect.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -36,11 +36,11 @@
 // that minimal update works.
 
 #include <config.h>
-#include <FL/Fl.H>
-#include <FL/Fl_Widget.H>
-#include <FL/Fl_Printer.H>
-#include <FL/fl_draw.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Widget.H>
+#include <fltk3/Fl_Printer.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/x.H>
 
 // fl_line_width_ must contain the absolute value of the current
 // line width to be used for X11 clipping (see below).

Modified: branches/branch-3.0-2011/src/fl_round_box.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_round_box.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_round_box.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -29,8 +29,8 @@
 // These box types are in separate files so they are not linked
 // in if not used.
 
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
 
 // A compiler from a certain very large software company will not compile
 // the function pointer assignment due to the name conflict with fl_arc.

Modified: branches/branch-3.0-2011/src/fl_rounded_box.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_rounded_box.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_rounded_box.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,8 +25,8 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
 
 #define RN	5
 #define RS	15

Modified: branches/branch-3.0-2011/src/fl_scroll_area.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_scroll_area.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_scroll_area.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -30,9 +30,9 @@
 // into the drawing area.
 
 #include <config.h>
-#include <FL/Fl.H>
-#include <FL/x.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
+#include <fltk3/fl_draw.H>
 
 // scroll a rectangle and redraw the newly exposed portions:
 /**

Modified: branches/branch-3.0-2011/src/fl_set_font.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_set_font.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_set_font.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -28,9 +28,9 @@
 // Add a font to the internal table.
 // Also see fl_set_fonts.cxx which adds all possible fonts.
 
-#include <FL/Fl.H>
-#include <FL/x.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
+#include <fltk3/fl_draw.H>
 #include "flstring.h"
 #include "Fl_Font.H"
 #include <stdlib.h>

Modified: branches/branch-3.0-2011/src/fl_set_fonts.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_set_fonts.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_set_fonts.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,8 +25,8 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
 #include "Fl_Font.H"
 #include "flstring.h"
 #include <stdlib.h>

Modified: branches/branch-3.0-2011/src/fl_set_fonts_win32.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_set_fonts_win32.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_set_fonts_win32.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -29,7 +29,7 @@
 // are found on the X server.  It tries to place the fonts into families
 // and to sort them so the first 4 in a family are normal, bold, italic,
 // and bold italic.
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 #ifdef __CYGWIN__
 # include <wchar.h>
 #endif

Modified: branches/branch-3.0-2011/src/fl_shadow_box.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_shadow_box.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_shadow_box.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,8 +25,8 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
 
 #define BW 3
 

Modified: branches/branch-3.0-2011/src/fl_shortcut.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_shortcut.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_shortcut.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -41,14 +41,14 @@
 // This allows punctuation shortcuts like "#" to work (rather than
 // calling it "shift+3" on a US keyboard)
 
-#include <FL/Fl.H>
-#include <FL/Fl_Widget.H>
-#include <FL/Fl_Button.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Widget.H>
+#include <fltk3/Fl_Button.H>
+#include <fltk3/fl_draw.H>
 #include <ctype.h>
 #include "flstring.h"
 #if !defined(WIN32) && !defined(__APPLE__)
-#include <FL/x.H>
+#include <fltk3/x.H>
 #endif
 
 /**

Modified: branches/branch-3.0-2011/src/fl_show_colormap.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_show_colormap.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_show_colormap.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,10 +25,10 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Single_Window.H>
-#include <FL/fl_draw.H>
-#include <FL/fl_show_colormap.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Single_Window.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/fl_show_colormap.H>
 #include <config.h>
 
 #define BOXSIZE 14

Modified: branches/branch-3.0-2011/src/fl_symbols.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_symbols.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_symbols.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -34,9 +34,9 @@
 // Version 2.1 a
 // Date: Oct  2, 1992
 
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
-#include <FL/math.h>
+#include <fltk3/Fl.H>
+#include <fltk3/fl_draw.H>
+#include <fltk3/math.h>
 #include "flstring.h"
 
 typedef struct {

Modified: branches/branch-3.0-2011/src/fl_utf.c
===================================================================
--- branches/branch-3.0-2011/src/fl_utf.c	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_utf.c	2011-01-09 14:38:38 UTC (rev 8227)
@@ -27,7 +27,7 @@
 
 /* Modified to obey rfc3629, which limits unicode to 0-0x10ffff */
 
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 #include <string.h>
 #include <stdlib.h>
 

Modified: branches/branch-3.0-2011/src/fl_utf8.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_utf8.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_utf8.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -27,7 +27,7 @@
 
 
 #include <config.h>
-#include <FL/filename.H>
+#include <fltk3/filename.H>
 #include <stdarg.h>
 
 #if defined(WIN32) && !defined(__CYGWIN__)
@@ -64,14 +64,14 @@
 
 #else // X-windows platform
 
-# include <FL/Xutf8.h>
+# include <fltk3/Xutf8.h>
 # include <sys/types.h>
 # include <sys/stat.h>
 # include <fcntl.h>
 # include <unistd.h>
 #endif // WIN32
 
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 #include <string.h>
 #include <stdlib.h>
 

Modified: branches/branch-3.0-2011/src/fl_vertex.cxx
===================================================================
--- branches/branch-3.0-2011/src/fl_vertex.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/fl_vertex.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -38,10 +38,10 @@
 //       operations for reasons of compatibility and maintainability
 
 #include <config.h>
-#include <FL/fl_draw.H>
-#include <FL/x.H>
-#include <FL/Fl.H>
-#include <FL/math.h>
+#include <fltk3/fl_draw.H>
+#include <fltk3/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/math.h>
 #include <stdlib.h>
 
 struct matrix {double a, b, c, d, x, y;};

Modified: branches/branch-3.0-2011/src/flstring.h
===================================================================
--- branches/branch-3.0-2011/src/flstring.h	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/flstring.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/src/forms_bitmap.cxx
===================================================================
--- branches/branch-3.0-2011/src/forms_bitmap.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/forms_bitmap.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/forms.H>
+#include <fltk3/forms.H>
 /** Creates a bitmap widget from a box type, position, size and optional label specification */
 Fl_FormsBitmap::Fl_FormsBitmap(
   Fl_Boxtype t, int X, int Y, int W, int H, const char* l)

Modified: branches/branch-3.0-2011/src/forms_compatability.cxx
===================================================================
--- branches/branch-3.0-2011/src/forms_compatability.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/forms_compatability.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -28,7 +28,7 @@
 // Forms library compatibility functions.
 // Many more functions are defined as inlines in forms.h!
 
-#include <FL/forms.H>
+#include <fltk3/forms.H>
 #include <stdlib.h>
 
 char fl_flip = 2;
@@ -148,8 +148,8 @@
 
 // Create a forms button by selecting correct fltk subclass:
 
-#include <FL/Fl_Return_Button.H>
-#include <FL/Fl_Repeat_Button.H>
+#include <fltk3/Fl_Return_Button.H>
+#include <fltk3/Fl_Repeat_Button.H>
 
 Fl_Button *fl_add_button(uchar t,int x,int y,int w,int h,const char *l) {
   Fl_Button *b;

Modified: branches/branch-3.0-2011/src/forms_free.cxx
===================================================================
--- branches/branch-3.0-2011/src/forms_free.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/forms_free.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -30,8 +30,8 @@
 // me to port several other programs, but it is in no way
 // complete.
 
-#include <FL/Fl.H>
-#include <FL/Fl_Free.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Free.H>
 
 void Fl_Free::step(void *v) {
   Fl_Free *f = (Fl_Free *)v;

Modified: branches/branch-3.0-2011/src/forms_fselect.cxx
===================================================================
--- branches/branch-3.0-2011/src/forms_fselect.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/forms_fselect.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -27,7 +27,7 @@
 
 // Emulate the Forms file chooser using the fltk file chooser.
 
-#include <FL/forms.H>
+#include <fltk3/forms.H>
 #include "flstring.h"
 
 static char fl_directory[FL_PATH_MAX];

Modified: branches/branch-3.0-2011/src/forms_pixmap.cxx
===================================================================
--- branches/branch-3.0-2011/src/forms_pixmap.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/forms_pixmap.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,7 +25,7 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/forms.H>
+#include <fltk3/forms.H>
 
 /**
   Creates a new Fl_FormsPixmap widget using the given box type, position,

Modified: branches/branch-3.0-2011/src/forms_timer.cxx
===================================================================
--- branches/branch-3.0-2011/src/forms_timer.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/forms_timer.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -29,9 +29,9 @@
 // You don't want to use this if you just want a timeout, call
 // Fl::add_timeout directly!
 
-#include <FL/Fl.H>
-#include <FL/Fl_Timer.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Timer.H>
+#include <fltk3/fl_draw.H>
 #ifdef WIN32
 #  ifdef __MWERKS__
 #    include <time.h>

Modified: branches/branch-3.0-2011/src/freeglut_geometry.cxx
===================================================================
--- branches/branch-3.0-2011/src/freeglut_geometry.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/freeglut_geometry.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,8 +25,8 @@
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#include <FL/glut.H>
-#include <FL/math.h>
+#include <fltk3/glut.H>
+#include <fltk3/math.h>
 #include <stdlib.h>
 
 /*

Modified: branches/branch-3.0-2011/src/freeglut_stroke_mono_roman.cxx
===================================================================
--- branches/branch-3.0-2011/src/freeglut_stroke_mono_roman.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/freeglut_stroke_mono_roman.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -28,7 +28,7 @@
 
 /* This file has been automatically generated by the genstroke utility. */
 
-#include <FL/glut.H>
+#include <fltk3/glut.H>
 
 /* char: 0x20 */
 

Modified: branches/branch-3.0-2011/src/freeglut_stroke_roman.cxx
===================================================================
--- branches/branch-3.0-2011/src/freeglut_stroke_roman.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/freeglut_stroke_roman.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -28,7 +28,7 @@
 
 /* This file has been automatically generated by the genstroke utility. */
 
-#include <FL/glut.H>
+#include <fltk3/glut.H>
 
 /* char: 0x20 */
 

Modified: branches/branch-3.0-2011/src/freeglut_teapot.cxx
===================================================================
--- branches/branch-3.0-2011/src/freeglut_teapot.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/freeglut_teapot.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -72,7 +72,7 @@
  * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
  */
 
-#include <FL/glut.H>
+#include <fltk3/glut.H>
 #include "freeglut_teapot_data.h"
 
 /* -- PRIVATE FUNCTIONS ---------------------------------------------------- */

Modified: branches/branch-3.0-2011/src/gl_draw.cxx
===================================================================
--- branches/branch-3.0-2011/src/gl_draw.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/gl_draw.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,22 +25,22 @@
 //     http://www.fltk.org/str.php
 //
 
-// Functions from <FL/gl.h>
+// Functions from <fltk3/gl.h>
 // See also Fl_Gl_Window and gl_start.cxx
 
 #include "flstring.h"
 #if HAVE_GL || defined(FL_DOXYGEN)
 
-#include <FL/Fl.H>
-#include <FL/gl.h>
-#include <FL/x.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/gl.h>
+#include <fltk3/x.H>
+#include <fltk3/fl_draw.H>
 #include "Fl_Gl_Choice.H"
 #include "Fl_Font.H"
-#include <FL/fl_utf8.h>
+#include <fltk3/fl_utf8.h>
 
 #if !defined(WIN32) && !defined(__APPLE__)
-#include <FL/Xutf8.h>
+#include <fltk3/Xutf8.h>
 #endif
 
 #if USE_XFT
@@ -358,7 +358,7 @@
 
 #if GL_DRAW_USES_TEXTURES || defined(FL_DOXYGEN)
 
-#include <FL/glu.h>
+#include <fltk3/glu.h>
 
 // manages a fifo pile of pre-computed string textures
 class gl_texture_fifo {

Modified: branches/branch-3.0-2011/src/gl_start.cxx
===================================================================
--- branches/branch-3.0-2011/src/gl_start.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/gl_start.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -40,10 +40,10 @@
 #include <config.h>
 #if HAVE_GL
 
-#include <FL/Fl.H>
-#include <FL/Fl_Window.H>
-#include <FL/x.H>
-#include <FL/fl_draw.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Window.H>
+#include <fltk3/x.H>
+#include <fltk3/fl_draw.H>
 #include "Fl_Gl_Choice.H"
 
 extern int fl_clip_state_number; // in fl_rect.cxx

Modified: branches/branch-3.0-2011/src/glut_compatability.cxx
===================================================================
--- branches/branch-3.0-2011/src/glut_compatability.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/glut_compatability.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -38,7 +38,7 @@
 #include "flstring.h"
 #if HAVE_GL
 
-#  include <FL/glut.H>
+#  include <fltk3/glut.H>
 #  ifdef HAVE_GLXGETPROCADDRESSARB
 #    define GLX_GLXEXT_LEGACY
 #    include <GL/glx.h>
@@ -281,7 +281,7 @@
 }
 
 ////////////////////////////////////////////////////////////////
-#include <FL/Fl_Menu_Item.H>
+#include <fltk3/Fl_Menu_Item.H>
 
 struct menu {
   void (*cb)(int);

Modified: branches/branch-3.0-2011/src/glut_font.cxx
===================================================================
--- branches/branch-3.0-2011/src/glut_font.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/glut_font.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -35,7 +35,7 @@
 
 #include <config.h>
 #if HAVE_GL
-#  include <FL/glut.H>
+#  include <fltk3/glut.H>
 
 Fl_Glut_Bitmap_Font glutBitmap9By15 = {FL_SCREEN, 15};
 Fl_Glut_Bitmap_Font glutBitmap8By13 = {FL_SCREEN, 13};

Modified: branches/branch-3.0-2011/src/numericsort.c
===================================================================
--- branches/branch-3.0-2011/src/numericsort.c	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/numericsort.c	2011-01-09 14:38:38 UTC (rev 8227)
@@ -49,7 +49,7 @@
 #    endif /* HAVE_NDIR_H */
 #  endif /* HAVE_DIRENT_H */
 #else /* For WIN32 variants */
-#  include <FL/filename.H>
+#  include <fltk3/filename.H>
 #endif /* !WIN32 || __CYGWIN__ */
 
 /*

Modified: branches/branch-3.0-2011/src/print_panel.cxx
===================================================================
--- branches/branch-3.0-2011/src/print_panel.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/print_panel.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -45,8 +45,8 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include "../src/flstring.h"
-#include <FL/Fl_Preferences.H>
-#include <FL/Fl_Int_Input.H>
+#include <fltk3/Fl_Preferences.H>
+#include <fltk3/Fl_Int_Input.H>
 
 static Fl_Preferences print_prefs(Fl_Preferences::USER, "fltk.org", "printers");
 static Fl_Double_Window *print_panel=(Fl_Double_Window *)0;
@@ -125,7 +125,7 @@
  {0,0,0,0,0,0,0,0,0}
 };
 
-#include <FL/Fl_Pixmap.H>
+#include <fltk3/Fl_Pixmap.H>
 static const char *idata_print_color[] = {
 "24 24 17 1",
 " \tc None",

Modified: branches/branch-3.0-2011/src/print_panel.h
===================================================================
--- branches/branch-3.0-2011/src/print_panel.h	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/print_panel.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -32,18 +32,18 @@
 
 #ifndef print_panel_h
 #define print_panel_h
-#include <FL/Fl.H>
-#include <FL/Fl_Double_Window.H>
-#include <FL/Fl_Group.H>
-#include <FL/Fl_Choice.H>
-#include <FL/Fl_Button.H>
-#include <FL/Fl_Box.H>
-#include <FL/Fl_Round_Button.H>
-#include <FL/Fl_Input.H>
-#include <FL/Fl_Spinner.H>
-#include <FL/Fl_Check_Button.H>
-#include <FL/Fl_Return_Button.H>
-#include <FL/Fl_Progress.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Double_Window.H>
+#include <fltk3/Fl_Group.H>
+#include <fltk3/Fl_Choice.H>
+#include <fltk3/Fl_Button.H>
+#include <fltk3/Fl_Box.H>
+#include <fltk3/Fl_Round_Button.H>
+#include <fltk3/Fl_Input.H>
+#include <fltk3/Fl_Spinner.H>
+#include <fltk3/Fl_Check_Button.H>
+#include <fltk3/Fl_Return_Button.H>
+#include <fltk3/Fl_Progress.H>
 static Fl_Double_Window* make_print_panel();
 static void print_cb(Fl_Return_Button *, void *); 
 static void print_load();

Modified: branches/branch-3.0-2011/src/ps_image.cxx
===================================================================
--- branches/branch-3.0-2011/src/ps_image.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/ps_image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -31,10 +31,10 @@
 #include <math.h>
 #include <string.h>
 
-#include <FL/Fl_PostScript.H>
-#include <FL/Fl.H>
-#include <FL/Fl_Pixmap.H>
-#include <FL/Fl_Bitmap.H>
+#include <fltk3/Fl_PostScript.H>
+#include <fltk3/Fl.H>
+#include <fltk3/Fl_Pixmap.H>
+#include <fltk3/Fl_Bitmap.H>
  
 int Fl_PostScript_Graphics_Driver::alpha_mask(const uchar * data, int w, int h, int D, int LD){
 

Modified: branches/branch-3.0-2011/src/scandir_win32.c
===================================================================
--- branches/branch-3.0-2011/src/scandir_win32.c	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/scandir_win32.c	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/src/screen_xywh.cxx
===================================================================
--- branches/branch-3.0-2011/src/screen_xywh.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/screen_xywh.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -26,8 +26,8 @@
 //
 
 
-#include <FL/Fl.H>
-#include <FL/x.H>
+#include <fltk3/Fl.H>
+#include <fltk3/x.H>
 #include <config.h>
 
 

Modified: branches/branch-3.0-2011/src/xutf8/keysym2Ucs.c
===================================================================
--- branches/branch-3.0-2011/src/xutf8/keysym2Ucs.c	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/xutf8/keysym2Ucs.c	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/src/xutf8/utf8Input.c
===================================================================
--- branches/branch-3.0-2011/src/xutf8/utf8Input.c	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/xutf8/utf8Input.c	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/src/xutf8/utf8Utils.c
===================================================================
--- branches/branch-3.0-2011/src/xutf8/utf8Utils.c	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/xutf8/utf8Utils.c	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/src/xutf8/utf8Wrap.c
===================================================================
--- branches/branch-3.0-2011/src/xutf8/utf8Wrap.c	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/src/xutf8/utf8Wrap.c	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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-2011/test/hello.cxx
===================================================================
--- branches/branch-3.0-2011/test/hello.cxx	2011-01-09 14:26:21 UTC (rev 8226)
+++ branches/branch-3.0-2011/test/hello.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -25,31 +25,20 @@
 //     http://www.fltk.org/str.php
 //
 
-#include <FL/Fl.H>
-#include <FL/Fl_Window.H>
-#include <FL/Fl_Box.H>
+#include <fltk3/run.h>
+#include <fltk3/Window.h>
+#include <fltk3/Box.h>
 
 int main(int argc, char **argv) {
-#if (1) // FIXME: test screen dimensions and resolution. Remove before release !
-  float ppi_h, ppi_v;
-  int x,y,w,h;
-  int n = Fl::screen_count();
-  for (int i=0; i<n; i++) {
-    Fl::screen_xywh(x,y,w,h,i);
-    Fl::screen_dpi(ppi_h, ppi_v, i);
-    printf("Screen %2d (%4d,%4d,%4d,%4d) res. is %7.3f x %7.3f ppi\n", i, x,y,w,h, ppi_h, ppi_v);
-  }
-  fflush(stdout);
-#endif // FIXME: test screen dimensions and resolution. Remove before release !
-  Fl_Window *window = new Fl_Window(340,180);
-  Fl_Box *box = new Fl_Box(20,40,300,100,"Hello, World!");
-  box->box(FL_UP_BOX);
-  box->labelfont(FL_BOLD+FL_ITALIC);
+  fltk3::Window *window = new fltk3::Window(340,180);
+  fltk3::Box *box = new fltk3::Box(20,40,300,100,"Hello, World!");
+  box->box(fltk3::UP_BOX);
+  box->labelfont(fltk3::BOLD+fltk3::ITALIC);
   box->labelsize(36);
-  box->labeltype(FL_SHADOW_LABEL);
+  box->labeltype(fltk3::SHADOW_LABEL);
   window->end();
   window->show(argc, argv);
-  return Fl::run();
+  return fltk3::run();
 }
 
 //

Copied: branches/branch-3.0-2011/test1 (from rev 8219, branches/branch-3.0-2011/test)

Added: branches/branch-3.0-2011/test2/CubeMain.cxx
===================================================================
--- branches/branch-3.0-2011/test2/CubeMain.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/CubeMain.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,48 @@
+//
+// "$Id: CubeMain.cxx 4886 2006-03-30 09:55:32Z fabien $"
+//
+// CubeView class definitions 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".
+//
+
+#include <config.h>
+
+#include <fltk/run.h>
+#include <fltk/visual.h>
+
+#include "CubeViewUI.h"
+
+int main(int argc, char **argv) 
+{  
+  // Initial global objects.
+  fltk::args(argc, argv);
+  fltk::visual(fltk::DOUBLE_BUFFER);
+
+  CubeViewUI cvui;
+  cvui.show();
+    
+  return fltk::run();
+}
+
+
+//
+// End of "$Id: CubeMain.cxx 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/CubeView.cxx
===================================================================
--- branches/branch-3.0-2011/test2/CubeView.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/CubeView.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,173 @@
+//
+// "$Id: CubeView.cxx 4886 2006-03-30 09:55:32Z fabien $"
+//
+// CubeView class implementation 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".
+//
+
+#include "CubeView.h"
+#include <math.h>
+
+#if HAVE_GL
+CubeView::CubeView(int x,int y,int w,int h,const char *l)
+            : GlWindow(x,y,w,h,l)
+#else
+CubeView::CubeView(int x,int y,int w,int h,const char *l)
+            : Widget(x,y,w,h,l)
+#endif /* HAVE_GL */
+{
+    vAng = 0.0;
+    hAng=0.0;
+    size=10.0;
+    xshift=yshift=0;
+    /* The cube definition. These are the vertices of a unit cube
+     * centered on the origin.*/
+    
+    boxv0[0] = -0.5; boxv0[1] = -0.5; boxv0[2] = -0.5;
+    boxv1[0] =  0.5; boxv1[1] = -0.5; boxv1[2] = -0.5;
+    boxv2[0] =  0.5; boxv2[1] =  0.5; boxv2[2] = -0.5;
+    boxv3[0] = -0.5; boxv3[1] =  0.5; boxv3[2] = -0.5;
+    boxv4[0] = -0.5; boxv4[1] = -0.5; boxv4[2] =  0.5;
+    boxv5[0] =  0.5; boxv5[1] = -0.5; boxv5[2] =  0.5;
+    boxv6[0] =  0.5; boxv6[1] =  0.5; boxv6[2] =  0.5;
+    boxv7[0] = -0.5; boxv7[1] =  0.5; boxv7[2] =  0.5;
+
+#if !HAVE_GL
+    label("OpenGL is required for this demo to operate.");
+    align(fltk::ALIGN_WRAP | fltk::ALIGN_INSIDE);
+    box(fltk::NO_BOX);
+    labelcolor(fltk::WHITE);
+#endif /* !HAVE_GL */
+}
+
+#if HAVE_GL
+void CubeView::drawCube() 
+{
+    /* Draw a colored cube */
+    #define ALPHA 0.5
+    
+    glShadeModel(GL_FLAT);
+
+    glBegin(GL_QUADS);
+      glColor4f(0.0, 0.0, 1.0, ALPHA);
+      glVertex3fv(boxv0);
+      glVertex3fv(boxv1);
+      glVertex3fv(boxv2);
+      glVertex3fv(boxv3);
+
+      glColor4f(1.0, 1.0, 0.0, ALPHA);
+      glVertex3fv(boxv0);
+      glVertex3fv(boxv4);
+      glVertex3fv(boxv5);
+      glVertex3fv(boxv1);
+
+      glColor4f(0.0, 1.0, 1.0, ALPHA);
+      glVertex3fv(boxv2);
+      glVertex3fv(boxv6);
+      glVertex3fv(boxv7);
+      glVertex3fv(boxv3);
+
+      glColor4f(1.0, 0.0, 0.0, ALPHA);
+      glVertex3fv(boxv4);
+      glVertex3fv(boxv5);
+      glVertex3fv(boxv6);
+      glVertex3fv(boxv7);
+
+      glColor4f(1.0, 0.0, 1.0, ALPHA);
+      glVertex3fv(boxv0);
+      glVertex3fv(boxv3);
+      glVertex3fv(boxv7);
+      glVertex3fv(boxv4);
+
+      glColor4f(0.0, 1.0, 0.0, ALPHA);
+      glVertex3fv(boxv1);
+      glVertex3fv(boxv5);
+      glVertex3fv(boxv6);
+      glVertex3fv(boxv2);
+    glEnd();
+
+    glColor3f(1.0, 1.0, 1.0);
+    glBegin(GL_LINES);
+      glVertex3fv(boxv0);
+      glVertex3fv(boxv1);
+
+      glVertex3fv(boxv1);
+      glVertex3fv(boxv2);
+
+      glVertex3fv(boxv2);
+      glVertex3fv(boxv3);
+
+      glVertex3fv(boxv3);
+      glVertex3fv(boxv0);
+
+      glVertex3fv(boxv4);
+      glVertex3fv(boxv5);
+
+      glVertex3fv(boxv5);
+      glVertex3fv(boxv6);
+
+      glVertex3fv(boxv6);
+      glVertex3fv(boxv7);
+
+      glVertex3fv(boxv7);
+      glVertex3fv(boxv4);
+
+      glVertex3fv(boxv0);
+      glVertex3fv(boxv4);
+
+      glVertex3fv(boxv1);
+      glVertex3fv(boxv5);
+
+      glVertex3fv(boxv2);
+      glVertex3fv(boxv6);
+
+      glVertex3fv(boxv3);
+      glVertex3fv(boxv7);
+    glEnd();
+}
+
+void CubeView::draw() 
+{
+    if (!valid()) {
+        glLoadIdentity();
+        glViewport(0,0,w(),h());
+        glOrtho(-10,10,-10,10,-20000,10000);
+        glEnable(GL_BLEND);
+        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+    }
+
+    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+    glPushMatrix();
+
+    glTranslatef(xshift, yshift, 0);
+    glRotatef(hAng,0,1,0); glRotatef(vAng,1,0,0);
+    glScalef(float(size),float(size),float(size));
+
+    drawCube();
+    
+    glPopMatrix();
+}
+#endif /* HAVE_GL */
+
+//
+// End of "$Id: CubeView.cxx 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/CubeView.h
===================================================================
--- branches/branch-3.0-2011/test2/CubeView.h	                        (rev 0)
+++ branches/branch-3.0-2011/test2/CubeView.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,127 @@
+//
+// "$Id: CubeView.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// CubeView class definitions 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 CUBEVIEW_H
+#define CUBEVIEW_H 1
+
+#include <config.h>
+
+#include <fltk/run.h>
+
+#if HAVE_GL
+#  include <fltk/GlWindow.h>
+#  include <fltk/gl.h>
+#else
+#  include <fltk/Widget.h>
+#endif /* HAVE_GL */
+
+#include <stdlib.h>
+
+#if HAVE_GL
+class CubeView : public fltk::GlWindow {
+#else
+class CubeView : public fltk::Widget {
+#endif /* HAVE_GL */
+
+public:
+    CubeView(int x,int y,int w,int h,const char *l=0);
+
+    /* Set the rotation about the vertical (y ) axis.
+     *
+     * This function is called by the horizontal roller in CubeViewUI and the
+     * initialize button in CubeViewUI.
+     */
+    void v_angle(float angle) { vAng=angle; }
+    
+    // Return the rotation about the vertical (y) axis.
+    float v_angle() { return vAng; }
+
+    /* Set the rotation about the horizontal (x) axis.
+     *
+     * This function is called by the vertical roller in CubeViewUI
+     */
+    void h_angle(float angle) { hAng=angle; }
+
+    // the rotation about the horizontal (x) axis.
+    float h_angle() { return hAng; }
+
+    /* Sets the x shift of the cube view camera.
+     *
+     * This function is called by the slider in CubeViewUI
+     */
+    void panx(float x) { xshift=x; }
+
+    /* Sets the y shift of the cube view camera.
+     *
+     * This function is called by the slider in CubeViewUI
+     */
+    void pany(float y) { yshift=y; }
+
+    /* Sets the scale factor of the cube view camera.
+     *
+     * This function is called by the slider in CubeViewUI
+     */
+    void setsize(float v) { size=v; }
+
+#if HAVE_GL
+    /*The widget class draw() override.
+     *
+     *The draw() function initialize Gl for another round o f drawing
+     * then calls specialized functions for drawing each of the
+     * entities displayed in the cube view.
+     *
+     */
+    void draw();    
+#endif /* HAVE_GL */
+
+private:
+    /* Draw the cube boundaries
+     *
+     * Draw the faces of the cube using the boxv[] vertices, using
+     * GL_LINE_LOOP for the faces. The color is \#defined by CUBECOLOR.
+     */
+#if HAVE_GL
+    void drawCube();
+#else
+    void drawCube() { }
+#endif /* HAVE_GL */
+
+    // this value determines the scaling factor used to draw the cube.
+    double size;
+    
+    float vAng, hAng;
+    float xshift, yshift;
+
+    float boxv0[3]; float boxv1[3];
+    float boxv2[3]; float boxv3[3];
+    float boxv4[3]; float boxv5[3];
+    float boxv6[3]; float boxv7[3];
+};
+
+#endif
+
+//
+// End of "$Id: CubeView.h 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/CubeViewUI.cxx
===================================================================
--- branches/branch-3.0-2011/test2/CubeViewUI.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/CubeViewUI.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,128 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0100
+
+#include "CubeViewUI.h"
+
+inline void CubeViewUI::cb_zoom_i(fltk::ValueSlider* o, void*) {
+  cube->setsize((float) o->value());
+  cube->redraw();
+}
+void CubeViewUI::cb_zoom(fltk::ValueSlider* o, void* v) {
+  ((CubeViewUI*)(o->parent()->parent()->user_data()))->cb_zoom_i(o,v);
+}
+
+inline void CubeViewUI::cb_vrot_i(fltk::ThumbWheel* o, void*) {
+  cube->v_angle((float) o->value());
+  cube->redraw();
+}
+void CubeViewUI::cb_vrot(fltk::ThumbWheel* o, void* v) {
+  ((CubeViewUI*)(o->parent()->parent()->parent()->user_data()))->cb_vrot_i(o,v);
+}
+
+inline void CubeViewUI::cb_ypan_i(fltk::Slider* o, void*) {
+  cube->pany((float) o->value());
+  cube->redraw();
+}
+void CubeViewUI::cb_ypan(fltk::Slider* o, void* v) {
+  ((CubeViewUI*)(o->parent()->parent()->parent()->user_data()))->cb_ypan_i(o,v);
+}
+
+inline void CubeViewUI::cb_xpan_i(fltk::Slider* o, void*) {
+  cube->panx((float) o->value());
+  cube->redraw();
+}
+void CubeViewUI::cb_xpan(fltk::Slider* o, void* v) {
+  ((CubeViewUI*)(o->parent()->parent()->parent()->user_data()))->cb_xpan_i(o,v);
+}
+
+inline void CubeViewUI::cb_hrot_i(fltk::ThumbWheel* o, void*) {
+  cube->h_angle((float) o->value());
+  cube->redraw();
+}
+void CubeViewUI::cb_hrot(fltk::ThumbWheel* o, void* v) {
+  ((CubeViewUI*)(o->parent()->parent()->parent()->user_data()))->cb_hrot_i(o,v);
+}
+
+CubeViewUI::CubeViewUI() {
+  fltk::Window* w;
+   {fltk::Window* o = mainWindow = new fltk::Window(415, 406, "CubeView");
+    w = o;
+    o->user_data((void*)(this));
+    o->begin();
+     {fltk::Group* o = new fltk::Group(3, 3, 409, 400);
+      o->begin();
+       {fltk::ValueSlider* o = zoom = new fltk::ValueSlider(101, 0, 227, 19, "Zoom");
+        o->labelfont(fltk::HELVETICA_BOLD);
+        o->labelcolor((fltk::Color)136);
+        o->minimum(1);
+        o->maximum(50);
+        o->step(0.1);
+        o->value(10);
+        o->callback((fltk::Callback*)cb_zoom);
+        o->align(fltk::ALIGN_LEFT);
+      }
+       {fltk::Group* o = VChange = new fltk::Group(0, 97, 37, 192);
+        o->set_vertical();
+        o->begin();
+         {fltk::ThumbWheel* o = vrot = new fltk::ThumbWheel(0, 0, 17, 186, "V Rot");
+          o->set_vertical();
+          o->labeltype(fltk::NO_LABEL);
+          o->minimum(-180);
+          o->maximum(180);
+          o->step(1);
+          o->callback((fltk::Callback*)cb_vrot);
+          o->align(fltk::ALIGN_TOP|fltk::ALIGN_WRAP);
+        }
+         {fltk::Slider* o = ypan = new fltk::Slider(20, 0, 17, 186);
+          o->set_vertical();
+          o->labeltype(fltk::NO_LABEL);
+          o->labelcolor((fltk::Color)136);
+          o->minimum(-25);
+          o->maximum(25);
+          o->step(0.1);
+          o->callback((fltk::Callback*)cb_ypan);
+          o->align(fltk::ALIGN_CENTER);
+        }
+        o->end();
+      }
+       {fltk::Group* o = HChange = new fltk::Group(115, 359, 190, 40);
+        o->begin();
+         {fltk::Slider* o = xpan = new fltk::Slider(2, 2, 186, 17);
+          o->labeltype(fltk::NO_LABEL);
+          o->labelcolor((fltk::Color)136);
+          o->minimum(25);
+          o->maximum(-25);
+          o->step(0.1);
+          o->callback((fltk::Callback*)cb_xpan);
+          o->align(fltk::ALIGN_CENTER);
+        }
+         {fltk::ThumbWheel* o = hrot = new fltk::ThumbWheel(2, 21, 186, 17, "H Rotation");
+          o->labeltype(fltk::NO_LABEL);
+          o->minimum(-180);
+          o->maximum(180);
+          o->step(1);
+          o->callback((fltk::Callback*)cb_hrot);
+          o->align(fltk::ALIGN_LEFT);
+        }
+        o->end();
+      }
+       {fltk::Group* o = MainView = new fltk::Group(41, 24, 333, 333);
+        o->begin();
+         {fltk::InvisibleBox* o = cframe = new fltk::InvisibleBox(0, 0, 333, 333);
+          o->box(fltk::DOWN_BOX);
+          o->color((fltk::Color)56);
+          o->selection_color((fltk::Color)69);
+        }
+         {cube = new CubeView(2, 2, 329, 329);
+        }
+        o->end();
+      }
+      o->end();
+      fltk::Group::current()->resizable(o);
+    }
+    o->end();
+  }
+}
+
+void CubeViewUI::show() {
+  mainWindow->show();
+}

Added: branches/branch-3.0-2011/test2/CubeViewUI.fl
===================================================================
--- branches/branch-3.0-2011/test2/CubeViewUI.fl	                        (rev 0)
+++ branches/branch-3.0-2011/test2/CubeViewUI.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,76 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.0100 
+images_dir ./ 
+header_name {.h} 
+code_name {.cxx} 
+gridx 2 
+gridy 2 
+snap 2
+class CubeViewUI {open
+} {
+  Function {CubeViewUI()} {open
+  } {
+    {fltk::Window} mainWindow {
+      label CubeView open
+      private xywh {803 113 415 406} resizable visible
+    } {
+      {fltk::Group} {} {open
+        xywh {3 3 409 400} resizable
+      } {
+        {fltk::ValueSlider} zoom {
+          label Zoom
+          callback {cube->setsize(o->value());
+cube->redraw();}
+          xywh {101 0 227 19} align 4 labelfont 1 labelcolor 136 minimum 1 maximum 50 step 0.1 value 10
+        }
+        {fltk::Group} VChange {open
+          xywh {0 97 37 192}
+        } {
+          {fltk::ThumbWheel} vrot {
+            label {V Rot}
+            callback {cube->v_angle(o->value());
+cube->redraw();}
+            xywh {0 0 17 186} align 129 labeltype NO_LABEL minimum -180 maximum 180 step 1
+            extra_code {\#include <stdio.h>}
+          }
+          {fltk::Slider} ypan {
+            callback {cube->pany(o->value());
+cube->redraw();}
+            xywh {20 0 17 186} align 0 labeltype NO_LABEL labelcolor 136 minimum -25 maximum 25 step 0.1
+          }
+        }
+        {fltk::Group} HChange {open
+          xywh {115 359 190 40}
+        } {
+          {fltk::Slider} xpan {
+            callback {cube->panx(o->value());
+cube->redraw();} selected
+            xywh {2 2 186 17} align 0 labeltype NO_LABEL labelcolor 136 minimum 25 maximum -25 step 0.1
+          }
+          {fltk::ThumbWheel} hrot {
+            label {H Rotation}
+            callback {cube->h_angle(o->value());
+cube->redraw();}
+            xywh {2 21 186 17} align 4 labeltype NO_LABEL minimum -180 maximum 180 step 1
+          }
+        }
+        {fltk::Group} MainView {open
+          xywh {41 24 333 333}
+        } {
+          {fltk::InvisibleBox} cframe {
+            xywh {0 0 333 333} box DOWN_BOX color 56 selection_color 69
+          }
+          {fltk::InvisibleBox} cube {
+            xywh {2 2 329 329}
+            extra_code {\#include "CubeView.h"}
+            class CubeView
+          }
+        }
+      }
+    }
+  }
+  Function {show()} {open
+  } {
+    code {mainWindow->show();} {}
+  }
+} 

Added: branches/branch-3.0-2011/test2/CubeViewUI.h
===================================================================
--- branches/branch-3.0-2011/test2/CubeViewUI.h	                        (rev 0)
+++ branches/branch-3.0-2011/test2/CubeViewUI.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,52 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0100
+
+#ifndef CubeViewUI_h
+#define CubeViewUI_h
+#include <fltk/Window.h>
+#include <fltk/Group.h>
+#include <fltk/ValueSlider.h>
+#include <fltk/ThumbWheel.h>
+#include <stdio.h>
+#include <fltk/Slider.h>
+#include <fltk/InvisibleBox.h>
+#include "CubeView.h"
+
+class CubeViewUI  {
+public:
+  CubeViewUI();
+private:
+  fltk::Window *mainWindow;
+public:
+      fltk::ValueSlider *zoom;
+private:
+      inline void cb_zoom_i(fltk::ValueSlider*, void*);
+      static void cb_zoom(fltk::ValueSlider*, void*);
+public:
+      fltk::Group *VChange;
+        fltk::ThumbWheel *vrot;
+private:
+        inline void cb_vrot_i(fltk::ThumbWheel*, void*);
+        static void cb_vrot(fltk::ThumbWheel*, void*);
+public:
+        fltk::Slider *ypan;
+private:
+        inline void cb_ypan_i(fltk::Slider*, void*);
+        static void cb_ypan(fltk::Slider*, void*);
+public:
+      fltk::Group *HChange;
+        fltk::Slider *xpan;
+private:
+        inline void cb_xpan_i(fltk::Slider*, void*);
+        static void cb_xpan(fltk::Slider*, void*);
+public:
+        fltk::ThumbWheel *hrot;
+private:
+        inline void cb_hrot_i(fltk::ThumbWheel*, void*);
+        static void cb_hrot(fltk::ThumbWheel*, void*);
+public:
+      fltk::Group *MainView;
+        fltk::InvisibleBox *cframe;
+        CubeView *cube;
+  void show();
+};
+#endif

Added: branches/branch-3.0-2011/test2/Fl_Multi_Image.cxx
===================================================================
--- branches/branch-3.0-2011/test2/Fl_Multi_Image.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/Fl_Multi_Image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,502 @@
+// Test of the new Fl_MultiImage class for labelling a widget
+
+#include <fltk/Fl.h>
+#include <fltk/Fl_Window.h>
+#include <fltk/Fl_Button.h>
+#include <fltk/Fl_Check_Button.h>
+#include <fltk/Fl_Multi_Image.h>
+
+extern Fl_Multi_Image multiimage; // defined below
+
+void inactive_cb(Fl_Widget* w, void*)
+{
+  if (w->value()) {
+    w->window()->child(0)->deactivate();
+    w->window()->child(1)->deactivate();
+  } else {
+    w->window()->child(0)->activate();
+    w->window()->child(1)->activate();
+  }
+}
+
+int main(int argc, char** argv)
+{
+  Fl_Window window(200,100);
+  for (int i = 0; i < 4; i++) {
+    Fl_Button* b = new Fl_Button(20+i*40, 20, 32, 32);
+    b->image(multiimage);
+    // must remove box so it does not blink:
+    b->box(FL_NO_BOX);
+    // remove focus box because we have an image to show focus:
+    b->focus_box(FL_NO_BOX);
+    // you have to set highlight color to get it to redraw when the
+    // highlighting is changed:
+    b->highlight_color(FL_GRAY);
+  }
+  Fl_Check_Button check(20,60,180,20,"Make two of them inactive");
+  check.callback(inactive_cb);
+  window.end();
+  window.show(argc, argv);
+  return Fl::run();
+}
+
+////////////////////////////////////////////////////////////////
+// Sample images designed and provided by Curtis Edwards
+
+#include <fltk/Fl_Pixmap.h>
+#include <fltk/Fl_Bitmap.h>
+
+/* XPM */
+static char *clear_tick_up[] = {
+/* width height ncolors chars_per_pixel */
+"32 32 20 1",
+/* colors */
+"  c #878E8E",
+". c #7A8081",
+"X c #8E9797",
+"o c #B2B3B3",
+"O c #C4CFCB",
+"+ c #EAEEED",
+"@ c #9A9B9E",
+"# c #AAAAAA",
+"$ c #94A19E",
+"% c #B6BEBC",
+"& c #A0A2A3",
+"* c #BAC6C3",
+"= c #6C7173",
+"- c #A8B4B1",
+"; c #5C6163",
+": c #414C66",
+"> c #A6A7A8",
+", c #9BAAA7",
+"< c #A1B1AC",
+"1 c #ACBAB6",
+/* pixels */
+"################################",
+"##########&@  ...  X@>##########",
+"########@.;=========. X&########",
+"######@=;=.     XX .=;=X@#######",
+"#####.;=XXX&O+++++%$XX=; @&#####",
+"####.; $$X#++++++++O&$$ ; &>####",
+"###.;X$$ -+++++++++++$$$ = >####",
+"## ; $$ X++++++++++++* $$ ;@####",
+"#&; $$X %+++++++++++++>X$$ ;oo##",
+"#.=$,X XO+++++++++++O$- X,X=Xoo#",
+"&; $$XX$**OOOOOOOOO,::XXX$$ ;oo#",
+" =X$XX$&<-1%%%%%%%X::: $XX$X=&%o",
+"=.$$XX$&<-1111111X:::=<$XX$$. %o",
+"=.$$X$,<-1.:;%%%X:::=--,$X$$..%%",
+"; ,$X$<-1 :::%*X:::=11-<$X$,  %%",
+"; ,$X$<-1.:::-X:::=%%%1<$X$,  %*",
+"; ,,$,-1%.:::=:::=%**%1-,$,, .%%",
+"; ,,,,-1% ::::::;%OO**%-,,,, =%%",
+"=.,,,,-%%$:::::=**OOO*%-,,,,.X%%",
+".=$,,,-%*<::::=*O**OO*%-,,,$=>%o",
+">; ,,,-%** ::.OOOO**O*%-,,, ;#%#",
+"#=.,<<<1**O1-OOOOOO*O*1<<<$.=oo#",
+"#&;X,<<1%*OOOOOOOOOO**1<<, ;>o##",
+"##==X<<-%**OOOOOOOOO*%-<<X==oo##",
+"##>;.$<<-***OOOOOOO**-<<$.=#####",
+"##>>==X,<1%*********1<< ==>#>>##",
+"###>&==.$,1%******%1,$.==&>>>###",
+"####>> ==. $,<<<,,$ .== @&&>####",
+"#####>&@ ..=========. @@@&>#####",
+"######>>&@@XXXXXXXX@@@@&>>######",
+"#######>>>&&@@@@@@@@&&>>########",
+"##########>>>>>>>>>>>>##########"
+};
+Fl_Pixmap up(clear_tick_up);
+
+/* XPM */
+static char *clear_tick_hi[] = {
+/* width height ncolors chars_per_pixel */
+"32 32 20 1",
+/* colors */
+"  c #9ED2BF",
+". c #5D6768",
+"X c #A8A9A9",
+"o c #A7A7A8",
+"O c #A5A5A6",
+"+ c #9A9B9E",
+"@ c #85A59D",
+"# c #B7E0CE",
+"$ c #7A8A85",
+"% c #AAAAAA",
+"& c #B9BCBC",
+"* c #697877",
+"= c #E6F7F1",
+"- c #414C66",
+"; c #899492",
+": c #A1A1A3",
+"> c #8EB3A7",
+", c #B3B4B4",
+"< c #93C3B2",
+"1 c #ADAEAE",
+/* pixels */
+"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%",
+"%%%%%%%%%%:+;$$$$$;;+o%%%%%%%%%%",
+"%%%%%%%%+*.********.*;;:%%%%%%%%",
+"%%%%%%+..$@@>>>>>>@@$..;+1%%%%%%",
+"%%%%%*.$>>><#=====#>>>$.$+:%%%%%",
+"%%%%**@<<>&========#<<<@.$:O%%%%",
+"%%%**><<>&===========<><>*$O%%%%",
+"%%$*><<>>============#><<>*;11%%",
+"%:.@<<>@#=============<><<@.11%%",
+"%.$><>>>#===========#+ ><<>$$,1%",
+"+.><<>><###########<--@>><<@.,,%",
+"$$><<><<   #######>---@<><<>$+&,",
+"*@<<<<<<    ##   @---* <<<<<@$&,",
+".@<<<<<   $-.###@---*  <<<<<@*&&",
+"*@<<><   @---##@---*    <><<@$&&",
+".><<><   $--- @---*###  <><<>$&&",
+".><<<<   $---*---*####  <<<<>*&&",
+".@<<<<  #@------.###### <<<<@.&&",
+"*@< <   #>-----*#######  < <;;&&",
+";$<    ##<----*########    <$X&,",
+"O*>  < ###;--*######### < <>*1&1",
+"%.;<    ###  #########    <;.,,1",
+"%:*>    ##############   <>*O,1%",
+"%X.$>   ##############   >$.,11%",
+"%Xo.;<   ############   <;.%1XX%",
+"%%XO.$>   ##########   >$.o%OX%%",
+"%%%oO.$@<  ########  <@$.:oOXX%%",
+"%%oXoo$$$@><      <>@$*;+:OoX%%%",
+"%%%%XoO+$$$$$$$$$$$$$$+++OoX%%%%",
+"%%%%%XoO:++;;;;;;;;++++:OoX%%%%%",
+"%%%%%%XXoO::++++++++::OoXX%%%%%%",
+"%%%%%%%%%XXooOOOOOOooXXX%%%%%%%%"
+};
+Fl_Pixmap hi(clear_tick_hi);
+
+/* XPM */
+static char *clear_tick_dn[] = {
+/* width height ncolors chars_per_pixel */
+"32 32 20 1",
+/* colors */
+"  c #AFAFAF",
+". c #A4CBBE",
+"X c #8EBBAB",
+"o c #8AAEA3",
+"O c #8D908F",
+"+ c #ADD9C8",
+"@ c #606B6C",
+"# c #BEBEBE",
+"$ c #AAAAAA",
+"% c #788E86",
+"& c #A4A4A4",
+"* c #BBE3D1",
+"= c #9A9C9D",
+"- c #95C0B2",
+"; c #727D7C",
+": c #E6F7F1",
+"> c #414C66",
+", c #95CFBA",
+"< c #81A099",
+"1 c #B5B5B5",
+/* pixels */
+"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$",
+"$$$$$$$$$$&=OO%;;OOO=$$$$$$$$$$$",
+"$$$$$$$$=;@@;;;;;;;@@OO&$$$$$$$$",
+"$$$$$$=@@%<oooooooo<%@@O=$$$$$$$",
+"$$$$$;@%oooo*:::::+XXo%@%=&$$$$$",
+"$$$$;@oooo.::::::::*---o@%&&$$$$",
+"$$$@;oooo.:::::::::::-X-o;%&$$$$",
+"$$%;ooooo::::::::::::*o--o@O$ $$",
+"$&@ooooo+:::::::::::::.X--<@  $$",
+"$@%ooXoo*:::::::::::*=.oX-X%%1 $",
+"=@oooXX-+**********->><XX--o@ 1$",
+"%%ooXXX-..++++++++o>>><XXX-X%=# ",
+"@<oXXX--..+++++++o>>>;.-XX--<;#1",
+"@<o-XX-...;>@+++o>>>;..,XX--<;##",
+"@o,-XX...<>>>++<>>>;++..-X-,o%##",
+"@o,-X-...%>>>.<>>>@+++..XX-,o%##",
+"@o,,--.++%>>>;>>>@+*+++.,-,,o;##",
+"@o,,,,.++<>>>>>>@+***++.,,,,o@##",
+";<,,,,.++o>>>>>@*****++.,,,,<=#1",
+"O%X,,,.++->>>>@*******+.,,,X% #1",
+"&;o,,,.++*%>>;********+.,,,o;## ",
+"$@<,,,,++**..*********+,,,-<@#1 ",
+"$&@X,,,++************++,,,o@## $",
+"$$@%X,,,+************+,,,X%;#1 $",
+"$$$@<-,,,+**********+,,,X<@#1$$$",
+"$$$$@%X,,,++++***++++,,o%;#1$$$$",
+"$$$$$@%o-,+++++*++++,-<%;#1$$$$$",
+"$$$$$ O;%<o,,,,.,,,o<%;&# $$$$$$",
+"$$$$$$$$OO%%%%%%%%%%O=11$$$$$$$$",
+"$$$$$$$$$$ $$ 11111#1 $$$$$$$$$$",
+"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$",
+"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
+};
+Fl_Pixmap dn(clear_tick_dn);
+
+/* XPM */
+static char *clear_tick_up_focus[] = {
+/* width height ncolors chars_per_pixel */
+"32 32 69 1",
+/* colors */
+"  c #ADB5AD",
+". c #ADADAD",
+"X c #A5B5A5",
+"o c #A5ADA5",
+"O c #A5A5A5",
+"+ c #ADC6BD",
+"@ c #738C94",
+"# c #737373",
+"$ c #9CADA5",
+"% c #9CA5A5",
+"& c #CEDED6",
+"* c #C6DECE",
+"= c #C6D6CE",
+"- c #B5CEBD",
+"; c #B5C6BD",
+": c #ADC6B5",
+"> c #949C9C",
+", c #5A6363",
+"< c #8C9C94",
+"1 c #8C9494",
+"2 c #B5CEC6",
+"3 c #CEDECE",
+"4 c #C6DEC6",
+"5 c #C6D6C6",
+"6 c #C6CEC6",
+"7 c #BDCEBD",
+"8 c #BDC6BD",
+"9 c #9C9C9C",
+"0 c #949C94",
+"q c #BDD6C6",
+"w c #BDCEC6",
+"e c #A5BDB5",
+"r c #BDC6C6",
+"t c #A5B5B5",
+"y c #8C8C8C",
+"u c #E7F7EF",
+"i c #E7EFEF",
+"p c #D6EFDE",
+"a c #D6E7DE",
+"s c #CEE7D6",
+"d c #C6E7CE",
+"f c #B5BDBD",
+"g c #7B8484",
+"h c #ADBDB5",
+"j c #ADB5B5",
+"k c #A5BDAD",
+"l c #A5B5AD",
+"z c #A5ADAD",
+"x c #A5A5AD",
+"c c #E7F7E7",
+"v c #E7EFE7",
+"b c #DEF7DE",
+"n c #DEEFDE",
+"m c #94A59C",
+"M c #D6EFD6",
+"N c #D6E7D6",
+"B c #737B7B",
+"V c #9CB5AD",
+"C c #73737B",
+"Z c #9CADAD",
+"A c #849C9C",
+"S c #B5BDB5",
+"D c #6B7373",
+"F c #DEF7E7",
+"G c #94ADA5",
+"H c #B5B5B5",
+"J c #DEEFE7",
+"K c #94A5A5",
+"L c #C6DED6",
+/* pixels */
+"................................",
+".......o..%9y1gggy119O.zO.......",
+"........9g,#DB#B#B#Dg1<O........",
+"......%#,#g11111>>1g#,D>9.......",
+"....og,C>>>o=iiiii8K>>D,19%.....",
+"....g,1m$mjivvcvcii=o%$1,1OOO...",
+"...g,>K%<hvvcicvciciu$$K1Dyz....",
+"..1,1K%<%aapJFvFcvcvuw0$K1,9....",
+".%,19Gm>7&&spJbJFJFvci m$%1,HH..",
+"og#KV>>$=**NNpnbFnFnLl;0mZ>D0jHO",
+"O,yK$m%k=q*sMpppppMqA@l$K$%1,HH.",
+"yD>K>KlS-q*Mppnbpp*eGAXk%m%>DOfH",
+"Dg%Gm%lSq*sMbFnFnsq+Vl-k$m$%g1fH",
+"Dgm%mV:-q3*&pcccp*q--4w:lK$mggff",
+",yZ$ml;w*5*aFcucN*qqs*q-l%$Vy1ff",
+",yZ$Kl;q*q*pcccJs=qNMsq-k%$Vy1fr",
+",1$l$e;q3q*pvFnad=spMsq-h$lZygff",
+",1ZZV -q*5=Nnnss3snpss=-hlVZ1Dff",
+"DgZVll;5*42&Ns&NbJbppd=-ellZg>ff",
+"gDmZll;q*4+q**snFbpps*5;elV%DzfH",
+"z,1$Vl+6=*-+23pbppMss*wStlV1,.f.",
+".#gZllh+=*&**MpMpNs3s=-helmg#HH.",
+".O,>Zle;w=3sssssssss==;htV1,zH..",
+"..DD>llhrq=3&s&ss&&3qwhel>#DHH..",
+"..z,gKlkhwwq=3*3**=wwhelKg#.....",
+".OxoD#>Zl+8wwwwwwwww;ll1#BzoOOzO",
+"...zODDg%Z+8wwwwww8fV$gCDOxox...",
+"....Oz1DCg1$ZkltlV$1gBD19%Ox....",
+".....OO91gg#CB#B#BDBg19%9%O.....",
+"......OzO9%0A0A><><9999%Ox.o....",
+".......xOz%O9%9%9%99%Oox........",
+"..........oxoxoxoxoxox.........."
+};
+Fl_Pixmap up_focus(clear_tick_up_focus);
+
+/* XPM */
+static char *clear_tick_dn_focus[] = {
+/* width height ncolors chars_per_pixel */
+"32 32 94 2",
+/* colors */
+"   c #ADB5AD",
+" . c #636B6B",
+" X c #ADADAD",
+" o c #9CD6BD",
+" O c #9CCEBD",
+" + c #A5ADA5",
+" @ c #A5A5A5",
+" # c #9CA59C",
+" $ c #ADD6BD",
+" % c #ADCEBD",
+" & c #A5CEB5",
+" * c #A5C6B5",
+" = c #B5DECE",
+" - c #ADDEC6",
+" ; c #849C94",
+" : c #9CA5A5",
+" > c #ADD6C6",
+" , c #ADCEC6",
+" < c #C6DECE",
+" 1 c #9CCEB5",
+" 2 c #9CC6B5",
+" 3 c #94C6AD",
+" 4 c #B5CEBD",
+" 5 c #BDDECE",
+" 6 c #949C9C",
+" 7 c #B5DEC6",
+" 8 c #8C9C94",
+" 9 c #B5D6C6",
+" 0 c #8C9494",
+" q c #849C8C",
+" w c #84948C",
+" e c #848C8C",
+" r c #73847B",
+" t c #BDC6BD",
+" y c #CEF7DE",
+" u c #CEEFDE",
+" i c #84A59C",
+" p c #C6EFD6",
+" a c #C6E7D6",
+" s c #7B948C",
+" d c #9C9C9C",
+" f c #BDDEC6",
+" g c #949C94",
+" h c #BDD6C6",
+" j c #738C84",
+" k c #949494",
+" l c #738484",
+" z c #A5BDB5",
+" x c #E7F7EF",
+" c c #BDEFD6",
+" v c #BDE7D6",
+" b c #D6F7DE",
+" n c #B5E7CE",
+" m c #D6EFDE",
+" M c #8CA59C",
+" N c #CEF7D6",
+" B c #D6E7DE",
+" V c #CEEFD6",
+" C c #84A594",
+" Z c #CEE7D6",
+" A c #C6EFCE",
+" S c #C6E7CE",
+" D c #94BDAD",
+" F c #6B7B7B",
+" G c #94B5AD",
+" H c #7B8C84",
+" J c #7B8484",
+" K c #8CB5A5",
+" L c #637373",
+" P c #D6F7E7",
+" I c #ADB5B5",
+" U c #636B73",
+" Y c #EFF7EF",
+" T c #E7F7E7",
+" R c #DEF7DE",
+" E c #A5DEBD",
+" W c #BDE7CE",
+" Q c #DEEFDE",
+" ! c #A5D6BD",
+" ~ c #D6F7D6",
+" ^ c #A5CEBD",
+" / c #D6EFD6",
+" ( c #8CA594",
+" ) c #D6E7D6",
+" _ c #9CBDAD",
+" ` c #737B7B",
+" ' c #9CB5AD",
+" ] c #BDBDBD",
+" [ c #6B7B73",
+" { c #6B7373",
+" } c #DEF7E7",
+" | c #94ADA5",
+".  c #B5B5B5",
+".. c #A5DEC6",
+/* pixels */
+" X X X X X X X X X X       I  .    I     X X X X X X X X X X X X",
+" X X X X X X X X     X + # # ( w w # d 6 :     X X X X X X X X X",
+" X X X X X X X   : e r j 8 8 8 ( 8 8 q l r 6 6 + X X X X X X X X",
+" X X X X X X : F r ( | 2 * * & & & * * D M r F g : X X X X X X X",
+" X X X X X J [ ; D & ^ $ p } } } } } W ! & _ C F q : @ X X X X X",
+" X + X X r [ D O ^ ^ 7 } } b P b P R } p.. ^ ^ G [ s + @ X + X X",
+" X X X L J G O ^ 2 7 b P R b b b b b } } } $ 1 ^ G H s @ X X X X",
+" X X s l G 2 ^ 2 ^ u b b b b b b b b b P } p * ^ 1 G { k X X X X",
+" X @ . K 2 1 2 * 7 p m b y b b b b b b b b } 7 1 ^ 2 i L.  X X X",
+" X L s 3 O 2 _ & W p N V ~ b b b b b N V p 4 7 2 2 1 2 s H.  X X",
+" # . K 2 2 1 & > A p V N b b b R b b y A z | * ^ 1 O 2 K L  .  X",
+" s s K 2 2 1 ^ > W p N b b R R R R b V 9 * ' & ^ & 2 1 D s # ] X",
+" . i 2 3 2 1 $ 9 W p V b } } } T } R S 9 4 4 W > & 2 2 2 i l ]. ",
+" U i 2 2 2 2 $ 5 S V S ) R T T T } ) < h f S W - 1 2 2 2 i ` ] ]",
+" . K o 2 2 & 7 W a S Z m } x T x Q Z Z Z N V W = ! 2 2 o K s ] ]",
+" . K o 2 2 ^ = W a < Z Q } Y T } m Z / b b V W = & 2 2 o K s ] ]",
+" . K o o 1 ^ 7 W p f < Z R T Q ) Z m R } m V p =.. ^ o O K ` ] ]",
+" . K O o o.. 9 v p < h Z B ) Z Z Q } } b b p W 7 ! o o O K . t ]",
+" ` i o o o ! 7 W p 5 h < Z Z V Q T T } b b p W 7.. o o o i d ]. ",
+" 0 s D o o ! > W a W % 5 < < m } } } R b y V W 9 E o o D s   ]. ",
+" @ ` K O o o > n W V 4 % h S R R b b m V p p W > ! o o K ` ] ] X",
+" X . i o O o o = 5 p p S p / u b u V N p p a = ! o o 2 i . ].  X",
+" X @ . D o o o = = p p p V V u N u V V p p W = o o o K L ] ] X X",
+" X X . s D o o o = v p p p p p V p p p a p = o o o D s r ].  X X",
+" X X X . i 2 o o o = v a p a p a p a c a = o o o D i . t.  X X X",
+" X X X X . s D O o o 7 = = = W v W = 7 7 = o O K s ` ].  X X X X",
+" X X X X X . s K 2 o = = = = = v = = = = o 2 i s ` ].  X X X X X",
+" X X X X X   k r s i K o o o o , o o o K i s r @ ] X X X X X X X",
+" X X X X X X X X 0 k s s s s s s s s s s k d. .  X X X X X X X X",
+" X X X X X X X X X +   X X. . . . . .  t.  I X X + X X X X X X X",
+" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X",
+" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X"
+};
+Fl_Pixmap dn_focus(clear_tick_dn_focus);
+
+#define clear_tick_mask_width 32
+#define clear_tick_mask_height 32
+static char clear_tick_mask_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0xfd,0xaf,0x00,0x00,0x55,0x55,0x00,0x40,0xab,0x6a,
+ 0x01,0x40,0x0a,0x48,0x01,0xb0,0xa8,0x92,0x01,0x28,0x01,0x20,0x05,0x98,0x54,
+ 0x55,0x0a,0x92,0x82,0x80,0x2a,0x26,0x18,0x25,0x14,0x4a,0x42,0x70,0x12,0x4a,
+ 0x20,0x78,0x17,0x4a,0x49,0x5a,0x12,0x11,0x1a,0x97,0x34,0x23,0x1c,0x0f,0x25,
+ 0xab,0x9d,0x47,0x36,0x25,0xbd,0xa1,0x24,0x49,0x6a,0x05,0x29,0x92,0xfc,0xa0,
+ 0x22,0x05,0x7c,0x0a,0x10,0xaa,0x18,0x40,0x15,0x42,0x82,0x24,0x28,0x0a,0x12,
+ 0x80,0x08,0x94,0x44,0x95,0x0a,0x54,0x10,0x20,0x0a,0xb0,0x4a,0xca,0x02,0x40,
+ 0x81,0x40,0x01,0x80,0x2a,0xaa,0x02,0x80,0xfa,0xab,0x02,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
+Fl_Bitmap up_inactive(clear_tick_mask_bits, clear_tick_mask_width, clear_tick_mask_height);
+#define dn_inactive up_inactive
+
+Fl_Multi_Image multiimage(up,
+			 FL_HIGHLIGHT, hi,
+  			 FL_SELECTED, up_focus,
+  			 FL_SELECTED|FL_HIGHLIGHT, dn_focus,
+			 FL_VALUE, dn,
+			 FL_INACTIVE, up_inactive,
+			 FL_INACTIVE|FL_VALUE, dn_inactive);
+
+// end of Fl_MultiImage test
+
+

Added: branches/branch-3.0-2011/test2/Makefile
===================================================================
--- branches/branch-3.0-2011/test2/Makefile	                        (rev 0)
+++ branches/branch-3.0-2011/test2/Makefile	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,308 @@
+#
+# "$Id: Makefile 6793 2009-06-22 18:01:01Z yuri $"
+#
+# Test/example program makefile for the Fast Light Tool Kit (FLTK).
+#
+# Copyright 1998-2003 by Bill Spitzak and others.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA.
+#
+# Please report all bugs and problems to "fltk-bugs@fltk.org".
+#
+
+#
+# Include common definitions...
+#
+
+include ../makeinclude
+
+
+#
+# FLUID file rules...
+#
+
+.fl.cxx .fl.h:
+	../fluid/fluid2$(EXEEXT) -c $<
+
+
+#
+# Files for this directory...
+#
+
+CPPFILES = \
+	CubeMain.cxx \
+	CubeView.cxx \
+	ansiwidget.cxx \
+	arc.cxx \
+	ask.cxx \
+	bitmap.cxx \
+	boxtype.cxx \
+	browser.cxx \
+	button.cxx \
+	buttons.cxx \
+	cairo.cxx \
+	callbacks.cxx \
+	checkers.cxx \
+	clock.cxx \
+	color_chooser.cxx \
+	cube.cxx \
+	cursor.cxx \
+	curve.cxx \
+	demo.cxx \
+	doublebuffer.cxx \
+	drawing.cxx \
+	drawtiming.cxx \
+	editor.cxx \
+	file_chooser.cxx \
+	fonts.cxx \
+	fullscreen.cxx \
+	glpuzzle.cxx \
+	gl_overlay.cxx \
+	hello.cxx \
+	helloask.cxx \
+	iconize.cxx \
+	image.cxx \
+	image_transform.cxx \
+	input.cxx \
+	keyboard.cxx \
+	label.cxx \
+	list_visuals.cxx \
+	mandelbrot.cxx \
+	menu.cxx \
+	message.cxx \
+	monitors.cxx \
+	navigation.cxx \
+	output.cxx \
+	overlay.cxx \
+	pixmap.cxx \
+	pixmap_browser.cxx \
+	radio.cxx \
+	resizable.cxx \
+	resizealign.cxx \
+	scroll.cxx \
+	shape.cxx \
+	subwindow.cxx \
+	symbols.cxx \
+	tabs.cxx \
+	tile.cxx \
+	timer.cxx \
+	fast_slow.cxx \
+	resize.cxx \
+	pack.cxx \
+	inactive.cxx \
+	sizes.cxx \
+	image_file.cxx \
+	progress.cxx \
+	layout.cxx \
+	threads.cxx \
+	menubar.cxx \
+	line_style.cxx \
+	utf.cxx \
+	valuators.cxx \
+	wizard.cxx
+
+CFILES	=
+
+# only some of the demos have been changed to use namespaces:
+TARGETS = \
+	arc$(EXEEXT) \
+        ansiwidget$(EXEEXT) \
+	bitmap$(EXEEXT) \
+	boxtype$(EXEEXT) \
+	browser$(EXEEXT) \
+	cairo$(EXEEXT) \
+	callbacks$(EXEEXT) \
+	checkers$(EXEEXT) \
+	clock$(EXEEXT) \
+	button$(EXEEXT) \
+	buttons$(EXEEXT) \
+	color_chooser$(EXEEXT) \
+	cube$(EXEEXT) \
+	CubeView$(EXEEXT) \
+	cursor$(EXEEXT) \
+	curve$(EXEEXT) \
+	demo$(EXEEXT) \
+	doublebuffer$(EXEEXT) \
+	drawing$(EXEEXT) \
+	drawtiming$(EXEEXT) \
+	editor$(EXEEXT) \
+	exception$(EXEEXT) \
+	file_chooser$(EXEEXT) \
+	fonts$(EXEEXT) \
+	fractals$(EXEEXT) \
+	glpuzzle$(EXEEXT) \
+	gl_overlay$(EXEEXT) \
+	hello$(EXEEXT) \
+	image$(EXEEXT) \
+	image_transform$(EXEEXT) \
+	inactive$(EXEEXT) \
+	input$(EXEEXT) \
+	keyboard$(EXEEXT) \
+	label$(EXEEXT) \
+	line_style$(EXEEXT) \
+	list_visuals$(EXEEXT) \
+	mandelbrot$(EXEEXT) \
+	menu$(EXEEXT) \
+	message$(EXEEXT) \
+	monitors$(EXEEXT) \
+	navigation$(EXEEXT) \
+	output$(EXEEXT) \
+	pack$(EXEEXT) \
+	pixmap$(EXEEXT) \
+	progress$(EXEEXT) \
+	radio$(EXEEXT) \
+	qubix$(EXEEXT) \
+	resizable$(EXEEXT) \
+	resizealign$(EXEEXT) \
+	scroll$(EXEEXT) \
+	shape$(EXEEXT) \
+	sizes$(EXEEXT) \
+	subwindow$(EXEEXT) \
+	symbols$(EXEEXT) \
+	threads$(EXEEXT) \
+	tabs$(EXEEXT) \
+	tile$(EXEEXT) \
+	timer$(EXEEXT) \
+	utf$(EXEEXT) \
+	fullscreen$(EXEEXT) \
+	valuators$(EXEEXT) \
+	list$(EXEEXT) \
+	wizard$(EXEEXT)
+
+#
+# Make everything...
+#
+
+all:	$(TARGETS)
+
+
+#
+# Clean old files...
+#
+
+clean:
+	$(RM) *.bck
+	$(RM) *.o
+	$(RM) core*
+	$(RM) $(TARGETS)
+
+
+#
+# Make dependencies, excluding standard include directories...
+#
+
+depend:
+	$(MAKEDEPEND) -I.. $(CPPFILES) $(CFILES) > makedepend
+
+
+#
+# Include automatically generated dependencies...
+#
+
+makedepend:
+	touch makedepend
+include makedepend
+
+
+#
+# All demo programs depend on the static library.
+#
+
+$(TARGETS):	../lib/$(LIBPREFIX)fltk2$(LIBSUFFIX)
+
+
+#
+# Other programs needing special "help"...
+#
+
+button$(EXEEXT): button.o
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKIMG) $(LDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+cairo$(EXEEXT): cairo.o
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTK) $(LDLIBS) -o $@
+
+CubeView$(EXEEXT): CubeMain.o CubeView.o CubeViewUI.o ../lib/$(LIBPREFIX)fltk2_gl$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) CubeMain.o CubeView.o CubeViewUI.o \
+		$(LINKFLTKGL) $(GLDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+cube$(EXEEXT): cube.o ../lib/$(LIBPREFIX)fltk2_gl$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKGL) $(GLDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+cursor$(EXEEXT): cursor.o
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKIMG) $(LDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+fullscreen$(EXEEXT): fullscreen.o ../lib/$(LIBPREFIX)fltk2_gl$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKGL) $(GLDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+fractals$(EXEEXT): fractals.o fracviewer.o ../lib/$(LIBPREFIX)fltk2_glut$(LIBSUFFIX)  ../lib/$(LIBPREFIX)fltk2_gl$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) fractals.o fracviewer.o ../lib/$(LIBPREFIX)fltk2_glut$(LIBSUFFIX) $(LINKFLTKGL) $(GLDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+glpuzzle$(EXEEXT): glpuzzle.o ../lib/$(LIBPREFIX)fltk2_glut$(LIBSUFFIX)  ../lib/$(LIBPREFIX)fltk2_gl$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) glpuzzle.o ../lib/$(LIBPREFIX)fltk2_glut$(LIBSUFFIX) $(LINKFLTKGL) $(GLDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+gl_overlay$(EXEEXT): gl_overlay.o ../lib/$(LIBPREFIX)fltk2_gl$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKGL) $(GLDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+mandelbrot$(EXEEXT): mandelbrot.o mandelbrot_ui.o
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) mandelbrot.o mandelbrot_ui.o $(LINKFLTK) $(LDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+shape$(EXEEXT): shape.o ../lib/$(LIBPREFIX)fltk2_gl$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKGL) $(GLDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+file_chooser$(EXEEXT): file_chooser.o ../lib/$(LIBPREFIX)fltk2_images$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKIMG) $(LDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+image_file$(EXEEXT): image_file.o ../lib/$(LIBPREFIX)fltk2_images$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKIMG) $(LDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+help$(EXEEXT): help.o ../lib/$(LIBPREFIX)fltk2_images$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKIMG) $(LDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+
+install:
+uninstall:
+
+
+#
+# End of "$Id: Makefile 6793 2009-06-22 18:01:01Z yuri $".
+#
+# DO NOT DELETE

Added: branches/branch-3.0-2011/test2/Makefile~
===================================================================
--- branches/branch-3.0-2011/test2/Makefile~	                        (rev 0)
+++ branches/branch-3.0-2011/test2/Makefile~	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,308 @@
+#
+# "$Id: Makefile 6793 2009-06-22 18:01:01Z yuri $"
+#
+# Test/example program makefile for the Fast Light Tool Kit (FLTK).
+#
+# Copyright 1998-2003 by Bill Spitzak and others.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA.
+#
+# Please report all bugs and problems to "fltk-bugs@fltk.org".
+#
+
+#
+# Include common definitions...
+#
+
+include ../makeinclude
+
+
+#
+# FLUID file rules...
+#
+
+.fl.cxx .fl.h:
+	../fluid/fluid2$(EXEEXT) -c $<
+
+
+#
+# Files for this directory...
+#
+
+CPPFILES = \
+	CubeMain.cxx \
+	CubeView.cxx \
+	ansiwidget.cxx \
+	arc.cxx \
+	ask.cxx \
+	bitmap.cxx \
+	boxtype.cxx \
+	browser.cxx \
+	button.cxx \
+	buttons.cxx \
+	cairo.cxx \
+	callbacks.cxx \
+	checkers.cxx \
+	clock.cxx \
+	color_chooser.cxx \
+	cube.cxx \
+	cursor.cxx \
+	curve.cxx \
+	demo.cxx \
+	doublebuffer.cxx \
+	drawing.cxx \
+	drawtiming.cxx \
+	editor.cxx \
+	file_chooser.cxx \
+	fonts.cxx \
+	fullscreen.cxx \
+	glpuzzle.cxx \
+	gl_overlay.cxx \
+	hello.cxx \
+	helloask.cxx \
+	iconize.cxx \
+	image.cxx \
+	image_transform.cxx \
+	input.cxx \
+	keyboard.cxx \
+	label.cxx \
+	list_visuals.cxx \
+	mandelbrot.cxx \
+	menu.cxx \
+	message.cxx \
+	monitors.cxx \
+	navigation.cxx \
+	output.cxx \
+	overlay.cxx \
+	pixmap.cxx \
+	pixmap_browser.cxx \
+	radio.cxx \
+	resizable.cxx \
+	resizealign.cxx \
+	scroll.cxx \
+	shape.cxx \
+	subwindow.cxx \
+	symbols.cxx \
+	tabs.cxx \
+	tile.cxx \
+	timer.cxx \
+	fast_slow.cxx \
+	resize.cxx \
+	pack.cxx \
+	inactive.cxx \
+	sizes.cxx \
+	image_file.cxx \
+	progress.cxx \
+	layout.cxx \
+	threads.cxx \
+	menubar.cxx \
+	line_style.cxx \
+	utf.cxx \
+	valuators.cxx \
+	wizard.cxx
+
+CFILES	=
+
+# only some of the demos have been changed to use namespaces:
+TARGETS = \
+	arc$(EXEEXT) \
+        ansiwidget$(EXEEXT) \
+	bitmap$(EXEEXT) \
+	boxtype$(EXEEXT) \
+	browser$(EXEEXT) \
+	cairo$(EXEEXT) \
+	callbacks$(EXEEXT) \
+	checkers$(EXEEXT) \
+	clock$(EXEEXT) \
+	button$(EXEEXT) \
+	buttons$(EXEEXT) \
+	color_chooser$(EXEEXT) \
+	cube$(EXEEXT) \
+	CubeView$(EXEEXT) \
+	cursor$(EXEEXT) \
+	curve$(EXEEXT) \
+	demo$(EXEEXT) \
+	doublebuffer$(EXEEXT) \
+	drawing$(EXEEXT) \
+	drawtiming$(EXEEXT) \
+	editor$(EXEEXT) \
+	exception$(EXEEXT) \
+	file_chooser$(EXEEXT) \
+	fonts$(EXEEXT) \
+	fractals$(EXEEXT) \
+	glpuzzle$(EXEEXT) \
+	gl_overlay$(EXEEXT) \
+	hello$(EXEEXT) \
+	image$(EXEEXT) \
+	image_transform$(EXEEXT) \
+	inactive$(EXEEXT) \
+	input$(EXEEXT) \
+	keyboard$(EXEEXT) \
+	label$(EXEEXT) \
+	line_style$(EXEEXT) \
+	list_visuals$(EXEEXT) \
+	mandelbrot$(EXEEXT) \
+	menu$(EXEEXT) \
+	message$(EXEEXT) \
+	monitors$(EXEEXT) \
+	navigation$(EXEEXT) \
+	output$(EXEEXT) \
+	pack$(EXEEXT) \
+	pixmap$(EXEEXT) \
+	progress$(EXEEXT) \
+	radio$(EXEEXT) \
+	qubix$(EXEEXT) \
+	resizable$(EXEEXT) \
+	resizealign$(EXEEXT) \
+	scroll$(EXEEXT) \
+	shape$(EXEEXT) \
+	sizes$(EXEEXT) \
+	subwindow$(EXEEXT) \
+	symbols$(EXEEXT) \
+	threads$(EXEEXT) \
+	tabs$(EXEEXT) \
+	tile$(EXEEXT) \
+	timer$(EXEEXT) \
+	utf$(EXEEXT) \
+	fullscreen$(EXEEXT) \
+	valuators$(EXEEXT) \
+	list$(EXEEXT) \
+	wizard$(EXEEXT)
+
+#
+# Make everything...
+#
+
+all:	$(TARGETS)
+
+
+#
+# Clean old files...
+#
+
+clean:
+	$(RM) *.bck
+	$(RM) *.o
+	$(RM) core*
+	$(RM) $(TARGETS)
+
+
+#
+# Make dependencies, excluding standard include directories...
+#
+
+depend:
+	$(MAKEDEPEND) -I.. $(CPPFILES) $(CFILES) > makedepend
+
+
+#
+# Include automatically generated dependencies...
+#
+
+makedepend:
+	touch makedepend
+include makedepend
+
+
+#
+# All demo programs depend on the static library.
+#
+
+$(TARGETS):	../lib/$(LIBPREFIX)fltk2$(LIBSUFFIX)
+
+
+#
+# Other programs needing special "help"...
+#
+
+button$(EXEEXT): button.o
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKIMG) $(LDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+cairo$(EXEEXT): cairo.o
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTK) $(LDLIBS) -o $@
+
+CubeView$(EXEEXT): CubeMain.o CubeView.o CubeViewUI.o ../lib/$(LIBPREFIX)fltk2_gl$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) CubeMain.o CubeView.o CubeViewUI.o \
+		$(LINKFLTKGL) $(GLDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+cube$(EXEEXT): cube.o ../lib/$(LIBPREFIX)fltk2_gl$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKGL) $(GLDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+cursor$(EXEEXT): cursor.o
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKIMG) $(LDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+fullscreen$(EXEEXT): fullscreen.o ../lib/$(LIBPREFIX)fltk2_gl$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKGL) $(GLDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+fractals$(EXEEXT): fractals.o fracviewer.o ../lib/$(LIBPREFIX)fltk2_glut$(LIBSUFFIX)  ../lib/$(LIBPREFIX)fltk2_gl$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) fractals.o fracviewer.o ../lib/$(LIBPREFIX)fltk2_glut$(LIBSUFFIX) $(LINKFLTKGL) $(GLDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+glpuzzle$(EXEEXT): glpuzzle.o ../lib/$(LIBPREFIX)fltk2_glut$(LIBSUFFIX)  ../lib/$(LIBPREFIX)fltk2_gl$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) glpuzzle.o ../lib/$(LIBPREFIX)fltk2_glut$(LIBSUFFIX) $(LINKFLTKGL) $(GLDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+gl_overlay$(EXEEXT): gl_overlay.o ../lib/$(LIBPREFIX)fltk2_gl$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKGL) $(GLDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+mandelbrot$(EXEEXT): mandelbrot.o mandelbrot_ui.o
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) mandelbrot.o mandelbrot_ui.o $(LINKFLTK) $(LDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+shape$(EXEEXT): shape.o ../lib/$(LIBPREFIX)fltk2_gl$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKGL) $(GLDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+file_chooser$(EXEEXT): file_chooser.o ../lib/$(LIBPREFIX)fltk2_images$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKIMG) $(LDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+image_file$(EXEEXT): image_file.o ../lib/$(LIBPREFIX)fltk2_images$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKIMG) $(LDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+help$(EXEEXT): help.o ../lib/$(LIBPREFIX)fltk2_images$(LIBSUFFIX)
+	echo Linking $@...
+	$(CXX) -I.. $(CXXFLAGS) $< $(LINKFLTKIMG) $(LDLIBS) -o $@
+	$(POSTBUILD) $@ ../fltk/mac.r
+
+
+install:
+uninstall:
+
+
+#
+# End of "$Id: Makefile 6793 2009-06-22 18:01:01Z yuri $".
+#
+# DO NOT DELETE

Added: branches/branch-3.0-2011/test2/README
===================================================================
--- branches/branch-3.0-2011/test2/README	                        (rev 0)
+++ branches/branch-3.0-2011/test2/README	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,28 @@
+test/README - 20 Oct 1998
+-------------------------
+
+This directory contains tests and demos of FLTK.  In most cases you can
+learn a lot about how to program FLTK by looking at the source code.
+
+Type "make" to compile them all.
+
+The program "demo" is a graphical interface to run all the demos. (you
+may recognize this as a rewrite of an XForms program).
+
+Some of the more interesting programs:
+
+fractals:	A GLUT program with FLTK controls added to it
+
+glpuzzle:	A GLUT program with no modifications
+
+fullscreen:	Demo of how to make your window toggle to fill screen
+
+list_visuals:	necessary to debug X visual stuff
+
+mandelbrot:	A true application, using panels built in Fluid
+
+menubar:	Demo of how FLTK's menus work
+
+forms:		An XForms program to demonstrate emulation
+
+colbrowser:	Another XForms program that is actually useful

Added: branches/branch-3.0-2011/test2/adjuster.cxx
===================================================================
--- branches/branch-3.0-2011/test2/adjuster.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/adjuster.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,67 @@
+//
+// "$Id: adjuster.cxx 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Adjuster test program 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".
+//
+
+#include <stdlib.h>
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Adjuster.h>
+#include <fltk/Box.h>
+#include <fltk/Rectangle.h>
+
+using namespace fltk;
+
+void adjcb(Widget *o, void *v) {
+  Adjuster *a = (Adjuster*)o;
+  Box *b = (Box *)v;
+  a->format((char *)(b->text()));
+  a->redraw();
+}
+
+int main(int, char ** argv) {
+   Window window(320,100,argv[0]);
+
+   char buf1[100];
+   FrameBox b1(fltk::DOWN_BOX,20,30,80,25,buf1);
+   b1.color(fltk::WHITE);
+   Adjuster a1(20+80,30,3*25,25);
+   a1.callback(adjcb,&b1);
+   adjcb(&a1,&b1);
+
+   char buf2[100];
+   FrameBox b2(fltk::DOWN_BOX,20+80+4*25,30,80,25,buf2);
+   b2.color(fltk::WHITE);
+   Adjuster a2(b2.dx()+b2.dw(),10,25,3*25);
+   a2.callback(adjcb,&b2);
+   adjcb(&a2,&b2);
+
+   window.resizable(window);
+   window.end();
+   window.show();
+   return fltk::run();
+}
+
+//
+// End of "$Id: adjuster.cxx 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/ansiwidget.cxx
===================================================================
--- branches/branch-3.0-2011/test2/ansiwidget.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/ansiwidget.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,67 @@
+//
+// "$Id: $"
+//
+// AnsiWindow test program 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".
+//
+
+#include <fltk/run.h>
+#include <fltk/Button.h>
+#include <fltk/Window.h>
+#include <fltk/AnsiWidget.h>
+
+void more_cb(Widget*, void* p) {
+  AnsiWidget* out = (AnsiWidget*)p;
+  for (int i=0; i<10; i++) {
+    out->print("\033[3mitalic\033[23moff\033[4munderline\033[24moff");
+    out->print("\033[7minverse\033[27moff");
+    out->print("\033[1mbold\033[21moff");
+  }
+}
+
+int main(int argc, char **argv) {
+  int w = 210; // must be > 104
+  int h = 200;
+  Window window(w, h);
+  window.begin();
+
+  AnsiWidget out(0, 22, w, h, 11);
+  window.resizable(&out);
+
+  Button* b = new Button(0, 0, 40, 20, "Print");
+  b->callback(more_cb);
+  b->user_data(&out);
+
+  window.end();
+  window.show(argc,argv);
+
+#if USE_X11
+  while (!ready()) {
+    flush();
+    check();
+  }
+#else
+  check();
+#endif
+
+  return run();
+}
+

Added: branches/branch-3.0-2011/test2/arc.cxx
===================================================================
--- branches/branch-3.0-2011/test2/arc.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/arc.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,115 @@
+//
+// "$Id: arc.cxx 5247 2006-06-27 13:17:33Z fabien $"
+//
+// Arc drawing test program 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".
+//
+
+#include <config.h> // for  USE_CAIRO definition
+
+#include <fltk/x.h>
+
+#include <fltk/run.h>
+#include <fltk/DoubleBufferWindow.h>
+#include <fltk/ValueSlider.h>
+#include <fltk/draw.h>
+
+float dargs[7] = {90, 90, 100, 100, 0, 360, 0};
+const char* name[7] = {"X", "Y", "W", "H", "start", "end", "rotate"};
+
+using namespace fltk;
+
+class Drawing : public Widget {
+  void draw() {
+    push_clip(0,0, w(), h());
+    setcolor_alpha(BLUE,0.6);
+    fillrect(0,0,w(), h());
+    push_matrix();
+    //    if (dargs[6]) {
+      translate(w()/2.0f, h()/2.0f);
+      rotate(dargs[6]);
+      translate(-w()/2.0f, -h()/2.0f);
+      //}
+    addarc(dargs[0],dargs[1],dargs[2],dargs[3],dargs[4],dargs[5]);
+    closepath();
+    addarc(120,120,40,40,0,-360);
+    setcolor_alpha(GRAY33,0.6);
+    fillstrokepath(WHITE);
+    // draw a hardware circle to see how well rotations match:
+    setcolor(GRAY33);
+    fltk::Rectangle r(20,20,(int)(dargs[2]+1),(int)(dargs[3]+1));
+    addchord(r,dargs[4],dargs[5]);
+    fillstrokepath(WHITE);
+    // now draw non-rotated hardware circle to check if it inscribes:
+    pop_matrix();
+    setcolor_alpha(GRAY40,0.6);
+    r.set(10,(int) (270-dargs[3]),(int) dargs[2],(int)dargs[3]);
+    fillrect(r);
+    setcolor(GRAY90);
+    strokerect(r);
+    setcolor_alpha(RED,0.6);
+    addchord(r,dargs[4],dargs[5]);
+    fillstrokepath(GRAY90);
+    pop_clip();
+  }
+public:
+  Drawing(int X,int Y,int W,int H) : Widget(X,Y,W,H) {}
+};
+
+Drawing *d;
+
+void slider_cb(Widget* o, void* v) {
+  Slider* s = (Slider*)o;
+  dargs[long(v)] = s->value();
+  d->redraw();
+}
+
+int main(int argc, char** argv) {
+  Window window(300,500);
+  window.begin();
+  Drawing drawing(10,10,280,280);
+  d = &drawing;
+
+  int y = 300;
+  for (int n = 0; n<7; n++) {
+    Slider* s =
+      new ValueSlider(50,y,240,25,name[n]); y += 25;
+    if (n<4) {s->minimum(0); s->maximum(300);}
+    else if (n==6) {s->minimum(0); s->maximum(360);}
+    else {s->minimum(-360); s->maximum(360);}
+    s->type(Slider::TICK_ABOVE);
+    s->step(1);
+    s->value(dargs[n]);
+	s->clear_flag(ALIGN_MASK);
+    s->set_flag(ALIGN_LEFT);
+    s->callback(slider_cb, (void*)n);
+  }
+
+  window.end();
+  window.resizable(drawing);
+  window.show(argc,argv);
+  return run();
+}
+
+
+//
+// End of "$Id: arc.cxx 5247 2006-06-27 13:17:33Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/ask.cxx
===================================================================
--- branches/branch-3.0-2011/test2/ask.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/ask.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,77 @@
+//
+// "$Id: ask.cxx 4946 2006-04-13 19:26:00Z fabien $"
+//
+// Standard dialog test program for the Fast Light Tool Kit (FLTK).
+//
+// Demonstrates how to use readqueue to see if a button has been
+// pushed, and to see if a window has been closed, thus avoiding
+// the need to define callbacks.
+//
+// This also demonstrates how to trap attempts by the user to
+// close the last window by overriding Fl::exit
+//
+// 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".
+//
+
+#include <stdio.h>
+#include <string.h>
+#include <FL/Fl.H>
+#include <FL/Fl_Window.H>
+#include <FL/Fl_Input.H>
+#include <FL/Fl_Button.H>
+#include <FL/Fl_Return_Button.H>
+
+#include <FL/fl_ask.H>
+#include <stdlib.h>
+
+void rename_me(Fl_Widget*o) {
+  const char *input = fl_input("Input:", o->label());
+
+  if (input) {
+    o->label(input);
+    o->redraw();
+  }
+}
+
+void window_callback(Fl_Widget*, void*) {
+  if (!fl_ask("Are you sure you want to quit?")) return;
+  exit(0);
+}
+
+int main(int argc, char **argv) {
+  char buffer[128] = "test text";
+
+// this is a test to make sure automatic destructors work.  Pop up
+// the question dialog several times and make sure it don't crash.
+  Fl_Window window(200, 55);
+  Fl_Return_Button b(20, 10, 160, 35, buffer); b.callback(rename_me);
+  window.add(b);
+  window.resizable(&b);
+  window.show(argc, argv);
+
+// Also we test to see if the exit callback works:
+  window.callback(window_callback);
+
+  return Fl::run();
+}
+    
+//
+// End of "$Id: ask.cxx 4946 2006-04-13 19:26:00Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/bitmap.cxx
===================================================================
--- branches/branch-3.0-2011/test2/bitmap.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/bitmap.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,78 @@
+//
+// "$Id$"
+//
+// Bitmap label test program 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".
+//
+
+#include <fltk/ToggleButton.h>
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Button.h>
+#include <fltk/xbmImage.h>
+#include <stdio.h>
+#include "escherknot.xbm"
+
+using namespace fltk;
+
+ToggleButton *leftb,*rightb,*topb,*bottomb,*insideb,*inactb;
+Button *b;
+Window *win;
+
+void button_cb(Widget *,void *) {
+  int i = 0;
+  if (leftb->value()) i |= ALIGN_LEFT;
+  if (rightb->value()) i |= ALIGN_RIGHT;
+  if (topb->value()) i |= ALIGN_TOP;
+  if (bottomb->value()) i |= ALIGN_BOTTOM;
+  if (insideb->value()) i |= ALIGN_INSIDE;
+  b->align(i);
+  if (inactb->value()) b->deactivate();
+  else b->activate();
+  win->redraw();
+}
+
+int main(int argc, char **argv) {
+  win = new Window(400,400);
+  win->begin();
+  b = new Button(140,160,120,120,"Bitmap");
+  b->image(new xbmImage(escherknot_bits,escherknot_width,escherknot_height));
+  leftb = new ToggleButton(25,50,50,25,"left");
+  leftb->callback(button_cb);
+  rightb = new ToggleButton(75,50,50,25,"right");
+  rightb->callback(button_cb);
+  topb = new ToggleButton(125,50,50,25,"top");
+  topb->callback(button_cb);
+  bottomb = new ToggleButton(175,50,50,25,"bottom");
+  bottomb->callback(button_cb);
+  insideb = new ToggleButton(225,50,50,25,"inside");
+  insideb->callback(button_cb);
+  inactb = new ToggleButton(125,75,100,25,"inactive");
+  inactb->callback(button_cb);
+  win->resizable(win);
+  win->end();
+  win->show(argc, argv);
+  return fltk::run();
+}
+
+//
+// End of "$Id$"
+//

Added: branches/branch-3.0-2011/test2/black_1.xbm
===================================================================
--- branches/branch-3.0-2011/test2/black_1.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/black_1.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#define black_1_width 56
+#define black_1_height 56
+static unsigned char black_1_bits[] = {
+0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0x00, 
+0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 
+0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00, 
+0x00, 0xfc, 0xff, 0xff, 0x1f, 0x00, 0x00, 
+0x00, 0xfe, 0xff, 0xff, 0x3f, 0x00, 0x00, 
+0x80, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 
+0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 
+0xe0, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 
+0xe0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 
+0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 
+0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 
+0xfc, 0xff, 0xff, 0xff, 0xff, 0x17, 0x00, 
+0xfc, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x00, 
+0xfc, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 
+0xfe, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x00, 
+0xfe, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x00, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x01, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x02, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x01, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x02, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x01, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x02, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x05, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x02, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x05, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x02, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x05, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x02, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x05, 
+0xfe, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x02, 
+0xfe, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x05, 
+0xfe, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x02, 
+0xfc, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x05, 
+0xf8, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x02, 
+0xf8, 0xff, 0xff, 0xff, 0xff, 0x57, 0x01, 
+0xf8, 0xff, 0xff, 0xff, 0xff, 0xab, 0x02, 
+0xf0, 0xff, 0xff, 0xff, 0xff, 0x55, 0x01, 
+0xe0, 0xff, 0xff, 0xff, 0xff, 0xab, 0x00, 
+0xc0, 0xff, 0xff, 0xff, 0xff, 0x55, 0x01, 
+0x80, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x00, 
+0x00, 0xff, 0xff, 0xff, 0x5f, 0x55, 0x00, 
+0x00, 0xfe, 0xff, 0xff, 0xaf, 0x2a, 0x00, 
+0x00, 0xf4, 0xff, 0xff, 0x57, 0x15, 0x00, 
+0x00, 0xe8, 0xff, 0xff, 0xaa, 0x0a, 0x00, 
+0x00, 0x50, 0xff, 0x7f, 0x55, 0x05, 0x00, 
+0x00, 0xa0, 0xaa, 0xaa, 0xaa, 0x02, 0x00, 
+0x00, 0x40, 0x55, 0x55, 0x55, 0x01, 0x00, 
+0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 
+0x00, 0x00, 0x50, 0x55, 0x15, 0x00, 0x00, 
+0x00, 0x00, 0x80, 0xaa, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+};

Added: branches/branch-3.0-2011/test2/black_2.xbm
===================================================================
--- branches/branch-3.0-2011/test2/black_2.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/black_2.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#define black_2_width 56
+#define black_2_height 56
+static unsigned char black_2_bits[] = {
+0x00, 0x00, 0x0f, 0x3c, 0x00, 0x00, 0x00, 
+0x00, 0x40, 0x40, 0x81, 0x00, 0x00, 0x00, 
+0x00, 0x10, 0x49, 0x09, 0x02, 0x00, 0x00, 
+0x00, 0x44, 0x52, 0x49, 0x08, 0x00, 0x00, 
+0x00, 0x90, 0x52, 0x25, 0x01, 0x00, 0x00, 
+0x80, 0x94, 0x54, 0x95, 0x44, 0x00, 0x00, 
+0x40, 0x24, 0x01, 0x40, 0x92, 0x00, 0x00, 
+0x20, 0x49, 0xfc, 0x0f, 0x09, 0x01, 0x00, 
+0x00, 0x11, 0x57, 0x35, 0x64, 0x00, 0x00, 
+0x40, 0xc2, 0x00, 0xc0, 0x10, 0x00, 0x00, 
+0x88, 0x64, 0x55, 0x55, 0x89, 0x05, 0x00, 
+0x20, 0x11, 0x00, 0x08, 0x42, 0x00, 0x00, 
+0x44, 0x58, 0x55, 0x55, 0x21, 0x0b, 0x00, 
+0x90, 0x04, 0x80, 0x0a, 0x80, 0x00, 0x00, 
+0x22, 0x56, 0x55, 0x55, 0x45, 0x14, 0x00, 
+0x48, 0x02, 0xa8, 0x2a, 0x00, 0x03, 0x00, 
+0x11, 0x55, 0x55, 0x55, 0x95, 0x28, 0x00, 
+0x21, 0x81, 0xaa, 0x2a, 0x00, 0x26, 0x00, 
+0x8d, 0x55, 0x55, 0x55, 0x15, 0x21, 0x00, 
+0xb1, 0xe0, 0xaa, 0xaa, 0x00, 0x20, 0x00, 
+0x80, 0xf5, 0x55, 0x55, 0x15, 0x07, 0x00, 
+0xbe, 0xf0, 0xab, 0xaa, 0x00, 0x00, 0x00, 
+0x80, 0xf5, 0x55, 0x55, 0x15, 0x1f, 0x00, 
+0xbe, 0xe0, 0xab, 0xaa, 0x02, 0x00, 0x00, 
+0x80, 0xf5, 0x57, 0x55, 0x15, 0x1f, 0x00, 
+0xb8, 0xc0, 0xaf, 0xaa, 0x00, 0x00, 0x00, 
+0x81, 0xd5, 0x57, 0x15, 0x14, 0x23, 0x00, 
+0xa1, 0x80, 0xaf, 0x0a, 0x00, 0x2c, 0x00, 
+0x19, 0xd5, 0x5f, 0x01, 0x14, 0x21, 0x00, 
+0x45, 0x01, 0xaf, 0x00, 0x00, 0x22, 0x00, 
+0x30, 0x56, 0x1f, 0x40, 0x85, 0x04, 0x00, 
+0x8a, 0x02, 0x0e, 0x00, 0x00, 0x11, 0x00, 
+0x40, 0x54, 0x0f, 0x54, 0x45, 0x02, 0x00, 
+0x34, 0x09, 0x04, 0x00, 0x80, 0x08, 0x00, 
+0x80, 0x40, 0x45, 0x55, 0x21, 0x01, 0x00, 
+0x68, 0x04, 0x00, 0x00, 0x48, 0x04, 0x00, 
+0x00, 0x82, 0x55, 0x95, 0x90, 0x00, 0x00, 
+0x80, 0x09, 0x02, 0x20, 0x22, 0x00, 0x00, 
+0x20, 0x24, 0xa8, 0x8a, 0x24, 0x01, 0x00, 
+0x40, 0x92, 0x00, 0x20, 0x89, 0x00, 0x00, 
+0x80, 0x48, 0xaa, 0x4a, 0x4a, 0x00, 0x00, 
+0x00, 0x20, 0xa9, 0x52, 0x02, 0x00, 0x00, 
+0x00, 0x84, 0xa4, 0x92, 0x08, 0x00, 0x00, 
+0x00, 0x10, 0xa4, 0x24, 0x02, 0x00, 0x00, 
+0x00, 0x40, 0xa0, 0x80, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x0f, 0x3c, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+};

Added: branches/branch-3.0-2011/test2/black_3.xbm
===================================================================
--- branches/branch-3.0-2011/test2/black_3.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/black_3.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#define black_3_width 56
+#define black_3_height 56
+static unsigned char black_3_bits[] = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 
+0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 
+0x00, 0x20, 0x00, 0x00, 0x01, 0x00, 0x00, 
+0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x54, 0x05, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+};

Added: branches/branch-3.0-2011/test2/black_4.xbm
===================================================================
--- branches/branch-3.0-2011/test2/black_4.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/black_4.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#define black_4_width 56
+#define black_4_height 56
+static unsigned char black_4_bits[] = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+};

Added: branches/branch-3.0-2011/test2/blackking_1.xbm
===================================================================
--- branches/branch-3.0-2011/test2/blackking_1.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/blackking_1.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#define blackking_1_width 56
+#define blackking_1_height 56
+static unsigned char blackking_1_bits[] = {
+0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0x00, 
+0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 
+0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00, 
+0x00, 0xfc, 0xff, 0xff, 0x1f, 0x00, 0x00, 
+0x00, 0xfe, 0xff, 0xff, 0x3f, 0x00, 0x00, 
+0x80, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 
+0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 
+0xe0, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 
+0xe0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 
+0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 
+0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 
+0xfc, 0xff, 0xff, 0xff, 0xff, 0x17, 0x00, 
+0xfc, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x00, 
+0xfc, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 
+0xfe, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x00, 
+0xfe, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x01, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x02, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x05, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x0a, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x15, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x0a, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x15, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x2a, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x55, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x2a, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x55, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x2a, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x55, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xaa, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x55, 
+0xfe, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xaa, 
+0xfe, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x55, 
+0xfe, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xaa, 
+0xfc, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x55, 
+0xf8, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xaa, 
+0xf8, 0xff, 0xff, 0xff, 0xff, 0x57, 0x55, 
+0xf8, 0xff, 0xff, 0xff, 0xff, 0xab, 0xaa, 
+0xf0, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 
+0xe0, 0xff, 0xff, 0xff, 0xff, 0xab, 0xaa, 
+0xc0, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 
+0x80, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x2a, 
+0x00, 0xff, 0xff, 0xff, 0x5f, 0x55, 0x55, 
+0x00, 0xfe, 0xff, 0xff, 0xaf, 0xaa, 0x2a, 
+0x00, 0xf4, 0xff, 0xff, 0x57, 0x55, 0x15, 
+0x00, 0xe8, 0xff, 0xff, 0xaa, 0xaa, 0x2a, 
+0x00, 0x50, 0xff, 0x7f, 0x55, 0x55, 0x15, 
+0x00, 0xa0, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 
+0x00, 0x40, 0x55, 0x55, 0x55, 0x55, 0x05, 
+0x00, 0x80, 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 
+0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x01, 
+0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 
+0x00, 0x00, 0x54, 0x55, 0x55, 0x55, 0x00, 
+0x00, 0x00, 0xa8, 0xaa, 0xaa, 0x2a, 0x00, 
+0x00, 0x00, 0x40, 0x55, 0x55, 0x15, 0x00, 
+0x00, 0x00, 0x00, 0xaa, 0xaa, 0x02, 0x00, 
+0x00, 0x00, 0x00, 0x50, 0x15, 0x00, 0x00, 
+};

Added: branches/branch-3.0-2011/test2/blackking_2.xbm
===================================================================
--- branches/branch-3.0-2011/test2/blackking_2.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/blackking_2.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#define blackking_2_width 56
+#define blackking_2_height 56
+static unsigned char blackking_2_bits[] = {
+0x00, 0x00, 0x0f, 0x3c, 0x00, 0x00, 0x00, 
+0x00, 0x40, 0x40, 0x81, 0x00, 0x00, 0x00, 
+0x00, 0x10, 0x49, 0x09, 0x02, 0x00, 0x00, 
+0x00, 0x44, 0x52, 0x49, 0x08, 0x00, 0x00, 
+0x00, 0x90, 0x52, 0x25, 0x01, 0x00, 0x00, 
+0x80, 0x94, 0x54, 0x95, 0x44, 0x00, 0x00, 
+0x40, 0x24, 0x01, 0x40, 0x92, 0x00, 0x00, 
+0x20, 0x49, 0xfc, 0x0f, 0x09, 0x01, 0x00, 
+0x00, 0x11, 0x57, 0x35, 0x64, 0x00, 0x00, 
+0x40, 0xc2, 0x00, 0xc0, 0x10, 0x00, 0x00, 
+0x88, 0x64, 0xd5, 0x55, 0x89, 0x05, 0x00, 
+0x20, 0x11, 0xc0, 0x00, 0x42, 0x00, 0x00, 
+0x44, 0x58, 0x57, 0x74, 0x21, 0x0b, 0x00, 
+0x90, 0x04, 0x03, 0x30, 0x80, 0x00, 0x00, 
+0x22, 0x76, 0x51, 0x15, 0x47, 0x14, 0x00, 
+0x48, 0x32, 0x08, 0x02, 0x03, 0x03, 0x00, 
+0x11, 0x15, 0x5d, 0x57, 0x91, 0x28, 0x00, 
+0x21, 0x01, 0x0c, 0x03, 0x00, 0x26, 0x00, 
+0x8d, 0x55, 0xcf, 0xd3, 0x15, 0x21, 0x00, 
+0xb1, 0x18, 0x86, 0xe1, 0x00, 0x20, 0x00, 
+0x80, 0x5d, 0xd7, 0x75, 0x11, 0x07, 0x00, 
+0xbe, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x80, 0x75, 0x55, 0x55, 0x11, 0x1f, 0x00, 
+0xbe, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x80, 0x75, 0x55, 0x55, 0x10, 0x1f, 0x00, 
+0xb8, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x81, 0x75, 0x55, 0x55, 0x14, 0x23, 0x00, 
+0xa1, 0x60, 0x00, 0x00, 0x00, 0x2c, 0x00, 
+0x19, 0xd5, 0x55, 0x55, 0x14, 0x21, 0x00, 
+0x45, 0xc1, 0x00, 0x00, 0x00, 0x22, 0x00, 
+0x30, 0xd6, 0x00, 0x00, 0x85, 0x04, 0x00, 
+0x8a, 0x82, 0x00, 0x00, 0x00, 0x11, 0x00, 
+0x40, 0x54, 0x00, 0x00, 0x45, 0x02, 0x00, 
+0x34, 0x09, 0x00, 0x00, 0x80, 0x08, 0x00, 
+0x80, 0x40, 0x55, 0x55, 0x21, 0x01, 0x00, 
+0x68, 0x04, 0x00, 0x00, 0x48, 0x04, 0x00, 
+0x00, 0x82, 0x55, 0x95, 0x90, 0x00, 0x00, 
+0x80, 0x09, 0x02, 0x20, 0x22, 0x00, 0x00, 
+0x20, 0x24, 0xa8, 0x8a, 0x24, 0x01, 0x00, 
+0x40, 0x92, 0x00, 0x20, 0x89, 0x00, 0x00, 
+0x80, 0x48, 0xaa, 0x4a, 0x4a, 0x00, 0x00, 
+0x00, 0x20, 0xa9, 0x52, 0x02, 0x00, 0x00, 
+0x00, 0x84, 0xa4, 0x92, 0x08, 0x00, 0x00, 
+0x00, 0x10, 0xa4, 0x24, 0x02, 0x00, 0x00, 
+0x00, 0x40, 0xa0, 0x80, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x0f, 0x3c, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+};

Added: branches/branch-3.0-2011/test2/blackking_3.xbm
===================================================================
--- branches/branch-3.0-2011/test2/blackking_3.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/blackking_3.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#define blackking_3_width 56
+#define blackking_3_height 56
+static unsigned char blackking_3_bits[] = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 
+0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 
+0x00, 0x20, 0x00, 0x00, 0x01, 0x00, 0x00, 
+0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x54, 0x05, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+};

Added: branches/branch-3.0-2011/test2/blackking_4.xbm
===================================================================
--- branches/branch-3.0-2011/test2/blackking_4.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/blackking_4.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#define blackking_4_width 56
+#define blackking_4_height 56
+static unsigned char blackking_4_bits[] = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+};

Added: branches/branch-3.0-2011/test2/boxtype.cxx
===================================================================
--- branches/branch-3.0-2011/test2/boxtype.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/boxtype.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,101 @@
+//
+// "$Id: boxtype.cxx 5810 2007-05-11 22:44:12Z spitzak $"
+//
+// Boxtype test program for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-1999 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".
+//
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/InvisibleBox.h>
+
+int N = 0;
+#define W 150
+#define H 50
+#define ROWS 6
+
+fltk::Widget* bt(const char *name, fltk::Box* type, int square=0) {
+    int x = N%4;
+    int y = N/4;
+    N++;
+    x = x*W+10;
+    y = y*H+10;
+    fltk::Widget *b = new fltk::InvisibleBox(type,x,y,square ? H-20 : W-20,H-20,name);
+    b->labelsize(11);
+    if (square) {
+	b->clear_flag(fltk::ALIGN_MASK);
+	b->set_flag(fltk::ALIGN_RIGHT);
+    }
+    return b;
+}
+
+int main(int argc, char ** argv) {
+    fltk::Window window(4*W,ROWS*H);
+    window.color(12);// light blue
+    window.begin();
+    bt("fltk::NO_BOX",fltk::NO_BOX);
+    bt("fltk::FLAT_BOX",fltk::FLAT_BOX);
+    //  N += 2; // go to start of next row to line up boxes & frames
+    bt("fltk::UP_BOX",fltk::UP_BOX);
+    bt("fltk::DOWN_BOX",fltk::DOWN_BOX);
+    //  bt("fltk::UP_FRAME",fltk::UP_FRAME);
+    //  bt("fltk::DOWN_FRAME",fltk::DOWN_FRAME);
+    bt("fltk::THIN_UP_BOX",fltk::THIN_UP_BOX);
+    bt("fltk::THIN_DOWN_BOX",fltk::THIN_DOWN_BOX);
+    //  bt("fltk::THIN_UP_FRAME",fltk::THIN_UP_FRAME);
+    //  bt("fltk::THIN_DOWN_FRAME",fltk::THIN_DOWN_FRAME);
+    bt("fltk::ENGRAVED_BOX",fltk::ENGRAVED_BOX);
+    bt("fltk::EMBOSSED_BOX",fltk::EMBOSSED_BOX);
+    //  bt("fltk::ENGRAVED_FRAME",fltk::ENGRAVED_FRAME);
+    //  bt("fltk::EMBOSSED_FRAME",fltk::EMBOSSED_FRAME);
+    bt("fltk::ROUND_UP_BOX",fltk::ROUND_UP_BOX);
+    bt("fltk::ROUND_DOWN_BOX",fltk::ROUND_DOWN_BOX);
+    bt("fltk::DIAMOND_UP_BOX",fltk::DIAMOND_UP_BOX);
+    bt("fltk::DIAMOND_DOWN_BOX",fltk::DIAMOND_DOWN_BOX);
+    //  bt("fltk::BORDER_FRAME",fltk::BORDER_FRAME);
+    //  bt("fltk::SHADOW_FRAME",fltk::SHADOW_FRAME);
+    bt("fltk::BORDER_BOX",fltk::BORDER_BOX);
+    bt("fltk::ROUNDED_BOX",fltk::ROUNDED_BOX);
+    bt("fltk::RSHADOW_BOX",fltk::RSHADOW_BOX);
+    //  bt("fltk::ROUNDED_FRAME",fltk::ROUNDED_FRAME);
+    bt("fltk::RFLAT_BOX",fltk::RFLAT_BOX);
+    bt("fltk::SHADOW_BOX",fltk::SHADOW_BOX);
+    bt("fltk::OVAL_BOX",fltk::OVAL_BOX);
+    bt("fltk::OSHADOW_BOX",fltk::OSHADOW_BOX);
+    //  bt("fltk::OVAL_FRAME",fltk::OVAL_FRAME);
+    bt("fltk::OFLAT_BOX",fltk::OFLAT_BOX);
+    //    bt("fltk::PLASTIC_UP_BOX", fltk::PLASTIC_UP_BOX);
+    //    bt("fltk::PLASTIC_DOWN_BOX", fltk::PLASTIC_DOWN_BOX);
+    //    bt("fltk::FOCUS_FRAME", fltk::FOCUS_FRAME);
+    bt("fltk::BORDER_FRAME", fltk::BORDER_FRAME);
+    bt("fltk::PLASTIC_UP_BOX", fltk::PLASTIC_UP_BOX)->color(12);
+    bt("fltk::PLASTIC_DOWN_BOX", fltk::PLASTIC_DOWN_BOX)->color(12);
+    window.resizable(window);
+    window.end();
+    window.show(argc,argv);
+    return fltk::run();
+}
+
+//
+// End of "$Id: boxtype.cxx 5810 2007-05-11 22:44:12Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/browser.cxx
===================================================================
--- branches/branch-3.0-2011/test2/browser.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/browser.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,372 @@
+//
+// "$Id: browser.cxx 6148 2008-07-17 19:37:04Z TobiasFar $"
+//
+// browser.cxx
+// Maarten de Boer's toggle tree demo program rewritten to use the
+// fltk 2.0 browser.  This unfortunately required a bunch of changes.
+//
+// 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".
+//
+
+#include <fltk/Browser.h>
+#include <fltk/Window.h>
+#include <fltk/Button.h>
+#include <fltk/CheckButton.h>
+#include <fltk/RadioButton.h>
+#include <fltk/Input.h>
+#include <fltk/ValueSlider.h>
+#include <fltk/run.h>
+#include <fltk/events.h>
+#include <fltk/MenuBuild.h>
+#include <fltk/ask.h>
+#include <fltk/xpmImage.h>
+#include <fltk/MultiImage.h>
+
+#include <pixmaps/folder_small.xpm>
+#include <pixmaps/folder_small2.xpm>
+#include <pixmaps/folder_small3.xpm>
+#include <pixmaps/file_small.xpm>
+#include <pixmaps/file_small2.xpm>
+#include <pixmaps/book.xpm>
+#include "porsche.xpm"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+using namespace fltk;
+
+xpmImage folderSmall(folder_small);
+xpmImage folderSmall2(folder_small2);
+xpmImage folderSmall3(folder_small3);
+xpmImage fileSmall(file_small);
+xpmImage fileSmall2(file_small2);
+xpmImage bookImg(book);
+xpmImage customImage(porsche_xpm);
+
+void cb_test(Widget* browser, void*) {
+  Browser *b = (Browser*)browser;
+  Widget* w = b->item();
+  printf("Callback, b->item() = '%s'",
+	 w && w->label() ? w->label() : "null");
+  if (event_clicks()) printf(", Double Click");
+  printf("\n");
+  if (b->selected_column()!= Browser::NO_COLUMN_SELECTED )
+      fltk::message("Column %d selected\n", b->selected_column()+1);
+}
+
+void cb_remove(Widget*, void* ptr) {
+  Browser* tree = (Browser*) ptr;
+  if (tree->type() & Browser::IS_MULTI) {
+    Widget* w = tree->goto_top();
+    while (w) {
+      if (w->selected()) { // test for parent being open
+	Group* g = w->parent();
+	g->remove(w);
+	delete w;
+	g->relayout();
+	w = tree->goto_top();
+      } else {
+	w = tree->next();
+      }
+    }
+  } else {
+    Widget* w = tree->goto_focus();
+    if (w) {
+      Group* g = w->parent();
+      g->remove(w);
+      delete w;
+      g->relayout();
+    }
+  }
+}
+
+void cb_multi(Button* w, void* ptr) {
+  Browser* tree = (Browser*) ptr;
+  tree->type(w->value() ? Browser::MULTI : Browser::NORMAL);
+  tree->relayout();
+}
+
+static Group* current_group(Browser* tree) {
+  Widget* w = tree->goto_focus();
+  if (!w) return tree;
+  if (w->is_group() && w->flag(fltk::OPENED)) return (Group*)w;
+  return w->parent() ? w->parent() : tree;
+}
+
+void cb_add_folder(Widget*, void* ptr) {
+  Browser* tree = (Browser*) ptr;
+  tree->add_group("Added folder", current_group(tree));
+  tree->relayout();
+}
+
+void cb_add_paper(Widget*, void* ptr) {
+  Browser* tree = (Browser*) ptr;
+  tree->add_leaf("New paper\t@rt2.col\t3.col", current_group(tree));
+  tree->relayout();
+}
+
+void cb_when_changed(Button* b, void* ptr) {
+  Browser* tree = (Browser*)ptr;
+  if (b->value())
+    tree->when(tree->when()|fltk::WHEN_CHANGED);
+  else
+    tree->when(tree->when()&~fltk::WHEN_CHANGED);
+}
+
+void cb_when_release(Button* b, void* ptr) {
+  Browser* tree = (Browser*)ptr;
+  if (b->value())
+    tree->when(tree->when()|fltk::WHEN_RELEASE);
+  else
+    tree->when(tree->when()&~fltk::WHEN_RELEASE);
+}
+
+void cb_when_not_changed(Button* b, void* ptr) {
+  Browser* tree = (Browser*)ptr;
+  if (b->value())
+    tree->when(tree->when()|fltk::WHEN_NOT_CHANGED);
+  else
+    tree->when(tree->when()&~fltk::WHEN_NOT_CHANGED);
+}
+
+void cb_when_enter_key(Button* b, void* ptr) {
+  Browser* tree = (Browser*)ptr;
+  if (b->value())
+    tree->when(tree->when()|fltk::WHEN_ENTER_KEY);
+  else
+    tree->when(tree->when()&~fltk::WHEN_ENTER_KEY);
+}
+
+void button_cb(Widget* b, void *) {
+  printf("Button %s pushed\n", b->label());
+}
+
+const char *labels[] = {"Column 1", "Column 2\nwith new\nlines", "Column 3", 0};
+int widths[]   = {100, 70, 70, 0};
+
+Browser *browser=0;
+bool flip = false;
+bool bm = true;
+bool dlines = true;
+
+MultiImage g1(fileSmall, HIGHLIGHT, fileSmall2);
+MultiImage g2(folderSmall, HIGHLIGHT, folderSmall3);
+MultiImage g3(fileSmall2, HIGHLIGHT, fileSmall);
+MultiImage g4(folderSmall2, OPENED, folderSmall3, HIGHLIGHT, folderSmall);
+MultiImage g5(folderSmall2, OPENED, folderSmall3);
+
+void update_look() {
+  if (bm) {
+    if (flip) {
+      browser->leaf_symbol(&g1);
+      browser->group_symbol(&g2);
+    } else {
+      browser->leaf_symbol(&g3);
+      browser->group_symbol(&g4);
+    }
+  } else {
+    if (flip) {
+      browser->leaf_symbol(&fileSmall);
+      browser->group_symbol(&folderSmall);
+    } else {
+      browser->leaf_symbol(&fileSmall2);
+      browser->group_symbol(&g5);
+    }
+  }
+  browser->relayout();
+}
+
+// callback for changing dynamically the look of the tree browser 
+void cb_change_look(Widget*, void* ptr) {
+  flip = !flip;
+  update_look();
+}
+
+// callback for deactivate/activate the belowmouse img change
+void below_mouse_cb(Button *w, long arg) {
+  bm = w->value();
+  update_look();
+}
+
+void display_lines_cb(Widget* w, void* ptr_arg) {
+  Browser* tree = reinterpret_cast<Browser*>(ptr_arg);
+  dlines = !dlines;
+  tree->display_lines(dlines);
+  tree->relayout();
+}
+
+void change_resize(Button *w, long arg) {
+  if (w->value()) 
+    widths[1] = -1;
+  else
+    widths[1] = 70; 
+  browser->column_widths(widths);
+}
+
+int main(int argc,char** argv) {
+
+  Window win(280, 340, "Browser Example");
+  win.begin();
+
+  Browser tree(10, 10, 260, 180);
+  tree.indented(1);
+  tree.callback(cb_test);
+
+  browser = &tree;
+  tree.column_widths(widths);
+  tree.column_labels(labels);
+  
+  Button remove_button(5, 200, 80, 22, "Remove");
+  remove_button.callback((Callback*)cb_remove, (void *)&tree);
+
+  Button add_paper_button(5, 224, 80, 22, "Add Paper");
+  add_paper_button.callback((Callback*)cb_add_paper, (void *)&tree);
+
+  Button add_folder_button(5, 248, 80, 22, "Add Folder");
+  add_folder_button.callback((Callback*)cb_add_folder, (void *)&tree);
+
+  Button change_look_button(5, 272, 80, 22, "Change Look!");
+  change_look_button.callback((Callback*)cb_change_look , (void *)&tree);
+
+  CheckButton multi_button(88, 200, 160, 20, "Browser::MULTI");
+  multi_button.callback((Callback*)cb_multi, (void *)&tree);
+
+  CheckButton when_changed_button(88, 220, 160, 20, "WHEN_CHANGED");
+  when_changed_button.callback((Callback*)cb_when_changed, (void *)&tree);
+
+  CheckButton when_not_changed_button(88, 240, 160, 20, "WHEN_NOT_CHANGED");
+  when_not_changed_button.callback((Callback*)cb_when_not_changed, (void *)&tree);
+
+  CheckButton when_release_button(88, 260, 160, 20, "WHEN_RELEASE");
+  when_release_button.callback((Callback*)cb_when_release, (void *)&tree);
+  when_release_button.set_flag(fltk::STATE);
+
+  CheckButton when_enter_key_button(88, 280, 160, 20, "WHEN_ENTER_KEY");
+  when_enter_key_button.callback((Callback*)cb_when_enter_key, (void *)&tree);
+
+  // Let's show how to show/hide lines in the Browser (tree) widget
+  CheckButton display_lines(88, 300, 160, 20, "Display lines");
+  display_lines.value(true);
+  display_lines.callback((Callback*)display_lines_cb, (void *)&tree);
+
+  CheckButton resize(108, 320, 160, 20, "Make 2. column flexible");
+  resize.callback((Callback*)change_resize);
+
+  CheckButton bm(5, 320, 82, 20, "below mouse");
+  bm.set();
+  bm.callback((Callback*)below_mouse_cb);
+
+  win.resizable(tree);
+  win.end();
+
+#if USE_STRING_LIST
+  //tree.list(new String_List("alpha\0beta\0ceta\0delta\0red\0green\0blue\0"));
+  tree.list(new String_List(strings, sizeof(strings)/sizeof(*strings)));
+  //tree.list(new String_List(strings));
+#else
+
+  // defining default images for nodes
+  cb_change_look(0, &tree);
+
+  // Add some nodes with icons -- some open, some closed.
+  Group* g;
+  g = tree.add_group ("aaa\t2.col\t3.col", &tree);
+  tree.add_group ("bbb TWO\t2.col\t3.col", g);
+
+  g = tree.add_group ("bbb", &tree);
+  tree.add_leaf("ccc\t789", g); 
+  tree.add_leaf("ddd\t012", g); 
+
+  
+  g = tree.add_group("eee", &tree);
+  tree.add_leaf("fff", &tree)->image(customImage); // let's have fun with a custom image
+					    // while demonstrating different height nodes
+  g = tree.add_group("ggg", g);
+  tree.add_leaf("hhh", g); // g decl is not even necessary for next children
+  tree.add_leaf("iii", g); // I let it for keeping API orthogonality
+
+  g = tree.add_group("jjj",&tree);
+  tree.add_leaf("kkk",g);
+
+  tree.add_leaf("lll");
+ tree.add_leaf("zut");
+
+  g = tree.add_group("mmm", &tree, 0); // let this node closed
+  tree.add_leaf("nnn",g);
+  tree.add_leaf("ooo",g);
+
+  g = tree.add_group("ppp", g);
+  tree.add_leaf("qqq",g);
+
+  g = tree.add_group("rrr", g); // more imbricated groups 
+  g = tree.add_group("sss", g);
+  g = tree.add_group("ttt", g);
+
+  g = tree.add_group("uuu", &tree);
+  tree.add_leaf("vvv", g);
+  tree.add_leaf("www", g);
+
+  tree.add_leaf("yyy", g);
+  tree.add_leaf("zzz", g);
+
+
+  // add some widgets:
+  Button * b = new Button(0,0,100,23,"button");
+  b->callback(button_cb);
+#if 0
+  // fabien: creating the CheckButton below will still mess up the drawing ... 
+  //   have to be fixed, but not in the browser i think.
+  b = new CheckButton(0,0,100,23,"CheckButton");
+
+  printf("b->type = %d, group = %d, is_group = %d\n",
+	 b->type(), Widget::GROUP_TYPE, b->is_group());
+  b->callback(button_cb);
+#endif
+  new Input(0,0,200,23,"Input:");
+  new ValueSlider(0,0,200,23,"Input1:");
+  new ValueSlider(0,0,200,23,"Input2:");
+  new ValueSlider(0,0,200,23,"Input3:");
+  tree.end();
+
+
+#if 0
+  // Examples of removing items (successfully, and unsuccessfully)
+  // by label name:
+  if (&tree.remove("xxx"))
+    printf("Successfully deleted \"xxx\"\n");
+  else
+    printf("Could not delete \"xxx\"\n");
+
+  if (&tree.remove("nonexistant"))
+    printf("Successfully deleted \"nonexistant\"\n");
+  else
+    printf("Could not delete \"nonexistant\"\n");
+#endif
+#endif
+
+  tree.select(tree.find( "fff" ),1);
+
+  win.show(argc,argv);
+ 
+  run();
+  return 0;
+}
+
+// End of "$Id: browser.cxx 6148 2008-07-17 19:37:04Z TobiasFar $"

Added: branches/branch-3.0-2011/test2/browserop.cxx
===================================================================
--- branches/branch-3.0-2011/test2/browserop.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/browserop.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,108 @@
+//
+// "$Id: browserop.cxx 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Browser operation test program 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".
+//
+
+#include "forms.h"
+
+FL_FORM *form;
+FL_OBJECT *browserobj, *inputobj, *exitobj;
+
+void addit(FL_OBJECT *, long)
+{
+  /* append and show the last line. Don't use this if you just want
+   * to add some lines. use fl_add_browser_line
+   */
+  fl_addto_browser(browserobj,fl_get_input(inputobj));
+}
+
+void insertit(FL_OBJECT *, long)
+{
+  int n;
+  if (! ( n = fl_get_browser(browserobj))) return;
+  fl_insert_browser_line(browserobj,n,fl_get_input(inputobj));
+}
+
+void replaceit(FL_OBJECT *, long)
+{
+  int n;
+  if (! (n=fl_get_browser(browserobj))) return;
+  fl_replace_browser_line(browserobj,n,fl_get_input(inputobj));
+}
+
+void deleteit(FL_OBJECT *, long)
+{
+  int n;
+  if (! (n = fl_get_browser(browserobj))) return;
+  fl_delete_browser_line(browserobj,n);
+}
+
+void clearit(FL_OBJECT *, long)
+{
+  fl_clear_browser(browserobj);
+}
+
+/*---------------------------------------*/
+
+void create_form(void)
+{
+  FL_OBJECT *obj;
+
+  form = fl_bgn_form(FL_UP_BOX,390,420);
+  browserobj = fl_add_browser(FL_HOLD_BROWSER,20,20,210,330,"");
+//  fl_set_object_dblbuffer(browserobj, 1);
+  inputobj = obj = fl_add_input(FL_NORMAL_INPUT,20,370,210,30,"");
+    fl_set_object_callback(obj,addit,0);
+    obj->when(FL_WHEN_ENTER_KEY|FL_WHEN_NOT_CHANGED);
+  obj = fl_add_button(FL_NORMAL_BUTTON,250,20,120,30,"Add");
+    fl_set_object_callback(obj,addit,0);
+  obj = fl_add_button(FL_NORMAL_BUTTON,250,60,120,30,"Insert");
+    fl_set_object_callback(obj,insertit,0);
+  obj = fl_add_button(FL_NORMAL_BUTTON,250,100,120,30,"Replace");
+    fl_set_object_callback(obj,replaceit,0);
+  obj = fl_add_button(FL_NORMAL_BUTTON,250,160,120,30,"Delete");
+    fl_set_object_callback(obj,deleteit,0);
+  obj = fl_add_button(FL_NORMAL_BUTTON,250,200,120,30,"Clear");
+    fl_set_object_callback(obj,clearit,0);
+  exitobj = fl_add_button(FL_NORMAL_BUTTON,250,370,120,30,"Exit");
+  fl_end_form();
+}
+
+/*---------------------------------------*/
+
+int
+main(int argc, char *argv[])
+{
+  FL_OBJECT *obj;
+
+  fl_initialize(&argc, argv, "FormDemo", 0, 0);
+  create_form();
+  fl_show_form(form,FL_PLACE_CENTER,FL_TRANSIENT,"Browser Op");
+  do obj = fl_do_forms(); while (obj != exitobj);
+  fl_hide_form(form);
+  return 0;
+}
+
+//
+// End of "$Id: browserop.cxx 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/button.cxx
===================================================================
--- branches/branch-3.0-2011/test2/button.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/button.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,47 @@
+// button.cxx (example2a)
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Button.h>
+#include <fltk/InvisibleBox.h>
+#include <fltk/TiledImage.h>
+#include <fltk/SharedImage.h>
+using namespace fltk;
+
+void beepcb(Widget *, void *) {
+  printf("\007"); fflush(stdout);
+}
+
+void exitcb(Widget *, void *) {
+  exit(0);
+}
+
+int main(int argc, char ** argv) {
+  register_images();
+  Window *window = new Window(320,65);
+
+  window->begin();
+  Group* ib = new Group(0,0,window->w(),window->h());
+  ib->begin();
+  ib->image(new TiledImage(SharedImage::get("./images/bg.jpeg")));
+  window->resizable(ib);
+
+  Button *b1 = new Button(20, 20, 80, 25, "&Beep");
+  b1->callback(beepcb,0);
+  
+  Button *b2 = new Button(120,20, 80, 25, "");
+  b2->image(new TiledImage(SharedImage::get("./images/coucou.png")));
+
+  Button *b3 = new Button(220,20, 80, 25, "E&xit");
+  b3->callback(exitcb,0);
+  ib->end();
+  window->end();
+  window->show(argc,argv);
+  return run();
+}
+
+//
+// End of "$Id: button.cxx 5465 2006-09-19 03:21:56Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/buttons.cxx
===================================================================
--- branches/branch-3.0-2011/test2/buttons.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/buttons.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,157 @@
+//
+// "$Id: buttons.cxx 5568 2006-12-30 07:54:24Z spitzak $"
+//
+// Draws the image for the manual
+//
+// 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".
+//
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Button.h>
+#include <fltk/ToggleButton.h>
+#include <fltk/ReturnButton.h>
+#include <fltk/RepeatButton.h>
+#include <fltk/CheckButton.h>
+#include <fltk/RadioButton.h>
+#include <fltk/LightButton.h>
+#include <fltk/HighlightButton.h>
+#include <fltk/MultiImage.h>
+#include <fltk/xpmImage.h>
+#include <fltk/SharedImage.h>
+
+#include <pixmaps/folder_small.xpm>
+#include <pixmaps/folder_small2.xpm>
+#include <pixmaps/folder_small3.xpm>
+
+using namespace fltk;
+
+Button * abutton=0;
+MultiImage* multi;
+
+void cb_active_butt(Widget*, void*) {
+    static bool flip = true;
+    if (flip) abutton->activate(); else abutton->deactivate();
+    abutton->label(flip ? "Active" : "Inactive");
+    flip = !flip;
+
+  abutton->redraw();
+}
+
+void rb_cb(Widget*, void*) {
+  static bool flip = false;
+  if (flip) { //  Fl::theme("essai");
+      reset_theme();
+  } else {
+    // Default Style handling for changing the scheme of all widget at once
+    Button::default_style->box_ = fltk::PLASTIC_UP_BOX;
+    Button::default_style->color_ = 256-36;
+    Widget::default_style->highlight_color(3);
+  }
+  flip = !flip;
+  redraw();
+}
+
+const int W = 150;
+const int H = 24;
+const int B = 10;
+const int X0 = B;
+const int X1 = (B+W+B);
+
+int main(int argc, char ** argv) {
+  Window window(X1+W+B, B+7*(H+B));
+  window.begin();
+  
+  xpmImage fold1(folder_small);
+  xpmImage fold3(folder_small3);
+
+  xpmImage fold2(folder_small2);
+#if !defined(TESTIMAGES)
+  xpmImage ifold2(folder_small2); // use closed folder 2 as inactive image
+#else
+  register_images();
+  SharedImage& ifold2 = *SharedImage::get("images/testimg2.jpg");
+  //SharedImage& ifold2 = *SharedImage::get("images/coucou.png"); 
+#endif
+  // ifold2.inactive();
+  // WAS: inactive() is nyi but should not be a problem with new Image...
+  MultiImage push_release_img(fold2, PUSHED, fold3);
+  MultiImage push_release_hlt_img(fold2, HIGHLIGHT, fold1, PUSHED, fold3);
+  
+  int Y = B;
+  (void) new Button(X0, Y, W, H, "Button");
+  ReturnButton* rb = new ReturnButton(X1, Y, W, H, "Flip theme");
+  rb->callback(rb_cb);
+  rb->tooltip("Push this to revert style to fltk defaults");
+  Y += H+B;
+  (void) new ToggleButton(X0, Y, W, H, "ToggleButton");
+  (void) new RadioButton(X1, Y, W, H, "RadioButton");
+  Y += H+B;
+  (void) new RepeatButton(X0, Y, W, H, "RepeatButton");
+  (void) new RadioButton(X1, Y, W, H, "RadioButton");
+  Y += H+B;
+  (void) new LightButton(X0, Y, W, H, "LightButton");
+  (void) new RadioButton(X1, Y, W, H, "RadioButton");
+  Y += H+B;
+  // The box of the higlight button will appear when belowmouse
+  // when combined with image() as below, you get the border + the image appearing when belowmouse()
+
+  //HighlightButton* hb = 
+      new HighlightButton(X0, Y, W, H, "HighlightButton");
+
+  new CheckButton(X1, Y, W, H, "CheckButton");
+
+  Y += H+B;
+  Button * b = new Button(X0, Y, W, H, "push/release img");
+  b->image(push_release_img); // use default & pushed img
+  b = new Button(X1, Y, W, H, "push/rel noborder");
+  b->image(push_release_img); // use default & pushed img
+  b->box(NO_BOX);
+  
+  Y += H+B;
+  b = new HighlightButton(X0, Y, W, H, "Everything !");
+  // to remove the  belowmouse changing image comment this line:
+  b->image(push_release_hlt_img);
+  b->callback(cb_active_butt);
+#if !defined(TESTIMAGES)
+  abutton = b = new Button(X1, Y, W, H, "Inactive");
+  multi = new MultiImage(fold2,  fltk::PUSHED, fold3,fltk::INACTIVE, ifold2);
+  b->image(multi); 
+#else
+  abutton = b = new Button(X1, Y, W, H*2, "Inactive");
+  multi = new MultiImage(fold2,  fltk::PUSHED, fold3,fltk::INACTIVE, ifold2);
+  b->image(&fold2,&ifold2);
+#endif
+  b->activate(0);  
+
+  window.resizable(window);
+  window.end();
+  window.show(argc,argv);
+
+  rb_cb(0,0);  // Default Style handling for changing the scheme of all widget at once
+
+  return run();
+}
+
+//
+// End of "$Id: buttons.cxx 5568 2006-12-30 07:54:24Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/cairo.cxx
===================================================================
--- branches/branch-3.0-2011/test2/cairo.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/cairo.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,176 @@
+//
+// "$Id: arc.cxx 5115 2006-05-12 16:00:00Z fabien $"
+//
+// Arc drawing test program 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".
+//
+
+#include <config.h>
+
+#if USE_CAIRO
+
+#include <fltk/run.h>
+#include <fltk/x.h>
+#include <fltk/DoubleBufferWindow.h>
+#include <fltk/ValueSlider.h>
+#include <fltk/draw.h>
+#include <fltk/math.h>
+
+#define DEF_WIDTH 0.03
+
+using namespace fltk;
+
+// put your drawing stuff here
+float drawargs[7] = {90, 90, 100, 100, 0, 360, 0};
+const char* name[7] = {"X", "Y", "W", "H", "start", "end", "rotate"};
+
+
+void centered_text(cairo_t* cr, double x0,double y0,double w0,double h0, const char * my_text) {
+    cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_OBLIQUE,CAIRO_FONT_WEIGHT_BOLD);
+    cairo_set_source_rgba (cr, 0.9, 0.9, 0.4, 0.6);
+    cairo_text_extents_t extents;
+    cairo_text_extents (cr, my_text, &extents);
+    double x = (extents.width/2 + extents.x_bearing);
+    double y = (extents.height/2 + extents.y_bearing);
+    cairo_move_to  (cr, x0+w0/2-x, y0+h0/2 - y);
+    cairo_text_path(cr,my_text);
+    cairo_fill_preserve (cr);
+    cairo_set_source_rgba (cr, 0, 0, 0,1);
+    cairo_set_line_width (cr, 0.004);
+    cairo_stroke (cr);
+    cairo_set_line_width (cr, DEF_WIDTH);
+
+
+}
+
+void round_button(cairo_t* cr, double x0, double y0, 
+		  double rect_width, double rect_height, double radius,
+		  double r, double g, double b) {
+    
+    double x1,y1;
+    
+    
+    x1=x0+rect_width;
+    y1=y0+rect_height;
+    if (!rect_width || !rect_height)
+	return;
+    if (rect_width/2<radius) {
+	if (rect_height/2<radius) {
+	    cairo_move_to  (cr, x0, (y0 + y1)/2);
+	    cairo_curve_to (cr, x0 ,y0, x0, y0, (x0 + x1)/2, y0);
+	    cairo_curve_to (cr, x1, y0, x1, y0, x1, (y0 + y1)/2);
+	    cairo_curve_to (cr, x1, y1, x1, y1, (x1 + x0)/2, y1);
+	    cairo_curve_to (cr, x0, y1, x0, y1, x0, (y0 + y1)/2);
+	} else {
+	    cairo_move_to  (cr, x0, y0 + radius);
+	    cairo_curve_to (cr, x0 ,y0, x0, y0, (x0 + x1)/2, y0);
+	    cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius);
+	    cairo_line_to (cr, x1 , y1 - radius);
+	    cairo_curve_to (cr, x1, y1, x1, y1, (x1 + x0)/2, y1);
+	    cairo_curve_to (cr, x0, y1, x0, y1, x0, y1- radius);
+	}
+    } else {
+	if (rect_height/2<radius) {
+	    cairo_move_to  (cr, x0, (y0 + y1)/2);
+	    cairo_curve_to (cr, x0 , y0, x0 , y0, x0 + radius, y0);
+	    cairo_line_to (cr, x1 - radius, y0);
+	    cairo_curve_to (cr, x1, y0, x1, y0, x1, (y0 + y1)/2);
+	    cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1);
+	    cairo_line_to (cr, x0 + radius, y1);
+	    cairo_curve_to (cr, x0, y1, x0, y1, x0, (y0 + y1)/2);
+	} else {
+	    cairo_move_to  (cr, x0, y0 + radius);
+	    cairo_curve_to (cr, x0 , y0, x0 , y0, x0 + radius, y0);
+	    cairo_line_to (cr, x1 - radius, y0);
+	    cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius);
+	    cairo_line_to (cr, x1 , y1 - radius);
+	    cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1);
+	    cairo_line_to (cr, x0 + radius, y1);
+	    cairo_curve_to (cr, x0, y1, x0, y1, x0, y1- radius);
+	}
+    }
+    cairo_close_path (cr);
+    
+    cairo_pattern_t *pat= 
+	//cairo_pattern_create_linear (0.0, 0.0,  0.0, 1.0);
+        cairo_pattern_create_radial (0.25, 0.24, 0.11, 0.24,  0.14, 0.35);
+    cairo_pattern_set_extend (pat, CAIRO_EXTEND_REFLECT);
+    
+    cairo_pattern_add_color_stop_rgba (pat, 1.0, r, g, b, 1);
+    cairo_pattern_add_color_stop_rgba (pat, 0.0, 1, 1, 1, 1);
+    cairo_set_source (cr, pat);
+    cairo_fill_preserve (cr);
+    cairo_pattern_destroy (pat);
+
+    //cairo_set_source_rgb (cr, 0.5,0.5,1);    cairo_fill_preserve (cr);
+    cairo_set_source_rgba (cr, 0, 0, 0.5, 0.3);
+    cairo_stroke (cr);
+
+    cairo_set_font_size (cr, 0.08);
+    centered_text(cr,x0,y0,rect_width, rect_height, "FLTK loves Cairo!");
+
+}
+
+class CairoWindow : public Window {
+public:
+
+  CairoWindow() : Window(300,300) {
+    resizable(this); // comment this out for fixed-size
+    color(fltk::WHITE); // desired background color
+  }
+
+  void draw() {
+    fltk::Window::draw(); // this erases it
+    cairo_save(cr);
+
+    double xc = 0.5;
+    double yc = 0.5;
+    double radius = 0.4;
+    double angle1 = 45.0  * (M_PI/180.0);  /* angles are specified */
+    double angle2 = 180.0 * (M_PI/180.0);  /* in radians           */
+
+    cairo_set_line_width (cr, DEF_WIDTH);
+    cairo_scale (cr, w(), h());
+
+    round_button(cr,0.1,0.05,0.8,0.2,0.4,0,0,1);
+    round_button(cr,0.1,0.35,0.8,0.2,0.4,1,0,0);
+    round_button(cr,0.1,0.65,0.8,0.2,0.4,0,1,0);
+    cairo_restore(cr);
+  }
+};
+
+int main(int argc, char** argv) {
+  CairoWindow window;
+  window.show(argc,argv);
+  return fltk::run();
+}
+#else
+#include <fltk/ask.h>
+int main(int argc, char** argv) {
+  fltk::message("please configure fltk with CAIRO enabled (--enable-cairo)"); 
+  return 0;
+}
+
+#endif
+
+//
+// End of "$Id: arc.cxx 5115 2006-05-12 16:00:00Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/callbacks.cxx
===================================================================
--- branches/branch-3.0-2011/test2/callbacks.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/callbacks.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,63 @@
+// callback.cxx (example 2b)
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Slider.h>
+#include <fltk/Button.h>
+#include <fltk/IntInput.h>
+#include <stdlib.h>
+using namespace fltk;
+
+IntInput* intinput;
+
+void copy_callback(Widget*, void* v) {
+  Slider* slider = (Slider*)v;
+  slider->value(intinput->ivalue());
+}
+
+void down_callback(Widget*, void* v) {
+  Slider* slider = (Slider*)v;
+  slider->value(slider->value()-1);
+  intinput->value(slider->value());
+}
+
+void up_callback(Widget*, void* v) {
+  Slider* slider = (Slider*)v;
+  slider->value(slider->value()+1);
+  intinput->value(slider->value());
+}
+
+void slider_callback(Widget* w, void*) {
+  Slider* slider = (Slider*)w;
+  intinput->value(slider->value());
+}
+
+void exit_callback(Widget *, void *) {
+  exit(0);
+}
+
+int main(int argc, char ** argv) {
+  Window window(320, 90);
+  window.begin();
+  IntInput intinput(10,10,100,20);
+  ::intinput = &intinput;
+  intinput.value(0.0);
+  Button copy_button(110, 10, 100, 20, "copy to slider");
+  Slider slider(10,35,300,20);
+  slider.type(Slider::TICK_ABOVE);
+  slider.clear_flag(LAYOUT_VERTICAL);
+  slider.callback(slider_callback);
+  copy_button.callback(copy_callback, &slider);
+  slider.range(-10,10);
+  slider.step(1);
+  slider.value(0);
+  Button down_button(50,60,50,20,"down");
+  down_button.callback(down_callback, &slider);
+  Button up_button(150,60,50,20,"up");
+  up_button.callback(up_callback, &slider);
+  Button exit_button(250,60,50,20,"exit");
+  exit_button.callback(exit_callback);
+  window.end();
+  window.show(argc,argv);
+  return run();
+}

Added: branches/branch-3.0-2011/test2/checkers.cxx
===================================================================
--- branches/branch-3.0-2011/test2/checkers.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/checkers.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,1388 @@
+//
+// "$Id: checkers.cxx 7513 2010-04-15 17:19:27Z spitzak $"
+//
+// Checkers game for the Fast Light Tool Kit (FLTK).
+//
+// Hours of fun: the FLTK checkers game!
+// Based on a very old algorithim, but it still works!
+//
+// 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".
+//
+
+const char* copyright = 
+"Checkers game\n"
+"\xa9""2001 Bill Spitzak    spitzak@d2.com\n"
+"Original Pascal code:\n"
+"\xa9""1978, Oregon Minicomputer Software, Inc.\n"
+"2340 SW Canyon Road, Portland, Oregon 97201\n"
+"Written by Steve Poulsen 18-Jan-79\n"
+"\n"
+"This program is free software; you can redistribute it and/or modify "
+"it under the terms of the GNU General Public License as published by "
+"the Free Software Foundation; either version 2 of the License, or "
+"(at your option) any later version.\n"
+"\n"
+"This program 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 General Public License for more details.\n"
+"\n"
+"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.";
+
+// Define FLTK to get the fltk interface
+// Define VT100 to get the VT100 interface
+// Define both to get a program that takes a -t switch
+
+#define FLTK
+//#define VT100
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <ctype.h>
+#include <time.h>
+
+////////////////////////////////////////////////////////////////
+// The algorithim:
+
+int maxevaluate=2500;		// max number of moves to examine on a turn
+int maxnodes = 2500;		// maximum number of nodes in search tree
+int maxply = 20;		// maximum depth to look ahead
+char forcejumps = 1;		// is forced jumps rule in effect?
+
+// scoring parameters: (all divided by 5 from original code)
+// some signs seem to be backwards, marked them with (-) in comment
+const int spiece = 800;		// value of a piece
+const int sking = 1200;		// value of a king
+const int sadvan = 160;		// value of mypieces/theirpieces-1
+// const int smobil = ?		// moves *enemy* can make w/o being jumped
+const int sallpin = 80;		// mobil == 0
+const int sdeny = 10;		// moves enemy can make that will be jumped
+const int spin = 32;		// enemy pieces that have no move except jumped
+const int sthreat = -10;	// enemy pieces we can jump if not moved (-)
+const int sgrad = 1;		// score of piece positions
+const int sback = 10;		// back row occupied so enemy can't make king
+const int smoc2 = 200;		// more mobility, more center
+const int smoc3 = -8;		// less mobility, less center
+const int smoc4 = -80;		// more mobility, less center
+const int smode2 = -14;		// less mobility, less denied
+const int smode3 = -40;		// more mobility, more denied (-)
+const int sdemmo = -20;		// more denied, more moves (-)
+const int scent = 10;		// pieces in center
+const int skcent = 100;		// kings in center
+
+const int depthpenalty=4;	// guess
+const int noise=2;		// values less or eq to this apart are eq
+
+// const int sattackking = 4;	// not used
+// const int sattackpiece = 3;
+
+struct node {
+  node *father;
+  node *son;		// best son
+  node *brother;	// next brother
+  short int value;	// value of this board position to player making move
+  unsigned char from,to; // the move to reach this board
+  long int jump;	// bit map of locations jumped
+  unsigned char mobil;
+  unsigned char deny;
+  unsigned char pin;
+  unsigned char threat;
+  short int gradient;
+  unsigned who:1;	// 0 = black's move, 1 = white's move
+  unsigned king:1;	// 1 = move causes piece to be kinged
+  unsigned back:1;
+  unsigned moc2:1;
+  unsigned moc3:1;
+  unsigned moc4:1;
+  unsigned mode2:1;
+  unsigned mode3:1;
+  unsigned demmo:1;
+};
+
+int nodes;		// count of nodes
+
+/*	Board positions:	Border positions:
+
+	      WHITE		  00  01  02  03  04
+	  05  06  07  08	04  XX  XX  XX  XX
+	09  10  11  12		  XX  XX  XX  XX  13
+	  14  15  16  17	13  XX  XX  XX  XX
+	18  19  20  21		  XX  XX  XX  XX  22
+	  23  24  25  26	22  XX  XX  XX  XX
+	27  28  29  30		  XX  XX  XX  XX  31
+	  32  33  34  36	31  XX  XX  XX  XX
+	36  37  38  39		  XX  XX  XX  XX  40
+	      BLACK		40  41  42  43  44
+
+*/
+
+typedef unsigned char piece;
+
+// Piece values so that BLACK and WHITE are bit flags:
+enum {
+  EMPTY = 0,
+  BLACK = 1,
+  WHITE = 2,
+  KING  = 4,
+  BLACKKING = 5,
+  WHITEKING = 6,
+  BLUE	= 8,
+  FRIEND = BLACK,
+  FRIENDKING = BLACKKING,
+  ENEMY	= WHITE,
+  ENEMYKING = WHITEKING
+};
+
+const piece flip[9] = {
+  EMPTY, WHITE, BLACK, 0, 0, WHITEKING, BLACKKING, 0, BLUE};
+
+const int offset[9][4] = {	// legal move directions
+  {0,0,0,0},
+  {-5,-4,0,0},
+  {4,5,0,0},
+  {0,0,0,0},
+  {0,0,0,0},
+  {4,5,-4,-5},
+  {4,5,-4,-5},
+  {0,0,0,0},
+  {0,0,0,0}
+};
+
+piece b[45];		// current board position being considered
+
+int evaluated;		// number of moves evaluated this turn
+
+char centralsquares[45];
+char is_protected[45];
+
+piece flipboard[45];	// swapped if enemy is black
+piece *tb;		// pointer to real or swapped board
+
+char check(int target,int direction) {
+  // see if enemy at target can be jumped from direction by our piece
+  int dst = target-direction;
+  if (tb[dst]) return(0);
+  int src = target+direction;
+  if (tb[src] == FRIENDKING);
+  else if (direction < 0 || tb[src] != FRIEND) return(0);
+  piece a = tb[target]; piece b = tb[src];
+  tb[target] = EMPTY; tb[src] = EMPTY;
+  int safe =
+    ((tb[src-4]&FRIEND && tb[src-8]&ENEMY)
+     || (tb[src-5]&FRIEND && tb[src-10]&ENEMY)
+     || (tb[dst-4]&ENEMY && !tb[dst+4])
+     || (tb[dst-5]&ENEMY && !tb[dst+5])
+     || (tb[src+4]&FRIEND && tb[src+8]==ENEMYKING)
+     || (tb[src+5]&FRIEND && tb[src+10]==ENEMYKING)
+     || (tb[dst+4]==ENEMYKING && !tb[dst-4])
+     || (tb[dst+5]==ENEMYKING && !tb[dst-5]));
+  tb[target] = a; tb[src] = b;
+  return(safe);
+}
+
+int deniedmoves,undeniedmoves;
+void analyzemove(int direction,int src) {
+  int target = src+direction;
+  if (!tb[target]) {
+    if (!tb[target+direction]) is_protected[target] = 1;
+    piece a = tb[src]; tb[src] = EMPTY;
+    if (check(target,4) || check(target,5) ||
+	check(target,-4) || check(target,-5) ||
+	(tb[src+4]&ENEMY && check(src+4,4)) ||
+	(tb[src+5]&ENEMY && check(src+5,5)) ||
+	(tb[src-4]&ENEMY && check(src-4,-4)) ||
+	(tb[src-5]&ENEMY && check(src-5,-5)))
+      deniedmoves++;
+    else undeniedmoves++;
+    tb[src] = a;
+  }
+}
+
+void evaluateboard(node *n,int print) {
+
+  if (!n->who) tb = b;	// move was black's
+  else {
+    for (int i=0; i<45; i++) flipboard[44-i] = flip[b[i]];
+    tb = flipboard;
+  }
+
+  memset(is_protected,0,sizeof(is_protected));
+  int friendpieces = 0;
+  int enemypieces = 0;
+  int friendkings = 0;
+  int enemykings = 0;
+  int friendkcent = 0;
+  int friendcent = 0;
+  int enemykcent = 0;
+  int enemycent = 0;
+  n->mobil = n->deny = n->pin = n->threat = 0;
+
+  int i;
+  for (i=5; i<40; i++) switch(tb[i]) {
+  case ENEMYKING:
+    enemykings++;
+    enemykcent += centralsquares[i];
+    deniedmoves = 0;
+    undeniedmoves = 0;
+    if (i>8) {
+      analyzemove(-4,i);
+      analyzemove(-5,i);
+    }
+    goto J1;
+  case ENEMY:
+    deniedmoves = 0;
+    undeniedmoves = 0;
+  J1:	enemypieces++;
+    enemycent += centralsquares[i];
+    if (i<36) {
+      analyzemove(4,i);
+      analyzemove(5,i);
+    }
+    if (deniedmoves && !undeniedmoves) n->pin++;
+    n->deny += deniedmoves;
+    n->mobil += undeniedmoves;
+    break;
+  case FRIENDKING:
+    friendkings++;
+    friendkcent += centralsquares[i];
+    if (tb[i+4]&ENEMY && !tb[i+8] && !(tb[i+4]==ENEMYKING && !tb[i-4]))
+      n->threat++;
+    if (tb[i+5]&ENEMY && !tb[i+10] && !(tb[i+5]==ENEMYKING && !tb[i-5]))
+      n->threat++;
+  case FRIEND:
+    friendpieces++;
+    friendcent += centralsquares[i];
+    if (tb[i-4]&ENEMY && !tb[i-8] && tb[i+4]) n->threat++;
+    if (tb[i-5]&ENEMY && !tb[i-10] && tb[i+5]) n->threat++;
+    break;
+  }
+
+  int gradient[40];
+  for (i=4; i<9; i++) gradient[i] = tb[i] ? 0 : 32;
+  int total = 0;
+  for (i=9; i<40; i++) {
+    int x = (gradient[i-4]+gradient[i-5])/2;
+    if (tb[i]==FRIEND) total += x;
+    gradient[i] = ((tb[i]&FRIEND) || !(tb[i] || is_protected[i])) ? x : 0;
+  }
+  n->gradient = total;
+
+  n->back = tb[39]==FRIEND && tb[37]==FRIEND && !enemykings;
+
+  node* f = n->father;
+
+  n->moc2 = f->mobil>n->mobil && friendcent>enemycent;
+  n->moc3 = f->mobil<=n->mobil && friendcent<enemycent;
+  n->moc4 = f->mobil>n->mobil && friendcent<enemycent;
+  n->mode2 = f->mobil<=n->mobil && n->deny<f->deny;
+  n->mode3 = f->mobil>n->mobil && n->deny>f->deny;
+  n->demmo = n->deny>f->deny && f->deny+f->mobil>n->deny+n->mobil;
+
+  total =
+    spiece	* (friendpieces - enemypieces) +
+    (sking-spiece) * (friendkings	- enemykings) +
+    //	mobil?
+    sdeny	* (n->deny	- f->deny) +
+    spin	* (n->pin	- f->pin) +
+    sthreat	* (n->threat	- f->threat) +
+    sgrad	* (n->gradient	- f->gradient) +
+    sback	* (n->back	- f->back) +
+    smoc2	* (n->moc2	- f->moc2) +
+    smoc3	* (n->moc3	- f->moc3) +
+    smoc4	* (n->moc4	- f->moc4) +
+    smode2	* (n->mode2	- f->mode2) +
+    smode3	* (n->mode3	- f->mode3) +
+    sdemmo	* (n->demmo	- f->demmo) +
+    scent	* (friendcent	- enemycent) +
+    (skcent-scent) * (friendkcent	- enemykcent);
+  if (!n->mobil) total += sallpin;
+
+  if (!enemypieces) total = 30000;
+  else if (friendpieces > enemypieces)
+    total += (sadvan*friendpieces)/enemypieces-sadvan;
+  else total -= (sadvan*enemypieces)/friendpieces-sadvan;
+
+  if (print) {
+    printf("\tParent\tNew\tScore\n");
+    printf("pieces\t%d\t%d\t%d\n",enemypieces,friendpieces,
+	   spiece*(friendpieces-enemypieces));
+    printf("kings\t%d\t%d\t%d\n",enemykings,friendkings,
+	   (sking-spiece)*(friendkings-enemykings));
+    printf("mobil\t%d\t%d\t%d\n",f->mobil,n->mobil,n->mobil?0:sallpin);
+    printf("deny\t%d\t%d\t%d\n",f->deny,n->deny,sdeny*(n->deny-f->deny));
+    printf("pin\t%d\t%d\t%d\n",f->pin,n->pin,spin*(n->pin-f->pin));
+    printf("threat\t%d\t%d\t%d\n",f->threat,n->threat,sthreat*(n->threat-f->threat));
+    printf("grad\t%d\t%d\t%d\n",f->gradient,n->gradient,sgrad*(n->gradient-f->gradient));
+    printf("back\t%d\t%d\t%d\n",f->back,n->back,sback*(n->back-f->back));
+    printf("moc2\t%d\t%d\t%d\n",f->moc2,n->moc2,smoc2*(n->moc2-f->moc2));
+    printf("moc3\t%d\t%d\t%d\n",f->moc3,n->moc3,smoc3*(n->moc3-f->moc3));
+    printf("moc4\t%d\t%d\t%d\n",f->moc4,n->moc4,smoc4*(n->moc4-f->moc4));
+    printf("mode2\t%d\t%d\t%d\n",f->mode2,n->mode2,smode2*(n->mode2-f->mode2));
+    printf("mode3\t%d\t%d\t%d\n",f->mode3,n->mode3,smode3*(n->mode3-f->mode3));
+    printf("demmo\t%d\t%d\t%d\n",f->demmo,n->demmo,sdemmo*(n->demmo-f->demmo));
+    printf("cent\t%d\t%d\t%d\n",enemycent,friendcent,scent*(friendcent-enemycent));
+    printf("kcent\t%d\t%d\t%d\n",enemykcent,friendkcent,skcent*(friendkcent-enemykcent));
+    printf("total:\t\t\t%d\n",total);
+  }
+  else {
+    n->value = total;
+    evaluated++;
+  }
+}	// end of evaluateboard
+
+// --------------------- Tree management -----------------
+
+node *freelist;
+
+node *newnode(void) {
+  node *n;
+  if (freelist) {
+    n = freelist;
+    freelist = n->brother;
+  }
+  else n = (node *)malloc(sizeof(node));
+  memset(n,0,sizeof(node));
+  nodes++;
+  return(n);
+}
+
+void extract(node *n) {
+  node* i = n->father;
+  if (i) {
+    node* j = i->son;
+    if (j==n) i->son = n->brother;
+    else while (j) {
+      i = j; j = j->brother;
+      if (j==n) {i->brother = n->brother; break;}
+    }
+  }
+  n->brother = 0;
+}
+
+void killnode(node *x) {
+  if (!x) return;
+  node *y;
+  for (y = x; ; y = y->brother) {
+    nodes--;
+    killnode(y->son); y->son = 0;
+    if (!y->brother) break;
+  }
+  y->brother = freelist;
+  freelist = x;
+}
+
+int seed;		// current random number
+
+void insert(node *n) {
+  int val = n->value;
+  node **pp;
+  for (pp = &(n->father->son); *pp; pp = &((*pp)->brother)) {
+    int val1 = (*pp)->value;
+    if (abs(val-val1) <= noise) {
+      seed = (seed*13077+5051)%0100000;
+      if ((seed & 070) >= 060) break;
+    }
+    else if (val > val1) break;
+  }
+  n->brother = *pp;
+  *pp = n;
+}
+
+// --------------------------------------------------------------
+
+void movepiece(node* f, int i, node* jnode) {
+  static char jumphappened;
+
+  for (int k=0; k<4; k++) {
+    int direction = offset[b[i]][k];
+    if (!direction) break;
+    int j = i+direction;
+    if (b[j] == EMPTY) {
+      if (!jnode && (!forcejumps || !f->son || !f->son->jump)) {
+	node* n = newnode();
+	n->father = f;
+	n->who = !f->who;
+	n->from = i;
+	n->to = j;
+	piece oldpiece = b[i]; b[i] = EMPTY;
+	if (!(oldpiece&KING) && n->who ? (j>=36) : (j<=8)) {
+	  n->king = 1;
+	  b[j] = oldpiece|KING;
+	}
+	else b[j] = oldpiece;
+	evaluateboard(n,0);
+	insert(n);
+	b[i] = oldpiece; b[j] = EMPTY;
+      }
+    } else if (((b[j]^b[i])&(WHITE|BLACK))==(WHITE|BLACK) && !b[j+direction]) {
+      if (forcejumps && f->son && !f->son->jump) {
+	killnode(f->son);
+	f->son = 0;
+      }
+      int jumploc = j;
+      j += direction;
+      node* n = newnode();
+      n->father = f;
+      n->who = !f->who;
+      n->from = i;
+      n->to = j;
+      n->jump = (1<<(jumploc-10));
+      piece oldpiece = b[i]; b[i] = EMPTY;
+      if (!(oldpiece&KING) && n->who ? (j>=36) : (j<=8)) {
+	n->king = 1;
+	b[j] = oldpiece|KING;
+      }
+      else b[j] = oldpiece;
+      if (jnode) {
+	n->from = jnode->from;
+	n->jump |= jnode->jump;
+	n->king |= jnode->king;
+      }
+      piece jumpedpiece = b[jumploc];
+      b[jumploc] = EMPTY;
+      jumphappened = 0;
+      movepiece(f,j,n);
+      if (forcejumps && jumphappened) killnode(n);
+      else {evaluateboard(n,0); insert(n);}
+      b[i] = oldpiece; b[j] = EMPTY;
+      b[jumploc] = jumpedpiece;
+      jumphappened = 1;
+    }
+  }
+}
+
+void expandnode(node *f) {
+  if (f->son || f->value > 28000) return;	// already done
+  piece turn = f->who ? BLACK : WHITE;
+  for (int i=5; i<40; i++) if (b[i]&turn) movepiece(f,i,0);
+  if (f->son) {
+    f->value = -f->son->value;
+    if (f->brother) f->value -= depthpenalty;
+  }
+  else f->value = 30000;
+}
+
+void makemove(node *n) {
+  b[n->to] = b[n->from];
+  if (n->king) b[n->to] |= KING;
+  b[n->from] = EMPTY;
+  if (n->jump) for(int i=0; i<32; i++) {
+    if (n->jump & (1<<i)) b[10+i] = EMPTY;
+  }
+}
+
+int didabort(void);
+
+int fullexpand(node *f, int level) {
+  if (didabort() || nodes > maxnodes-(maxply*10) || evaluated > maxevaluate) return(0);
+  expandnode(f);
+  if (!f->son) return(1);
+  piece oldboard[45];
+  memmove(oldboard,b,sizeof(b));
+  node* n = f->son;
+  if (!n->jump && n->brother) {if (level<1) return(1); level--;}
+  int i;
+  node* sons[32]; for (i=0; (sons[i++] = n); n = n->brother);
+  int ret = 1;
+  for (i=0; ret && (n = sons[i++]);) {
+    makemove(n);
+    ret = fullexpand(n,level);
+    memmove(b,oldboard,sizeof(b));
+    extract(n);
+    insert(n);
+  }
+  f->value = -f->son->value;
+  return(ret);
+}
+
+int descend(node *f) {
+  static int depth;
+  if (didabort() || nodes > maxnodes || depth >= maxply) return(0);
+  if (f->son) {
+    node* n = f->son;
+    makemove(n);
+    depth++;
+    int ret = descend(n);
+    depth--;
+    extract(n);
+    insert(n);
+    f->value = -f->son->value;
+    return(ret);
+  }
+  else {expandnode(f); return(1);}
+}
+
+char debug;
+
+node *calcmove(node *root) {	// return best move after root
+  expandnode(root);
+  if (!root->son) return(0);	// no move due to loss
+  if (debug) printf("calcmove() initial nodes = %d\n",nodes);
+  evaluated = 0;
+  if (root->son->brother) {
+    int x;
+    for (x = 1; abs(root->value)<28000 && fullexpand(root,x); x++);
+    piece saveboard[45]; memmove(saveboard,b,sizeof(b));
+    while (abs(root->value)<28000) {
+      x = descend(root);
+      memmove(b,saveboard,sizeof(b));
+      if (!x) break;
+    }
+  }
+  if (debug) printf(" evaluated %d, nodes = %d\n", evaluated, nodes);
+  return(root->son);
+}
+
+// the actual game state ----------------
+
+node *root,*undoroot;
+
+piece jumpboards[24][45];	// saved boards for undoing jumps
+int nextjump;
+
+char user;	// 0 = black, 1 = white
+char playing;
+char autoplay;
+
+void newgame(void) {
+
+  int n;
+  for (n=0; n<5; n++) b[n] = BLUE;
+  for (n=5; n<18; n++) b[n] = WHITE;
+  for (n=18; n<27; n++) b[n] = EMPTY;
+  for (n=27; n<40; n++) b[n] = BLACK;
+  for (n=40; n<45; n++) b[n] = BLUE;
+  b[13] = b[22] = b[31] = BLUE;
+
+  centralsquares[15] = centralsquares[16] =
+    centralsquares[19] = centralsquares[20] =
+    centralsquares[24] = centralsquares[25] =
+    centralsquares[28] = centralsquares[29] = 1;
+
+  // set up initial search tree:
+  nextjump = 0;
+  killnode(undoroot);
+  undoroot = root = newnode();
+
+  // make it white's move, so first move is black:
+  root->who = 1;
+  user = 0;
+  playing = 1;
+}
+
+void domove(node* move) {
+  if (move->jump) memmove(jumpboards[nextjump++],b,sizeof(b));
+  makemove(move);
+  extract(move);
+  killnode(root->son);
+  root->son = move;
+  root = move;
+  if (debug) evaluateboard(move,1);
+}
+
+node* undomove() {
+  node *n = root;
+  if (n == undoroot) return 0; // no more undo possible
+  if (n->jump) memmove(b,jumpboards[--nextjump],sizeof(b));
+  else {
+    b[n->from] = b[n->to];
+    if (n->king) b[n->from] &= (WHITE|BLACK);
+    b[n->to] = EMPTY;
+  }
+  root = n->father;
+  killnode(n);
+  root->son = 0;
+  root->value = 0;	// prevent it from thinking game is over
+  playing = 1;
+  if (root == undoroot) user = 0;
+  return n;
+}
+
+const char _usermoves[] =
+"B1D1F1H1A2C2E2G2??B3D3F3H3A4C4E4G4??B5D5F5H5A6C6E6G6??B7D7F7H7A8C8E8G8??";
+#define usermoves(x,y) _usermoves[2*((x)-5)+(y)-1]
+
+void dumpnode(node *n, int help) {
+  int x = n->from;
+  int y = n->to;
+  if (help) printf("%c%c %c%c\t- ",
+		   usermoves(x,1),usermoves(x,2),
+		   usermoves(y,1),usermoves(y,2));
+  printf("%s %ss from %c%c to %c%c",
+	 n->who ? "White" : "Black",
+	 n->jump ? "jump" : "move",
+	 usermoves(x,1),usermoves(x,2),
+	 usermoves(y,1),usermoves(y,2));
+  if (n->jump) {
+    for (int i=0; i<32; i++) if (n->jump & (1<<i))
+      printf(", %c%c",usermoves(10+i,1),usermoves(10+i,2));
+    printf(" removed");
+  }
+  printf(" (%+d).\n",n->value);
+}
+
+int abortflag;
+
+////////////////////////////////////////////////////////////////
+// VT100 Interface:
+#ifdef VT100
+
+void positioncursor(int i) {
+  printf("\033[%d;%dH",
+	 usermoves(i,2)-'0'+1,
+	 2*(usermoves(i,1)-'A')+1);
+}
+
+void outpiecename(piece n) {
+  printf(n&BLACK ? "\033[1;7m" : "\033[1m");
+  putchar(" BW??BW??"[n]);
+  putchar(" BW??KK??"[n]);
+  printf("\033[0m");
+}
+
+void VT100board(void) {
+  printf("\033<\033[H\033[J\033[10r");
+  int l = 0;
+  puts(" A B C D E F G H");
+  for (int i=0; i<4; i++) {
+    int j = 9*i+5;
+    int k;
+    for (k=0; k<4; k++) {
+      printf("\033[7m  \033[0m");
+      outpiecename(b[j+k]);
+    }
+    l++;
+    printf("%d\n",l);
+    j += 4;
+    for (k=0; k<4; k++) {
+      outpiecename(b[j+k]);
+      printf("\033[7m  \033[0m");
+    }
+    l++;
+    printf("%d\n",l);
+  }
+}
+
+void VT100move(node *n, int) {
+  if (!n) return;
+  printf("\0337");
+  positioncursor(n->from);
+  outpiecename(b[n->from]);
+  positioncursor(n->to);
+  outpiecename(b[n->to]);
+  if (n->jump) for(int i=0; i<32; i++) {
+    if (n->jump & (1<<i)) {
+      positioncursor(10+i);
+      outpiecename(b[10+i]);
+    }
+  }
+  printf("\0338");
+}
+
+int decode(char *m) {
+  int i;
+  for(i=5; i<=40; i++)
+    if (toupper(m[0])==usermoves(i,1) && m[1]==usermoves(i,2)) return(i);
+  return(0);
+}
+
+#include <signal.h>
+
+static void sigint(...) {
+  abortflag = 1;
+  signal(SIGINT,sigint);
+}
+
+void fixexit(int x) {
+  printf("\0337\033[r\0338");
+  exit(x);
+}
+
+// Returns a son, or 0 if no move specified, or root to cause "help"
+node *getusermove(void) {
+  int i,j;
+  node *t;
+  char line[100],*m1,*m2;
+
+  if (playing)
+    printf("\033[1m%s's move?\033[0m ",root->who ? "Black" : "White");
+  else
+    printf("\033[1mCommand?\033[0m ");
+  abortflag = 0;
+  if (!gets(line)) {
+    putchar('\n');
+    if (feof(stdin)) fixexit(0);
+    return 0;
+  }
+  for (m1 = line; *m1 && *m1<=' '; m1++);
+  if (!*m1) return(0);
+  m2 = m1+1;
+  if (*m2) m2++;
+  for (; *m2 && *m2<'0'; m2++);
+  if (playing && m1[1]>='0' && m1[1]<='9') {
+    i = decode(m1);
+    j = decode(m2);
+    if (i && j) for (t = root->son; t; t = t->brother)
+      if (t->from == i && t->to == j) return(t);
+    puts("Valid moves are:");
+    m1[0] = 'L';
+  }
+  switch(toupper(m1[0])) {
+  case 0: return(0);
+  case 'A':
+    if (playing) autoplay = 1;
+    return(root);
+  case 'C':
+    puts(copyright);
+    break;
+  case 'D':
+    debug = !debug;
+    printf("Debug is now %s.", debug ? "on" : "off");
+    break;
+  case 'F':
+    forcejumps = !forcejumps;
+    printf("Forced jumps rule is now %s.",forcejumps ? "on" : "off");
+    killnode(root->son); root->son = 0;
+    return(0);
+  case 'L':
+    expandnode(root);
+    if (playing) for (t = root->son; t; t = t->brother) dumpnode(t,1);
+    break;
+  case 'M':
+    return(playing ? root : 0);
+  case 'N':
+    newgame();
+    VT100board();
+    return(0);
+  case 'P':
+    printf("I expect the following moves:\n");
+    for (t = root->son; t; t = t->son) dumpnode(t,0);
+    break;
+  case 'Q':
+    fixexit(0);
+  case 'R':
+    VT100board();
+    break;
+  case 'S':
+    user = !user;
+    return(root);
+  case 'U':
+    VT100move(undomove(),1);
+    VT100move(undomove(),1);
+    return(0);
+  case '+':
+    maxevaluate = maxnodes = 2*maxevaluate;
+    goto J2;
+  case '-':
+    if (maxevaluate > 1)
+      maxevaluate = maxnodes = maxevaluate/2;
+  J2: printf("Moves evaluated set to %d.",maxevaluate);
+    break;
+  default:
+    puts(
+	 "A(utoplay)\n"
+	 "C(opyright)\n"
+	 "D(ebug on/off)\n"
+	 "F(orce jumps rule on/off)\n"
+	 "L(ist legal moves)\n"
+	 "M(ake a move for me)\n"
+	 "N(ew game)\n"
+	 "P(redict next few moves)\n"
+	 "Q(uit)\n"
+	 "R(edraw screen)\n"
+	 "S(witch sides)\n"
+	 "U(ndo)\n"
+	 "+	- smarter\n"
+	 "-	- stupider");
+    expandnode(root);
+    for (t = root->son; t; t = t->brother) dumpnode(t,1);
+  }
+  return(0);
+}
+
+int VT100main() {
+  signal(SIGINT,sigint);
+  VT100board();
+  for (;;) {
+    if (playing) {
+      expandnode(root);
+      if (!root->son) {
+	printf("%s has no move.  Game over.",root->who ? "Black" : "White");
+	playing = autoplay = 0;
+      }
+    }
+    node* move;
+    if (playing && (autoplay || root->who == user)) {
+      move = calcmove(root);
+      if (move->value <= -30000) {
+ 	printf("%s resigns.", move->who ? "White" : "Black");
+ 	move = 0;
+ 	playing = autoplay = 0;
+      }
+    } else {
+      move = getusermove();
+      if (move == root) move = calcmove(root);
+    }
+    if (move) {
+      dumpnode(move,0);
+      domove(move);
+      VT100move(move,0);
+    }
+  }
+}
+
+#endif
+
+////////////////////////////////////////////////////////////////
+// fltk interface:
+#ifdef FLTK
+
+#include <fltk/run.h>
+#include <fltk/events.h>
+#include <fltk/Window.h>
+#include <fltk/xbmImage.h>
+#include <fltk/draw.h>
+#include <FL/Fl_Menu_Item.H>
+#include <fltk/ask.h>
+#include <fltk/Cursor.h>
+
+//----------------------------------------------------------------
+// old 4-level NeXT images have been seperated into bitmaps so they
+// can be drawn with arbitrary colors and real transparency.  This is
+// rather tedious and perhaps fltk should provide a direct support
+// to do this:
+
+#include "black_1.xbm"
+#include "black_2.xbm"
+#include "black_3.xbm"
+#include "black_4.xbm"
+#include "white_1.xbm"
+#include "white_2.xbm"
+#include "white_3.xbm"
+#include "white_4.xbm"
+#include "blackking_1.xbm"
+#include "blackking_2.xbm"
+#include "blackking_3.xbm"
+#include "blackking_4.xbm"
+#include "whiteking_1.xbm"
+#include "whiteking_2.xbm"
+#include "whiteking_3.xbm"
+#include "whiteking_4.xbm"
+
+fltk::xbmImage *bm[4][4];
+
+void make_bitmaps() {
+  if (bm[0][0]) return;
+  bm[0][0] = new fltk::xbmImage(black_1_bits, black_1_width, black_1_height);
+  bm[0][1] = new fltk::xbmImage(black_2_bits, black_1_width, black_1_height);
+  bm[0][2] = new fltk::xbmImage(black_3_bits, black_1_width, black_1_height);
+  bm[0][3] = new fltk::xbmImage(black_4_bits, black_1_width, black_1_height);
+  bm[1][0] = new fltk::xbmImage(white_1_bits, black_1_width, black_1_height);
+  bm[1][1] = new fltk::xbmImage(white_2_bits, black_1_width, black_1_height);
+  bm[1][2] = new fltk::xbmImage(white_3_bits, black_1_width, black_1_height);
+  bm[1][3] = new fltk::xbmImage(white_4_bits, black_1_width, black_1_height);
+  bm[2][0] = new fltk::xbmImage(blackking_1_bits, black_1_width, black_1_height);
+  bm[2][1] = new fltk::xbmImage(blackking_2_bits, black_1_width, black_1_height);
+  bm[2][2] = new fltk::xbmImage(blackking_3_bits, black_1_width, black_1_height);
+  bm[2][3] = new fltk::xbmImage(blackking_4_bits, black_1_width, black_1_height);
+  bm[3][0] = new fltk::xbmImage(whiteking_1_bits, black_1_width, black_1_height);
+  bm[3][1] = new fltk::xbmImage(whiteking_2_bits, black_1_width, black_1_height);
+  bm[3][2] = new fltk::xbmImage(whiteking_3_bits, black_1_width, black_1_height);
+  bm[3][3] = new fltk::xbmImage(whiteking_4_bits, black_1_width, black_1_height);
+}
+
+// Unfortunately, this is necessary on Windows 'cause GDI resources aren't
+// automatically released at program exit
+// WAS: no, fltk should do this! I guess when a bitmap is drawn the resulting
+// image should be put in a list for deletiong on exit.
+// void destroy_bitmaps() {
+//   for (int i = 0; i < 4; i++) for (int j = 0; j < 4; j++) delete bm[i][j];
+// }
+
+#define ISIZE black_1_width
+
+void draw_piece(int which, int x, int y) {
+  if (!fltk::not_clipped(fltk::Rectangle(x,y,ISIZE,ISIZE))) return;
+  switch (which) {
+  case BLACK: which = 0; break;
+  case WHITE: which = 1; break;
+  case BLACKKING: which = 2; break;
+  case WHITEKING: which = 3; break;
+  default: return;
+  }
+  fltk::setcolor(fltk::GRAY00); bm[which][0]->draw(x, y);
+  fltk::setcolor(fltk::GRAY33); bm[which][1]->draw(x, y);
+  fltk::setcolor(fltk::GRAY66); bm[which][2]->draw(x, y);
+  fltk::setcolor(fltk::GRAY99); bm[which][3]->draw(x, y);
+}
+
+//----------------------------------------------------------------
+
+class Board : public fltk::Window {
+  void draw();
+  int handle(int);
+public:
+  void drag_piece(int, int, int);
+  void drop_piece(int);
+  void animate(node* move, int backwards);
+  void computer_move(int);
+  Board(int w, int h) : fltk::Window(w,h) {color(15); /*set_double_buffer();*/}
+};
+
+#define BOXSIZE 52
+#define BORDER 4
+#define BOARDSIZE (8*BOXSIZE+BORDER)
+#define BMOFFSET 5
+
+static int erase_this;  // real location of dragging piece, don't draw it
+static int dragging;	// piece being dragged
+static int dragx;	// where it is
+static int dragy;
+static int showlegal;	// show legal moves
+
+int squarex(int i) {return (usermoves(i,1)-'A')*BOXSIZE+BMOFFSET;}
+int squarey(int i) {return (usermoves(i,2)-'1')*BOXSIZE+BMOFFSET;}
+
+void Board::draw() {
+  make_bitmaps();
+  fltk::setcolor(color()); fltk::fillrect(0,0,w(),h());
+  fltk::setcolor((fltk::Color)107 /*10*/);
+  int x; for (x=0; x<8; x++) for (int y=0; y<8; y++) {
+    if (!((x^y)&1)) fltk::fillrect(BORDER+x*BOXSIZE, BORDER+y*BOXSIZE,
+			     BOXSIZE-BORDER, BOXSIZE-BORDER);
+  }
+  fltk::setcolor(fltk::GRAY20);
+  for (x=0; x<9; x++) {
+    fltk::fillrect(x*BOXSIZE,0,BORDER,h());
+    fltk::fillrect(0,x*BOXSIZE,w(),BORDER);
+  }
+  for (int i = 5; i < 40; i++) if (i != erase_this) {
+    draw_piece(::b[i], squarex(i), squarey(i));
+  }
+  if (showlegal) {
+    fltk::setcolor(fltk::WHITE);
+    node* n;
+    for (n = root->son; n; n = showlegal==2 ? n->son : n->brother) {
+      int x1 = squarex(n->from)+BOXSIZE/2-5;
+      int y1 = squarey(n->from)+BOXSIZE/2-5;
+      int x2 = squarex(n->to)+BOXSIZE/2-5;
+      int y2 = squarey(n->to)+BOXSIZE/2-5;
+      fltk::drawline(x1,y1,x2,y2);
+      fltk::push_matrix();
+      fltk::concat(float(x2-x1),float(y2-y1),float(y1-y2),float(x2-x1),float(x2),float(y2));
+      fltk::addvertex(0,0);
+      fltk::addvertex(-.3f,  .1f);
+      fltk::addvertex(-.3f, -.1f);
+      fltk::fillpath();
+      fltk::pop_matrix();
+    }
+    int num = 1;
+    fltk::setcolor(fltk::BLACK);
+    fltk::setfont(labelfont(),10);
+    for (n = root->son; n; n = showlegal==2 ? n->son : n->brother) {
+      int x1 = squarex(n->from)+BOXSIZE/2-5;
+      int y1 = squarey(n->from)+BOXSIZE/2-5;
+      int x2 = squarex(n->to)+BOXSIZE/2-5;
+      int y2 = squarey(n->to)+BOXSIZE/2-5;
+      char buf[20]; sprintf(buf,"%d",num);
+      fltk::drawtext(buf, float(x1+int((x2-x1)*.85)-3), float(y1+int((y2-y1)*.85)+5));
+      num++;
+    }
+  }
+  if (dragging) draw_piece(dragging, dragx, dragy);
+}
+
+// drag the piece on square i to dx dy, or undo drag if i is zero:
+void Board::drag_piece(int i, int dx, int dy) {
+  dy = (dy&-2) | (dx&1); // make halftone shadows line up
+  if (i != erase_this) drop_piece(erase_this); // should not happen
+  if (!erase_this) { // pick up old piece
+    dragx = squarex(i); dragy = squarey(i);
+    erase_this = i;
+    dragging = ::b[i];
+  }
+  if (dx != dragx || dy != dragy) {
+    redraw(Rectangle(dragx, dragy, ISIZE, ISIZE));
+    redraw(Rectangle(dx, dy, ISIZE, ISIZE));
+  }
+  dragx = dx;
+  dragy = dy;
+}
+
+// drop currently dragged piece on square i
+void Board::drop_piece(int i) {
+  if (!erase_this) return; // should not happen!
+  erase_this = 0;
+  dragging = 0;
+  int x = squarex(i);
+  int y = squarey(i);
+  if (x != dragx || y != dragy) {
+    redraw(Rectangle(dragx, dragy, ISIZE, ISIZE));
+    redraw(Rectangle(x, y, ISIZE, ISIZE));
+  }
+}
+
+#ifndef _WIN32
+# include <unistd.h>
+#endif
+
+// show move (call this *before* the move, *after* undo):
+void Board::animate(node* move, int backwards) {
+  if (showlegal) {showlegal = 0; redraw();}
+  if (!move) return;
+  int f = move->from;
+  int t = move->to;
+  if (backwards) {int x = f; f = t; t = x;}
+  int x1 = squarex(f);
+  int y1 = squarey(f);
+  int x2 = squarex(t);
+  int y2 = squarey(t);
+  const int STEPS=20; // was 35;
+  for (int i=0; i<STEPS; i++) {
+    int x = x1+(x2-x1)*i/STEPS;
+    int y = y1+(y2-y1)*i/STEPS;
+    drag_piece(move->from,x,y);
+    fltk::flush();
+#ifndef _WIN32
+    usleep(0);
+#endif
+  }
+  drop_piece(t);
+  if (move->jump) redraw();
+}
+
+int busy; // causes pop-up abort menu
+
+void message(const char* m, ...) {
+  char buffer[2048];
+  va_list a;
+  va_start(a,m);
+  vsprintf(buffer, m, a);
+  va_end(a);
+  fltk::message(buffer);
+}
+
+void Board::computer_move(int help) {
+  if (!playing) return;
+  cursor(fltk::CURSOR_WAIT);
+  fltk::flush();
+  busy = 1; abortflag = 0;
+  node* move = calcmove(root);
+  busy = 0;
+  if (move) {
+    if (!help && move->value <= -30000) {
+      message("%s resigns", move->who ? "White" : "Black");
+      playing = autoplay = 0;
+      cursor(fltk::CURSOR_DEFAULT);
+      return;
+    }
+    animate(move,0);
+    domove(move);
+  }
+  expandnode(root);
+  if (!root->son) {
+    message("%s has no move", root->who ? "Black" : "White");
+    playing = autoplay = 0;
+  }
+  if (!autoplay) cursor(fltk::CURSOR_DEFAULT);
+}
+
+extern Fl_Menu_Item menu[];
+extern Fl_Menu_Item busymenu[];
+static Board* board;
+
+int Board::handle(int e) {
+  board = this;
+  if (busy) {
+    switch(e) {
+    case fltk::PUSH:
+      busymenu->popup(fltk::event_x(), fltk::event_y());
+      return 1;
+    case fltk::SHORTCUT:
+      return busymenu->test_shortcut() != 0;
+    default:
+      return Window::handle(e);
+    }
+  }
+  node *t, *n;
+  static int deltax, deltay;
+  int dist;
+  switch (e) {
+  case fltk::PUSH:
+    if (fltk::event_button() > 1) {
+      static const Fl_Menu_Item* previous;
+      const Fl_Menu_Item* i =
+	menu->popup(fltk::event_x(), fltk::event_y(), 0, previous);
+      if (i) previous = i;
+      return 1;
+    }
+    if (playing) {
+      expandnode(root);
+      for (t = root->son; t; t = t->brother) {
+	int x = squarex(t->from);
+	int y = squarey(t->from);
+	if (fltk::event_inside(Rectangle(x,y,BOXSIZE,BOXSIZE))) {
+	  deltax = fltk::event_x()-x;
+	  deltay = fltk::event_y()-y;
+	  drag_piece(t->from,x,y);
+	  return 1;
+	}
+      }
+    }
+    return 0;
+  case fltk::SHORTCUT:
+    return menu->test_shortcut() != 0;
+  case fltk::DRAG:
+    drag_piece(erase_this, fltk::event_x()-deltax, fltk::event_y()-deltay);
+    return 1;
+  case fltk::RELEASE:
+    // find the closest legal move he dropped it on:
+    dist = 50*50; n = 0;
+    for (t = root->son; t; t = t->brother) if (t->from==erase_this) {
+      int d1 = fltk::event_x()-deltax-squarex(t->to);
+      int d = d1*d1;
+      d1 = fltk::event_y()-deltay-squarey(t->to);
+      d += d1*d1;
+      if (d < dist) {dist = d; n = t;}
+    }
+    if (!n) {drop_piece(erase_this); return 1;} // none found
+    drop_piece(n->to);
+    domove(n);
+    if (showlegal) {showlegal = 0; redraw();}
+    if (n->jump) redraw();
+    computer_move(0);
+    return 1;
+  default:
+    return Window::handle(e);
+  }
+}
+
+void quit_cb(fltk::Widget*, void*) { exit(0); }
+
+#include <fltk/visual.h>
+int FLTKmain(int argc, char** argv) {
+  fltk::visual(fltk::DOUBLE_BUFFER|fltk::INDEXED_COLOR);
+  Board b(BOARDSIZE,BOARDSIZE);
+  b.callback(quit_cb);
+  b.show(argc,argv);
+  return fltk::run();
+} 
+
+void autoplay_cb(fltk::Widget*, void*) {
+  if (autoplay) {autoplay = 0; return;}
+  if (!playing) return;
+  autoplay = 1;
+  while (autoplay) {board->computer_move(0); board->computer_move(0);}
+}
+
+fltk::Window *copyright_window;
+void copyright_cb(fltk::Widget*, void*) {
+  if (!copyright_window) {
+    copyright_window = new fltk::Window(400,270,"About checkers");
+    //copyright_window->color(fltk::WHITE);
+    copyright_window->begin();
+    fltk::Widget *b = new fltk::Widget(20,0,380,270,copyright);
+    b->labelsize(10);
+    b->clear_flag(fltk::ALIGN_MASK);
+    b->set_flag(fltk::ALIGN_LEFT|fltk::ALIGN_INSIDE|fltk::ALIGN_WRAP);
+    copyright_window->end();
+  }
+  copyright_window->hotspot(copyright_window);
+  copyright_window->set_non_modal();
+  copyright_window->show();
+}
+
+void debug_cb(fltk::Widget* v, void*) {
+  debug = !debug;
+  // LAME! Fltk2 does not emulate Fl_Menu_Item well enough to allow any
+  // changes to be remembered. Go change the table directly:
+  Fl_Menu_Item* item = menu+8;
+  if (debug) item->set(); else item->clear();
+}
+
+void forced_cb(fltk::Widget* v, void*) {
+  forcejumps = !forcejumps;
+  // LAME! Fltk2 does not emulate Fl_Menu_Item well enough to allow any
+  // changes to be remembered. Go change the table directly:
+  Fl_Menu_Item* item = menu+7;
+  if (forcejumps) item->set(); else item->clear();
+  killnode(root->son); root->son = 0;
+  if (showlegal) {expandnode(root); board->redraw();}
+}
+
+void move_cb(fltk::Widget*, void*) {
+  if (playing) board->computer_move(1);
+  if (playing) board->computer_move(0);
+}
+
+void newgame_cb(fltk::Widget*, void*) {
+  showlegal = 0;
+  newgame();
+  board->redraw();
+}
+
+void legal_cb(fltk::Widget*, void*) {
+  if (showlegal == 1) {showlegal = 0; board->redraw(); return;}
+  if (!playing) return;
+  expandnode(root);
+  showlegal = 1; board->redraw();
+}
+
+void predict_cb(fltk::Widget*, void*) {
+  if (showlegal == 2) {showlegal = 0; board->redraw(); return;}
+  if (playing) expandnode(root);
+  showlegal = 2; board->redraw();
+}
+
+void switch_cb(fltk::Widget*, void* pb) {
+  user = !user;
+  board->computer_move(0);
+}
+
+void undo_cb(fltk::Widget*, void* pb) {
+  board->animate(undomove(),1);
+  board->animate(undomove(),1);
+}
+
+//--------------------------
+
+#include <fltk/Slider.h>
+#include <fltk/ValueInput.h>
+
+fltk::Window *intel_window;
+fltk::ValueInput *intel_output;
+
+void intel_slider_cb(fltk::Widget*w, void*) {
+  double v = ((fltk::Slider*)w)->value();
+  int n = int(v*v);
+  intel_output->value(n);
+  maxevaluate = maxnodes = n;
+}
+
+void intel_cb(fltk::Widget*, void*) {
+  if (!intel_window) {
+    intel_window = new fltk::Window(200,25,"Checkers Intelligence");
+    intel_window->begin();
+    fltk::Slider* s = new fltk::Slider(60,0,140,25);
+    s->minimum(1); s->maximum(500); s->value(50);
+    s->callback(intel_slider_cb);
+    intel_output = new fltk::ValueInput(0,0,60,25);
+    intel_output->value(maxevaluate);
+    intel_window->resizable(s);
+    intel_window->end();
+  }
+  intel_window->hotspot(intel_window);
+  intel_window->set_non_modal();
+  intel_window->show();
+}
+
+//---------------------------
+
+void stop_cb(fltk::Widget*, void*) {abortflag = 1;}
+
+void continue_cb(fltk::Widget*, void*) {}
+
+Fl_Menu_Item menu[] = {
+  {"Autoplay", 'a', autoplay_cb},
+  {"Legal moves", 'l', legal_cb},
+  {"Move for me", 'm', move_cb},
+  {"New game", 'n', newgame_cb},
+  {"Predict", 'p', predict_cb},
+  {"Switch sides", 's', switch_cb},
+  {"Undo", 'u', undo_cb, 0, FL_MENU_DIVIDER},
+  {"Forced jumps rule", 'f', forced_cb, 0, FL_MENU_TOGGLE|FL_MENU_VALUE},
+  {"Debug", 'd', debug_cb, 0, FL_MENU_TOGGLE},
+  {"Intelligence...", 'i', intel_cb, 0, FL_MENU_DIVIDER},
+  {"About...", 'c', copyright_cb},
+  {"Quit", 'q', quit_cb},
+  {(const char *)0}};
+
+Fl_Menu_Item busymenu[] = {
+  {"Stop", '.', stop_cb},
+  {"Autoplay", 'a', autoplay_cb},
+  {"Continue", 0, continue_cb},
+  {"Debug", 'd', debug_cb, 0, FL_MENU_TOGGLE},
+  {"Intelligence...", 'i', intel_cb},
+  {"Copyright", 'c', copyright_cb},
+  {"Quit", 'q', quit_cb},
+  {(const char *)0}};
+
+#endif
+
+////////////////////////////////////////////////////////////////
+// parts shared by both interface:
+
+#ifdef FLTK
+#ifdef VT100
+#define BOTH
+#endif
+#endif
+
+#ifdef BOTH
+int terminal;
+int arg(int, char **argv, int &i) {
+  if (argv[i][1] == 't') {terminal = 1; i++; return 1;}
+  return 0;
+}
+#endif
+
+int didabort(void) {
+#ifdef FLTK
+#ifdef BOTH
+  if (!terminal)
+#endif
+    fltk::check();
+#endif
+  if (abortflag) {
+    autoplay = 0;
+    abortflag = 0;
+    return 1;
+  }
+  return(0);
+}
+
+int main(int argc, char **argv) {
+  seed = time(0);
+  newgame();
+#ifdef BOTH
+  int i = 1;
+  if (fltk::args(argc, argv, i, arg) < argc) {
+    fprintf(stderr," -t : use VT100 display\n", fltk::help);
+    exit(1);
+  }
+  if (!getenv("DISPLAY")) terminal = 1;
+  if (!terminal)
+#endif
+#ifdef FLTK
+    return FLTKmain(argc,argv);
+#endif
+#ifdef VT100
+  return VT100main();
+#endif
+}
+
+//
+// End of "$Id: checkers.cxx 7513 2010-04-15 17:19:27Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/circle.xbm
===================================================================
--- branches/branch-3.0-2011/test2/circle.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/circle.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,517 @@
+#define circle_width 220
+#define circle_height 220
+static unsigned char circle_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 
+  0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 
+  0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 
+  0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 
+  0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 
+  0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 
+  0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x01, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 
+  0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 
+  0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 
+  0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 
+  0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 
+  0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 
+  0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 
+  0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 
+  0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 
+  0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 
+  0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 
+  0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 
+  0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 
+  0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 
+  0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 
+  0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 
+  0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 
+  0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 
+  0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 
+  0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 
+  0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x07, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 
+  0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 
+  0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x03, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 
+  0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 
+  0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 
+  0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 
+  0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x7f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 
+  0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x3f, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 
+  0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 
+  0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x0f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 
+  0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x03, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xf8, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 
+  0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x01, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 
+  0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0x7f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 
+  0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0x1f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 
+  0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 
+  0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 
+  0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 
+  0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 
+  0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x1f, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, };

Added: branches/branch-3.0-2011/test2/classes.cxx
===================================================================
--- branches/branch-3.0-2011/test2/classes.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/classes.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,86 @@
+// classes.cxx (example 3a)
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Slider.h>
+#include <fltk/Button.h>
+#include <fltk/IntInput.h>
+#include <stdlib.h>
+using namespace fltk;
+
+static void exit_callback(Widget *, void *) {
+  exit(0);
+}
+
+class SampleWindow : public Window {
+  IntInput intinput;
+  Button copy_button;
+  Slider slider;
+  Button down_button;
+  Button up_button;
+  Button exit_button;
+
+  inline void copy_callback_i() {
+    slider.value(intinput.ivalue());
+  }
+  static void copy_callback(Widget*, void* v) {
+    ((SampleWindow*)v)->copy_callback_i();
+  }
+
+  inline void down_callback_i() {
+    slider.value(slider.value()-1);
+    intinput.value(slider.value());
+  }
+  static void down_callback(Widget*, void* v) {
+    ((SampleWindow*)v)->down_callback_i();
+  }
+
+  inline void up_callback_i() {
+    slider.value(slider.value()+1);
+    intinput.value(slider.value());
+  }
+  static void up_callback(Widget*, void* v) {
+    ((SampleWindow*)v)->up_callback_i();
+  }
+
+  inline void slider_callback_i(Slider* slider) {
+    intinput.value(slider->value());
+  }
+  static void slider_callback(Widget* w, void* v) {
+    ((SampleWindow*)v)->slider_callback_i((Slider*)w);
+  }
+
+public:
+
+  SampleWindow(const char* label=0) :
+    Window(USEDEFAULT,USEDEFAULT,320,90,label,true),
+    intinput(10,10,100,20),
+    copy_button(110,10,100,20,"copy to slider"),
+    slider(10,35,300,20),
+    down_button(50,60,50,20,"down"),
+    up_button(150,60,50,20,"up"),
+    exit_button(250,60,50,20,"exit")
+  {
+    copy_button.callback(copy_callback,this);
+    down_button.callback(down_callback,this);
+    up_button.callback(up_callback,this);
+    slider.callback(slider_callback,this);
+    slider.set_horizontal(); slider.type(Slider::TICK_ABOVE);
+    slider.range(-10,10);
+    slider.step(1);
+    slider.value(0);
+    exit_button.callback(exit_callback);
+    end();
+  }
+
+  ~SampleWindow() {}
+
+};
+
+int main(int argc, char ** argv) {
+  SampleWindow window1("Window 1");
+  SampleWindow window2("Window 2");
+  window1.show(argc,argv);
+  window2.show();
+  return run();
+}

Added: branches/branch-3.0-2011/test2/clock.cxx
===================================================================
--- branches/branch-3.0-2011/test2/clock.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/clock.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,102 @@
+//
+// "$Id: clock.cxx 5972 2007-11-14 16:49:25Z dejan $"
+//
+// Clock test program 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".
+//
+
+#include <fltk/ShapedWindow.h>
+#include <fltk/Clock.h>
+#include <fltk/PopupMenu.h>
+#include <fltk/Menu.h>
+#include <fltk/Item.h>
+#include <fltk/SharedImage.h>
+#include <fltk/ask.h>
+#include <fltk/events.h>
+#include <fltk/run.h>
+#include <stdlib.h>
+
+using namespace fltk;
+#include "circle.xbm" // bitmap mask for window shape
+
+class ClockWindow : public ShapedWindow {
+  public:
+    ClockWindow(int W, int H, const char *l = 0) : ShapedWindow(W,H,l) {}
+    int handle(int);
+};
+
+int ClockWindow::handle(int e) {
+  static int bx, by;
+  static int button1 = 0;
+  if (e == PUSH) button1 = (fltk::event_button() == 1);
+  if (button1) switch(e) {
+    case DRAG:
+      position(x()+event_x_root()-bx, y()+event_y_root()-by);
+    case PUSH:
+      bx = event_x_root(); by = event_y_root();
+      show(); // so the window will click-to-front
+      return 1;
+  }
+  return ShapedWindow::handle(e);
+}
+
+Item *about_item, *exit_item;
+void callback(Widget* w, void* d) {
+  if (((Menu*)w)->value()) exit(0);
+  message("FLTK-- Copyright 2000 Bill Spitzak and others");
+}
+
+int main(int argc, char **argv) {
+  ClockWindow window(220, 220, "fltk::Clock");
+  window.color(12);
+  window.begin();
+  // don't show window manager border-- some window managers do this for you
+  // if an arbitrary shape is assigned to the window.
+  // previously windows.clear_border();
+  // window.border(false); // not needed now because now ShapedWindow implicitly sets border to false.
+#ifdef WIN32
+  Clock clock(0,0,220,220);
+#else
+  Clock clock(10,10,200,200); // Fabien : why ?
+#endif
+  clock.type(ClockOutput::ROUND);
+  clock.box(fltk::OVAL_BOX);
+  clock.align(fltk::ALIGN_BOTTOM|fltk::ALIGN_WRAP);
+  PopupMenu popup(0, 0, 220, 220);
+  popup.type(PopupMenu::POPUP3);
+  popup.begin();
+  about_item = new Item("About clock");
+  exit_item = new Item("Exit clock");
+  popup.end();
+  popup.callback(callback);
+  //window.resizable(popup); //- Not today, maybe never!
+  window.end();
+  window.xclass("fltkClock");
+  window.show(argc, argv);
+  xbmImage shape(circle_bits, circle_width, circle_height);
+  window.shape(shape);
+
+  return run();
+}
+
+//
+// End of "$Id: clock.cxx 5972 2007-11-14 16:49:25Z dejan $".
+//

Added: branches/branch-3.0-2011/test2/color_chooser.cxx
===================================================================
--- branches/branch-3.0-2011/test2/color_chooser.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/color_chooser.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,165 @@
+// "$Id: color_chooser.cxx 6249 2008-09-15 06:21:01Z spitzak $"
+//
+// Color chooser test program 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:
+//
+//     http://www.fltk.org/str.php
+//
+
+#include <config.h>
+#undef USE_XFT // this breaks the <x.h> header file
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/visual.h>
+#include <fltk/Button.h>
+#include <fltk/show_colormap.h>
+#include <fltk/ColorChooser.h>
+#include <fltk/rgbImage.h>
+#include <fltk/x.h>
+#include <fltk/error.h>
+#include <fltk/draw.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#if USE_X11
+  #include "list_visuals.cxx"
+#endif
+
+class GrayLines : public fltk::Widget {
+public:
+  GrayLines(int X, int Y, int W, int H, const char* L)
+    : fltk::Widget(X,Y,W,H,L) { }
+  
+  void draw() {
+    // Use every color in the gray ramp:
+    for (int i = 0; i < 3*8; i++) {
+      fltk::setcolor((fltk::Color)(fltk::GRAY00+i));
+      fltk::drawline(i, 0, i, h());
+    }
+  }
+};
+
+#define freecolor_cell (fltk::FREE_COLOR)
+
+// Callback function for "fltk::show_colormap" button
+static void colormap_cb(fltk::Widget *w, void *v) {
+  uchar r, g, b;
+  fltk::Color c = fltk::show_colormap(w->parent()->color());
+  fltk::split_color(c, r,g,b);
+  // Set new color to our free color index
+  fltk::set_color_index(freecolor_cell, fltk::color(r,g,b));
+  // Redraw parent box
+  w->parent()->redraw();
+}
+
+// Callback function for "fltk::choose_color" button
+static void choose_color_cb(fltk::Widget *w, void *v) {
+  uchar r,g,b;
+  fltk::split_color(w->parent()->color(),r,g,b);
+  if (!fltk::color_chooser("New color:", r,g,b)) return;
+  // Set new color to our free color index
+  fltk::set_color_index(freecolor_cell, fltk::color(r,g,b));
+  // Redraw parent box
+  w->parent()->redraw();
+}
+
+// Main entry point for application
+int main(int argc, char **argv) 
+{
+  // Set default color for our free color index
+  fltk::set_color_index(freecolor_cell, fltk::color(145,159,170));
+  
+  // Create window
+  fltk::Window window(200, 170, "color_chooser test");  
+  window.begin();
+
+  // Create widget container group
+  fltk::Group gbox(10, 10, window.w()-20, window.h()-20);
+  gbox.box(fltk::THIN_DOWN_BOX);
+  gbox.color(freecolor_cell);
+  gbox.begin();
+
+  // Create button
+  fltk::Button button1(50,20,120,30, "fltk::show_colormap");
+  button1.callback(colormap_cb);
+
+  // Create button
+  fltk::Button button2(50,60,120,30, "fltk::choose_color");
+  button2.callback(choose_color_cb);
+
+  // Create lines widget
+  GrayLines lines(10,20,3*8,120, "Lines");
+  lines.align(fltk::ALIGN_TOP);
+
+  // We're done with the group
+  gbox.end();
+
+  // Test command line options
+  int i = 1;
+  if (!fltk::args(argc, argv, i) || i != argc-1) {
+    printf("usage: %s <switches> visual-number\n"
+	   " - : default visual\n"
+	   " r : call fltk::visual(fltk::RGB_COLOR)\n"
+	   " c : call fltk::own_colormap()\n",argv[0]);
+#if USE_X11
+    printf(" # : use this visual with an empty colormap:\n");
+    list_visuals();
+#endif
+    puts("\n Invalid parameter, using with default visual");
+  }
+
+  // Parse command line options  
+  if (argc > 1 && argv[i][0] == 'r') {
+    if (!fltk::visual(fltk::RGB_COLOR)) fltk::fatal("fltk::visual(fltk::RGB_COLOR) returned false.\n");
+  } 
+  else if (argc > 1 && argv[i][0] == 'c') {
+    fltk::own_colormap();
+  } 
+  else if (argc > 1 && argv[i][0] != '-') {
+#if USE_X11
+    int visid = atoi(argv[i]);
+    fltk::open_display();
+    XVisualInfo templt; int num;
+    templt.visualid = visid;
+    fltk::xvisual= XGetVisualInfo(fltk::xdisplay, VisualIDMask, &templt, &num);
+    if (!fltk::xvisual) fltk::fatal("No visual with id %d",visid);
+    fltk::xcolormap = XCreateColormap(fltk::xdisplay, RootWindow(fltk::xdisplay,fltk::xscreen),
+				  fltk::xvisual->visual, AllocNone);
+# if !USE_CAIRO
+    fltk::xpixel(fltk::BLACK); // make sure black is allocated
+# endif
+#else
+    fltk::fatal("Visual id's not supported on this platform");
+#endif
+  }
+
+  // Show window
+  window.show(argc, argv);
+
+  // Run FLTK event loop
+  return fltk::run();
+}
+
+//
+// End of "$Id: color_chooser.cxx 6249 2008-09-15 06:21:01Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/connect.cxx
===================================================================
--- branches/branch-3.0-2011/test2/connect.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/connect.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,75 @@
+//
+// "$Id: connect.cxx 4886 2006-03-30 09:55:32Z fabien $"
+//
+// PPP example program for the Fast Light Tool Kit (FLTK).
+//
+// Program to make a button to turn a ppp connection on/off.
+// You must chmod +s /usr/sbin/pppd, and put all the options
+// into /etc/ppp/options.
+//
+// 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".
+//
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <signal.h>
+#include <sys/wait.h>
+
+#include <fltk/Fl.h>
+#include <fltk/Fl_Window.h>
+#include <fltk/Fl_Toggle_Button.h>
+
+int running;	// actually the pid
+Fl_Toggle_Button *Button;
+
+void sigchld(int) {
+  waitpid(running, 0, 0);
+  running = 0;
+  Button->value(0);
+}
+
+void cb(Fl_Widget *o, void *) {
+  if (((Fl_Toggle_Button*)o)->value()) {
+    if (running) return;
+    running = fork();
+    if (!running) execl("/usr/sbin/pppd","pppd","-detach",0);
+    else signal(SIGCHLD, sigchld);
+  } else {
+    if (!running) return;
+    kill(running, SIGINT);
+    waitpid(running, 0, 0);
+    running = 0;
+  }
+}
+
+int main(int argc, char ** argv) {
+   Fl_Window window(100,50);
+   Fl_Toggle_Button button(0,0,100,50,"Connect");
+   Button = &button;
+   button.color(1,2);
+   button.callback(cb,0);
+   window.show(argc,argv);
+   return Fl::run();
+}
+
+//
+// End of "$Id: connect.cxx 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/cube.cxx
===================================================================
--- branches/branch-3.0-2011/test2/cube.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/cube.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,202 @@
+//
+// "$Id: cube.cxx 4944 2006-04-13 10:39:47Z fabien $"
+//
+// OpenGL test program for the Fast Light Tool Kit (FLTK).
+//
+// Modified to have 2 cubes to test multiple OpenGL contexts
+//
+// 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".
+//
+
+#include <config.h>
+#include <fltk/run.h>
+#include <fltk/draw.h>
+#include <fltk/Window.h>
+#include <fltk/Box.h>
+#include <fltk/Button.h>
+#include <fltk/RadioLightButton.h>
+#include <fltk/Slider.h>
+#include <stdlib.h>
+
+using namespace fltk;
+
+#if !HAVE_GL
+#include <fltk/ask.h>
+
+int main(int, char**) {
+  fltk::alert("This demo does not work without OpenGL");
+  return 1;
+}
+#else
+#include <fltk/GlWindow.h>
+#include <fltk/gl.h>
+
+class cube_box : public GlWindow {
+  void draw();
+public:
+  double lasttime;
+  int wire;
+  double size;
+  double speed;
+  cube_box(int x,int y,int w,int h,const char *l=0)
+    : GlWindow(x,y,w,h,l) {lasttime = 0.0;}
+};
+
+/* The cube definition */
+float v0[3] = {0.0, 0.0, 0.0};
+float v1[3] = {1.0, 0.0, 0.0};
+float v2[3] = {1.0, 1.0, 0.0};
+float v3[3] = {0.0, 1.0, 0.0};
+float v4[3] = {0.0, 0.0, 1.0};
+float v5[3] = {1.0, 0.0, 1.0};
+float v6[3] = {1.0, 1.0, 1.0};
+float v7[3] = {0.0, 1.0, 1.0};
+
+#define v3f(x) glVertex3fv(x)
+
+void drawcube(int wire) {
+/* Draw a colored cube */
+  glBegin(wire ? GL_LINE_LOOP : GL_POLYGON);
+  glColor3ub(0,0,255);
+  v3f(v0); v3f(v1); v3f(v2); v3f(v3);
+  glEnd();
+  glBegin(wire ? GL_LINE_LOOP : GL_POLYGON);
+  glColor3ub(0,255,255); v3f(v4); v3f(v5); v3f(v6); v3f(v7);
+  glEnd();
+  glBegin(wire ? GL_LINE_LOOP : GL_POLYGON);
+  glColor3ub(255,0,255); v3f(v0); v3f(v1); v3f(v5); v3f(v4);
+  glEnd();
+  glBegin(wire ? GL_LINE_LOOP : GL_POLYGON);
+  glColor3ub(255,255,0); v3f(v2); v3f(v3); v3f(v7); v3f(v6);
+  glEnd();
+  glBegin(wire ? GL_LINE_LOOP : GL_POLYGON);
+  glColor3ub(0,255,0); v3f(v0); v3f(v4); v3f(v7); v3f(v3);
+  glEnd();
+  glBegin(wire ? GL_LINE_LOOP : GL_POLYGON);
+  glColor3ub(255,0,0); v3f(v1); v3f(v2); v3f(v6); v3f(v5);
+  glEnd();
+}
+
+void cube_box::draw() {
+  lasttime = lasttime+speed;
+  if (!valid()) {
+    glLoadIdentity();
+    glViewport(0,0,w(),h());
+    glEnable(GL_DEPTH_TEST);
+    glFrustum(-1,1,-1,1,2,10000);
+    glTranslatef(0,0,-10);
+    glsetfont(HELVETICA_BOLD, 16 );
+  }
+  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+  glPushMatrix();
+  glRotatef(float(lasttime*1.6),0,0,1);
+  glRotatef(float(lasttime*4.2),1,0,0);
+  glRotatef(float(lasttime*2.3),0,1,0);
+  glTranslatef(-1.0, 1.2f, -1.5);
+  glScalef(float(size),float(size),float(size));
+  drawcube(wire);
+  glPopMatrix();
+  color(GRAY75);
+  glDisable(GL_DEPTH_TEST);
+  gldrawtext(wire ? "Cube: wire" : "Cube: flat", -4.5f, -4.5f );
+  glEnable(GL_DEPTH_TEST);
+}
+
+Window *form;
+Slider *speed, *size;
+Button *button, *wire, *flat;
+cube_box *cube, *cube2;
+
+static void exit_cb(Widget*, void*) {
+  form->hide();
+}
+
+void makeform(const char *name) {
+  form = new Window(510+390,390,name);
+  form->begin();
+  Widget *box = new Widget(20,20,350,350,"");
+  box->box(DOWN_BOX);
+  box = new Widget(510,20,350,350,"");
+  box->box(DOWN_BOX);
+  speed = new Slider(390,90,40,220,"Speed");
+  speed->set_vertical();
+  size = new Slider(450,90,40,220,"Size");
+  size->set_vertical();
+  wire = new RadioLightButton(390,20,100,30,"Wire");
+  flat = new RadioLightButton(390,50,100,30,"Flat");
+  button = new Button(390,340,100,30,"Exit");
+  button->callback(exit_cb);
+  cube = new cube_box(23,23,344,344, 0);
+  cube2 = new cube_box(513,23,344,344, 0);
+  Widget *b = new Widget(cube->x(),size->y(), cube->w(),size->h(),0);
+  b->box(NO_BOX);
+  form->resizable(b);
+  b->hide();
+  form->end();
+}
+
+/* 
+ * It should be noted that it is not a good practice to have an idle 
+ * callback in place at all times because it will eat all available 
+ * processor time. A timout callback would be a better solution.
+ * However, "idle" is used in this particular test program to show
+ * maximum OpenGL performance.
+ */
+
+void idle_cb(void*) {
+  cube->wire = wire->value();
+  cube2->wire = !wire->value();
+  cube->size = cube2->size = size->value();
+  cube->speed = cube2->speed = speed->value();
+  cube->redraw();
+  cube2->redraw();
+}
+
+int main(int argc, char **argv) {
+  makeform(argv[0]);
+  speed->range(0,4);
+  speed->value(cube->speed = cube2->speed = 1.0);
+  size->range(0.01,4);
+  size->value(cube->size = cube2->size = 1.0);
+  flat->value(1); cube->wire = 0; cube2->wire = 1;
+  form->label("cube");
+  form->show(argc,argv);
+  cube->show();
+  cube2->show();
+#if 0
+  // This demonstrates how to manipulate OpenGL contexts.
+  // In this case the same context is used by multiple windows (I'm not
+  // sure if this is allowed on Win32, can somebody check?).
+  // This fixes a bug on the XFree86 3.0 OpenGL where only one context
+  // per program seems to work, but there are probably better uses for
+  // this!
+  cube->make_current(); // causes context to be created
+  cube2->context(cube->context()); // share the contexts
+#endif
+  fltk::add_idle(idle_cb, 0);
+  fltk::run();
+  return 0;
+}
+
+#endif
+
+//
+// End of "$Id: cube.cxx 4944 2006-04-13 10:39:47Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/cursor.cxx
===================================================================
--- branches/branch-3.0-2011/test2/cursor.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/cursor.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,112 @@
+//
+// "$Id: cursor.cxx 6793 2009-06-22 18:01:01Z yuri $"
+//
+// Cursor test program 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 is a complete rewrite that replaces the old test program.
+// Cursors are no longer identified by an integer.
+
+#include <config.h> 
+#include <fltk/run.h>
+#include <fltk/events.h>
+#include <fltk/Window.h>
+#include <fltk/Cursor.h>
+#ifdef USE_XCURSOR
+#include <fltk/SharedImage.h>
+#include <stdio.h>
+#endif
+
+using namespace fltk;
+
+class CursorBox : public Widget {
+  int handle(int);
+public:
+  Cursor* cursor;
+  CursorBox(int x, int y, int w, int h, const char* name, Cursor* c)
+    : Widget(x,y,w,h,name), cursor(c) {}
+};
+
+int CursorBox::handle(int event) {
+  if (event == ENTER) Widget::cursor(cursor);
+  if (event == PUSH) return true; // drag the cursor around
+  return Widget::handle(event);
+}
+
+struct gcc4_bug_workaround {const char* name; Cursor* cursor;} table[] = {
+  {"0", 0},
+  {"CURSOR_ARROW",	CURSOR_ARROW},
+  {"CURSOR_CROSS",	CURSOR_CROSS},
+  {"CURSOR_WAIT",	CURSOR_WAIT},
+  {"CURSOR_INSERT",	CURSOR_INSERT},
+  {"CURSOR_HAND",	CURSOR_HAND},
+  {"CURSOR_HELP",	CURSOR_HELP},
+  {"CURSOR_MOVE",	CURSOR_MOVE},
+  {"CURSOR_NS",		CURSOR_NS},
+  {"CURSOR_WE",		CURSOR_WE},
+  {"CURSOR_NWSE",	CURSOR_NWSE},
+  {"CURSOR_NESW",	CURSOR_NESW},
+  {"CURSOR_NO",		CURSOR_NO},
+  {"CURSOR_NONE",	CURSOR_NONE},
+#ifdef USE_XCURSOR
+  {"CUSTOM_CURSOR",	0},
+#endif
+};
+#define COUNT (sizeof(table)/sizeof(table[0]))
+#define W 200
+#define H 25
+#define GAP 5
+
+#ifdef USE_XCURSOR
+int load_file(int argc, char** argv, int&i){
+  Image *img = SharedImage::get(argv[i]);
+  if( img ){
+    table[COUNT-1].cursor = fltk::cursor(img, 0, 0);
+    ++i;
+    return 1;
+  }
+  return 0;
+}
+
+int main(int argc, char **argv) {
+  register_images();
+  int i;
+  if ( fltk::args(argc, argv, i, load_file) < argc -1) {
+    fprintf(stderr,"args return %d (%d)\n",i,argc);
+    return 1;
+  }
+  if(!table[COUNT-1].cursor)table[COUNT-1].cursor = fltk::cursor(SharedImage::get("porsche.xpm"),32,32);
+#else
+int main(int argc, char **argv) {
+#endif
+  Window window(W+2*GAP, (H+GAP)*COUNT+GAP);
+  window.begin();
+  for (unsigned i = 0; i < COUNT; i++)
+    new CursorBox(GAP, GAP+i*(H+GAP), W, H, table[i].name, table[i].cursor);
+  window.end();
+  window.show(argc, argv);
+  return run();
+}
+
+//
+// End of "$Id: cursor.cxx 6793 2009-06-22 18:01:01Z yuri $".
+//

Added: branches/branch-3.0-2011/test2/curve.cxx
===================================================================
--- branches/branch-3.0-2011/test2/curve.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/curve.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,115 @@
+//
+// "$Id: curve.cxx 5557 2006-12-19 18:56:00Z spitzak $"
+//
+// Curve test program 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".
+//
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/ValueSlider.h>
+#include <fltk/draw.h>
+#include <fltk/ToggleButton.h>
+
+using namespace fltk;
+
+float xy[10] = {
+  20,20, 50,200, 100,20, 200,200, 0, 0};
+const char* name[10] = {
+  "X0", "Y0", "X1", "Y1", "X2", "Y2", "X3", "Y3", "rotate", "line"};
+
+int points;
+
+class Drawing : public Widget {
+  void draw() {
+    push_clip(0,0,w(),h());
+    setcolor(GRAY20);
+    fillrect(0,0,w(),h());
+    push_matrix();
+    if (xy[8]) {
+      translate(w()/2, h()/2);
+      rotate(xy[8]);
+      translate(-(w()/2), -(h()/2));
+    }
+    if (!points) {
+      setcolor(WHITE);
+      addcurve(xy[0],xy[1],xy[2],xy[3],xy[4],xy[5],xy[6],xy[7]);
+      fillpath();
+    }
+    setcolor(BLACK);
+    addvertex(xy[0],xy[1]);
+    addvertex(xy[2],xy[3]);
+    addvertex(xy[4],xy[5]);
+    addvertex(xy[6],xy[7]);
+    strokepath();
+    setcolor(points ? WHITE : RED);
+    line_style(0,int(xy[9]));
+    addcurve(xy[0],xy[1],xy[2],xy[3],xy[4],xy[5],xy[6],xy[7]);
+    /*points ? drawpoints() :*/ strokepath();
+    line_style(0);
+    pop_matrix();
+    pop_clip();
+  }
+public:
+  Drawing(int X,int Y,int W,int H) : Widget(X,Y,W,H) {}
+};
+
+Drawing *d;
+
+void points_cb(Widget* o, void*) {
+  points = ((ToggleButton*)o)->value();
+  d->redraw();
+}
+
+void slider_cb(Widget* o, void* v) {
+  Slider* s = (Slider*)o;
+  xy[long(v)] = s->value();
+  d->redraw();
+}
+
+int main(int argc, char** argv) {
+  Window window(300,555+25,"addcurve() test");
+  window.begin();
+  window.set_double_buffer();
+  Drawing drawing(10,10,280,280);
+  d = &drawing;
+
+  int y = 300;
+  for (int n = 0; n<10; n++) {
+    ValueSlider* s = new ValueSlider(50,y,240,25,name[n]); y += 25;
+    s->minimum(0); s->maximum(280);
+    if (n == 8) s->maximum(360);
+    s->step(1);
+    s->value(xy[n]);
+    s->align(ALIGN_LEFT);
+    s->callback(slider_cb, (void*)n);
+  }
+//   ToggleButton but(50,y,50,25,"points");
+//   but.callback(points_cb);
+
+  window.end();
+  window.show(argc,argv);
+  return run();
+}
+
+//
+// End of "$Id: curve.cxx 5557 2006-12-19 18:56:00Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/demo.cxx
===================================================================
--- branches/branch-3.0-2011/test2/demo.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/demo.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,348 @@
+//
+// "$Id: demo.cxx 4969 2006-04-16 21:23:38Z fabien $"
+//
+// Main demo program 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".
+//
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#if defined(_WIN32)
+# if !defined(__CYGWIN__)
+#  include <direct.h>
+# else
+#  include <unistd.h>
+# endif
+# include <windows.h> 
+#else
+# include <unistd.h>
+#endif
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Box.h>
+#include <fltk/Button.h>
+#include <fltk/filename.h>
+#include <fltk/error.h>
+#include <cctype> // tolower
+
+/* The form description */
+
+void doexit(fltk::Widget *, void *);
+void doback(fltk::Widget *, void *);
+void dobut(fltk::Widget *, long);
+
+fltk::Window *form;
+fltk::Button *but[9];
+
+void create_the_forms() {
+  fltk::Widget *obj;
+  form = new fltk::Window(370, 450);
+  form->begin();
+  obj = new fltk::Widget(20,20,330,40,"fltk Demonstration");
+  obj->box(fltk::ENGRAVED_BOX);
+  obj->color(fltk::GRAY60);
+  obj->labelsize(24);
+  obj->labelfont(fltk::HELVETICA_BOLD);
+  obj->labeltype(fltk::ENGRAVED_LABEL);
+  obj = new fltk::Widget(20,70,330,330,0);
+  obj->box(fltk::ENGRAVED_BOX);
+  obj->color(fltk::GRAY50);
+  obj = new fltk::Button(20,20,330,380); obj->type(fltk::Button::HIDDEN);
+  obj->callback(doback);
+  obj = but[0] = new fltk::Button(40,90,90,90);
+  obj = but[1] = new fltk::Button(140,90,90,90);
+  obj = but[2] = new fltk::Button(240,90,90,90);
+  obj = but[3] = new fltk::Button(40,190,90,90);
+  obj = but[4] = new fltk::Button(140,190,90,90);
+  obj = but[5] = new fltk::Button(240,190,90,90);
+  obj = but[6] = new fltk::Button(40,290,90,90);
+  obj = but[7] = new fltk::Button(140,290,90,90);
+  obj = but[8] = new fltk::Button(240,290,90,90);
+  for (int i=0; i<9; i++) {
+    but[i]->set_flag(fltk::ALIGN_WRAP);
+    but[i]->callback(dobut, i);
+  }
+  obj = new fltk::Button(130,410,110,30,"Exit");
+  obj->callback(doexit);
+  form->end();
+}
+
+/* Maintaining and building up the menus. */
+
+typedef struct {
+  char name[64];
+  int numb;
+  char iname[9][64];
+  char icommand[9][64];
+} MENU;
+
+#define MAXMENU	32
+
+MENU menus[MAXMENU];
+int mennumb = 0;
+
+int find_menu(const char nnn[])
+/* Returns the number of a given menu name. */
+{
+  int i;
+  for (i=0; i<mennumb; i++)
+    if (strcmp(menus[i].name,nnn) == 0) return i;
+  return -1;
+}
+
+void create_menu(char nnn[])
+/* Creates a new menu with name nnn */
+{
+  if (mennumb == MAXMENU -1) return;
+  strcpy(menus[mennumb].name,nnn);
+  menus[mennumb].numb = 0;
+  mennumb++;
+}
+
+void addto_menu(char men[], char item[], char comm[])
+/* Adds an item to a menu */
+{
+  int n = find_menu(men);
+  if (n<0) { create_menu(men); n = find_menu(men); }
+  if (menus[n].numb == 9) return;
+  strcpy(menus[n].iname[menus[n].numb],item);
+  strcpy(menus[n].icommand[menus[n].numb],comm);
+  menus[n].numb++;
+}
+
+/* Button to Item conversion and back. */
+
+int b2n[][9] = { 
+	{ -1, -1, -1, -1,  0, -1, -1, -1, -1},
+	{ -1, -1, -1,  0, -1,  1, -1, -1, -1},
+	{  0, -1, -1, -1,  1, -1, -1, -1,  2},
+	{  0, -1,  1, -1, -1, -1,  2, -1,  3},
+	{  0, -1,  1, -1,  2, -1,  3, -1,  4},
+	{  0, -1,  1,  2, -1,  3,  4, -1,  5},
+	{  0, -1,  1,  2,  3,  4,  5, -1,  6},
+	{  0,  1,  2,  3, -1,  4,  5,  6,  7},
+	{  0,  1,  2,  3,  4,  5,  6,  7,  8}
+  };
+int n2b[][9] = { 
+	{  4, -1, -1, -1, -1, -1, -1, -1, -1},
+	{  3,  5, -1, -1, -1, -1, -1, -1, -1},
+	{  0,  4,  8, -1, -1, -1, -1, -1, -1},
+	{  0,  2,  6,  8, -1, -1, -1, -1, -1},
+	{  0,  2,  4,  6,  8, -1, -1, -1, -1},
+	{  0,  2,  3,  5,  6,  8, -1, -1, -1},
+	{  0,  2,  3,  4,  5,  6,  8, -1, -1},
+	{  0,  1,  2,  3,  5,  6,  7,  8, -1},
+	{  0,  1,  2,  3,  4,  5,  6,  7,  8}
+  };
+
+int but2numb(int bnumb, int maxnumb)
+/* Transforms a button number to an item number when there are
+   maxnumb items in total. -1 if the button should not exist. */
+ { return b2n[maxnumb][bnumb]; }
+
+int numb2but(int inumb, int maxnumb)
+/* Transforms an item number to a button number when there are
+   maxnumb items in total. -1 if the item should not exist. */
+ { return n2b[maxnumb][inumb]; }
+
+/* Pushing and Popping menus */
+
+char stack[64][32];
+int stsize = 0;
+
+void push_menu(const char nnn[])
+/* Pushes a menu to be visible */
+{
+  int n,i,bn;
+  int men = find_menu(nnn);
+  if (men < 0) return;
+  n = menus[men].numb;
+  for (i=0; i<9; i++) but[i]->hide();
+  for (i=0; i<n; i++)
+  {
+    bn = numb2but(i,n-1);
+    but[bn]->show();
+    but[bn]->label(menus[men].iname[i]);
+  }
+  strcpy(stack[stsize],nnn);
+  stsize++;
+}
+
+void pop_menu()
+/* Pops a menu */
+{
+  if (stsize<=1) return;
+  stsize -= 2;
+  push_menu(stack[stsize]);
+}
+
+/* The callback Routines */
+
+void dobut(fltk::Widget *, long arg)
+/* handles a button push */
+{
+  int men = find_menu(stack[stsize-1]);
+  int n = menus[men].numb;
+  int bn = but2numb( (int) arg, n-1);
+  if (menus[men].icommand[bn][0] == '@')
+    push_menu(menus[men].icommand[bn]);
+  else {
+
+#ifdef _WIN32
+    STARTUPINFO		suInfo;		// Process startup information
+    PROCESS_INFORMATION	prInfo;		// Process information
+
+    memset(&suInfo, 0, sizeof(suInfo));
+    suInfo.cb = sizeof(suInfo);
+
+    int icommand_length = strlen(menus[men].icommand[bn]);
+
+    char* copy_of_icommand = new char[icommand_length+1];
+    strcpy(copy_of_icommand,menus[men].icommand[bn]);
+
+    // On _WIN32 the .exe suffix needs to be appended to the command
+    // whilst leaving any additional parameters unchanged - this
+    // is required to handle the correct conversion of cases such as : 
+    // `../fluid/fluid valuators.fl' to '../fluid/fluid.exe valuators.fl'.
+
+    // skip leading spaces.
+    char* start_command = copy_of_icommand;
+    while(*start_command == ' ') ++start_command;
+
+    // find the space between the command and parameters if one exists.
+    char* start_parameters = strchr(start_command,' ');
+
+    char* command = new char[icommand_length+6]; // 6 for extra 'd.exe\0'
+
+    if (start_parameters==NULL) { // no parameters required.
+#  ifdef _DEBUG
+      sprintf(command, "%sd.exe", start_command);
+#  else
+      sprintf(command, "%s.exe", start_command);
+#  endif // _DEBUG
+    } else { // parameters required.
+      // break the start_command at the intermediate space between
+      // start_command and start_parameters.
+      *start_parameters = 0;
+      // move start_paremeters to skip over the intermediate space.
+      ++start_parameters;
+
+#  ifdef _DEBUG
+      sprintf(command, "%sd.exe %s", start_command, start_parameters);
+#  else
+      sprintf(command, "%s.exe %s", start_command, start_parameters);
+#  endif // _DEBUG
+    }
+
+    CreateProcess(NULL, command, NULL, NULL, FALSE,
+                  NORMAL_PRIORITY_CLASS, NULL, NULL, &suInfo, &prInfo);
+	
+    delete command;
+    delete copy_of_icommand;
+	
+#else // NON _WIN32 systems.
+
+    int icommand_length = strlen(menus[men].icommand[bn]);
+    char* command = new char[icommand_length+5]; // 5 for extra './' and ' &\0' 
+
+    sprintf(command, "./%s &", menus[men].icommand[bn]);
+    system(command);
+
+    delete command;
+#endif // _WIN32
+  }
+}
+
+void doback(fltk::Widget *, void *) {pop_menu();}
+
+void doexit(fltk::Widget *, void *) {exit(0);}
+
+int load_the_menu(const char fname[])
+/* Loads the menu file. Returns whether successful. */
+{
+  FILE *fin;
+  char line[256], mname[64],iname[64],cname[64];
+  int i,j;
+  fin = fopen(fname,"r");
+  if (fin == NULL)
+  {
+//    fltk::show_message("ERROR","","Cannot read the menu description file.");
+    return 0;
+  }
+  for (;;) {
+    if (fgets(line,256,fin) == NULL) break;
+    j = 0; i = 0;
+    while (line[i] == ' ' || line[i] == '\t') i++;
+    if (line[i] == '\n') continue;
+    if (line[i] == '#') continue;
+    while (line[i] != ':' && line[i] != '\n') mname[j++] = line[i++];
+    mname[j] = '\0';
+    if (line[i] == ':') i++;
+    j = 0; 
+    while (line[i] != ':' && line[i] != '\n')
+    {
+      if (line[i] == '\\') {
+	i++;
+	if (line[i] == 'n') iname[j++] = '\n';
+	else iname[j++] = line[i];
+	i++;
+      } else
+        iname[j++] = line[i++];
+    }
+    iname[j] = '\0';
+    if (line[i] == ':') i++;
+    j = 0;
+    while (line[i] != ':' && line[i] != '\n') cname[j++] = line[i++];
+    cname[j] = '\0';
+    addto_menu(mname,iname,cname);
+  }
+  fclose(fin);
+  return 1;
+}
+
+int main(int argc, char **argv) {
+  create_the_forms();
+  char buf[256];
+  if (argv[0] && *argv[0]) strcpy(buf, argv[0]);
+  else                     strcpy(buf, "demo");
+  char *epos = (char*)fltk::filename_ext(buf);
+  if (tolower(*(epos-1))=='d') epos--; // Handle the debug 'demod' case
+  strcpy(epos,".menu");
+  const char *fname = buf;
+  int i = 0;
+  if (!fltk::args(argc,argv,i) || i < argc-1)
+    fltk::fatal("Usage: %s <switches> <menufile>\n%s",fltk::help);
+  if (i < argc) fname = argv[i];
+  if (!load_the_menu(fname)) fltk::fatal("Can't open %s",fname);
+  strcpy(buf,fname);
+  const char *c = fltk::filename_name(buf);
+  if (c > buf) {buf[c-buf] = 0; chdir(buf);}
+  push_menu("@main");
+  form->show(argc,argv);
+  fltk::run();
+  return 0;
+}
+
+//
+// End of "$Id: demo.cxx 4969 2006-04-16 21:23:38Z fabien $".
+//
+

Added: branches/branch-3.0-2011/test2/demo.menu
===================================================================
--- branches/branch-3.0-2011/test2/demo.menu	                        (rev 0)
+++ branches/branch-3.0-2011/test2/demo.menu	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,82 @@
+# Menu description file for the generic demo program
+#
+# Each line consists of three fields, separated by :
+#
+# - menu name	: To which the item belongs (starts with @)
+# - item name	: Placed on button. (use \n for newline)
+# - command name: To be executed. Use a menu name to define a submenu.
+#
+# @main indicates the main menu.
+#
+
+@main:Widget\nTests:@x
+	@x:Browser:browser
+	@x:Input:input
+	@x:Output:output
+	@x:Buttons:buttons
+	@x:TabGroup:tabs
+	@x:TiledGroup:tile
+	@x:ScrollGroup:scroll
+	@x:PackedGroup:pack
+	@x:Menu:menubar
+
+@main:Window\nTests:@w
+	@w:overlay:overlay
+	@w:subwindow:subwindow
+	@w:double\nbuffer:doublebuffer
+	@w:GL window:cube
+	@w:GL overlay:gl_overlay
+	@w:iconize:iconize
+	@w:fullscreen:fullscreen
+	@w:resizable:resizable
+	@w:program\nresize:resize
+
+@main:Drawing\nTests:@d
+	@d:text labels:label
+	@d:Image\nlabels:image
+#	@d:pixmap\nbrowser:pixmap_browser
+	@d:cursor:cursor
+	@d:addarc():arc
+	@d:addcurve():curve
+	@d:line_style():line_style
+	@d:fonts:fonts
+
+@main:Events:@u
+	@u:navigation:navigation
+	@u:keyboard:keyboard
+	@u:fast & slow widgets:fast_slow
+	@u:inactive:inactive
+
+@main:Fluid\n(UI design tool):../fluid/fluid2 valuators.fl
+
+@main:Nice\nDemos:@e
+	@e:X Color\nBrowser:../forms/colbrowser
+	@e:Mandelbrot:mandelbrot
+	@e:Fractals:fractals
+	@e:Puzzle:glpuzzle
+	@e:Checkers:checkers
+	@e:Qubix:qubix
+
+@main:Other\nTests:@o
+	@o:color choosers:color_chooser r
+	@o:file chooser:file_chooser
+	@o:XForms Emulation:../forms/forms
+	@o:WizardGroup:wizard
+	@o:TiledImage:button
+
+@main:Tutorial\nfrom\nManual:@j
+	@j:ask\n(modified):ask
+	@j:button:button
+	@j:CubeView:CubeView
+	@j:editor:editor editor.cxx
+	@j:hello:hello
+	@j:drawing:drawing
+	@j:shape:shape
+
+@main:Images\nfor\nManual:@i
+	@i:valuators:valuators
+	@i:symbols:symbols
+	@i:buttons:buttons
+	@i:clock:clock
+	@i:popups:message
+	@i:boxtypes:boxtype

Added: branches/branch-3.0-2011/test2/dnd.cxx
===================================================================
--- branches/branch-3.0-2011/test2/dnd.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/dnd.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,83 @@
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/events.h>
+#include <fltk/string.h>
+#include <fltk/MultiLineOutput.h>
+#include <stdio.h>
+
+using namespace fltk;
+
+Widget* bluewidget = 0;
+Widget* greenwidget = 0;
+MultiLineOutput* output = 0;
+
+class DNDTarget : public Widget {
+public:
+  int handle(int event) {
+    switch (event) {
+    case PUSH:
+      //printf("%s : starting dnd()\n", label());
+      if (greenwidget) {
+        greenwidget->color(0); greenwidget->redraw(); greenwidget = 0;
+      }
+      bluewidget = this; color(12); redraw();
+      fltk::copy(label(), strlen(label()));
+      fltk::dnd();
+      bluewidget = 0;
+      if (this != greenwidget) {color(0); redraw();}
+      return true;
+    case DND_ENTER:
+      if (greenwidget) {
+        greenwidget->color(0); greenwidget->redraw(); greenwidget = 0;
+      }
+      //printf("%s : DND_ENTER\n", label());
+      color(RED); redraw();
+      return 1;
+    case DND_DRAG:
+      // bug? You must implement this and return 1 or drop will not happen
+      return 1;
+    case DND_LEAVE:
+      //printf("%s : DND_LEAVE\n", label());
+      color(this==bluewidget ? 12 : 0); redraw();
+      return 1;
+    case DND_RELEASE:
+      //printf("%s : DND_RELEASE\n", label());
+      color(10); redraw(); // this should never be seen as paste replaces it!
+      return 1;
+    case PASTE:
+      //printf("%s : PASTE '%s'\n", label(), fltk::event_text());
+      greenwidget = this; color(GREEN); redraw();
+      ::output->text(fltk::event_text());
+      return 1;
+    default:
+      return Widget::handle(event);
+    }
+  }
+
+  DNDTarget(int x, int y, int w, int h, const char* l) :
+    Widget(x,y,w,h) { copy_label(l); }
+};
+
+#define SIZE 30
+#define BORDER 10
+#define NUM 5
+
+int main(int argc, char** argv) {
+  Window window(NUM*(SIZE+BORDER)+BORDER,
+                NUM*(SIZE+BORDER)+BORDER+50+2*BORDER);
+  window.begin();
+  for (int y = 0; y < NUM; y++) {
+    for (int x = 0; x < NUM; x++) {
+      char buf[100];
+      sprintf(buf, "%d", x+NUM*y+1);
+      new DNDTarget(BORDER+x*(SIZE+BORDER), BORDER+y*(SIZE+BORDER),
+                    SIZE, SIZE, buf);
+    }
+  }
+  output = new MultiLineOutput(BORDER, 2*BORDER+NUM*(SIZE+BORDER),
+                               NUM*(SIZE+BORDER)-BORDER, 50,
+                               "Last paste:");
+  output->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+  window.show(argc, argv);
+  return fltk::run();
+}

Added: branches/branch-3.0-2011/test2/doublebuffer.cxx
===================================================================
--- branches/branch-3.0-2011/test2/doublebuffer.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/doublebuffer.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,175 @@
+//
+// "$Id: doublebuffer.cxx 5115 2006-05-12 16:00:00Z fabien $"
+//
+// Test of double_buffer and overlay of Windows.
+// This demo shows how double buffering helps, by drawing the
+// window in a particularily bad way.
+//
+// The single-buffered window will blink as it updates.  The
+// double buffered one will not.  It will take just as long
+// (or longer) to update, but often it will appear to be faster.
+//
+// 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".
+//
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/draw.h>
+#include <fltk/Slider.h>
+#include <fltk/CheckButton.h>
+#include <fltk/visual.h>
+#include <fltk/math.h>
+#include <stdio.h>
+
+using namespace fltk;
+
+int sides = 20;
+int overlay_sides = 20;
+
+class BlinkWindow : public Window {
+
+  void draw() {
+    setcolor(BLACK);
+    fillrect(0,0,w(),h());
+    push_matrix();
+    translate(w()/2, h()/2);
+    scale(w()/2, h()/2);
+    int n = sides;
+    for (int i = 0; i < n; i++) {
+      for (int j = i+1; j < n; j++) {
+	setcolor((i+j)%(5*8*5)+BLACK); // random color from cube
+	fltk::addvertex(float(cosf(2*M_PI*(j-1)/n+.1)),
+                        float(sinf(2*M_PI*(j-1)/n+.1)));
+	fltk::addvertex(float(cosf(2*M_PI*i/n+.1)),
+                        float(sinf(2*M_PI*i/n+.1)));
+	fltk::addvertex(float(cosf(2*M_PI*j/n+.1)),
+                        float(sinf(2*M_PI*j/n+.1)));
+	fillstrokepath(WHITE);
+      }
+    }
+    pop_matrix();
+    char buffer[128];
+    sprintf(buffer,"FLTK doublebuffer demo. This image has %d outlined triangles", n*(n-1)/2);
+    setfont(HELVETICA_BOLD_ITALIC, 24);
+    setcolor(BLACK);
+    drawtext(buffer,Rectangle(10,h()/2,w()-20,h()/2),ALIGN_WRAP|ALIGN_TOP);
+  }
+
+  void draw_overlay() {
+    setcolor(RED);
+    push_matrix();
+    translate(w()/2, h()/2);
+    scale(w()/2, h()/2);
+    int n = overlay_sides;
+    for (int i = 0; i < n; i++) {
+      for (int j = i+1; j < n; j++) {
+        fltk::addvertex(float(cosf(2*M_PI*(j-1)/n+.1)),
+                        float(sinf(2*M_PI*(j-1)/n+.1)));
+	fltk::addvertex(float(cosf(2*M_PI*i/n+.1)),
+                        float(sinf(2*M_PI*i/n+.1)));
+	fltk::addvertex(float(cosf(2*M_PI*j/n+.1)),
+                        float(sinf(2*M_PI*j/n+.1)));
+	strokepath();
+      }
+    }
+    pop_matrix();
+  }
+
+public:
+  BlinkWindow(int x, int y, int w, int h) : Window(x,y,w,h) {}
+} *blinkwindow;
+
+void db_cb(Widget* o) {
+  if (((Button*)o)->value()) blinkwindow->set_double_buffer();
+  else blinkwindow->clear_double_buffer();
+}
+
+bool overlay = false;
+
+void ovl_cb(Widget* o) {
+  overlay = ((Button*)o)->value();
+  if (overlay) blinkwindow->redraw_overlay();
+  else blinkwindow->erase_overlay();
+}
+
+void slider_cb(Widget* o) {
+  sides = int(((Slider*)o)->value());
+  blinkwindow->redraw();
+}
+
+void oslider_cb(Widget* o) {
+  overlay_sides = int(((Slider*)o)->value());
+  if (overlay) blinkwindow->redraw_overlay();
+}
+
+int main(int argc, char** argv) {
+  if (!visual(DOUBLE_BUFFER))
+    printf("Xdbe not supported, faking double buffer with pixmaps.\n");
+  Window window(420,420+3*25);
+  window.begin();
+  blinkwindow = new BlinkWindow(10,10,400,400);
+  blinkwindow->tooltip("This graphic is designed to blink in a nasty way "
+		       "when redrawing. Try moving the sliders or resizing "
+		       "the window.\n\n"
+		       "Turn on the double buffer checkmark to hide the "
+		       "blinking.");
+  int y = 420;
+  Slider slider0(60,y,340,22,"sides:");
+  slider0.tooltip("Redraw above graphic with this many slides");
+  slider0.align(ALIGN_LEFT);
+  slider0.type(Slider::TICK_ABOVE);
+  slider0.callback(slider_cb);
+  y += 25;
+  Slider slider1(60,y,340,22,"overlay:");
+  slider1.tooltip("Redraw red overlay if the overlay checkmark is turned on.");
+  slider1.callback(oslider_cb);
+  slider1.align(ALIGN_LEFT);
+  slider1.type(Slider::TICK_ABOVE);
+  y += 25;
+  CheckButton b1(60,y,150,25,"double buffer");
+  b1.tooltip("Turns on double-buffer mode in the above window for smooth "
+	     "update. Notice that not only does it not blink, it also "
+	     "@i;looks@n; faster (even though it really is the same speed "
+	     "or slower)");
+  b1.callback(db_cb);
+  if (window.double_buffer()) b1.set();
+  CheckButton b2(60+150,y,150,25,"overlay");
+  b2.tooltip("Turns on a red overlay in above window. This is redrawn "
+	     "without having to redraw the basic image, so changes to it "
+	     "will be faster (probably not noticable on modern computers).\n\n"
+	     "Notice that the overlay will blink if the window is resized "
+	     "or the graphic is complex. It is designed for simple temporary "
+	     "things like mouse selection rectangles.");
+  b2.callback(ovl_cb);
+  window.end();
+  window.resizable(blinkwindow);
+  slider0.range(2,30);
+  slider0.step(1);
+  slider0.value(sides);
+  slider1.range(2,30);
+  slider1.step(1);
+  slider1.value(overlay_sides);
+  window.show(argc, argv);
+  return run();
+}
+
+//
+// End of "$Id: doublebuffer.cxx 5115 2006-05-12 16:00:00Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/drawing.cxx
===================================================================
--- branches/branch-3.0-2011/test2/drawing.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/drawing.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,85 @@
+// drawing.cxx (example4)
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Widget.h>
+#include <fltk/Slider.h>
+#include <fltk/math.h>
+#include <fltk/draw.h>
+#include <fltk/string.h> // for snprintf
+
+using namespace fltk;
+
+class ShapeWidget : public Widget {
+  int sides_;
+
+  void draw() {
+    setcolor(BLACK);
+    fillrect(0,0,w(),h());
+    push_matrix();
+    scale(w()/2.0f, h()/2.0f);
+    translate(1,1);
+    setcolor(0x8098b000);
+    int i; for (i=0; i<sides(); i++) {
+      double ang = i*2*M_PI/sides();
+      addvertex(cosf(ang),sinf(ang));
+    }
+    fillstrokepath(WHITE);
+    pop_matrix();
+    setfont(labelfont(), labelsize());
+    setcolor(WHITE);
+    char buf[200];
+    double ang = 2*M_PI/sides();
+    snprintf(buf, 200,
+	     "%d sides\n"
+	     "Angle between sides = %g�\n"
+	     "Length of side = %g\n"
+	     "Perimiter = %g\n"
+	     "Area = %g",
+	     i,
+	     360.0/i,
+	     sqrt(2-2*cos(ang)),
+	     sides()*sqrt(2-2*cos(ang)),
+	     sides()*sin(ang)/2);
+    drawtext(buf, Rectangle(w(),h()), ALIGN_WRAP);
+  }
+
+
+public:
+
+  inline int sides() const {return sides_;}
+
+  void sides(int n) {
+    if (sides_ != n) {sides_ = n; redraw();}
+  }
+
+  ShapeWidget(int x,int y,int w,int h,const char *l=0) :
+    Widget(x,y,w,h,l), sides_(3) {}
+
+};
+
+static void slider_callback(Widget* widget, void* data) {
+  ((ShapeWidget*)data)->sides(int(((Slider*)widget)->value()));
+}
+
+int main(int argc, char **argv) {
+
+  Window window(300, 330);
+  window.begin();
+
+  ShapeWidget sw(10, 10, 280, 280);
+  window.resizable(&sw);
+
+  Slider slider(50, 295, window.w()-60, 30, "Sides:");
+  slider.clear_flag(ALIGN_MASK);
+  slider.set_flag(ALIGN_LEFT);
+  slider.callback(slider_callback, &sw);
+  slider.value(sw.sides());
+  slider.step(1);
+  slider.range(3,40);
+
+  window.end();
+  window.show(argc,argv);
+    
+  return run();
+}

Added: branches/branch-3.0-2011/test2/drawtiming.cxx
===================================================================
--- branches/branch-3.0-2011/test2/drawtiming.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/drawtiming.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,96 @@
+// Test of how fast drawing is in various scenarios
+// Requires X because it uses XSync
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/x.h>
+#include <fltk/draw.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+using namespace fltk;
+
+class TestWindow : public fltk::Window {
+  int test;
+  int iter;
+public:
+  TestWindow(int t) : Window(300,300), test(t) {
+    if (t&1) set_double_buffer(); else clear_double_buffer();
+    iter = 1;
+  }
+  void draw();
+};
+
+void TestWindow::draw() {
+  char buffer[128];
+  sprintf(buffer, "Redraw number %d, text in the widget is clipped off somewhere on the right",
+	  ++iter);
+  if (test&2) { // new version
+    setcolor(GRAY75);
+    fillrect(0,0,w(),h());
+    for (int y = 10; y+21 < h(); y+=25) {
+      int X = 5+y/10;
+      int Y = y;
+      int W = w()-5-X;
+      int H = 21;
+      push_clip(X,Y,W,H);
+      setcolor(BLACK);
+      fillrect(X,Y,W,H);
+      if (y < 11) {
+	setcolor(WHITE);
+	setfont(fltk::HELVETICA,12);
+	drawtext(buffer,X+3,Y+16);
+      }
+      pop_clip();
+    }
+  } else {
+    // clip-out version:
+    push_clip(0,0,w(),h());
+    for (int y = 10; y+21 < h(); y+=25) {
+      int X = 5+y/10;
+      int Y = y;
+      int W = w()-5-X;
+      int H = 21;
+      push_clip(X,Y,W,H);
+      setcolor(BLACK);
+      fillrect(X,Y,W,H);
+      if (y < 11) {
+	setcolor(WHITE);
+	setfont(fltk::HELVETICA,12);
+	drawtext(buffer,X+3,Y+16);
+      }
+      pop_clip();
+      clipout(Rectangle(X,Y,W,H));
+    }
+    setcolor(GRAY75);
+    fillrect(0,0,w(),h());
+    pop_clip();
+  }
+}
+
+int main(int argc, char** argv) {
+  int m; int n = fltk::args(argc, argv, m);
+  if (n != argc-2) {
+    fprintf(stderr, "%s\nAdd test number and number of interations:\n"
+	    " 0 = single buffer + clip out\n"
+	    " 1 = double buffer + clip out\n"
+	    " 2 = single buffer with overlapping rectangles\n"
+	    " 3 = double buffer with overlapping rectangles\n",
+	    fltk::help);
+    exit(1);
+  }
+  TestWindow window(atoi(argv[n]));
+  int iterations = atoi(argv[n+1]);
+  double dt = get_time_secs();
+  printf("iterations = %d\n", iterations);
+  window.show(argc, argv);
+  while (window.damage()) fltk::wait();
+  for (int i=0; i < iterations; i++) {
+    window.redraw();
+    fltk::check();
+  }
+  dt = get_time_secs() - dt;
+  printf("time elapsed = %4.6lf secs\n",dt);
+  return 0;
+}
+

Added: branches/branch-3.0-2011/test2/editor.cxx
===================================================================
--- branches/branch-3.0-2011/test2/editor.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/editor.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,808 @@
+//
+// "$Id: editor.cxx 6518 2008-11-11 22:31:26Z spitzak $"
+//
+// A simple text editor program for the Fast Light Tool Kit (FLTK).
+//
+// This program is described in Chapter 4 of the FLTK Programmer's Guide.
+//
+// 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
+//
+
+//
+// Include necessary headers...
+//
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+
+#include <fltk/run.h>
+#include <fltk/events.h>
+#include <fltk/Group.h>
+#include <fltk/Window.h>
+#include <fltk/ask.h>
+#include <fltk/file_chooser.h>
+#include <fltk/Input.h>
+#include <fltk/Button.h>
+#include <fltk/ReturnButton.h>
+#include <fltk/TextBuffer.h>
+#include <fltk/TextEditor.h>
+#include <fltk/MenuBuild.h>
+
+int                changed = 0;
+char               filename[256] = "";
+char               title[256];
+fltk::TextBuffer     *textbuf = 0;
+
+
+// Syntax highlighting stuff...
+fltk::TextBuffer     *stylebuf = 0;
+fltk::TextDisplay::StyleTableEntry
+                   styletable[] = {	// Style table
+		     { fltk::BLACK,           fltk::COURIER,        12 }, // A - Plain
+		     { fltk::DARK_GREEN,      fltk::COURIER_ITALIC, 12 }, // B - Line comments
+		     { fltk::DARK_GREEN,      fltk::COURIER_ITALIC, 12 }, // C - Block comments
+		     { fltk::BLUE,            fltk::COURIER,        12 }, // D - Strings
+		     { fltk::DARK_RED,        fltk::COURIER,        12 }, // E - Directives
+		     { fltk::DARK_RED,        fltk::COURIER_BOLD,   12 }, // F - Types
+		     { fltk::BLUE,            fltk::COURIER_BOLD,   12/*, fltk::TextDisplay::ATTR_UNDERLINE*/ }  // G - Keywords
+		   };
+const char         *code_keywords[] = {	// List of known C/C++ keywords...
+		     "and",
+		     "and_eq",
+		     "asm",
+		     "bitand",
+		     "bitor",
+		     "break",
+		     "case",
+		     "catch",
+		     "compl",
+		     "continue",
+		     "default",
+		     "delete",
+		     "do",
+		     "else",
+		     "false",
+		     "for",
+		     "goto",
+		     "if",
+		     "new",
+		     "not",
+		     "not_eq",
+		     "operator",
+		     "or",
+		     "or_eq",
+		     "return",
+		     "switch",
+		     "template",
+		     "this",
+		     "throw",
+		     "true",
+		     "try",
+		     "using",
+		     "while",
+		     "xor",
+		     "xor_eq"
+		   };
+const char         *code_types[] = {	// List of known C/C++ types...
+		     "auto",
+		     "bool",
+		     "char",
+		     "class",
+		     "const",
+		     "const_cast",
+		     "double",
+		     "dynamic_cast",
+		     "enum",
+		     "explicit",
+		     "extern",
+		     "float",
+		     "friend",
+		     "inline",
+		     "int",
+		     "long",
+		     "mutable",
+		     "namespace",
+		     "private",
+		     "protected",
+		     "public",
+		     "register",
+		     "short",
+		     "signed",
+		     "sizeof",
+		     "static",
+		     "static_cast",
+		     "struct",
+		     "template",
+		     "typedef",
+		     "typename",
+		     "union",
+		     "unsigned",
+		     "virtual",
+		     "void",
+		     "volatile"
+		   };
+
+
+//
+// 'compare_keywords()' - Compare two keywords...
+//
+
+extern "C" {
+  int
+  compare_keywords(const void *a,
+                   const void *b) {
+    return (strcmp(*((const char **)a), *((const char **)b)));
+  }
+}
+
+//
+// 'style_parse()' - Parse text and produce style data.
+//
+
+void
+style_parse(const char *text,
+            char       *style,
+	    int        length) {
+  char	     current;
+  int	     col;
+  int	     last;
+  char	     buf[255],
+             *bufptr;
+  const char *temp;
+
+  // Style letters:
+  //
+  // A - Plain
+  // B - Line comments
+  // C - Block comments
+  // D - Strings
+  // E - Directives
+  // F - Types
+  // G - Keywords
+
+  for (current = *style, col = 0, last = 0; length > 0; length --, text ++) {
+    if (current == 'B' || current == 'F' || current == 'G') current = 'A';
+    if (current == 'A') {
+      // Check for directives, comments, strings, and keywords...
+      if (col == 0 && *text == '#') {
+        // Set style to directive
+        current = 'E';
+      } else if (strncmp(text, "//", 2) == 0) {
+        current = 'B';
+	for (; length > 0 && *text != '\n'; length --, text ++) *style++ = 'B';
+
+        if (length == 0) break;
+      } else if (strncmp(text, "/*", 2) == 0) {
+        current = 'C';
+      } else if (strncmp(text, "\\\"", 2) == 0) {
+        // Quoted quote...
+	*style++ = current;
+	*style++ = current;
+	text ++;
+	length --;
+	col += 2;
+	continue;
+      } else if (*text == '\"') {
+        current = 'D';
+      } else if (!last && (islower(*text) || *text == '_')) {
+        // Might be a keyword...
+	for (temp = text, bufptr = buf;
+	     (islower(*temp) || *temp == '_') && bufptr < (buf + sizeof(buf) - 1);
+	     *bufptr++ = *temp++);
+
+        if (!islower(*temp) && *temp != '_') {
+	  *bufptr = '\0';
+
+          bufptr = buf;
+
+	  if (bsearch(&bufptr, code_types,
+	              sizeof(code_types) / sizeof(code_types[0]),
+		      sizeof(code_types[0]), compare_keywords)) {
+	    while (text < temp) {
+	      *style++ = 'F';
+	      text ++;
+	      length --;
+	      col ++;
+	    }
+
+	    text --;
+	    length ++;
+	    last = 1;
+	    continue;
+	  } else if (bsearch(&bufptr, code_keywords,
+	                     sizeof(code_keywords) / sizeof(code_keywords[0]),
+		             sizeof(code_keywords[0]), compare_keywords)) {
+	    while (text < temp) {
+	      *style++ = 'G';
+	      text ++;
+	      length --;
+	      col ++;
+	    }
+
+	    text --;
+	    length ++;
+	    last = 1;
+	    continue;
+	  }
+	}
+      }
+    } else if (current == 'C' && strncmp(text, "*/", 2) == 0) {
+      // Close a C comment...
+      *style++ = current;
+      *style++ = current;
+      text ++;
+      length --;
+      current = 'A';
+      col += 2;
+      continue;
+    } else if (current == 'D') {
+      // Continuing in string...
+      if (strncmp(text, "\\\"", 2) == 0) {
+        // Quoted end quote...
+	*style++ = current;
+	*style++ = current;
+	text ++;
+	length --;
+	col += 2;
+	continue;
+      } else if (*text == '\"') {
+        // End quote...
+	*style++ = current;
+	col ++;
+	current = 'A';
+	continue;
+      }
+    }
+
+    // Copy style info...
+    if (current == 'A' && (*text == '{' || *text == '}')) *style++ = 'G';
+    else *style++ = current;
+    col ++;
+
+    last = isalnum(*text) || *text == '_' || *text == '.';
+
+    if (*text == '\n') {
+      // Reset column and possibly reset the style
+      col = 0;
+      if (current == 'B' || current == 'E') current = 'A';
+    }
+  }
+}
+
+
+//
+// 'style_init()' - Initialize the style buffer...
+//
+
+void
+style_init(void) {
+  char *style = new char[textbuf->length() + 1];
+  const char *text = textbuf->text();
+
+  memset(style, 'A', textbuf->length());
+  style[textbuf->length()] = '\0';
+
+  if (!stylebuf) stylebuf = new fltk::TextBuffer(textbuf->length());
+
+  style_parse(text, style, textbuf->length());
+
+  stylebuf->text(style);
+  delete[] style;
+}
+
+
+//
+// 'style_unfinished_cb()' - Update unfinished styles.
+//
+
+void
+style_unfinished_cb(int, void*) {
+}
+
+
+//
+// 'style_update()' - Update the style buffer...
+//
+
+void
+style_update(int        pos,		// I - Position of update
+             int        nInserted,	// I - Number of inserted chars
+	     int        nDeleted,	// I - Number of deleted chars
+             int        /*nRestyled*/,	// I - Number of restyled chars
+	     const char * /*deletedText*/,// I - Text that was deleted
+             void       *cbArg) {	// I - Callback data
+  int	start,				// Start of text
+	end;				// End of text
+  char	last,				// Last style on line
+	*style,				// Style data
+	*text;				// Text data
+
+
+  // If this is just a selection change, just unselect the style buffer...
+  if (nInserted == 0 && nDeleted == 0) {
+    stylebuf->unselect();
+    return;
+  }
+
+  // Track changes in the text buffer...
+  if (nInserted > 0) {
+    // Insert characters into the style buffer...
+    style = new char[nInserted + 1];
+    memset(style, 'A', nInserted);
+    style[nInserted] = '\0';
+
+    stylebuf->replace(pos, pos + nDeleted, style);
+    delete[] style;
+  } else {
+    // Just delete characters in the style buffer...
+    stylebuf->remove(pos, pos + nDeleted);
+  }
+
+  // Select the area that was just updated to avoid unnecessary
+  // callbacks...
+  stylebuf->select(pos, pos + nInserted - nDeleted);
+
+  // Re-parse the changed region; we do this by parsing from the
+  // beginning of the previous line of the changed region to the end of
+  // the line of the changed region...  Then we check the last
+  // style character and keep updating if we have a multi-line
+  // comment character...
+  start = textbuf->line_start(pos);
+//  if (start > 0) start = textbuf->line_start(start - 1);
+  end   = textbuf->line_end(pos + nInserted);
+  text  = textbuf->text_range(start, end);
+  style = stylebuf->text_range(start, end);
+  if (start==end)
+    last = 0;
+  else
+    last  = style[end - start - 1];
+
+//  printf("start = %d, end = %d, text = \"%s\", style = \"%s\", last='%c'...\n",
+//         start, end, text, style, last);
+
+  style_parse(text, style, end - start);
+
+//  printf("new style = \"%s\", new last='%c'...\n",
+//         style, style[end - start - 1]);
+
+  stylebuf->replace(start, end, style);
+  ((fltk::TextEditor *)cbArg)->redisplay_range(start, end);
+
+  if (start==end || last != style[end - start - 1]) {
+//    printf("Recalculate the rest of the buffer style\n");
+    // Either the user deleted some text, or the last character
+    // on the line changed styles, so reparse the
+    // remainder of the buffer...
+    free(text);
+    free(style);
+
+    end   = textbuf->length();
+    text  = textbuf->text_range(start, end);
+    style = stylebuf->text_range(start, end);
+
+    style_parse(text, style, end - start);
+
+    stylebuf->replace(start, end, style);
+    ((fltk::TextEditor *)cbArg)->redisplay_range(start, end);
+  }
+
+  free(text);
+  free(style);
+}
+
+
+// Editor window functions and class...
+void save_cb();
+void saveas_cb();
+void find2_cb(fltk::Widget*, void*);
+void replall_cb(fltk::Widget*, void*);
+void replace2_cb(fltk::Widget*, void*);
+void replcan_cb(fltk::Widget*, void*);
+
+class EditorWindow : public fltk::Window {
+  public:
+    EditorWindow(int w, int h, const char* t);
+    ~EditorWindow();
+
+    fltk::Window          *replace_dlg;
+    fltk::Input           *replace_find;
+    fltk::Input           *replace_with;
+    fltk::Button          *replace_all;
+    fltk::ReturnButton   *replace_next;
+    fltk::Button          *replace_cancel;
+
+    fltk::TextEditor     *editor;
+    char               search[256];
+};
+
+EditorWindow::EditorWindow(int w, int h, const char* t) : fltk::Window(w, h, t) {
+  replace_dlg = new fltk::Window(300, 105, "Replace");
+  replace_dlg->begin();
+    replace_find = new fltk::Input(80, 10, 210, 25, "Find:");
+    replace_find->align(fltk::ALIGN_LEFT);
+
+    replace_with = new fltk::Input(80, 40, 210, 25, "Replace:");
+    replace_with->align(fltk::ALIGN_LEFT);
+
+    replace_all = new fltk::Button(10, 70, 90, 25, "Replace All");
+    replace_all->callback((fltk::Callback *)replall_cb, this);
+
+    replace_next = new fltk::ReturnButton(105, 70, 120, 25, "Replace Next");
+    replace_next->callback((fltk::Callback *)replace2_cb, this);
+
+    replace_cancel = new fltk::Button(230, 70, 60, 25, "Cancel");
+    replace_cancel->callback((fltk::Callback *)replcan_cb, this);
+  replace_dlg->end();
+  replace_dlg->set_non_modal();
+  editor = 0;
+  *search = (char)0;
+}
+
+EditorWindow::~EditorWindow() {
+  delete replace_dlg;
+}
+
+int check_save(void) {
+  if (!changed) return 1;
+
+  int r = fltk::choice("The current file has not been saved.\n"
+                    "Would you like to save it now?",
+                    "Cancel", "Save", "Don't Save");
+
+  if (r == 1) {
+    save_cb(); // Save the file...
+    return !changed;
+  }
+
+  return (r == 2) ? 1 : 0;
+}
+
+int loading = 0;
+void load_file(const char *newfile, int ipos) {
+  loading = 1;
+  int insert = (ipos != -1);
+  changed = insert;
+  if (!insert) strcpy(filename, "");
+  int r;
+  if (!insert) r = textbuf->loadfile(newfile);
+  else r = textbuf->insertfile(newfile, ipos);
+  if (r) {
+    if (fltk::ask("File '%s' does not exit. Do you want to create one?", newfile))
+      strcpy(filename, newfile);
+    else
+      strcpy(filename, "");
+  } // if
+  else
+    if (!insert) strcpy(filename, newfile);
+  loading = 0;
+  textbuf->call_modify_callbacks();
+}
+
+void save_file(const char *newfile) {
+  if (textbuf->savefile(newfile))
+    fltk::alert("Error writing to file \'%s\':\n%s.", newfile, strerror(errno));
+  else
+    strcpy(filename, newfile);
+  changed = 0;
+  textbuf->call_modify_callbacks();
+}
+
+void copy_cb(fltk::Widget*, void* v) {
+  EditorWindow* e = (EditorWindow*)v;
+  fltk::TextEditor::kf_copy(0, e->editor);
+}
+
+void cut_cb(fltk::Widget*, void* v) {
+  EditorWindow* e = (EditorWindow*)v;
+  fltk::TextEditor::kf_cut(0, e->editor);
+}
+
+void delete_cb(fltk::Widget*, void*) {
+  textbuf->remove_selection();
+}
+
+void find_cb(fltk::Widget* w, void* v) {
+  EditorWindow* e = (EditorWindow*)v;
+  const char *val;
+
+  val = fltk::input("Search String:", e->search);
+  if (val != NULL) {
+    // User entered a string - go find it!
+    strcpy(e->search, val);
+    find2_cb(w, v);
+  }
+}
+
+void find2_cb(fltk::Widget* w, void* v) {
+  EditorWindow* e = (EditorWindow*)v;
+  if (e->search[0] == '\0') {
+    // Search string is blank; get a new one...
+    find_cb(w, v);
+    return;
+  }
+
+  int pos = e->editor->insert_position();
+  int found = textbuf->search_forward(pos, e->search, &pos);
+  if (found) {
+    // Found a match; select and update the position...
+    textbuf->select(pos, pos+strlen(e->search));
+    e->editor->insert_position(pos+strlen(e->search));
+    e->editor->show_insert_position();
+  }
+  else fltk::alert("No occurrences of \'%s\' found!", e->search);
+}
+
+void set_title(fltk::Window* w) {
+  if (filename[0] == '\0') strcpy(title, "Untitled.txt");
+  else {
+    char *slash;
+    slash = strrchr(filename, '/');
+#ifdef WIN32
+    if (slash == NULL) slash = strrchr(filename, '\\');
+#endif
+    if (slash != NULL) strcpy(title, slash + 1);
+    else strcpy(title, filename);
+  }
+
+  if (changed) strcat(title, " (modified)");
+
+  w->label(title);
+}
+
+void changed_cb(int, int nInserted, int nDeleted,int, const char*, void* v) {
+  if ((nInserted || nDeleted) && !loading) changed = 1;
+  EditorWindow *w = (EditorWindow *)v;
+  set_title(w);
+  if (loading) w->editor->show_insert_position();
+}
+
+void new_cb(fltk::Widget*, void*) {
+  if (!check_save()) return;
+
+  filename[0] = '\0';
+  textbuf->select(0, textbuf->length());
+  textbuf->remove_selection();
+  changed = 0;
+  textbuf->call_modify_callbacks();
+}
+
+void open_cb(fltk::Widget*, void*) {
+  if (!check_save()) return;
+
+  const char *newfile = fltk::file_chooser("Open File?", "*", filename);
+  if (newfile != NULL) load_file(newfile, -1);
+}
+
+void insert_cb(fltk::Widget*, void *v) {
+  const char *newfile = fltk::file_chooser("Insert File?", "*", filename);
+  EditorWindow *w = (EditorWindow *)v;
+  if (newfile != NULL) load_file(newfile, w->editor->insert_position());
+}
+
+void paste_cb(fltk::Widget*, void* v) {
+  EditorWindow* e = (EditorWindow*)v;
+  fltk::TextEditor::kf_paste(0, e->editor);
+}
+
+int num_windows = 0;
+
+void close_cb(fltk::Widget*, void* v) {
+  fltk::Window* w = (fltk::Window*)v;
+  if (num_windows == 1 && !check_save()) {
+    return;
+  }
+
+  w->hide();
+  textbuf->remove_modify_callback(changed_cb, w);
+  delete w;
+  num_windows--;
+  if (!num_windows) exit(0);
+}
+
+void quit_cb(fltk::Widget*, void*) {
+  if (changed && !check_save())
+    return;
+
+  exit(0);
+}
+
+void replace_cb(fltk::Widget*, void* v) {
+  EditorWindow* e = (EditorWindow*)v;
+  e->replace_dlg->show();
+}
+
+void replace2_cb(fltk::Widget*, void* v) {
+  EditorWindow* e = (EditorWindow*)v;
+  const char *find = e->replace_find->text();
+  const char *replace = e->replace_with->text();
+
+  if (find[0] == '\0') {
+    // Search string is blank; get a new one...
+    e->replace_dlg->show();
+    return;
+  }
+
+  e->replace_dlg->hide();
+
+  int pos = e->editor->insert_position();
+  int found = textbuf->search_forward(pos, find, &pos);
+
+  if (found) {
+    // Found a match; update the position and replace text...
+    textbuf->select(pos, pos+strlen(find));
+    textbuf->remove_selection();
+    textbuf->insert(pos, replace);
+    textbuf->select(pos, pos+strlen(replace));
+    e->editor->insert_position(pos+strlen(replace));
+    e->editor->show_insert_position();
+  }
+  else fltk::alert("No occurrences of \'%s\' found!", find);
+}
+
+void replall_cb(fltk::Widget*, void* v) {
+  EditorWindow* e = (EditorWindow*)v;
+  const char *find = e->replace_find->text();
+  const char *replace = e->replace_with->text();
+
+  find = e->replace_find->text();
+  if (find[0] == '\0') {
+    // Search string is blank; get a new one...
+    e->replace_dlg->show();
+    return;
+  }
+
+  e->replace_dlg->hide();
+
+  e->editor->insert_position(0);
+  int times = 0;
+
+  // Loop through the whole string
+  for (int found = 1; found;) {
+    int pos = e->editor->insert_position();
+    found = textbuf->search_forward(pos, find, &pos);
+
+    if (found) {
+      // Found a match; update the position and replace text...
+      textbuf->select(pos, pos+strlen(find));
+      textbuf->remove_selection();
+      textbuf->insert(pos, replace);
+      e->editor->insert_position(pos+strlen(replace));
+      e->editor->show_insert_position();
+      times++;
+    }
+  }
+
+  if (times) fltk::message("Replaced %d occurrences.", times);
+  else fltk::alert("No occurrences of \'%s\' found!", find);
+}
+
+void replcan_cb(fltk::Widget*, void* v) {
+  EditorWindow* e = (EditorWindow*)v;
+  e->replace_dlg->hide();
+}
+
+void save_cb() {
+  if (filename[0] == '\0') {
+    // No filename - get one!
+    saveas_cb();
+    return;
+  }
+  else save_file(filename);
+}
+
+void saveas_cb() {
+  const char *newfile = fltk::file_chooser("Save File As?", "*", filename);
+  if (newfile != NULL) save_file(newfile);
+}
+
+fltk::Window* new_view();
+
+void view_cb(fltk::Widget*, void*) {
+  fltk::Window* w = new_view();
+  w->show();
+}
+
+static void build_menus(fltk::MenuBar * menu, fltk::Widget *w) {
+    fltk::ItemGroup * g;
+    menu->user_data(w);
+    menu->begin();
+      g = new fltk::ItemGroup( "&File" );
+      g->begin();
+	new fltk::Item( "&New File",        0, (fltk::Callback *)new_cb );
+	new fltk::Item( "&Open File...",    fltk::COMMAND + 'O', (fltk::Callback *)open_cb );
+	new fltk::Item( "&Insert File...",  fltk::COMMAND + 'I', (fltk::Callback *)insert_cb);
+	new fltk::Divider();
+	new fltk::Item( "&Save File",       fltk::COMMAND + 'S', (fltk::Callback *)save_cb );
+	new fltk::Item( "Save File &As...", fltk::COMMAND + fltk::SHIFT + 'S', (fltk::Callback *)saveas_cb);
+	new fltk::Divider();
+	new fltk::Item( "New &View", fltk::ACCELERATOR + 'V', (fltk::Callback *)view_cb, 0 );
+	new fltk::Item( "&Close View", fltk::COMMAND + 'W', (fltk::Callback *)close_cb);
+	new fltk::Divider();
+	new fltk::Item( "E&xit", fltk::COMMAND + 'Q', (fltk::Callback *)quit_cb, 0 );
+      g->end();
+      g = new fltk::ItemGroup( "&Edit" );
+      g->begin();
+	new fltk::Item( "Cu&t",        fltk::COMMAND + 'X', (fltk::Callback *)cut_cb );
+	new fltk::Item( "&Copy",       fltk::COMMAND + 'C', (fltk::Callback *)copy_cb );
+	new fltk::Item( "&Paste",      fltk::COMMAND + 'V', (fltk::Callback *)paste_cb );
+	new fltk::Item( "&Delete",     0, (fltk::Callback *)delete_cb );
+      g->end();
+      g = new fltk::ItemGroup( "&Search" );
+      g->begin();
+	new fltk::Item( "&Find...",       fltk::COMMAND + 'F', (fltk::Callback *)find_cb );
+	new fltk::Item( "F&ind Again",    fltk::COMMAND + 'G', find2_cb );
+	new fltk::Item( "&Replace...",    fltk::COMMAND + 'R', replace_cb );
+	new fltk::Item( "Re&place Again", fltk::COMMAND + 'T', replace2_cb );
+      g->end();
+    menu->end();
+}
+
+fltk::Window* new_view() {
+  EditorWindow* w = new EditorWindow(660, 400, title);
+  w->begin();
+    fltk::MenuBar* m = new fltk::MenuBar(0, 0, 660, 21);
+    build_menus(m,w);
+    w->editor = new fltk::TextEditor(0, 21, 660, 379);
+    w->editor->buffer(textbuf);
+    w->editor->highlight_data(stylebuf, styletable,
+      sizeof(styletable) / sizeof(styletable[0]),
+     'A', style_unfinished_cb, 0);
+    w->editor->textfont(fltk::COURIER);
+  w->end();
+  w->resizable(w->editor);
+  w->callback((fltk::Callback *)close_cb, w);
+
+  w->editor->linenumber_width(60);
+  w->editor->wrap_mode(true, 0);
+  w->editor->cursor_style(fltk::TextDisplay::BLOCK_CURSOR);
+  // w->editor->insert_mode(false);
+
+  textbuf->add_modify_callback(style_update, w->editor);
+  textbuf->add_modify_callback(changed_cb, w);
+  textbuf->call_modify_callbacks();
+  num_windows++;
+  return w;
+}
+
+int main(int argc, char **argv) {
+
+  textbuf = new fltk::TextBuffer(0);
+  style_init();
+
+  fltk::Window* window = new_view();
+
+  window->show(1, argv);
+
+  if (argc > 1) {
+    window->label(" "); // Prevent from displaying "Untitled.txt" before its time...
+    load_file(argv[1], -1);
+  }
+
+  return fltk::run();
+}
+
+//
+// End of "$Id: editor.cxx 6518 2008-11-11 22:31:26Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/escherknot.xbm
===================================================================
--- branches/branch-3.0-2011/test2/escherknot.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/escherknot.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,473 @@
+#define escherknot_width 216
+#define escherknot_height 208
+
+static unsigned char escherknot_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x5f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xf0, 0x6f, 0xf6, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xc0, 0xff, 0x3a, 0x13, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0d, 0x02, 0x51, 0x71, 0x0e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2f, 0x20, 0xd9, 0x88,
+ 0x9b, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x82,
+ 0xac, 0x44, 0x4e, 0x1c, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x1e, 0x40, 0x02, 0x44, 0x60, 0xe2, 0xfc, 0x06, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x25, 0x09, 0x90, 0x22, 0x13, 0xb7, 0x9a, 0x1e,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x40, 0x10, 0x89,
+ 0x18, 0xe3, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x04, 0x08,
+ 0x01, 0x10, 0xc8, 0xa8, 0xd5, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x83, 0x80, 0x20, 0x40, 0x82, 0x00, 0x66, 0x9c, 0xec, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x08, 0x08, 0x24, 0x12, 0x93, 0x5b,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x12, 0x80, 0x04, 0x01, 0x00, 0x80,
+ 0x19, 0x33, 0xfa, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x80, 0x80, 0x00,
+ 0x20, 0x08, 0x12, 0xc4, 0x68, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+ 0x02, 0x04, 0x24, 0x00, 0x01, 0x40, 0x24, 0x8c, 0xcd, 0x3f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+ 0x00, 0x80, 0x49, 0x10, 0x90, 0x00, 0x21, 0x20, 0x08, 0x11, 0x43, 0xd9,
+ 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8,
+ 0xff, 0xff, 0x0b, 0x00, 0x60, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x30, 0xb9, 0xf2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xc0, 0x97, 0x04, 0x08, 0xfe, 0x05, 0x30, 0x10, 0x12, 0x20, 0x20,
+ 0x04, 0x00, 0x80, 0x48, 0x0c, 0xa3, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x3e, 0x92, 0x20, 0x49, 0x40, 0x3e, 0x0e, 0x82,
+ 0x00, 0x84, 0x25, 0x01, 0x80, 0x00, 0x80, 0xc8, 0x34, 0xed, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x25, 0x01, 0x04, 0x01, 0x08,
+ 0xd0, 0x17, 0x00, 0x80, 0x25, 0x01, 0xad, 0x04, 0x12, 0x20, 0x23, 0x4c,
+ 0x6a, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x02, 0x48,
+ 0x92, 0x20, 0x41, 0x92, 0x9e, 0x80, 0x24, 0x24, 0x29, 0x00, 0x04, 0x00,
+ 0x10, 0x98, 0xcc, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x4f, 0x10, 0x01, 0x90, 0x24, 0x40, 0x12, 0xf0, 0x00, 0x24, 0x41, 0x0b,
+ 0xa9, 0x10, 0x00, 0x00, 0x04, 0xd9, 0x96, 0x0e, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xe0, 0x00, 0x92, 0x48, 0x02, 0x04, 0x09, 0xc0, 0x84, 0x8f,
+ 0x29, 0x2d, 0xf8, 0xa9, 0x02, 0x00, 0x00, 0x20, 0x90, 0xf4, 0x1e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x24, 0x91, 0x04, 0x50, 0x22, 0x24,
+ 0x1b, 0x12, 0x7a, 0x48, 0xca, 0x03, 0x21, 0x10, 0x00, 0x00, 0x48, 0x93,
+ 0xff, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x24, 0x92, 0x20,
+ 0x81, 0xda, 0x24, 0xc8, 0x16, 0xd0, 0xe7, 0x50, 0xd2, 0xbf, 0x03, 0x00,
+ 0x80, 0x00, 0x30, 0x29, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03,
+ 0x20, 0x80, 0x24, 0x41, 0x12, 0x2a, 0x41, 0xb2, 0x80, 0x33, 0x0e, 0x7e,
+ 0x88, 0x1c, 0x01, 0x00, 0xa0, 0x24, 0x69, 0x75, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xe0, 0x82, 0x44, 0x11, 0x24, 0x09, 0x90, 0xa4, 0x4d, 0xd2, 0x92,
+ 0x9e, 0xd3, 0x83, 0x6b, 0x62, 0x00, 0x00, 0x10, 0x22, 0xff, 0x7f, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x30, 0x42, 0x04, 0x92, 0x24, 0x6b, 0x53, 0x32,
+ 0x59, 0x90, 0x16, 0xfa, 0xb4, 0xf4, 0xff, 0x0f, 0x01, 0x00, 0x90, 0x68,
+ 0x4a, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x90, 0x24, 0x11, 0x24,
+ 0x49, 0xda, 0x82, 0xc5, 0x92, 0xd2, 0xd0, 0x9e, 0x1e, 0x00, 0x78, 0x0a,
+ 0x00, 0x00, 0x05, 0xd2, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x02,
+ 0x44, 0xb2, 0x65, 0xea, 0x49, 0x9e, 0x2c, 0x4b, 0x1a, 0xd2, 0xeb, 0xe3,
+ 0xff, 0xc7, 0x09, 0x00, 0x20, 0x68, 0xff, 0xd6, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x0b, 0x90, 0x40, 0x92, 0x24, 0x09, 0x5f, 0xd2, 0x64, 0x59, 0x72,
+ 0x56, 0x7f, 0xfd, 0xdf, 0x1f, 0x12, 0x00, 0x20, 0x49, 0x92, 0xde, 0x01,
+ 0x00, 0x00, 0x00, 0x80, 0x41, 0x92, 0x4c, 0x92, 0x24, 0x25, 0xc9, 0x8b,
+ 0x2e, 0xcb, 0x92, 0x4b, 0x5a, 0x2f, 0x75, 0xf4, 0x04, 0x00, 0x00, 0x41,
+ 0xf6, 0x74, 0x01, 0x00, 0x00, 0x00, 0x40, 0x49, 0x02, 0x00, 0xba, 0xb6,
+ 0xfd, 0x49, 0xf8, 0x74, 0x6d, 0x4b, 0x72, 0xed, 0xdb, 0xff, 0xcf, 0x53,
+ 0x00, 0x00, 0x48, 0xb6, 0xd7, 0x03, 0x00, 0x00, 0x00, 0x60, 0x48, 0x10,
+ 0xc9, 0x93, 0x24, 0x00, 0x7b, 0xc3, 0xa6, 0x69, 0x58, 0x5a, 0xfb, 0xfa,
+ 0xa5, 0xbe, 0x16, 0x00, 0x00, 0x92, 0xa4, 0xfd, 0x03, 0x00, 0x00, 0x00,
+ 0x30, 0x01, 0x20, 0x5d, 0xa2, 0xfe, 0x7f, 0x01, 0x4f, 0x1a, 0xcd, 0x6b,
+ 0x6a, 0xa9, 0x5f, 0xff, 0xf3, 0x24, 0x01, 0x40, 0xc0, 0xb4, 0xf4, 0x03,
+ 0x00, 0x00, 0x00, 0x2c, 0x88, 0x84, 0x89, 0xb6, 0x00, 0x24, 0x7d, 0x69,
+ 0xf2, 0x34, 0xad, 0x99, 0x2d, 0xf7, 0xff, 0x9f, 0x4b, 0x00, 0x00, 0x92,
+ 0xa6, 0xad, 0x07, 0x00, 0x00, 0x00, 0x06, 0x91, 0x24, 0xe9, 0xa4, 0xfd,
+ 0xa5, 0xa9, 0x4b, 0x93, 0xe7, 0x34, 0x63, 0xf9, 0xfc, 0xd5, 0xef, 0x16,
+ 0x00, 0x40, 0x90, 0xb4, 0xbd, 0x07, 0x00, 0x00, 0x00, 0x6a, 0x80, 0x4c,
+ 0x96, 0xbe, 0x2d, 0xfd, 0x2f, 0x7c, 0x5e, 0x9c, 0x67, 0xad, 0xa5, 0xfd,
+ 0xff, 0xbf, 0x29, 0x00, 0x00, 0x92, 0x76, 0xed, 0x06, 0x00, 0x00, 0x00,
+ 0x05, 0x12, 0x48, 0x53, 0x25, 0x65, 0x25, 0xf4, 0xe5, 0xd3, 0x72, 0x9c,
+ 0x35, 0xdf, 0xf6, 0x7f, 0xf5, 0x56, 0x00, 0x00, 0x92, 0xa4, 0xed, 0x0f,
+ 0x00, 0x00, 0x80, 0x49, 0x20, 0x59, 0x38, 0xec, 0xff, 0xff, 0xad, 0x2f,
+ 0x5d, 0xd3, 0x33, 0xe6, 0x24, 0xed, 0xff, 0xdf, 0x2d, 0x01, 0x40, 0x80,
+ 0x24, 0xbd, 0x07, 0x00, 0x00, 0xc0, 0x48, 0x24, 0x49, 0x87, 0x37, 0x21,
+ 0xa0, 0xbd, 0xf4, 0x79, 0x4f, 0xc7, 0x9c, 0xde, 0xf6, 0xff, 0xff, 0x5b,
+ 0x08, 0x00, 0x92, 0xfc, 0xe9, 0x0e, 0x00, 0x00, 0x20, 0x89, 0x40, 0xd3,
+ 0xf4, 0x49, 0xff, 0xff, 0xe7, 0x2f, 0xcf, 0x79, 0x9c, 0x53, 0xb2, 0x35,
+ 0xff, 0xff, 0x37, 0x00, 0x40, 0x90, 0x24, 0xef, 0x0e, 0x00, 0x00, 0x30,
+ 0x91, 0x49, 0x32, 0x2d, 0xff, 0x6b, 0xb7, 0xbd, 0xbc, 0x3c, 0xef, 0x79,
+ 0xce, 0xde, 0xd6, 0xfd, 0xff, 0x9f, 0x00, 0x00, 0x92, 0xa6, 0xad, 0x0b,
+ 0x00, 0x00, 0x30, 0x11, 0x89, 0x8c, 0xcb, 0x5b, 0xba, 0xaf, 0xf6, 0xd7,
+ 0xe7, 0x35, 0xe7, 0x59, 0xb3, 0xfb, 0xff, 0xff, 0x7f, 0x04, 0x40, 0x80,
+ 0xe4, 0xb9, 0x1f, 0x00, 0x00, 0x48, 0x22, 0x91, 0x66, 0x79, 0xeb, 0xff,
+ 0xff, 0xdf, 0xbe, 0xbe, 0xe7, 0x8c, 0x75, 0x6b, 0x4a, 0xfa, 0xbf, 0x7f,
+ 0x00, 0x00, 0x82, 0x24, 0xef, 0x0e, 0x00, 0x00, 0x4c, 0x22, 0xb2, 0x79,
+ 0x5e, 0xfa, 0x5b, 0xa9, 0xfd, 0xeb, 0xf5, 0x9c, 0x3d, 0xc6, 0xcc, 0xee,
+ 0xed, 0x01, 0xf8, 0x00, 0x40, 0x82, 0xb6, 0xa9, 0x1b, 0x00, 0x00, 0x94,
+ 0x64, 0x66, 0x8e, 0xd3, 0x97, 0xfe, 0xff, 0xd7, 0xdf, 0x9f, 0x7b, 0xf3,
+ 0x3c, 0x35, 0x59, 0x6b, 0x00, 0x70, 0x00, 0x00, 0x40, 0xe4, 0xed, 0x1e,
+ 0x00, 0x00, 0x92, 0xc4, 0x34, 0xf3, 0xfc, 0xfd, 0x5f, 0xad, 0x7d, 0xfa,
+ 0x7a, 0xce, 0x8e, 0xb3, 0x76, 0x2f, 0xfd, 0x00, 0xe0, 0x04, 0x00, 0x9a,
+ 0x26, 0xaf, 0x1e, 0x00, 0x00, 0x13, 0x88, 0xcc, 0xb5, 0x3f, 0xbf, 0xff,
+ 0xff, 0xd7, 0xef, 0xef, 0xbd, 0x79, 0x6a, 0xde, 0xec, 0xab, 0x01, 0xc0,
+ 0x00, 0x00, 0x40, 0xb6, 0xbd, 0x1b, 0x00, 0x00, 0x05, 0x91, 0xeb, 0x5c,
+ 0xeb, 0xeb, 0xff, 0xff, 0xff, 0x7e, 0xef, 0x6b, 0xef, 0xcd, 0x99, 0xb3,
+ 0xe4, 0x07, 0x80, 0x00, 0x40, 0x49, 0xb2, 0xe5, 0x1a, 0x00, 0x80, 0x20,
+ 0x32, 0xb1, 0xe7, 0x79, 0x7f, 0xf7, 0xff, 0xfd, 0xeb, 0xbd, 0xfe, 0x2c,
+ 0x3d, 0x6b, 0xb6, 0xaf, 0x06, 0x80, 0x00, 0x00, 0x41, 0x96, 0xfe, 0x1e,
+ 0x00, 0x80, 0x44, 0xb2, 0x9b, 0xf9, 0xde, 0xff, 0xff, 0xff, 0x7f, 0xbf,
+ 0xf7, 0xbb, 0xb3, 0x77, 0xce, 0xce, 0xb6, 0x0d, 0x80, 0x01, 0x00, 0x49,
+ 0xf2, 0x94, 0x1f, 0x00, 0x40, 0x49, 0x44, 0xe6, 0x9e, 0x77, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xbf, 0xf7, 0x7e, 0xd6, 0xbc, 0xd9, 0xba, 0x3b, 0x80,
+ 0x00, 0x00, 0x64, 0x93, 0xf7, 0x1b, 0x00, 0x40, 0x89, 0xec, 0x7e, 0x67,
+ 0xbd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0xdb, 0x99, 0x33, 0x37,
+ 0xd3, 0x36, 0x80, 0x01, 0x80, 0x24, 0xda, 0xd6, 0x1e, 0x00, 0x20, 0x90,
+ 0x99, 0x99, 0x7b, 0xef, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbd, 0x37,
+ 0x63, 0xf3, 0x66, 0xdb, 0x7a, 0x80, 0x00, 0x00, 0x24, 0x59, 0xde, 0x1f,
+ 0x00, 0x60, 0x12, 0xb3, 0xf7, 0xdd, 0xfb, 0xfe, 0xff, 0xff, 0xff, 0xff,
+ 0xbf, 0xf7, 0xfe, 0x6e, 0xce, 0xdd, 0x6d, 0xd7, 0x80, 0x00, 0x80, 0x20,
+ 0xcb, 0xfb, 0x1f, 0x00, 0x10, 0x20, 0x6e, 0x66, 0x76, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xef, 0xde, 0xdb, 0x9b, 0x99, 0xb3, 0x5d, 0x6b, 0x81,
+ 0x00, 0x40, 0x96, 0x59, 0x6a, 0x1f, 0x00, 0x98, 0xc4, 0xe4, 0xdf, 0xff,
+ 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0x6f, 0x7b, 0x37, 0x7f,
+ 0xb3, 0xdd, 0x83, 0x00, 0x00, 0xb0, 0xed, 0xef, 0x1d, 0x00, 0x10, 0x88,
+ 0x9e, 0xdd, 0xcd, 0xbd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xed,
+ 0x6c, 0xe6, 0xcc, 0x76, 0x6d, 0xc1, 0x00, 0x40, 0x91, 0x24, 0x7b, 0x1f,
+ 0x00, 0x08, 0xd1, 0xf1, 0x66, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xdf, 0xbd, 0xbf, 0xd9, 0xdd, 0xdd, 0xb6, 0x47, 0x00, 0x00, 0xd8,
+ 0xb4, 0xad, 0x1f, 0x00, 0x24, 0x24, 0x6f, 0xf6, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xb7, 0x9d, 0x33, 0xd9, 0x96, 0x4e,
+ 0x00, 0x20, 0x49, 0xf7, 0xfd, 0x1e, 0x00, 0x48, 0xe4, 0xac, 0xb9, 0xdd,
+ 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdd, 0x76, 0xb6,
+ 0xb7, 0xfd, 0x7a, 0x00, 0x00, 0x44, 0x96, 0xb7, 0x1f, 0x00, 0x02, 0x9a,
+ 0xbe, 0x6f, 0x77, 0xff, 0xff, 0x7f, 0x61, 0xd9, 0xff, 0xff, 0xff, 0xfd,
+ 0xdd, 0x66, 0xed, 0x66, 0x5b, 0x37, 0x00, 0x90, 0x64, 0xb9, 0xf6, 0x1f,
+ 0x00, 0x02, 0xc9, 0xf3, 0xee, 0xfd, 0xff, 0xff, 0x2f, 0x24, 0x4f, 0xfe,
+ 0xff, 0xff, 0x7f, 0x37, 0xdb, 0xcd, 0x7c, 0xff, 0x3a, 0x00, 0x88, 0x24,
+ 0xdb, 0xde, 0x1a, 0x00, 0x13, 0x31, 0x6f, 0xbb, 0xdf, 0xff, 0xff, 0x21,
+ 0xa0, 0x64, 0xf3, 0xff, 0xff, 0xe7, 0xff, 0x96, 0xbb, 0x9b, 0xa5, 0x1d,
+ 0x00, 0x60, 0x32, 0xe9, 0xdb, 0x0f, 0x00, 0x65, 0xe6, 0x3c, 0xfb, 0xf6,
+ 0xff, 0x7f, 0x10, 0xa4, 0xb5, 0x9d, 0xfe, 0xdf, 0xdf, 0xdd, 0x6d, 0x32,
+ 0xb3, 0x7d, 0x0d, 0x00, 0x0b, 0x93, 0x7c, 0x7b, 0x0f, 0x00, 0x89, 0xdc,
+ 0xb3, 0xed, 0xfb, 0xff, 0x1f, 0x10, 0x90, 0x92, 0xd9, 0xfe, 0x7f, 0xff,
+ 0x77, 0xdb, 0xee, 0x6e, 0xdb, 0x0e, 0x00, 0x20, 0xdd, 0x66, 0x6f, 0x0f,
+ 0x80, 0x91, 0x5a, 0xfb, 0xbe, 0xef, 0xff, 0x0f, 0x10, 0xda, 0x92, 0xee,
+ 0xff, 0xff, 0xff, 0xf7, 0xb7, 0xcd, 0xee, 0xde, 0x07, 0x00, 0x24, 0x49,
+ 0xb6, 0xed, 0x0f, 0x00, 0x12, 0x6b, 0xcd, 0xf3, 0xbe, 0xff, 0x07, 0x08,
+ 0x48, 0xda, 0x76, 0xb7, 0xff, 0xff, 0xdd, 0x6e, 0xba, 0x99, 0x65, 0x03,
+ 0x40, 0x92, 0xe4, 0xba, 0xbd, 0x0e, 0x80, 0x62, 0xed, 0x7d, 0x5f, 0xf7,
+ 0xff, 0x01, 0x08, 0x28, 0xc9, 0x26, 0xbb, 0xff, 0xff, 0xff, 0x99, 0xb7,
+ 0xbb, 0x7d, 0x03, 0x00, 0x89, 0x64, 0xdb, 0xf6, 0x07, 0x40, 0x0c, 0x35,
+ 0xe7, 0x79, 0xdd, 0xff, 0x01, 0x84, 0xa5, 0x7d, 0xba, 0xdd, 0xfe, 0x7f,
+ 0xbf, 0xbf, 0x6d, 0x76, 0xdb, 0x01, 0x00, 0x48, 0x36, 0xdb, 0xd6, 0x07,
+ 0xc0, 0x88, 0xb4, 0xb6, 0xbf, 0xff, 0x7f, 0x00, 0x0c, 0x24, 0x44, 0xdb,
+ 0xed, 0xff, 0xdf, 0xef, 0x6e, 0xdb, 0x6e, 0xb7, 0x00, 0x80, 0x44, 0x93,
+ 0xed, 0x5b, 0x07, 0x40, 0x91, 0xd2, 0xfa, 0xfc, 0xf6, 0x7f, 0x00, 0x02,
+ 0xb4, 0x35, 0xd9, 0xef, 0xff, 0xff, 0xfb, 0xef, 0xb6, 0xc9, 0xe4, 0x00,
+ 0x10, 0x24, 0xd9, 0x6d, 0xfb, 0x03, 0x00, 0x27, 0xfe, 0xd3, 0xd6, 0xdb,
+ 0x3f, 0x00, 0xa2, 0x94, 0xb4, 0xdb, 0x7c, 0xff, 0xff, 0xbf, 0xd9, 0xad,
+ 0xdb, 0x7d, 0x00, 0x40, 0x32, 0xd9, 0xb6, 0xef, 0x03, 0x60, 0xe4, 0x5a,
+ 0x5f, 0x5f, 0xff, 0x1f, 0x00, 0x02, 0x52, 0x92, 0xec, 0xb6, 0xff, 0xff,
+ 0xef, 0xff, 0x6d, 0xb6, 0x3b, 0x00, 0x28, 0x90, 0xcc, 0xbe, 0xfd, 0x03,
+ 0xa0, 0x88, 0xeb, 0xf9, 0xfd, 0xf5, 0x1f, 0x00, 0x82, 0x53, 0xbb, 0x6d,
+ 0xf7, 0xff, 0xf9, 0xff, 0x6f, 0xdb, 0x6d, 0x1b, 0x00, 0x04, 0xc9, 0x66,
+ 0xdb, 0x57, 0x03, 0xa0, 0x52, 0xaf, 0xa7, 0x97, 0xff, 0x0f, 0x00, 0x51,
+ 0x48, 0xda, 0x66, 0xdb, 0xff, 0xf8, 0xdf, 0xed, 0xbe, 0xed, 0x0e, 0x00,
+ 0x92, 0x64, 0x32, 0xeb, 0xf6, 0x01, 0x20, 0x63, 0xbd, 0xbc, 0xfc, 0xfa,
+ 0x0f, 0x00, 0x09, 0x20, 0x89, 0x3e, 0xff, 0xff, 0xe0, 0x7f, 0xdf, 0x6f,
+ 0xdb, 0x07, 0x00, 0x01, 0x24, 0xbb, 0xed, 0xfe, 0x01, 0xa0, 0xce, 0xf5,
+ 0xf6, 0xdb, 0xdf, 0x07, 0x00, 0x41, 0xad, 0x5f, 0xf2, 0xed, 0xff, 0xc0,
+ 0xff, 0xbf, 0xdd, 0x92, 0x03, 0x00, 0x44, 0xb2, 0xd9, 0x7d, 0xfb, 0x01,
+ 0xe0, 0xaa, 0xdf, 0x9b, 0x7f, 0xfb, 0x07, 0x80, 0x28, 0x21, 0x64, 0xbb,
+ 0x7f, 0x7f, 0x80, 0xff, 0xf6, 0xbb, 0xee, 0x03, 0x80, 0x22, 0x99, 0xed,
+ 0xb6, 0xff, 0x00, 0x90, 0xb8, 0x5e, 0x5b, 0x6b, 0xed, 0x03, 0x00, 0x01,
+ 0xa6, 0x6d, 0xdb, 0xf6, 0x7f, 0x00, 0xff, 0xff, 0xf6, 0xcd, 0x00, 0x40,
+ 0x10, 0xc9, 0x6c, 0xff, 0xf7, 0x00, 0xa0, 0xe3, 0x72, 0xeb, 0xef, 0xff,
+ 0x03, 0x80, 0xe0, 0x90, 0x24, 0xdb, 0xbd, 0x3f, 0x00, 0xfe, 0xdb, 0x6f,
+ 0xfb, 0x00, 0x00, 0x89, 0x4c, 0xb6, 0xd9, 0x7e, 0x00, 0x70, 0xaf, 0xaf,
+ 0x6f, 0xb5, 0xde, 0x03, 0x80, 0x94, 0x92, 0xb6, 0xf9, 0xf6, 0x3f, 0x00,
+ 0xfc, 0xbf, 0xdd, 0x7b, 0x00, 0x10, 0x48, 0x26, 0xb3, 0xdf, 0x7f, 0x00,
+ 0x70, 0xd8, 0xae, 0xfd, 0xff, 0xf7, 0x03, 0x80, 0x00, 0xd2, 0x36, 0xcf,
+ 0xdf, 0x3f, 0x00, 0xb8, 0x6d, 0xdf, 0x16, 0x00, 0x48, 0x44, 0xb2, 0xfb,
+ 0x6c, 0x3f, 0x00, 0x50, 0x75, 0xfd, 0xa5, 0xd5, 0xfe, 0x01, 0x40, 0xd1,
+ 0x12, 0xa2, 0x7d, 0xfb, 0x1f, 0x00, 0xf0, 0xff, 0xbf, 0x0d, 0x00, 0x20,
+ 0x12, 0x9b, 0xcd, 0xf6, 0x3f, 0x00, 0x90, 0xd5, 0xa7, 0xfd, 0x77, 0xab,
+ 0x03, 0x40, 0x1c, 0xc8, 0xbe, 0x6d, 0xfb, 0x1f, 0x00, 0xe0, 0xff, 0xee,
+ 0x07, 0x00, 0x04, 0x91, 0xc9, 0x7e, 0xbf, 0x1f, 0x00, 0x30, 0x57, 0xbf,
+ 0xa6, 0xde, 0xfd, 0x01, 0x40, 0x40, 0x6b, 0xd3, 0x6e, 0xef, 0x0f, 0x00,
+ 0xc0, 0xeb, 0x7d, 0x03, 0x00, 0x90, 0xc8, 0x6c, 0x76, 0xfb, 0x0f, 0x00,
+ 0x70, 0x5c, 0xe5, 0xf7, 0xfa, 0xeb, 0x01, 0x40, 0x50, 0x49, 0x92, 0xf4,
+ 0xfd, 0x0f, 0x00, 0xc0, 0xff, 0xdb, 0x01, 0x80, 0x44, 0x44, 0x66, 0xbb,
+ 0x6f, 0x0f, 0x00, 0xd0, 0xf1, 0x95, 0xf6, 0x6f, 0xad, 0x01, 0x40, 0x08,
+ 0x78, 0xdb, 0xb6, 0xef, 0x0f, 0x00, 0x00, 0xdf, 0xd6, 0x00, 0x00, 0x20,
+ 0x32, 0xb3, 0xdb, 0xfd, 0x0f, 0x00, 0x10, 0xd7, 0xf7, 0xb6, 0xd8, 0xeb,
+ 0x03, 0x20, 0x43, 0x27, 0xd9, 0xb6, 0xfd, 0x0f, 0x00, 0x00, 0xff, 0x7e,
+ 0x00, 0x40, 0x12, 0x93, 0xd9, 0xec, 0xb6, 0x07, 0x00, 0x70, 0x55, 0xdd,
+ 0xf6, 0x6f, 0xbb, 0x01, 0x40, 0x28, 0xa1, 0x6f, 0xb6, 0xb7, 0x0f, 0x00,
+ 0x00, 0xde, 0x1f, 0x00, 0x80, 0x88, 0xd8, 0xcc, 0x66, 0xff, 0x03, 0x00,
+ 0x70, 0xf4, 0xf5, 0xdb, 0xaa, 0xee, 0x01, 0x60, 0x28, 0x2d, 0x49, 0xf7,
+ 0xf6, 0x07, 0x00, 0x00, 0x7c, 0x0f, 0x00, 0x08, 0x48, 0x66, 0x6e, 0xfb,
+ 0xef, 0x03, 0x00, 0xd0, 0xd5, 0xdf, 0x52, 0xff, 0xda, 0x03, 0x20, 0xa3,
+ 0xa5, 0xd9, 0xb2, 0xff, 0x07, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x20, 0x22,
+ 0x33, 0x37, 0xbf, 0xfd, 0x01, 0x00, 0x70, 0x5f, 0xf7, 0xfe, 0xab, 0x6b,
+ 0x02, 0xa0, 0xa8, 0xb4, 0x6d, 0xdf, 0xf6, 0x07, 0x00, 0x00, 0xf8, 0x01,
+ 0x00, 0x12, 0x33, 0x11, 0xd9, 0xdd, 0xff, 0x01, 0x00, 0x70, 0x75, 0xd5,
+ 0x52, 0xea, 0x8a, 0x03, 0x20, 0x84, 0x36, 0x69, 0xba, 0xdb, 0x07, 0x00,
+ 0x00, 0xf0, 0x01, 0x00, 0x81, 0xc8, 0xcc, 0xdd, 0xed, 0xff, 0x00, 0x00,
+ 0x60, 0xd5, 0xdf, 0xf6, 0xae, 0x6b, 0x03, 0x00, 0xa1, 0xa4, 0x6d, 0xdf,
+ 0xfe, 0x07, 0x00, 0x00, 0x60, 0x00, 0x40, 0x44, 0xc6, 0xcc, 0x64, 0xb7,
+ 0xfd, 0x00, 0x00, 0xe0, 0x55, 0xf7, 0xd6, 0xea, 0xba, 0x07, 0x20, 0x94,
+ 0x94, 0x6d, 0xfb, 0xdb, 0x07, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x32,
+ 0x76, 0x77, 0xff, 0x7f, 0x00, 0x00, 0x60, 0x7d, 0xd5, 0xb6, 0x3f, 0xaf,
+ 0x06, 0xa0, 0xa4, 0x95, 0x6c, 0x9b, 0xee, 0x07, 0x00, 0x00, 0x18, 0x00,
+ 0x10, 0x92, 0x15, 0x73, 0xbb, 0xd9, 0x3f, 0x00, 0x00, 0xe0, 0xf5, 0xff,
+ 0xf7, 0x6a, 0xa9, 0x06, 0x80, 0xa2, 0xb4, 0x6d, 0xfb, 0xfb, 0x07, 0x00,
+ 0x00, 0x04, 0x00, 0x84, 0x88, 0xc8, 0x99, 0xdd, 0xff, 0x3f, 0x00, 0x00,
+ 0xe0, 0x8b, 0xff, 0x96, 0x6a, 0xb6, 0x0a, 0xa0, 0x94, 0x96, 0x64, 0xdb,
+ 0xee, 0x07, 0x00, 0x00, 0x03, 0x08, 0x20, 0x60, 0x66, 0xec, 0xee, 0xb6,
+ 0x1d, 0x00, 0x00, 0xc0, 0x7e, 0xa5, 0xf4, 0xab, 0x55, 0x0d, 0x20, 0xe7,
+ 0xd4, 0x6d, 0xdb, 0xfb, 0x07, 0x00, 0x80, 0x00, 0x00, 0x09, 0x12, 0x33,
+ 0x67, 0x77, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0xfa, 0xff, 0xb7, 0x7a, 0x55,
+ 0x19, 0x90, 0x91, 0xd4, 0x64, 0xdb, 0xee, 0x07, 0x00, 0x40, 0x00, 0x81,
+ 0x04, 0x88, 0x91, 0x3b, 0xbb, 0xfd, 0x0f, 0x00, 0x00, 0xc0, 0xab, 0xbf,
+ 0xed, 0x4e, 0xbb, 0x32, 0x20, 0x94, 0x96, 0x6c, 0xff, 0xfa, 0x03, 0x00,
+ 0x30, 0x40, 0x20, 0x20, 0x64, 0xcc, 0xdc, 0xdd, 0xff, 0x07, 0x00, 0x00,
+ 0xc0, 0xeb, 0xea, 0xfd, 0xd5, 0xaa, 0x2a, 0x20, 0xd7, 0xb0, 0x6d, 0x93,
+ 0xef, 0x07, 0x00, 0x08, 0x00, 0x08, 0x01, 0x23, 0xee, 0xee, 0xee, 0xfb,
+ 0x03, 0x00, 0x00, 0xc0, 0xfe, 0xff, 0x2d, 0xdd, 0x6a, 0x49, 0xd0, 0x90,
+ 0x9a, 0x64, 0xdf, 0xea, 0x07, 0x00, 0x03, 0x80, 0x40, 0x8c, 0x98, 0x33,
+ 0xb3, 0xbb, 0xff, 0x01, 0x00, 0x00, 0xc0, 0xa5, 0x7b, 0x6d, 0xa7, 0x56,
+ 0xc5, 0xa0, 0x94, 0x94, 0x6f, 0xd3, 0xbb, 0x07, 0x80, 0x10, 0x0c, 0x12,
+ 0x40, 0xc6, 0xb9, 0xdb, 0xfb, 0xfd, 0x01, 0x00, 0x00, 0x80, 0x97, 0xee,
+ 0xdf, 0xba, 0x54, 0x1a, 0xa1, 0xe5, 0xd2, 0x64, 0x7e, 0xee, 0x07, 0x60,
+ 0x02, 0x80, 0x00, 0x31, 0x62, 0xcc, 0xdc, 0xee, 0x7f, 0x00, 0x00, 0x00,
+ 0x80, 0xff, 0xff, 0xdb, 0xaa, 0xb5, 0x8a, 0x86, 0x98, 0x96, 0x6d, 0x9b,
+ 0xea, 0x07, 0x98, 0x00, 0x22, 0x44, 0x88, 0x39, 0x77, 0x77, 0xff, 0x7f,
+ 0x00, 0x00, 0x00, 0x80, 0x7d, 0x77, 0xba, 0x7b, 0x2d, 0x55, 0x3c, 0xa6,
+ 0xb4, 0x6c, 0xf6, 0xaf, 0x07, 0x07, 0x90, 0x88, 0x20, 0x42, 0x9c, 0xbb,
+ 0xbb, 0xbb, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xbd, 0xbf, 0x55, 0x53,
+ 0xa5, 0xb2, 0xa1, 0xb4, 0xc9, 0x9f, 0xda, 0xcf, 0x28, 0x24, 0x42, 0x08,
+ 0x31, 0xe6, 0xcc, 0xdd, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xef,
+ 0xb7, 0xbd, 0xde, 0x12, 0xd1, 0xac, 0x95, 0x4d, 0xf2, 0x56, 0x9f, 0x88,
+ 0x80, 0x10, 0xc2, 0x9c, 0x73, 0x77, 0xef, 0xfe, 0x7f, 0x00, 0x00, 0x00,
+ 0x00, 0xbf, 0xfb, 0xed, 0xeb, 0x35, 0x95, 0x72, 0xa2, 0x35, 0xcd, 0xb6,
+ 0xd6, 0x2f, 0x21, 0x24, 0x04, 0x31, 0xc6, 0x98, 0x33, 0xf7, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0xd6, 0x6a, 0x7f, 0x5b, 0xab, 0x2d, 0x28, 0x23,
+ 0x65, 0xd9, 0xb6, 0x55, 0x5f, 0x88, 0x08, 0x43, 0x0c, 0x61, 0xde, 0xdd,
+ 0xfb, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x76, 0xff, 0x4d, 0xd7, 0x4d,
+ 0x4a, 0xa5, 0x29, 0x2d, 0xdb, 0xbe, 0x55, 0x1f, 0x22, 0x42, 0x28, 0xc2,
+ 0x39, 0xe7, 0xee, 0xee, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x7f,
+ 0xfb, 0xb6, 0xb6, 0x95, 0x70, 0x2e, 0xa5, 0xd9, 0x24, 0x5d, 0x5f, 0x8a,
+ 0x28, 0x88, 0x31, 0x9e, 0x39, 0x73, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
+ 0x00, 0xec, 0xb7, 0xdf, 0x6c, 0xb5, 0x65, 0x26, 0xa3, 0x39, 0x9b, 0xfc,
+ 0x85, 0x5d, 0x21, 0x04, 0x63, 0x1c, 0xe6, 0xdd, 0xbd, 0xfb, 0xff, 0xff,
+ 0x01, 0x00, 0x00, 0x00, 0xb8, 0xfa, 0xb6, 0x6f, 0x4d, 0x9a, 0x28, 0x59,
+ 0x4d, 0xd3, 0x2f, 0xf5, 0x3f, 0x8c, 0xd1, 0x18, 0xc6, 0x31, 0xf6, 0xdd,
+ 0xfe, 0xff, 0xfe, 0x01, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xef, 0xb9, 0xb6,
+ 0x25, 0xe1, 0x4d, 0x69, 0xba, 0x6c, 0xad, 0x3c, 0x41, 0x14, 0x84, 0xe9,
+ 0x9e, 0x37, 0xf7, 0xff, 0xff, 0xfb, 0x03, 0x00, 0x00, 0x00, 0x70, 0x5d,
+ 0x3d, 0x9f, 0x3d, 0x6d, 0x26, 0x52, 0x59, 0xb6, 0x6d, 0xab, 0x7f, 0x14,
+ 0x82, 0xe1, 0x39, 0xe6, 0xdd, 0xfb, 0xff, 0xbf, 0xff, 0x01, 0x00, 0x00,
+ 0x00, 0xf0, 0xf6, 0x6f, 0x77, 0xcd, 0x92, 0xd0, 0x52, 0x4b, 0xb3, 0x49,
+ 0x0b, 0x3a, 0x41, 0x61, 0x38, 0x9e, 0x73, 0xee, 0xdc, 0xff, 0xff, 0xfd,
+ 0x03, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xd7, 0x65, 0xda, 0x66, 0x63, 0x9d,
+ 0xf2, 0x36, 0x7b, 0x6a, 0x7f, 0x14, 0x18, 0x8e, 0xe7, 0xd9, 0x7b, 0xff,
+ 0xff, 0xef, 0xff, 0x03, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xdd, 0xb6,
+ 0xc9, 0x4c, 0x46, 0x9a, 0x64, 0xcb, 0x5b, 0xed, 0x06, 0xc6, 0xe3, 0x71,
+ 0xde, 0xbd, 0xff, 0xff, 0x7f, 0xff, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x7f,
+ 0x7f, 0xff, 0x59, 0x37, 0x75, 0xbb, 0x96, 0x66, 0xdb, 0x56, 0xf7, 0xe0,
+ 0xf2, 0x74, 0x9e, 0x77, 0xef, 0xfd, 0xff, 0xeb, 0xed, 0x03, 0x00, 0x00,
+ 0x00, 0xc0, 0xea, 0xdf, 0xb3, 0xdb, 0xde, 0xc6, 0x81, 0xb0, 0x6c, 0xba,
+ 0xb4, 0xf6, 0x38, 0x18, 0x3c, 0xe7, 0x9c, 0xfb, 0xff, 0x7f, 0xff, 0xff,
+ 0x07, 0x00, 0x00, 0x00, 0x80, 0xff, 0xf7, 0x6e, 0x66, 0xd9, 0x99, 0xac,
+ 0xa4, 0xcd, 0x96, 0xa5, 0xea, 0x03, 0xa7, 0xcf, 0x79, 0xef, 0xfd, 0xff,
+ 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, 0xef, 0xdf,
+ 0x6f, 0xef, 0x72, 0x65, 0xd9, 0xb6, 0xad, 0xe8, 0xc1, 0xe1, 0xf1, 0xbe,
+ 0x7b, 0xef, 0xff, 0xdf, 0x7a, 0xfb, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfe,
+ 0x5f, 0xdd, 0x9d, 0xac, 0x99, 0x84, 0x29, 0xcd, 0x3c, 0x4f, 0x9d, 0x7d,
+ 0x3c, 0x9e, 0xe7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xef, 0x0f, 0x00, 0x00,
+ 0x00, 0x00, 0xfe, 0xff, 0x77, 0x7b, 0x33, 0xe7, 0x5a, 0x49, 0x9b, 0x65,
+ 0x59, 0x75, 0x07, 0x97, 0xf7, 0xbb, 0xef, 0xff, 0xff, 0xdb, 0xfe, 0xff,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf7, 0x3f, 0xe7, 0xcf, 0x9c, 0x51,
+ 0x4d, 0xb0, 0x6d, 0x4b, 0xc9, 0xd3, 0xf5, 0x79, 0xfe, 0xfb, 0xff, 0xff,
+ 0xdb, 0xda, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xef, 0xde,
+ 0xdd, 0xf3, 0x4d, 0x52, 0x36, 0xcb, 0xd2, 0x3a, 0x7e, 0x3c, 0xde, 0xe7,
+ 0xbe, 0xff, 0x7f, 0xda, 0xff, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8,
+ 0xff, 0xfb, 0xdd, 0x73, 0x8f, 0xa5, 0x9a, 0xe6, 0xd9, 0xb6, 0xe2, 0x4e,
+ 0xc7, 0xf7, 0xfd, 0xff, 0xff, 0xff, 0xf7, 0xf6, 0xff, 0x0f, 0x00, 0x00,
+ 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0xee, 0x79, 0xb2, 0xb2, 0x2c, 0x9f,
+ 0xb6, 0x54, 0xfe, 0xfb, 0x79, 0xbf, 0xff, 0xff, 0x5f, 0xda, 0xff, 0xfa,
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xf7, 0xbf, 0xe7, 0x4b,
+ 0xb4, 0x69, 0xd3, 0x2c, 0x25, 0xbd, 0xbc, 0xcf, 0xf7, 0xfd, 0xff, 0xd7,
+ 0xf6, 0xfe, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xbf, 0x9d,
+ 0xf1, 0x3e, 0x57, 0x25, 0xcb, 0xb6, 0x6d, 0xa9, 0xb5, 0xef, 0xfb, 0xff,
+ 0xff, 0xff, 0xd5, 0xda, 0xd6, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xff, 0xff, 0xfb, 0xcf, 0xf5, 0x25, 0x65, 0xd9, 0x66, 0x5b, 0x4a, 0xfa,
+ 0xf9, 0x7e, 0xff, 0xff, 0xff, 0xf6, 0xd6, 0xdf, 0xfa, 0x0f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xfe, 0xff, 0xef, 0x3e, 0xf7, 0x9f, 0x5b, 0x92, 0x6c,
+ 0xdb, 0x52, 0xe5, 0xbe, 0xdf, 0xff, 0xff, 0xbf, 0x51, 0xda, 0xfa, 0x7f,
+ 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x7b, 0x9f, 0xe7,
+ 0x4c, 0xb3, 0x4d, 0xd3, 0x54, 0xd9, 0xe7, 0xfb, 0xff, 0xff, 0x5f, 0xdc,
+ 0xfa, 0xdf, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x7f,
+ 0xe7, 0xf9, 0x3a, 0xd3, 0xa6, 0xe9, 0xb6, 0xa5, 0xca, 0xf9, 0xfd, 0xff,
+ 0xff, 0x83, 0x42, 0xd2, 0xff, 0xfb, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xf0, 0xff, 0xfd, 0xbf, 0xef, 0x4f, 0xd5, 0x64, 0xdb, 0x26, 0x4d, 0x30,
+ 0x7f, 0xff, 0xff, 0xff, 0x91, 0xda, 0xdb, 0xda, 0xdf, 0x1f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xe0, 0xff, 0xbf, 0xff, 0x7d, 0xbe, 0xb5, 0x6d, 0x97,
+ 0x6d, 0x93, 0x56, 0xdf, 0xff, 0xff, 0x7f, 0x81, 0x4a, 0xda, 0x7f, 0xff,
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xef, 0xeb, 0xbb,
+ 0xa6, 0x4d, 0x73, 0xcd, 0x92, 0xaa, 0xfe, 0xff, 0xff, 0x1f, 0x01, 0x6a,
+ 0x5b, 0xfb, 0xfb, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
+ 0xfd, 0xbf, 0x5f, 0x3b, 0xdb, 0x36, 0xbb, 0x26, 0x4c, 0xf9, 0xff, 0xff,
+ 0x0f, 0xa3, 0x2a, 0xe9, 0x7f, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xee, 0xff, 0xff, 0xfe, 0xfe, 0xcc, 0x91, 0xec, 0x93, 0x6d, 0x93,
+ 0xf2, 0xff, 0xff, 0x03, 0x00, 0x6a, 0x6d, 0x6f, 0xff, 0x1f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xf7, 0x6f, 0x76, 0xb6, 0xcd,
+ 0x76, 0xc9, 0x2a, 0xe9, 0xff, 0xff, 0x00, 0x02, 0x24, 0xed, 0xf9, 0xed,
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xdf, 0xff,
+ 0xd9, 0x66, 0x9b, 0x6c, 0x93, 0x54, 0xc5, 0xff, 0x3f, 0x00, 0x01, 0x95,
+ 0xb5, 0xaf, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff,
+ 0xff, 0xff, 0xfd, 0xae, 0x7d, 0xde, 0x6d, 0xf6, 0xa1, 0x8a, 0xff, 0x0f,
+ 0x00, 0x81, 0x90, 0xb4, 0xfd, 0xfd, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xcd, 0xb2, 0xdb, 0x2c, 0xcb,
+ 0x54, 0xfe, 0x01, 0x00, 0x01, 0xd2, 0xb6, 0xb7, 0xff, 0x0f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x39, 0xdb, 0x76,
+ 0xb3, 0x4b, 0xb6, 0x0a, 0xfe, 0x00, 0x00, 0x01, 0x48, 0xda, 0xfe, 0xff,
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff,
+ 0xcf, 0xb9, 0x6d, 0xb6, 0xd9, 0xa5, 0x75, 0x1c, 0x00, 0x80, 0x80, 0x20,
+ 0xdb, 0xda, 0xbe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+ 0xff, 0xff, 0xff, 0x77, 0x96, 0xd9, 0x26, 0xb3, 0x4d, 0x82, 0x11, 0x00,
+ 0x80, 0x80, 0x24, 0x6d, 0xff, 0xf7, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xbb, 0x67, 0xdb, 0xdd, 0x36, 0xd9,
+ 0x54, 0x60, 0x00, 0xc0, 0x00, 0x92, 0x65, 0x6b, 0xff, 0x0f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x4f, 0x7d, 0x96,
+ 0xd9, 0x6c, 0x36, 0xad, 0xc2, 0x00, 0x60, 0x00, 0xc8, 0xb6, 0x6d, 0xff,
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
+ 0xff, 0xc8, 0x76, 0xbb, 0xcb, 0x64, 0x52, 0x02, 0x03, 0x10, 0x00, 0x64,
+ 0xda, 0xff, 0xfb, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0xff, 0xff, 0x5f, 0xd7, 0x4d, 0x33, 0x99, 0xdd, 0x96, 0x04, 0x2c,
+ 0x1c, 0x40, 0x22, 0xdb, 0xb6, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xdf, 0xb5, 0xed, 0xe6, 0x36, 0x9b,
+ 0x6c, 0x29, 0xf0, 0x03, 0x00, 0x99, 0x6c, 0xfb, 0xfd, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x7f, 0x35, 0xbb,
+ 0xec, 0x76, 0x33, 0x91, 0x02, 0x00, 0x00, 0x00, 0x64, 0x67, 0xdf, 0xff,
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+ 0xbf, 0x6f, 0x9b, 0x9d, 0xc9, 0xce, 0x36, 0x49, 0x00, 0x00, 0x00, 0x93,
+ 0xb1, 0xdd, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0xff, 0x6a, 0x76, 0xbb, 0xdd, 0xd9, 0x64, 0x12, 0x01,
+ 0x00, 0x40, 0x98, 0xdd, 0x6d, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xdf, 0x66, 0x73, 0x33, 0xbb,
+ 0x9d, 0x4d, 0x00, 0x00, 0x00, 0x63, 0xe6, 0xf6, 0xff, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xed, 0xfd,
+ 0xee, 0xee, 0x36, 0x73, 0x2b, 0x04, 0x00, 0xa0, 0x38, 0x75, 0xbf, 0xff,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x7f, 0xd9, 0xec, 0xce, 0x66, 0x66, 0x66, 0x22, 0x04, 0x00, 0xc6,
+ 0x99, 0xbb, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x5e, 0xb3, 0xdb, 0xb9, 0xcd, 0xc9, 0x88, 0x89,
+ 0x00, 0x68, 0x31, 0xee, 0xdd, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xbe, 0xbb, 0x9b, 0x3f,
+ 0xbb, 0x33, 0x23, 0x04, 0x00, 0x8c, 0xf3, 0xee, 0xff, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x67,
+ 0x76, 0x77, 0xb2, 0x66, 0xce, 0x0c, 0xd1, 0xd6, 0xe3, 0x79, 0xf7, 0xff,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xf8, 0xfd, 0xef, 0xe6, 0xee, 0xce, 0x9c, 0x31, 0x16, 0x00, 0x3c,
+ 0x9e, 0xfb, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x9f, 0xdb, 0xdc, 0x9d, 0x99, 0x33, 0xc6,
+ 0xc1, 0xff, 0x8f, 0xe7, 0xbb, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf7, 0xbd, 0xbb, 0x33,
+ 0x7b, 0xee, 0x18, 0x1e, 0x50, 0xf0, 0xf9, 0xfe, 0xff, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7b,
+ 0xf7, 0x77, 0xf7, 0xe6, 0x9c, 0xe3, 0xf0, 0x4d, 0xff, 0x7c, 0xef, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xc0, 0xdf, 0x76, 0x7f, 0xcf, 0x9e, 0x73, 0x8f, 0x07, 0xff, 0x0b,
+ 0xdf, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xee, 0xcd, 0xdd, 0x9d, 0x7b, 0xf7, 0x7c,
+ 0x7a, 0x00, 0xf0, 0xe7, 0xfd, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0xbf, 0xdd, 0x7b,
+ 0x6b, 0x9e, 0xf3, 0xe1, 0xff, 0xff, 0x7d, 0xff, 0x7f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee,
+ 0xb7, 0xbb, 0x7b, 0xee, 0x79, 0x8f, 0x0f, 0xfa, 0x2f, 0xff, 0xf7, 0x3f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x7e, 0xff, 0x77, 0xef, 0xdd, 0x77, 0x7c, 0xfe, 0x02, 0xe8,
+ 0xcf, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xef, 0xee, 0xdd, 0xb3, 0xcf, 0xf3,
+ 0xf1, 0xff, 0xff, 0xf9, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfb, 0xff, 0xbf,
+ 0xef, 0xbe, 0xcf, 0x8f, 0xfe, 0x5f, 0xfe, 0xff, 0x0f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+ 0xbf, 0xbb, 0xf7, 0xde, 0x79, 0x3e, 0xff, 0x52, 0xd2, 0xdf, 0xff, 0x0f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xe0, 0xef, 0xef, 0xef, 0x3c, 0xef, 0xf9, 0xf8, 0xff, 0xff,
+ 0xf7, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xee, 0xdc, 0xf7, 0xfe, 0xe7,
+ 0x97, 0xfe, 0xff, 0xfe, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbf,
+ 0xef, 0xbf, 0x3e, 0xff, 0xda, 0xf6, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xfe, 0xbf, 0xf7, 0xfe, 0xf7, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xfe, 0xff, 0xde, 0xbd, 0xef, 0xfb, 0xd7, 0xff, 0xbf,
+ 0xfd, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xf7, 0x7d, 0xbf,
+ 0xff, 0xd2, 0xf6, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xbf,
+ 0xef, 0xfb, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc0, 0xff, 0xef, 0xbe, 0xf7, 0xef, 0xef, 0xff, 0xff, 0xff, 0x3f, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfb, 0xdf, 0xbf, 0xff, 0xff, 0xff,
+ 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x7f, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff,
+ 0xfe, 0xff, 0xfb, 0xf7, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xf0, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xfd, 0xff, 0xff, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };

Added: branches/branch-3.0-2011/test2/exception.cxx
===================================================================
--- branches/branch-3.0-2011/test2/exception.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/exception.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,55 @@
+#include <fltk/run.h>
+#include <fltk/Button.h>
+#include <fltk/Window.h>
+#include <fltk/ask.h>
+#include <config.h>
+#include <stdio.h>
+using namespace fltk;
+
+#ifdef HAVE_EXCEPTIONS
+
+#include <exception>
+class my_exception : public std::exception {
+public:
+  const char* what() const throw() {return "my exception";}
+};
+
+void throwit(Widget*, void*) {
+  throw my_exception();
+}
+
+int main(int argc, char** argv) {
+  Window window(200,100);
+  window.begin();
+  Button button(25,50,150,24,"Throw Exception");
+  button.callback(throwit);
+  window.end();
+  window.show(argc, argv);
+  for (;;) {
+    try {
+      return run();
+    } catch (std::exception& e) {
+      message("Exception was thrown!\nIt was \"%s\"", e.what());
+    }
+  }
+}
+
+#else
+
+void quit(Widget *w, void*) {
+  w->window()->hide();
+}
+
+int main(int argc, char** argv) {
+  Window window(200,100);
+  window.begin();
+  Button button(25,25,150,50,"This demo needs exceptions!");
+  button.align(ALIGN_WRAP);
+  button.callback(quit);
+  window.end();
+  window.show(argc, argv);
+  return run();
+}
+
+#endif
+

Added: branches/branch-3.0-2011/test2/fast_slow.cxx
===================================================================
--- branches/branch-3.0-2011/test2/fast_slow.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/fast_slow.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,47 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0001
+
+#include "fast_slow.h"
+
+Fl_Slider* control;
+
+static void cb_control(Fl_Slider* o, void*) {
+  fast->value(o->value());
+  if (!Fl::pushed()) slow->value(o->value());
+}
+
+Fl_Slider* fast;
+
+Fl_Slider* slow;
+
+int main (int argc, char **argv) {
+
+  Fl_Window* w;
+   {Fl_Window* o = new Fl_Window(318, 443);
+    w = o;
+     {Fl_Slider* o = control = new Fl_Slider(90, 200, 30, 200, "move\nthis");
+      o->callback((Fl_Callback*)cb_control);
+      o->when(FL_WHEN_CHANGED|FL_WHEN_RELEASE|FL_WHEN_NOT_CHANGED);
+    }
+     {Fl_Slider* o = fast = new Fl_Slider(140, 200, 30, 200, "fast\nredraw");
+      o->set_output();
+    }
+     {Fl_Slider* o = slow = new Fl_Slider(190, 200, 30, 200, "slow\nredraw");
+      o->set_output();
+    }
+     {Fl_Box* o = new Fl_Box(10, 10, 300, 180, "The left slider has\nchanged(FL_WHEN_CHANGED | FL_WHEN_RELEASE | FL_WHEN_NOT_\
+CHANGED) so it produces a callback on both drag and release mouse events.\n\nT\
+he middle slider (representing a widget with low overhead) is changed on every\
+ mouse movement.\n\nThe right slider (representing a widget with high overhead\
+) is only updated when the mouse is released, by checking if Fl::pushed() is z\
+ero.");
+      o->box(FL_DOWN_BOX);
+      o->color((Fl_Color)53);
+      o->selection_color((Fl_Color)47);
+      o->align(132|FL_ALIGN_INSIDE);
+    }
+    o->end();
+    o->resizable(o);
+  }
+  w->show(argc, argv);
+  return  Fl::run();
+}

Added: branches/branch-3.0-2011/test2/fast_slow.fl
===================================================================
--- branches/branch-3.0-2011/test2/fast_slow.fl	                        (rev 0)
+++ branches/branch-3.0-2011/test2/fast_slow.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,44 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.0001 
+images_dir ./ 
+header_name {.h} 
+code_name {.cxx} 
+gridx 10 
+gridy 10 
+snap 3
+Function {} {open
+} {
+  Fl_Window {} {open
+    xywh {143 188 318 443} resizable visible
+  } {
+    Fl_Slider control {
+      label {move
+this}
+      callback {fast->value(o->value());
+if (!Fl::pushed()) slow->value(o->value());}
+      xywh {90 200 30 200}
+      extra_code {o->when(FL_WHEN_CHANGED|FL_WHEN_RELEASE|FL_WHEN_NOT_CHANGED);}
+    }
+    Fl_Slider fast {
+      label {fast
+redraw}
+      xywh {140 200 30 200}
+      extra_code {o->set_output();}
+    }
+    Fl_Slider slow {
+      label {slow
+redraw}
+      xywh {190 200 30 200}
+      extra_code {o->set_output();}
+    }
+    Fl_Box {} {
+      label {The left slider has
+changed(FL_WHEN_CHANGED | FL_WHEN_RELEASE | FL_WHEN_NOT_CHANGED) so it produces a callback on both drag and release mouse events.
+
+The middle slider (representing a widget with low overhead) is changed on every mouse movement.
+
+The right slider (representing a widget with high overhead) is only updated when the mouse is released, by checking if Fl::pushed() is zero.} selected
+      xywh {10 10 300 180} align 148 box DOWN_BOX color 53 selection_color 47
+    }
+  }
+} 

Added: branches/branch-3.0-2011/test2/fast_slow.h
===================================================================
--- branches/branch-3.0-2011/test2/fast_slow.h	                        (rev 0)
+++ branches/branch-3.0-2011/test2/fast_slow.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,12 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0001
+
+#ifndef fast_slow_h
+#define fast_slow_h
+#include <FL/Fl.H>
+#include <FL/Fl_Window.H>
+#include <FL/Fl_Slider.H>
+extern Fl_Slider* control;
+extern Fl_Slider* fast;
+extern Fl_Slider* slow;
+#include <FL/Fl_Box.H>
+#endif

Added: branches/branch-3.0-2011/test2/file_chooser.cxx
===================================================================
--- branches/branch-3.0-2011/test2/file_chooser.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/file_chooser.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,359 @@
+//
+// " $Id: file_chooser.cxx 5036 2006-04-27 16:08:06Z fabien $"
+//
+// File chooser test program 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".
+//
+//
+// Contents:
+//
+//   main()           - Create a file chooser and wait for a selection to
+//                      be made.
+//   close_callback() - Close the main window...
+//   fc_callback()    - Handle choices in the file chooser...
+//   pdf_check()      - Check for and load the first page of a PDF file.
+//   ps_check()       - Check for and load the first page of a PostScript
+//                      file.
+//   show_callback()  - Show the file chooser...
+//
+
+//
+// Include necessary headers...
+//
+
+#include <stdio.h>
+#include <fltk/FileChooser.h>
+#include <fltk/FileIcon.h>
+#include <fltk/SharedImage.h>
+#include <fltk/pnmImage.h>
+//#include <fltk/PNMImage.h>
+#include <fltk/LightButton.h>
+#include <fltk/run.h>
+#include <string.h>
+#include <fltk/file_chooser.h>
+#include <fltk/ask.h>
+
+using namespace fltk;
+
+//
+// Globals...
+//
+
+Input		*filter;
+FileBrowser		*files;
+FileChooser		*fc;
+SharedImage		*image = 0;
+
+//
+// Functions...
+//
+
+void		close_callback(void);
+void		create_callback(void);
+void		dir_callback(void);
+void		fc_callback(FileChooser *, void *);
+void		multi_callback(void);
+SharedImage	*pdf_check(const char *, uchar *, int);
+SharedImage	*ps_check(const char *, uchar *, int);
+void		show_callback(void);
+
+//
+// 'close_callback()' - Close the main window...
+//
+
+void
+close_callback(void)
+{
+  exit(0);
+}
+
+
+//
+// 'create_callback()' - Handle clicks on the create button.
+//
+
+void
+create_callback(void)
+{
+  fc->type(fc->type() ^ FileChooser::CREATE);
+}
+
+
+//
+// 'dir_callback()' - Handle clicks on the directory button.
+//
+
+void
+dir_callback(void)
+{
+  fc->type(fc->type() ^ FileChooser::DIRECTORY);
+}
+
+
+//
+// 'fc_callback()' - Handle choices in the file chooser...
+//
+
+void
+fc_callback(FileChooser *fc,	// I - File chooser
+            void            *data)	// I - Data
+{
+  const char		*filename;	// Current filename
+
+
+  printf("fc_callback(fc = %p, data = %p)\n", fc, data);
+
+  filename = fc->value();
+
+  printf("    filename = \"%s\"\n", filename ? filename : "(null)");
+}
+
+
+//
+// 'multi_callback()' - Handle clicks on the multi button.
+//
+
+void
+multi_callback(void)
+{
+  fc->type(fc->type() ^ FileChooser::MULTI);
+}
+
+
+//
+// 'pdf_check()' - Check for and load the first page of a PDF file.
+//
+
+SharedImage *			// O - Page image or NULL
+pdf_check(const char *name,	// I - Name of file
+          uchar      *header,	// I - Header data
+	  int        headerlen)	// I - Length of header data
+{
+  const char	*home;		// Home directory
+  char		preview[1024],	// Preview filename
+		command[1024];	// Command
+
+
+  if (memcmp(header, "%PDF", 4) != 0)
+    return 0;
+
+  home = getenv("HOME");
+  sprintf(preview, "%s/.preview.ppm", home ? home : "");
+
+  sprintf(command,
+          "gs -r100 -dFIXED -sDEVICE=ppmraw -dQUIET -dNOPAUSE -dBATCH "
+	  "-sstdout=\"%%stderr\" -sOUTPUTFILE=\'%s\' "
+	  "-dFirstPage=1 -dLastPage=1 \'%s\' 2>/dev/null", preview, name);
+
+  if (system(command)) return 0;
+
+  return new pnmImage(preview);
+}
+
+
+//
+// 'ps_check()' - Check for and load the first page of a PostScript file.
+//
+
+SharedImage *			// O - Page image or NULL
+ps_check(const char *name,	// I - Name of file
+         uchar      *header,	// I - Header data
+	 int        headerlen)	// I - Length of header data
+{
+  const char	*home;		// Home directory
+  char		preview[1024],	// Preview filename
+		outname[1024],	// Preview PS file
+		command[1024];	// Command
+  FILE		*in,		// Input file
+		*out;		// Output file
+  int		page;		// Current page
+  char		line[256];	// Line from file
+
+
+  if (memcmp(header, "%!", 2) != 0)
+    return 0;
+
+  home = getenv("HOME");
+  sprintf(preview, "%s/.preview.ppm", home ? home : "");
+
+  if (memcmp(header, "%!PS", 4) == 0) {
+    // PS file has DSC comments; extract the first page...
+    sprintf(outname, "%s/.preview.ps", home ? home : "");
+
+    if (strcmp(name, outname) != 0) {
+      in   = fopen(name, "rb");
+      out  = fopen(outname, "wb");
+      page = 0;
+
+      while (fgets(line, sizeof(line), in) != NULL) {
+	if (strncmp(line, "%%Page:", 7) == 0) {
+          page ++;
+	  if (page > 1) break;
+	}
+
+	fputs(line, out);
+      }
+
+      fclose(in);
+      fclose(out);
+    }
+  } else {
+    // PS file doesn't have DSC comments; do the whole file...
+    strncpy(outname, name, sizeof(outname) - 1);
+    outname[sizeof(outname) - 1] = '\0';
+  }
+
+  sprintf(command,
+          "gs -r100 -dFIXED -sDEVICE=ppmraw -dQUIET -dNOPAUSE -dBATCH "
+	  "-sstdout=\"%%stderr\" -sOUTPUTFILE=\'%s\' \'%s\' 2>/dev/null",
+	  preview, outname);
+
+  if (system(command)) return 0;
+
+  return new pnmImage(preview);
+}
+
+
+//
+// 'show_callback()' - Show the file chooser...
+//
+
+void
+show_callback(void)
+{
+  int	i;			// Looping var
+  int	count;			// Number of files selected
+  char	relative[1024];		// Relative filename
+
+
+  if (filter->value()[0])
+    fc->filter(filter->value());
+
+  fc->show(240,200);
+
+  while (fc->visible())
+    fltk::wait();
+
+  count = fc->count();
+  if (count > 0)
+  {
+    files->clear();
+
+    for (i = 1; i <= count; i ++)
+    {
+      if (!fc->value(i))
+        break;
+
+      fltk::filename_relative(relative, sizeof(relative), fc->value(i));
+
+      files->add(relative,
+                 FileIcon::find(fc->value(i), FileIcon::PLAIN));
+    }
+
+    files->redraw();
+  }
+}
+
+//
+// 'main()' - Create a file chooser and wait for a selection to be made.
+//
+#define SIMPLE_IMPL 0
+int			// O - Exit status
+main(int  argc,		// I - Number of command-line arguments
+     char *argv[])	// I - Command-line arguments
+{
+  // Make the file chooser...
+  //fltk::scheme(NULL);
+
+  // if you decide not to link with images lib you must comment this:
+  FileIcon::load_system_icons();
+
+#if !SIMPLE_IMPL
+  Window	*window;// Main window
+  Button	*button;// Buttons
+  FileIcon	*icon;	// New file icon
+
+  fc = new FileChooser(".", "*", FileChooser::SINGLE, "FileChooser Test");
+  fc->callback(fc_callback);
+
+  // Register the PS and PDF image types...
+  SharedImage::add_handler(pdf_check);
+  SharedImage::add_handler(ps_check);
+
+  // Make the main window...
+  window = new Window(400, 200, "File Chooser Test");
+  window->begin();
+
+  filter = new Input(50, 10, 315, 25, "Filter:");
+  if (argc > 1)
+    filter->value(argv[1]);
+  else
+    filter->value(
+		  "Image Files (*.{bmp,gif,jpg,png})\t"
+		  "PDF Files (*.pdf)\t"
+                  "PostScript Files (*.ps)\t"
+		  "C/C++ Source Files (*.{c,C,cc,cpp,cxx,h,H})"
+		  );
+
+  button = new Button(365, 10, 25, 25);
+  button->labelcolor(fltk::YELLOW);
+  button->callback((Callback *)show_callback);
+
+#define TEST_FETCH_PNG 0
+#if TEST_FETCH_PNG
+  icon = new FileIcon("butt", FileIcon::DIRECTORY);
+  icon->load_image("./images/folder.png");
+#else
+  icon   = new FileIcon(*FileIcon::find(".", FileIcon::DIRECTORY));
+#endif
+  icon->value(button);
+
+  button = new LightButton(50, 45, 80, 25, "MULTI");
+  button->callback((Callback*)multi_callback);
+
+  button = new LightButton(140, 45, 90, 25, "CREATE");
+  button->callback((Callback*)create_callback);
+
+  button = new LightButton(240, 45, 115, 25, "DIRECTORY");
+  button->callback((Callback*)dir_callback);
+
+  files = new FileBrowser(50, 80, 340, 75, "Files:");
+  files->align(fltk::ALIGN_LEFT);
+
+  button = new Button(340, 165, 50, 25, "Close");
+  button->callback((Callback*)close_callback);
+  window->resizable(files);
+  window->end();
+  window->show(1, argv);
+  fltk::run();
+
+#else
+  const char *defaultname = "images/testimg.jpg";
+  const char * name = fltk::file_chooser("Open","Image Files (*.{bmp,gif,jpg,png})\t", defaultname );
+  fltk::message("File selected is : %s", name && strlen(name) ? name : "<no_selection>");
+#endif
+
+  return (0);
+}
+
+//
+// End of "$Id: file_chooser.cxx 5036 2006-04-27 16:08:06Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/fl_jpeg_image.cxx
===================================================================
--- branches/branch-3.0-2011/test2/fl_jpeg_image.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/fl_jpeg_image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,201 @@
+//
+// "$Id: fl_jpeg_image.cxx 4886 2006-03-30 09:55:32Z fabien $"
+//
+// fl_draw_image test program for the Fast Light Tool Kit (FLTK).
+//
+// Be sure to try every visual with the -v switch and try -m (monochrome)
+// on each of them.
+//
+// This program requires either the libjpeg.a library or an internal DD
+// library to read images (this is chosen by the presence of the "DD"
+// #define).
+//
+// To get the jpeg library:
+//
+// The "official" archive site for this software is ftp.uu.net (Internet
+// address 192.48.96.9).  The most recent released version can always be
+// found there in directory graphics/jpeg.  This particular version will
+// be archived as graphics/jpeg/jpegsrc.v6a.tar.gz.
+//
+// The makefile assummes you decompressed and build these in a directory
+// called "jpeg-6a" in the same location as the "FL" directory.
+//
+// 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".
+//
+
+#include <fltk/Fl.h>
+#include <fltk/fl_draw.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+void readtheimage(const char *name); // below
+int width;
+int height;
+int depth;
+int linedelta;
+uchar *ibuffer;
+
+////////////////////////////////////////////////////////////////
+
+#include <fltk/Fl_Window.h>
+int mono;
+
+class image_window : public Fl_Window {
+  void draw();
+public:
+  image_window(int w,int h) : Fl_Window(w,h) {box(FL_NO_BOX);}
+};
+
+void image_window::draw() {
+  if (mono)
+    fl_draw_image_mono(ibuffer+1,0,0,width,height,depth,linedelta);
+  else
+    fl_draw_image(ibuffer,0,0,width,height,depth,linedelta);
+}
+
+////////////////////////////////////////////////////////////////
+
+#include <fltk/x.h>
+#include "list_visuals.cxx"
+
+////////////////////////////////////////////////////////////////
+
+int visid = -1;
+int arg(int argc, char **argv, int &i) {
+  if (argv[i][1] == 'm') {mono = 1; i++; return 1;}
+
+  if (argv[i][1] == 'v') {
+    if (i+1 >= argc) return 0;
+    visid = atoi(argv[i+1]);
+    i += 2;
+    return 2;
+  }
+
+  return 0;
+}
+
+int main(int argc, char ** argv) {
+
+  int i = 1;
+  if (!Fl::args(argc,argv,i,arg) || i != argc-1) {
+    fprintf(stderr,"usage: %s <switches> image_file\n"
+" -v # : use visual\n"
+" -m : monochrome\n"
+"%s\n",
+	    argv[0],Fl::help);
+    exit(1);
+  }
+
+  readtheimage(argv[i]);
+  image_window *window = new image_window(width,height);
+
+  if (visid>=0) {
+    fl_open_display();
+    XVisualInfo templt; int num;
+    templt.visualid = visid;
+    fl_visual = XGetVisualInfo(fl_display, VisualIDMask, &templt, &num);
+    if (!fl_visual) {
+      fprintf(stderr, "No visual with id %d, use one of:\n",visid);
+      list_visuals();
+      exit(1);
+    }
+    fl_colormap = XCreateColormap(fl_display, RootWindow(fl_display,fl_screen),
+				fl_visual->visual, AllocNone);
+    fl_xpixel(0); // make sure black is allocated
+  }
+
+  window->show(argc,argv);
+  return Fl::run();
+}
+
+////////////////////////////////////////////////////////////////
+#ifndef DD_LIBRARY
+// Read using jpeg library:
+
+extern "C" {
+#include "jpeglib.h"
+}
+
+void readtheimage(const char *name) {
+  struct jpeg_decompress_struct cinfo;
+  struct jpeg_error_mgr jerr;
+  FILE * infile = fopen(name, "rb");
+  if (!infile) {
+    fprintf(stderr, "can't open %s\n", name);
+    exit(1);
+  }
+  cinfo.err = jpeg_std_error(&jerr);
+  jpeg_create_decompress(&cinfo);
+  jpeg_stdio_src(&cinfo, infile);
+  jpeg_read_header(&cinfo, TRUE);
+  jpeg_start_decompress(&cinfo);
+  width = cinfo.output_width;
+  height = cinfo.output_height;
+  depth = cinfo.output_components;
+  ibuffer = new uchar[width*height*depth];
+  uchar *rp = ibuffer;
+  for (int i=0; i<height; i++) {
+    jpeg_read_scanlines(&cinfo, &rp, 1);
+    rp += width*depth;
+  }
+  jpeg_finish_decompress(&cinfo);
+  jpeg_destroy_decompress(&cinfo);
+  fclose(infile);
+}
+
+////////////////////////////////////////////////////////////////
+#else // Digital Domain in-house library
+
+#include "DDNewImage/DDImageOp.h"
+#include "DDNewImage/DDImgRead.h"
+#include "DDNewImage/DDImgToBuffer.h"
+
+void readtheimage(const char *name) {
+  DDImgRead reader(name);
+  width = reader.xsize();
+  height = reader.ysize();
+  depth = 4; // reader.zsize();
+  ibuffer = new uchar[width*height*depth];
+  DDImgToBuffer b(&reader,depth,ibuffer,0,0,width,height);
+  b.execute();
+  if (DDImage::haderror) {
+    fprintf(stderr,"%s\n",DDImage::errormsg());
+    exit(1);
+  }
+  // swap it around into RGBA order:
+  for (uchar *p = ibuffer+width*height*4-4; p >= ibuffer; p-=4) {
+    uchar r = p[3];
+    uchar g = p[2];
+    uchar b = p[1];
+    uchar a = p[0];
+    p[0] = r;
+    p[1] = g;
+    p[2] = b;
+    p[3] = a;
+  }
+  // make it bottom-to-top:
+  ibuffer = ibuffer + width*(height-1)*depth;
+  linedelta = -(width*depth);
+}
+#endif
+
+//
+// End of "$Id: fl_jpeg_image.cxx 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/fltk_scheme.cxx
===================================================================
--- branches/branch-3.0-2011/test2/fltk_scheme.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/fltk_scheme.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,105 @@
+#include <fltk/fl_config.h>
+#include <fltk/x.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <limits.h>
+#ifdef _WIN32
+#include <windows.h>
+#endif
+#include <config.h>
+
+#ifndef PATH_MAX
+#define PATH_MAX 128
+#endif
+
+#ifndef _WIN32
+// Stolen from KDE!
+static int _getprop(Window w, Atom a, Atom type, long len, unsigned char **p){
+  Atom real_type;
+  int format;
+  unsigned long n, extra;
+  int status;
+
+  status = XGetWindowProperty(fl_display, w, a, 0L, len, False, type, &real_type, &format, &n, &extra, p);
+  if (status != Success || *p == 0)
+    return -1;
+  if (n == 0)
+    XFree((char*) *p);
+  return n;
+}
+
+// Stolen from KDE!
+static bool getSimpleProperty(Window w, Atom a, long &result){
+  long *p = 0;
+
+  if (_getprop(w, a, a, 1L, (unsigned char**)&p) <= 0){
+    return false;
+  }
+
+  result = p[0];
+  XFree((char *) p);
+  return true;
+}
+#endif
+
+const char* pname;
+
+void usage() {
+  fprintf(stderr, "%s: Usage- %s <scheme>\n", pname, pname);
+  exit(1);
+}
+
+int main(int argc, char* argv[]) {
+  pname = argv[0];
+  if (argc != 2) usage();
+
+  char scheme[PATH_MAX];
+  strncpy(scheme, argv[1], sizeof(scheme));
+
+  Fl_Config flconfig("flconfig");
+  int r;
+
+  if ( (r = flconfig.set("default/scheme", scheme)) ) {
+    fprintf(stderr, "%s: Error- Cannot set default scheme.\n", pname);
+    fprintf(stderr, "%s: Error- %s.\n", pname, flconfig.strerror());
+    exit(3);
+  }
+
+#ifndef _WIN32
+  // stolen from KDE!
+  fl_open_display();
+  int screen = DefaultScreen(fl_display);
+  Window root = RootWindow(fl_display, screen);
+
+  XEvent ev;
+  unsigned int i, nrootwins;
+  Window dw1, dw2, *rootwins;
+
+  XQueryTree(fl_display, root, &dw1, &dw2, &rootwins, &nrootwins);
+
+  Atom a = XInternAtom(fl_display, "FLTK_STYLE_WINDOW", False);
+  Atom Scheme = XInternAtom(fl_display, "FLTKChangeScheme", False);
+
+  for (i = 0; i < nrootwins; i++) {
+    long result = 0;
+    getSimpleProperty(rootwins[i],a, result);
+    if (result) {
+      ev.xclient.type = ClientMessage;
+      ev.xclient.display = fl_display;
+      ev.xclient.window = rootwins[i];
+      ev.xclient.message_type = Scheme;
+      ev.xclient.format = 32;
+
+      XSendEvent(fl_display, rootwins[i] , False, 0L, &ev);
+    }
+  }
+
+  XFlush(fl_display);
+
+  XFree((char *) rootwins);
+#else
+  // Need to figure out how to do this for Windows...
+  // But why bother, we already handle Windows style change events.
+#endif
+}
+

Added: branches/branch-3.0-2011/test2/fltkrc
===================================================================
--- branches/branch-3.0-2011/test2/fltkrc	                        (rev 0)
+++ branches/branch-3.0-2011/test2/fltkrc	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,41 @@
+#
+# config file for the minimalistic fltk conf reader plugin
+#
+
+[window]
+box		= image_flat_box(images/bg.jpeg)# This is an example 
+						# of boxtype defined in plugin
+
+
+[global]
+box		= image_box(images/bg.jpeg images/bg2.jpeg images/bg2.jpeg)	# This is an example 
+glyph_box	= image_box(images/bg.jpeg images/bg2.jpeg images/bg2.jpeg)	# This is an example 
+						# of boxtype defined in plugin
+#box		= rshadow_box			# Normal box
+#color		= #d0d0e0			# Color in hex
+#selection_color	= #d0d0e0			# Color in hex
+label_color	= .2, 0, 0			# Color in r, g, b
+
+
+[check_button]
+box		= no_box
+
+
+[menu_item]
+box			= image_flat_box(images/bg.jpeg images/bg2.jpeg images/bg2.jpeg)
+#highlight_label_color	= 0.7 , 0.2 , 0.2
+highlight_label_color	= 1,0,0
+highlight_label_color	= 1,0,0
+
+[menu_title]
+box			= image_flat_box(images/bg.jpeg images/bg2.jpeg images/bg2.jpeg)
+highlight_label_color	= 0.7 , 0.2 , 0.2
+
+
+[tabs]
+box		= image_box(images/bg2.jpeg)
+
+
+#[box]
+#box		= image_box(images/bg2.jpeg)
+box			= image_flat_box(images/bg.jpeg images/bg2.jpeg images/bg2.jpeg)

Added: branches/branch-3.0-2011/test2/fonts.cxx
===================================================================
--- branches/branch-3.0-2011/test2/fonts.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/fonts.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,213 @@
+//
+// "$Id: fonts.cxx 5864 2007-05-31 14:27:07Z sanel.z $"
+//
+// Font demo program for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Browser.h>
+#include <fltk/CheckButton.h>
+#include <fltk/draw.h>
+#include <fltk/Font.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+fltk::Window *form;
+
+class FontDisplay : public fltk::Widget {
+  void draw();
+public:
+  fltk::Font* font; float size; const char* encoding;
+  FontDisplay(fltk::Box* B, int X, int Y, int W, int H, const char* L = 0) :
+    fltk::Widget(X,Y,W,H,L) {box(B); font = 0; size = 14.0f;}
+};
+
+fltk::Widget* id_box;
+
+void FontDisplay::draw() {
+  draw_box();
+  fltk::push_clip(2,2,w()-4,h()-4);
+  const char* saved_encoding = fltk::get_encoding();
+  fltk::set_encoding(encoding);
+  fltk::setfont(font, size);
+  id_box->label(fltk::Font::current_name());
+  id_box->redraw();
+  fltk::setcolor(fltk::BLACK);
+  char buffer[32];
+  for (int Y = 1; Y < 8; Y++) {
+    for (int X = 0; X < 32; X++) buffer[X] = (32*Y+X);
+    fltk::drawtext(buffer, 32, 3, 3+(size+leading())*Y);
+  }
+  fltk::set_encoding(saved_encoding);
+  fltk::pop_clip();
+}
+
+FontDisplay *textobj;
+
+fltk::Browser *fontobj, *sizeobj, *encobj;
+
+fltk::Font** fonts; // list returned by fltk
+
+fltk::Group *button_group;
+fltk::CheckButton* bold_button, *italic_button;
+
+float pickedsize = 14.0f;
+
+void font_cb(fltk::Widget *, long) {
+  int fn = fontobj->value();
+//printf("font: %d    name: %s   bigname: %s\n", fn, fonts[fn]->name(), fonts[fn]->system_name());
+
+  fltk::Font* f = fonts[fn];
+  if (f->bold() == f) bold_button->deactivate();
+  else bold_button->activate();
+  if (f->italic() == f) italic_button->deactivate();
+  else italic_button->activate();
+  if (bold_button->value()) f = f->bold();
+  if (italic_button->value()) f = f->italic();
+  textobj->font = f;
+
+  char saved[30];
+  if (textobj->encoding)
+    strncpy(saved, textobj->encoding, 29);
+  else
+    saved[0] = 0;
+  encobj->clear();
+  const char** encodings; int ne = f->encodings(encodings);
+  int picked = -1;
+  int iso8859 = 0;
+  for (int i = 0; i < ne; i++) {
+    encobj->add(encodings[i]);
+    if (!strcmp(encodings[i], saved)) picked = i;
+    if (!strcmp(encodings[i], fltk::get_encoding())) iso8859 = i;
+  }
+  if (picked < 0) picked = iso8859;
+  textobj->encoding = encodings[picked];
+  encobj->value(picked);
+
+  sizeobj->clear();
+  int *s; int n = f->sizes(s);
+  if (!n) {
+    // no sizes (this only happens on X)
+    fltk::setfont(f, pickedsize);
+    textobj->size = fltk::getsize();
+  } else /*if (s[0] == 0)*/ {
+    // many sizes;
+    int j = 1;
+    for (int i = s[0]?0:1; i<64 || i<s[n-1]; i++) {
+      char buf[20];
+      if (j < n && i==s[j]) {sprintf(buf,"@b;%d",i); j++;}
+      else sprintf(buf,"%d",i);
+      sizeobj->add(buf);
+    }
+    sizeobj->value(int(pickedsize-1));
+    textobj->size = pickedsize;
+    /*  } else {
+    // some sizes
+    int w = 0;
+    for (int i = 0; i < n; i++) {
+      if (s[i]<=pickedsize) w = i;
+      char buf[20];
+      sprintf(buf,"@b;%d",s[i]);
+      sizeobj->add(buf);
+    }
+    sizeobj->value(w);
+    textobj->size = s[w]; */
+  }
+  encobj->redraw();
+  sizeobj->redraw();
+  textobj->redraw();
+  button_group->redraw();
+}
+
+void encoding_cb(fltk::Widget *, long) {
+  int i = encobj->value();
+  if (i < 0)
+     return;
+  textobj->encoding = encobj->child(i)->label();
+  textobj->redraw();
+}
+
+void size_cb(fltk::Widget *, long) {
+  int i = sizeobj->value();
+  if (i < 0) 
+     return;
+  const char *c = sizeobj->child(i)->label();
+  while (*c < '0' || *c > '9') c++;
+  pickedsize = (float) atoi(c);
+  textobj->size = pickedsize;
+  textobj->redraw();
+}
+
+void create_the_forms() {
+  form = new fltk::Window(550,390);
+  form->set_double_buffer();
+  form->begin();
+  id_box = new fltk::Widget(10, 172, 530, 15);
+  id_box->box(fltk::ENGRAVED_BOX);
+  id_box->labelsize(10);
+  id_box->labelfont(fltk::COURIER);
+  id_box->set_flag(fltk::ALIGN_INSIDE|fltk::ALIGN_CLIP|fltk::ALIGN_LEFT);
+  textobj = new FontDisplay(fltk::ENGRAVED_BOX,10,10,530,160);
+  textobj->clear_flag(fltk::ALIGN_MASK);
+  textobj->set_flag(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_INSIDE|fltk::ALIGN_CLIP);
+  button_group = new fltk::Group(10, 190, 140, 20);
+  button_group->begin();
+  bold_button = new fltk::CheckButton(0, 0, 70, 20, "Bold");
+  bold_button->labelfont(bold_button->labelfont()->bold());
+  bold_button->callback(font_cb, 1);
+  italic_button = new fltk::CheckButton(70, 0, 70, 20, "Italic");
+  italic_button->labelfont(italic_button->labelfont()->italic());
+  italic_button->callback(font_cb, 1);
+  button_group->end();
+  fontobj = new fltk::Browser(10, 210, 280, 170);
+  fontobj->when(fltk::WHEN_CHANGED);
+  fontobj->callback(font_cb);
+  form->resizable(fontobj);
+  encobj = new fltk::Browser(300, 210, 100, 170);
+  encobj->when(fltk::WHEN_CHANGED);
+  encobj->callback(encoding_cb, 1);
+  sizeobj = new fltk::Browser(410, 210, 130, 170);
+  sizeobj->when(fltk::WHEN_CHANGED);
+  sizeobj->callback(size_cb);
+  form->end();
+}
+
+#include <fltk/ask.h>
+
+int main(int argc, char **argv) {
+  create_the_forms();
+  int numfonts = fltk::list_fonts(fonts);
+  for (int i = 0; i < numfonts; i++)
+       fontobj->add(fonts[i]->name());
+
+  fontobj->value(0);
+  textobj->encoding = fltk::get_encoding();
+  font_cb(fontobj,0);
+  form->show(argc,argv);
+  return fltk::run();
+}
+
+//
+// End of "$Id: fonts.cxx 5864 2007-05-31 14:27:07Z sanel.z $".
+//

Added: branches/branch-3.0-2011/test2/fractals.cxx
===================================================================
--- branches/branch-3.0-2011/test2/fractals.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/fractals.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,833 @@
+//
+// "$Id: fractals.cxx 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Fractal drawing demo for the Fast Light Tool Kit (FLTK).
+//
+// This is a GLUT demo program, with modifications to
+// demonstrate how to add FLTK controls to a GLUT program.   The GLUT
+// code is unchanged except for the end (search for FLTK to find changes).
+//
+// 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".
+//
+
+#include <config.h>
+#if !HAVE_GL || !HAVE_GL_GLU_H
+#include <fltk/run.h>
+#include <fltk/ask.h>
+int main(int, char**) {
+  fltk::alert("This demo does not work without GL and GLU");
+  return 1;
+}
+#else
+/*
+ * To compile: cc -o fractals fractals.c -lGL -lGLU -lX11 -lglut -lXmu -lm
+ *
+ * Usage: fractals
+ *
+ * Homework 6, Part 2: fractal mountains and fractal trees 
+ * (Pretty Late)
+ *
+ * Draws fractal mountains and trees -- and an island of mountains in water 
+ * (I tried having trees on the island but it didn't work too well.)
+ *
+ * Two viewer modes: polar and flying (both restrained to y>0 for up vector).
+ * Keyboard 0->9 and +/- control speed when flying.
+ *
+ * Only keyboard commands are 0-9 and +/- for speed in flying mode.
+ *
+ * Fog would make the island look much better, but I couldn't get it to work
+ * correctly.  Would line up on -z axis not from eye.
+ *
+ * Philip Winston - 3/4/95
+ * pwinston@hmc.edu
+ * http://www.cs.hmc.edu/people/pwinston
+ *
+ */
+
+#include <FL/glut.H>
+#ifdef __APPLE__
+#  include <OpenGL/glu.h>
+#else
+#  include <GL/glu.h> // added for FLTK
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <limits.h>           /* ULONG_MAX is defined here */
+#include <float.h>            /* FLT_MAX is atleast defined here */
+typedef unsigned long ulong;
+
+#include <time.h>  /* for random seed */
+
+#include "fracviewer.h"
+
+#if defined(WIN32) || defined(__EMX__)
+#  define drand48() (((float) rand())/((float) RAND_MAX))
+#  define srand48(x) (srand((x)))
+#elif defined __APPLE__
+#  define drand48() (((float) rand())/((float) RAND_MAX))
+#  define srand48(x) (srand((x)))
+#endif
+
+typedef enum { NOTALLOWED=10, MOUNTAIN, TREE, ISLAND, BIGMTN, STEM, LEAF, 
+               MOUNTAIN_MAT, WATER_MAT, LEAF_MAT, TREE_MAT, STEMANDLEAVES,
+               AXES } DisplayLists;
+
+#define MAXLEVEL 8
+
+int Rebuild = 1,        /* Rebuild display list in next display? */
+    Fract   = TREE,     /* What fractal are we building */
+    Level   = 4;        /* levels of recursion for fractals */     
+
+int DrawAxes = 0;       
+
+/***************************************************************/
+/************************* VECTOR JUNK *************************/
+/***************************************************************/
+
+  /* print vertex to stderr */
+void printvert(float v[3])
+{
+  fprintf(stderr, "(%f, %f, %f)\n", v[0], v[1], v[2]);
+}
+
+#if 0	// removed for FL, it is in fracviewer.c
+  /* normalizes v */
+void normalize(GLfloat v[3])
+{
+  GLfloat d = sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);
+
+  if (d == 0)
+    fprintf(stderr, "Zero length vector in normalize\n");
+  else
+    v[0] /= d; v[1] /= d; v[2] /= d;
+}
+
+  /* calculates a normalized crossproduct to v1, v2 */
+void ncrossprod(float v1[3], float v2[3], float cp[3])
+{
+  cp[0] = v1[1]*v2[2] - v1[2]*v2[1];
+  cp[1] = v1[2]*v2[0] - v1[0]*v2[2];
+  cp[2] = v1[0]*v2[1] - v1[1]*v2[0];
+  normalize(cp);
+}
+#endif
+
+  /* calculates normal to the triangle designated by v1, v2, v3 */
+void triagnormal(float v1[3], float v2[3], float v3[3], float norm[3])
+{
+  float vec1[3], vec2[3];
+
+  vec1[0] = v3[0] - v1[0];  vec2[0] = v2[0] - v1[0];
+  vec1[1] = v3[1] - v1[1];  vec2[1] = v2[1] - v1[1];
+  vec1[2] = v3[2] - v1[2];  vec2[2] = v2[2] - v1[2];
+
+  ncrossprod(vec2, vec1, norm);
+}
+
+float xzlength(float v1[3], float v2[3])
+{
+  return sqrt((v1[0] - v2[0])*(v1[0] - v2[0]) +
+              (v1[2] - v2[2])*(v1[2] - v2[2]));
+}
+
+float xzslope(float v1[3], float v2[3])
+{
+  return ((v1[0] != v2[0]) ? ((v1[2] - v2[2]) / (v1[0] - v2[0]))
+	                   : FLT_MAX);
+}
+
+
+/***************************************************************/
+/************************ MOUNTAIN STUFF ***********************/
+/***************************************************************/
+
+GLfloat DispFactor[MAXLEVEL];  /* Array of what to multiply random number
+				  by for a given level to get midpoint
+				  displacement  */
+GLfloat DispBias[MAXLEVEL];  /* Array of what to add to random number
+				before multiplying it by DispFactor */
+
+#define NUMRANDS 191
+float RandTable[NUMRANDS];  /* hash table of random numbers so we can
+			       raise the same midpoints by the same amount */ 
+
+         /* The following are for permitting an edge of a moutain to be   */
+         /* pegged so it won't be displaced up or down.  This makes it    */
+         /* easier to setup scenes and makes a single moutain look better */
+
+GLfloat Verts[3][3],    /* Vertices of outside edges of mountain */
+        Slopes[3];      /* Slopes between these outside edges */
+int     Pegged[3];      /* Is this edge pegged or not */           
+
+ /*
+  * Comes up with a new table of random numbers [0,1)
+  */
+void InitRandTable(unsigned int seed)
+{
+  int i;
+
+  srand48((long) seed);
+  for (i = 0; i < NUMRANDS; i++)
+    RandTable[i] = drand48() - 0.5;
+}
+
+  /* calculate midpoint and displace it if required */
+void Midpoint(GLfloat mid[3], GLfloat v1[3], GLfloat v2[3],
+	      int edge, int level)
+{
+  unsigned hash;
+
+  mid[0] = (v1[0] + v2[0]) / 2;
+  mid[1] = (v1[1] + v2[1]) / 2;
+  mid[2] = (v1[2] + v2[2]) / 2;
+  if (!Pegged[edge] || (fabs(xzslope(Verts[edge], mid) 
+                        - Slopes[edge]) > 0.00001)) {
+    srand48((int)((v1[0]+v2[0])*23344));
+    hash = unsigned(drand48() * 7334334);
+    srand48((int)((v2[2]+v1[2])*43433));
+    hash = (unsigned)(drand48() * 634344 + hash) % NUMRANDS;
+    mid[1] += ((RandTable[hash] + DispBias[level]) * DispFactor[level]);
+  }
+}
+
+  /*
+   * Recursive moutain drawing routine -- from lecture with addition of 
+   * allowing an edge to be pegged.  This function requires the above
+   * globals to be set, as well as the Level global for fractal level 
+   */
+static float cutoff = -1;
+
+void FMR(GLfloat v1[3], GLfloat v2[3], GLfloat v3[3], int level)
+{
+  if (level == Level) {
+    GLfloat norm[3];
+    if (v1[1] <= cutoff && v2[1]<=cutoff && v3[1]<=cutoff) return;
+    triagnormal(v1, v2, v3, norm);
+    glNormal3fv(norm);
+    glVertex3fv(v1);
+    glVertex3fv(v2);
+    glVertex3fv(v3);
+
+  } else {
+    GLfloat m1[3], m2[3], m3[3];
+
+    Midpoint(m1, v1, v2, 0, level);
+    Midpoint(m2, v2, v3, 1, level);
+    Midpoint(m3, v3, v1, 2, level);
+
+    FMR(v1, m1, m3, level + 1);
+    FMR(m1, v2, m2, level + 1);
+    FMR(m3, m2, v3, level + 1);
+    FMR(m1, m2, m3, level + 1);
+  }
+}
+
+ /*
+  * sets up lookup tables and calls recursive mountain function
+  */
+void FractalMountain(GLfloat v1[3], GLfloat v2[3], GLfloat v3[3],
+                     int pegged[3])
+{
+  GLfloat lengths[MAXLEVEL];
+  GLfloat fraction[8] = { 0.3, 0.3, 0.4, 0.2, 0.3, 0.2, 0.4, 0.4  };
+  GLfloat bias[8]     = { 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1  };
+  int i;
+  float avglen = (xzlength(v1, v2) + 
+                  xzlength(v2, v3) +
+		  xzlength(v3, v1) / 3);
+
+  for (i = 0; i < 3; i++) {
+    Verts[0][i] = v1[i];      /* set mountain vertex globals */
+    Verts[1][i] = v2[i];
+    Verts[2][i] = v3[i];
+    Pegged[i] = pegged[i];
+  }
+
+  Slopes[0] = xzslope(Verts[0], Verts[1]);   /* set edge slope globals */
+  Slopes[1] = xzslope(Verts[1], Verts[2]);
+  Slopes[2] = xzslope(Verts[2], Verts[0]);
+
+  lengths[0] = avglen;          
+  for (i = 1; i < Level; i++) {   
+    lengths[i] = lengths[i-1]/2;     /* compute edge length for each level */
+  }
+
+  for (i = 0; i < Level; i++) {     /* DispFactor and DispBias arrays */      
+    DispFactor[i] = (lengths[i] * ((i <= 7) ? fraction[i] : fraction[7]));
+    DispBias[i]   = ((i <= 7) ? bias[i] : bias[7]);
+  } 
+
+  glBegin(GL_TRIANGLES);
+    FMR(v1, v2, v3, 0);    /* issues no GL but vertex calls */
+  glEnd();
+}
+
+ /*
+  * draw a mountain and build the display list
+  */
+void CreateMountain(void)
+{
+  GLfloat v1[3] = { 0, 0, -1 }, v2[3] = { -1, 0, 1 }, v3[3] = { 1, 0, 1 };
+  int pegged[3] = { 1, 1, 1 };
+
+  glNewList(MOUNTAIN, GL_COMPILE);
+  glPushAttrib(GL_LIGHTING_BIT);
+    glCallList(MOUNTAIN_MAT);
+    FractalMountain(v1, v2, v3, pegged);
+  glPopAttrib();
+  glEndList();
+}
+
+  /*
+   * new random numbers to make a different moutain
+   */
+void NewMountain(void)
+{
+  InitRandTable(time(NULL));
+}
+
+/***************************************************************/
+/***************************** TREE ****************************/
+/***************************************************************/
+
+long TreeSeed;   /* for srand48 - remember so we can build "same tree"
+                     at a different level */
+
+ /*
+  * recursive tree drawing thing, fleshed out from class notes pseudocode 
+  */
+void FractalTree(int level)
+{
+  long savedseed;  /* need to save seeds while building tree too */
+
+  if (level == Level) {
+      glPushMatrix();
+        glRotatef(drand48()*180, 0, 1, 0);
+        glCallList(STEMANDLEAVES);
+      glPopMatrix();
+  } else {
+    glCallList(STEM);
+    glPushMatrix();
+    glRotatef(drand48()*180, 0, 1, 0);
+    glTranslatef(0, 1, 0);
+    glScalef(0.7, 0.7, 0.7);
+
+      savedseed = (long)((ulong)drand48()*ULONG_MAX);
+      glPushMatrix();    
+        glRotatef(110 + drand48()*40, 0, 1, 0);
+        glRotatef(30 + drand48()*20, 0, 0, 1);
+        FractalTree(level + 1);
+      glPopMatrix();
+
+      srand48(savedseed);
+      savedseed = (long)((ulong)drand48()*ULONG_MAX);
+      glPushMatrix();
+        glRotatef(-130 + drand48()*40, 0, 1, 0);
+        glRotatef(30 + drand48()*20, 0, 0, 1);
+        FractalTree(level + 1);
+      glPopMatrix();
+
+      srand48(savedseed);
+      glPushMatrix();
+        glRotatef(-20 + drand48()*40, 0, 1, 0);
+        glRotatef(30 + drand48()*20, 0, 0, 1);
+        FractalTree(level + 1);
+      glPopMatrix();
+
+    glPopMatrix();
+  }
+}
+
+  /*
+   * Create display lists for a leaf, a set of leaves, and a stem
+   */
+void CreateTreeLists(void)
+{
+  GLUquadricObj *cylquad = gluNewQuadric();
+  int i;
+
+  glNewList(STEM, GL_COMPILE);
+  glPushMatrix();
+    glRotatef(-90, 1, 0, 0);
+    gluCylinder(cylquad, 0.1, 0.08, 1, 10, 2 );
+  glPopMatrix();
+  glEndList();
+
+  glNewList(LEAF, GL_COMPILE);  /* I think this was jeff allen's leaf idea */
+    glBegin(GL_TRIANGLES);
+      glNormal3f(-0.1, 0, 0.25);  /* not normalized */
+      glVertex3f(0, 0, 0);
+      glVertex3f(0.25, 0.25, 0.1);
+      glVertex3f(0, 0.5, 0);
+
+      glNormal3f(0.1, 0, 0.25);
+      glVertex3f(0, 0, 0);
+      glVertex3f(0, 0.5, 0);
+      glVertex3f(-0.25, 0.25, 0.1);
+    glEnd();
+  glEndList();
+
+  glNewList(STEMANDLEAVES, GL_COMPILE);
+  glPushMatrix();
+  glPushAttrib(GL_LIGHTING_BIT);
+    glCallList(STEM);
+    glCallList(LEAF_MAT);
+    for(i = 0; i < 3; i++) {
+      glTranslatef(0, 0.333, 0);
+      glRotatef(90, 0, 1, 0);
+      glPushMatrix();
+        glRotatef(0, 0, 1, 0);
+        glRotatef(50, 1, 0, 0);
+        glCallList(LEAF);
+      glPopMatrix();
+      glPushMatrix();
+        glRotatef(180, 0, 1, 0);
+        glRotatef(60, 1, 0, 0);
+        glCallList(LEAF);
+      glPopMatrix();
+    }
+  glPopAttrib();
+  glPopMatrix();
+  glEndList();
+
+  gluDeleteQuadric(cylquad);
+}
+
+ /*
+  * draw and build display list for tree
+  */
+void CreateTree(void)
+{
+  srand48(TreeSeed);
+
+  glNewList(TREE, GL_COMPILE);
+    glPushMatrix();
+    glPushAttrib(GL_LIGHTING_BIT);
+    glCallList(TREE_MAT);
+    glTranslatef(0, -1, 0);
+    FractalTree(0);
+    glPopAttrib();
+    glPopMatrix();
+  glEndList();  
+}
+
+ /*
+  * new seed for a new tree (groan)
+  */
+void NewTree(void)
+{
+  TreeSeed = time(NULL);
+}
+
+/***************************************************************/
+/*********************** FRACTAL PLANET ************************/
+/***************************************************************/
+
+void CreateIsland(void)
+{
+  cutoff = .06;
+  CreateMountain();
+  cutoff = -1;
+  glNewList(ISLAND, GL_COMPILE);
+  glPushAttrib(GL_LIGHTING_BIT);
+  glMatrixMode(GL_MODELVIEW);
+  glPushMatrix();
+    glCallList(WATER_MAT);
+
+    glBegin(GL_QUADS);
+      glNormal3f(0, 1, 0);
+      glVertex3f(10, 0.01, 10);
+      glVertex3f(10, 0.01, -10);
+      glVertex3f(-10, 0.01, -10);
+      glVertex3f(-10, 0.01, 10);
+    glEnd();
+
+    glPushMatrix();
+    glTranslatef(0, -0.1, 0);
+    glCallList(MOUNTAIN);
+    glPopMatrix();
+
+    glPushMatrix();
+    glRotatef(135, 0, 1, 0);
+    glTranslatef(0.2, -0.15, -0.4);
+    glCallList(MOUNTAIN);
+    glPopMatrix();
+
+    glPushMatrix();
+    glRotatef(-60, 0, 1, 0);
+    glTranslatef(0.7, -0.07, 0.5);
+    glCallList(MOUNTAIN);
+    glPopMatrix();
+
+    glPushMatrix();
+    glRotatef(-175, 0, 1, 0);
+    glTranslatef(-0.7, -0.05, -0.5);
+    glCallList(MOUNTAIN);
+    glPopMatrix();
+
+    glPushMatrix();
+    glRotatef(165, 0, 1, 0);
+    glTranslatef(-0.9, -0.12, 0.0);
+    glCallList(MOUNTAIN);
+    glPopMatrix();
+
+  glPopMatrix();
+  glPopAttrib();
+  glEndList();  
+}
+
+
+void NewFractals(void)
+{
+  NewMountain();
+  NewTree();
+}
+
+void Create(int fract)
+{
+  switch(fract) {
+    case MOUNTAIN:
+      CreateMountain();
+      break;
+    case TREE:
+      CreateTree();
+      break;
+    case ISLAND:
+      CreateIsland();
+      break;
+  }
+}
+
+
+
+/***************************************************************/
+/**************************** OPENGL ***************************/
+/***************************************************************/
+
+
+void SetupMaterials(void)
+{
+  GLfloat mtn_ambuse[] =   { 0.426, 0.256, 0.108, 1.0 };
+  GLfloat mtn_specular[] = { 0.394, 0.272, 0.167, 1.0 };
+  GLfloat mtn_shininess[] = { 10 };
+
+  GLfloat water_ambuse[] =   { 0.0, 0.1, 0.5, 1.0 };
+  GLfloat water_specular[] = { 0.0, 0.1, 0.5, 1.0 };
+  GLfloat water_shininess[] = { 10 };
+
+  GLfloat tree_ambuse[] =   { 0.4, 0.25, 0.1, 1.0 };
+  GLfloat tree_specular[] = { 0.0, 0.0, 0.0, 1.0 };
+  GLfloat tree_shininess[] = { 0 };
+
+  GLfloat leaf_ambuse[] =   { 0.0, 0.8, 0.0, 1.0 };
+  GLfloat leaf_specular[] = { 0.0, 0.8, 0.0, 1.0 };
+  GLfloat leaf_shininess[] = { 10 };
+
+  glNewList(MOUNTAIN_MAT, GL_COMPILE);
+    glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, mtn_ambuse);
+    glMaterialfv(GL_FRONT, GL_SPECULAR, mtn_specular);
+    glMaterialfv(GL_FRONT, GL_SHININESS, mtn_shininess);
+  glEndList();
+
+  glNewList(WATER_MAT, GL_COMPILE);
+    glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, water_ambuse);
+    glMaterialfv(GL_FRONT, GL_SPECULAR, water_specular);
+    glMaterialfv(GL_FRONT, GL_SHININESS, water_shininess);
+  glEndList();
+
+  glNewList(TREE_MAT, GL_COMPILE);
+    glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, tree_ambuse);
+    glMaterialfv(GL_FRONT, GL_SPECULAR, tree_specular);
+    glMaterialfv(GL_FRONT, GL_SHININESS, tree_shininess);
+  glEndList();
+
+  glNewList(LEAF_MAT, GL_COMPILE);
+    glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, leaf_ambuse);
+    glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, leaf_specular);
+    glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, leaf_shininess);
+  glEndList();
+}
+
+void myGLInit(void)
+{
+  GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 };
+  GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
+  GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 };
+  GLfloat light_position[] = { 0.0, 0.3, 0.3, 0.0 };
+
+  GLfloat lmodel_ambient[] = { 0.4, 0.4, 0.4, 1.0 };
+
+  glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
+  glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
+  glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
+  glLightfv(GL_LIGHT0, GL_POSITION, light_position);
+    
+  glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
+
+  glEnable(GL_LIGHTING);
+  glEnable(GL_LIGHT0);
+
+  glDepthFunc(GL_LEQUAL);
+  glEnable(GL_DEPTH_TEST);
+
+  glEnable(GL_NORMALIZE);
+#if 0
+  glEnable(GL_CULL_FACE);
+  glCullFace(GL_BACK);
+#endif
+
+  glShadeModel(GL_SMOOTH);
+#if 0
+  glEnable(GL_BLEND);
+  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+#endif
+
+  SetupMaterials();
+  CreateTreeLists();
+
+  glFlush();
+} 
+
+/***************************************************************/
+/************************ GLUT STUFF ***************************/
+/***************************************************************/
+
+void reshape(int w, int h)
+{
+  glViewport(0,0,w,h);
+  glMatrixMode(GL_PROJECTION);
+  glLoadIdentity();
+  gluPerspective(60.0, (GLdouble)w/h, 0.01, 100);
+  glPushMatrix();
+  glMatrixMode(GL_MODELVIEW);
+  glFlush();
+}
+
+void display(void)
+{ 
+  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+  glMatrixMode(GL_PROJECTION);
+  glPopMatrix();
+  glPushMatrix();  /* clear of last viewing xform, leaving perspective */
+
+  agvViewTransform();
+
+  glMatrixMode(GL_MODELVIEW);
+  glLoadIdentity();
+
+  if (Rebuild) {
+    Create(Fract);
+    Rebuild = 0;
+  }
+
+  glCallList(Fract);
+
+  if (DrawAxes)
+    glCallList(AXES);
+
+  //
+  // Use glFinish() instead of glFlush() to avoid getting many frames
+  // ahead of the display (problem with some Linux OpenGL implementations...)
+  //
+
+  glFinish();
+}
+
+void visible(int v)
+{
+  if (v == GLUT_VISIBLE)
+    agvSetAllowIdle(1);
+  else {
+    glutIdleFunc(NULL);
+    agvSetAllowIdle(0);
+  }
+}
+
+void menuuse(int v)
+{
+  if (v == GLUT_MENU_NOT_IN_USE)
+    agvSetAllowIdle(1);
+  else {
+    glutIdleFunc(NULL);
+    agvSetAllowIdle(0);
+  }
+}
+
+/***************************************************************/
+/******************* MENU SETUP & HANDLING *********************/
+/***************************************************************/
+
+typedef enum { MENU_QUIT=30, MENU_RAND, MENU_MOVE, MENU_AXES } MenuChoices;
+
+void setlevel(int value)
+{
+  Level = value;
+  Rebuild = 1;
+  glutPostRedisplay();
+}
+
+void choosefract(int value)
+{
+  Fract = value;
+  Rebuild = 1;
+  glutPostRedisplay();
+}
+
+void handlemenu(int value)
+{
+  switch (value) {
+  case MOUNTAIN:
+  case TREE:
+  case ISLAND:
+    choosefract(value);
+    break;
+  case 0:  case 1:  case 2:  case 3:  case 4:  case 5:  case 6:  case 7: case 8:
+    setlevel(value);
+    break;
+  case FLYING: case POLAR: 
+    agvSwitchMoveMode(value);
+    break;
+  case MENU_QUIT:
+      exit(0);
+      break;
+    case MENU_RAND:
+      NewFractals();
+      Rebuild = 1;
+      glutPostRedisplay();
+      break;
+    case MENU_AXES:
+      DrawAxes = !DrawAxes;
+      glutPostRedisplay();
+      break;
+    }
+}
+
+void MenuInit(void)
+{
+  int submenu3, submenu2, submenu1;
+
+  submenu1 = glutCreateMenu(setlevel);
+  glutAddMenuEntry("0", 0);  glutAddMenuEntry("1", 1);
+  glutAddMenuEntry("2", 2);  glutAddMenuEntry("3", 3);
+  glutAddMenuEntry("4", 4);  glutAddMenuEntry("5", 5);
+  glutAddMenuEntry("6", 6);  glutAddMenuEntry("7", 7);
+  glutAddMenuEntry("8", 8);
+
+  submenu2 = glutCreateMenu(choosefract);
+  glutAddMenuEntry("Moutain", MOUNTAIN);
+  glutAddMenuEntry("Tree", TREE);
+  glutAddMenuEntry("Island", ISLAND);
+
+  submenu3 = glutCreateMenu(agvSwitchMoveMode);
+  glutAddMenuEntry("Flying", FLYING);
+  glutAddMenuEntry("Polar", POLAR);
+
+  glutCreateMenu(handlemenu);
+  glutAddSubMenu("Level", submenu1);
+  glutAddSubMenu("Fractal", submenu2);
+  glutAddSubMenu("Movement", submenu3);
+  glutAddMenuEntry("New Fractal",      MENU_RAND);
+  glutAddMenuEntry("Toggle Axes", MENU_AXES);
+  glutAddMenuEntry("Quit",             MENU_QUIT);
+  glutAttachMenu(GLUT_RIGHT_BUTTON);
+}
+
+
+/***************************************************************/
+/**************************** MAIN *****************************/
+/***************************************************************/
+
+// FLTK-style callbacks to Glut menu callback translators:
+void setlevel(Fl_Widget*, void *value) {setlevel(long(value));}
+
+void choosefract(Fl_Widget*, void *value) {choosefract(long(value));}
+
+void handlemenu(Fl_Widget*, void *value) {handlemenu(long(value));}
+
+#include <FL/Fl_Button.H>
+#include <FL/Fl_Group.H>
+#include <FL/Fl_Window.H>
+
+int main(int argc, char** argv)
+{
+//  glutInit(&argc, argv); // this line removed for FLTK
+
+  // create FLTK window:
+  Fl_Window window(512+20, 512+100);
+  window.resizable(window);
+
+  // create a bunch of buttons:
+  Fl_Group *g = new Fl_Group(110,50,400-110,30,"Level:");
+  g->align(FL_ALIGN_LEFT);
+  g->begin();
+  Fl_Button *b;
+  // These coordinates were chagned from fltk1 to fltk2:
+  b = new Fl_Button(  0,0,30,30,"0"); b->callback(setlevel,(void*)0);
+  b = new Fl_Button( 30,0,30,30,"1"); b->callback(setlevel,(void*)1);
+  b = new Fl_Button( 60,0,30,30,"2"); b->callback(setlevel,(void*)2);
+  b = new Fl_Button( 90,0,30,30,"3"); b->callback(setlevel,(void*)3);
+  b = new Fl_Button(120,0,30,30,"4"); b->callback(setlevel,(void*)4);
+  b = new Fl_Button(150,0,30,30,"5"); b->callback(setlevel,(void*)5);
+  b = new Fl_Button(180,0,30,30,"6"); b->callback(setlevel,(void*)6);
+  b = new Fl_Button(210,0,30,30,"7"); b->callback(setlevel,(void*)7);
+  b = new Fl_Button(240,0,30,30,"8"); b->callback(setlevel,(void*)8);
+  g->end();
+
+  b = new Fl_Button(400,50,100,30,"New Fractal"); b->callback(handlemenu,(void*)MENU_RAND);
+  
+  b = new Fl_Button( 10,10,100,30,"Mountain"); b->callback(choosefract,(void*)MOUNTAIN);
+  b = new Fl_Button(110,10,100,30,"Tree"); b->callback(choosefract,(void*)TREE);
+  b = new Fl_Button(210,10,100,30,"Island"); b->callback(choosefract,(void*)ISLAND);
+  b = new Fl_Button(400,10,100,30,"Quit"); b->callback(handlemenu,(void*)MENU_QUIT);
+
+
+  window.show(argc,argv); // glut will die unless parent window visible
+  window.begin(); // this will cause Glut window to be a child
+  glutInitWindowSize(512, 512);
+  glutInitWindowPosition(10,90); // place it inside parent window
+  glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_MULTISAMPLE);
+  glutCreateWindow("Fractal Planet?");
+  window.end();
+  window.resizable(glut_window);
+
+  agvInit(1); /* 1 cause we don't have our own idle */
+
+  glutReshapeFunc(reshape);
+  glutDisplayFunc(display);
+  glutVisibilityFunc(visible);
+  glutMenuStateFunc(menuuse);
+
+  NewFractals();
+  agvMakeAxesList(AXES);
+  myGLInit(); 
+  MenuInit();
+
+  glutMainLoop(); // you could use Fl::run() instead
+
+  return 0;
+}
+#endif
+
+//
+// End of "$Id: fractals.cxx 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/fracviewer.cxx
===================================================================
--- branches/branch-3.0-2011/test2/fracviewer.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/fracviewer.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,510 @@
+/*
+ * fractviewer.cxx [from agviewer.c  (version 1.0)]
+ *
+ * AGV: a glut viewer. Routines for viewing a 3d scene w/ glut
+ *
+ * See agv_example.c and agviewer.h comments within for more info.
+ *
+ * I welcome any feedback or improved versions!
+ *
+ * Philip Winston - 4/11/95
+ * pwinston@hmc.edu
+ * http://www.cs.hmc.edu/people/pwinston
+ */
+
+#include <config.h>
+
+#if HAVE_GL && HAVE_GL_GLU_H
+#  include <FL/glut.H>
+#  ifdef __APPLE__
+#    include <OpenGL/glu.h>
+#  else
+#    include <GL/glu.h> // added for FLTK
+#  endif
+
+#  include <stdio.h>
+#  include <stdlib.h>
+#  include <math.h>
+#  include <sys/types.h>
+#  include <time.h>
+#  if !defined(WIN32) && !defined(__EMX__)
+#    include <sys/time.h>
+#  endif // !WIN32 && !__EMX__
+
+#  include "fracviewer.h"
+
+/* Some <math.h> files do not define M_PI... */
+#ifndef M_PI
+#define M_PI 3.14159265
+#endif
+
+/***************************************************************/
+/************************** SETTINGS ***************************/
+/***************************************************************/
+
+   /* Initial polar movement settings */
+#define INIT_POLAR_AZ  0.0
+#define INIT_POLAR_EL 30.0
+#define INIT_DIST      4.0
+#define INIT_AZ_SPIN   0.5
+#define INIT_EL_SPIN   0.0
+
+  /* Initial flying movement settings */
+#define INIT_EX        0.0
+#define INIT_EY       -2.0
+#define INIT_EZ       -2.0
+#define INIT_MOVE     0.01
+#define MINMOVE      0.001    
+
+  /* Start in this mode */
+#define INIT_MODE   POLAR   
+
+  /* Controls:  */
+
+  /* map 0-9 to an EyeMove value when number key is hit in FLYING mode */
+#define SPEEDFUNCTION(x) ((x)*(x)*0.001)  
+
+  /* Multiply EyeMove by (1+-MOVEFRACTION) when +/- hit in FLYING mode */
+#define MOVEFRACTION 0.25   
+
+  /* What to multiply number of pixels mouse moved by to get rotation amount */
+#define EL_SENS   0.5
+#define AZ_SENS   0.5
+
+  /* What to multiply number of pixels mouse moved by for movement amounts */
+#define DIST_SENS 0.01
+#define E_SENS    0.01
+
+  /* Minimum spin to allow in polar (lower forced to zero) */
+#define MIN_AZSPIN 0.1
+#define MIN_ELSPIN 0.1
+
+  /* Factors used in computing dAz and dEl (which determine AzSpin, ElSpin) */
+#define SLOW_DAZ 0.90
+#define SLOW_DEL 0.90
+#define PREV_DAZ 0.80
+#define PREV_DEL 0.80
+#define CUR_DAZ  0.20
+#define CUR_DEL  0.20
+
+/***************************************************************/
+/************************** GLOBALS ****************************/
+/***************************************************************/
+
+int     MoveMode = INIT_MODE;  /* FLYING or POLAR mode? */
+
+GLfloat Ex = INIT_EX,             /* flying parameters */
+        Ey = INIT_EY,
+        Ez = INIT_EZ,
+        EyeMove = INIT_MOVE,     
+
+        EyeDist = INIT_DIST,      /* polar params */
+        AzSpin  = INIT_AZ_SPIN,
+        ElSpin  = INIT_EL_SPIN,
+
+        EyeAz = INIT_POLAR_AZ,    /* used by both */
+        EyeEl = INIT_POLAR_EL;
+
+int agvMoving;    /* Currently moving?  */
+
+int downx, downy,   /* for tracking mouse position */
+    lastx, lasty,
+    downb = -1;     /* and button status */
+						
+GLfloat downDist, downEl, downAz, /* for saving state of things */
+        downEx, downEy, downEz,   /* when button is pressed */
+        downEyeMove;                
+
+GLfloat dAz, dEl, lastAz, lastEl;  /* to calculate spinning w/ polar motion */
+int     AdjustingAzEl = 0;
+
+int AllowIdle, RedisplayWindow; 
+   /* If AllowIdle is 1 it means AGV will install its own idle which
+    * will update the viewpoint as needed and send glutPostRedisplay() to the
+    * window RedisplayWindow which was set in agvInit().  AllowIdle of 0
+    * means AGV won't install an idle funciton, and something like
+    * "if (agvMoving) agvMove()" should exist at the end of the running
+    * idle function.
+    */
+
+#define MAX(x,y) (((x) > (y)) ? (x) : (y))
+#define TORAD(x) ((M_PI/180.0)*(x))
+#define TODEG(x) ((180.0/M_PI)*(x))
+
+/***************************************************************/
+/************************ PROTOTYPES ***************************/
+/***************************************************************/
+
+  /*
+   * these are functions meant for internal use only
+   * the other prototypes are in agviewer.h
+   */
+
+void PolarLookFrom(GLfloat dist, GLfloat elevation, GLfloat azimuth);
+void FlyLookFrom(GLfloat x, GLfloat y, GLfloat z,
+                        GLfloat az, GLfloat el);
+int  ConstrainEl(void);
+void MoveOn(int v);
+void SetMove(float newmove);
+static void normalize(GLfloat v[3]);
+void ncrossprod(float v1[3], float v2[3], float cp[3]);
+
+
+/***************************************************************/
+/************************ agvInit ******************************/
+/***************************************************************/
+
+void agvInit(int window)
+{
+  glutMouseFunc(agvHandleButton);
+  glutMotionFunc(agvHandleMotion);
+  glutKeyboardFunc(agvHandleKeys);
+  RedisplayWindow = glutGetWindow();
+  agvSetAllowIdle(window);
+}
+
+/***************************************************************/
+/************************ VIEWPOINT STUFF **********************/
+/***************************************************************/
+
+  /*
+   * viewing transformation modified from page 90 of red book
+   */
+void PolarLookFrom(GLfloat dist, GLfloat elevation, GLfloat azimuth)
+{
+  glTranslatef(0, 0, -dist);
+  glRotatef(elevation, 1, 0, 0);
+  glRotatef(azimuth, 0, 1, 0);
+
+}
+
+  /*
+   * I took the idea of tracking eye position in absolute
+   * coords and direction looking in Polar form from denis
+   */
+void FlyLookFrom(GLfloat x, GLfloat y, GLfloat z, GLfloat az, GLfloat el)
+{
+  float lookat[3], perp[3], up[3];
+
+  lookat[0] = sin(TORAD(az))*cos(TORAD(el));
+  lookat[1] = sin(TORAD(el));
+  lookat[2] = -cos(TORAD(az))*cos(TORAD(el));
+  normalize(lookat);
+  perp[0] = lookat[2];
+  perp[1] = 0;
+  perp[2] = -lookat[0];
+  normalize(perp);
+  ncrossprod(lookat, perp, up);
+  gluLookAt(x, y, z,
+            x+lookat[0], y+lookat[1], z+lookat[2],
+            up[0], up[1], up[2]);
+}
+
+  /*
+   * Call viewing transformation based on movement mode
+   */
+void agvViewTransform(void)
+{ 
+  switch (MoveMode) {
+    case FLYING:
+      FlyLookFrom(Ex, Ey, Ez, EyeAz, EyeEl);
+      break;
+    case POLAR:
+      PolarLookFrom(EyeDist, EyeEl, EyeAz);
+      break;
+    }
+}
+
+  /*
+   * keep them vertical; I think this makes a lot of things easier, 
+   * but maybe it wouldn't be too hard to adapt things to let you go
+   * upside down
+   */
+int ConstrainEl(void)
+{
+  if (EyeEl <= -90) {
+    EyeEl = -89.99;
+    return 1;
+  } else if (EyeEl >= 90) {
+    EyeEl = 89.99;
+    return 1;
+  }
+  return 0;
+}
+
+ /*
+  * Idle Function - moves eyeposition
+  */
+void agvMove(void)
+{
+  switch (MoveMode)  {
+    case FLYING:
+      Ex += EyeMove*sin(TORAD(EyeAz))*cos(TORAD(EyeEl));
+      Ey += EyeMove*sin(TORAD(EyeEl));
+      Ez -= EyeMove*cos(TORAD(EyeAz))*cos(TORAD(EyeEl));
+      break;
+
+    case POLAR:
+      EyeEl += ElSpin;
+      EyeAz += AzSpin;
+      if (ConstrainEl()) {  /* weird spin thing to make things look     */
+        ElSpin = -ElSpin;      /* look better when you are kept from going */
+                               /* upside down while spinning - Isn't great */
+        if (fabs(ElSpin) > fabs(AzSpin))
+          AzSpin = fabs(ElSpin) * ((AzSpin > 0) ? 1 : -1);
+      }
+      break;
+    }
+
+  if (AdjustingAzEl) {
+    dAz *= SLOW_DAZ;
+    dEl *= SLOW_DEL;
+  }
+
+  if (AllowIdle) {
+    glutSetWindow(RedisplayWindow);
+    glutPostRedisplay();
+  }
+}
+
+
+  /*
+   * Don't install agvMove as idle unless we will be updating the view
+   * and we've been given a RedisplayWindow
+   */
+void MoveOn(int v)
+{
+  if (v && ((MoveMode == FLYING && EyeMove != 0) ||
+             (MoveMode == POLAR &&
+             (AzSpin != 0 || ElSpin != 0 || AdjustingAzEl)))) {
+    agvMoving = 1;
+    if (AllowIdle)
+      glutIdleFunc(agvMove);
+  } else {
+    agvMoving = 0;
+    if (AllowIdle)
+      glutIdleFunc(NULL);
+  }
+}
+
+  /*
+   * set new redisplay window.  If <= 0 it means we are not to install
+   * an idle function and will rely on whoever does install one to 
+   * put statement like "if (agvMoving) agvMove();" at end of it
+   */
+void agvSetAllowIdle(int allowidle)
+{
+  if ((AllowIdle = allowidle))
+    MoveOn(1);
+}
+
+
+  /*
+   * when moving to flying we stay in the same spot, moving to polar we
+   * reset since we have to be looking at the origin (though a pivot from
+   * current position to look at origin might be cooler)
+   */
+void agvSwitchMoveMode(int move)
+{
+  switch (move) {
+    case FLYING:
+      if (MoveMode == FLYING) return;
+      Ex    = -EyeDist*sin(TORAD(EyeAz))*cos(TORAD(EyeEl));
+      Ey    =  EyeDist*sin(TORAD(EyeEl));
+      Ez    =  EyeDist*(cos(TORAD(EyeAz))*cos(TORAD(EyeEl)));
+      EyeAz =  EyeAz;
+      EyeEl = -EyeEl;
+      EyeMove = INIT_MOVE;
+      break;
+    case POLAR:
+      EyeDist = INIT_DIST;
+      EyeAz   = INIT_POLAR_AZ;
+      EyeEl   = INIT_POLAR_EL;
+      AzSpin  = INIT_AZ_SPIN;
+      ElSpin  = INIT_EL_SPIN;
+      break;
+    }
+  MoveMode = move;
+  MoveOn(1);
+  glutPostRedisplay();
+}
+
+/***************************************************************/
+/*******************    MOUSE HANDLING   ***********************/
+/***************************************************************/
+
+void agvHandleButton(int button, int state, int x, int y)
+{
+ if (state == GLUT_DOWN && downb == -1) {  
+    lastx = downx = x;
+    lasty = downy = y;
+    downb = button;    
+
+    switch (button) {
+      case GLUT_LEFT_BUTTON:
+        lastEl = downEl = EyeEl;
+        lastAz = downAz = EyeAz;
+        AzSpin = ElSpin = dAz = dEl = 0;
+        AdjustingAzEl = 1;
+	MoveOn(1);
+        break;
+
+      case GLUT_MIDDLE_BUTTON:
+        downDist = EyeDist;
+	downEx = Ex;
+	downEy = Ey;
+	downEz = Ez;
+	downEyeMove = EyeMove;
+	EyeMove = 0;
+    }
+
+  } else if (state == GLUT_UP && button == downb) {
+
+    downb = -1;
+
+    switch (button) {
+      case GLUT_LEFT_BUTTON:
+        if (MoveMode != FLYING) {
+	  AzSpin =  -dAz;
+	  if (AzSpin < MIN_AZSPIN && AzSpin > -MIN_AZSPIN)
+	    AzSpin = 0;	
+	  ElSpin = -dEl;
+	  if (ElSpin < MIN_ELSPIN && ElSpin > -MIN_ELSPIN)
+	    ElSpin = 0; 
+	}
+        AdjustingAzEl = 0;
+        MoveOn(1);
+	break;
+
+      case GLUT_MIDDLE_BUTTON:
+	EyeMove = downEyeMove;
+      }
+  }
+}
+
+ /*
+  * change EyeEl and EyeAz and position when mouse is moved w/ button down
+  */
+void agvHandleMotion(int x, int y)
+{
+  int deltax = x - downx, deltay = y - downy;
+
+  switch (downb) {
+    case GLUT_LEFT_BUTTON:
+      EyeEl  = downEl + EL_SENS * deltay;
+      ConstrainEl();
+      EyeAz  = downAz + AZ_SENS * deltax;
+      dAz    = PREV_DAZ*dAz + CUR_DAZ*(lastAz - EyeAz);
+      dEl    = PREV_DEL*dEl + CUR_DEL*(lastEl - EyeEl);
+      lastAz = EyeAz;
+      lastEl = EyeEl;
+      break;
+    case GLUT_MIDDLE_BUTTON:
+        EyeDist = downDist + DIST_SENS*deltay;
+        Ex = downEx - E_SENS*deltay*sin(TORAD(EyeAz))*cos(TORAD(EyeEl));
+        Ey = downEy - E_SENS*deltay*sin(TORAD(EyeEl));
+        Ez = downEz + E_SENS*deltay*cos(TORAD(EyeAz))*cos(TORAD(EyeEl));
+      break;
+  }
+  glutPostRedisplay();
+}
+
+/***************************************************************/
+/********************* KEYBOARD HANDLING ***********************/
+/***************************************************************/
+
+  /*
+   * set EyeMove (current speed) for FLYING mode
+   */
+void SetMove(float newmove)
+{
+  if (newmove > MINMOVE) {
+    EyeMove = newmove;
+    MoveOn(1);
+  } else {
+    EyeMove = 0;
+    MoveOn(0);
+  }
+}
+
+  /*
+   * 0->9 set speed, +/- adjust current speed  -- in FLYING mode
+   */
+void agvHandleKeys(unsigned char key, int, int) {
+  if (MoveMode != FLYING)
+    return;
+
+  if (key >= '0' && key <= '9')
+    SetMove(SPEEDFUNCTION((key-'0')));
+  else
+    switch(key) {
+      case '+':  
+        if (EyeMove == 0)
+          SetMove(MINMOVE);
+         else
+	  SetMove(EyeMove *= (1 + MOVEFRACTION));
+        break;
+      case '-':
+	SetMove(EyeMove *= (1 - MOVEFRACTION));
+        break;
+    }
+}
+
+/***************************************************************/
+/*********************** VECTOR STUFF **************************/
+/***************************************************************/
+
+  /* normalizes v */
+static void normalize(GLfloat v[3])
+{
+  GLfloat d = sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);
+
+  if (d == 0)
+    fprintf(stderr, "Zero length vector in normalize\n");
+  else
+    v[0] /= d; v[1] /= d; v[2] /= d;
+}
+
+  /* calculates a normalized crossproduct to v1, v2 */
+void ncrossprod(float v1[3], float v2[3], float cp[3])
+{
+  cp[0] = v1[1]*v2[2] - v1[2]*v2[1];
+  cp[1] = v1[2]*v2[0] - v1[0]*v2[2];
+  cp[2] = v1[0]*v2[1] - v1[1]*v2[0];
+  normalize(cp);
+}
+
+/***************************************************************/
+/**************************** AXES *****************************/
+/***************************************************************/
+
+
+  /* draw axes -- was helpful to debug/design things */
+void agvMakeAxesList(int displaylistnum)
+{
+  int i,j;
+  GLfloat axes_ambuse[] =   { 0.5, 0.0, 0.0, 1.0 };
+  glNewList(displaylistnum, GL_COMPILE);
+  glPushAttrib(GL_LIGHTING_BIT);
+  glMatrixMode(GL_MODELVIEW);
+    glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, axes_ambuse);
+    glBegin(GL_LINES);
+      glVertex3f(15, 0, 0); glVertex3f(-15, 0, 0);
+      glVertex3f(0, 15, 0); glVertex3f(0, -15, 0);
+      glVertex3f(0, 0, 15); glVertex3f(0, 0, -15);
+    glEnd();
+    for (i = 0; i < 3; i++) {
+      glPushMatrix();
+        glTranslatef(-10*(i==0), -10*(i==1), -10*(i==2));
+        for (j = 0; j < 21; j++) {
+//          glutSolidCube(0.1);
+          glTranslatef(i==0, i==1, i==2);
+	}
+      glPopMatrix();
+    }
+  glPopAttrib();
+  glEndList();  
+}
+
+
+#endif // HAVE_GL && HAVE_GL_GLU_H

Added: branches/branch-3.0-2011/test2/fracviewer.h
===================================================================
--- branches/branch-3.0-2011/test2/fracviewer.h	                        (rev 0)
+++ branches/branch-3.0-2011/test2/fracviewer.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,105 @@
+/*
+ * fracviewer.h [from agviewer.h  (version 1.0)]
+ *
+ * AGV: a glut viewer. Routines for viewing a 3d scene w/ glut
+ *
+ * The two view movement modes are POLAR and FLYING.  Both move the eye, NOT
+ * THE OBJECT.  You can never be upside down or twisted (roll) in either mode.
+ *
+ * A nice addition would be an examiner type trackball mode where you are
+ * moving the object and so could see it from any angle.  Also less restricted
+ * flying and polar modes (fly upside down, do rolls, etc.).
+ *
+ * Controls for Polar are just left and middle buttons -- for flying it's
+ * those plus 0-9 number keys and +/- for speed adjustment.
+ *
+ * See agv_example.c and agviewer.c for more info.  Probably want to make
+ * a copy of these and then edit for each program.  This isn't meant to be
+ * a library, just something to graft onto your own programs.
+ *
+ * I welcome any feedback or improved versions.
+ *
+ * Philip Winston - 4/11/95
+ * pwinston@hmc.edu
+ * http://www.cs.hmc.edu/people/pwinston
+ */
+
+
+ /*
+  * Call agvInit() with glut's current window set to the window in 
+  * which you want to run the viewer. Right after creating it is fine.  It
+  * will remember that window for possible later use (see below) and
+  * registers mouse, motion, and keyboard handlers for that window (see below).
+  *
+  * allowidle is 1 or 0 depnding on whether you will let AGV install
+  * and uninstall an idle function.  0 means you will not let it (because
+  * you will be having your own idle function). In this case it is your
+  * responsibility to put a statement like:
+  *
+  *     if (agvMoving)
+  *       agvMove();
+  *
+  * at the end of your idle function, to let AGV update the viewpoint if it
+  * is moving. 
+  *
+  * If allowidle is 1 it means AGV will install its own idle which
+  * will update the viewpoint as needed and send glutPostRedisplay() to the
+  * window which was current when agvInit() was called.
+  *
+  * agvSetIdleAllow changes this value so you can let AGV install its idle
+  * when your idle isn't installed. 
+  *
+  */
+void agvInit(int allowidle);
+void agvSetAllowIdle(int allowidle);
+
+
+ /*
+  * Set which movement mode you are in.
+  */
+typedef enum { FLYING=1000, POLAR } MovementType;
+void agvSwitchMoveMode(int move);
+
+ /*
+  * agvViewTransform basically does the appropriate gluLookAt() for the 
+  * current position.  So call it in your display on the projection matrix
+  */
+void agvViewTransform(void);
+
+ /*
+  * agvMoving will be set by AGV according to whether it needs you to call
+  * agvMove() at the end of your idle function.  You only need these if 
+  * you aren't allowing AGV to do its own idle.
+  * (Don't change the value of agvMoving)
+  */
+extern int agvMoving;
+void agvMove(void);
+
+ /*
+  * These are the routines AGV registers to deal with mouse and keyboard input.
+  * Keyboard input only matters in flying mode, and then only to set speed.
+  * Mouse input only uses left two buttons in both modes.
+  * These are all registered with agvInit(), but you could register
+  * something else which called these, or reregister these as needed 
+  */
+void agvHandleButton(int button, int state, int x, int y);
+void agvHandleMotion(int x, int y);
+void agvHandleKeys(unsigned char key, int x, int y);
+
+ /*
+  * Just an extra routine which makes an x-y-z axes (about 10x10x10)
+  * which is nice for aligning things and debugging.  Pass it an available
+  * displaylist number.
+  */
+void agvMakeAxesList(int displaylist);
+
+
+
+void ncrossprod(float v1[3], float v2[3], float cp[3]);
+
+
+
+
+
+
+

Added: branches/branch-3.0-2011/test2/fromdos.c
===================================================================
--- branches/branch-3.0-2011/test2/fromdos.c	                        (rev 0)
+++ branches/branch-3.0-2011/test2/fromdos.c	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,65 @@
+/* fromdos.c : strip the stupid ^M characters without mistakes! */
+
+/* this can do in-place conversion or be used as a pipe... */
+
+#include <stdio.h>
+#include <errno.h>
+#include <unistd.h>
+#include <string.h>
+
+int main(int argc, char** argv) {
+  int f,c;
+  if (argc <= 1) {
+    if (isatty(0)) {
+      fprintf(stderr,"usage : %s <files>\nStrips ^M characters.\nCan do in-place conversion of many files or can be used in a pipe\n",argv[0]);
+      return 1;
+    }
+    for (;;) {
+      c = getchar();
+      while (c == '\r') {
+	c = getchar();
+	if (c != '\n') putchar(c);
+      }
+      if (c < 0) break;
+      putchar(c);
+    }
+    return 0;
+  }
+  for (f = 1; f < argc; f++) {
+    char* fname = argv[f];
+    char tempname[1024];
+    FILE* in = fopen(fname,"rb");
+    FILE* out;
+    int mod = 0;
+    if (!in) {
+      fprintf(stderr,"%s : %s\n", fname, strerror(errno));
+      return 1;
+    }
+    strcpy(tempname, fname);
+    strcat(tempname, ".temp");
+    out = fopen(tempname, "wb");
+    if (!out) {
+      fprintf(stderr,"%s : %s\n", fname, strerror(errno));
+      return 1;
+    }
+    for (;;) {
+      c = getc(in);
+      while (c == '\r') {
+	c = getc(in);
+	if (c == '\n') mod=1; else putc(c,out);
+      }
+      if (c < 0) break;
+      putc(c,out);
+    }
+    fclose(in);
+    fclose(out);
+    if (!mod) {
+      fprintf(stderr,"%s : no change\n", fname);
+      unlink(tempname);
+    } else if (rename(tempname, fname)) {
+      fprintf(stderr,"Can't mv %s %s : %s\n",tempname,fname,strerror(errno));
+      return 1;
+    }
+  }
+  return 0;
+}

Added: branches/branch-3.0-2011/test2/fullscreen.cxx
===================================================================
--- branches/branch-3.0-2011/test2/fullscreen.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/fullscreen.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,294 @@
+//
+// "$Id: fullscreen.cxx 6150 2008-08-04 22:53:30Z spitzak $"
+//
+// Fullscreen test program for the Fast Light Tool Kit (FLTK).
+//
+// This demo shows how to do many of the window manipulations that
+// are popular on SGI programs, even though X does not really like
+// them.  You can toggle the border on/off, change the visual to
+// switch between single/double buffer, and make the window take
+// over the screen.
+//
+// Normally the program makes a single window with a child GL window.
+// This simulates a program where the 3D display is surrounded by
+// control knobs.  Running the program with an argument will
+// make it make a seperate GL window from the controls window.  This
+// simulates a (older?) style program where the graphics display is
+// a different window than the controls.
+//
+// This program reports how many times it redraws the window to
+// stdout, so you can see how much time it is wasting.  It appears
+// to be impossible to prevent X from sending redundant resize
+// events, so there are extra redraws.  But the way I have the
+// code arranged here seems to be keeping that to a minimu.
+//
+// Apparently unavoidable bugs:
+//
+// Turning the border on causes an unnecessary redraw.
+//
+// Turning off full screen when the border is on causes an unnecessary
+// resize and redraw when the program turns the border on.
+//
+// If it is a seperate window, turning double buffering on and off
+// will cause the window to raise, deiconize, and possibly move.  You
+// can avoid this by making the Fl_Gl_Window a child of a normal
+// 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".
+//
+
+#include <config.h>
+
+#include <fltk/run.h>
+#include <fltk/error.h>
+#include <fltk/Window.h>
+#include <fltk/Slider.h>
+#include <fltk/LightButton.h>
+#include <fltk/math.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#if HAVE_GL
+
+#include <fltk/gl.h>
+#include <fltk/visual.h>
+#include <fltk/GlWindow.h>
+
+class shape_window : public fltk::GlWindow {
+  void draw();
+public:
+  int sides;
+  shape_window(int x,int y,int w,int h,const char *l=0);
+};
+
+shape_window::shape_window(int x,int y,int w,int h,const char *l) :
+fltk::GlWindow(x,y,w,h,l) {
+  sides = 3;
+}
+
+void shape_window::draw() {
+  printf("drawing size %d %d\n",w(),h());
+  if (!valid()) {
+    valid(1);
+//  printf("init\n");
+    glLoadIdentity();
+    glViewport(0,0,w(),h());
+  }
+  glClear(GL_COLOR_BUFFER_BIT);
+  glColor3f(.5,.6,.7);
+  glBegin(GL_POLYGON);
+  for (int i=0; i<sides; i++) {
+    double ang = i*2*M_PI/sides;
+    glVertex3f(cos(ang),sin(ang),0);
+  }
+  glEnd();
+
+  fltk::glsetcolor(fltk::WHITE);
+  fltk::glsetfont(fltk::HELVETICA, 12); 
+  fltk::gldrawtext("Using OpenGL", -.9, -.9);
+}
+
+#else
+
+#include <fltk/draw.h>
+
+class shape_window : public fltk::Window {
+  void draw();
+public:
+  int sides;
+  shape_window(int x,int y,int w,int h,const char *l=0);
+};
+
+shape_window::shape_window(int x,int y,int w,int h,const char *l)
+: fltk::Window(x,y,w,h,l) {
+  sides = 3;
+}
+
+void shape_window::draw() {
+  printf("drawing size %d %d\n",w(),h());
+  fltk::setcolor(fltk::BLACK);
+  fltk::fillrect(0,0,w(),h());
+
+  fltk::setcolor(fltk::BLUE);
+  fltk::push_matrix();
+  fltk::translate(w()/2, h()/2);
+  fltk::scale(w()/2, h()/2);    
+  for (int i=0; i<sides; i++) {
+    double ang = i*2*M_PI/sides;
+    fltk::addvertex((float)cos(ang), (float)sin(ang));
+  }
+  fltk::closepath();
+  fltk::pop_matrix();
+  fltk::fillstrokepath(fltk::WHITE);
+
+  fltk::setcolor(fltk::WHITE);
+  fltk::setfont(fltk::HELVETICA, 12); 
+  fltk::drawtext("Not using OpenGL",1,fltk::getascent());
+}
+
+#endif
+
+void sides_cb(fltk::Widget *o, void *p) {
+  shape_window *sw = (shape_window *)p;
+  sw->sides = int(((fltk::Slider *)o)->value());
+  sw->redraw();
+}
+
+fltk::Window *control_win = 0;
+
+void double_cb(fltk::Widget *o, void *p) {
+  shape_window *sw = (shape_window *)p;
+  int d = ((fltk::Button *)o)->value();
+#if HAVE_GL
+  sw->mode(d ? (fltk::DOUBLE_BUFFER|fltk::RGB_COLOR) : fltk::RGB_COLOR);
+  // We must show "control_win" if running in 2 window mode.
+  // GlWindow::mode will destroy GL window and also control window, 
+  // cause it's "child_of()" GL window. 
+  if (control_win) control_win->show(); 
+#else
+  if(d) sw->set_double_buffer();
+  else  sw->clear_double_buffer();
+#endif
+}
+
+// This is useless in current FLTK2...
+void border_cb(fltk::Widget *o, void *p) {
+  //fltk::Window *w = (fltk::Window *)p;
+  //int d = ((fltk::Button *)o)->value();
+  //w->setborder(d);
+}
+
+int px,py,pw,ph;
+fltk::Button *border_button;
+fltk::Window *fullscreen = 0;
+
+void fullscreen_cb(fltk::Widget *o, void *p) {
+  fltk::Window *w = (fltk::Window *)p;
+  int d = ((fltk::Button *)o)->value();
+  if (d) {
+    // Store current geometry of the window
+    px = w->x(); py = w->y();
+    pw = w->w(); ph = w->h();
+    w->fullscreen();
+    fullscreen = w;
+  } else {
+    // restore geometry to the window and turn fullscreen off
+    w->fullscreen_off(px,py,pw,ph);
+    fullscreen = 0;
+  }
+}
+
+void maximize_cb(fltk::Widget *o, void *p) {
+  fltk::Window *w = (fltk::Window *)p;
+  w->maximize();
+}
+
+void exit_cb(fltk::Widget *, void *) {
+  // Turn fullscreen off when exit
+  if(fullscreen)
+    fullscreen->fullscreen_off(px,py,pw,ph);
+  exit(0);
+}
+
+#define NUMB 5
+
+int twowindow = 0;
+int initfull = 0;
+int arg(int, char **argv, int &i) {
+  if (argv[i][1] == '2') {twowindow = 1; i++; return 1;}
+  if (argv[i][1] == 'f') {initfull = 1; i++; return 1;}
+  return 0;
+}
+
+int main(int argc, char **argv) {
+
+  int i=0;
+  if (fltk::args(argc,argv,i,arg) < argc)
+    fltk::fatal("Options are:\n -2 = 2 windows\n -f = startup fullscreen\n%s", fltk::help);
+
+  fltk::Window window(300, (twowindow?10:300)+30*NUMB); window.end();
+  window.callback(exit_cb);
+  
+  if(twowindow)
+    control_win = &window;
+
+  shape_window sw(10, 10, window.w()-20, (twowindow?400:window.h())-30*NUMB-20);
+#if HAVE_GL
+  sw.mode(fltk::RGB_COLOR);
+#endif
+
+  fltk::Window *w;
+  if (twowindow) {	// make it's own window
+    sw.resizable(&sw);
+    w = (fltk::Window*)(&sw); // cast added for fltk2.0
+    window.child_of(w); // makes controls stay on top when fullscreen pushed
+    argc--;
+    sw.show();
+  } else {		// otherwise make a subwindow
+    window.add(sw);
+    window.resizable(&sw);
+    w = &window;
+  }
+
+  window.begin();
+
+  int y = window.h()-30*NUMB-5;
+  fltk::Slider slider(50,y,window.w()-60,30,"Sides:");
+  slider.align(fltk::ALIGN_LEFT);
+  slider.callback(sides_cb,&sw);
+  slider.value(sw.sides);
+  slider.step(1);
+  slider.range(3,40);
+  y+=30;
+
+  fltk::LightButton b1(50,y,window.w()-60,30,"Double Buffered");
+  b1.callback(double_cb,&sw);
+  y+=30;
+
+  /*fltk::LightButton b2(50,y,window.w()-60,30,"Border");
+  b2.callback(border_cb,w);
+  b2.set();
+  border_button = &b2;
+  y+=30;*/
+
+  fltk::LightButton b3(50,y,window.w()-60,30,"FullScreen");
+  b3.callback(fullscreen_cb,w);
+  y+=30;
+
+  fltk::Button btnMaximize(50,y,window.w()-60,30,"Maximize me!");
+  btnMaximize.callback(maximize_cb,&window);
+  y+=30;
+
+  fltk::Button eb(50,y,window.w()-60,30,"Exit");
+  eb.callback(exit_cb);
+  y+=30;
+
+  if (initfull) {b3.set(); b3.do_callback();}
+
+  window.end();
+  window.show(argc,argv);
+
+  return fltk::run();
+}
+
+//
+// End of "$Id: fullscreen.cxx 6150 2008-08-04 22:53:30Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/gl_overlay.cxx
===================================================================
--- branches/branch-3.0-2011/test2/gl_overlay.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/gl_overlay.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,194 @@
+//
+// "$Id: gl_overlay.cxx 4886 2006-03-30 09:55:32Z fabien $"
+//
+// OpenGL overlay test program 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".
+//
+
+#include <config.h>
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Slider.h>
+#include <fltk/ToggleButton.h>
+#include <fltk/math.h>
+
+#if !HAVE_GL
+
+class shape_window : public fltk::Widget {
+public:	
+  int sides;
+  shape_window(int x,int y,int w,int h,const char *l=0)
+    :fltk::Widget(x,y,w,h,l){
+      label("This demo does\nnot work without GL");
+  }
+};
+#else
+#include <fltk/gl.h>
+#include <fltk/GlWindow.h>
+
+class shape_window : public fltk::GlWindow {
+  void draw();
+  void draw_overlay();
+public:
+  int sides;
+  int overlay_sides;
+  shape_window(int x,int y,int w,int h,const char *l=0);
+};
+
+shape_window::shape_window(int x,int y,int w,int h,const char *l)
+  : fltk::GlWindow(x,y,w,h,l)
+{
+  sides = overlay_sides = 3;
+}
+
+#include <stdio.h>
+
+void shape_window::draw() {
+// the valid() property may be used to avoid reinitializing your
+// GL transformation for each redraw:
+  if (!valid()) {
+    static int r;
+    printf("Invalid %d\n", ++r);
+    valid(1);
+    glLoadIdentity();
+    glViewport(0,0,w(),h());
+  }
+  glClear(GL_COLOR_BUFFER_BIT);
+  glBegin(GL_POLYGON);
+  for (int i=0; i<sides; i++) {
+    double ang = i*2*M_PI/sides;
+    glColor3f(float(i)/sides,float(i)/sides,float(i)/sides);
+    glVertex3f(cos(ang),sin(ang),0);
+  }
+  glEnd();
+  fltk::glsetcolor(fltk::WHITE);
+  fltk::glsetfont(labelfont(), labelsize());
+  static int count = 0;
+  count++;
+  char buffer[40];
+  sprintf(buffer, "normal draw %d", count);
+  fltk::gldrawtext(buffer, .1, .5);
+}
+
+void shape_window::draw_overlay() {
+// the valid() property may be used to avoid reinitializing your
+// GL transformation for each redraw:
+  if (!valid()) {
+    valid(1);
+    glLoadIdentity();
+    glViewport(0,0,w(),h());
+  }
+// draw an amazing graphic:
+  fltk::glsetcolor(fltk::RED);
+  glBegin(GL_LINE_LOOP);
+  for (int i=0; i<overlay_sides; i++) {
+    double ang = i*2*M_PI/overlay_sides;
+    glVertex3f(cos(ang),sin(ang),0);
+  }
+  glEnd();
+  fltk::glsetfont(labelfont(), labelsize());
+  static int count = 0;
+  count++;
+  char buffer[40];
+  sprintf(buffer, "overlay draw %d", count);
+  fltk::gldrawtext(buffer, .1, .6);
+}
+#endif
+
+// when you change the data, as in this callback, you must call redraw():
+void sides_cb(fltk::Widget *o, void *p) {
+  shape_window *sw = (shape_window *)p;
+  sw->sides = int(((fltk::Slider *)o)->value());
+  sw->redraw();
+}
+
+#if HAVE_GL
+void overlay_sides_cb(fltk::Widget *o, void *p) {
+  shape_window *sw = (shape_window *)p;
+  sw->overlay_sides = int(((fltk::Slider *)o)->value());
+  sw->redraw_overlay();
+}
+#endif
+
+int main(int argc, char **argv) {
+
+  fltk::Window window(300, 370);
+  window.begin();
+
+  shape_window sw(10, 75, window.w()-20, window.h()-90);
+//sw.mode(FLTK::RGB);
+  window.resizable(&sw);
+
+  fltk::Slider oslider(60, 5, window.w()-70, 30, "Overlay:");
+  oslider.clear_flag(fltk::ALIGN_MASK);
+  oslider.set_flag(fltk::ALIGN_LEFT);
+#if HAVE_GL
+  oslider.callback(overlay_sides_cb,&sw);
+  oslider.value(sw.overlay_sides);
+#endif
+  oslider.step(1);
+  oslider.range(3,40);
+  oslider.tooltip("Move this slider to make overlay redraw");
+
+  fltk::Slider slider(60, 40, window.w()-70, 30, "Normal:");
+  slider.clear_flag(fltk::ALIGN_MASK);
+  slider.set_flag(fltk::ALIGN_LEFT);
+  slider.callback(sides_cb,&sw);
+  slider.value(sw.sides);
+  slider.step(1);
+  slider.range(3,40);
+  oslider.tooltip("Move this slider to make background image redraw");
+
+  window.end();
+  window.show(argc,argv);
+
+#if HAVE_GL
+  sw.tooltip(sw.can_do_overlay() ?
+
+"The red image is drawn by implementing fltk::GlWindow::draw_overlay().\n"
+"\n"
+"Hardware overlays may be unable to draw some "
+"colors or may exhibit bugs. If you see the red outline but no red text "
+"this is a known bug on Windows."
+:
+"The red image is drawn by implementing fltk::GlWindow::draw_overlay().\n"
+"\n"
+"You do not have OpenGL overlay hardware, so fltk "
+"simulates it. To work on all OpenGl hardware the simulation is very "
+"simple by default. You can reduce redraws of the background by changing the "
+"environment variable $GL_SWAP_TYPE:\n"
+"\n"
+"setenv GL_SWAP_TYPE USE_COPY (almost always works)\n"
+"setenv GL_SWAP_TYPE COPY (works on some cards)\n"
+"setenv GL_SWAP_TYPE NODAMAGE (works only with software OpenGl)"
+	     );
+  sw.show();
+  sw.redraw_overlay();
+#else
+  sw.show();
+#endif
+
+  return fltk::run();
+}
+
+//
+// End of "$Id: gl_overlay.cxx 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/glpuzzle.cxx
===================================================================
--- branches/branch-3.0-2011/test2/glpuzzle.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/glpuzzle.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,1494 @@
+//
+// "$Id: glpuzzle.cxx 5860 2007-05-30 18:32:26Z sanel.z $"
+//
+// OpenGL puzzle demo for the Fast Light Tool Kit (FLTK).
+//
+// This is a GLUT demo program to demonstrate fltk's GLUT emulation.
+// Search for "fltk" to find all the changes
+//
+// 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 block added for fltk's distribtion so it will compile w/o OpenGL:
+#include <config.h>
+
+
+#if !HAVE_GL || !HAVE_GL_GLU_H
+#include <fltk/run.h>
+#include <fltk/ask.h>
+
+
+int main(int, char**) {
+    fltk::alert("This demo does not work without GL and GLU");
+  return 1;
+}
+#else
+// end of added block
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <time.h>
+#include <math.h>
+#include <fltk/glut.h>	// changed for fltk
+#ifdef __APPLE__
+# include <OpenGL/glu.h>
+#else
+# include <GL/glu.h> // added for fltk
+#endif
+#include "trackball.c"	// changed from trackball.h for fltk
+
+#define WIDTH 4
+#define HEIGHT 5
+#define PIECES 10
+#define OFFSETX -2
+#define OFFSETY -2.5
+#define OFFSETZ -0.5
+
+typedef char Config[HEIGHT][WIDTH];
+
+struct puzzle {
+  struct puzzle *backptr;
+  struct puzzle *solnptr;
+  Config pieces;
+  struct puzzle *next;
+  unsigned hashvalue;
+};
+
+#define HASHSIZE 10691
+
+  struct puzzlelist {
+  struct puzzle *puzzle;
+  struct puzzlelist *next;
+};
+
+static char convert[PIECES + 1] =
+{0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 4};
+
+static unsigned char colors[PIECES + 1][3] =
+{
+  {0, 0, 0},
+  {255, 255, 127},
+  {255, 255, 127},
+  {255, 255, 127},
+  {255, 255, 127},
+  {255, 127, 255},
+  {255, 127, 255},
+  {255, 127, 255},
+  {255, 127, 255},
+  {255, 127, 127},
+  {255, 255, 255},
+};
+
+void changeState(void);
+
+static struct puzzle *hashtable[HASHSIZE];
+static struct puzzle *startPuzzle;
+static struct puzzlelist *puzzles;
+static struct puzzlelist *lastentry;
+
+int curX, curY, visible;
+
+#define MOVE_SPEED 0.2
+static unsigned char movingPiece;
+static float move_x, move_y;
+static float curquat[4];
+static int doubleBuffer = 1;
+static int depth = 1;
+
+static char xsize[PIECES + 1] =
+{0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2};
+static char ysize[PIECES + 1] =
+{0, 1, 1, 1, 1, 2, 2, 2, 2, 1, 2};
+static float zsize[PIECES + 1] =
+{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.6};
+
+static Config startConfig =
+{
+  {8, 10, 10, 7},
+  {8, 10, 10, 7},
+  {6, 9, 9, 5},
+  {6, 4, 3, 5},
+  {2, 0, 0, 1}
+};
+
+static Config thePuzzle =
+{
+  {8, 10, 10, 7},
+  {8, 10, 10, 7},
+  {6, 9, 9, 5},
+  {6, 4, 3, 5},
+  {2, 0, 0, 1}
+};
+
+static int xadds[4] =
+{-1, 0, 1, 0};
+static int yadds[4] =
+{0, -1, 0, 1};
+
+static long W = 400, H = 300;
+static GLint viewport[4];
+
+#define srandom srand
+#define random() (rand() >> 2)
+
+
+unsigned hash(Config config) {
+  int i, j, value;
+  int p;
+
+  value = 0;
+  for (i = 0; i < HEIGHT; i++) {
+    for (j = 0; j < WIDTH; j++) {
+      p = config[i][j];
+      value = value + convert[p];
+      value *= 6;
+    }
+  }
+  return (value);
+}
+
+int
+solution(Config config)
+{
+  if (config[4][1] == 10 && config[4][2] == 10)
+    return (1);
+  return (0);
+}
+
+float boxcoords[][3] =
+{
+  {0.2, 0.2, 0.9},
+  {0.8, 0.2, 0.9},
+  {0.8, 0.8, 0.9},
+  {0.2, 0.8, 0.9},
+  {0.2, 0.1, 0.8},
+  {0.8, 0.1, 0.8},
+  {0.9, 0.2, 0.8},
+  {0.9, 0.8, 0.8},
+  {0.8, 0.9, 0.8},
+  {0.2, 0.9, 0.8},
+  {0.1, 0.8, 0.8},
+  {0.1, 0.2, 0.8},
+  {0.2, 0.1, 0.2},
+  {0.8, 0.1, 0.2},
+  {0.9, 0.2, 0.2},
+  {0.9, 0.8, 0.2},
+  {0.8, 0.9, 0.2},
+  {0.2, 0.9, 0.2},
+  {0.1, 0.8, 0.2},
+  {0.1, 0.2, 0.2},
+  {0.2, 0.2, 0.1},
+  {0.8, 0.2, 0.1},
+  {0.8, 0.8, 0.1},
+  {0.2, 0.8, 0.1},
+};
+
+float boxnormals[][3] =
+{
+  {0, 0, 1},            /* 0 */
+  {0, 1, 0},
+  {1, 0, 0},
+  {0, 0, -1},
+  {0, -1, 0},
+  {-1, 0, 0},
+  {0.7071, 0.7071, 0.0000},  /* 6 */
+  {0.7071, -0.7071, 0.0000},
+  {-0.7071, 0.7071, 0.0000},
+  {-0.7071, -0.7071, 0.0000},
+  {0.7071, 0.0000, 0.7071},  /* 10 */
+  {0.7071, 0.0000, -0.7071},
+  {-0.7071, 0.0000, 0.7071},
+  {-0.7071, 0.0000, -0.7071},
+  {0.0000, 0.7071, 0.7071},  /* 14 */
+  {0.0000, 0.7071, -0.7071},
+  {0.0000, -0.7071, 0.7071},
+  {0.0000, -0.7071, -0.7071},
+  {0.5774, 0.5774, 0.5774},  /* 18 */
+  {0.5774, 0.5774, -0.5774},
+  {0.5774, -0.5774, 0.5774},
+  {0.5774, -0.5774, -0.5774},
+  {-0.5774, 0.5774, 0.5774},
+  {-0.5774, 0.5774, -0.5774},
+  {-0.5774, -0.5774, 0.5774},
+  {-0.5774, -0.5774, -0.5774},
+};
+
+int boxfaces[][4] =
+{
+  {0, 1, 2, 3},         /* 0 */
+  {9, 8, 16, 17},
+  {6, 14, 15, 7},
+  {20, 23, 22, 21},
+  {12, 13, 5, 4},
+  {19, 11, 10, 18},
+  {7, 15, 16, 8},       /* 6 */
+  {13, 14, 6, 5},
+  {18, 10, 9, 17},
+  {19, 12, 4, 11},
+  {1, 6, 7, 2},         /* 10 */
+  {14, 21, 22, 15},
+  {11, 0, 3, 10},
+  {20, 19, 18, 23},
+  {3, 2, 8, 9},         /* 14 */
+  {17, 16, 22, 23},
+  {4, 5, 1, 0},
+  {20, 21, 13, 12},
+  {2, 7, 8, -1},        /* 18 */
+  {16, 15, 22, -1},
+  {5, 6, 1, -1},
+  {13, 21, 14, -1},
+  {10, 3, 9, -1},
+  {18, 17, 23, -1},
+  {11, 4, 0, -1},
+  {20, 12, 19, -1},
+};
+
+#define NBOXFACES (sizeof(boxfaces)/sizeof(boxfaces[0]))
+
+/* Draw a box.  Bevel as desired. */
+void
+drawBox(int piece, float xoff, float yoff)
+{
+  int xlen, ylen;
+  int i, k;
+  float x, y, z;
+  float zlen;
+  float *v;
+
+  xlen = xsize[piece];
+  ylen = ysize[piece];
+  zlen = zsize[piece];
+
+  glColor3ubv(colors[piece]);
+  glBegin(GL_QUADS);
+  for (i = 0; i < 18; i++) {
+    glNormal3fv(boxnormals[i]);
+    for (k = 0; k < 4; k++) {
+      if (boxfaces[i][k] == -1)
+        continue;
+      v = boxcoords[boxfaces[i][k]];
+      x = v[0] + OFFSETX;
+      if (v[0] > 0.5)
+        x += xlen - 1;
+      y = v[1] + OFFSETY;
+      if (v[1] > 0.5)
+        y += ylen - 1;
+      z = v[2] + OFFSETZ;
+      if (v[2] > 0.5)
+        z += zlen - 1;
+      glVertex3f(xoff + x, yoff + y, z);
+    }
+  }
+  glEnd();
+  glBegin(GL_TRIANGLES);
+  for (i = 18; i < int(NBOXFACES); i++) {
+    glNormal3fv(boxnormals[i]);
+    for (k = 0; k < 3; k++) {
+      if (boxfaces[i][k] == -1)
+        continue;
+      v = boxcoords[boxfaces[i][k]];
+      x = v[0] + OFFSETX;
+      if (v[0] > 0.5)
+        x += xlen - 1;
+      y = v[1] + OFFSETY;
+      if (v[1] > 0.5)
+        y += ylen - 1;
+      z = v[2] + OFFSETZ;
+      if (v[2] > 0.5)
+        z += zlen - 1;
+      glVertex3f(xoff + x, yoff + y, z);
+    }
+  }
+  glEnd();
+}
+
+float containercoords[][3] =
+{
+  {-0.1, -0.1, 1.0},
+  {-0.1, -0.1, -0.1},
+  {4.1, -0.1, -0.1},
+  {4.1, -0.1, 1.0},
+  {1.0, -0.1, 0.6},     /* 4 */
+  {3.0, -0.1, 0.6},
+  {1.0, -0.1, 0.0},
+  {3.0, -0.1, 0.0},
+  {1.0, 0.0, 0.0},      /* 8 */
+  {3.0, 0.0, 0.0},
+  {3.0, 0.0, 0.6},
+  {1.0, 0.0, 0.6},
+  {0.0, 0.0, 1.0},      /* 12 */
+  {4.0, 0.0, 1.0},
+  {4.0, 0.0, 0.0},
+  {0.0, 0.0, 0.0},
+  {0.0, 5.0, 0.0},      /* 16 */
+  {0.0, 5.0, 1.0},
+  {4.0, 5.0, 1.0},
+  {4.0, 5.0, 0.0},
+  {-0.1, 5.1, -0.1},    /* 20 */
+  {4.1, 5.1, -0.1},
+  {4.1, 5.1, 1.0},
+  {-0.1, 5.1, 1.0},
+};
+
+float containernormals[][3] =
+{
+  {0, -1, 0},
+  {0, -1, 0},
+  {0, -1, 0},
+  {0, -1, 0},
+  {0, -1, 0},
+  {0, 1, 0},
+  {0, 1, 0},
+  {0, 1, 0},
+  {1, 0, 0},
+  {1, 0, 0},
+  {1, 0, 0},
+  {-1, 0, 0},
+  {-1, 0, 0},
+  {-1, 0, 0},
+  {0, 1, 0},
+  {0, 0, -1},
+  {0, 0, -1},
+  {0, 0, 1},
+  {0, 0, 1},
+  {0, 0, 1},
+  {0, 0, 1},
+  {0, 0, 1},
+  {0, 0, 1},
+  {0, 0, 1},
+};
+
+int containerfaces[][4] =
+{
+  {1, 6, 4, 0},
+  {0, 4, 5, 3},
+  {1, 2, 7, 6},
+  {7, 2, 3, 5},
+  {16, 19, 18, 17},
+
+  {23, 22, 21, 20},
+  {12, 11, 8, 15},
+  {10, 13, 14, 9},
+
+  {15, 16, 17, 12},
+  {2, 21, 22, 3},
+  {6, 8, 11, 4},
+
+  {1, 0, 23, 20},
+  {14, 13, 18, 19},
+  {9, 7, 5, 10},
+
+  {12, 13, 10, 11},
+
+  {1, 20, 21, 2},
+  {4, 11, 10, 5},
+
+  {15, 8, 19, 16},
+  {19, 8, 9, 14},
+  {8, 6, 7, 9},
+  {0, 3, 13, 12},
+  {13, 3, 22, 18},
+  {18, 22, 23, 17},
+  {17, 23, 0, 12},
+};
+
+#define NCONTFACES (sizeof(containerfaces)/sizeof(containerfaces[0]))
+
+/* Draw the container */
+void
+drawContainer(void)
+{
+  int i, k;
+  float *v;
+
+  /* Y is reversed here because the model has it reversed */
+
+  /* Arbitrary bright wood-like color */
+  glColor3ub(209, 103, 23);
+  glBegin(GL_QUADS);
+  for (i = 0; i < int(NCONTFACES); i++) {
+    v = containernormals[i];
+    glNormal3f(v[0], -v[1], v[2]);
+    for (k = 3; k >= 0; k--) {
+      v = containercoords[containerfaces[i][k]];
+      glVertex3f(v[0] + OFFSETX, -(v[1] + OFFSETY), v[2] + OFFSETZ);
+    }
+  }
+  glEnd();
+}
+
+void
+drawAll(void)
+{
+  int i, j;
+  int piece;
+  char done[PIECES + 1];
+  float m[4][4];
+
+  build_rotmatrix(m, curquat);
+  glMatrixMode(GL_MODELVIEW);
+  glLoadIdentity();
+  glTranslatef(0, 0, -10);
+  glMultMatrixf(&(m[0][0]));
+  glRotatef(180, 0, 0, 1);
+
+  if (depth) {
+    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+  } else {
+    glClear(GL_COLOR_BUFFER_BIT);
+  }
+  for (i = 1; i <= PIECES; i++) {
+    done[i] = 0;
+  }
+  glLoadName(0);
+  drawContainer();
+  for (i = 0; i < HEIGHT; i++) {
+    for (j = 0; j < WIDTH; j++) {
+      piece = thePuzzle[i][j];
+      if (piece == 0)
+        continue;
+      if (done[piece])
+        continue;
+      done[piece] = 1;
+      glLoadName(piece);
+      if (piece == movingPiece) {
+        drawBox(piece, move_x, move_y);
+      } else {
+        drawBox(piece, j, i);
+      }
+    }
+  }
+}
+
+void
+redraw(void)
+{
+  glMatrixMode(GL_PROJECTION);
+  glLoadIdentity();
+  gluPerspective(45, viewport[2]*1.0/viewport[3], 0.1, 100.0);
+
+  drawAll();
+
+  if (doubleBuffer)
+    glutSwapBuffers();
+  else
+    glFinish();
+}
+
+void
+solidifyChain(struct puzzle *puzzle)
+{
+  int i;
+  char buf[256];
+
+  i = 0;
+  while (puzzle->backptr) {
+    i++;
+    puzzle->backptr->solnptr = puzzle;
+    puzzle = puzzle->backptr;
+  }
+  sprintf(buf, "%d moves to complete!", i);
+  glutSetWindowTitle(buf);
+}
+
+int
+addConfig(Config config, struct puzzle *back)
+{
+  unsigned hashvalue;
+  struct puzzle *newpiece;
+  struct puzzlelist *newlistentry;
+
+  hashvalue = hash(config);
+
+  newpiece = hashtable[hashvalue % HASHSIZE];
+  while (newpiece != NULL) {
+    if (newpiece->hashvalue == hashvalue) {
+      int i, j, p, np;
+
+      for (i = 0; i < WIDTH; i++) {
+        for (j = 0; j < HEIGHT; j++) {
+          p = config[j][i];
+          np = newpiece->pieces[j][i];
+          if (convert[p] != convert[np])
+            goto nomatch;
+        }
+      }
+      return 0;
+    }
+  nomatch:
+    newpiece = newpiece->next;
+  }
+
+  newpiece = (struct puzzle *) malloc(sizeof(struct puzzle));
+  newpiece->next = hashtable[hashvalue % HASHSIZE];
+  newpiece->hashvalue = hashvalue;
+  memcpy(newpiece->pieces, config, HEIGHT * WIDTH);
+  newpiece->backptr = back;
+  newpiece->solnptr = NULL;
+  hashtable[hashvalue % HASHSIZE] = newpiece;
+
+  newlistentry = (struct puzzlelist *) malloc(sizeof(struct puzzlelist));
+  newlistentry->puzzle = newpiece;
+  newlistentry->next = NULL;
+
+  if (lastentry) {
+    lastentry->next = newlistentry;
+  } else {
+    puzzles = newlistentry;
+  }
+  lastentry = newlistentry;
+
+  if (back == NULL) {
+    startPuzzle = newpiece;
+  }
+  if (solution(config)) {
+    solidifyChain(newpiece);
+    return 1;
+  }
+  return 0;
+}
+
+/* Checks if a space can move */
+int
+canmove0(Config pieces, int x, int y, int dir, Config newpieces)
+{
+  char piece;
+  int xadd, yadd;
+  int l, m;
+
+  xadd = xadds[dir];
+  yadd = yadds[dir];
+
+  if (x + xadd < 0 || x + xadd >= WIDTH ||
+    y + yadd < 0 || y + yadd >= HEIGHT)
+    return 0;
+  piece = pieces[y + yadd][x + xadd];
+  if (piece == 0)
+    return 0;
+  memcpy(newpieces, pieces, HEIGHT * WIDTH);
+  for (l = 0; l < WIDTH; l++) {
+    for (m = 0; m < HEIGHT; m++) {
+      if (newpieces[m][l] == piece)
+        newpieces[m][l] = 0;
+    }
+  }
+  xadd = -xadd;
+  yadd = -yadd;
+  for (l = 0; l < WIDTH; l++) {
+    for (m = 0; m < HEIGHT; m++) {
+      if (pieces[m][l] == piece) {
+        int newx, newy;
+
+        newx = l + xadd;
+        newy = m + yadd;
+        if (newx < 0 || newx >= WIDTH ||
+          newy < 0 || newy >= HEIGHT)
+          return 0;
+        if (newpieces[newy][newx] != 0)
+          return 0;
+        newpieces[newy][newx] = piece;
+      }
+    }
+  }
+  return 1;
+}
+
+/* Checks if a piece can move */
+int
+canmove(Config pieces, int x, int y, int dir, Config newpieces)
+{
+  int xadd, yadd;
+
+  xadd = xadds[dir];
+  yadd = yadds[dir];
+
+  if (x + xadd < 0 || x + xadd >= WIDTH ||
+    y + yadd < 0 || y + yadd >= HEIGHT)
+    return 0;
+  if (pieces[y + yadd][x + xadd] == pieces[y][x]) {
+    return canmove(pieces, x + xadd, y + yadd, dir, newpieces);
+  }
+  if (pieces[y + yadd][x + xadd] != 0)
+    return 0;
+  return canmove0(pieces, x + xadd, y + yadd, (dir + 2) % 4, newpieces);
+}
+
+int
+generateNewConfigs(struct puzzle *puzzle)
+{
+  int i, j, k;
+  Config pieces;
+  Config newpieces;
+
+  memcpy(pieces, puzzle->pieces, HEIGHT * WIDTH);
+  for (i = 0; i < WIDTH; i++) {
+    for (j = 0; j < HEIGHT; j++) {
+      if (pieces[j][i] == 0) {
+        for (k = 0; k < 4; k++) {
+          if (canmove0(pieces, i, j, k, newpieces)) {
+            if (addConfig(newpieces, puzzle))
+              return 1;
+          }
+        }
+      }
+    }
+  }
+  return 0;
+}
+
+void
+freeSolutions(void)
+{
+  struct puzzlelist *nextpuz;
+  struct puzzle *puzzle, *next;
+  int i;
+
+  while (puzzles) {
+    nextpuz = puzzles->next;
+    free((char *) puzzles);
+    puzzles = nextpuz;
+  }
+  lastentry = NULL;
+  for (i = 0; i < HASHSIZE; i++) {
+    puzzle = hashtable[i];
+    hashtable[i] = NULL;
+    while (puzzle) {
+      next = puzzle->next;
+      free((char *) puzzle);
+      puzzle = next;
+    }
+  }
+  startPuzzle = NULL;
+}
+
+int
+continueSolving(void)
+{
+  struct puzzle *nextpuz;
+  int i, j;
+  int movedPiece;
+  int movedir;
+  int fromx, fromy;
+  int tox, toy;
+
+  if (startPuzzle == NULL)
+    return 0;
+  if (startPuzzle->solnptr == NULL) {
+    freeSolutions();
+    return 0;
+  }
+  nextpuz = startPuzzle->solnptr;
+  movedPiece = 0;
+  movedir = 0;
+  for (i = 0; i < HEIGHT; i++) {
+    for (j = 0; j < WIDTH; j++) {
+      if (startPuzzle->pieces[i][j] != nextpuz->pieces[i][j]) {
+        if (startPuzzle->pieces[i][j]) {
+          movedPiece = startPuzzle->pieces[i][j];
+          fromx = j;
+          fromy = i;
+          if (i < HEIGHT - 1 && nextpuz->pieces[i + 1][j] == movedPiece) {
+            movedir = 3;
+          } else {
+            movedir = 2;
+          }
+          goto found_piece;
+        } else {
+          movedPiece = nextpuz->pieces[i][j];
+          if (i < HEIGHT - 1 &&
+            startPuzzle->pieces[i + 1][j] == movedPiece) {
+            fromx = j;
+            fromy = i + 1;
+            movedir = 1;
+          } else {
+            fromx = j + 1;
+            fromy = i;
+            movedir = 0;
+          }
+          goto found_piece;
+        }
+      }
+    }
+  }
+  glutSetWindowTitle("What!  No change?");
+  freeSolutions();
+  return 0;
+
+found_piece:
+  if (!movingPiece) {
+    movingPiece = movedPiece;
+    move_x = fromx;
+    move_y = fromy;
+  }
+  move_x += xadds[movedir] * MOVE_SPEED;
+  move_y += yadds[movedir] * MOVE_SPEED;
+
+  tox = fromx + xadds[movedir];
+  toy = fromy + yadds[movedir];
+
+  if (move_x > tox - MOVE_SPEED / 2 && move_x < tox + MOVE_SPEED / 2 &&
+    move_y > toy - MOVE_SPEED / 2 && move_y < toy + MOVE_SPEED / 2) {
+    startPuzzle = nextpuz;
+    movingPiece = 0;
+  }
+  memcpy(thePuzzle, startPuzzle->pieces, HEIGHT * WIDTH);
+  changeState();
+  return 1;
+}
+
+int
+solvePuzzle(void)
+{
+  struct puzzlelist *nextpuz;
+  char buf[256];
+  int i;
+
+  if (solution(thePuzzle)) {
+    glutSetWindowTitle("Puzzle already solved!");
+    return 0;
+  }
+  addConfig(thePuzzle, NULL);
+  i = 0;
+
+  while (puzzles) {
+    i++;
+    if (generateNewConfigs(puzzles->puzzle))
+      break;
+    nextpuz = puzzles->next;
+    free((char *) puzzles);
+    puzzles = nextpuz;
+  }
+  if (puzzles == NULL) {
+    freeSolutions();
+    sprintf(buf, "I can't solve it! (%d positions examined)", i);
+    glutSetWindowTitle(buf);
+    return 1;
+  }
+  return 1;
+}
+
+int
+selectPiece(int mousex, int mousey)
+{
+  long hits;
+  GLuint selectBuf[1024];
+  GLuint closest;
+  GLuint dist;
+
+  glSelectBuffer(1024, selectBuf);
+  (void) glRenderMode(GL_SELECT);
+  glInitNames();
+
+  /* Because LoadName() won't work with no names on the stack */
+  glPushName(0);
+
+  glMatrixMode(GL_PROJECTION);
+  glLoadIdentity();
+  gluPickMatrix(mousex, H - mousey, 4, 4, viewport);
+  gluPerspective(45, viewport[2]*1.0/viewport[3], 0.1, 100.0);
+
+  drawAll();
+
+  hits = glRenderMode(GL_RENDER);
+  if (hits <= 0) {
+    return 0;
+  }
+  closest = 0;
+  dist = 0xFFFFFFFFU; //2147483647;
+  while (hits) {
+    if (selectBuf[(hits - 1) * 4 + 1] < dist) {
+      dist = selectBuf[(hits - 1) * 4 + 1];
+      closest = selectBuf[(hits - 1) * 4 + 3];
+    }
+    hits--;
+  }
+  return closest;
+}
+
+void
+nukePiece(int piece)
+{
+  int i, j;
+
+  for (i = 0; i < HEIGHT; i++) {
+    for (j = 0; j < WIDTH; j++) {
+      if (thePuzzle[i][j] == piece) {
+        thePuzzle[i][j] = 0;
+      }
+    }
+  }
+}
+
+void
+multMatrices(const GLfloat a[16], const GLfloat b[16], GLfloat r[16])
+{
+  int i, j;
+
+  for (i = 0; i < 4; i++) {
+    for (j = 0; j < 4; j++) {
+      r[i * 4 + j] =
+        a[i * 4 + 0] * b[0 * 4 + j] +
+        a[i * 4 + 1] * b[1 * 4 + j] +
+        a[i * 4 + 2] * b[2 * 4 + j] +
+        a[i * 4 + 3] * b[3 * 4 + j];
+    }
+  }
+}
+
+void
+makeIdentity(GLfloat m[16])
+{
+  m[0 + 4 * 0] = 1;
+  m[0 + 4 * 1] = 0;
+  m[0 + 4 * 2] = 0;
+  m[0 + 4 * 3] = 0;
+  m[1 + 4 * 0] = 0;
+  m[1 + 4 * 1] = 1;
+  m[1 + 4 * 2] = 0;
+  m[1 + 4 * 3] = 0;
+  m[2 + 4 * 0] = 0;
+  m[2 + 4 * 1] = 0;
+  m[2 + 4 * 2] = 1;
+  m[2 + 4 * 3] = 0;
+  m[3 + 4 * 0] = 0;
+  m[3 + 4 * 1] = 0;
+  m[3 + 4 * 2] = 0;
+  m[3 + 4 * 3] = 1;
+}
+
+/*
+   ** inverse = invert(src)
+ */
+int
+invertMatrix(const GLfloat src[16], GLfloat inverse[16])
+{
+  int i, j, k, swap;
+  double t;
+  GLfloat temp[4][4];
+
+  for (i = 0; i < 4; i++) {
+    for (j = 0; j < 4; j++) {
+      temp[i][j] = src[i * 4 + j];
+    }
+  }
+  makeIdentity(inverse);
+
+  for (i = 0; i < 4; i++) {
+    /* 
+       ** Look for largest element in column */
+    swap = i;
+    for (j = i + 1; j < 4; j++) {
+      if (fabs(temp[j][i]) > fabs(temp[i][i])) {
+        swap = j;
+      }
+    }
+
+    if (swap != i) {
+      /* 
+         ** Swap rows. */
+      for (k = 0; k < 4; k++) {
+        t = temp[i][k];
+        temp[i][k] = temp[swap][k];
+        temp[swap][k] = t;
+
+        t = inverse[i * 4 + k];
+        inverse[i * 4 + k] = inverse[swap * 4 + k];
+        inverse[swap * 4 + k] = t;
+      }
+    }
+    if (temp[i][i] == 0) {
+      /* 
+         ** No non-zero pivot.  The matrix is singular, which
+         shouldn't ** happen.  This means the user gave us a
+         bad matrix. */
+      return 0;
+    }
+    t = temp[i][i];
+    for (k = 0; k < 4; k++) {
+      temp[i][k] /= t;
+      inverse[i * 4 + k] /= t;
+    }
+    for (j = 0; j < 4; j++) {
+      if (j != i) {
+        t = temp[j][i];
+        for (k = 0; k < 4; k++) {
+          temp[j][k] -= temp[i][k] * t;
+          inverse[j * 4 + k] -= inverse[i * 4 + k] * t;
+        }
+      }
+    }
+  }
+  return 1;
+}
+
+/*
+   ** This is a screwball function.  What it does is the following:
+   ** Given screen x and y coordinates, compute the corresponding object space 
+   **   x and y coordinates given that the object space z is 0.9 + OFFSETZ.
+   ** Since the tops of (most) pieces are at z = 0.9 + OFFSETZ, we use that 
+   **   number.
+ */
+int
+computeCoords(int piece, int mousex, int mousey,
+  GLfloat * selx, GLfloat * sely)
+{
+  GLfloat modelMatrix[16];
+  GLfloat projMatrix[16];
+  GLfloat finalMatrix[16];
+  GLfloat in[4];
+  GLfloat a, b, c, d;
+  GLfloat top, bot;
+  GLfloat z;
+  GLfloat w;
+  GLfloat height;
+
+  if (piece == 0)
+    return 0;
+  height = zsize[piece] - 0.1 + OFFSETZ;
+
+  glGetFloatv(GL_PROJECTION_MATRIX, projMatrix);
+  glGetFloatv(GL_MODELVIEW_MATRIX, modelMatrix);
+  multMatrices(modelMatrix, projMatrix, finalMatrix);
+  if (!invertMatrix(finalMatrix, finalMatrix))
+    return 0;
+
+  in[0] = (2.0 * (mousex - viewport[0]) / viewport[2]) - 1;
+  in[1] = (2.0 * ((H - mousey) - viewport[1]) / viewport[3]) - 1;
+
+  a = in[0] * finalMatrix[0 * 4 + 2] +
+    in[1] * finalMatrix[1 * 4 + 2] +
+    finalMatrix[3 * 4 + 2];
+  b = finalMatrix[2 * 4 + 2];
+  c = in[0] * finalMatrix[0 * 4 + 3] +
+    in[1] * finalMatrix[1 * 4 + 3] +
+    finalMatrix[3 * 4 + 3];
+  d = finalMatrix[2 * 4 + 3];
+
+  /* 
+     ** Ok, now we need to solve for z: **   (a + b z) / (c + d 
+
+     z) = height. ** ("height" is the height in object space we 
+
+     want to solve z for) ** ** ==>  a + b z = height c +
+     height d z **      bz - height d z = height c - a ** z =
+     (height c - a) / (b - height d) */
+  top = height * c - a;
+  bot = b - height * d;
+  if (bot == 0.0)
+    return 0;
+
+  z = top / bot;
+
+  /* 
+     ** Ok, no problem. ** Now we solve for x and y.  We know
+     that w = c + d z, so we compute it. */
+  w = c + d * z;
+
+  /* 
+     ** Now for x and y: */
+  *selx = (in[0] * finalMatrix[0 * 4 + 0] +
+    in[1] * finalMatrix[1 * 4 + 0] +
+    z * finalMatrix[2 * 4 + 0] +
+    finalMatrix[3 * 4 + 0]) / w - OFFSETX;
+  *sely = (in[0] * finalMatrix[0 * 4 + 1] +
+    in[1] * finalMatrix[1 * 4 + 1] +
+    z * finalMatrix[2 * 4 + 1] +
+    finalMatrix[3 * 4 + 1]) / w - OFFSETY;
+  return 1;
+}
+
+static int selected;
+static int selectx, selecty;
+static float selstartx, selstarty;
+
+void
+grabPiece(int piece, float selx, float sely)
+{
+  int hit;
+
+  selectx = int(selx);
+  selecty = int(sely);
+  if (selectx < 0 || selecty < 0 || selectx >= WIDTH || selecty >= HEIGHT) {
+    return;
+  }
+  hit = thePuzzle[selecty][selectx];
+  if (hit != piece)
+    return;
+  if (hit) {
+    movingPiece = hit;
+    while (selectx > 0 && thePuzzle[selecty][selectx - 1] == movingPiece) {
+      selectx--;
+    }
+    while (selecty > 0 && thePuzzle[selecty - 1][selectx] == movingPiece) {
+      selecty--;
+    }
+    move_x = selectx;
+    move_y = selecty;
+    selected = 1;
+    selstartx = selx;
+    selstarty = sely;
+  } else {
+    selected = 0;
+  }
+  changeState();
+}
+
+void
+moveSelection(float selx, float sely)
+{
+  float deltax, deltay;
+  int dir;
+  Config newpieces;
+
+  if (!selected)
+    return;
+  deltax = selx - selstartx;
+  deltay = sely - selstarty;
+
+  if (fabs(deltax) > fabs(deltay)) {
+    deltay = 0;
+    if (deltax > 0) {
+      if (deltax > 1)
+        deltax = 1;
+      dir = 2;
+    } else {
+      if (deltax < -1)
+        deltax = -1;
+      dir = 0;
+    }
+  } else {
+    deltax = 0;
+    if (deltay > 0) {
+      if (deltay > 1)
+        deltay = 1;
+      dir = 3;
+    } else {
+      if (deltay < -1)
+        deltay = -1;
+      dir = 1;
+    }
+  }
+  if (canmove(thePuzzle, selectx, selecty, dir, newpieces)) {
+    move_x = deltax + selectx;
+    move_y = deltay + selecty;
+    if (deltax > 0.5) {
+      memcpy(thePuzzle, newpieces, HEIGHT * WIDTH);
+      selectx++;
+      selstartx++;
+    } else if (deltax < -0.5) {
+      memcpy(thePuzzle, newpieces, HEIGHT * WIDTH);
+      selectx--;
+      selstartx--;
+    } else if (deltay > 0.5) {
+      memcpy(thePuzzle, newpieces, HEIGHT * WIDTH);
+      selecty++;
+      selstarty++;
+    } else if (deltay < -0.5) {
+      memcpy(thePuzzle, newpieces, HEIGHT * WIDTH);
+      selecty--;
+      selstarty--;
+    }
+  } else {
+    if (deltay > 0 && thePuzzle[selecty][selectx] == 10 &&
+      selectx == 1 && selecty == 3) {
+      /* Allow visual movement of solution piece outside of the 
+
+         box */
+      move_x = selectx;
+      move_y = sely - selstarty + selecty;
+    } else {
+      move_x = selectx;
+      move_y = selecty;
+    }
+  }
+}
+
+void
+dropSelection(void)
+{
+  if (!selected)
+    return;
+  movingPiece = 0;
+  selected = 0;
+  changeState();
+}
+
+static int left_mouse, middle_mouse;
+static int mousex, mousey;
+static int solving;
+static int spinning;
+static float lastquat[4];
+static int sel_piece;
+
+static void
+Reshape(int width, int height)
+{
+
+  W = width;
+  H = height;
+  glViewport(0, 0, W, H);
+  glGetIntegerv(GL_VIEWPORT, viewport);
+}
+
+void
+toggleSolve(void)
+{
+    if (solving) {
+      freeSolutions();
+      solving = 0;
+      glutChangeToMenuEntry(1, "Solving", 1);
+      glutSetWindowTitle("glpuzzle");
+      movingPiece = 0;
+    } else {
+      glutChangeToMenuEntry(1, "Stop solving", 1);
+      glutSetWindowTitle("Solving...");
+      if (solvePuzzle()) {
+        solving = 1;
+      }
+    }
+    changeState();
+    glutPostRedisplay();
+}
+
+void reset(void)
+{
+    if (solving) {
+      freeSolutions();
+      solving = 0;
+      glutChangeToMenuEntry(1, "Solving", 1);
+      glutSetWindowTitle("glpuzzle");
+      movingPiece = 0;
+      changeState();
+    }
+    memcpy(thePuzzle, startConfig, HEIGHT * WIDTH);
+    glutPostRedisplay();
+}
+
+void
+keyboard(unsigned char c, int x, int y)
+{
+  int piece;
+
+  switch (c) {
+  case 27:
+    exit(0);
+    break;
+  case 'D':
+  case 'd':
+    if (solving) {
+      freeSolutions();
+      solving = 0;
+      glutChangeToMenuEntry(1, "Solving", 1);
+      glutSetWindowTitle("glpuzzle");
+      movingPiece = 0;
+      changeState();
+    }
+    piece = selectPiece(x, y);
+    if (piece) {
+      nukePiece(piece);
+    }
+    glutPostRedisplay();
+    break;
+  case 'R':
+  case 'r':
+    reset();
+    break;
+  case 'S':
+  case 's':
+    toggleSolve();
+    break;
+  case 'b':
+  case 'B':
+    depth = 1 - depth;
+    if (depth) {
+      glEnable(GL_DEPTH_TEST);
+    } else {
+      glDisable(GL_DEPTH_TEST);
+    }
+    glutPostRedisplay();
+    break;
+  default:
+    break;
+  }
+}
+
+void
+motion(int x, int y)
+{
+  float selx, sely;
+
+  if (middle_mouse && !left_mouse) {
+    if (mousex != x || mousey != y) {
+      trackball(lastquat,
+        (2.0*mousex - W) / W,
+        (H - 2.0*mousey) / H,
+        (2.0*x - W) / W,
+        (H - 2.0*y) / H);
+      spinning = 1;
+    } else {
+      spinning = 0;
+    }
+    changeState();
+  } else {
+    computeCoords(sel_piece, x, y, &selx, &sely);
+    moveSelection(selx, sely);
+  }
+  mousex = x;
+  mousey = y;
+  glutPostRedisplay();
+}
+
+void
+mouse(int b, int s, int x, int y)
+{
+  float selx, sely;
+
+  mousex = x;
+  mousey = y;
+  curX = x;
+  curY = y;
+  if (s == GLUT_DOWN) {
+    switch (b) {
+    case GLUT_LEFT_BUTTON:
+      if (solving) {
+        freeSolutions();
+        solving = 0;
+      glutChangeToMenuEntry(1, "Solving", 1);
+        glutSetWindowTitle("glpuzzle");
+        movingPiece = 0;
+      }
+      left_mouse = GL_TRUE;
+      sel_piece = selectPiece(mousex, mousey);
+      if (!sel_piece) {
+      left_mouse = GL_FALSE;
+      middle_mouse = GL_TRUE; // let it rotate object
+      } else if (computeCoords(sel_piece, mousex, mousey, &selx, &sely)) {
+        grabPiece(sel_piece, selx, sely);
+      }
+      glutPostRedisplay();
+      break;
+    case GLUT_MIDDLE_BUTTON:
+      middle_mouse = GL_TRUE;
+      glutPostRedisplay();
+      break;
+    }
+  } else {
+    if (left_mouse) {
+      left_mouse = GL_FALSE;
+      dropSelection();
+      glutPostRedisplay();
+    } else if (middle_mouse) {
+      middle_mouse = GL_FALSE;
+      glutPostRedisplay();
+    }
+  }
+  motion(x, y);
+}
+
+void
+animate(void)
+{
+  if (spinning) {
+    add_quats(lastquat, curquat, curquat);
+  }
+  glutPostRedisplay();
+  if (solving) {
+    if (!continueSolving()) {
+      solving = 0;
+      glutChangeToMenuEntry(1, "Solving", 1);
+      glutSetWindowTitle("glpuzzle");
+    }
+  }
+  if (!solving && !spinning && !visible) {
+    glutIdleFunc(NULL);
+  }
+}
+
+void
+changeState(void)
+{
+  if (visible) {
+    if (!solving && !spinning) {
+      glutIdleFunc(NULL);
+    } else {
+      glutIdleFunc(animate);
+    }
+  } else {
+    glutIdleFunc(NULL);
+  }
+}
+
+void
+init(void)
+{
+  static float lmodel_ambient[] =
+  {0.0, 0.0, 0.0, 0.0};
+  static float lmodel_twoside[] =
+  {GL_FALSE};
+  static float lmodel_local[] =
+  {GL_FALSE};
+  static float light0_ambient[] =
+  {0.1, 0.1, 0.1, 1.0};
+  static float light0_diffuse[] =
+  {1.0, 1.0, 1.0, 0.0};
+  static float light0_position[] =
+  {0.8660254, 0.5, 1, 0};
+  static float light0_specular[] =
+  {0.0, 0.0, 0.0, 0.0};
+  static float bevel_mat_ambient[] =
+  {0.0, 0.0, 0.0, 1.0};
+  static float bevel_mat_shininess[] =
+  {40.0};
+  static float bevel_mat_specular[] =
+  {0.0, 0.0, 0.0, 0.0};
+  static float bevel_mat_diffuse[] =
+  {1.0, 0.0, 0.0, 0.0};
+
+  glEnable(GL_CULL_FACE);
+  glCullFace(GL_BACK);
+  glEnable(GL_DEPTH_TEST);
+  glClearDepth(1.0);
+
+  glClearColor(0.5, 0.5, 0.5, 0.0);
+  glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient);
+  glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse);
+  glLightfv(GL_LIGHT0, GL_SPECULAR, light0_specular);
+  glLightfv(GL_LIGHT0, GL_POSITION, light0_position);
+  glEnable(GL_LIGHT0);
+
+  glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, lmodel_local);
+  glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
+  glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
+  glEnable(GL_LIGHTING);
+
+  glMaterialfv(GL_FRONT, GL_AMBIENT, bevel_mat_ambient);
+  glMaterialfv(GL_FRONT, GL_SHININESS, bevel_mat_shininess);
+  glMaterialfv(GL_FRONT, GL_SPECULAR, bevel_mat_specular);
+  glMaterialfv(GL_FRONT, GL_DIFFUSE, bevel_mat_diffuse);
+
+  glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE);
+  glEnable(GL_COLOR_MATERIAL);
+  glShadeModel(GL_FLAT);
+
+  trackball(curquat, 0.0, 0.0, 0.0, 0.0);
+  srandom(time(NULL));
+}
+
+static void
+Usage(void)
+{
+  printf("Usage: puzzle [-s]\n");
+  printf("   -s:  Run in single buffered mode\n");
+  exit(-1);
+}
+
+void
+visibility(int v)
+{
+  if (v == GLUT_VISIBLE) {
+    visible = 1;
+  } else {
+    visible = 0;
+  }
+  changeState();
+}
+
+void
+menu(int choice)
+{
+   switch(choice) {
+   case 1:
+      toggleSolve();
+      break;
+   case 2:
+      reset();
+      break;
+   case 3:
+      exit(0);
+      break;
+   }
+}
+
+int
+main(int argc, char **argv)
+{
+  long i;
+
+  glutInit(&argc, argv);
+  for (i = 1; i < argc; i++) {
+    if (argv[i][0] == '-') {
+      switch (argv[i][1]) {
+      case 's':
+        doubleBuffer = 0;
+        break;
+      default:
+        Usage();
+      }
+    } else {
+      Usage();
+    }
+  }
+
+  glutInitWindowSize(W, H);
+  if (doubleBuffer) {
+    glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | GLUT_DOUBLE | GLUT_MULTISAMPLE);
+  } else {
+    glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | GLUT_SINGLE | GLUT_MULTISAMPLE);
+  }
+
+  glutCreateWindow("glpuzzle");
+  visible = 1; // added for fltk, bug in original program?
+
+  init();
+
+  glGetIntegerv(GL_VIEWPORT, viewport);
+
+  printf("\n");
+  printf("r   Reset puzzle\n");
+  printf("s   Solve puzzle (may take a few seconds to compute)\n");
+  printf("d   Destroy a piece - makes the puzzle easier\n");
+  printf("b   Toggles the depth buffer on and off\n");
+  printf("\n");
+  printf("Left mouse moves pieces\n");
+  printf("Middle mouse spins the puzzle\n");
+  printf("Right mouse has menu\n");
+
+  glutReshapeFunc(Reshape);
+  glutDisplayFunc(redraw);
+  glutKeyboardFunc(keyboard);
+  glutMotionFunc(motion);
+  glutMouseFunc(mouse);
+  glutVisibilityFunc(visibility);
+  glutCreateMenu(menu);
+  glutAddMenuEntry("Solve", 1);
+  glutAddMenuEntry("Reset", 2);
+  glutAddMenuEntry("Quit", 3);
+  glutAttachMenu(GLUT_RIGHT_BUTTON);
+  glutMainLoop();
+  return 0;             /* ANSI C requires main to return int. */
+}
+
+#endif // added for fltk's distribution
+
+//
+// End of "$Id: glpuzzle.cxx 5860 2007-05-30 18:32:26Z sanel.z $".
+//

Added: branches/branch-3.0-2011/test2/hello.cxx
===================================================================
--- branches/branch-3.0-2011/test2/hello.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/hello.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -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();
+}

Added: branches/branch-3.0-2011/test2/helloask.cxx
===================================================================
--- branches/branch-3.0-2011/test2/helloask.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/helloask.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,26 @@
+// helloask.cxx (example2a)
+
+#include <fltk/Window.h>
+#include <fltk/Widget.h>
+#include <fltk/run.h>
+#include <fltk/ask.h>
+using namespace fltk;
+
+void window_callback(Widget* widget, void*) {
+  if (ask("Do you really want to exit?"))
+    ((Window*)widget)->hide();
+}
+
+int main(int argc, char **argv) {
+  Window *window = new Window(300, 180);
+  window->callback(window_callback);
+  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();
+}

Added: branches/branch-3.0-2011/test2/help.cxx
===================================================================
--- branches/branch-3.0-2011/test2/help.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/help.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,67 @@
+//
+// "$Id: help.cxx 5918 2007-06-26 18:49:21Z spitzak $"
+//
+// Fl_Help_Dialog test program.
+//
+// Copyright 1999-2003 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".
+//
+// Contents:
+//
+//   main() - Display the help GUI...
+//
+
+//
+// Include necessary headers...
+//
+
+#include <fltk/run.h>
+#include <fltk/HelpDialog.h>
+
+//
+// 'main()' - Display the help GUI...
+//
+
+int				// O - Exit status
+main(int  argc,			// I - Number of command-line arguments
+     char *argv[])		// I - Command-line arguments
+{
+  fltk::HelpDialog	*help;		// Help dialog
+
+
+  help = new fltk::HelpDialog;
+
+  if (argc < 2)
+    help->load("../documentation/index.html");
+  else
+    help->load(argv[1]);
+
+  help->show();
+
+  fltk::run();
+
+  delete help;
+
+  return (0);
+}
+
+
+//
+// End of "$Id: help.cxx 5918 2007-06-26 18:49:21Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/iconize.cxx
===================================================================
--- branches/branch-3.0-2011/test2/iconize.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/iconize.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,160 @@
+//
+// "$Id: iconize.cxx 5009 2006-04-20 08:51:34Z spitzak $"
+//
+// Iconize test program for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2003 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Button.h>
+#include <stdio.h>
+#include <stdlib.h>
+using namespace fltk;
+
+void hide_cb(Widget *, void *v) {
+  Window *w = (Window *)v;
+  w->hide();
+}
+
+void iconize_cb(Widget *, void *v) {
+  Window *w = (Window *)v;
+  w->iconize();
+}
+
+void destroy_cb(Widget *, void *v) {
+  Window *w = (Window *)v;
+  w->destroy();
+}
+
+void show_cb(Widget *, void *v) {
+  Window *w = (Window *)v;
+  w->show();
+}
+
+void big_cb(Widget *, void *v) {
+  Window *w = (Window *)v;
+  w->resize(800,800);
+}
+
+void small_cb(Widget *, void *v) {
+  Window *w = (Window *)v;
+  w->resize(200,200);
+}
+
+void fson_cb(Widget *, void *v) {
+  Window *w = (Window *)v;
+  w->fullscreen();
+}
+
+void fsoff_cb(Widget *, void *v) {
+  Window *w = (Window *)v;
+  w->fullscreen_off(100,100,200,200);
+}
+
+void window_cb(Widget*, void*) {
+  exit(0);
+}
+
+int main(int argc, char **argv) {
+
+  Window mainw(200,200);
+  mainw.resizable(mainw);
+  Window child(50,50,100,100);
+  child.color(1);
+  mainw.add(child);
+  mainw.resizable(child);
+  mainw.show(argc,argv);
+
+  Window control(120,9*30,"Window actions");
+  control.begin();
+
+  int y = 0;
+  Button hide_button(0,y,120,30,"&hide()");
+  hide_button.callback(hide_cb, &mainw);
+  y += 30;
+
+  Button iconize_button(0,y,120,30,"&iconize()");
+  iconize_button.callback(iconize_cb, &mainw);
+  y += 30;
+
+  Button destroy_button(0,y,120,30,"&destroy()");
+  destroy_button.callback(destroy_cb, &mainw);
+  y += 30;
+
+  Button show_button(0,y,120,30,"&show()");
+  show_button.callback(show_cb, &mainw);
+  y += 30;
+
+  Button big_button(0,y,120,30,"resize(&big)");
+  big_button.callback(big_cb, &mainw);
+  y += 30;
+
+  Button small_button(0,y,120,30,"resize(&little)");
+  small_button.callback(small_cb, &mainw);
+  y += 30;
+
+  Button fson_button(0,y,120,30,"fullscreen()");
+  fson_button.callback(fson_cb, &mainw);
+  y += 30;
+
+  Button fsoff_button(0,y,120,30,"&fullscreen_off()");
+  fsoff_button.callback(fsoff_cb, &mainw);
+  y += 30;
+
+  Button show_button2(0,y,120,30,"show this");
+  show_button2.callback(show_cb, &control);
+  y += 30;
+
+  control.tooltip("Push these buttons to cause actions to the main window.\n\n"
+		  "Also you should try running this with -i to iconize "
+		  "the window on startup, and -g WxH+X+Y to position "
+		  "the window on startup.");
+
+  control.end();
+  control.show();
+  control.callback(window_cb);
+  while (fltk::wait()) {
+    static int oldarray[6] = {0,0,0,0,0,0};
+    int array[6];
+    array[0] = mainw.x();
+    array[1] = mainw.y();
+    array[2] = mainw.w();
+    array[3] = mainw.h();
+    array[4] = mainw.visible();
+    array[5] = mainw.iconic();
+    bool print = false;
+    for (int i = 0; i < 6; i++) {
+      if (array[i] != oldarray[i]) print = true;
+      oldarray[i] = array[i];
+    }
+    if (print) {
+      printf("window is %d %d %d %d, visible %d, iconic %d\n",
+	     array[0], array[1], array[2], array[3], array[4], array[5]);
+//       fltk::Rectangle r; mainw.borders(&r);
+//       printf("borders %d %d %d %d\n", r.x(),r.y(),r.r(),r.b());
+    }
+  }
+  return 0;
+}
+
+//
+// End of "$Id: iconize.cxx 5009 2006-04-20 08:51:34Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/image.cxx
===================================================================
--- branches/branch-3.0-2011/test2/image.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,425 @@
+// Lame test of all types of image drawings.
+#include <string.h>      // memcpy
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Slider.h>
+#include <fltk/draw.h>
+#include <fltk/rgbImage.h>
+#include <fltk/xpmImage.h>
+#include <fltk/xbmImage.h>
+#include <fltk/CheckButton.h>
+
+#include <config.h>
+#if USE_X11
+#include "list_visuals.cxx"
+#include <fltk/visual.h>
+#endif
+
+using namespace fltk;
+
+const char cdata[16*16+1] =
+"                "
+"  R RR    GGG   "
+"  RRrrR  GgggG  "
+"  Rrrrrr GgggGg "
+"  Rrrrrrr GGGGgg"
+"  Rrrrrrrr ggGgg"
+"  Rrrrrrrrr gGgg"
+"   rBrrrrrGGGggg"
+"    Bbrrrrrggggg"
+"    BBBBrrrrgggg"
+"    BbbbBrrrrggg"
+"    BbbbBbrrrrgg"
+"    BbbbBbbrrrrg"
+"    BBBBbbbbrrrr"
+"     bbbbbbbbrrr"
+"      bbbbbbbbrr";
+
+#define SCALE 4
+
+// Tester for drawimage() call:
+class Dtest : public Widget {
+public:
+  fltk::PixelType pixeltype;
+  const unsigned char* data;
+  void draw() {
+    push_matrix();
+    scale(float(w())/(16*SCALE),float(h())/(16*SCALE));
+    drawimage(data, pixeltype, Rectangle(16*SCALE,16*SCALE));
+    pop_matrix();
+  }
+  Dtest(PixelType pt, int x, int y, const char* l, const unsigned char* d) :
+    Widget(x,y,16*SCALE,16*SCALE,l), pixeltype(pt), data(d) {
+    box(NO_BOX);
+    align(ALIGN_BOTTOM);
+    labelsize(10);
+    tooltip("fltk::drawimage()");
+  }
+};
+
+// Tester for rgbImage subclass:
+class Itest : public Widget {
+public:
+  Itest(PixelType pt, int x, int y, const char* l, const unsigned char* d) :
+    Widget(x,y,16*SCALE,16*SCALE,l) {
+    box(new rgbImage(d, pt, 16*SCALE, 16*SCALE));
+    align(ALIGN_BOTTOM);
+    labelsize(10);
+    tooltip("Instance of fltk::rgbImage used as widget->box()");
+  }
+};
+
+// Tester for inset:
+class Insetimage : public rgbImage {
+public:
+  Insetimage(const unsigned char* d, PixelType pt, int w, int h) :
+    rgbImage(d,pt,w,h) {}
+  void inset(fltk::Rectangle& r) const {r.inset(16);}
+};
+
+class Insettest : public Widget {
+public:
+  Insettest(PixelType pt,int x, int y, const char* l, const unsigned char* d) :
+    Widget(x,y,16*SCALE,16*SCALE,l) {
+    box(new Insetimage(d, pt, 16*SCALE, 16*SCALE));
+    align(ALIGN_BOTTOM);
+    labelsize(10);
+    tooltip("Edges are not scaled in this image.");
+  }
+};
+
+// Bitmap tester:
+#include "sorceress.xbm"
+class Btest : public Widget {
+public:
+  Btest(int x, int y, const char* l)
+    : Widget(x,y,16*SCALE,16*SCALE,l) {
+    box(new xbmImage(sorceress_bits, sorceress_width, sorceress_height));
+    align(ALIGN_BOTTOM|ALIGN_CLIP);
+    labelsize(10);
+  }
+};
+
+// Monochrome xpm tester:
+#include "../pixmaps/recycle.xpm"
+#include "porsche.xpm"
+class Xtest : public Widget {
+public:
+  Xtest(int x, int y, const char* l, const char* const* data)
+    : Widget(x,y,16*SCALE,16*SCALE,l) {
+    box(new xpmImage(data,0));
+    align(ALIGN_BOTTOM|ALIGN_CLIP);
+    labelsize(10);
+  }
+};
+
+unsigned char* builddata(int depth, const unsigned char* pixels) {
+  unsigned char* b = new unsigned char[SCALE*SCALE*16*16*depth];
+  unsigned char* p = b;
+  for (int y = 0; y < 16; y++) {
+    for (int y1 = 0; y1 < SCALE; y1++) {
+      const char* s = cdata+y*16;
+      for (int x = 0; x < 16; x++) {
+	int n;
+	switch (*s++) {
+	case 'R': n = 1; break;
+	case 'G': n = 2; break;
+	case 'B': n = 3; break;
+	case 'r': n = 4; break;
+	case 'g': n = 5; break;
+	case 'b': n = 6; break;
+	default: n = 0; break;
+	}
+	for (int xx = 0; xx < SCALE; xx++) {
+	  const unsigned char* pp = pixels+depth*n;
+	  for (int k=0; k < depth; k++) *p++ = *pp++;
+	}
+      }
+    }
+  }
+  return b;
+}
+
+unsigned char monopixels[7] = {0, 60, 160, 40, 30, 130, 20};
+
+unsigned char rgbpixels[7*3] = {
+  0, 0, 0,
+  255,0,0,
+  0, 255, 0,
+  0, 0, 255,
+  127,0,0,
+  0, 127, 0,
+  0, 0, 127};
+
+unsigned char rgbapixels[7*4] = {
+  0, 0, 0, 0,
+  255,0,0,255,
+  0, 255, 0,255,
+  0, 0, 255,255,
+  127,0,0,127,
+  0, 127, 0,127,
+  0, 0, 127,127};
+
+unsigned char rgbmpixels[7*4] = {
+  255, 255, 255, 0,
+  255,0,0,255,
+  0, 255, 0,255,
+  0, 0, 255,255,
+  255, 0,0,127,
+  0, 255, 0,127,
+  0, 0, 255,127};
+
+// Warning assummes sizeof(unsigned)==4!
+unsigned argbpixels[7] = {
+  0x0,
+  0xffff0000,
+  0xff00ff00,
+  0xff0000ff,
+  0x7f7f0000,
+  0x7f007f00,
+  0x7f00007f
+};
+
+unsigned mrgbpixels[7] = {
+  0x00ffffff,
+  0xffff0000,
+  0xff00ff00,
+  0xff0000ff,
+  0x7fff0000,
+  0x7f00ff00,
+  0x7f0000ff
+};
+
+#if USE_X11
+int visid = -1;
+int arg(int argc, char **argv, int &i) {
+  if (argv[i][1] == 'v') {
+    if (i+1 >= argc) return 0;
+    visid = atoi(argv[i+1]);
+    i += 2;
+    return 2;
+  }
+  return 0;
+}
+#endif
+
+void bgcallback(Widget* w, void *v) {
+  fltk::Color c = fltk::Color(((Slider*)w)->value());
+  ((Window*)v)->color(c);
+  fltk::Widget::default_style->buttoncolor(c);
+  fltk::redraw();
+}
+
+void fgcallback(Widget* w, void *v) {
+  fltk::Color c = fltk::Color(((Slider*)w)->value());
+  fltk::Widget::default_style->labelcolor(c);
+  fltk::Widget::default_style->textcolor(c);
+  fltk::redraw();
+}
+
+void activecallback(Widget* w, void* v) {
+  if (((Button*)w)->value()) ((Widget*)v)->activate();
+  else ((Widget*)v)->deactivate();
+}
+
+bool checker = false;
+
+void checkercallback(Widget* w, void*) {
+  checker = ((Button*)w)->value();
+  fltk::redraw();
+}
+
+class CheckGroup : public Group {
+public:
+  void draw() {
+    if (checker) {
+      fltk::setcolor(GRAY50);
+      int x1 = 0;
+      for (int y = 0; y < h(); y += 10) {
+	x1 = 10-x1;
+	for (int x = x1; x < w(); x += 20)
+	  fltk::fillrect(x,y,10,10);
+      }
+    }
+    Group::draw();
+  }
+  CheckGroup(int x, int y, int w, int h) : Group(x,y,w,h) {}
+};
+
+int main(int argc, char** argv) {
+
+#if USE_X11
+  int i = 1;
+  if (args(argc,argv,i,::arg) < argc) {
+    fprintf(stderr," -v # : use visual\n%s\n",help);
+    exit(1);
+  }
+
+  if (visid >= 0) {
+    open_display();
+    XVisualInfo templt; int num;
+    templt.visualid = visid;
+    xvisual = XGetVisualInfo(xdisplay, VisualIDMask, &templt, &num);
+    if (!xvisual) {
+      fprintf(stderr, "No visual with id %d, use one of:\n",visid);
+      list_visuals();
+      exit(1);
+    }
+    xcolormap = XCreateColormap(xdisplay, RootWindow(xdisplay,xscreen),
+				xvisual->visual, AllocNone);
+# if !USE_CAIRO
+    fltk::xpixel(fltk::BLACK); // make sure black is allocated
+# endif
+  } else {
+    visual(RGB_COLOR);
+  }
+#endif
+
+  const int COLS = 4;
+  const int ROWS = 7;
+
+  Window window(COLS*(16*SCALE+10)+10, 10+ROWS*(16*SCALE+15)+60+150);
+  window.begin();
+  CheckGroup group(0,0,window.w(),window.h()-60-150);
+  window.resizable(group);
+  group.resizable(group);
+  group.begin();
+
+  int y = 10;
+  int x = 10;
+#define nextxy() if ((x+=16*SCALE+10)>=window.w()) y += 16*SCALE+(x=10)+5
+
+  Widget* w;
+
+  w = new Dtest(fltk::MONO, x, y, "MONO", builddata(1, monopixels));
+  nextxy();
+
+  w = new Itest(fltk::MONO, x, y, "MONOimage", builddata(1, monopixels));
+  nextxy();
+
+  w = new Dtest(fltk::RGB, x, y, "RGB", builddata(3, rgbpixels));
+  nextxy();
+
+  w = new Itest(fltk::RGB, x, y, "RGB image", builddata(3, rgbpixels));
+  nextxy();
+
+  w = new Dtest(fltk::RGB32, x, y, "RGB32", builddata(4, (uchar*)argbpixels));
+  nextxy();
+
+  w = new Itest(fltk::RGB32, x, y, "RGB32image", builddata(4, (uchar*)argbpixels));
+  nextxy();
+
+  w = new Dtest(fltk::RGBx, x, y, "RGBx", builddata(4, rgbapixels));
+  w->tooltip("drawimage() of an rgb image except the pixels are 4 apart, "
+	      "some drivers will screw up and not skip the 4th byte");
+  nextxy();
+
+  w = new Itest(fltk::RGBx, x, y, "RGBx image", builddata(4, rgbapixels));
+  nextxy();
+
+  w = new Dtest(fltk::RGBA, x, y, "RGBA", builddata(4, rgbapixels));
+  w->tooltip("drawimage() of 4-byte rgba. Should be transparent, not black");
+  nextxy();
+
+  w = new Itest(fltk::RGBA, x, y, "RGBAimage", builddata(4, rgbapixels));
+  nextxy();
+
+  w = new Dtest(fltk::ARGB32, x, y, "ARGB32", builddata(4, (uchar*)argbpixels));
+  nextxy();
+
+  w = new Itest(fltk::ARGB32, x, y, "ARGB32image", builddata(4, (uchar*)argbpixels));
+  nextxy();
+
+  w = new Dtest(fltk::RGBM, x, y, "RGBM", builddata(4, rgbmpixels));
+  w->tooltip("drawimage() of 4-byte @i;unpremultiplied@n; rgba. Should be transparent, not white");
+  nextxy();
+
+  w = new Itest(fltk::RGBM, x, y, "RGBMimage", builddata(4, rgbmpixels));
+  nextxy();
+
+  w = new Dtest(fltk::MRGB32, x, y, "MRGB32", builddata(4, (uchar*)mrgbpixels));
+  nextxy();
+
+  w = new Itest(fltk::MRGB32, x, y, "MRGB32image", builddata(4, (uchar*)mrgbpixels));
+  nextxy();
+
+  w = new Dtest(fltk::MASK, x, y, "MASK", builddata(1, monopixels));
+  nextxy();
+
+  w = new Itest(fltk::MASK, x, y, "MASKimage", builddata(1, monopixels));
+  nextxy();
+
+  w = new Xtest(x, y, "mask xpmImage", recycle_xpm);
+  w->tooltip("In some versions of FLTK2, the only MASK style image was "
+	     "special monochrome XPM files. These should continue to work.");
+  nextxy();
+
+  w = new Btest(x, y, "xbmImage");
+  w->tooltip("In older versions of FLTK, the only MASK style image was "
+	     "the fltk::xbmImage object, which only had 1 bit for pixel. "
+	     "This should continue to work and display the same colors "
+	     "as maskXPM and MASK.");
+  nextxy();
+
+  w = new Xtest(x, y, "xpmImage", porsche_xpm);
+  w->tooltip("In older versions of FLTK, the only transparency available "
+	     "was from XPM and GIF images. This should continue to work.");
+  nextxy();
+
+  w = new Insettest(fltk::RGBx, x, y, "Insetimage", builddata(4, rgbapixels));
+  nextxy();
+
+  group.end(); y = group.h();
+  CheckButton* b = new CheckButton(20,y,100,20,"active");
+  b->tooltip("activate()/deactivate() the widgets. The ones using an Image "
+	     "will redraw to show the grayed-out state.");
+  b->set();
+  b->callback(activecallback, &group);
+
+  b = new CheckButton(100,y,100,20,"checker");
+  b->tooltip("Draw a checkerboard to test transparency.");
+  b->callback(checkercallback, &group);
+  y += 20;
+
+  Slider* s = new Slider(20,y,window.w()-30,20,"bg");
+  s->tooltip("background color, change this to see transparency");
+  s->range(1,255);
+  s->step(1);
+  s->value(fltk::GRAY75);
+  s->align(ALIGN_LEFT);
+  s->callback(bgcallback, &window);
+  s = new Slider(20,y+20,window.w()-30,20,"fg");
+  s->tooltip("labelcolor, change this to see if MASK works");
+  s->range(1,255);
+  s->step(1);
+  s->value(fltk::BLACK);
+  s->callback(fgcallback, &window);
+  s->align(ALIGN_LEFT);
+
+  Widget text(0,y+40,window.w(),window.h()-y-40,
+	      "* All images should scale to fill their rectangle as you resize the window.\n"
+              "* Images with RGB in their names should have the letters opaque and the correct color.\n"
+              "* RGBA and RGBM images should look identical and be transparent, "
+              "with 100% transparency around the upper-left.\n"
+              "* MASK images should match the fg color as you change it.\n"
+              "Currently only OS/X version has no errors.");
+  text.align(ALIGN_LEFT|ALIGN_INSIDE|ALIGN_WRAP);
+
+  window.end();
+
+#if USE_X11
+  // try to set the icon on X
+  uchar* data = builddata(4, (uchar*)argbpixels);
+  const unsigned width = 16*SCALE;
+  const unsigned height = 16*SCALE;
+  unsigned* icon = new unsigned[width*height+2];
+  icon[0] = width;
+  icon[1] = height;
+  memcpy(icon+2, data, width*height*4);
+  window.icon(icon);
+#endif
+
+  window.show(argc, argv);
+
+  return fltk::run();
+}

Added: branches/branch-3.0-2011/test2/image_file.cxx
===================================================================
--- branches/branch-3.0-2011/test2/image_file.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/image_file.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,582 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0001
+
+#include "image_file.h"
+#include <stdio.h>
+#include <fltk/fl_file_chooser.h>
+
+Fl_Window* window;
+
+#include <fltk/Fl_Shared_Image.h>
+static const unsigned char datas_coucou[4328] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,64,0,0,0,64,8,6,0,0,0,
+170,105,113,222,0,0,0,4,103,65,77,65,0,1,134,160,49,232,150,95,0,0,16,159,73,
+68,65,84,120,218,157,155,59,143,28,229,211,197,79,119,63,125,155,158,89,219,
+24,57,32,176,68,66,0,9,66,88,130,144,136,24,248,20,164,72,124,52,167,4,136,
+12,132,248,0,36,14,64,88,128,133,119,166,239,183,127,96,126,69,117,123,225,
+221,125,91,26,237,206,173,187,159,122,170,78,157,58,85,19,73,90,117,139,227,
+171,175,190,210,253,251,247,245,253,247,223,107,93,87,125,240,193,7,122,250,
+244,169,190,248,226,11,61,123,246,76,239,190,251,174,186,174,147,36,229,121,
+174,231,207,159,235,155,111,190,81,81,20,250,236,179,207,148,36,137,150,101,
+209,56,142,146,164,182,109,213,247,189,94,188,120,161,71,143,30,233,135,31,
+126,208,147,39,79,244,237,183,223,234,243,207,63,215,79,63,253,164,119,222,
+121,71,95,127,253,245,109,110,79,31,125,244,145,166,105,82,150,101,122,246,
+236,153,30,62,124,168,171,171,43,205,243,172,103,207,158,233,241,227,199,90,
+215,85,47,94,188,208,213,213,149,146,36,81,20,69,10,186,229,209,247,189,234,
+186,150,36,45,203,162,203,229,34,73,186,92,46,234,186,78,151,203,69,125,223,
+43,142,99,141,227,168,190,239,237,187,117,93,43,142,99,77,211,164,121,158,37,
+73,93,215,105,24,6,45,203,162,243,249,172,101,89,212,247,189,162,40,210,245,
+245,181,134,97,176,235,221,230,200,243,92,73,146,40,207,115,229,121,174,162,
+40,148,231,185,150,101,177,255,215,117,85,89,150,42,138,66,113,28,223,205,0,
+243,60,171,109,91,51,0,55,215,182,173,198,113,84,93,215,234,186,78,33,4,133,
+16,52,12,131,93,164,105,26,69,81,164,101,89,52,12,131,36,105,28,71,141,227,
+168,105,154,84,215,181,162,40,82,215,117,138,162,72,117,93,111,140,124,91,3,
+132,16,148,231,185,45,146,69,23,69,161,44,203,36,73,135,195,65,69,81,40,73,
+18,173,235,122,123,3,12,195,160,97,24,52,207,179,45,120,93,87,53,77,163,105,
+154,54,30,144,166,169,154,166,209,178,44,102,172,40,138,236,187,24,96,154,38,
+51,202,60,207,102,212,203,229,162,97,24,238,100,128,178,44,53,77,147,138,162,
+80,89,150,102,4,73,246,218,52,77,42,203,82,105,154,42,203,50,205,243,124,55,
+3,44,203,162,117,93,53,77,147,154,166,81,28,199,106,154,70,227,56,170,105,26,
+243,0,66,32,142,99,91,80,8,193,194,98,154,38,51,194,186,174,26,199,81,243,60,
+171,239,123,51,88,223,247,230,113,119,13,1,118,57,77,83,197,113,172,195,225,
+160,60,207,21,69,145,214,117,85,150,101,10,33,220,45,4,134,97,208,56,142,6,
+100,77,211,104,158,103,139,101,118,141,139,98,176,101,89,212,52,141,66,8,230,
+226,236,252,60,207,74,146,68,195,48,152,81,9,9,158,223,246,200,178,76,73,146,
+232,112,56,168,170,42,219,233,16,130,25,128,197,199,113,172,36,73,148,36,201,
+237,13,192,66,137,93,118,171,109,91,13,195,96,158,48,77,147,45,114,158,103,
+139,233,44,203,204,16,236,252,178,44,6,154,227,56,170,235,58,205,243,172,166,
+105,212,247,189,214,117,189,147,7,44,203,178,193,128,56,142,149,101,153,25,
+99,158,103,101,89,246,42,246,255,222,144,59,101,129,190,239,53,77,147,166,105,
+82,219,182,230,182,220,236,56,142,6,54,132,10,97,194,119,216,241,56,142,53,
+207,243,198,0,120,21,6,32,99,220,230,72,211,84,81,20,169,44,75,157,78,39,29,
+14,7,205,243,172,162,40,204,35,230,121,86,85,85,154,166,201,128,250,78,30,64,
+158,31,134,193,22,72,22,0,224,216,117,220,159,133,121,3,224,37,235,186,42,138,
+34,243,28,188,137,191,96,197,109,14,118,188,44,75,29,143,71,165,105,106,160,
+87,85,149,242,60,215,48,12,42,138,194,12,80,215,245,221,13,16,69,209,198,0,
+184,45,33,225,13,128,65,72,157,109,219,42,77,83,141,227,184,49,192,60,207,90,
+150,197,194,12,160,12,33,220,201,3,210,52,53,15,72,146,68,231,243,89,121,158,
+235,120,60,170,40,10,213,117,173,195,225,96,88,149,166,169,194,147,39,79,44,
+79,250,7,136,154,101,153,229,212,178,44,13,101,121,148,101,169,16,130,202,178,
+212,178,44,182,48,0,147,7,134,72,146,68,113,28,107,93,87,173,235,106,158,131,
+203,15,195,160,174,235,12,19,62,253,244,211,13,206,16,114,109,219,110,158,103,
+89,102,247,51,77,147,225,7,24,16,66,176,181,36,73,162,16,130,226,56,86,248,
+253,247,223,109,113,44,42,138,34,133,16,148,166,169,197,16,113,180,79,51,69,
+81,152,1,161,187,243,60,43,207,115,35,80,28,236,118,146,36,154,231,121,147,
+69,72,139,125,223,107,24,6,245,125,191,89,32,255,251,16,225,189,190,239,141,
+253,225,226,32,126,89,150,155,76,65,186,196,8,129,92,189,44,139,166,105,50,
+58,138,123,98,73,254,70,81,100,136,155,36,137,185,29,198,249,55,224,242,30,
+192,255,109,219,170,235,58,229,121,110,33,198,206,119,93,167,178,44,109,183,
+179,44,179,207,135,16,212,182,173,252,189,227,234,228,123,214,81,150,165,133,
+100,81,20,58,28,14,26,199,209,24,107,120,235,173,183,94,99,79,228,77,158,243,
+94,28,199,170,170,202,94,131,81,113,35,236,234,254,192,226,208,79,62,143,167,
+241,30,134,134,164,144,42,201,60,243,60,219,38,225,1,128,101,146,36,6,118,156,
+155,52,72,200,65,200,184,94,150,101,175,60,128,23,88,16,174,195,98,1,17,31,
+255,24,161,40,10,35,27,235,186,110,8,16,187,73,22,32,221,225,250,227,56,170,
+109,91,213,117,109,187,219,117,221,198,197,41,146,198,113,180,197,242,28,102,
+74,22,168,170,202,194,144,16,78,211,84,85,85,105,28,71,187,95,140,92,20,197,
+63,24,224,193,142,152,62,28,14,246,58,46,206,103,60,22,240,121,46,200,174,123,
+34,131,129,121,255,116,58,41,142,227,27,23,14,46,244,125,111,239,17,251,124,
+14,195,82,214,114,191,84,157,81,20,89,241,147,101,153,186,174,211,225,112,176,
+157,143,227,248,149,1,30,61,122,100,0,232,93,222,47,20,119,247,30,194,201,248,
+44,159,223,47,30,215,246,177,79,184,120,240,243,217,129,247,125,22,89,150,101,
+131,69,184,185,47,134,48,128,63,119,150,101,170,170,106,99,140,178,44,255,169,
+9,136,91,128,129,112,32,78,61,24,70,81,164,52,77,237,102,252,174,147,106,214,
+117,181,69,75,218,44,202,231,117,174,177,44,139,174,174,174,12,148,242,60,183,
+208,104,219,86,101,89,170,105,154,13,232,145,62,9,43,118,21,87,47,138,194,240,
+165,40,10,157,78,39,205,243,108,6,42,138,194,64,49,144,182,200,203,222,186,
+126,199,185,65,210,7,113,12,33,242,121,159,29,100,135,40,129,111,202,12,208,
+235,174,235,12,241,41,136,192,16,82,29,37,185,127,13,112,76,211,84,199,227,
+209,238,137,141,4,195,48,106,20,69,42,138,66,227,56,170,170,170,87,6,240,106,
+12,36,166,235,58,99,82,236,180,15,135,125,152,128,3,255,150,9,188,71,240,23,
+164,102,183,96,127,44,96,28,71,243,32,192,15,78,224,177,162,235,186,141,231,
+250,52,13,73,59,159,207,182,112,188,56,203,50,5,110,130,29,222,131,33,152,64,
+236,96,12,222,99,225,100,3,14,60,225,191,14,79,127,135,97,48,228,238,186,206,
+132,21,118,13,16,109,219,246,159,74,206,149,216,222,171,192,143,61,0,67,177,
+217,32,211,3,188,235,19,10,228,96,110,212,87,119,88,208,147,27,226,206,231,
+116,127,83,156,203,135,3,41,17,49,5,100,39,20,72,125,184,252,62,245,249,112,
+101,199,185,135,61,7,217,135,29,27,25,88,44,150,1,12,241,10,44,77,237,142,151,
+120,210,228,249,53,231,192,64,94,9,166,8,66,15,96,241,24,0,165,24,190,128,103,
+80,45,122,29,17,16,196,32,92,131,82,123,239,129,158,136,225,245,113,28,43,246,
+224,231,173,7,65,130,149,129,15,196,240,222,229,124,236,123,12,216,239,6,128,
+139,161,88,16,252,29,131,253,215,98,249,60,70,166,108,230,156,123,15,244,76,
+149,243,99,0,3,65,95,222,178,88,175,215,241,101,79,103,113,125,98,12,30,128,
+24,137,33,40,72,208,19,124,237,129,254,135,170,92,215,181,242,60,183,212,231,
+63,139,231,236,235,19,143,57,251,216,247,161,237,61,145,80,14,158,151,227,226,
+27,23,249,27,165,33,23,244,1,184,233,191,254,250,75,33,4,35,27,123,215,131,
+143,67,63,185,112,154,166,102,72,190,79,218,109,154,102,195,64,225,4,0,100,
+20,69,150,46,193,37,79,140,188,23,123,99,240,62,30,184,174,171,194,159,127,
+254,105,23,131,79,243,63,187,76,121,235,83,225,190,38,56,30,143,38,135,249,
+84,231,195,1,9,28,131,146,218,192,1,176,0,10,76,218,243,175,241,240,175,131,
+45,222,232,243,60,91,86,218,135,10,158,156,36,137,194,131,7,15,54,28,159,69,
+146,255,169,161,33,67,94,120,64,129,229,239,77,76,210,123,197,158,35,208,11,
+240,143,166,105,116,185,92,54,212,24,247,231,156,236,166,247,212,125,182,161,
+32,242,153,202,27,0,145,52,60,127,254,252,181,118,146,47,141,155,166,49,25,
+41,203,50,77,211,164,97,24,236,53,95,184,64,132,56,0,48,98,120,175,20,249,29,
+132,124,129,57,164,65,148,34,208,155,107,160,249,121,64,221,19,48,66,193,203,
+114,222,3,36,41,188,249,230,155,27,210,227,31,188,254,111,85,161,87,130,246,
+72,15,247,255,55,93,207,139,34,222,245,1,69,0,206,87,118,62,115,144,30,249,
+222,30,241,145,202,253,181,250,190,87,85,85,27,156,10,191,252,242,203,102,113,
+123,113,4,87,39,60,48,0,108,144,240,224,243,52,35,160,160,0,158,149,159,127,
+27,132,178,21,53,24,212,191,190,190,214,52,77,122,249,242,165,218,182,85,81,
+20,22,18,158,182,3,102,158,144,237,13,12,224,122,142,112,60,30,55,159,11,143,
+31,63,182,197,16,239,94,31,160,162,226,117,22,198,115,116,1,22,75,236,130,242,
+62,165,66,108,0,169,117,93,55,122,64,93,215,86,247,123,213,135,52,205,98,60,
+19,245,248,226,57,3,245,1,64,75,232,122,226,103,125,1,79,122,216,65,140,129,
+171,19,6,160,63,218,59,98,41,32,249,127,29,44,222,131,146,245,234,255,6,173,
+44,203,54,189,72,127,176,0,143,250,96,11,32,138,198,184,174,171,253,157,231,
+89,151,203,69,111,188,241,134,41,204,77,211,188,34,66,251,162,129,5,19,10,44,
+208,99,3,249,27,110,141,59,210,39,0,108,72,81,94,30,247,228,11,238,223,117,
+157,165,73,186,197,236,40,57,31,73,204,159,99,95,88,121,81,213,119,158,215,
+117,53,15,243,224,29,60,192,248,134,7,174,184,175,10,247,92,1,145,129,27,130,
+11,236,11,144,155,16,153,52,72,17,196,160,133,167,187,94,10,247,160,231,249,
+0,207,33,76,113,28,171,174,107,37,73,98,50,27,170,178,239,64,95,46,23,133,223,
+126,251,109,179,24,196,80,175,224,248,114,25,93,157,48,225,51,222,37,247,185,
+223,247,11,40,134,216,69,175,245,121,99,120,108,240,21,161,47,144,240,8,174,
+69,6,161,123,69,49,215,182,173,117,169,9,9,132,216,240,246,219,111,155,155,
+131,246,158,15,176,72,0,209,167,39,92,174,40,10,179,242,77,121,152,214,149,
+55,38,162,133,167,194,199,227,113,3,130,8,31,62,75,120,195,96,44,168,49,101,
+52,106,85,150,101,234,251,94,215,215,215,22,34,126,40,163,109,219,127,36,49,
+47,141,237,65,11,100,223,103,9,255,32,5,238,83,146,39,31,123,93,0,23,63,159,
+207,182,56,175,12,227,222,16,162,125,63,192,147,48,47,171,145,42,81,157,47,
+151,139,226,56,182,115,48,182,51,142,227,63,213,32,116,19,122,137,91,3,110,
+158,79,251,93,7,52,169,212,246,161,224,245,69,60,33,132,160,227,241,104,231,
+125,248,240,225,198,173,217,101,223,7,244,97,130,55,240,63,139,225,181,60,207,
+213,247,189,117,144,24,209,225,123,120,114,215,117,10,190,41,66,29,192,95,184,
+189,175,15,88,176,47,140,188,36,238,119,251,38,15,64,174,38,78,253,238,178,
+163,235,186,190,38,140,248,62,32,223,243,217,192,27,14,161,133,234,147,254,
+129,247,0,8,88,248,238,187,239,110,213,126,126,255,253,247,173,20,205,178,76,
+117,93,27,171,130,152,16,119,228,120,64,8,99,96,100,220,244,112,56,104,154,
+38,27,90,104,219,86,135,195,97,19,142,63,254,248,227,173,238,239,147,79,62,
+49,192,35,139,177,216,186,174,173,118,240,19,107,227,56,222,126,62,128,102,
+2,130,199,56,142,214,136,204,178,204,118,26,54,136,247,248,161,40,192,15,242,
+82,150,165,13,45,128,9,104,246,119,153,14,129,230,130,242,224,1,108,212,107,
+141,125,223,43,77,83,195,144,91,27,128,174,42,6,160,37,13,56,66,108,200,26,
+8,21,224,2,76,143,97,37,230,247,152,234,224,59,244,247,201,16,119,25,224,136,
+227,120,51,169,230,211,31,231,247,194,202,157,70,100,104,85,211,81,161,252,
+101,81,236,50,30,192,204,14,3,144,251,254,252,52,77,54,139,80,150,165,245,1,
+152,229,185,235,132,8,5,18,53,0,6,1,119,60,145,162,87,216,247,253,221,60,0,
+247,194,0,180,204,201,8,158,48,225,17,94,98,247,93,166,190,239,55,45,42,134,
+167,152,49,248,175,82,250,166,3,157,129,5,250,73,85,102,147,48,64,81,20,134,
+21,119,50,64,93,215,70,138,88,0,3,19,208,97,120,195,190,7,72,145,67,105,76,
+40,209,179,243,212,219,235,9,183,61,88,164,231,13,96,22,241,14,54,248,241,154,
+91,95,1,186,236,67,192,119,89,113,119,47,135,249,41,47,192,142,70,38,92,2,183,
+39,124,16,80,17,81,239,18,2,144,29,48,0,176,197,27,124,123,237,255,21,2,126,
+30,151,27,247,2,163,223,125,223,84,161,220,245,162,10,30,132,97,192,25,122,
+247,190,176,186,173,1,40,139,9,49,120,2,248,128,39,208,98,187,115,26,100,0,
+201,123,128,159,249,243,41,142,20,228,135,162,8,25,64,207,207,31,236,167,186,
+125,127,225,54,7,99,181,128,39,105,21,15,160,48,195,0,132,196,157,12,80,85,
+149,237,156,247,4,92,22,189,141,221,243,237,113,63,57,86,85,149,213,15,227,
+56,218,120,13,24,65,136,220,213,3,32,79,94,69,246,101,62,216,128,1,150,101,
+81,248,242,203,47,173,152,224,3,48,41,207,199,145,193,232,6,77,211,164,227,
+241,104,243,63,184,56,150,70,189,165,93,141,225,0,61,206,195,185,193,4,84,41,
+248,197,123,239,189,247,26,21,247,5,25,146,220,254,7,19,251,207,239,193,217,
+128,246,195,15,63,180,162,226,124,62,111,52,250,203,229,98,174,133,240,73,204,
+206,243,108,24,0,2,67,99,217,61,200,146,231,0,80,95,106,10,36,118,190,195,216,
+13,223,245,122,165,87,164,253,115,206,231,167,66,25,140,160,105,131,160,227,
+135,36,203,178,84,120,249,242,165,46,151,139,149,141,52,38,188,234,2,224,177,
+227,100,131,227,241,104,49,198,136,10,12,16,99,65,151,209,28,134,97,176,113,
+54,158,151,101,169,203,229,98,59,133,97,61,41,98,168,218,183,236,120,222,247,
+253,141,180,27,47,67,203,196,48,190,0,12,215,215,215,58,159,207,182,251,55,
+9,15,168,43,236,32,96,118,58,157,44,221,16,187,128,159,31,183,67,154,98,104,
+241,254,253,251,138,162,200,60,102,95,81,194,57,252,34,253,236,129,39,90,126,
+62,96,255,243,30,240,160,174,107,189,120,241,98,243,171,21,248,66,248,249,231,
+159,55,122,0,162,35,86,246,23,165,122,195,0,85,85,89,170,99,151,41,77,169,251,
+153,221,107,154,198,164,54,239,166,84,133,251,44,179,207,18,251,30,133,159,
+88,33,84,252,175,80,24,241,241,217,136,112,37,196,199,113,84,248,245,215,95,
+95,19,63,64,76,210,8,164,4,26,123,56,28,20,66,208,189,123,247,44,255,114,67,
+8,157,148,190,240,253,123,247,238,89,107,221,99,0,134,243,253,71,175,73,122,
+121,222,171,212,126,88,219,191,231,251,149,132,45,19,228,126,140,207,248,202,
+131,7,15,94,251,57,12,98,163,111,65,249,169,145,189,136,234,135,145,232,219,
+17,207,85,85,25,96,18,2,204,244,250,249,68,239,1,164,83,79,176,120,248,57,66,
+240,129,142,51,59,77,139,45,207,115,27,142,34,245,18,174,214,197,250,248,227,
+143,173,231,239,219,212,30,7,24,84,34,22,73,57,87,87,87,38,99,19,211,146,244,
+199,31,127,108,188,133,56,166,143,112,60,30,205,144,48,67,64,138,193,103,234,
+10,98,25,207,228,117,100,54,188,132,77,240,41,208,171,214,72,238,94,44,105,
+154,230,213,140,16,232,233,37,231,253,140,14,213,153,31,152,62,30,143,170,170,
+202,64,8,15,240,116,248,234,234,74,47,95,190,180,214,25,32,72,220,226,13,85,
+85,233,116,58,89,63,16,228,223,55,107,125,251,205,239,184,215,46,89,32,70,38,
+181,250,25,102,126,77,22,40,29,153,208,196,173,166,105,178,94,28,245,59,127,
+105,139,17,247,104,253,8,35,190,150,167,184,65,62,99,247,233,31,130,3,224,10,
+32,135,156,133,150,224,135,155,32,89,126,28,23,227,222,52,158,231,199,124,253,
+132,74,154,166,10,94,112,244,98,163,159,11,242,5,69,211,52,27,166,134,198,231,
+129,197,183,174,125,67,211,11,38,156,31,41,221,103,29,223,54,247,243,139,92,
+207,143,187,236,199,96,60,96,250,169,151,227,241,104,188,128,123,201,178,76,
+1,192,130,51,147,215,189,188,205,14,123,133,213,119,136,200,187,220,140,31,
+99,45,138,194,82,37,245,128,111,147,209,178,226,156,228,234,243,249,252,218,
+252,34,90,161,31,116,100,225,190,37,127,58,157,44,60,79,167,147,174,174,174,
+140,124,249,223,46,72,122,85,12,249,41,14,30,94,167,247,63,74,64,87,103,39,
+104,123,65,92,188,7,48,242,74,37,232,135,20,125,229,70,203,12,240,243,191,83,
+28,134,97,83,106,123,213,9,207,227,53,164,48,223,185,98,144,139,208,3,163,236,
+183,195,79,159,62,181,27,245,132,193,207,226,193,168,188,196,236,181,63,118,
+156,221,246,141,205,16,130,209,103,228,168,125,65,194,0,51,174,238,231,6,88,
+152,119,117,63,208,9,86,248,223,33,250,169,183,253,236,176,15,223,56,142,245,
+63,29,34,171,173,78,153,43,170,0,0,0,0,73,69,78,68,174,66,96,130};
+
+Fl_Value_Slider* slider;
+
+static void cb_slider(Fl_Value_Slider* o, void*) {
+  Fl_Shared_Image::set_cache_size((int)o->value()*1024);
+}
+static const unsigned char datas_testimg[5756] = {
+255,216,255,224,0,16,74,70,73,70,0,1,1,0,0,1,0,1,0,0,255,219,0,67,0,8,6,6,
+7,6,5,8,7,7,7,9,9,8,10,12,20,13,12,11,11,12,25,18,19,15,20,29,26,31,30,29,26,
+28,28,32,36,46,39,32,34,44,35,28,28,40,55,41,44,48,49,52,52,52,31,39,57,61,
+56,50,60,46,51,52,50,255,219,0,67,1,9,9,9,12,11,12,24,13,13,24,50,33,28,33,
+50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,
+50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,
+255,192,0,17,8,0,149,0,227,3,1,34,0,2,17,1,3,17,1,255,196,0,31,0,0,1,5,1,1,
+1,1,1,1,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,255,196,0,181,16,0,2,1,3,3,
+2,4,3,5,5,4,4,0,0,1,125,1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,
+129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,
+26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,
+86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,
+131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,
+164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,
+197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,
+229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250,255,196,0,31,
+1,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,255,196,0,181,17,
+0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119,0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,
+19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,
+52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,
+73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,
+119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,
+152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,
+185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,
+218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250,
+255,218,0,12,3,1,0,2,17,3,17,0,63,0,242,229,106,118,250,102,41,8,52,154,26,
+99,247,243,70,241,81,28,138,51,69,135,113,228,210,241,81,238,197,56,28,209,
+96,184,240,0,169,20,212,27,176,41,202,78,105,88,11,137,46,5,74,178,18,106,160,
+224,83,149,240,106,28,75,70,164,18,249,125,13,105,90,221,22,56,102,174,124,
+75,197,93,181,152,30,245,207,86,159,83,211,192,226,28,125,219,157,66,73,184,
+122,212,115,184,88,201,172,248,110,74,30,188,84,183,23,2,72,198,43,149,197,
+220,250,69,141,78,147,93,72,139,84,78,212,210,252,212,108,212,212,79,58,117,
+46,133,38,128,220,212,69,170,88,148,177,173,20,110,115,185,216,185,110,189,
+77,86,213,227,113,110,48,135,6,181,52,248,12,238,20,14,51,91,90,134,157,27,
+89,237,199,56,171,167,15,122,236,195,31,139,140,40,170,107,118,121,131,129,
+81,154,214,212,172,90,38,60,126,53,140,196,134,193,174,196,238,120,151,190,
+194,226,149,78,199,12,41,155,169,119,85,2,186,58,157,23,80,102,153,35,94,73,
+226,182,117,197,152,217,128,70,0,228,215,55,225,82,167,84,93,221,186,87,165,
+45,140,122,132,139,28,164,109,197,111,133,171,74,151,50,155,30,34,179,149,175,
+208,243,171,45,74,75,11,129,44,124,227,168,245,173,75,253,101,245,56,149,90,
+38,30,228,87,83,47,132,244,251,89,86,64,170,73,61,58,213,93,106,27,104,44,219,
+98,1,133,226,176,171,82,18,122,24,123,84,222,135,37,176,81,80,139,165,3,4,209,
+89,123,121,29,26,24,34,58,127,149,145,78,70,25,230,167,80,15,74,178,81,77,161,
+52,198,132,226,180,182,102,154,209,250,10,57,172,85,174,102,121,102,156,18,
+174,148,199,81,81,50,209,205,112,104,132,68,79,74,149,33,167,32,230,172,40,
+192,169,148,135,20,64,209,224,84,123,14,106,203,154,96,0,154,19,27,208,143,
+203,36,113,78,136,52,109,145,93,5,173,149,165,189,162,201,114,158,100,206,55,
+42,18,64,3,181,16,44,8,73,146,221,58,112,118,214,51,173,21,161,234,195,47,171,
+104,201,180,175,253,106,84,129,158,68,225,88,254,21,46,74,157,172,8,62,134,
+172,160,89,14,50,192,14,105,203,189,220,140,229,71,63,55,32,86,14,107,177,221,
+28,60,172,149,202,76,105,132,147,90,130,218,7,31,63,113,213,70,15,248,83,98,
+178,134,34,29,219,205,61,148,174,0,250,250,210,231,135,115,111,168,87,109,105,
+163,234,84,58,125,194,218,197,116,201,136,101,36,43,103,210,165,129,115,133,
+21,160,142,247,14,96,99,196,132,99,39,0,17,211,252,42,75,59,101,44,76,138,85,
+80,252,199,223,208,85,70,105,171,156,120,156,61,74,117,85,58,106,247,46,233,
+191,185,11,187,0,122,154,218,151,231,135,165,115,146,203,27,200,21,200,80,56,
+94,120,21,42,207,52,77,182,57,92,46,123,26,106,169,180,248,114,53,149,253,167,
+191,215,77,7,221,105,171,58,182,71,90,226,245,125,29,237,220,178,142,43,184,
+75,169,179,130,255,0,152,164,147,108,191,235,99,71,30,133,69,109,9,62,135,58,
+225,170,208,122,77,91,230,121,113,141,148,242,40,218,222,149,233,51,104,150,
+23,155,148,90,170,51,3,130,156,17,238,43,154,188,208,46,172,103,193,143,204,
+143,63,44,138,50,15,215,210,181,85,78,76,94,89,87,15,172,181,94,68,126,30,180,
+158,27,197,184,101,194,227,165,119,182,247,173,193,25,200,53,87,67,240,245,
+219,218,249,175,25,25,94,6,43,118,223,195,23,206,202,21,112,15,95,106,202,80,
+156,245,177,227,213,139,110,200,172,215,109,41,37,143,74,197,214,164,223,110,
+223,74,238,211,194,70,52,203,228,156,87,23,226,59,22,181,149,163,3,131,77,83,
+113,87,50,246,114,142,172,243,169,12,158,99,112,122,209,91,159,100,61,211,154,
+42,174,142,155,196,230,134,228,56,53,102,39,169,101,183,170,234,133,26,174,
+247,29,141,4,25,25,174,151,66,208,34,212,109,203,56,201,53,204,68,196,1,93,
+183,131,231,32,50,142,128,214,248,56,198,85,109,33,84,210,55,70,118,161,224,
+203,136,203,24,9,35,208,215,51,121,165,221,218,72,86,72,141,123,146,200,140,
+188,128,107,23,84,210,226,189,7,8,51,94,141,76,12,31,195,161,154,168,250,158,
+56,21,148,225,129,7,222,166,29,43,172,212,188,51,57,207,150,128,227,161,172,
+235,77,23,203,144,27,150,4,47,97,222,188,204,69,31,100,253,231,161,213,135,
+165,82,188,185,105,43,179,15,236,243,184,202,70,236,61,64,171,22,118,172,92,
+201,42,16,168,122,17,212,215,93,45,196,49,91,236,134,5,28,99,154,165,115,22,
+238,15,240,142,112,56,205,114,86,173,77,43,65,220,245,240,217,77,101,46,106,
+150,211,166,229,22,86,118,46,204,75,19,146,77,73,26,6,80,8,167,44,65,126,251,
+224,125,13,74,165,20,97,6,125,205,121,237,158,237,26,55,119,100,30,81,82,118,
+244,169,54,16,187,0,247,99,253,42,96,197,1,220,20,159,167,74,68,185,149,24,
+149,114,51,212,14,135,216,142,244,156,141,213,8,71,81,20,96,80,228,129,197,
+75,132,148,110,143,131,221,79,244,168,157,28,182,10,149,199,118,24,168,179,
+103,115,81,84,253,222,163,84,141,192,158,8,57,200,171,174,242,67,0,243,8,101,
+234,140,58,26,168,85,84,114,73,250,85,160,170,109,163,66,197,163,153,114,15,
+247,91,56,53,112,236,114,77,74,46,251,50,132,174,102,113,218,175,91,49,194,
+249,157,184,39,214,169,60,102,55,42,120,34,165,251,71,238,85,8,228,28,138,164,
+251,156,233,184,75,155,169,169,24,46,153,238,13,79,18,134,203,99,230,170,16,
+220,134,143,130,58,214,185,143,17,43,174,50,78,13,116,82,149,142,184,215,82,
+208,96,5,84,183,124,112,123,231,218,162,184,132,29,54,118,18,159,182,111,83,
+28,100,29,184,4,19,147,239,87,35,137,153,27,130,85,6,78,58,154,86,180,150,88,
+228,104,211,115,70,50,65,60,128,123,214,142,78,250,28,184,169,83,149,57,41,
+189,58,216,244,95,8,180,23,154,36,68,170,239,3,7,30,181,209,36,9,31,240,143,
+202,188,179,225,182,175,44,151,19,218,179,100,43,147,248,102,189,96,114,191,
+133,117,211,111,150,199,196,86,107,154,240,217,144,205,28,101,114,192,98,185,
+77,83,195,209,106,183,63,34,130,7,181,117,207,16,145,25,73,235,197,86,177,129,
+160,50,6,254,247,21,50,149,145,158,141,28,28,190,17,137,37,101,40,56,52,87,
+113,53,171,188,172,216,234,104,167,238,153,89,159,49,48,6,161,48,130,106,92,
+208,43,27,157,54,24,137,129,93,23,135,175,18,217,136,99,130,77,97,10,122,146,
+167,35,138,214,141,95,103,62,98,101,11,171,30,147,14,166,167,156,230,161,185,
+215,22,18,118,130,126,149,203,233,87,78,88,131,147,129,91,151,16,33,180,105,
+64,36,178,244,244,175,98,120,200,198,10,82,97,135,193,206,189,78,72,238,67,
+113,172,201,117,3,42,96,110,224,145,89,187,61,234,53,132,65,130,140,196,30,
+121,237,79,145,194,198,72,60,215,205,87,175,58,211,230,145,247,56,76,45,60,
+45,46,68,172,214,254,100,36,129,60,96,242,55,100,253,7,52,52,139,33,56,126,
+157,106,162,51,27,128,70,78,13,93,72,162,149,204,69,128,47,192,110,128,30,213,
+131,101,83,148,164,164,209,85,164,44,172,164,112,78,71,181,58,37,81,130,121,
+162,72,94,9,90,41,23,12,167,20,248,198,213,206,50,231,167,181,102,219,52,161,
+11,202,226,236,98,9,61,253,120,205,68,33,108,242,64,29,206,71,21,41,24,229,
+156,127,58,18,47,55,8,28,124,199,181,84,32,219,216,239,116,33,43,115,93,17,
+200,23,35,96,192,250,210,170,59,12,231,3,182,106,251,233,241,69,108,94,98,68,
+157,64,29,135,191,189,80,150,117,70,41,144,88,123,113,67,131,90,156,239,146,
+45,203,154,200,71,220,141,181,191,253,117,52,114,4,72,198,220,175,63,41,61,
+121,207,30,159,253,106,85,16,53,142,101,63,188,102,249,54,158,64,232,127,63,
+233,81,76,74,62,206,1,78,5,43,91,83,21,36,221,228,238,77,115,53,188,227,114,
+163,198,223,80,223,225,84,229,86,137,202,176,57,250,82,35,151,144,47,86,99,
+138,183,112,4,215,50,59,142,184,192,167,230,204,109,237,116,129,77,31,105,25,
+233,93,117,179,188,208,35,169,5,137,7,61,186,87,46,208,71,143,148,109,63,90,
+232,124,53,32,146,38,132,245,92,241,87,6,155,34,116,167,73,218,70,132,113,48,
+148,25,14,72,92,147,140,103,240,168,18,226,73,39,187,141,15,204,241,21,95,211,
+252,42,229,195,108,140,147,193,53,206,220,94,27,93,243,169,27,179,129,248,214,
+235,71,115,60,76,84,176,181,27,236,206,171,225,213,164,118,58,156,207,114,202,
+11,114,62,181,233,55,58,213,141,170,156,206,133,189,1,175,19,179,150,238,84,
+220,175,141,221,197,94,134,221,144,230,89,93,155,220,213,198,171,138,62,10,
+85,26,138,71,166,193,226,72,158,67,140,109,38,175,73,168,6,85,145,24,109,239,
+94,109,20,219,64,0,214,158,151,52,242,187,197,230,97,61,232,133,78,103,102,
+20,39,175,43,59,95,237,235,101,224,158,71,189,21,231,87,50,200,151,50,47,156,
+56,62,148,87,111,179,145,191,52,15,44,219,70,40,141,195,1,83,4,36,224,14,77,
+114,216,218,228,106,164,144,0,230,180,226,210,100,104,195,185,198,123,84,246,
+86,43,16,18,205,141,221,113,233,90,16,9,47,38,8,156,70,63,90,244,240,216,46,
+101,121,152,78,173,158,131,180,173,60,64,217,193,36,214,219,193,114,145,180,
+139,106,242,70,7,33,122,254,2,182,244,75,59,75,116,13,46,9,247,173,45,67,83,
+180,130,221,188,189,185,2,163,27,38,163,236,105,194,235,185,166,26,172,169,
+207,218,39,169,230,114,201,4,197,252,128,219,186,148,101,193,21,157,42,157,
+167,53,175,119,168,197,45,225,97,129,137,55,144,0,228,244,167,77,167,197,118,
+141,61,155,6,67,206,222,226,188,90,148,229,29,207,178,193,227,225,138,135,43,
+209,152,118,144,25,188,196,83,181,192,4,19,208,251,80,50,9,86,4,48,56,32,212,
+210,65,44,44,74,29,140,160,147,158,156,115,77,154,85,185,101,149,87,99,145,
+134,25,224,159,106,198,86,104,232,166,165,78,124,175,97,196,249,145,46,226,
+114,157,253,189,41,208,178,52,128,73,242,161,24,36,118,227,20,146,172,94,84,
+94,91,157,248,249,215,29,13,66,119,41,254,19,237,156,84,234,153,219,9,70,55,
+145,98,107,55,141,200,92,186,31,184,216,251,221,56,253,105,138,141,109,25,150,
+88,36,228,148,85,32,174,123,30,127,79,207,165,62,214,253,237,227,66,234,55,
+169,249,73,31,50,255,0,133,106,253,164,155,41,25,153,139,145,144,88,228,131,
+90,198,43,116,67,196,74,75,115,54,226,234,226,228,42,180,127,51,127,10,142,
+254,148,191,216,6,104,195,92,72,209,190,56,11,212,125,105,145,4,150,69,121,
+103,27,65,201,201,57,53,109,117,57,13,187,41,92,55,69,52,38,183,97,82,130,157,
+146,212,166,182,240,90,36,98,103,103,153,58,32,3,7,158,230,163,150,60,21,105,
+48,204,71,64,104,125,167,150,201,115,206,104,193,221,147,205,67,149,201,84,
+121,108,133,134,24,252,224,193,0,238,91,61,169,129,139,72,88,245,52,231,63,
+33,230,152,56,34,166,76,232,74,42,75,149,88,113,173,63,11,184,26,180,209,158,
+232,72,255,0,63,141,102,154,187,162,2,154,148,183,3,133,72,136,39,220,241,254,
+53,84,254,35,28,108,121,146,177,175,169,220,124,199,28,246,174,83,86,152,25,
+160,182,206,50,119,191,244,254,181,183,115,56,145,203,19,133,28,146,125,43,
+142,189,144,92,93,53,218,185,201,60,125,59,87,114,71,143,156,86,246,56,101,
+73,111,47,200,237,172,91,108,11,131,192,21,96,75,184,245,172,13,42,251,205,
+181,11,158,69,105,71,47,189,115,75,71,99,224,228,172,205,53,147,24,230,164,
+154,229,227,136,180,82,249,109,142,185,172,153,110,74,240,181,147,120,110,46,
+155,105,145,130,251,26,80,191,53,197,21,169,5,192,191,123,135,99,170,30,78,
+122,209,80,13,61,59,130,104,174,207,172,51,91,152,54,215,93,50,107,119,78,149,
+75,22,61,171,155,91,87,83,145,90,118,101,227,173,226,226,164,155,58,46,237,
+99,160,87,154,238,127,45,65,216,43,160,179,79,179,32,236,107,31,69,184,141,
+95,14,6,107,98,238,226,53,195,6,226,189,250,21,105,186,124,201,153,52,238,91,
+55,146,116,4,213,91,219,166,16,54,230,170,237,168,66,177,228,17,154,199,188,
+189,107,130,85,126,237,114,226,113,16,140,108,183,52,132,91,42,59,22,144,176,
+245,174,135,74,148,32,86,83,180,144,58,26,231,149,73,53,114,218,231,236,192,
+175,222,96,120,3,160,175,159,173,46,172,247,114,148,229,81,198,218,63,192,219,
+215,164,182,107,54,4,5,185,108,0,23,184,207,255,0,90,185,165,4,28,138,158,73,
+26,71,46,231,44,122,154,140,87,12,165,118,125,50,165,203,100,216,133,184,200,
+63,67,233,78,117,109,170,199,163,116,34,161,86,201,100,244,171,23,42,99,138,
+44,114,155,70,8,247,235,250,209,98,121,238,155,232,69,159,151,105,249,135,161,
+169,252,215,16,148,82,118,227,166,121,168,2,179,28,109,57,250,84,232,133,78,
+88,242,58,0,105,221,149,8,41,8,136,118,2,195,31,90,82,51,252,71,240,21,60,113,
+121,206,75,72,136,163,150,103,56,2,150,73,109,134,82,213,89,199,121,95,191,
+208,85,45,22,135,114,174,169,218,40,128,124,163,158,79,106,7,74,57,39,158,105,
+195,129,75,114,101,39,57,115,49,146,12,45,71,186,164,148,252,135,154,164,101,
+197,75,141,206,106,245,148,36,90,15,145,214,181,96,31,102,177,81,252,114,157,
+237,244,236,63,207,173,99,88,33,186,190,72,199,221,234,255,0,238,142,181,173,
+113,46,101,102,60,183,97,233,91,81,133,157,217,156,113,48,229,117,42,61,17,
+141,226,11,227,21,175,217,163,63,188,151,151,246,95,254,189,97,233,150,119,
+26,133,204,118,176,130,89,143,224,42,83,5,198,165,127,229,194,175,44,206,121,
+227,63,157,118,254,31,177,135,64,67,246,147,24,184,198,89,253,5,117,78,106,
+49,178,220,248,172,199,26,241,53,92,223,201,121,11,113,225,216,244,109,54,34,
+28,52,223,198,106,24,19,41,187,53,71,90,241,36,122,141,244,112,219,49,48,169,
+229,143,241,26,185,17,34,17,92,213,19,86,185,228,206,251,177,92,2,196,84,59,
+51,154,153,19,187,119,169,210,2,92,113,81,123,34,111,98,37,182,93,163,138,43,
+75,203,81,198,71,231,69,77,200,230,56,159,179,47,165,57,96,2,167,165,197,122,
+71,166,53,65,67,144,112,105,239,44,142,187,75,156,81,138,49,78,237,104,152,
+20,39,105,35,108,228,145,68,119,139,252,85,110,88,131,161,21,143,60,70,54,52,
+183,220,151,117,177,189,105,44,82,238,1,194,200,112,23,61,233,30,51,19,146,
+127,26,205,210,209,132,194,224,228,172,103,32,127,121,187,10,233,227,68,189,
+179,243,29,145,101,94,28,103,245,174,90,202,239,67,233,178,134,221,47,121,91,
+179,51,51,145,73,82,24,54,177,27,198,7,112,41,226,5,63,242,208,254,85,203,202,
+207,111,158,230,107,182,203,128,123,30,42,220,50,16,118,224,50,183,98,50,42,
+71,211,225,144,130,100,124,15,64,5,78,145,199,8,249,23,159,83,201,171,104,194,
+149,57,169,59,236,70,119,46,89,219,131,234,113,81,60,234,169,184,16,125,5,67,
+118,249,148,228,228,14,42,139,190,79,21,106,23,34,182,59,217,183,24,196,178,
+93,139,239,39,38,174,67,42,184,0,112,125,43,32,72,195,189,57,110,10,156,255,
+0,42,29,54,115,81,198,168,202,236,218,197,53,136,65,201,2,168,45,251,99,25,
+31,141,65,44,237,33,203,28,212,168,59,234,118,84,199,194,215,137,106,226,236,
+17,181,15,212,213,25,36,168,218,78,106,50,119,16,7,122,213,64,242,107,98,101,
+55,118,107,105,114,188,81,72,202,112,100,59,115,220,138,186,135,215,243,170,
+80,174,220,47,69,81,138,176,102,142,20,243,37,39,104,35,56,235,90,197,28,181,
+42,123,186,189,16,251,143,16,217,104,246,141,14,145,110,62,210,227,247,147,
+55,99,92,213,205,245,221,226,153,39,149,152,158,167,61,107,86,123,123,123,178,
+178,8,62,207,2,243,201,203,61,101,222,92,36,164,164,74,22,52,224,1,85,77,69,
+108,181,62,125,90,228,54,205,254,145,31,212,87,125,110,128,219,167,210,188,
+254,220,226,100,39,179,10,244,27,70,15,110,132,122,86,120,158,132,85,37,17,
+229,128,21,36,210,139,84,199,89,15,65,74,100,88,35,50,55,94,194,179,203,180,
+140,210,57,249,143,233,92,169,95,86,115,238,83,150,105,140,172,76,135,57,162,
+162,149,255,0,122,223,90,43,162,195,177,8,162,150,138,234,61,27,133,45,2,156,
+6,104,25,98,202,194,123,249,196,48,33,98,125,186,87,82,62,28,220,79,98,30,68,
+5,136,234,43,127,225,220,86,162,16,66,101,251,146,59,215,163,18,2,240,185,30,
+149,171,130,75,83,62,123,179,230,13,83,78,212,252,63,51,192,198,68,136,182,
+120,232,106,138,235,23,81,30,118,48,247,92,127,42,250,31,196,222,31,181,213,
+44,100,243,34,7,143,74,240,29,87,69,123,93,82,75,88,148,190,15,203,88,36,155,
+179,70,240,196,85,167,240,73,164,91,176,189,93,65,138,168,219,38,50,83,63,202,
+175,8,202,142,69,118,222,6,240,52,118,139,21,228,200,26,82,57,39,181,116,90,
+255,0,128,237,181,21,51,88,21,182,185,199,221,254,7,62,254,159,133,69,74,29,
+98,123,88,60,217,43,70,183,222,121,70,113,77,39,154,181,169,233,247,122,85,
+211,91,222,64,209,74,59,30,132,122,131,220,85,28,241,205,114,180,123,176,173,
+25,171,197,148,239,163,227,120,227,214,179,207,90,212,188,35,203,193,234,107,
+45,186,214,144,189,143,47,24,146,169,116,52,154,74,67,65,32,86,137,28,109,136,
+78,41,11,10,99,49,52,220,213,88,201,204,86,106,72,219,18,167,212,80,65,97,128,
+62,148,67,111,35,204,14,211,181,72,44,125,5,59,18,228,111,46,0,201,170,151,
+26,140,48,228,21,87,199,64,121,230,179,174,245,54,147,41,22,85,58,103,185,172,
+242,249,234,114,107,69,14,231,6,34,191,63,187,29,139,239,170,52,206,124,204,
+224,213,103,93,185,101,232,106,185,32,212,145,200,0,218,221,42,185,82,216,227,
+219,96,70,25,226,187,205,14,79,54,209,73,60,1,92,3,161,141,183,47,221,174,203,
+73,184,75,93,8,57,63,59,14,5,101,94,60,203,66,106,124,37,235,171,159,58,98,
+1,249,87,129,76,47,242,226,179,132,252,231,214,172,52,187,98,46,79,65,92,252,
+166,54,51,231,151,247,207,207,122,43,2,227,83,38,225,241,235,69,116,251,22,
+87,35,58,154,40,28,210,213,157,128,43,83,68,130,25,181,40,82,111,187,158,149,
+152,43,83,70,231,83,128,99,57,106,168,252,72,153,187,35,220,244,155,11,107,
+59,40,252,152,208,18,185,36,10,177,117,57,139,1,70,77,71,165,41,91,8,193,24,
+226,159,120,66,198,91,112,171,168,236,74,216,165,123,59,61,163,168,224,145,
+92,101,167,130,154,231,84,123,215,114,119,31,194,186,88,238,62,213,113,229,
+51,119,173,248,32,88,80,5,172,225,27,251,204,187,43,106,50,206,209,109,109,
+214,48,58,10,179,69,21,169,38,118,173,163,88,235,86,134,222,250,21,145,63,132,
+255,0,18,159,80,123,87,146,248,151,193,55,218,19,180,208,111,186,178,61,36,
+3,230,79,247,128,254,125,43,218,143,78,180,132,6,83,158,245,149,90,74,126,167,
+86,27,23,82,131,247,94,157,143,153,174,65,40,14,58,117,172,231,28,215,188,235,
+127,14,244,189,80,60,182,185,178,184,110,114,131,40,79,186,255,0,134,43,130,
+212,126,20,107,176,185,54,175,107,114,189,182,190,211,249,31,241,174,117,78,
+80,209,163,208,169,141,167,87,93,153,231,164,102,152,202,122,86,182,179,161,
+106,58,4,233,14,163,111,228,187,141,202,55,171,100,126,6,179,48,198,171,67,
+39,85,119,33,34,128,191,151,189,74,87,3,181,58,120,33,54,72,237,39,239,11,31,
+144,122,83,49,158,34,43,96,88,72,80,216,224,244,173,69,149,45,52,75,153,8,27,
+157,118,47,212,241,89,22,207,42,204,14,11,6,224,175,173,91,213,242,241,199,
+12,92,197,31,39,220,208,183,57,103,86,83,71,62,115,77,53,96,167,181,38,192,
+123,86,230,5,108,210,110,230,172,152,133,70,208,30,213,64,9,41,28,30,69,92,
+91,185,12,104,163,238,47,106,206,42,202,121,205,73,20,166,54,207,111,74,78,
+55,21,141,200,174,150,80,48,112,106,206,167,63,149,166,146,15,36,86,48,1,128,
+146,35,131,82,221,78,211,90,133,97,210,178,81,87,34,200,195,57,201,226,138,
+156,168,207,74,43,163,152,179,181,136,102,158,84,3,69,21,206,139,128,211,233,
+91,30,28,109,186,146,62,1,42,120,162,138,210,31,18,21,77,143,112,179,152,141,
+61,27,28,226,177,53,77,70,111,153,70,0,233,69,20,85,220,112,23,71,211,210,89,
+124,231,145,139,30,107,168,94,128,81,69,92,62,18,230,58,144,154,40,161,146,
+128,28,230,171,220,239,243,35,218,229,70,121,3,189,20,82,150,195,142,229,158,
+212,140,120,205,20,81,63,133,146,183,60,79,227,0,255,0,138,134,204,103,143,
+179,255,0,90,243,179,194,230,138,43,145,238,105,208,111,94,42,72,109,214,73,
+70,79,83,138,40,166,246,51,123,157,53,230,129,5,174,151,231,71,35,121,152,201,
+108,117,246,174,96,74,197,182,158,69,20,82,134,193,6,65,52,107,156,129,138,
+171,69,21,188,118,9,139,142,105,202,57,162,138,162,5,101,82,57,81,82,88,197,
+27,93,0,200,8,244,162,138,153,252,44,79,98,214,170,86,29,190,90,42,231,210,
+144,5,125,60,177,81,156,81,69,103,31,133,25,173,142,125,152,6,60,126,180,81,
+69,110,106,127,255,217};
+
+static void cb_Load(Fl_Button*, void*) {
+  static char *name=0;
+  name = fl_file_chooser("Choose in image", "", name);
+  char s[256];
+  sprintf(s, "%s%s", name[0]=='/'? "":"../", name);
+  static Fl_Shared_Image* im;
+  if (im && im!=(Fl_Shared_Image*)&nosuch_bitmap) im->remove();
+  im = Fl_Shared_Image::guess(s)->get(s);
+  image_box->image(im);
+  int w, h;
+  im->measure(w, h);
+  image_window->size(w, h);
+  image_window->show();
+}
+
+Fl_Window* browser_window;
+
+Fl_Browser* browser;
+
+Fl_Window* image_window;
+
+Fl_Box* image_box;
+
+int main (int argc, char **argv) {
+
+  Fl_Window* w;
+  Fl_Shared_Image::set_root_directory("images");
+   {Fl_Window* o = window = new Fl_Window(660, 405, "The background is a BMP file");
+    o->image(Fl_BMP_Image::get("ulon.bmp"));
+    o->box(FL_NO_BOX);
+    o->align(32);
+     {Fl_Box* o = new Fl_Box(23, 158, 352, 197, "tiled GIF image loaded from disk");
+      o->image(Fl_GIF_Image::get("coucou.gif"));
+      o->label_font(fl_fonts+1);
+      o->label_type(FL_SHADOW_LABEL);
+      o->label_color((Fl_Color)3);
+      o->align(32);
+    }
+     {Fl_Box* o = new Fl_Box(100, 23, 170, 102, "PNG image with datas included in code");
+      o->image(Fl_PNG_Image::get("coucou.png", datas_coucou));
+      o->label_font(fl_fonts+1);
+      o->label_type(FL_SHADOW_LABEL);
+      o->label_color((Fl_Color)3);
+      o->align(32);
+    }
+     {Fl_Box* o = new Fl_Box(408, 16, 134, 109, "XPM image loaded from disk");
+      o->image(Fl_XPM_Image::get("../porsche.xpm"));
+      o->label_font(fl_fonts+1);
+      o->label_type(FL_SHADOW_LABEL);
+      o->label_color((Fl_Color)3);
+      o->deactivate();
+    }
+     {Fl_Value_Slider* o = slider = new Fl_Value_Slider(40, 368, 288, 22, "Size of the image cache in kilo pixels (0 for unlimited)");
+      o->label_font(fl_fonts+1);
+      o->label_type(FL_SHADOW_LABEL);
+      o->label_color((Fl_Color)3);
+      o->maximum(100);
+      o->step(1);
+      o->callback((Fl_Callback*)cb_slider);
+    }
+     {Fl_Box* o = new Fl_Box(395, 195, 230, 150, "JPEG image stored in the executable");
+      o->image(Fl_JPEG_Image::get("testimg.jpg", datas_testimg));
+      o->label_font(fl_fonts+1);
+      o->label_type(FL_SHADOW_LABEL);
+      o->label_color((Fl_Color)3);
+      o->align(32);
+    }
+     {Fl_Button* o = new Fl_Button(510, 15, 135, 30, "Load an image ...");
+      o->callback((Fl_Callback*)cb_Load);
+    }
+    o->end();
+    o->resizable(o);
+  }
+   {Fl_Window* o = browser_window = new Fl_Window(255, 150, "Image in the cache");
+     {Fl_Browser* o = browser = new Fl_Browser(0, 0, 255, 115); o->begin();
+      o->end();
+    }
+     {Fl_Box* o = new Fl_Box(0, 115, 165, 20, "Italic : out of the cache");
+      o->align(133|FL_ALIGN_INSIDE);
+    }
+     {Fl_Box* o = new Fl_Box(0, 130, 205, 20, "Grey : just loaded or unloaded");
+      o->align(FL_ALIGN_TOP | FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
+    }
+    o->end();
+  }
+   {Fl_Window* o = image_window = new Fl_Window(115, 100);
+    w = o;
+     {Fl_Box* o = image_box = new Fl_Box(0, 0, 115, 100);
+      o->align(FL_ALIGN_TOP | FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
+    }
+    o->end();
+  }
+  window->show();
+  w->show(argc, argv);
+  return  Fl::run();
+}

Added: branches/branch-3.0-2011/test2/image_file.fl
===================================================================
--- branches/branch-3.0-2011/test2/image_file.fl	                        (rev 0)
+++ branches/branch-3.0-2011/test2/image_file.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,84 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.0000 
+images_dir images 
+header_name {.h} 
+code_name {.cxx} 
+gridx 5 
+gridy 5 
+snap 3
+decl {\#include <stdio.h>} {} 
+
+decl {\#include <fltk/fl_file_chooser.h>} {} 
+
+Function {} {open private
+} {
+  code {Fl_Shared_Image::set_root_directory("images");} {}
+  Fl_Window window {
+    label {The background is a BMP file} open
+    xywh {179 404 660 405} align 536870944 resizable box NO_BOX image not_inlined {ulon.bmp} visible
+  } {
+    Fl_Box {} {
+      label {tiled GIF image loaded from disk}
+      xywh {23 158 352 197} align 32 labelfont 1 labeltype SHADOW_LABEL image not_inlined {coucou.gif} labelcolor 3
+    }
+    Fl_Box {} {
+      label {PNG image with datas included in code}
+      xywh {100 23 170 102} align 32 labelfont 1 labeltype SHADOW_LABEL image {coucou.png} labelcolor 3
+    }
+    Fl_Box {} {
+      label {XPM image loaded from disk}
+      xywh {408 16 134 109} deactivate labelfont 1 labeltype SHADOW_LABEL image not_inlined {../porsche.xpm} labelcolor 3
+    }
+    Fl_Value_Slider slider {
+      label {Size of the image cache in kilo pixels (0 for unlimited)}
+      callback {Fl_Shared_Image::set_cache_size((int)o->value()*1024);}
+      xywh {40 368 288 22} type {Horz Knob} labelfont 1 labeltype SHADOW_LABEL labelcolor 3 maximum 100 step 1
+    }
+    Fl_Box {} {
+      label {JPEG image stored in the executable}
+      xywh {395 195 230 150} align 32 labelfont 1 labeltype SHADOW_LABEL image {testimg.jpg} labelcolor 3
+    }
+    Fl_Button {} {
+      label {Load an image ...}
+      callback {static char *name=0;
+name = fl_file_chooser("Choose in image", "", name);
+char s[256];
+sprintf(s, "%s%s", name[0]=='/'? "":"../", name);
+static Fl_Shared_Image* im;
+if (im && im!=(Fl_Shared_Image*)&nosuch_bitmap) im->remove();
+im = Fl_Shared_Image::guess(s)->get(s);
+image_box->image(im);
+int w, h;
+im->measure(w, h);
+image_window->size(w, h);
+image_window->show();}
+      xywh {510 15 135 30}
+      code0 {\#include <fltk/Fl_Bitmap.h>}
+    }
+  }
+  Fl_Window browser_window {
+    label {Image in the cache} open
+    xywh {667 762 255 150} visible
+  } {
+    Fl_Browser browser {
+      xywh {0 0 255 115}
+    }
+    Fl_Box {} {
+      label {Italic : out of the cache}
+      xywh {0 115 165 20} align 149
+    }
+    Fl_Box {} {
+      label {Grey : just loaded or unloaded}
+      xywh {0 130 205 20} align 21
+    }
+  }
+  Fl_Window image_window {open
+    xywh {483 617 115 100} visible
+  } {
+    Fl_Box image_box {
+      xywh {0 0 115 100} align 21
+    }
+  }
+  code {window->show();} {selected
+  }
+} 

Added: branches/branch-3.0-2011/test2/image_file.h
===================================================================
--- branches/branch-3.0-2011/test2/image_file.h	                        (rev 0)
+++ branches/branch-3.0-2011/test2/image_file.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,18 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0001
+
+#ifndef image_file_h
+#define image_file_h
+#include <fltk/Fl.h>
+#include <fltk/Fl_Window.h>
+extern Fl_Window* window;
+#include <fltk/Fl_Box.h>
+#include <fltk/Fl_Value_Slider.h>
+extern Fl_Value_Slider* slider;
+#include <fltk/Fl_Button.h>
+#include <fltk/Fl_Bitmap.h>
+extern Fl_Window* browser_window;
+#include <fltk/Fl_Browser.h>
+extern Fl_Browser* browser;
+extern Fl_Window* image_window;
+extern Fl_Box* image_box;
+#endif

Added: branches/branch-3.0-2011/test2/image_transform.cxx
===================================================================
--- branches/branch-3.0-2011/test2/image_transform.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/image_transform.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,134 @@
+// Test of drawimage() through a transform. Currently only the
+// XRender implementation works.
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/ValueSlider.h>
+#include <fltk/draw.h>
+#include <fltk/RadioButton.h>
+#include <fltk/rgbImage.h>
+
+using namespace fltk;
+
+#define SLIDERS 9
+
+float xy[SLIDERS] = {
+  -64, -64, 0, 0, 1, 1, 0, 0, 0};
+const char* name[SLIDERS] = {
+  "X", "Y", "tx", "ty", "sx", "sy", "rotate", "fromxy", "toxy"};
+
+#define SIZE 129
+unsigned array[SIZE*SIZE];
+
+bool image = false;
+bool alpha = false;
+
+void fillimage() {
+  for (int y=0; y<SIZE; y++) for (int x=0; x<SIZE; x++) {
+    uchar r = x*255/SIZE;
+    uchar g = y*255/SIZE;
+    uchar b = 255-g;
+    uchar a = r > g ? r : g; if (b > a) a = b;
+    if (x%16==0 || y%16==0) {r = 255-r; g = 255-g; b = 255-b; a = 0xff;}
+    array[y*SIZE+x] = (a<<24)|(r<<16)|(g<<8)|b;
+  }
+}
+
+rgbImage* theimage;
+
+class Drawing : public Widget {
+  void draw() {
+    push_clip(0, 0, w(),h());
+    setcolor(GRAY20);
+    fillrect(0,0,w(),h());
+    setcolor(GRAY10);
+    fillrect(0,0,w()/2,h()/2);
+    fillrect(w()/2,h()/2,(w()+1)/2,(h()+1)/2);
+    push_matrix();
+    translate(w()/2+xy[2], h()/2+xy[3]);
+    scale(xy[4],xy[5]);
+    rotate(xy[6]);
+    if (::image) {
+      Rectangle r(xy[7],xy[7],SIZE-xy[7],SIZE-xy[7]);
+      Rectangle r1(xy[8]+xy[0],xy[8]+xy[1],SIZE-xy[8],SIZE-xy[8]);
+      ::theimage->draw(r,r1);
+    } else {
+      drawimage((uchar*)array,
+		alpha ? ARGB32 : RGB32,
+		fltk::Rectangle((int)xy[0], (int)xy[1], SIZE, SIZE));
+    }
+    setcolor(GRAY80);
+    addvertex(xy[0],xy[1]);
+    addvertex(xy[0],xy[1]+SIZE);
+    addvertex(xy[0]+SIZE,xy[1]+SIZE);
+    addvertex(xy[0]+SIZE,xy[1]);
+    closepath();
+    strokepath();
+    pop_matrix();
+    pop_clip();
+  }
+public:
+  Drawing(int X,int Y,int W,int H) : Widget(X,Y,W,H) {
+    fillimage();
+    ::theimage = new rgbImage((uchar*)array, ARGB32, SIZE, SIZE);
+  }
+};
+
+Drawing *d;
+
+void slider_cb(Widget* o, void* v) {
+  Slider* s = (Slider*)o;
+  xy[long(v)] = s->value();
+  d->redraw();
+}
+
+void noalpha_cb(Widget* o, void*) {
+  alpha = image = false;
+  d->redraw();
+}
+
+void alpha_cb(Widget* o, void*) {
+  
+  alpha = reinterpret_cast<Button*>(o)->value(); image = false;
+  d->redraw();
+}
+
+void image_cb(Widget* o, void*) {
+  image = true;
+  d->redraw();
+}
+
+int main(int argc, char** argv) {
+  Window window(300,555+50,"drawimage & transformations test");
+  window.begin();
+  Drawing drawing(10,10,280,280);
+  d = &drawing;
+
+  int y = 300;
+  for (int n = 0; n<SLIDERS; n++) {
+    ValueSlider* s = new ValueSlider(50,y,240,25,name[n]); y += 25;
+    s->type(Slider::TICK_ABOVE);
+    s->step(1);
+    if (n < 4) s->range(-200,200);
+    else if (n < 6) {s->range(-1,3); s->step(.01);}
+    else if (n < 7) s->range(-180, 180);
+    else {s->range(0,SIZE); s->tooltip("top-left corner of rectangle passed to Image::draw()");}
+    s->value(xy[n]);
+    s->align(ALIGN_LEFT);
+    s->callback(slider_cb, (void*)n);
+  }
+  RadioButton* b = new RadioButton(50,y,240,25,"RGB32 fltk::drawimage()"); y+= 25;
+  b->callback(noalpha_cb); b->set();
+  b = new RadioButton(50,y,240,25,"ARGB32 fltk::drawimage()"); y+= 25;
+  b->callback(alpha_cb);
+  b = new RadioButton(50,y,240,25,"ARGB32 fltk::Image object"); y+= 25;
+  b->callback(image_cb);
+
+  window.end();
+  window.show(argc,argv);
+  return run();
+}
+
+//
+// End of "$Id: image_transform.cxx 1464 2006-12-28 21:37:21Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/images/bg.jpeg
===================================================================
(Binary files differ)


Property changes on: branches/branch-3.0-2011/test2/images/bg.jpeg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/branch-3.0-2011/test2/images/bg2.jpeg
===================================================================
(Binary files differ)


Property changes on: branches/branch-3.0-2011/test2/images/bg2.jpeg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/branch-3.0-2011/test2/images/coucou.gif
===================================================================
(Binary files differ)


Property changes on: branches/branch-3.0-2011/test2/images/coucou.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/branch-3.0-2011/test2/images/coucou.png
===================================================================
(Binary files differ)


Property changes on: branches/branch-3.0-2011/test2/images/coucou.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/branch-3.0-2011/test2/images/coucou.xpm
===================================================================
--- branches/branch-3.0-2011/test2/images/coucou.xpm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/images/coucou.xpm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,81 @@
+/* XPM */
+static char *essai[] = {
+/* width height num_colors chars_per_pixel */
+"    48    48       26            1",
+/* colors */
+". c #ffcc00",
+"# c #ff9900",
+"a c #ff6600",
+"b c #ff3300",
+"c c #ff0000",
+"d c #cccc00",
+"e c #cc9966",
+"f c #cc9933",
+"g c #cc9900",
+"h c #cc6666",
+"i c #cc6633",
+"j c #cc6600",
+"k c #cc3333",
+"l c #cc3300",
+"m c #cc0000",
+"n c #996666",
+"o c #996633",
+"p c #996600",
+"q c #993366",
+"r c #993333",
+"s c #993300",
+"t c #990000",
+"u c #663300",
+"v c #660000",
+"w c #330000",
+"x c #000000",
+/* pixels */
+"ihhihhihhihhihhihhihhihhihhihhihhihhihhihhihhihi",
+"iohhiehiehiehiehiehiehiehiehiehiehiehiehiehiehho",
+"hoihnihhihhihhohhinhihnihhohhihhihhihhihhihhioor",
+"ihohihfnhfheiehiehieihfhiehiehfheiehfheiehfhhiro",
+"oiohstmllmtttjlsvvvtljdgjtvvttttvvwwwvllvtjhorro",
+"nhiitvttmmmmlbjvwvvla..asvwvtttwwwwxxwbbttajoror",
+"iohotvvvtmlbaaaltll#..#lvwvvttvwxxwxwwmblmaaroro",
+"inihtvwwwtmla##aa#a###atvwttvvwwxxwxxxvmbcaarkor",
+"ihoimvwwwwvtl##aaalbbllvvvtvvwxwxwxwxwwmbbaaoror",
+"ohinmvwxxxwvsaalltttlmvvvtvwwwwwxxxwxwwtmb#aoror",
+"iniitvwwxxwwmaalmtvvtttvvvwwxxwwxwxwwwvttl##riro",
+"ohohvvwwwwvvla#blmttttttvwxxwxwwxxxxwvvvwtaaoror",
+"inihvtvtvvtmb###aajbltvvwwxxxwxxxwxwwvvwwvaaroro",
+"ihoittmmllla#..#aaa#amvwwxxxxwwxxxwwvvwwwvjaokor",
+"oiholclaaa##...alla##altwwxxxwxxxxwwvwwxxvaarror",
+"inihlba#..#...#lmttj##ajvwxxwwwxwwwvvwxxwvjaoror",
+"ihoij#####.##lltvvtl#..#lvvvvvvvsslltvvvvlaaroko",
+"iohhg##ala.#amtttvtl#..#ajllllljbaaajlllla##oror",
+"hoio#almma##bmttlmla###..#jbaa###llbbjbjba##roro",
+"ihohgammmj##bccmlaa###a..alutsa#alvtststsla#iror",
+"ohinlbcba##acbcba##aaaa#.jvwwvl#altvvvvwwtjaroro",
+"iohittla##almbcbbabababa#jvxxwmaaastvwvwwvaarkor",
+"hiohvtl##ammbbmmcbbbllmlalvxxvmba#blmtvwwvajoror",
+"ninitmj#almmbbcmlbabmttmajvxxwtmb##abltwwvaaroro",
+"iihola#almmlabbbbaamttsbalvxxvtmb##blbbvwtaarokr",
+"ohohg#abmmmbbcbbbllttmb##jvxxwtla#lttbbtvtaaroro",
+"iningbltmbcbbbcbtvwvmbbaajvwxwta#bmvvcactmaaoror",
+"hiiijltmlbbcccmctwwvmcmmaatwxwlaabvvvl#bcb#aroro",
+"ohnigabbbbbcbccmtwvtlbmlb#ltvtl#amvwvb#bmmb#rirr",
+"inihj##bcbbmcbmttvvtmbbba##aalb##btvtlabttcaroro",
+"iinima#aabbmcmtvvttvtttlljaa#.####bbcaaltvmcoror",
+"niohla#..aabltvvvvvvwwwwvvmlballja#bmbbmvvlcokro",
+"ihohja##..#amtvvvvwxwxxxwvtmmcmttb#lmmcmvvalroro",
+"iohilmba#.##ablmtwwxxxxxwtcmttmttc#ablbbmmaboror",
+"hoinmba##ajbj#alswxxxxxwvmmvvvmbcmlaa#a#aa#aorir",
+"hohitbaaaltvtlabvwxxxxxvtmtwwvtblvvtbaaaaaa#orro",
+"iinitcbaamwwwsjbsvwxxwvtctvxxwsbmwxvlbmmlmtboror",
+"ininmbbaalwwwtjamtvvwvtctwwxxxvlbvwvmmvvmmtmroro",
+"ihoilabbbtvvtlabmtttmmctvwxxxxvmbtwvcmvwtcbmorko",
+"inihjammbmtmmbblvvvtmmtwxxxxxxxtblvwmmvxwmacoror",
+"ihohjbsmbblcmmcmvxwvvvwwxwwwxwwvlbvwtmvwwtaaroro",
+"iniigammbablmmmltvvvtvvvvvvvvvvtbatwtcmvvtbairor",
+"iohn.##a#.#aabaaajajaaalaaaaaaaa##mttmcbmbbbroro",
+"niiohd####.#aaaaaabjalaalajajjaja##mtvmcbmcarkor",
+"iniqrrrrrrrrrrrrorrrrrrrrsrrrrrrrrrrorrrrrosroro",
+"hoiprprsrprprprsrsosrprsrrsrsrsrsosrsrsosrrsrsor",
+"iorrrrrorrrrrrrorsrrrsrosorsorprrsrosorsrprorrso",
+"irsrprsrsosrprsrrsosorsrrsrrsrrsorsrrsorrrsrprrr"
+};

Added: branches/branch-3.0-2011/test2/images/testimg.jpg
===================================================================
(Binary files differ)


Property changes on: branches/branch-3.0-2011/test2/images/testimg.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/branch-3.0-2011/test2/images/ulon.bmp
===================================================================
(Binary files differ)


Property changes on: branches/branch-3.0-2011/test2/images/ulon.bmp
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/branch-3.0-2011/test2/inactive.cxx
===================================================================
--- branches/branch-3.0-2011/test2/inactive.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/inactive.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,114 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0002
+
+#include "inactive.h"
+
+fltk::Group* the_group;
+
+static void cb_active(fltk::Button*, void*) {
+  the_group->activate();
+}
+
+static void cb_inactive(fltk::Button*, void*) {
+  the_group->deactivate();
+}
+
+#include <fltk/run.h>
+
+int main (int argc, char **argv) {
+
+  fltk::Window* w;
+   {fltk::Window* o = new fltk::Window(395, 274);
+    w = o;
+    o->begin();
+     {fltk::Group* o = the_group = new fltk::Group(5, 6, 384, 233, "activate()/deactivate() called on this Fl_Group");
+      o->box(fltk::ENGRAVED_BOX);
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_INSIDE);
+      o->begin();
+      new fltk::Button(25, 27, 105, 21, "button");
+       {fltk::Group* o = new fltk::Group(25, 74, 105, 102, "Child group");
+        o->begin();
+         {fltk::CheckButton* o = new fltk::CheckButton(0, 0, 105, 25, "red");
+          o->type(fltk::CheckButton::RADIO);
+          o->selection_color((fltk::Color)1);
+          o->selection_textcolor((fltk::Color)1);
+          o->labelcolor((fltk::Color)1);
+          o->highlight_textcolor((fltk::Color)1);
+        }
+         {fltk::CheckButton* o = new fltk::CheckButton(0, 25, 105, 25, "green");
+          o->type(fltk::CheckButton::RADIO);
+          o->selection_color((fltk::Color)2);
+          o->selection_textcolor((fltk::Color)2);
+          o->labelcolor((fltk::Color)2);
+          o->highlight_textcolor((fltk::Color)2);
+        }
+         {fltk::CheckButton* o = new fltk::CheckButton(0, 50, 105, 25, "blue");
+          o->type(fltk::CheckButton::RADIO);
+          o->selection_color((fltk::Color)4);
+          o->selection_textcolor((fltk::Color)4);
+          o->labelcolor((fltk::Color)4);
+          o->highlight_textcolor((fltk::Color)4);
+        }
+         {fltk::CheckButton* o = new fltk::CheckButton(0, 75, 105, 25, "white");
+          o->type(fltk::CheckButton::RADIO);
+          o->selection_color((fltk::Color)7);
+          o->selection_textcolor((fltk::Color)55);
+          o->labelcolor((fltk::Color)7);
+          o->highlight_textcolor((fltk::Color)55);
+        }
+        o->end();
+      }
+       {fltk::Slider* o = new fltk::Slider(140, 25, 24, 146, "Fl_Slider");
+        o->set_vertical();
+        o->value(0.5);
+      }
+       {fltk::Input* o = new fltk::Input(170, 27, 195, 21);
+        o->static_value("Fl_Input");
+      }
+       {fltk::InputBrowser* o = new fltk::InputBrowser(255, 59, 110, 21, "input browser");
+        o->begin();
+         {fltk::Item* o = new fltk::Item("Moe");
+          o->set_vertical();
+        }
+         {fltk::Item* o = new fltk::Item("Larry");
+          o->set_vertical();
+        }
+         {fltk::Item* o = new fltk::Item("Curly");
+          o->set_vertical();
+        }
+        o->end();
+        o->text("Shemp");
+      }
+       {fltk::Widget* o = new fltk::Widget(215, 134, 145, 86, "Fl_Box");
+        o->box(fltk::ENGRAVED_BOX);
+        o->labelfont(fltk::HELVETICA_BOLD_ITALIC);
+        o->labeltype(fltk::SHADOW_LABEL);
+        o->labelsize(38);
+      }
+       {fltk::ValueInput* o = new fltk::ValueInput(230, 91, 135, 32, "value:");
+        o->textfont(fltk::COURIER_BOLD);
+        o->textcolor((fltk::Color)4);
+        o->textsize(24);
+        o->maximum(10000);
+        o->step(1);
+        o->tooltip("This Fl_Value_Output widget has a tooltip.");
+      }
+       {fltk::Scrollbar* o = new fltk::Scrollbar(15, 191, 180, 19, "scrollbar");
+        o->maximum(100);
+      }
+      o->end();
+      fltk::Group::current()->resizable(o);
+    }
+     {fltk::Button* o = new fltk::Button(5, 244, 190, 25, "active");
+      o->type(fltk::Button::RADIO);
+      o->set();
+      o->callback((fltk::Callback*)cb_active);
+    }
+     {fltk::Button* o = new fltk::Button(205, 244, 184, 25, "inactive");
+      o->type(fltk::Button::RADIO);
+      o->callback((fltk::Callback*)cb_inactive);
+    }
+    o->end();
+  }
+  w->show(argc, argv);
+  return  fltk::run();
+}

Added: branches/branch-3.0-2011/test2/inactive.h
===================================================================
--- branches/branch-3.0-2011/test2/inactive.h	                        (rev 0)
+++ branches/branch-3.0-2011/test2/inactive.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,17 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0002
+
+#ifndef inactive_h
+#define inactive_h
+#include <fltk/Window.h>
+#include <fltk/Group.h>
+extern fltk::Group* the_group;
+#include <fltk/Button.h>
+#include <fltk/CheckButton.h>
+#include <fltk/Slider.h>
+#include <fltk/Input.h>
+#include <fltk/InputBrowser.h>
+#include <fltk/Item.h>
+#include <fltk/Widget.h>
+#include <fltk/ValueInput.h>
+#include <fltk/Scrollbar.h>
+#endif

Added: branches/branch-3.0-2011/test2/input.cxx
===================================================================
--- branches/branch-3.0-2011/test2/input.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/input.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,165 @@
+//
+// "$Id: input.cxx 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Input field test program 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".
+//
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Input.h>
+#include <fltk/FloatInput.h>
+#include <fltk/IntInput.h>
+#include <fltk/SecretInput.h>
+#include <fltk/WordwrapInput.h>
+#include <fltk/TextEditor.h>
+#include <fltk/Button.h>
+#include <fltk/ToggleButton.h>
+#include <fltk/show_colormap.h>
+#include <stdio.h>
+using namespace fltk;
+
+void cb(Widget *ob) {
+  printf("Callback for %s '%s'\n",ob->label(),((Input*)ob)->text());
+}
+
+void editor_cb(Widget *ob) {
+  printf("Callback for %s '%s'\n",ob->label(),((TextEditor*)ob)->text());
+}
+
+int when = 0;
+Input *input[5];
+TextEditor* editor;
+
+void toggle_cb(Widget *o, long v) {
+  if (((ToggleButton*)o)->value()) when |= v; else when &= ~v;
+  for (int i=0; i<5; i++) input[i]->when(when);
+  editor->when(when);
+}
+
+void test(Input *i) {
+  if (i->changed()) {
+    i->clear_changed();
+    printf("%s '%s'\n",i->label(),i->text());
+  }
+}
+
+void button_cb(Widget *,void *) {
+  for (int i=0; i<5; i++) test(input[i]);
+  if (editor->changed()) {
+    editor->clear_changed();
+    printf("%s '%s'\n",editor->label(),editor->text());
+  }
+}
+
+void color_cb(Widget* button, void* v) {
+  Style& s = *Input::default_style;
+  Color c;
+  
+  switch ((long)v) {
+    case 0: c = s.color_; break;
+    case 1: c = s.selection_color_; break;
+    default: c = s.textcolor_; break;
+  }
+  c = show_colormap(c);
+  switch ((long)v) {
+    case 0: s.color_ = c; break;
+    case 1: s.selection_color_ = c; break;
+    default: s.textcolor_ = c; break;
+  }
+  //s.selection_textcolor = contrast(s.textcolor, s.selection_color);
+  button->color(c);
+  button->labelcolor(contrast(BLACK,(Color)c));
+  fltk::redraw();
+}
+
+int main(int argc, char **argv) {
+  Window *window = new Window(400,350+105);
+  //window->clear_double_buffer();
+
+  window->begin();
+  int y = 10;
+  input[0] = new Input(70,y,300,23,"Normal"); y += 27;
+  input[0]->tooltip("Normal input field");
+  // input[0]->cursor_color(SELECTION_COLOR);
+  //  input[0]->maximum_size(20);
+  input[0]->static_text("this is the initial text");
+  input[1] = new FloatInput(70,y,300,23,"Float"); y += 27;
+  input[1]->tooltip("Input field for floating-point number");
+  input[2] = new IntInput(70,y,300,23,"Int"); y += 27;
+  input[2]->tooltip("Input field for integer number");
+  input[3] = new SecretInput(70,y,300,23,"Secret"); y += 27;
+  input[3]->tooltip("Input field for password");
+  input[4] = new WordwrapInput(70,y,300,100,"Wordwrap"); y += 105;
+  input[4]->tooltip("Input field for short multi-line text. Use TextEditor for anything more than a few lines!");
+
+  editor = new TextEditor(70,y,300,100,"TextEditor"); y += 105;
+  editor->tooltip("TextEditor, designed for editing email and programs. "
+		  "wrap_mode(true) has been done to this one.");
+  editor->wrap_mode(true);
+  window->resizable(editor);
+
+  for (int i = 0; i < 5; i++) {
+    input[i]->when(0); input[i]->callback(cb);
+  }
+  int y1 = y;
+  editor->when(0);
+  editor->callback(editor_cb);
+
+  Button *b;
+  b = new ToggleButton(10,y,200,23,"WHEN_&CHANGED");
+  b->tooltip("Do callback each time the text changes");
+  b->callback(toggle_cb, WHEN_CHANGED); y += 23;
+  b = new ToggleButton(10,y,200,23,"WHEN_&RELEASE");
+  b->callback(toggle_cb, WHEN_RELEASE); y += 23;
+  b->tooltip("Do callback when widget loses focus");
+  b = new ToggleButton(10,y,200,23,"WHEN_&ENTER_KEY");
+  b->callback(toggle_cb, WHEN_ENTER_KEY); y += 23;
+  b->tooltip("Do callback when user hits Enter key");
+  b = new ToggleButton(10,y,200,23,"WHEN_&NOT_CHANGED");
+  b->callback(toggle_cb, WHEN_NOT_CHANGED); y += 23;
+  b->tooltip("Do callback even if the text is not changed");
+  y += 5;
+  b = new Button(10,y,200,23,"&print changed()");
+  b->callback(button_cb);
+  b->tooltip("Print widgets that have changed() flag set");
+
+  b = new Button(220,y1,100,23,"color"); y1 += 23;
+  b->color(input[0]->color()); b->callback(color_cb, (void*)0);
+  b->labelcolor(contrast(BLACK,b->color()));
+  b->tooltip("Color behind the text");
+  b = new Button(220,y1,100,23,"selection_color"); y1 += 23;
+  b->color(input[0]->selection_color()); b->callback(color_cb, (void*)1);
+  b->labelcolor(contrast(BLACK,b->color()));
+  b->tooltip("Color behind selected text");
+  b = new Button(220,y1,100,23,"textcolor"); y1 += 23;
+  b->color(input[0]->textcolor()); b->callback(color_cb, (void*)2);
+  b->labelcolor(contrast(BLACK,b->color()));
+  b->tooltip("Color of the text");
+
+  window->end();
+  window->show(argc,argv);
+  return run();
+}
+
+//
+// End of "$Id: input.cxx 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/jpeg_image.cxx
===================================================================
--- branches/branch-3.0-2011/test2/jpeg_image.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/jpeg_image.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,202 @@
+//
+// "$Id: jpeg_image.cxx 4886 2006-03-30 09:55:32Z fabien $"
+//
+// fl_draw_image test program for the Fast Light Tool Kit (FLTK).
+//
+// Be sure to try every visual with the -v switch and try -m (monochrome)
+// on each of them.
+//
+// This program requires either the libjpeg.a library or an internal DD
+// library to read images (this is chosen by the presence of the "DD"
+// #define).
+//
+// To get the jpeg library:
+//
+// The "official" archive site for this software is ftp.uu.net (Internet
+// address 192.48.96.9).  The most recent released version can always be
+// found there in directory graphics/jpeg.  This particular version will
+// be archived as graphics/jpeg/jpegsrc.v6a.tar.gz.
+//
+// The makefile assummes you decompressed and build these in a directory
+// called "jpeg-6a" in the same location as the "FL" directory.
+//
+// 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".
+//
+
+#include <fltk/Fl.h>
+#include <fltk/fl_draw.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+void readtheimage(const char *name); // below
+int width;
+int height;
+int depth;
+int linedelta;
+uchar *ibuffer;
+
+////////////////////////////////////////////////////////////////
+
+#include <fltk/Fl_Window.h>
+int mono;
+
+class image_window : public Fl_Window {
+  void draw();
+public:
+  image_window(int w,int h) : Fl_Window(w,h) {box(FL_NO_BOX);}
+};
+
+void image_window::draw() {
+  if (mono)
+    fl_draw_image_mono(ibuffer+1,0,0,::width,::height,depth,linedelta);
+  else
+    fl_draw_image(ibuffer,0,0,::width,::height,depth,linedelta);
+}
+
+////////////////////////////////////////////////////////////////
+
+#include <fltk/x.h>
+#include "list_visuals.cxx"
+
+////////////////////////////////////////////////////////////////
+
+int visid = -1;
+int arg(int argc, char **argv, int &i) {
+  if (argv[i][1] == 'm') {mono = 1; i++; return 1;}
+
+  if (argv[i][1] == 'v') {
+    if (i+1 >= argc) return 0;
+    visid = atoi(argv[i+1]);
+    i += 2;
+    return 2;
+  }
+
+  return 0;
+}
+
+int main(int argc, char ** argv) {
+
+  int i = 1;
+  if (!Fl::args(argc,argv,i,arg) || i != argc-1) {
+    fprintf(stderr,"usage: %s <switches> image_file\n"
+" -v # : use visual\n"
+" -m : monochrome\n"
+"%s\n",
+	    argv[0],Fl::help);
+    exit(1);
+  }
+
+  readtheimage(argv[i]);
+  image_window *window = new image_window(width,height);
+
+  if (visid>=0) {
+    fl_open_display();
+    XVisualInfo templt; int num;
+    templt.visualid = visid;
+    fl_visual = XGetVisualInfo(fl_display, VisualIDMask, &templt, &num);
+    if (!fl_visual) {
+      fprintf(stderr, "No visual with id %d, use one of:\n",visid);
+      list_visuals();
+      exit(1);
+    }
+    fl_colormap = XCreateColormap(fl_display, RootWindow(fl_display,fl_screen),
+				fl_visual->visual, AllocNone);
+    fl_xpixel(FL_BLACK); // make sure black is allocated
+  }
+
+  window->show(argc,argv);
+  return Fl::run();
+}
+
+////////////////////////////////////////////////////////////////
+#ifndef DD_LIBRARY
+// Read using jpeg library:
+
+extern "C" {
+#include "jpeglib.h"
+}
+
+void readtheimage(const char *name) {
+  struct jpeg_decompress_struct cinfo;
+  struct jpeg_error_mgr jerr;
+  FILE * infile = fopen(name, "rb");
+  if (!infile) {
+    fprintf(stderr, "can't open %s\n", name);
+    exit(1);
+  }
+  cinfo.err = jpeg_std_error(&jerr);
+  jpeg_create_decompress(&cinfo);
+  jpeg_stdio_src(&cinfo, infile);
+  jpeg_read_header(&cinfo, TRUE);
+  jpeg_start_decompress(&cinfo);
+  width = cinfo.output_width;
+  height = cinfo.output_height;
+  depth = cinfo.output_components;
+  ibuffer = new uchar[width*height*depth];
+  uchar *rp = ibuffer;
+  //  for (int i=0; i<height; i++) {
+  for (int i=height; i--; ) {
+    jpeg_read_scanlines(&cinfo, &rp, 1);
+    rp += width*depth;
+  }
+  jpeg_finish_decompress(&cinfo);
+  jpeg_destroy_decompress(&cinfo);
+  fclose(infile);
+}
+
+////////////////////////////////////////////////////////////////
+#else // Digital Domain in-house library
+
+#include "DDNewImage/DDImageOp.h"
+#include "DDNewImage/DDImgRead.h"
+#include "DDNewImage/DDImgToBuffer.h"
+
+void readtheimage(const char *name) {
+  DDImgRead reader(name);
+  width = reader.xsize();
+  height = reader.ysize();
+  depth = 4; // reader.zsize();
+  ibuffer = new uchar[width*height*depth];
+  DDImgToBuffer b(&reader,depth,ibuffer,0,0,width,height);
+  b.execute();
+  if (DDImage::haderror) {
+    fprintf(stderr,"%s\n",DDImage::errormsg());
+    exit(1);
+  }
+  // swap it around into RGBA order:
+  for (uchar *p = ibuffer+width*height*4-4; p >= ibuffer; p-=4) {
+    uchar r = p[3];
+    uchar g = p[2];
+    uchar b = p[1];
+    uchar a = p[0];
+    p[0] = r;
+    p[1] = g;
+    p[2] = b;
+    p[3] = a;
+  }
+  // make it bottom-to-top:
+  ibuffer = ibuffer + width*(height-1)*depth;
+  linedelta = -(width*depth);
+}
+#endif
+
+//
+// End of "$Id: jpeg_image.cxx 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/keyboard.cxx
===================================================================
--- branches/branch-3.0-2011/test2/keyboard.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/keyboard.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,150 @@
+//
+// "$Id: keyboard.cxx 5445 2006-09-18 20:28:08Z spitzak $"
+//
+// Keyboard/event test program for the Fast Light Tool Kit (FLTK).
+//
+// Continuously display FLTK's event state.
+//
+// Known bugs:
+//
+// X insists on reporting the state *before* the shift key was
+// pressed, rather than after, on shift key events.  I fixed this for
+// the mouse buttons, but it did not seem worth it for shift.
+//
+// X servers do not agree about any shift flags except shift, ctrl,
+// lock, and alt.  They may also not agree about the symbols for the extra
+// keys Micro$oft put on the keyboard.
+//
+// Windows has a number of keys that do not report that they are held down.
+// On IRIX the backslash key does not report it is held down.
+//
+// Copyright 2001 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".
+//
+
+#include "keyboard_ui.cxx"
+#include <stdio.h>
+#include <ctype.h>
+#include <fltk/run.h>
+
+// these are used to identify which buttons are which:
+void key_cb(fltk::Button*, void*) {}
+void shift_cb(fltk::Button*, void*) {}
+
+static struct {int n; const char* text;} table[] = {
+  {fltk::EscapeKey, "fltk::EscapeKey"},
+  {fltk::BackSpaceKey, "fltk::BackSpaceKey"},
+  {fltk::TabKey, "fltk::TabKey"},
+  {fltk::ReturnKey, "fltk::ReturnKey"},
+  {fltk::PrintKey, "fltk::PrintKey"},
+  {fltk::ScrollLockKey, "fltk::ScrollLockKey"},
+  {fltk::PauseKey, "fltk::PauseKey"},
+  {fltk::InsertKey, "fltk::InsertKey"},
+  {fltk::HomeKey, "fltk::HomeKey"},
+  {fltk::PageUpKey, "fltk::PageUpKey"},
+  {fltk::DeleteKey, "fltk::DeleteKey"},
+  {fltk::EndKey, "fltk::EndKey"},
+  {fltk::PageDownKey, "fltk::PageDownKey"},
+  {fltk::LeftKey, "fltk::LeftKey"},
+  {fltk::UpKey, "fltk::UpKey"},
+  {fltk::RightKey, "fltk::RightKey"},
+  {fltk::DownKey, "fltk::DownKey"},
+  {fltk::LeftShiftKey, "fltk::LeftShiftKey"},
+  {fltk::RightShiftKey, "fltk::RightShiftKey"},
+  {fltk::LeftCtrlKey, "fltk::LeftCtrlKey"},
+  {fltk::RightCtrlKey, "fltk::RightCtrlKey"},
+  {fltk::CapsLockKey, "fltk::CapsLockKey"},
+  {fltk::LeftAltKey, "fltk::LeftAltKey"},
+  {fltk::RightAltKey, "fltk::RightAltKey"},
+  {fltk::LeftMetaKey, "fltk::LeftMetaKey"},
+  {fltk::RightMetaKey, "fltk::RightMetaKey"},
+  {fltk::MenuKey, "fltk::MenuKey"},
+  {fltk::NumLockKey, "fltk::NumLockKey"},
+  {fltk::KeypadEnter, "fltk::KeypadEnter"},
+  {fltk::MultiplyKey, "fltk::MultiplyKey"},
+  {fltk::AddKey, "fltk::AddKey"},
+  {fltk::SubtractKey, "fltk::SubtractKey"},
+  {fltk::DecimalKey, "fltk::DecimalKey"},
+  {fltk::DivideKey, "fltk::DivideKey"},
+  {fltk::Keypad0, "fltk::Keypad0"},
+  {fltk::Keypad1, "fltk::Keypad1"},
+  {fltk::Keypad2, "fltk::Keypad2"},
+  {fltk::Keypad3, "fltk::Keypad3"},
+  {fltk::Keypad4, "fltk::Keypad4"},
+  {fltk::Keypad5, "fltk::Keypad5"},
+  {fltk::Keypad6, "fltk::Keypad6"},
+  {fltk::Keypad7, "fltk::Keypad7"},
+  {fltk::Keypad8, "fltk::Keypad8"},
+  {fltk::Keypad9, "fltk::Keypad9"},
+  {fltk::SpaceKey,"fltk::SpaceKey (' ')"}
+};
+
+int main(int argc, char** argv) {
+  fltk::Window *window = make_window();
+  window->show(argc,argv);
+  for (;;) {
+    fltk::wait();
+    if (!window->visible()) break;
+
+    // update all the buttons with the current key and shift state:
+    for (int i = 0; i < window->children(); i++) {
+      fltk::Widget* b = window->child(i);
+      if (b->callback() == (fltk::Callback*)key_cb) {
+	unsigned i = (unsigned)b->argument();
+	if (!i) i = tolower(b->label()[0]);
+	((fltk::Button*)b)->value(fltk::event_key_state(i));
+	if (i == fltk::event_key()) ((fltk::Button*)b)->take_focus();
+      } else if (b->callback() == (fltk::Callback*)shift_cb) {
+	unsigned i = (unsigned)b->argument();
+	((fltk::Button*)b)->value(fltk::event_state(i));
+      }
+    }
+
+    // figure out the keyname:
+    char buffer[100];
+    const char *keyname = buffer;
+    int k = fltk::event_key();
+    if (!k) {
+      keyname = "0";
+    } else if (k <= 7) {
+      sprintf(buffer, "(mouse button %d)", k);
+    } else if (k < 256 && k != 32) {
+      sprintf(buffer, "'%c'", k);
+    } else if (k >= fltk::F0Key && k <= fltk::LastFunctionKey) {
+      sprintf(buffer, "fltk::F%dKey", k - fltk::F0Key);
+    } else {
+      sprintf(buffer, "0x%04x", k);
+      for (int i = 0; i < int(sizeof(table)/sizeof(*table)); i++)
+	if (table[i].n == k) {keyname = table[i].text; break;}
+    }
+    key_output->value(keyname);
+
+    if (fltk::event_text()[0] == 32)
+      text_output->value("\" \"");
+    else if (fltk::event_text()[0])
+      text_output->value(fltk::event_text());
+    else
+      text_output->value("\"\"");
+  }
+  return 0;
+}
+
+//
+// End of "$Id: keyboard.cxx 5445 2006-09-18 20:28:08Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/keyboard_ui.cxx
===================================================================
--- branches/branch-3.0-2011/test2/keyboard_ui.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/keyboard_ui.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,544 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#include "keyboard_ui.h"
+#include <fltk/events.h>
+
+fltk::Output *key_output=(fltk::Output *)0;
+
+fltk::Output *text_output=(fltk::Output *)0;
+
+fltk::Window* make_window() {
+  fltk::Window* w;
+   {fltk::Window* o = new fltk::Window(490, 190);
+    w = o;
+    o->shortcut(0xff1b);
+    o->begin();
+     {fltk::Output* o = key_output = new fltk::Output(15, 15, 170, 30, "Fl::event_key():");
+      o->textfont(fltk::COURIER);
+      o->labelsize(10);
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+    }
+     {fltk::Output* o = text_output = new fltk::Output(195, 15, 190, 30, "Fl::event_text():");
+      o->textfont(fltk::COURIER);
+      o->labelsize(10);
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+    }
+     {fltk::Button* o = new fltk::Button(15, 50, 20, 20, "Esc ");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::EscapeKey));
+    }
+     {fltk::Button* o = new fltk::Button(50, 50, 20, 20, "F1");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::F1Key));
+    }
+     {fltk::Button* o = new fltk::Button(70, 50, 20, 20, "F2");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::F2Key));
+    }
+     {fltk::Button* o = new fltk::Button(90, 50, 20, 20, "F3");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::F3Key));
+    }
+     {fltk::Button* o = new fltk::Button(110, 50, 20, 20, "F4");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::F4Key));
+    }
+     {fltk::Button* o = new fltk::Button(140, 50, 20, 20, "F5");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::F5Key));
+    }
+     {fltk::Button* o = new fltk::Button(160, 50, 20, 20, "F6");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::F6Key));
+    }
+     {fltk::Button* o = new fltk::Button(180, 50, 20, 20, "F7");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::F7Key));
+    }
+     {fltk::Button* o = new fltk::Button(200, 50, 20, 20, "F8");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::F8Key));
+    }
+     {fltk::Button* o = new fltk::Button(230, 50, 20, 20, "F9");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::F9Key));
+    }
+     {fltk::Button* o = new fltk::Button(250, 50, 20, 20, "F10");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::F10Key));
+    }
+     {fltk::Button* o = new fltk::Button(270, 50, 20, 20, "F11");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::F11Key));
+    }
+     {fltk::Button* o = new fltk::Button(290, 50, 20, 20, "F12");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::F12Key));
+    }
+     {fltk::Button* o = new fltk::Button(325, 50, 20, 20, "Print ");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::PrintKey));
+    }
+     {fltk::Button* o = new fltk::Button(345, 50, 20, 20, "Sclk ");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::ScrollLockKey));
+    }
+     {fltk::Button* o = new fltk::Button(365, 50, 20, 20, "Paus ");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::PauseKey));
+    }
+     {fltk::Button* o = new fltk::Button(15, 80, 20, 20, "`");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(35, 80, 20, 20, "1");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(55, 80, 20, 20, "2");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(75, 80, 20, 20, "3");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(95, 80, 20, 20, "4");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(115, 80, 20, 20, "5");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(135, 80, 20, 20, "6");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(155, 80, 20, 20, "7");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(175, 80, 20, 20, "8");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(195, 80, 20, 20, "9");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(215, 80, 20, 20, "0");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(235, 80, 20, 20, "-");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(255, 80, 20, 20, "=");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(275, 80, 35, 20, "Bksp");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::BackSpaceKey));
+      o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+    }
+     {fltk::Button* o = new fltk::Button(325, 80, 20, 20, "Ins ");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::InsertKey));
+    }
+     {fltk::Button* o = new fltk::Button(345, 80, 20, 20, "Home");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::HomeKey));
+    }
+     {fltk::Button* o = new fltk::Button(365, 80, 20, 20, "pgup ");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::PageUpKey));
+    }
+     {fltk::Button* o = new fltk::Button(400, 80, 20, 20, "Num");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::NumLockKey));
+    }
+     {fltk::Button* o = new fltk::Button(420, 80, 20, 20, "/");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::Keypad+'/'));
+    }
+     {fltk::Button* o = new fltk::Button(440, 80, 20, 20, "*");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::Keypad+'*'));
+    }
+     {fltk::Button* o = new fltk::Button(460, 80, 20, 20, "-");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::Keypad+'-'));
+    }
+     {fltk::Button* o = new fltk::Button(15, 100, 27, 20, "Tab");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::TabKey));
+      o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+    }
+     {fltk::Button* o = new fltk::Button(42, 100, 20, 20, "Q");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(62, 100, 20, 20, "W");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(82, 100, 20, 20, "E");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(102, 100, 20, 20, "R");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(122, 100, 20, 20, "T");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(142, 100, 20, 20, "Y");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(162, 100, 20, 20, "U");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(182, 100, 20, 20, "I");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(202, 100, 20, 20, "O");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(222, 100, 20, 20, "P");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(242, 100, 20, 20, "[");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(262, 100, 20, 20, "]");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(282, 100, 28, 20, "\\");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+      o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+    }
+     {fltk::Button* o = new fltk::Button(325, 100, 20, 20, "Del ");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::DeleteKey));
+    }
+     {fltk::Button* o = new fltk::Button(345, 100, 20, 20, "End ");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::EndKey));
+    }
+     {fltk::Button* o = new fltk::Button(365, 100, 20, 20, "pgdn ");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::PageDownKey));
+    }
+     {fltk::Button* o = new fltk::Button(400, 100, 20, 20, "7");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::Keypad+'7'));
+    }
+     {fltk::Button* o = new fltk::Button(420, 100, 20, 20, "8");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::Keypad+'8'));
+    }
+     {fltk::Button* o = new fltk::Button(440, 100, 20, 20, "9");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::Keypad+'9'));
+    }
+     {fltk::Button* o = new fltk::Button(460, 100, 20, 40, "+");
+      o->set_vertical();
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::Keypad+'+'));
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+    }
+     {fltk::Button* o = new fltk::Button(15, 120, 36, 20, "Lock");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::CapsLockKey));
+      o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+    }
+     {fltk::Button* o = new fltk::Button(51, 120, 20, 20, "A");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(71, 120, 20, 20, "S");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(91, 120, 20, 20, "D");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(111, 120, 20, 20, "F");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(131, 120, 20, 20, "G");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(151, 120, 20, 20, "H");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(171, 120, 20, 20, "J");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(191, 120, 20, 20, "K");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(211, 120, 20, 20, "L");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(231, 120, 20, 20, ";");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(251, 120, 20, 20, "'");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(271, 120, 39, 20, "Enter");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::ReturnKey));
+      o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+    }
+     {fltk::Button* o = new fltk::Button(400, 120, 20, 20, "4");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::Keypad+'4'));
+    }
+     {fltk::Button* o = new fltk::Button(420, 120, 20, 20, "5");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::Keypad+'5'));
+    }
+     {fltk::Button* o = new fltk::Button(440, 120, 20, 20, "6");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::Keypad+'6'));
+    }
+     {fltk::Button* o = new fltk::Button(15, 140, 45, 20, "Shift");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::LeftShiftKey));
+      o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+    }
+     {fltk::Button* o = new fltk::Button(60, 140, 20, 20, "Z");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(80, 140, 20, 20, "X");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(100, 140, 20, 20, "C");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(120, 140, 20, 20, "V");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(140, 140, 20, 20, "B");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(160, 140, 20, 20, "N");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(180, 140, 20, 20, "M");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(200, 140, 20, 20, ",");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(220, 140, 20, 20, ".");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(240, 140, 20, 20, "/");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb);
+    }
+     {fltk::Button* o = new fltk::Button(260, 140, 50, 20, "Shift");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::RightShiftKey));
+      o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+    }
+     {fltk::Button* o = new fltk::Button(345, 140, 20, 20, "@8->");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::UpKey));
+    }
+     {fltk::Button* o = new fltk::Button(400, 140, 20, 20, "1");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::Keypad+'1'));
+    }
+     {fltk::Button* o = new fltk::Button(420, 140, 20, 20, "2");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::Keypad+'2'));
+    }
+     {fltk::Button* o = new fltk::Button(440, 140, 20, 20, "3");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::Keypad+'3'));
+    }
+     {fltk::Button* o = new fltk::Button(460, 140, 20, 40);
+      o->set_vertical();
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::KeypadEnter));
+    }
+     {fltk::Button* o = new fltk::Button(15, 160, 30, 20, "Ctrl");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::LeftCtrlKey));
+      o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+    }
+     {fltk::Button* o = new fltk::Button(45, 160, 30, 20, "Meta");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::LeftMetaKey));
+    }
+     {fltk::Button* o = new fltk::Button(75, 160, 30, 20, "Alt ");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::LeftAltKey));
+    }
+     {fltk::Button* o = new fltk::Button(105, 160, 85, 20);
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(' '));
+    }
+     {fltk::Button* o = new fltk::Button(190, 160, 30, 20, "Alt ");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::RightAltKey));
+    }
+     {fltk::Button* o = new fltk::Button(220, 160, 30, 20, "Meta");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::RightMetaKey));
+    }
+     {fltk::Button* o = new fltk::Button(250, 160, 30, 20, "Menu ");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::MenuKey));
+    }
+     {fltk::Button* o = new fltk::Button(280, 160, 30, 20, "Ctrl");
+      o->labelsize(8);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::RightCtrlKey));
+      o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+    }
+     {fltk::Button* o = new fltk::Button(325, 160, 20, 20, "@4->");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::LeftKey));
+    }
+     {fltk::Button* o = new fltk::Button(345, 160, 20, 20, "@2->");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::DownKey));
+    }
+     {fltk::Button* o = new fltk::Button(365, 160, 20, 20, "@6->");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::RightKey));
+    }
+     {fltk::Button* o = new fltk::Button(400, 160, 40, 20, "0");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::Keypad+'0'));
+      o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE);
+    }
+     {fltk::Button* o = new fltk::Button(440, 160, 20, 20, ".");
+      o->labelsize(10);
+      o->callback((fltk::Callback*)key_cb, (void*)(fltk::Keypad+'.'));
+    }
+     {fltk::Widget* o = new fltk::Widget(400, 15, 80, 40, "Fl::event_state():");
+      o->box(fltk::NO_BOX);
+      o->labelsize(10);
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT);
+    }
+     {fltk::Button* o = new fltk::Button(400, 15, 20, 10, "shift ");
+      o->selection_color((fltk::Color)3);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)shift_cb, (void*)(fltk::SHIFT));
+    }
+     {fltk::Button* o = new fltk::Button(420, 15, 20, 10, "lock ");
+      o->selection_color((fltk::Color)3);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)shift_cb, (void*)(fltk::CAPSLOCK));
+    }
+     {fltk::Button* o = new fltk::Button(440, 15, 20, 10, "ctrl");
+      o->selection_color((fltk::Color)3);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)shift_cb, (void*)(fltk::CTRL));
+    }
+     {fltk::Button* o = new fltk::Button(460, 15, 20, 10, "alt");
+      o->selection_color((fltk::Color)3);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)shift_cb, (void*)(fltk::ALT));
+    }
+     {fltk::Button* o = new fltk::Button(400, 25, 20, 10, "num");
+      o->selection_color((fltk::Color)3);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)shift_cb, (void*)(fltk::NUMLOCK));
+    }
+     {fltk::Button* o = new fltk::Button(420, 25, 20, 10, "?");
+      o->selection_color((fltk::Color)3);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)shift_cb, (void*)(0x20));
+    }
+     {fltk::Button* o = new fltk::Button(440, 25, 20, 10, "meta");
+      o->selection_color((fltk::Color)3);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)shift_cb, (void*)(fltk::META));
+    }
+     {fltk::Button* o = new fltk::Button(460, 25, 20, 10, "sclk");
+      o->selection_color((fltk::Color)3);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)shift_cb, (void*)(fltk::SCROLLLOCK));
+    }
+     {fltk::Button* o = new fltk::Button(400, 35, 20, 10, "b1");
+      o->selection_color((fltk::Color)3);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)shift_cb, (void*)(fltk::BUTTON1));
+    }
+     {fltk::Button* o = new fltk::Button(420, 35, 20, 10, "b2");
+      o->selection_color((fltk::Color)3);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)shift_cb, (void*)(fltk::BUTTON2));
+    }
+     {fltk::Button* o = new fltk::Button(440, 35, 20, 10, "b3");
+      o->selection_color((fltk::Color)3);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)shift_cb, (void*)(fltk::BUTTON3));
+    }
+     {fltk::Button* o = new fltk::Button(460, 35, 20, 10, "?");
+      o->selection_color((fltk::Color)3);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)shift_cb, (void*)(0x800));
+    }
+     {fltk::Button* o = new fltk::Button(400, 45, 20, 10, "?");
+      o->selection_color((fltk::Color)3);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)shift_cb, (void*)(0x1000));
+    }
+     {fltk::Button* o = new fltk::Button(420, 45, 20, 10, "?");
+      o->selection_color((fltk::Color)3);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)shift_cb, (void*)(0x2000));
+    }
+     {fltk::Button* o = new fltk::Button(440, 45, 20, 10, "?");
+      o->selection_color((fltk::Color)3);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)shift_cb, (void*)(0x4000));
+    }
+     {fltk::Button* o = new fltk::Button(460, 45, 20, 10, "?");
+      o->selection_color((fltk::Color)3);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)shift_cb, (void*)(0x8000));
+    }
+    o->end();
+    o->shortcut(0);
+    o->resizable(o);
+  }
+  return  w;
+}

Added: branches/branch-3.0-2011/test2/keyboard_ui.fl
===================================================================
--- branches/branch-3.0-2011/test2/keyboard_ui.fl	                        (rev 0)
+++ branches/branch-3.0-2011/test2/keyboard_ui.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,701 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.0100 
+images_dir ./ 
+header_name {.h} 
+code_name {.cxx} 
+gridx 5 
+gridy 5 
+snap 3
+decl {\#include <fltk/events.h>} {} 
+
+Function {make_window()} {open
+} {
+  {fltk::Window} {} {open
+    xywh {416 379 490 190} resizable
+    extra_code {o->shortcut(0);} visible
+  } {
+    {fltk::Output} key_output {
+      label {Fl::event_key():}
+      xywh {15 15 170 30} align 5 textfont 4 labelsize 10
+    }
+    {fltk::Output} text_output {
+      label {Fl::event_text():}
+      xywh {195 15 190 30} align 5 textfont 4 labelsize 10
+    }
+    {fltk::Button} {} {
+      label {Esc }
+      user_data {fltk::EscapeKey} user_data_type {void*}
+      callback key_cb
+      xywh {15 50 20 20} labelsize 8
+    }
+    {fltk::Button} {} {
+      label F1
+      user_data {fltk::F1Key} user_data_type {void*}
+      callback key_cb
+      xywh {50 50 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label F2
+      user_data {fltk::F2Key} user_data_type {void*}
+      callback key_cb
+      xywh {70 50 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label F3
+      user_data {fltk::F3Key} user_data_type {void*}
+      callback key_cb
+      xywh {90 50 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label F4
+      user_data {fltk::F4Key} user_data_type {void*}
+      callback key_cb
+      xywh {110 50 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label F5
+      user_data {fltk::F5Key} user_data_type {void*}
+      callback key_cb
+      xywh {140 50 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label F6
+      user_data {fltk::F6Key} user_data_type {void*}
+      callback key_cb
+      xywh {160 50 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label F7
+      user_data {fltk::F7Key} user_data_type {void*}
+      callback key_cb
+      xywh {180 50 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label F8
+      user_data {fltk::F8Key} user_data_type {void*}
+      callback key_cb
+      xywh {200 50 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label F9
+      user_data {fltk::F9Key} user_data_type {void*}
+      callback key_cb
+      xywh {230 50 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label F10
+      user_data {fltk::F10Key} user_data_type {void*}
+      callback key_cb
+      xywh {250 50 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label F11
+      user_data {fltk::F11Key} user_data_type {void*}
+      callback key_cb
+      xywh {270 50 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label F12
+      user_data {fltk::F12Key} user_data_type {void*}
+      callback key_cb
+      xywh {290 50 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label {Print }
+      user_data {fltk::PrintKey} user_data_type {void*}
+      callback key_cb
+      xywh {325 50 20 20} labelsize 8
+    }
+    {fltk::Button} {} {
+      label {Sclk }
+      user_data {fltk::ScrollLockKey} user_data_type {void*}
+      callback key_cb
+      xywh {345 50 20 20} labelsize 8
+    }
+    {fltk::Button} {} {
+      label {Paus }
+      user_data {fltk::PauseKey} user_data_type {void*}
+      callback key_cb
+      xywh {365 50 20 20} labelsize 8
+    }
+    {fltk::Button} {} {
+      label {`}
+      callback key_cb
+      xywh {15 80 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 1
+      callback key_cb
+      xywh {35 80 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 2
+      callback key_cb
+      xywh {55 80 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 3
+      callback key_cb
+      xywh {75 80 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 4
+      callback key_cb
+      xywh {95 80 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 5
+      callback key_cb
+      xywh {115 80 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 6
+      callback key_cb
+      xywh {135 80 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 7
+      callback key_cb
+      xywh {155 80 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 8
+      callback key_cb
+      xywh {175 80 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 9
+      callback key_cb
+      xywh {195 80 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 0
+      callback key_cb
+      xywh {215 80 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label {-}
+      callback key_cb
+      xywh {235 80 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label {=}
+      callback key_cb
+      xywh {255 80 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label Bksp
+      user_data {fltk::BackSpaceKey} user_data_type {void*}
+      callback key_cb
+      xywh {275 80 35 20} align 52 labelsize 8
+    }
+    {fltk::Button} {} {
+      label {Ins }
+      user_data {fltk::InsertKey} user_data_type {void*}
+      callback key_cb
+      xywh {325 80 20 20} labelsize 8
+    }
+    {fltk::Button} {} {
+      label Home
+      user_data {fltk::HomeKey} user_data_type {void*}
+      callback key_cb
+      xywh {345 80 20 20} labelsize 8
+    }
+    {fltk::Button} {} {
+      label {pgup }
+      user_data {fltk::PageUpKey} user_data_type {void*}
+      callback key_cb
+      xywh {365 80 20 20} labelsize 8
+    }
+    {fltk::Button} {} {
+      label Num
+      user_data {fltk::NumLockKey} user_data_type {void*}
+      callback key_cb
+      xywh {400 80 20 20} labelsize 8
+    }
+    {fltk::Button} {} {
+      label {/}
+      user_data {fltk::Keypad+'/'} user_data_type {void*}
+      callback key_cb
+      xywh {420 80 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label {*}
+      user_data {fltk::Keypad+'*'} user_data_type {void*}
+      callback key_cb
+      xywh {440 80 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label {-}
+      user_data {fltk::Keypad+'-'} user_data_type {void*}
+      callback key_cb
+      xywh {460 80 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label Tab
+      user_data {fltk::TabKey} user_data_type {void*}
+      callback key_cb
+      xywh {15 100 27 20} align 52 labelsize 8
+    }
+    {fltk::Button} {} {
+      label Q
+      callback key_cb
+      xywh {42 100 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label W
+      callback key_cb
+      xywh {62 100 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label E
+      callback key_cb
+      xywh {82 100 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label R
+      callback key_cb
+      xywh {102 100 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label T
+      callback key_cb
+      xywh {122 100 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label Y
+      callback key_cb
+      xywh {142 100 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label U
+      callback key_cb
+      xywh {162 100 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label I
+      callback key_cb
+      xywh {182 100 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label O
+      callback key_cb
+      xywh {202 100 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label P
+      callback key_cb
+      xywh {222 100 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label {[}
+      callback key_cb
+      xywh {242 100 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label {]}
+      callback key_cb
+      xywh {262 100 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label {\\}
+      callback key_cb
+      xywh {282 100 28 20} align 52 labelsize 10
+    }
+    {fltk::Button} {} {
+      label {Del }
+      user_data {fltk::DeleteKey} user_data_type {void*}
+      callback key_cb
+      xywh {325 100 20 20} labelsize 8
+    }
+    {fltk::Button} {} {
+      label {End }
+      user_data {fltk::EndKey} user_data_type {void*}
+      callback key_cb
+      xywh {345 100 20 20} labelsize 8
+    }
+    {fltk::Button} {} {
+      label {pgdn }
+      user_data {fltk::PageDownKey} user_data_type {void*}
+      callback key_cb
+      xywh {365 100 20 20} labelsize 8
+    }
+    {fltk::Button} {} {
+      label 7
+      user_data {fltk::Keypad+'7'} user_data_type {void*}
+      callback key_cb
+      xywh {400 100 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 8
+      user_data {fltk::Keypad+'8'} user_data_type {void*}
+      callback key_cb
+      xywh {420 100 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 9
+      user_data {fltk::Keypad+'9'} user_data_type {void*}
+      callback key_cb
+      xywh {440 100 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label {+}
+      user_data {fltk::Keypad+'+'} user_data_type {void*}
+      callback key_cb
+      xywh {460 100 20 40} align 49 labelsize 10
+    }
+    {fltk::Button} {} {
+      label Lock
+      user_data {fltk::CapsLockKey} user_data_type {void*}
+      callback key_cb
+      xywh {15 120 36 20} align 52 labelsize 8
+    }
+    {fltk::Button} {} {
+      label A
+      callback key_cb
+      xywh {51 120 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label S
+      callback key_cb
+      xywh {71 120 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label D
+      callback key_cb
+      xywh {91 120 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label F
+      callback key_cb
+      xywh {111 120 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label G
+      callback key_cb
+      xywh {131 120 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label H
+      callback key_cb
+      xywh {151 120 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label J
+      callback key_cb
+      xywh {171 120 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label K
+      callback key_cb
+      xywh {191 120 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label L
+      callback key_cb
+      xywh {211 120 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label {;}
+      callback key_cb
+      xywh {231 120 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label {'}
+      callback key_cb
+      xywh {251 120 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label Enter
+      user_data {fltk::ReturnKey} user_data_type {void*}
+      callback key_cb
+      xywh {271 120 39 20} align 52 labelsize 8
+    }
+    {fltk::Button} {} {
+      label 4
+      user_data {fltk::Keypad+'4'} user_data_type {void*}
+      callback key_cb
+      xywh {400 120 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 5
+      user_data {fltk::Keypad+'5'} user_data_type {void*}
+      callback key_cb
+      xywh {420 120 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 6
+      user_data {fltk::Keypad+'6'} user_data_type {void*}
+      callback key_cb
+      xywh {440 120 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label Shift
+      user_data {fltk::LeftShiftKey} user_data_type {void*}
+      callback key_cb
+      xywh {15 140 45 20} align 52 labelsize 8
+    }
+    {fltk::Button} {} {
+      label Z
+      callback key_cb
+      xywh {60 140 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label X
+      callback key_cb
+      xywh {80 140 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label C
+      callback key_cb
+      xywh {100 140 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label V
+      callback key_cb
+      xywh {120 140 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label B
+      callback key_cb
+      xywh {140 140 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label N
+      callback key_cb
+      xywh {160 140 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label M
+      callback key_cb
+      xywh {180 140 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label {,}
+      callback key_cb
+      xywh {200 140 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label {.}
+      callback key_cb
+      xywh {220 140 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label {/}
+      callback key_cb
+      xywh {240 140 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label Shift
+      user_data {fltk::RightShiftKey} user_data_type {void*}
+      callback key_cb
+      xywh {260 140 50 20} align 52 labelsize 8
+    }
+    {fltk::Button} {} {
+      label {@8->}
+      user_data {fltk::UpKey} user_data_type {void*}
+      callback key_cb
+      xywh {345 140 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 1
+      user_data {fltk::Keypad+'1'} user_data_type {void*}
+      callback key_cb
+      xywh {400 140 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 2
+      user_data {fltk::Keypad+'2'} user_data_type {void*}
+      callback key_cb
+      xywh {420 140 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 3
+      user_data {fltk::Keypad+'3'} user_data_type {void*}
+      callback key_cb
+      xywh {440 140 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      user_data {fltk::KeypadEnter} user_data_type {void*}
+      callback key_cb selected
+      xywh {460 140 20 40}
+    }
+    {fltk::Button} {} {
+      label Ctrl
+      user_data {fltk::LeftCtrlKey} user_data_type {void*}
+      callback key_cb
+      xywh {15 160 30 20} align 52 labelsize 8
+    }
+    {fltk::Button} {} {
+      label Meta
+      user_data {fltk::LeftMetaKey} user_data_type {void*}
+      callback key_cb
+      xywh {45 160 30 20} labelsize 8
+    }
+    {fltk::Button} {} {
+      label {Alt }
+      user_data {fltk::LeftAltKey} user_data_type {void*}
+      callback key_cb
+      xywh {75 160 30 20} labelsize 8
+    }
+    {fltk::Button} {} {
+      user_data {' '} user_data_type {void*}
+      callback key_cb
+      xywh {105 160 85 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label {Alt }
+      user_data {fltk::RightAltKey} user_data_type {void*}
+      callback key_cb
+      xywh {190 160 30 20} labelsize 8
+    }
+    {fltk::Button} {} {
+      label Meta
+      user_data {fltk::RightMetaKey} user_data_type {void*}
+      callback key_cb
+      xywh {220 160 30 20} labelsize 8
+    }
+    {fltk::Button} {} {
+      label {Menu }
+      user_data {fltk::MenuKey} user_data_type {void*}
+      callback key_cb
+      xywh {250 160 30 20} labelsize 8
+    }
+    {fltk::Button} {} {
+      label Ctrl
+      user_data {fltk::RightCtrlKey} user_data_type {void*}
+      callback key_cb
+      xywh {280 160 30 20} align 52 labelsize 8
+    }
+    {fltk::Button} {} {
+      label {@4->}
+      user_data {fltk::LeftKey} user_data_type {void*}
+      callback key_cb
+      xywh {325 160 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label {@2->}
+      user_data {fltk::DownKey} user_data_type {void*}
+      callback key_cb
+      xywh {345 160 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label {@6->}
+      user_data {fltk::RightKey} user_data_type {void*}
+      callback key_cb
+      xywh {365 160 20 20} labelsize 10
+    }
+    {fltk::Button} {} {
+      label 0
+      user_data {fltk::Keypad+'0'} user_data_type {void*}
+      callback key_cb
+      xywh {400 160 40 20} align 52 labelsize 10
+    }
+    {fltk::Button} {} {
+      label {.}
+      user_data {fltk::Keypad+'.'} user_data_type {void*}
+      callback key_cb
+      xywh {440 160 20 20} labelsize 10
+    }
+    {fltk::Widget} {} {
+      label {Fl::event_state():}
+      xywh {400 15 80 40} align 5 box NO_BOX labelsize 10
+    }
+    {fltk::Button} {} {
+      label {shift }
+      user_data {fltk::SHIFT} user_data_type {void*}
+      callback shift_cb
+      xywh {400 15 20 10} selection_color 3 labelsize 8
+    }
+    {fltk::Button} {} {
+      label {lock }
+      user_data {fltk::CAPSLOCK} user_data_type {void*}
+      callback shift_cb
+      xywh {420 15 20 10} selection_color 3 labelsize 8
+    }
+    {fltk::Button} {} {
+      label ctrl
+      user_data {fltk::CTRL} user_data_type {void*}
+      callback shift_cb
+      xywh {440 15 20 10} selection_color 3 labelsize 8
+    }
+    {fltk::Button} {} {
+      label alt
+      user_data {fltk::ALT} user_data_type {void*}
+      callback shift_cb
+      xywh {460 15 20 10} selection_color 3 labelsize 8
+    }
+    {fltk::Button} {} {
+      label num
+      user_data {fltk::NUMLOCK} user_data_type {void*}
+      callback shift_cb
+      xywh {400 25 20 10} selection_color 3 labelsize 8
+    }
+    {fltk::Button} {} {
+      label {?}
+      user_data 0x20 user_data_type {void*}
+      callback shift_cb
+      xywh {420 25 20 10} selection_color 3 labelsize 8
+    }
+    {fltk::Button} {} {
+      label meta
+      user_data {fltk::META} user_data_type {void*}
+      callback shift_cb
+      xywh {440 25 20 10} selection_color 3 labelsize 8
+    }
+    {fltk::Button} {} {
+      label sclk
+      user_data {fltk::SCROLLLOCK} user_data_type {void*}
+      callback shift_cb
+      xywh {460 25 20 10} selection_color 3 labelsize 8
+    }
+    {fltk::Button} {} {
+      label b1
+      user_data {fltk::BUTTON1} user_data_type {void*}
+      callback shift_cb
+      xywh {400 35 20 10} selection_color 3 labelsize 8
+    }
+    {fltk::Button} {} {
+      label b2
+      user_data {fltk::BUTTON2} user_data_type {void*}
+      callback shift_cb
+      xywh {420 35 20 10} selection_color 3 labelsize 8
+    }
+    {fltk::Button} {} {
+      label b3
+      user_data {fltk::BUTTON3} user_data_type {void*}
+      callback shift_cb
+      xywh {440 35 20 10} selection_color 3 labelsize 8
+    }
+    {fltk::Button} {} {
+      label {?}
+      user_data 0x800 user_data_type {void*}
+      callback shift_cb
+      xywh {460 35 20 10} selection_color 3 labelsize 8
+    }
+    {fltk::Button} {} {
+      label {?}
+      user_data 0x1000 user_data_type {void*}
+      callback shift_cb
+      xywh {400 45 20 10} selection_color 3 labelsize 8
+    }
+    {fltk::Button} {} {
+      label {?}
+      user_data 0x2000 user_data_type {void*}
+      callback shift_cb
+      xywh {420 45 20 10} selection_color 3 labelsize 8
+    }
+    {fltk::Button} {} {
+      label {?}
+      user_data 0x4000 user_data_type {void*}
+      callback shift_cb
+      xywh {440 45 20 10} selection_color 3 labelsize 8
+    }
+    {fltk::Button} {} {
+      label {?}
+      user_data 0x8000 user_data_type {void*}
+      callback shift_cb
+      xywh {460 45 20 10} selection_color 3 labelsize 8
+    }
+  }
+} 

Added: branches/branch-3.0-2011/test2/keyboard_ui.h
===================================================================
--- branches/branch-3.0-2011/test2/keyboard_ui.h	                        (rev 0)
+++ branches/branch-3.0-2011/test2/keyboard_ui.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,14 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#ifndef keyboard_ui_h
+#define keyboard_ui_h
+#include <fltk/Window.h>
+#include <fltk/Output.h>
+extern fltk::Output* key_output;
+extern fltk::Output* text_output;
+#include <fltk/Button.h>
+extern void key_cb(fltk::Button*, void*);
+#include <fltk/Widget.h>
+extern void shift_cb(fltk::Button*, void*);
+fltk::Window* make_window();
+#endif

Added: branches/branch-3.0-2011/test2/label.cxx
===================================================================
--- branches/branch-3.0-2011/test2/label.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/label.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,199 @@
+//
+// "$Id: label.cxx 5883 2007-06-06 19:50:47Z spitzak $"
+//
+// Label test program 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".
+//
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Box.h>
+#include <fltk/ValueSlider.h>
+#include <fltk/ToggleButton.h>
+#include <fltk/Input.h>
+#include <fltk/MenuBuild.h>
+#include <fltk/Choice.h>
+#include <fltk/draw.h>
+#include <fltk/Font.h>
+#include <fltk/xpmImage.h>
+
+using namespace fltk;
+
+ToggleButton *leftb,*rightb,*topb,*bottomb,*insideb,*centerb,*clipb,*wrapb;
+Widget *textbox;
+Input *input;
+ValueSlider *fontslider;
+ValueSlider *sizes;
+Window *window;
+
+void button_cb(Widget *,void *) {
+  int i = 0;
+  if (leftb->value()) i |= ALIGN_LEFT;
+  if (rightb->value()) i |= ALIGN_RIGHT;
+  if (topb->value()) i |= ALIGN_TOP;
+  if (bottomb->value()) i |= ALIGN_BOTTOM;
+  if (insideb->value()) i |= ALIGN_INSIDE;
+  if (centerb->value()) i |= ALIGN_CENTER;
+  if (clipb->value()) i |= ALIGN_CLIP;
+  if (wrapb->value()) i |= ALIGN_WRAP;
+  textbox->align(i);
+  window->redraw();
+}
+
+void font_cb(Widget *,void *) {
+  //Widget::default_style->leading_ = int(fontslider->value());
+  textbox->labelfont(font(int(fontslider->value())));
+  window->redraw();
+}
+
+void size_cb(Widget *,void *) {
+  textbox->labelsize((float)sizes->value());
+  window->redraw();
+}
+
+void input_cb(Widget *,void *) {
+  textbox->label(input->value());
+  window->redraw();
+}
+
+void normal_cb(Widget *,void *) {
+  textbox->labeltype(NORMAL_LABEL);
+  window->redraw();
+}
+
+void symbol_cb(Widget *,void *) {
+  textbox->labeltype(SYMBOL_LABEL);
+  if (input->value()[0] != '@') {
+    input->static_value("@->");
+    textbox->label("@->");
+  }
+  window->redraw();
+}
+
+void shadow_cb(Widget *,void *) {
+  textbox->labeltype(SHADOW_LABEL);
+  window->redraw();
+}
+
+void embossed_cb(Widget *,void *) {
+  textbox->labeltype(EMBOSSED_LABEL);
+  window->redraw();
+}
+
+void engraved_cb(Widget *,void *) {
+  textbox->labeltype(ENGRAVED_LABEL);
+  window->redraw();
+}
+
+static void load_menu(Choice* c) {
+  c->begin();
+      new fltk::Item("NORMAL_LABEL",0,normal_cb);
+      new fltk::Item("SYMBOL_LABEL",0,symbol_cb);
+      new fltk::Item("SHADOW_LABEL",0,shadow_cb);
+      new fltk::Item("ENGRAVED_LABEL",0,engraved_cb);
+      new fltk::Item("EMBOSSED_LABEL",0,embossed_cb);
+  c->end();
+}
+
+#include "porsche.xpm"
+xpmImage theimage(porsche_xpm);
+void image_cb(Widget* w, void*) {
+  textbox->image(((Button*)w)->value() ? &theimage : 0);
+  window->redraw();
+}
+
+void inactive_cb(Widget* w, void*) {
+  if (((Button*)w)->value()) textbox->deactivate(); else textbox->activate();
+  window->redraw();
+}
+
+const char* const initial = "The quick brown fox jumps over the lazy dog.";
+
+int main(int argc, char **argv) {
+  window = new Window(400,400);
+  window->set_double_buffer();
+  window->begin();
+
+  textbox= new Widget(100,75,200,100,initial);
+  textbox->box(ENGRAVED_BOX);
+
+  Choice *c = new Choice(50,275,200,25);
+  load_menu(c);
+
+  ToggleButton* b = new ToggleButton(250,275,50,25,"image");
+  b->callback(image_cb);
+
+  b = new ToggleButton(300,275,50,25,"inactive");
+  b->callback(inactive_cb);
+
+  Group *g = new Group(0,300,400,25);
+  g->resizable(g);
+  g->begin();
+  leftb = new ToggleButton(0,0,50,25,"left");
+  leftb->callback(button_cb);
+  rightb = new ToggleButton(50,0,50,25,"right");
+  rightb->callback(button_cb);
+  topb = new ToggleButton(100,0,50,25,"top");
+  topb->callback(button_cb);
+  bottomb = new ToggleButton(150,0,50,25,"bottom");
+  bottomb->callback(button_cb);
+  insideb = new ToggleButton(200,0,50,25,"inside");
+  insideb->callback(button_cb);
+  centerb = new ToggleButton(250,0,50,25,"center");
+  centerb->callback(button_cb);
+  wrapb = new ToggleButton(300,0,50,25,"wrap");
+  wrapb->callback(button_cb);
+  clipb = new ToggleButton(350,0,50,25,"clip");
+  clipb->callback(button_cb);
+  g->end();
+
+  fontslider=new ValueSlider(50,325,350,25,"Font:");
+  fontslider->type(Slider::TICK_ABOVE);
+  fontslider->clear_flag(ALIGN_MASK);
+  fontslider->set_flag(ALIGN_LEFT);
+  fontslider->range(0,15);
+  fontslider->step(1);
+  fontslider->value(0);
+  fontslider->callback(font_cb);
+
+  sizes= new ValueSlider(50,350,350,25,"Size:");
+  sizes->type(Slider::TICK_ABOVE|Slider::LOG);
+  sizes->clear_flag(ALIGN_MASK);
+  sizes->set_flag(ALIGN_LEFT);
+  sizes->range(1,64);
+  //sizes->step(1);
+  sizes->value(14);
+  sizes->callback(size_cb);
+
+  input = new Input(50,375,350,25);
+  input->static_value(initial);
+  input->when(WHEN_CHANGED);
+  input->callback(input_cb);
+
+  window->resizable(textbox);
+  window->end();
+  window->show(argc,argv);
+  return run();
+}
+
+//
+// End of "$Id: label.cxx 5883 2007-06-06 19:50:47Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/layout.cxx
===================================================================
--- branches/branch-3.0-2011/test2/layout.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/layout.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,109 @@
+// Layout managers test program 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".
+//
+
+#include <stdio.h>
+#include <fltk/Fl.h>
+#include <fltk/Fl_Button.h>
+#include <fltk/Fl_Choice.h>
+#include <fltk/Fl_Light_Button.h>
+#include <fltk/Fl_Align_Group.h>
+#include <fltk/Fl_Window.h>
+
+Fl_Align_Group* lower_half;
+
+void align_cb(Fl_Choice* c,long w) {
+  switch (w) {
+    case 0: lower_half->vertical(!c->value()); break;
+    case 1: 
+    case 2: {
+      Fl_Align new_align = lower_half->align();
+      new_align &= (w == 1) ?
+                   (FL_ALIGN_TOP | FL_ALIGN_BOTTOM) :
+                   (FL_ALIGN_LEFT | FL_ALIGN_RIGHT);
+      if (c->value()) {
+      	if (w == 1) 
+	  new_align |= c->value() > 1 ? FL_ALIGN_RIGHT : FL_ALIGN_LEFT;
+       	  else new_align |= c->value() > 1 ? FL_ALIGN_BOTTOM : FL_ALIGN_TOP;
+      }
+      lower_half->align(new_align);
+    }
+    default: break;
+  }
+  lower_half->layout();
+  lower_half->redraw();
+}
+
+int main(int argc, char ** argv) {
+  Fl_Window *window = new Fl_Window(600,400);
+
+  Fl_Align_Group main_group(0,0,600,400,0,2,1,0,5,5);
+
+  Fl_Align_Group* o = new Fl_Align_Group(0,0,0,0,0,2,false,FL_ALIGN_TOP | FL_ALIGN_LEFT);
+  {
+    Fl_Align_Group* o = new Fl_Align_Group(0,0,0,0,"Tiled Buttons",
+					   3,false,0,10,10);
+    o->box(FL_DOWN_BOX);
+    char *l,labels[18];
+    l=labels;
+    for (int i=1;i<=9;i++) {
+      sprintf(l,"%1d",i);
+      (void) new Fl_Button(0,0,0,0,l);
+      l+=2;
+    }
+    o->end();
+  }
+  {
+    Fl_Align_Group* o=new Fl_Align_Group(0,0,0,0,"Fl_Align_Group options",
+					 3,true,0,10,10);
+    o->box(FL_DOWN_BOX);
+    static const char* labels[3][3]={{"Vertical","Horizontal",""},
+				     {"Center","Left","Right"},
+				     {"Center","Top","Bottom"}};
+    Fl_Choice* c;
+    for (int i=0;i<3;i++) {
+      c = new Fl_Choice(0,0,0,0);
+      for (int j=0;j<3;j++) {c->add(labels[i][j]);if (i==0 && j==1) break;}
+      c->callback((Fl_Callback*)align_cb);
+      c->user_data((void*)i);
+      c->value(0);
+    }
+    o->end();
+  }
+  o->end();
+  o = lower_half = new Fl_Align_Group(0,0,0,0,0,4,true,0,10,10);
+  o->box(FL_DOWN_BOX);
+  static const char* labels[24]={"Although","these","labels","have",
+				 "different","lengths",",","the",
+				 "widgets","they","belong","to",
+				 "are","properly","aligned",".",
+				 "Variable","lenghts\nare","respected\n,",
+				 "as\nseen","h","e","r","e"};
+  for (int i=0;i<24;i++) (void) new Fl_Button(0,0,0,0,labels[i]);
+  o->end();
+
+  main_group.end();
+  window->resizable(main_group);
+  window->end();
+  window->show(argc,argv);
+  return Fl::run();
+}
+

Added: branches/branch-3.0-2011/test2/line_style.cxx
===================================================================
--- branches/branch-3.0-2011/test2/line_style.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/line_style.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,128 @@
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Item.h>
+#include <fltk/ValueSlider.h>
+#include <fltk/draw.h>
+#include <fltk/Choice.h>
+using namespace fltk;
+
+Window *form;
+Slider *sliders[8];
+Choice *choice[3];
+
+class test_box: public Window {
+  void draw();
+public:
+  test_box(int x,int y,int w,int h,const char *l=0)
+    : Window(x,y,w,h,l) {}
+} *test;
+
+void test_box::draw() {
+  Window::draw();
+  setcolor(fltk::color((uchar)(sliders[0]->value()),
+		       (uchar)(sliders[1]->value()),
+		       (uchar)(sliders[2]->value())));
+  char buf[5];
+  buf[0] = char(sliders[4]->value());
+  buf[1] = char(sliders[5]->value());
+  buf[2] = char(sliders[6]->value());
+  buf[3] = char(sliders[7]->value());
+  buf[4] = 0;
+  line_style(
+    (int)(choice[0]->get_item()->argument()) +
+    (int)(choice[1]->get_item()->argument()) +
+    (int)(choice[2]->get_item()->argument()),
+    (int)(sliders[3]->value()),
+    buf);
+  strokerect(10,10,w()-20,h()-20);
+  addvertex(35, 35);
+  addvertex(w()-35, h()-35);
+  addvertex(w()/2, 35);
+  addvertex(35, h()/2);
+  strokepath();
+  drawpoint(w()-35, 35);
+  drawline(35, h()*3/4, w()-35, h()*3/4);
+  // you must reset the line type when done:
+  line_style(SOLID);
+}
+
+void build_style_menu(Group *g) {
+  g->begin();
+  (new Item("fltk::SOLID"))->argument(SOLID);
+  (new Item("fltk::DASH"))->argument(DASH);
+  (new Item("fltk::DOT"))->argument(DOT);
+  (new Item("fltk::DASHDOT"))->argument(DASHDOT);
+  (new Item("fltk::DASHDOTDOT"))->argument(DASHDOTDOT);
+  g->end();
+}
+
+void build_cap_menu(Group *g) {
+  g->begin();
+  new Item("default");
+  (new Item("fltk::CAP_FLAT"))->argument(CAP_FLAT);
+  (new Item("fltk::CAP_ROUND"))->argument(CAP_ROUND);
+  (new Item("fltk::CAP_SQUARE"))->argument(CAP_SQUARE);
+  g->end();
+}
+
+void build_join_menu(Group *g) {
+  g->begin();
+  new Item("default");
+  (new Item("fltk::JOIN_MITER"))->argument(JOIN_MITER);
+  (new Item("fltk::JOIN_ROUND"))->argument(JOIN_ROUND);
+  (new Item("fltk::JOIN_BEVEL"))->argument(JOIN_BEVEL);
+  g->end();
+}
+
+void do_redraw(Widget*,void*)
+{
+    test->redraw();
+}
+
+void makeform(const char *) {
+  form = new Window(500,210,"line_style() test");
+  form->begin();
+  sliders[0]= new ValueSlider(280,10,180,20,"R");
+  sliders[0]->maximum(255);
+  sliders[1]= new ValueSlider(280,30,180,20,"G");
+  sliders[1]->maximum(255);
+  sliders[2]= new ValueSlider(280,50,180,20,"B");
+  sliders[2]->maximum(255);
+  choice[0]= new Choice(280,70,180,20,"Style");
+  build_style_menu(choice[0]);
+  choice[1]= new Choice(280,90,180,20,"Cap");
+  build_cap_menu(choice[1]);
+  choice[2]= new Choice(280,110,180,20,"Join");
+  build_join_menu(choice[2]);
+  sliders[3]= new ValueSlider(280,130,180,20,"Width");
+  sliders[3]->maximum(20);
+  sliders[4] = new Slider(200,170,70,20,"Dash");
+  sliders[4]->align(ALIGN_TOP|ALIGN_LEFT);
+  sliders[4]->maximum(40);
+  sliders[5] = new Slider(270,170,70,20);
+  sliders[5]->maximum(40);
+  sliders[6] = new Slider(340,170,70,20);
+  sliders[6]->maximum(40);
+  sliders[7] = new Slider(410,170,70,20);
+  sliders[7]->maximum(40);
+  int i;
+  for (i=0;i<8;i++) {
+    sliders[i]->type(1);
+    if (i<4) sliders[i]->align(ALIGN_LEFT);
+    sliders[i]->callback((Callback*)do_redraw);
+    sliders[i]->step(1);
+  }
+  for (i=0;i<3;i++) {
+    choice[i]->value(0);
+    choice[i]->callback((Callback*)do_redraw);
+  }
+  test=new test_box(10,10,190,190);
+  form->resizable(test);
+  form->end();
+}
+
+int main(int argc, char **argv) {
+  makeform(argv[0]);
+  form->show(argc,argv);
+  return run();
+}

Added: branches/branch-3.0-2011/test2/linetype.cxx
===================================================================
--- branches/branch-3.0-2011/test2/linetype.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/linetype.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,123 @@
+#include <fltk/Fl.h>
+#include <fltk/Fl_Window.h>
+#include <fltk/Fl_Value_Slider.h>
+#include <fltk/fl_draw.h>
+#include <fltk/Fl_Choice.h>
+
+Fl_Window *form;
+Fl_Slider *sliders[8];
+Fl_Choice *choice[3];
+
+class test_box: public Fl_Window {
+  void draw();
+public:
+  test_box(int x,int y,int w,int h,const char *l=0)
+    : Fl_Window(x,y,w,h,l) {}
+}*test;
+
+void test_box::draw() {
+  Fl_Window::draw();
+  fl_color(fl_rgb((uchar)(sliders[0]->value()),
+		  (uchar)(sliders[1]->value()),
+		  (uchar)(sliders[2]->value())));
+  char buf[5];
+  buf[0] = char(sliders[4]->value());
+  buf[1] = char(sliders[5]->value());
+  buf[2] = char(sliders[6]->value());
+  buf[3] = char(sliders[7]->value());
+  buf[4] = 0;
+  fl_line_style(
+    (int)(choice[0]->mvalue()->argument()) +
+    (int)(choice[1]->mvalue()->argument()) +
+    (int)(choice[2]->mvalue()->argument()),
+    (int)(sliders[3]->value()),
+    buf);
+  fl_rect(10,10,w()-20,h()-20);
+  fl_begin_line();
+  fl_vertex(35, 35);
+  fl_vertex(w()-35, h()-35);
+  fl_vertex(w()-40, 35);
+  fl_vertex(35, h()/2);
+  fl_end_line();
+  // you must reset the line type when done:
+  fl_line_style(FL_SOLID);
+}
+
+Fl_Menu_Item style_menu[] = {
+  {"FL_SOLID",	0, 0, (void*)FL_SOLID},
+  {"FL_DASH",	0, 0, (void*)FL_DASH},
+  {"FL_DOT",	0, 0, (void*)FL_DOT},
+  {"FL_DASHDOT",0, 0, (void*)FL_DASHDOT},
+  {"FL_DASHDOTDOT", 0, 0, (void*)FL_DASHDOTDOT},
+  {0}
+};
+
+Fl_Menu_Item cap_menu[] = {
+  {"default",		0, 0, 0},
+  {"FL_CAP_FLAT",	0, 0, (void*)FL_CAP_FLAT},
+  {"FL_CAP_ROUND",	0, 0, (void*)FL_CAP_ROUND},
+  {"FL_CAP_SQUARE",	0, 0, (void*)FL_CAP_SQUARE},
+  {0}
+};
+
+Fl_Menu_Item join_menu[] = {
+  {"default",		0, 0, 0},
+  {"FL_JOIN_MITER",	0, 0, (void*)FL_JOIN_MITER},
+  {"FL_JOIN_ROUND",	0, 0, (void*)FL_JOIN_ROUND},
+  {"FL_JOIN_BEVEL",	0, 0, (void*)FL_JOIN_BEVEL},
+  {0}
+};
+
+void do_redraw(Fl_Widget*,void*)
+{
+    test->redraw();
+}
+
+void makeform(const char *) {
+  form = new Fl_Window(500,210,"line type test");
+  sliders[0]= new Fl_Value_Slider(280,10,180,20,"R");
+  sliders[0]->bounds(0,255);
+  sliders[1]= new Fl_Value_Slider(280,30,180,20,"G");
+  sliders[1]->bounds(0,255);
+  sliders[2]= new Fl_Value_Slider(280,50,180,20,"B");
+  sliders[2]->bounds(0,255);
+  choice[0]= new Fl_Choice(280,70,180,20,"Style");
+  choice[0]->menu(style_menu);
+  choice[1]= new Fl_Choice(280,90,180,20,"Cap");
+  choice[1]->menu(cap_menu);
+  choice[2]= new Fl_Choice(280,110,180,20,"Join");
+  choice[2]->menu(join_menu);
+  sliders[3]= new Fl_Value_Slider(280,130,180,20,"Width");
+  sliders[3]->bounds(0,20);
+  sliders[4] = new Fl_Slider(200,170,70,20,"Dash");
+  sliders[4]->align(FL_ALIGN_TOP_LEFT);
+  sliders[4]->bounds(0,40);
+  sliders[5] = new Fl_Slider(270,170,70,20);
+  sliders[5]->bounds(0,40);
+  sliders[6] = new Fl_Slider(340,170,70,20);
+  sliders[6]->bounds(0,40);
+  sliders[7] = new Fl_Slider(410,170,70,20);
+  sliders[7]->bounds(0,40);
+  int i;
+  for (i=0;i<8;i++) {
+    sliders[i]->type(1);
+    if (i<4) sliders[i]->align(FL_ALIGN_LEFT);
+    sliders[i]->callback((Fl_Callback*)do_redraw);
+    sliders[i]->step(1);
+  }
+  for (i=0;i<3;i++) {
+    choice[i]->value(0);
+    choice[i]->callback((Fl_Callback*)do_redraw);
+  }
+  test=new test_box(10,10,190,190);
+  test->end();
+  form->resizable(test);
+  form->end();
+}
+
+main(int argc, char **argv) {
+  makeform(argv[0]);
+  form->show(argc,argv);
+  return Fl::run();
+}
+

Added: branches/branch-3.0-2011/test2/list.cxx
===================================================================
--- branches/branch-3.0-2011/test2/list.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/list.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,53 @@
+// Test of List to see if all menus can handle it.
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/PopupMenu.h>
+#include <fltk/Choice.h>
+#include <fltk/Browser.h>
+#include <fltk/StringList.h>
+#include <fltk/Item.h>
+#include <fltk/string.h>
+using namespace fltk;
+
+const int SIZE = 50;
+const int DEPTH = 3;
+
+class MyList : public StringHierarchy {
+public:
+
+  int children(const Menu* group, const int* indexes, int level) {
+    if (level < DEPTH) return SIZE;
+    return -1;
+  }
+
+  const char* label(const Menu* group, const int* indexes, int level) {
+    int n = indexes[level];
+    // FLTK is never supposed to ask for a widget outside the children range,
+    // so this should never print:
+    if (n < 0 || n >= SIZE) {printf("Asked for item %d\n", n); return 0;}
+    // produce a label. You can reuse the buffer:
+    static char buffer[100];
+    if (level) sprintf(buffer, "Level %d Item %d", level, n);
+    else sprintf(buffer, "Top Item %d", n);
+    return buffer;
+  }
+};
+
+int main(int argc, char** argv) {
+  MyList list;
+  Window window(330,300,"Sample fltk::List subclass");
+  window.begin();
+  Browser browser(10,10,200,280);
+  browser.list(&list);
+  browser.indented(true);
+  Choice choice(220,10,100,25);
+  choice.list(&list);
+  PopupMenu button(220,55,100,25,"pushme");
+  button.list(&list);
+  window.resizable(browser);
+  window.resize_align(ALIGN_TOP);
+  window.end();
+  window.show(argc, argv);
+  return fltk::run();
+}

Added: branches/branch-3.0-2011/test2/list_visuals.cxx
===================================================================
--- branches/branch-3.0-2011/test2/list_visuals.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/list_visuals.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,227 @@
+//
+// "$Id: list_visuals.cxx 6143 2008-07-16 04:51:50Z spitzak $"
+//
+// Visual list utility for the Fast Light Tool Kit (FLTK).
+//
+// List all the visuals on the screen, and dumps anything interesting
+// about them to stdout.
+//
+// Does not use fltk.
+//
+// This file may be #included in another program to make a function to
+// call to list the visuals.  Fl.h must be included first to indicate 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".
+//
+
+#include <config.h>
+
+#if !(USE_X11)
+#include <fltk/error.h>
+
+int main(int, char**) {
+  fltk::fatal("Only X has this sillyness.");
+  return 1;
+}
+
+#else
+
+#include <config.h>
+#include <fltk/x.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+const char *ClassNames[] = {
+  "StaticGray ",
+  "GrayScale  ",
+  "StaticColor",
+  "PseudoColor",
+  "TrueColor  ",
+  "DirectColor"
+};
+
+// SERVER_OVERLAY_VISUALS property element:
+typedef struct _OverlayInfo {
+  long overlay_visual;
+  long transparent_type;
+  long value;
+  long layer;
+} OverlayInfo;
+
+#if HAVE_MULTIBUF
+#define Window XWindow
+#include <X11/extensions/multibuf.h>
+#undef Window
+#endif
+
+#if HAVE_XDBE
+#define Window XWindow
+#include <X11/extensions/Xdbe.h>
+#undef Window
+#endif
+
+
+static void print_mask(XVisualInfo* p) {
+  int n = 0;
+  int what = 0;
+  int print_anything = 0;
+  char buf[20];
+  char *q = buf;
+  *q = 0;
+  int b; unsigned int m; for (b=32,m=0x80000000; ; b--,m>>=1) {
+    int new_what = 0;
+    if (p->red_mask&m) new_what = 'r';
+    else if (p->green_mask&m) new_what = 'g';
+    else if (p->blue_mask&m) new_what = 'b';
+    else new_what = '?';
+    if (new_what != what) {
+      if (what && (what != '?' || print_anything)) {
+	q += sprintf(q,"%d%c", n, what);
+	print_anything = 1;
+      }
+      what = new_what;
+      n = 1;
+    } else {
+      n++;
+    }
+    if (!b) break;
+  }
+  printf("%7s", buf);
+}
+
+void list_visuals() {
+  using namespace fltk;
+  fltk::open_display();
+  XVisualInfo vTemplate;
+  int num;
+  XVisualInfo *visualList = XGetVisualInfo(xdisplay,0,&vTemplate,&num);
+
+  XPixmapFormatValues *pfvlist;
+  static int numpfv;
+  pfvlist = XListPixmapFormats(xdisplay, &numpfv);
+
+  OverlayInfo *overlayInfo = 0;
+  int numoverlayinfo = 0;
+  Atom overlayVisualsAtom = XInternAtom(xdisplay,"SERVER_OVERLAY_VISUALS",1);
+  if (overlayVisualsAtom) {
+    unsigned long sizeData, bytesLeft;
+    Atom actualType;
+    int actualFormat;
+    if (!XGetWindowProperty(xdisplay, RootWindow(xdisplay, xscreen),
+			   overlayVisualsAtom, 0L, 10000L, False,
+			   overlayVisualsAtom, &actualType, &actualFormat,
+			   &sizeData, &bytesLeft,
+			   (unsigned char **)(void*)&overlayInfo))
+      numoverlayinfo = int(sizeData/4);
+  }
+
+#if HAVE_MULTIBUF
+  int event_base, error_base;
+  XmbufBufferInfo *mbuf, *sbuf;
+  int nmbuf = 0, nsbuf = 0;
+  if (XmbufQueryExtension(xdisplay,&event_base, &error_base)) {
+    XmbufGetScreenInfo(xdisplay,RootWindow(xdisplay,xscreen),
+		       &nmbuf, &mbuf, &nsbuf, &sbuf);
+  }
+#endif
+
+#if HAVE_XDBE
+  int event_base, error_base;
+  int numdouble = 0;
+  XdbeVisualInfo *dbe = 0;
+  if (XdbeQueryExtension(xdisplay, &event_base, &error_base)) {
+    XWindow root = RootWindow(xdisplay,xscreen);
+    int numscreens = 1;
+    XdbeScreenVisualInfo *a = XdbeGetVisualInfo(xdisplay,&root,&numscreens);
+    if (!a) printf("error getting double buffer visuals\n");
+    else {
+      dbe = a->visinfo;
+      numdouble = a->count;
+    }
+  }
+#endif
+
+  for (int i=0; i<num; i++) {
+    XVisualInfo *p = visualList+i;
+
+    XPixmapFormatValues *pfv;
+    for (pfv = pfvlist; ; pfv++) {
+      if (pfv >= pfvlist+numpfv) {pfv = 0; break;} // should not happen!
+      if (pfv->depth == p->depth) break;
+    }
+
+    int j = pfv ? pfv->bits_per_pixel : 0;
+    printf(" %2ld: %s %2d/%d", p->visualid, ClassNames[p->c_class],
+	   p->depth, j);
+    if (j < 10) putchar(' ');
+
+    print_mask(p);
+
+    for (j=0; j<numoverlayinfo; j++) {
+      OverlayInfo *o = &overlayInfo[j];
+      if (o->overlay_visual == long(p->visualid)) {
+	printf(" overlay(");
+	if (o->transparent_type==1) printf("transparent pixel %ld, ",o->value);
+	else if (o->transparent_type==2) printf("transparent mask %ld, ",o->value);
+	else printf("opaque, ");
+	printf("layer %ld)", o->layer);
+      }
+    }
+
+#if HAVE_MULTIBUF
+    for (j=0; j<nmbuf; j++) {
+      XmbufBufferInfo *m = &mbuf[j];
+      if (m->visualid == p->visualid)
+	printf(" multibuffer(%d)", m->max_buffers);
+    }
+    for (j=0; j<nsbuf; j++) {
+      XmbufBufferInfo *m = &sbuf[j];
+      if (m->visualid == p->visualid)
+	printf(" stereo multibuffer(%d)", m->max_buffers);
+    }
+#endif
+
+#if HAVE_XDBE
+    for (j = 0; j < numdouble; j++) if (dbe[j].visual == p->visualid)
+      printf(" doublebuf(perflevel %d)",dbe[j].perflevel);
+#endif
+
+    if (p->visualid==XVisualIDFromVisual(DefaultVisual(xdisplay,xscreen)))
+      printf(" (default visual)");
+
+    putchar('\n');
+  }
+}
+
+#ifndef fltk_run_h
+#include <fltk/run.h>
+int main(int argc, char **argv) {
+  if (argc == 1);
+  else if (argc == 2 && argv[1][0]!='-') fltk::display(argv[1]);
+  else {fprintf(stderr,"usage: %s <display>\n",argv[0]); exit(1);}
+  list_visuals();
+  return 0;
+}
+#endif
+#endif
+
+//
+// End of "$Id: list_visuals.cxx 6143 2008-07-16 04:51:50Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/makedepend
===================================================================

Added: branches/branch-3.0-2011/test2/mandelbrot.cxx
===================================================================
--- branches/branch-3.0-2011/test2/mandelbrot.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/mandelbrot.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,231 @@
+//
+// "$Id: mandelbrot.cxx 6038 2008-02-21 00:43:54Z fabien $"
+//
+// Mandelbrot set demo 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".
+//
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <fltk/run.h>
+#include <fltk/error.h>
+#include <fltk/draw.h>
+#include <fltk/visual.h>
+#include <fltk/events.h>
+#include <fltk/Widget.h>
+#include "mandelbrot_ui.h"
+
+DrawingWindow mbrot;
+DrawingWindow jbrot;
+
+void idle() {
+  if (!mbrot.d->idle() && !(jbrot.d && jbrot.d->idle())) fltk::set_idle(0);
+}
+
+void set_idle() {
+  fltk::set_idle(idle);
+}
+
+static void window_callback(fltk::Widget*, void*) {
+  exit(0);
+}
+
+int main(int argc, char **argv) {
+  mbrot.make_window();
+  mbrot.window->clear_double_buffer(); // otherwise make_current does not work
+  mbrot.d->X = -.75;
+  mbrot.d->scale = 2.5;
+  mbrot.update_label();
+  int i = 0;
+  if (fltk::args(argc, argv, i) < argc)
+    fltk::fatal(fltk::help);
+  fltk::visual(fltk::RGB);
+  mbrot.window->callback(window_callback);
+  mbrot.window->show(argc, argv);
+  return fltk::run();
+}
+
+void DrawingWindow::update_label() {
+  char buffer[128];
+  sprintf(buffer, "%+.10f", d->X); x_input->text(buffer);
+  sprintf(buffer, "%+.10f", d->Y); y_input->text(buffer);
+  sprintf(buffer, "%.2g", d->scale); w_input->text(buffer);
+}
+
+void DrawingArea::draw() {
+  draw_box();
+  drawn = 0;
+  set_idle();
+}
+
+int DrawingArea::idle() {
+  if (!window()->visible()) return 0;
+  if (drawn < nextline) {
+    make_current(); // deleted window-> from this for fltk2.0
+    int yy = drawn + 4;
+    if (yy >= sy && yy <= sy + sh) erase_box();
+    fltk::drawimage(buffer + drawn*W, fltk::MONO, fltk::Rectangle(3, yy, W, 1), W);
+    //fltk::draw_image_mono(buffer+drawn*W, 3,yy,W,1,1,W);
+    drawn++;
+    return 1;
+  }
+  if (nextline < H) {
+    if (!buffer) buffer = new uchar[W*H];
+    double yy = Y + (H / 2 - nextline) * scale / W;
+    double yi = yy; if (julia) yy = jY;
+    uchar *p = buffer + nextline * W;
+    for (int xi = 0; xi < W; xi++) {
+      double xx = X + (xi - W / 2) * scale / W;
+      double wx = xx; double wy = yi;
+      if (julia) xx = jX;
+      for (int i = 0; ; i++) {
+        if (i >= iterations) {
+          *p = 0; break;
+        }
+        double t = wx * wx - wy * wy + xx;
+        wy = 2 * wx * wy + yy;
+        wx = t;
+        if (wx*wx + wy*wy > 4) {
+          wx = t = 1 - double(i) / (1 << 10);
+          if (t <= 0) t = 0; else for (i = brightness; i--;) t *= wx;
+          *p = 255 - int(254 * t);
+          break;
+        }
+      }
+      p++;
+    }
+    nextline++;
+    return nextline < H;
+  }
+  return 0;
+}
+
+void DrawingArea::erase_box() {
+  make_current();
+  fltk::overlay_clear();
+}
+
+// For fltk2.0, all the occurances of x() and y() were replaced by 0:
+
+int DrawingArea::handle(int event) {
+  static int ix, iy;
+  static int dragged;
+  static int button;
+  int x2, y2;
+  switch (event) {
+    case fltk::PUSH:
+      erase_box();
+      ix = fltk::event_x(); if (ix < 0) ix = 0; if (ix >= w()) ix = w() - 1;
+      iy = fltk::event_y(); if (iy < 0) iy = 0; if (iy >= h()) iy = h() - 1;
+      dragged = 0;
+      button = fltk::event_button();
+      return 1;
+    case fltk::DRAG:
+      dragged = 1;
+      erase_box();
+      x2 = fltk::event_x(); if (x2 < 0) x2 = 0; if (x2 >= w()) x2 = w() - 1;
+      y2 = fltk::event_y(); if (y2 < 0) y2 = 0; if (y2 >= h()) y2 = h() - 1;
+      if (button != 1) {
+        ix = x2; iy = y2; return 1;
+      }
+      if (ix < x2) {
+        sx = ix; sw = x2 - ix;
+      } else {
+        sx = x2; sw = ix - x2;
+      }
+      if (iy < y2) {
+        sy = iy; sh = y2 - iy;
+      } else {
+        sy = y2; sh = iy - y2;
+      }
+      make_current();
+      fltk::overlay_rect(sx, sy, sw, sh);
+      return 1;
+    case fltk::RELEASE:
+      if (button == 1) {
+        erase_box();
+        if (dragged && sw > 3 && sh > 3) {
+          X = X + (sx + sw / 2 - W / 2) * scale / W;
+          Y = Y + (-sy - sh / 2 + H / 2) * scale / W;
+          scale = sw * scale / W;
+        } else if (!dragged) {
+          scale = 2 * scale;
+          if (julia) {
+            if (scale >= 4) {
+              scale = 4;
+              X = Y = 0;
+            }
+          } else {
+            if (scale >= 2.5) {
+              scale = 2.5;
+              X = -.75;
+              Y = 0;
+            }
+          }
+        } else return 1;
+        ((DrawingWindow*)(user_data()))->update_label();
+        new_display();
+      } else if (!julia) {
+        if (!jbrot.d) {
+          jbrot.make_window();
+          jbrot.window->clear_double_buffer(); // otherwise make_current does not work
+          jbrot.d->julia = 1;
+          jbrot.d->X = 0;
+          jbrot.d->Y = 0;
+          jbrot.d->scale = 4;
+          jbrot.update_label();
+        }
+        jbrot.d->jX = X + (ix - W / 2) * scale / W;
+        jbrot.d->jY = Y + (H / 2 - iy) * scale / W;
+        static char s[128];
+        sprintf(s, "Julia %.7f %.7f", jbrot.d->jX, jbrot.d->jY);
+        jbrot.window->label(s);
+        jbrot.window->show();
+        jbrot.d->new_display();
+      }
+      return 1;
+    default:
+      return Widget::handle(event);
+  }
+}
+
+void DrawingArea::new_display() {
+  drawn = nextline = 0;
+  set_idle();
+}
+
+#include <fltk/layout.h> // added for fltk2.0
+
+void DrawingArea::layout() {
+  if (layout_damage() & fltk::LAYOUT_WH) {
+    W = w() - 6;
+    H = h() - 8;
+    if (buffer) {
+      delete[] buffer; buffer = 0; new_display();
+    }
+  }
+  Widget::layout();
+}
+
+//
+// End of "$Id: mandelbrot.cxx 6038 2008-02-21 00:43:54Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/mandelbrot.h
===================================================================
--- branches/branch-3.0-2011/test2/mandelbrot.h	                        (rev 0)
+++ branches/branch-3.0-2011/test2/mandelbrot.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,68 @@
+//
+// "$Id: mandelbrot.h 5971 2007-11-14 01:49:47Z dejan $"
+//
+// Mandelbrot set 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".
+//
+
+#include <fltk/Widget.h>
+
+class DrawingArea : public fltk::Widget {
+  void draw();
+public:
+  uchar *buffer;
+  int W, H;
+  int nextline;
+  int drawn;
+  int julia;
+  int iterations;
+  int brightness;
+  double jX, jY;
+  double X, Y, scale;
+  int sx, sy, sw, sh; // selection box
+  void erase_box();
+  int handle(int);
+  void layout(); // resize() replaced by this for fltk2.0
+  void new_display();
+  enum {
+    MAX_BRIGHTNESS = 16,
+    DEFAULT_BRIGHTNESS = 16,
+    MAX_ITERATIONS = 14,
+    DEFAULT_ITERATIONS = 7
+  };
+  DrawingArea(int x, int y, int w, int h) : fltk::Widget(x, y, w, h) {
+    buffer = 0;
+    W = w - 6;
+    H = h - 8;
+    nextline = 0;
+    drawn = 0;
+    julia = 0;
+    X = Y = 0;
+    scale = 4.0;
+    iterations = 1 << DEFAULT_ITERATIONS;
+    brightness = DEFAULT_BRIGHTNESS;
+  }
+  int idle();
+};
+
+//
+// End of "$Id: mandelbrot.h 5971 2007-11-14 01:49:47Z dejan $".
+//

Added: branches/branch-3.0-2011/test2/mandelbrot_ui.cxx
===================================================================
--- branches/branch-3.0-2011/test2/mandelbrot_ui.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/mandelbrot_ui.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,138 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0100
+
+#include "mandelbrot_ui.h"
+
+inline void DrawingWindow::cb_x_input_i(fltk::FloatInput* o, void*) {
+  d->X = o->fvalue();
+  d->new_display();
+}
+void DrawingWindow::cb_x_input(fltk::FloatInput* o, void* v) {
+  ((DrawingWindow*)(o->parent()->user_data()))->cb_x_input_i(o, v);
+}
+
+inline void DrawingWindow::cb_y_input_i(fltk::FloatInput* o, void*) {
+  d->Y = o->fvalue();
+  d->new_display();
+}
+void DrawingWindow::cb_y_input(fltk::FloatInput* o, void* v) {
+  ((DrawingWindow*)(o->parent()->user_data()))->cb_y_input_i(o, v);
+}
+
+inline void DrawingWindow::cb_w_input_i(fltk::FloatInput* o, void*) {
+  d->scale = o->fvalue();
+  d->new_display();
+}
+void DrawingWindow::cb_w_input(fltk::FloatInput* o, void* v) {
+  ((DrawingWindow*)(o->parent()->user_data()))->cb_w_input_i(o, v);
+}
+
+inline void DrawingWindow::cb_brightness_i(fltk::Slider* o, void*) {
+  d->brightness = int(o->value());
+  d->new_display();
+}
+void DrawingWindow::cb_brightness(fltk::Slider* o, void* v) {
+  ((DrawingWindow*)(o->parent()->user_data()))->cb_brightness_i(o, v);
+}
+
+inline void DrawingWindow::cb_iterations_i(fltk::Slider* o, void*) {
+  d->iterations = 1 << int(o->value());
+  d->new_display();
+}
+void DrawingWindow::cb_iterations(fltk::Slider* o, void* v) {
+  ((DrawingWindow*)(o->parent()->user_data()))->cb_iterations_i(o, v);
+}
+
+void DrawingWindow::make_window() {
+  fltk::Window* w;
+  {
+    fltk::Window* o = window = new fltk::Window(430, 510);
+    w = o;
+    o->set_vertical();
+    o->user_data((void*)(this));
+    o->begin();
+    {
+      DrawingArea* o = d = new DrawingArea(10, 70, 410, 430);
+      o->set_vertical();
+      o->box(fltk::DOWN_BOX);
+      o->color((fltk::Color)56);
+      o->selection_color((fltk::Color)47);
+      o->user_data((void*)(this));
+      fltk::Group::current()->resizable(o);
+      o->tooltip("Left-click will zoom out by 2.\nLeft-drag will select a region to zoom in to.\
+                 \nRight-click will create the Julia set viewer and set it to that point.");
+    }
+    {
+      fltk::FloatInput* o = x_input = new fltk::FloatInput(10, 10, 130, 25, "x");
+      o->type(1);
+      o->labelfont(fltk::HELVETICA_ITALIC);
+      o->textfont(fltk::HELVETICA_BOLD);
+      o->labelsize(10);
+      o->callback((fltk::Callback*)cb_x_input);
+      o->align(fltk::ALIGN_LEFT | fltk::ALIGN_INSIDE);
+      o->tooltip("x coordinate of window center");
+      o->when(fltk::WHEN_ENTER_KEY | fltk::WHEN_RELEASE);
+    }
+    {
+      fltk::FloatInput* o = y_input = new fltk::FloatInput(150, 10, 130, 25, "y");
+      o->type(1);
+      o->labelfont(fltk::HELVETICA_ITALIC);
+      o->textfont(fltk::HELVETICA_BOLD);
+      o->labelsize(10);
+      o->callback((fltk::Callback*)cb_y_input);
+      o->align(fltk::ALIGN_LEFT | fltk::ALIGN_INSIDE);
+      o->tooltip("y coordinate of window center");
+      o->when(fltk::WHEN_ENTER_KEY | fltk::WHEN_RELEASE);
+    }
+    {
+      fltk::FloatInput* o = w_input = new fltk::FloatInput(290, 10, 130, 25, "w");
+      o->type(1);
+      o->labelfont(fltk::HELVETICA_ITALIC);
+      o->textfont(fltk::HELVETICA_BOLD);
+      o->labelsize(10);
+      o->callback((fltk::Callback*)cb_w_input);
+      o->align(fltk::ALIGN_LEFT | fltk::ALIGN_INSIDE);
+      o->tooltip("width of the window");
+      o->when(fltk::WHEN_ENTER_KEY | fltk::WHEN_RELEASE);
+    }
+    {
+      fltk::Slider* o = new fltk::Slider(70, 40, 160, 15, "brightness:");
+      o->box(fltk::THIN_DOWN_BOX);
+      o->labelsize(10);
+      o->step(1);
+      o->slider_size(16);
+      o->callback((fltk::Callback*)cb_brightness);
+      o->align(fltk::ALIGN_LEFT);
+      o->tooltip("Change mapping from iteration count to gray level so that details are visible\
+                 .");
+      o->range(0, d->MAX_BRIGHTNESS);
+      o->value(d->DEFAULT_BRIGHTNESS);
+      o->box(fltk::DOWN_BOX);
+      o->step(1 / d->MAX_BRIGHTNESS);
+    }
+    {
+      fltk::InvisibleBox* o = new fltk::InvisibleBox(240, 40, 180, 26, "FLTK Mandelbrot Viewer");
+      o->box(fltk::EMBOSSED_BOX);
+      o->labelfont(fltk::HELVETICA_BOLD);
+      o->labelsize(10);
+      o->align(fltk::ALIGN_RIGHT | fltk::ALIGN_INSIDE);
+      o->deactivate();
+    }
+    {
+      fltk::Slider* o = new fltk::Slider(70, 55, 160, 15, "iterations:");
+      o->box(fltk::THIN_DOWN_BOX);
+      o->labelsize(10);
+      o->step(1);
+      o->slider_size(16);
+      o->callback((fltk::Callback*)cb_iterations);
+      o->align(fltk::ALIGN_LEFT);
+      o->tooltip("Set number of iterations before it colors the pixel black. Higher values make\
+                 it more accurate.");
+      o->range(1, d->MAX_ITERATIONS);
+      o->value(d->DEFAULT_ITERATIONS);
+      o->box(fltk::DOWN_BOX);
+      o->step(1 / d->MAX_ITERATIONS);
+    }
+    o->end();
+    o->size_range(220, 220);
+  }
+}

Added: branches/branch-3.0-2011/test2/mandelbrot_ui.fl
===================================================================
--- branches/branch-3.0-2011/test2/mandelbrot_ui.fl	                        (rev 0)
+++ branches/branch-3.0-2011/test2/mandelbrot_ui.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,79 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.0002 
+header_name {.h} 
+code_name {.cxx} 
+gridx 10 
+gridy 10 
+snap 3
+decl {\#include "mandelbrot.h"} {public
+} 
+
+class Drawing_Window {open
+} {
+  Function {make_window()} {open return_type void
+  } {
+    {fltk::Window} window {open
+      xywh {142 207 430 510} resizable
+      extra_code {o->size_range(220,220);} visible
+    } {
+      {fltk::InvisibleBox} d {
+        user_data this user_data_type {void*}
+        tooltip {Left-click will zoom out by 2.
+Left-drag will select a region to zoom in to.
+Right-click will create the Julia set viewer and set it to that point.}
+        xywh {10 70 410 430} resizable box DOWN_BOX color 56 selection_color 47
+        class Drawing_Area
+      }
+      {fltk::Input} x_input {
+        label x
+        callback {d->X = o->fvalue();
+d->new_display();}
+        tooltip {x coordinate of window center}
+        xywh {10 10 130 25} type Float align 20 labelfont 2 textfont 1 labelsize 10
+        extra_code {o->when(FL_WHEN_ENTER_KEY|FL_WHEN_RELEASE);}
+      }
+      {fltk::Input} y_input {
+        label y
+        callback {d->Y = o->fvalue();
+d->new_display();}
+        tooltip {y coordinate of window center}
+        xywh {150 10 130 25} type Float align 20 labelfont 2 textfont 1 labelsize 10
+        extra_code {o->when(FL_WHEN_ENTER_KEY|FL_WHEN_RELEASE);}
+      }
+      {fltk::Input} w_input {
+        label w
+        callback {d->scale = o->fvalue();
+d->new_display();}
+        tooltip {width of the window}
+        xywh {290 10 130 25} type Float align 20 labelfont 2 textfont 1 labelsize 10
+        extra_code {o->when(FL_WHEN_ENTER_KEY|FL_WHEN_RELEASE);}
+      }
+      {fltk::Slider} {} {
+        label {brightness:}
+        callback {d->brightness = int(o->value());
+d->new_display();}
+        tooltip {Change mapping from iteration count to gray level so that details are visible.}
+        xywh {70 40 160 15} align 4 box THIN_DOWN_BOX labelsize 10 step 1 slider_size 16
+        extra_code {o->bounds(0,d->MAX_BRIGHTNESS);
+o->value(d->DEFAULT_BRIGHTNESS);
+o->slider(FL_UP_BOX);}
+      }
+      {fltk::InvisibleBox} {} {
+        label {FLTK Mandelbrot Viewer} selected
+        xywh {240 40 180 26} align 24 deactivate box EMBOSSED_BOX labelfont 1 labelsize 10
+      }
+      {fltk::Slider} {} {
+        label {iterations:}
+        callback {d->iterations = 1<<int(o->value());
+d->new_display();}
+        tooltip {Set number of iterations before it colors the pixel black. Higher values make it more accurate.}
+        xywh {70 55 160 15} align 4 box THIN_DOWN_BOX labelsize 10 step 1 slider_size 16
+        extra_code {o->bounds(1,d->MAX_ITERATIONS);
+o->value(d->DEFAULT_ITERATIONS);
+o->slider(FL_UP_BOX);}
+      }
+    }
+  }
+  decl {void update_label();} {public
+  }
+} 

Added: branches/branch-3.0-2011/test2/mandelbrot_ui.h
===================================================================
--- branches/branch-3.0-2011/test2/mandelbrot_ui.h	                        (rev 0)
+++ branches/branch-3.0-2011/test2/mandelbrot_ui.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,37 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0100
+
+#ifndef mandelbrot_ui_h
+#define mandelbrot_ui_h
+#include "mandelbrot.h"
+#include <fltk/Window.h>
+#include <fltk/FloatInput.h>
+#include <fltk/Slider.h>
+#include <fltk/InvisibleBox.h>
+
+class DrawingWindow  {
+public:
+  fltk::Window *window;
+  void make_window();
+  DrawingArea *d;
+  fltk::FloatInput *x_input;
+private:
+  inline void cb_x_input_i(fltk::FloatInput*, void*);
+  static void cb_x_input(fltk::FloatInput*, void*);
+public:
+  fltk::FloatInput *y_input;
+private:
+  inline void cb_y_input_i(fltk::FloatInput*, void*);
+  static void cb_y_input(fltk::FloatInput*, void*);
+public:
+  fltk::FloatInput *w_input;
+private:
+  inline void cb_w_input_i(fltk::FloatInput*, void*);
+  static void cb_w_input(fltk::FloatInput*, void*);
+  inline void cb_brightness_i(fltk::Slider*, void*);
+  static void cb_brightness(fltk::Slider*, void*);
+  inline void cb_iterations_i(fltk::Slider*, void*);
+  static void cb_iterations(fltk::Slider*, void*);
+public:
+  void update_label();
+};
+#endif

Added: branches/branch-3.0-2011/test2/menu.cxx
===================================================================
--- branches/branch-3.0-2011/test2/menu.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/menu.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,200 @@
+// Test of the various subclasses of Menu
+
+#include <fltk/run.h>
+#include <fltk/Item.h>
+#include <fltk/ItemGroup.h>
+#include <fltk/Divider.h>
+#include <fltk/Window.h>
+#include <fltk/Box.h>
+#include <fltk/MenuBar.h>
+#include <fltk/PopupMenu.h>
+#include <fltk/InputBrowser.h>
+#include <fltk/Choice.h>
+#include <fltk/CycleButton.h>
+#include <fltk/Button.h>
+#include <fltk/draw.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <fltk/Slider.h>
+#include <fltk/StringList.h>
+#include <fltk/events.h>
+#include <fltk/ask.h>
+using namespace fltk;
+
+#define WIDTH 600
+#define HEIGHT 23
+
+void callback(Widget* w, void*) {
+  Menu* menu = (Menu*)w;
+  Widget* item = menu->get_item();
+  printf("Callback for %s, item is %s\n",
+	 menu->label() ? menu->label() : "menu bar",
+	 item ? item->label() ? item->label() : "unnamed" : "none");
+  if (item) item->do_callback();
+  printf("event_button = %d\n", fltk::event_button());
+}
+
+void never_cb(Widget* w, void*) {
+  alert("This callback should not be ever executed");
+}
+
+const char* const strings[] = {
+  "This","is","a","test","of","a","menu","defined","as a","StringArray"
+};
+StringArray thelist(strings, sizeof(strings)/sizeof(*strings));
+
+void build_hierarchy() {
+  Item* ii = new Item("&Alpha");
+  ii->when(WHEN_NEVER);
+  ii->callback(never_cb);
+  new Item("&Beta");
+  new Item("&Gamma");
+  new Item("&Delta");
+  new Item("&Epsilon");
+  ItemGroup* g = new ItemGroup("submenu&1");
+  g->begin();
+  new Item("Item &1");
+  new Item("Item &2");
+  new Item("Item &3");
+  new Item("Item &4");
+  g->end();
+  // now using MenuSection facility:
+  {MenuSection g("submenu&2");
+      (new Item("Item &1"))->textsize(10);
+      (new Item("Item &2"))->textsize(14);
+      (new Item("Item &3"))->textsize(18);
+      (new Item("Item &4"))->textsize(22);
+      //g->deactivate();
+      {MenuSection g1("&nested menu");
+	  new Item("Item &1");
+	  new Item("Item &2");
+	  {MenuSection g2("deeper");
+	      (new Item("Very low level items"))->deactivate();
+	      (new Item("Are here on this menu"))->deactivate();
+	      new Item("In this test");
+	      new Item("Program");
+	  }
+      }
+  }
+}
+
+void quit_cb(Widget*, void*) {exit(0);}
+
+class ListShortcuts : public ShortcutFunctor {
+public:
+  bool handle(const Widget* widget, unsigned key) {
+    printf("Widget=%s shortcut=%s\n", widget->label() ? widget->label() : "NULL", key_name(key));
+    return false;
+  }
+} listShortcuts;
+
+int main(int argc, char **argv) {
+  Window window(WIDTH,400);
+  window.begin();
+  MenuBar menubar(0,0,WIDTH,HEIGHT);
+  menubar.callback(callback);
+  menubar.begin();
+
+  ItemGroup file("&File");
+  file.begin();
+  Item* o = new Item("Quit");
+  o->shortcut(COMMAND+'q');
+  o->callback(quit_cb);
+  new Divider();
+  (new Slider(0,0,100,30))->value(.3);
+  build_hierarchy();
+  file.end();
+  ItemGroup edit("&Edit");
+  edit.begin();
+  (new Item("Undo"))->shortcut(COMMAND+'z');
+  (new Item("Cut"))->shortcut(COMMAND+'x');
+  (new Item("Copy"))->shortcut(COMMAND+'c');
+  (new Item("Paste"))->shortcut(COMMAND+'v');
+  build_hierarchy();
+  edit.end();
+  //edit.deactivate();
+  ItemGroup options("&Options");
+  options.begin();
+  o = new Item("Red"); o->type(Item::RADIO);
+  o = new Item("Green"); o->type(Item::RADIO);
+  o = new Item("Blue"); o->type(Item::RADIO);
+  o = new Item("Aqua"); o->type(Item::RADIO);
+  o = new Item("Toggle 1"); o->type(Item::TOGGLE);
+  o = new Item("Toggle 2"); o->type(Item::TOGGLE);
+  o = new Item("Toggle 3"); o->type(Item::TOGGLE);
+  o = new Item("Toggle 4"); o->type(Item::TOGGLE);
+  options.end();
+  new Divider();
+  Item item("&Toggle"); item.type(Item::TOGGLE);
+  Item but("&button");
+  menubar.end();
+  menubar.tooltip("This is a menu bar");
+
+  const int VWIDTH=100;
+
+  MenuBar mb0(0,HEIGHT,VWIDTH,400-HEIGHT);
+  mb0.set_vertical();
+  mb0.begin();
+  build_hierarchy();
+  mb0.end();
+
+  Widget box(VWIDTH,HEIGHT,WIDTH-VWIDTH,400-HEIGHT);
+  //box.color(WHITE);
+  box.box(fltk::DOWN_BOX);
+  box.tooltip("Press right button for a pop-up menu");
+
+  PopupMenu mb(VWIDTH,HEIGHT,WIDTH-VWIDTH,400-HEIGHT, "popup");
+  mb.callback(callback);
+  mb.begin();
+  build_hierarchy();
+  mb.end();
+  mb.type(PopupMenu::POPUP3);
+
+  int x = 180;
+  int y = 50;
+
+  PopupMenu mb1(x,y,100,25,"&PopupMenu");
+  mb1.callback(callback);
+  mb1.begin();
+  build_hierarchy();
+  mb1.end();
+  mb1.tooltip("This is a menu button");
+  y += 60;
+
+  Choice ch(x,y,100,25,"&choice:");
+  ch.callback(callback);
+  ch.begin();
+  build_hierarchy();
+  ch.end();
+  ch.tooltip("This is a choice");
+  y += 60;
+
+  CycleButton cb(x,y,100,25,"&cycle:");
+  cb.callback(callback);
+  cb.list(&thelist);
+  cb.tooltip("This is a cyclebutton");
+  y += 60;
+
+  InputBrowser ib(x,y,100,25,"Input&Browser:");
+  ib.type(InputBrowser::INDENTED);
+  ib.callback(callback);
+  ib.when(fltk::WHEN_CHANGED);
+  ib.begin();
+  build_hierarchy();
+  ib.end();
+  ib.tooltip("This is an InputBrowser");
+  y += 60;
+
+  Button button(x+200,y,100,30,"button");
+  button.tooltip("This is to test if clicking here to exit menus pushes the button");
+
+  window.resizable(box);
+  window.size_range(300,20);
+  window.end();
+  window.show(argc, argv);
+
+  foreachShortcut(listShortcuts);
+
+  return run();
+}

Added: branches/branch-3.0-2011/test2/menubar.cxx
===================================================================
--- branches/branch-3.0-2011/test2/menubar.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/menubar.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,291 @@
+//
+// "$Id: menubar.cxx 6518 2008-11-11 22:31:26Z spitzak $"
+//
+// Menubar test program 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".
+//
+
+// Use compat header for Fl_Menu_Item
+#include <FL/Fl_Menu_Item.H>
+
+#include <fltk/run.h>
+#include <fltk/events.h>
+#include <fltk/Output.h>
+#include <fltk/Box.h>
+#include <fltk/Window.h>
+#include <fltk/MenuBar.h>
+#include <fltk/ToggleButton.h>
+#include <fltk/PopupMenu.h>
+#include <fltk/Choice.h>
+#include <fltk/Tooltip.h>
+#include <fltk/draw.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <fltk/string.h>
+
+#ifdef __APPLE__
+#include <fltk/SystemMenuBar.h>
+#endif
+
+fltk::Window *window;
+
+fltk::Menu* menus[4];
+
+void test_cb(fltk::Widget* w, void*)
+{
+  fltk::Menu* mw = (fltk::Menu*)w;
+  fltk::Widget* m = mw->item();
+  if (!m)
+    printf("NULL\n");
+  else if (m->shortcut())
+    printf("%s - %s\n", m->label(), fltk::key_name(m->shortcut()));
+  else
+    printf("%s\n", m->label());
+
+  if (!strcmp("item 77", m->label())) {
+    if (mw->find("button")) mw->replace("button", "Spitzak");
+    else mw->replace("Spitzak", "button");
+    menus[0]->redraw();
+  }
+
+  m->do_callback();
+}
+
+void quit_cb(fltk::Widget*, void*) { exit(0); }
+
+Fl_Menu_Item hugemenu[100];
+
+Fl_Menu_Item menutable[] = {
+  {"foo",0,0,0,FL_MENU_INACTIVE},
+  {"&File",0,0,0,FL_SUBMENU},
+    {"&Open",	fltk::COMMAND+'O', 0, 0, FL_MENU_INACTIVE},
+    {"&Close",	0,	0},
+    {"&Quit",	fltk::COMMAND+'Q', quit_cb, 0, fltk::MENU_DIVIDER},
+    {"shortcut",'A'},
+    {"shortcut",fltk::SHIFT+'A'},
+    {"shortcut",fltk::COMMAND+'A'},
+    {"shortcut",fltk::COMMAND+fltk::SHIFT+'A'},
+    {"shortcut",fltk::ACCELERATOR+'A'},
+    {"shortcut",fltk::ACCELERATOR+fltk::SHIFT+'A'},
+    {"shortcut",fltk::ACCELERATOR+fltk::COMMAND+'A'},
+    {"shortcut",fltk::ACCELERATOR+fltk::SHIFT+fltk::COMMAND+'A', 0,0, fltk::MENU_DIVIDER},
+    {"shortcut",fltk::ReturnKey},
+    {"shortcut",fltk::COMMAND+fltk::ReturnKey, 0,0, fltk::MENU_DIVIDER},
+    {"shortcut",fltk::F1Key},
+    {"shortcut",fltk::SHIFT+fltk::F1Key},
+    {"shortcut",fltk::COMMAND+fltk::F1Key},
+    {"shortcut",fltk::SHIFT+fltk::COMMAND+fltk::F1Key},
+    {"shortcut",fltk::ACCELERATOR+fltk::F1Key},
+    {"shortcut",fltk::ACCELERATOR+fltk::SHIFT+fltk::F1Key},
+    {"shortcut",fltk::ACCELERATOR+fltk::COMMAND+fltk::F1Key},
+    {"shortcut",fltk::ACCELERATOR+fltk::SHIFT+fltk::COMMAND+fltk::F1Key, 0,0, fltk::MENU_DIVIDER},
+    {"&Submenus", fltk::ACCELERATOR+'S',	0, (void*)"Submenu1", FL_SUBMENU},
+      {"A very long menu item"},
+      {"&submenu",fltk::COMMAND+'S',	0, (void*)"submenu2", FL_SUBMENU},
+	{"item 1"},
+	{"item 2"},
+	{"item 3"},
+	{"item 4"},
+	{0},
+      {"after submenu"},
+      {0},
+    {0},
+  {"&Edit",0,0,0,FL_SUBMENU},
+    {"Undo",	fltk::COMMAND+'Z',	0},
+    {"Redo",	fltk::COMMAND+'Y',	0, 0, fltk::MENU_DIVIDER},
+    {"Cut",	fltk::COMMAND+'X',	0},
+    {"Copy",	fltk::COMMAND+'C',	0},
+    {"Paste",	fltk::COMMAND+'V',	0},
+    {"Inactive",fltk::COMMAND+'D',	0, 0, FL_MENU_INACTIVE},
+    {"Clear",	0,	0, 0, fltk::MENU_DIVIDER},
+    {"Invisible",fltk::COMMAND+'E',	0, 0, FL_MENU_INVISIBLE},
+    {"Preferences",0,	0},
+    {"Larger", '+', 0, 0},
+    {"Smaller", '-', 0, 0},
+    {0},
+  {"&Checkbox",0,0,0,FL_SUBMENU},
+    {"&Alpha",	0,	0, (void *)1, fltk::MENU_TOGGLE|FL_MENU_VALUE},
+    {"&Beta",	0,	0, (void *)2, fltk::MENU_TOGGLE},
+    {"&Gamma",	0,	0, (void *)3, fltk::MENU_TOGGLE},
+    {"&Delta",	0,	0, (void *)4, fltk::MENU_TOGGLE|FL_MENU_VALUE},
+    {"&Epsilon",0,	0, (void *)5, fltk::MENU_TOGGLE},
+    {"&Pi",	0,	0, (void *)6, fltk::MENU_TOGGLE},
+    {"&Mu",	0,	0, (void *)7, fltk::MENU_TOGGLE|fltk::MENU_DIVIDER},
+    {"Red",	0,	0, (void *)1, fltk::MENU_TOGGLE},
+    {"Black",	0,	0, (void *)1, fltk::MENU_TOGGLE|fltk::MENU_DIVIDER},
+    {"00",	0,	0, (void *)1, fltk::MENU_TOGGLE},
+    {"000",	0,	0, (void *)1, fltk::MENU_TOGGLE},
+    {0},
+  {"&Radio",0,0,0,FL_SUBMENU},
+    {"&Alpha",	0,	0, (void *)1, fltk::MENU_RADIO},
+    {"&Beta",	0,	0, (void *)2, fltk::MENU_RADIO},
+    {"&Gamma",	0,	0, (void *)3, fltk::MENU_RADIO},
+    {"&Delta",	0,	0, (void *)4, fltk::MENU_RADIO|FL_MENU_VALUE},
+    {"&Epsilon",0,	0, (void *)5, fltk::MENU_RADIO},
+    {"&Pi",	0,	0, (void *)6, fltk::MENU_RADIO},
+    {"&Mu",	0,	0, (void *)7, fltk::MENU_RADIO|fltk::MENU_DIVIDER},
+    {"Red",	0,	0, (void *)1, fltk::MENU_RADIO},
+    {"Black",	0,	0, (void *)1, fltk::MENU_RADIO|fltk::MENU_DIVIDER},
+    {"00",	0,	0, (void *)1, fltk::MENU_RADIO},
+    {"000",	0,	0, (void *)1, fltk::MENU_RADIO},
+    {0},
+  {"&Font",0,0,0,FL_SUBMENU},
+    {"Normal",	0, 0},
+    {"Bold",	0, 0},
+    {"Italic",	0, 0},
+    {"BoldItalic",0,0},
+    {"Small",	0, 0},
+    {"Large",	0, 0},
+    {"Emboss",	0, 0},
+    {"Engrave",	0, 0},
+    {"Shadow",	0, 0},
+    {"@->",	0, 0},
+    {0},
+  {"E&mpty",0,0,0,FL_SUBMENU},
+    {0},
+  {"&Inactive", 0,	0, 0, FL_MENU_INACTIVE|FL_SUBMENU},
+    {"A very long menu item"},
+    {"A very long menu item"},
+    {0},
+  {"Invisible",0,	0, 0, FL_MENU_INVISIBLE|FL_SUBMENU},
+    {"A very long menu item"},
+    {"A very long menu item"},
+    {0},
+  {"&Huge", 0, 0, (void*)hugemenu, FL_SUBMENU_POINTER},
+  // these buttons demonstrates that the menubar can be used as a "toolbar"
+  {"@[]"}, {"@<->"}, {"@+"},
+  // it would be nice if checkmarks worked, but they don't:
+  //{"toggle",0, 0, 0, fltk::MENU_TOGGLE},
+  {0}
+};
+
+Fl_Menu_Item pulldown[] = {
+  {"Red",	fltk::ACCELERATOR+'r'},
+  {"Green",	fltk::ACCELERATOR+'g'},
+  {"Blue",	fltk::ACCELERATOR+'b'},
+  {"Strange",	fltk::ACCELERATOR+'s'},
+  {"&Charm",	fltk::ACCELERATOR+'c'},
+  {"Truth",	fltk::ACCELERATOR+'t'},
+  {"Beauty",	fltk::ACCELERATOR+'b'},
+  {0}
+};
+
+#define WIDTH 600
+#define HEIGHT 22 //30 // use 25 for better Windoze look
+
+int main(int argc, char **argv)
+{
+  for (int i=0; i<99; i++) {
+    char buf[100];
+    sprintf(buf,"item %d",i);
+    hugemenu[i].text = newstring(buf);
+  }
+
+  fltk::Window window(WIDTH,400);
+  window.color(fltk::WHITE);
+  window.tooltip("Press right button\nfor a pop-up menu");
+  window.begin();
+
+  fltk::MenuBar menubar(0,0,WIDTH,HEIGHT); menubar.menu(menutable);
+  menubar.find("&Font/Normal")->labelfont(fltk::HELVETICA);
+  menubar.find("&Font/Bold")->labelfont(fltk::HELVETICA_BOLD);
+  menubar.find("&Font/Italic")->labelfont(fltk::HELVETICA_ITALIC);
+  menubar.find("&Font/BoldItalic")->labelfont(fltk::HELVETICA_BOLD_ITALIC);
+  menubar.find("&Font/Small")->labelsize(10);
+  menubar.find("&Font/Large")->labelsize(24);
+  menubar.find("&Font/Emboss")->labeltype(fltk::EMBOSSED_LABEL);
+  menubar.find("&Font/Engrave")->labeltype(fltk::ENGRAVED_LABEL);
+  menubar.find("&Font/Shadow")->labeltype(fltk::SHADOW_LABEL);
+  menubar.find("&Font/@->")->labeltype(fltk::SYMBOL_LABEL);
+  menubar.find("&Checkbox/Red")->labelcolor(fltk::RED); // label text red
+  menubar.find("&Checkbox/Red")->selection_textcolor(fltk::RED); // label text red when selected
+  menubar.find("&Checkbox/Red")->textcolor(fltk::RED); // check mark red
+  menubar.find("&Checkbox/Black")->labelcolor(fltk::BLACK);
+  menubar.find("&Checkbox/Black")->selection_textcolor(fltk::BLACK);
+  menubar.find("&Checkbox/Black")->textcolor(fltk::BLACK);
+  menubar.find("&Radio/Red")->labelcolor(fltk::RED);
+  menubar.find("&Radio/Red")->selection_textcolor(fltk::RED);
+  menubar.find("&Radio/Red")->textcolor(fltk::RED);
+  menubar.find("&Radio/Black")->labelcolor(fltk::BLACK);
+  menubar.find("&Radio/Black")->selection_textcolor(fltk::BLACK);
+  menubar.find("&Radio/Black")->textcolor(fltk::BLACK);
+  //menubar.find("&Huge/item 69")->deactivate();
+  menubar.callback(test_cb);
+  menubar.tooltip("This is a menu bar");
+  menus[0] = &menubar;
+
+  fltk::PopupMenu mb1(100,100,120,25,"&menubutton"); mb1.menu(pulldown);
+  mb1.callback(test_cb);
+  mb1.tooltip("This is a menu button");
+  menus[1] = &mb1;
+
+  fltk::Choice ch(300,100,90,25,"&choice:"); ch.menu(pulldown);
+  ch.callback(test_cb);
+  ch.tooltip("This is a choice");
+  menus[2] = &ch;
+
+  fltk::PopupMenu mb(0,25,WIDTH,400-HEIGHT/*,"&popup"*/);
+  mb.type(fltk::PopupMenu::POPUP3);
+  mb.menu(menutable);
+  mb.callback(test_cb);
+  menus[3] = &mb;
+
+  window.resizable(&mb);
+  window.size_range(300,20);
+  window.end();
+  window.show(argc, argv);
+
+#ifdef __APPLE__
+  fltk::SystemMenuBar sysmb(0, 0, 1, 1);
+  sysmb.menu(menutable);
+  sysmb.find("&Font/Normal")->labelfont(fltk::HELVETICA);
+  sysmb.find("&Font/Bold")->labelfont(fltk::HELVETICA_BOLD);
+  sysmb.find("&Font/Italic")->labelfont(fltk::HELVETICA_ITALIC);
+  sysmb.find("&Font/BoldItalic")->labelfont(fltk::HELVETICA_BOLD_ITALIC);
+  sysmb.find("&Font/Small")->labelsize(10);
+  sysmb.find("&Font/Large")->labelsize(24);
+  sysmb.find("&Font/Emboss")->labeltype(fltk::EMBOSSED_LABEL);
+  sysmb.find("&Font/Engrave")->labeltype(fltk::ENGRAVED_LABEL);
+  sysmb.find("&Font/Shadow")->labeltype(fltk::SHADOW_LABEL);
+  sysmb.find("&Font/@->")->labeltype(fltk::SYMBOL_LABEL);
+  sysmb.find("&Checkbox/Red")->labelcolor(fltk::RED); // label text red
+  sysmb.find("&Checkbox/Red")->selection_textcolor(fltk::RED); // label text red when selected
+  sysmb.find("&Checkbox/Red")->textcolor(fltk::RED); // check mark red
+  sysmb.find("&Checkbox/Black")->labelcolor(fltk::BLACK);
+  sysmb.find("&Checkbox/Black")->selection_textcolor(fltk::BLACK);
+  sysmb.find("&Checkbox/Black")->textcolor(fltk::BLACK);
+  sysmb.find("&Radio/Red")->labelcolor(fltk::RED);
+  sysmb.find("&Radio/Red")->selection_textcolor(fltk::RED);
+  sysmb.find("&Radio/Red")->textcolor(fltk::RED);
+  sysmb.find("&Radio/Black")->labelcolor(fltk::BLACK);
+  sysmb.find("&Radio/Black")->selection_textcolor(fltk::BLACK);
+  sysmb.find("&Radio/Black")->textcolor(fltk::BLACK);
+  sysmb.callback(test_cb);
+  sysmb.layout();
+#endif
+
+  return fltk::run();
+}
+
+//
+// End of "$Id: menubar.cxx 6518 2008-11-11 22:31:26Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/message.cxx
===================================================================
--- branches/branch-3.0-2011/test2/message.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/message.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,61 @@
+//
+// "$Id: message.cxx 4918 2006-04-08 12:30:20Z fabien $"
+//
+// Message test program 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".
+//
+
+#include <fltk/ask.h>
+#include <fltk/run.h>
+#include <stdio.h>
+
+int main(int argc, char **argv) {
+
+  fltk::args(argc, argv);
+
+  if(!fltk::ask("Do you want to disable beep sounds ?", "continue"))
+      fltk::beep_on_dialog(true);
+  fltk::message("Spelling check sucessfull, %d errors found with %g%% confidence",
+	     1002, 100*(15/77.0));
+
+  fltk::alert("Quantum fluctuations in the space-time continuum detected, "
+	   "you have %g seconds to comply.", 10.0);
+
+  printf("fltk::ask returned %d\n",
+    fltk::ask("Do you really want to %s?", "continue"));
+
+  printf("fltk::choice returned %d\n",
+    fltk::choice("Choose one of the following:","choice0","choice1","choice2"));
+  const char *r;
+
+  r = fltk::input("Please enter a string for '%s':", "this is the default value",
+	       "testing");
+  printf("fltk::input returned \"%s\"\n", r ? r : "NULL");
+
+  r = fltk::password("Enter %s's password:", 0, "somebody");
+  printf("fltk::password returned \"%s\"\n", r ? r : "NULL");
+
+  return 0;
+}
+
+//
+// End of "$Id: message.cxx 4918 2006-04-08 12:30:20Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/monitors.cxx
===================================================================
--- branches/branch-3.0-2011/test2/monitors.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/monitors.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,92 @@
+// Test of the fltk::Monitor calls
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Monitor.h>
+#include <fltk/draw.h>
+#include <stdio.h>
+
+using namespace fltk;
+
+void print_monitor(const Monitor& m, int i) {
+  if (i < 0) printf("all: ");
+  else printf("%d: ", i);
+  printf("area %d %d %d %d, work %d %d %d %d, depth %d, dpi %g %g\n",
+         m.x(), m.y(), m.w(), m.h(),
+         m.work.x(), m.work.y(), m.work.w(), m.work.h(),
+         m.depth(), m.dpi_x(), m.dpi_y());
+}
+
+class MonitorWindow : public Window {
+public:
+  MonitorWindow() : Window(500,500) {resizable(this);}
+
+  void draw_monitor(const Monitor& m, int i) {
+    setcolor(GRAY50);
+    strokerect(m.work);
+    setcolor(BLACK);
+    strokerect(m);
+    char b[256];
+    char* p = b;
+    if (i < 0) p += sprintf(p,"all: ");
+    else p += sprintf(p, "%d: ", i);
+    sprintf(p, "area %d %d %d %d\nwork %d %d %d %d\ndepth %d, dpi %g %g",
+            m.x(), m.y(), m.w(), m.h(),
+            m.work.x(), m.work.y(), m.work.w(), m.work.h(),
+            m.depth(), m.dpi_x(), m.dpi_y());
+    if (i < 0)
+      drawtext(b, Rectangle(m.x(),m.b(),m.w(),1000), ALIGN_TOP|ALIGN_RIGHT|ALIGN_WRAP);
+    else 
+      drawtext(b, m, ALIGN_CENTER|ALIGN_WRAP|ALIGN_CLIP);
+  }
+
+  void draw() {
+    draw_box();
+    setfont(textfont(), textsize());
+    const Monitor& all = Monitor::all();
+    push_matrix();
+    translate(w()/10,h()/10);
+    float s = w()*.8/all.w();
+    float s2 = h()*.8/all.h();
+    if (s2 < s) s = s2;
+    scale(s,s);
+    translate(-all.x(), -all.y());
+
+    setcolor(GRAY25);
+    Rectangle b; borders(&b);
+    fillrect(this->x()+b.x(), this->y()+b.y(), this->w()+b.w(), this->h()+b.h());
+    setcolor(GRAY50);
+    fillrect(*this);
+    setcolor(WHITE);
+    drawtext("this window", *this, ALIGN_CENTER|ALIGN_WRAP|ALIGN_CLIP);
+
+    draw_monitor(all, -1);
+
+    const Monitor* list;
+    int size = Monitor::list(&list);
+    for (int i=0; i<size; i++)
+      draw_monitor(list[i], i);
+
+    pop_matrix();
+  }
+
+  void layout() { // make it redraw when user moves window
+    redraw();
+    Window::layout();
+  }
+};
+
+int main(int argc, char** argv) {
+  MonitorWindow window;
+  window.show(argc,argv);
+
+  print_monitor(Monitor::all(),-1);
+
+  const Monitor* list;
+  int size = Monitor::list(&list);
+
+  for (int i=0; i<size; i++)
+    print_monitor(list[i],i);
+
+  return fltk::run();
+}

Added: branches/branch-3.0-2011/test2/navigation.cxx
===================================================================
--- branches/branch-3.0-2011/test2/navigation.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/navigation.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,73 @@
+//
+// "$Id: navigation.cxx 7513 2010-04-15 17:19:27Z spitzak $"
+//
+// Navigation test program for the Fast Light Tool Kit (FLTK).
+//
+// Silly test of navigation keys. This is not a recommended method of
+// laying out your panels!
+//
+// 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".
+//
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Input.h>
+
+#define WIDTH 600
+#define HEIGHT 300
+#define GRID 25
+
+using namespace fltk;
+
+int main(int argc, char **argv) {
+  if (argc > 1) srand(atoi(argv[1]));
+  Window window(WIDTH,HEIGHT,argv[0]);
+  window.end(); // don't auto-add children
+  for (int i = 0; i<10000; i++) {
+    // make up a random size of widget:
+    int x = rand()%(WIDTH/GRID+1) * GRID;
+    int y = rand()%(HEIGHT/GRID+1) * GRID;
+    int w = rand()%(WIDTH/GRID+1) * GRID;
+    if (w < x) {w = x-w; x-=w;} else {w = w-x;}
+    int h = rand()%(HEIGHT/GRID+1) * GRID;
+    if (h < y) {h = y-h; y-=h;} else {h = h-y;}
+    if (w < GRID || h < GRID || w < h) continue;
+    // find where to insert it and see if it intersects something:
+    Widget *j = 0;
+    int n; for (n=0; n < window.children(); n++) {
+      Widget *o = window.child(n);
+      if (x<o->x()+o->w() && x+w>o->x() &&
+	  y<o->y()+o->h() && y+h>o->y()) break;
+      if (!j && (y < o->y() || (y == o->y() && x < o->x()))) j = o;
+    }
+    // skip if intersection:
+    if (n < window.children()) continue;
+    window.insert(*(new Input(x,y,w,h)),j);
+  }
+  window.resizable(window);
+  window.show();
+  return fltk::run();
+}
+
+//
+// End of "$Id: navigation.cxx 7513 2010-04-15 17:19:27Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/output.cxx
===================================================================
--- branches/branch-3.0-2011/test2/output.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/output.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,111 @@
+//
+// "$Id: output.cxx 5583 2007-01-06 21:26:09Z fabien $"
+//
+// Output test program 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".
+//
+
+#include <fltk/run.h>
+#include <fltk/ValueInput.h> // necessary for bug in mingw32?
+#include <fltk/Window.h>
+#include <fltk/Box.h>
+#include <fltk/ToggleButton.h>
+#include <fltk/Input.h>
+#include <fltk/draw.h>
+#include <fltk/Output.h>
+#include <fltk/MultiLineOutput.h>
+#include <fltk/ValueSlider.h>
+#include <fltk/Font.h>
+
+using namespace fltk;
+
+Output *text;
+MultiLineOutput *text2;
+Input *input;
+ValueSlider *fonts;
+ValueSlider *sizes;
+Window *window;
+
+void font_cb(Widget *,void *) {
+  text->textfont(font(int(fonts->value())));
+  text->redraw();
+  text2->textfont(font(int(fonts->value())));
+  text2->redraw();
+}
+
+void size_cb(Widget *,void *) {
+  text->textsize(int(sizes->value()));
+  text->redraw();
+  text2->textsize(int(sizes->value()));
+  text2->redraw();
+}
+
+void input_cb(Widget *,void *) {
+  text->value(input->value());
+  text2->value(input->value());
+}
+
+static const char* const initial_value =
+"The quick brown fox\njumps over\nthe lazy dog.";
+
+int main(int argc, char **argv) {
+  window = new Window(400,400);
+  window->begin();
+  text = new Output(100,90,200,30,"Output");
+  text->value(initial_value);
+  text->clear_flag(fltk::ALIGN_MASK);
+  text->set_flag(fltk::ALIGN_BOTTOM);
+
+  text2 = new MultiLineOutput(100,150,200,100,"MultiLineOutput");
+  text2->value(initial_value);
+  text2->clear_flag(fltk::ALIGN_MASK);
+  text2->set_flag(fltk::ALIGN_BOTTOM);
+  window->resizable(text2);
+
+  fonts = new ValueSlider(50,325,350,25,"Font");
+  fonts->clear_flag(fltk::ALIGN_MASK);
+  fonts->set_flag(fltk::ALIGN_LEFT);
+  fonts->range(0,15);
+  fonts->step(1);
+  fonts->value(0);
+  fonts->callback(font_cb);
+
+  sizes = new ValueSlider(50,350,350,25,"Size");
+  sizes->clear_flag(fltk::ALIGN_MASK);
+  sizes->set_flag(fltk::ALIGN_LEFT);
+  sizes->range(1,64);
+  sizes->step(1);
+  sizes->value(14);
+  sizes->callback(size_cb);
+
+  input = new Input(50,375,350,25);
+  input->static_value(initial_value);
+  input->when(fltk::WHEN_CHANGED);
+  input->callback(input_cb);
+
+  window->end();
+  window->show(argc,argv);
+  return fltk::run();
+}
+
+//
+// End of "$Id: output.cxx 5583 2007-01-06 21:26:09Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/overlay.cxx
===================================================================
--- branches/branch-3.0-2011/test2/overlay.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/overlay.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,85 @@
+//
+// "$Id: overlay.cxx 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Overlay window test program 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".
+//
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <FL/Fl.H>
+#include <FL/Fl_Window.H>
+#include <FL/Fl_Overlay_Window.H>
+#include <FL/Fl_Button.H>
+#include <FL/fl_draw.H>
+
+int width=10,height=10;
+
+class overlay : public Fl_Overlay_Window {
+public:
+  overlay(int w,int h) : Fl_Overlay_Window(w,h) {}
+  void draw_overlay();
+};
+
+void overlay::draw_overlay() {
+  fl_color(FL_RED);
+  fl_rect((w()-::width)/2,(h()-::height)/2,::width,::height);
+}
+
+overlay *ovl;
+
+void bcb1(Fl_Widget *,void *) {width+=20; ovl->redraw_overlay();}
+void bcb2(Fl_Widget *,void *) {width-=20; ovl->redraw_overlay();}
+void bcb3(Fl_Widget *,void *) {height+=20; ovl->redraw_overlay();}
+void bcb4(Fl_Widget *,void *) {height-=20; ovl->redraw_overlay();}
+
+int arg(int, char **argv, int& i) {
+  Fl_Color n = (Fl_Color)atoi(argv[i]);
+  if (n<=0) return 0;
+  i++;
+  uchar r,g,b;
+  Fl::get_color(n,r,g,b);
+  Fl::set_color(FL_RED,r,g,b);
+  return i;
+}
+
+int main(int argc, char **argv) {
+  int i=0; Fl::args(argc,argv,i,arg);
+  ovl = new overlay(400,400);
+  Fl_Button *b;
+  b = new Fl_Button(50,50,100,100,"wider\n(a)");
+  b->callback(bcb1); b->shortcut('a');
+  b = new Fl_Button(250,50,100,100,"narrower\n(b)");
+  b->callback(bcb2); b->shortcut('b');
+  b = new Fl_Button(50,250,100,100,"taller\n(c)");
+  b->callback(bcb3); b->shortcut('c');
+  b = new Fl_Button(250,250,100,100,"shorter\n(d)");
+  b->callback(bcb4); b->shortcut('d');
+  ovl->resizable(ovl);
+  ovl->end();
+  ovl->show(argc,argv);
+  ovl->redraw_overlay();
+  return Fl::run();
+}
+
+//
+// End of "$Id: overlay.cxx 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/pack.cxx
===================================================================
--- branches/branch-3.0-2011/test2/pack.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/pack.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,38 @@
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/BarGroup.h>
+#include <fltk/PackedGroup.h>
+using namespace fltk;
+
+BarGroup* makebar(const char* name, int w, int h, bool vertical) {
+  BarGroup* b = new BarGroup(0,0,w,h,name);
+  b->box(THIN_UP_BOX);
+  if (vertical) b->set_vertical();
+  return b;
+}
+
+int main(int argc, char** argv) {
+  Window window(300,300,"PackedGroup test");
+  window.begin();
+  PackedGroup group(0,0,300,300);
+  window.resizable(group);
+  group.begin();
+  makebar("bar0",30,30,false);
+  makebar("bar1",30,30,false);
+  makebar("bar2",30,30,true);
+  makebar("bar3",30,30,true);
+  makebar("bar4",30,30,false);
+  Widget resize(0,0,30,30,"resizable()");
+  resize.box(FLAT_BOX);
+  resize.color(GRAY15);
+  resize.labelcolor(WHITE);
+  group.resizable(resize);
+  makebar("bar5",30,30,false);
+  makebar("bar6",30,30,true);
+  makebar("bar7",30,30,true);
+  makebar("bar8",30,30,false);
+  makebar("bar9",30,30,false);
+  window.end();
+  window.show(argc, argv);
+  return run();
+}

Added: branches/branch-3.0-2011/test2/pixmap.cxx
===================================================================
--- branches/branch-3.0-2011/test2/pixmap.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/pixmap.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,97 @@
+//
+// "$Id$"
+//
+// Pixmap label test program 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".
+//
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Button.h>
+#include <fltk/xpmImage.h>
+#include <stdio.h>
+
+#include "porsche.xpm"
+
+#include <fltk/ToggleButton.h>
+
+using namespace fltk;
+
+ToggleButton *leftb,*rightb,*topb,*bottomb,*insideb,*inactb,*fitb,*fillb;
+Button *b;
+Window *win;
+
+void button_cb(Widget *,void *) {
+  int i = 0;
+  if (leftb->value()) i |= ALIGN_LEFT;
+  if (rightb->value()) i |= ALIGN_RIGHT;
+  if (topb->value()) i |= ALIGN_TOP;
+  if (bottomb->value()) i |= ALIGN_BOTTOM;
+  if (insideb->value()) i |= ALIGN_INSIDE;
+  b->align(i);
+  if (fitb->value()) b->set_flag(RESIZE_FIT);
+  else b->clear_flag(RESIZE_FIT);
+  if (fillb->value()) b->set_flag(RESIZE_FILL);
+  else b->clear_flag(RESIZE_FILL);
+  if (inactb->value()) b->deactivate();
+  else b->activate();
+  win->redraw();
+}
+
+int dvisual = 0;
+int arg(int, char **argv, int &i) {
+  if (argv[i][1] == '8') {dvisual = 1; i++; return 1;}
+  return 0;
+}
+
+int main(int argc, char **argv) {
+  Window window(400,400); win = &window;
+  window.begin();
+  Button b(140,160,120,120,"Pixmap"); ::b = &b;
+  xpmImage *pixmap = new xpmImage(porsche_xpm);
+
+  b.image(pixmap);
+
+  leftb = new ToggleButton(25,50,50,25,"left");
+  leftb->callback(button_cb);
+  rightb = new ToggleButton(75,50,50,25,"right");
+  rightb->callback(button_cb);
+  topb = new ToggleButton(125,50,50,25,"top");
+  topb->callback(button_cb);
+  bottomb = new ToggleButton(175,50,50,25,"bottom");
+  bottomb->callback(button_cb);
+  insideb = new ToggleButton(225,50,50,25,"inside");
+  insideb->callback(button_cb);
+  fitb = new ToggleButton(25,75,50,25,"fit");
+  fitb->callback(button_cb);
+  fillb = new ToggleButton(75,75,50,25,"fill");
+  fillb->callback(button_cb);
+  inactb = new ToggleButton(125,75,100,25,"inactive");
+  inactb->callback(button_cb);
+  window.resizable(window);
+  window.end();
+  window.show(argc,argv);
+  return fltk::run();
+}
+
+//
+// End of "$Id$"
+//

Added: branches/branch-3.0-2011/test2/pixmap_browser.cxx
===================================================================
--- branches/branch-3.0-2011/test2/pixmap_browser.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/pixmap_browser.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,169 @@
+//
+// "$Id: pixmap_browser.cxx 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Another pixmap test program for the Fast Light Tool Kit (FLTK).
+//
+// On purpose, I do NOT provide a fltk method to turn a file
+// into a pixmap.  This program uses a rather simplistic one.
+//
+// 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".
+//
+
+#include <fltk/Fl.h>
+#include <fltk/Fl_Box.h>
+#include <fltk/Fl_Window.h>
+#include <fltk/Fl_Button.h>
+#include <fltk/Fl_Pixmap.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <fltk/fl_file_chooser.h>
+#include <fltk/fl_message.h>
+
+Fl_Box *b;
+Fl_Window *w;
+
+char **data;
+int sizeofdata;
+int numlines;
+
+static int hexdigit(int x) {
+  if (isdigit(x)) return x-'0';
+  if (isupper(x)) return x-'A'+10;
+  if (islower(x)) return x-'a'+10;
+  return 20;
+}
+
+int load_file(const char *name) {
+  FILE *f = fopen(name,"r");
+  if (!f) {
+    fl_message("Can't open %s, %s",name,strerror(errno));
+    return 0;
+  }
+  if (data) {
+    for (int i=numlines; i--;) delete[] data[i];
+  }
+#define BUFSIZE 2048
+  char buffer[BUFSIZE];
+  int i = 0;
+  while (fgets(buffer, BUFSIZE, f)) {
+    if (buffer[0] != '\"') continue;
+    char *p = buffer;
+    char *q = buffer+1;
+    while (*q != '\"') {
+      if (*q == '\\') switch (*++q) {
+      case '\n':
+	fgets(q,(buffer+BUFSIZE)-q,f); break;
+      case 0:
+	break;
+      case 'x': {
+	q++;
+	int n = 0;
+	for (int x = 0; x < 3; x++) {
+	  int d = hexdigit(*q);
+	  if (d > 15) break;
+	  n = (n<<4)+d;
+	  q++;
+	}
+	*p++ = n;
+      } break;
+      default: {
+	int c = *q++;
+	if (c>='0' && c<='7') {
+	  c -= '0';
+	  for (int x=0; x<2; x++) {
+	    int d = hexdigit(*q);
+	    if (d>7) break;
+	    c = (c<<3)+d;
+	    q++;
+	  }
+	}
+	*p++ = c;
+      } break;
+      } else {
+	*p++ = *q++;
+      }
+    }
+    *p++ = 0;
+    if (i >= sizeofdata) {
+      sizeofdata = 2*sizeofdata+100;
+      char **newdata = new char *[sizeofdata];
+      for (int j=0; j<i; j++) newdata[j] = data[j];
+      delete[] data;
+      data = newdata;
+    }
+    data[i] = new char[p-buffer];
+    memcpy(data[i],buffer,p-buffer);
+    i++;
+  }
+  numlines = i;
+  fclose(f);
+  return i;
+}
+
+Fl_Pixmap *pixmap;
+void newpixmap() {
+  delete pixmap;
+  pixmap = new Fl_Pixmap(data);
+  pixmap->label(b);
+  w->redraw();
+}
+
+static char name[1024];
+
+void file_cb(const char *n) {
+  if (!strcmp(name,n)) return;
+  if (!load_file(n)) return;
+  strcpy(name,n);
+  w->label(name);
+  newpixmap();
+}
+
+void button_cb(Fl_Widget *,void *) {
+  fl_file_chooser_callback(file_cb);
+  fl_file_chooser("XPM file","*.xpm",name);
+  fl_file_chooser_callback(0);
+}
+
+int dvisual = 0;
+int arg(int, char **argv, int &i) {
+  if (argv[i][1] == '8') {dvisual = 1; i++; return 1;}
+  return 0;
+}
+
+int main(int argc, char **argv) {
+  int i = 1;
+  if (Fl::args(argc,argv,i,arg) < argc)
+    Fl::fatal(" -8 # : use default visual\n%s\n",Fl::help);
+
+  Fl_Window window(400,400); ::w = &window;
+  Fl_Box b(0,0,window.w(),window.h()); ::b = &b;
+  Fl_Button button(5,5,100,35,"load");
+  button.callback(button_cb);
+  if (!dvisual) Fl::visual(FL_RGB);
+  window.resizable(window);
+  window.show(argc,argv);
+  return Fl::run();
+}
+
+//
+// End of "$Id: pixmap_browser.cxx 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/plugins/Fl_NSlider.H
===================================================================
--- branches/branch-3.0-2011/test2/plugins/Fl_NSlider.H	                        (rev 0)
+++ branches/branch-3.0-2011/test2/plugins/Fl_NSlider.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,81 @@
+//class Fl_Slider
+//Another in the group of Fltk Widgets By Curtis Edwards (c) 1998 
+//A Rewrite for the sliders to provide:
+//Section Ticks,Color Ramping, Tick Font Display, Boxtype Slider knob (Can Use Bitmaps/labels/etc.)
+#ifndef FL_NSLIDER_H
+#define FL_NSLIDER_H
+
+#include <FL/Fl.H>
+#include <FL/Fl_Valuator.H>
+#include <FL/fl_draw.H>
+#include <FL/Fl_Group.H>
+#include <stdio.h>
+#include <stdlib.h>
+#include "math.h"
+
+#define FL_VERT_SLIDER		0
+#define FL_HOR_SLIDER		1
+#define FL_VERT_FILL_SLIDER	2
+#define FL_HOR_FILL_SLIDER	3
+#define FL_VERT_NICE_SLIDER	4
+#define FL_HOR_NICE_SLIDER	5
+#define FL_VERT_HALF_SLIDER	6
+#define FL_HOR_HALF_SLIDER	7
+
+class Fl_NSlider : public Fl_Valuator {
+public:
+  float         slider_size_;		//store slider 
+  Fl_Boxtype    slider_;            //boxtype for slider
+  int           _hilight;           //hilight slider knob (ENTER)
+  int           _hilight_col;
+  Fl_Color      _tick_col;
+  Fl_Font       _tick_font;
+  int           _tick_fontSize;
+  uchar         _r1, _g1, _b1;		//rgb color ramp 1
+  uchar         _r2, _g2, _b2;		//rgb colour ramp 2
+  int           _xoffset,_yoffset;  //save offset for the slider button when pushed insidestart position for tick/knobs
+  char          _majorTickPrecision[5];  //ie "%.0f" for tick Precision
+  float         _minorTick;
+  float         _majorTick;
+  Fl_Align      _alignTick;
+ double oldval;
+ float tk_range;	  //total pixel steps
+ float px_steps;	  //pixel steps for tick and slider moves
+ float px_x;          //pixel start position for tick/knobs
+ float px_y;          //pixel start position for tick/knobs
+ float px_w;          //pixel width of widget for knobs&ticks
+ float px_h;          //pixle height
+  int           mtp;
+  
+  Fl_NSlider(int x, int y, int w, int h, const char* l=0);
+  Fl_NSlider(uchar t, int x, int y, int w, int h, const char* l=0);
+  int        handle(int);
+  void       hilight_color(int col)   { _hilight_col = col;  }
+  int        hilight_color()          { return _hilight_col; }
+  void       bounds(float a, float b);
+  Fl_Boxtype slider() const {return (Fl_Boxtype)slider_;}
+  void       slider(Fl_Boxtype c) {slider_ = c;}
+  void       calcButton(int &knob_x, int &knob_y, int &knob_w , int &knob_h,double val);
+  void       setDefaults();
+  float      slider_size() const {return slider_size_;}
+  void       slider_size(float v);
+  void       alignTick( Fl_Align a)    { _alignTick = a; }
+  Fl_Align   alignTick()    { return _alignTick;}
+  void       colorTick( Fl_Color a)    { _tick_col  = a; }
+  void       majorTickFont( Fl_Font p)     { if(p<0) p=0; _tick_font = p;}
+  void       majorTickFontSize(int p)  { if(p<0) p=0; _tick_fontSize = p;}
+  void       majorTickPrecision(int p) { if(p<0 || p>6) p=0; mtp=p; sprintf(_majorTickPrecision,"%%.%df",p); printf("new mtp = %d\n", mtp); }
+  int        majorTickPrecision()      { printf("get mtp %d\n", mtp); return mtp; }
+  void       minorTick(float tick)     { _minorTick = tick;} //set minor tick dividers
+  void       majorTick(float tick)     { _majorTick = tick;} //set major tick dividers
+  float      minorTick() {return _minorTick; }              //return minor tick dividers
+  float      majorTick() {return _majorTick; }              //return major tick dividers
+  void       value_damage();
+  void       ramp(uchar nr1, uchar ng1, uchar nb1, uchar nr2, uchar ng2, uchar nb2) {_r1=nr1; _r2=nr2; _g1=ng1; _g2=ng2; _b1=nb1; _b2=nb2;}
+  void       ramp(int ramp1, int ramp2) {fl_get_color((Fl_Color)ramp1, _r1, _g1, _b1);  fl_get_color((Fl_Color)ramp2, _r2, _g2, _b2);}
+  void       draw();
+  void       drawTicks();
+  void       drawRamp();
+};
+
+#endif

Added: branches/branch-3.0-2011/test2/plugins/Fl_NSlider.cxx
===================================================================
--- branches/branch-3.0-2011/test2/plugins/Fl_NSlider.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/plugins/Fl_NSlider.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,372 @@
+/* Fl_NSlider for WidgetSet, Copyright (c) 1998 curtis Edwards (curt1@jps.net)
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  All work developed as a consequence of the use of
+ * this program should duly acknowledge such use. No representations are
+ * made about the suitability of this software for any purpose.  It is
+ * provided "as is" without express or implied warranty.
+ */
+#include "Fl_NSlider.H"
+
+static uchar isHoz = 0;	        //for image draw setup
+static uchar r1, g1, b1;        //for color ramp
+static uchar r2, g2, b2;
+
+///////////////////Setup Defaults for slider
+void  Fl_NSlider::setDefaults()
+{
+  slider_size((float)0.06);
+  slider(FL_UP_BOX);    
+  alignTick(FL_ALIGN_TOP);
+  majorTickFont(FL_HELVETICA);
+  majorTickFontSize(9);
+  majorTickPrecision(0);
+  minorTick(0);
+  majorTick(0);
+  colorTick( FL_BLACK);
+  selection_color(9);
+  hilight_color(FL_RED);
+  color(FL_GRAY);
+  ramp(0,0);		  //set to no ramp (0,0)
+  _hilight = 0;           //hilighterd is false
+  _r1=0, _g1=0; _b1=0;    //for color ramp
+  _r2=0; _g2=0; _b2=0;
+}
+/////////////////////////////////The New Slider
+Fl_NSlider::Fl_NSlider(uchar t, int x, int y, int w, int h, const char* l)
+: Fl_Valuator(x, y, w, h, l) {
+  type(t);
+   switch(type())
+   {
+        case FL_VERT_NICE_SLIDER:
+        case FL_HOR_NICE_SLIDER	:
+             box(FL_FLAT_BOX);
+             break;
+       default: box(FL_DOWN_BOX);
+             break;
+   }
+   setDefaults();
+}
+ //////////////////////////////////The New Slider
+Fl_NSlider::Fl_NSlider(int x,int y,int w,int h, const char *l)
+: Fl_Valuator(x, y, w, h, l)
+{
+   box(FL_DOWN_BOX);
+   setDefaults();
+}
+
+/////////////////////////////////slider draw
+void Fl_NSlider::draw() {
+  int    knob_x, knob_y, knob_w, knob_h, col;
+  tk_range  = (float) (maximum()-minimum());
+  if(slider_size_ == 0) slider_size(0.06);
+  int pxSlider;
+
+  isHoz = horizontal();
+  if( isHoz ) { 
+     pxSlider = (int)(w()*slider_size_);
+     px_x     = x() + box()->dx() + (pxSlider/2);  //starting point
+     px_y     = y() + box()->dy();                 //y of widget
+     px_w     = w() - pxSlider - box()->dw();      //w of widget
+     px_h     = h() - box()->dh();                 //h of widget
+     if(tk_range == 0) px_steps=0;
+     else  px_steps = px_w / tk_range;                   //pixel steps(divider)
+  }
+  else {   //vertical      
+     pxSlider = (int)(h()*slider_size_);
+     px_x     = x() + box()->dx();                 
+     px_y     = y() + box()->dy() + (pxSlider/2); 
+     px_w     = w() - box()->dw();                            
+     px_h     = h() - pxSlider -box()->dh();          
+     if(tk_range == 0) px_steps=0;
+     else  px_steps = px_h / tk_range;                   //pixel steps(divider)
+  }
+  calcButton(knob_x, knob_y, knob_w , knob_h, value());  //calc out the slider size&type
+  draw_box();
+  drawRamp();
+  drawTicks();
+  if(_hilight) col = hilight_color();
+  else col = selection_color();
+  switch(type()){
+      case FL_VERT_NICE_SLIDER:
+           draw_box();
+           draw_box();
+           draw_box();
+           break;
+      case FL_HOR_NICE_SLIDER:
+           draw_box();
+           draw_box();
+           draw_box();
+           break;
+      default:
+           draw_box();
+	   break;
+  }
+
+draw_label();
+ }
+///////////////////////////////work out size of the slider
+void Fl_NSlider::calcButton(int &knob_x, int &knob_y, int &knob_w , int &knob_h, double val) {
+ float  tk_button_incr;
+ int pxSlider;
+ if( horizontal()) {
+     tk_button_incr = (px_x + (px_steps * (val-minimum()) ));
+     pxSlider = (int)(w()*slider_size_);
+ }
+ else  {
+     tk_button_incr = (px_y + (px_steps * (val-minimum()) ));
+     pxSlider = (int)(h()*slider_size_);
+ }
+ switch(type()) {
+        case FL_VERT_FILL_SLIDER:
+             knob_x = (int)px_x;
+	     knob_y = y()+box()->dy();
+	     knob_w = (int)px_w;
+             knob_h = (int)(tk_button_incr-y());
+	      break;
+        case FL_HOR_FILL_SLIDER	:
+             knob_x = x()+box()->dx();
+	     knob_y = (int)px_y;
+	     knob_w = (int)(tk_button_incr-x());
+             knob_h = (int)px_h;
+	     break;
+        case FL_VERT_HALF_SLIDER:
+             knob_x = (int)px_x;
+	     knob_y = (int)(tk_button_incr-(pxSlider/2));
+	     knob_w = (int)(px_w/2);
+             knob_h = pxSlider;
+ 	     break;
+        case FL_HOR_HALF_SLIDER	:
+             knob_x = (int)(tk_button_incr-(pxSlider/2));
+	     knob_y = (int)px_y;
+	     knob_w = pxSlider;
+             knob_h = (int)(px_h/2);
+             break;
+        case FL_HOR_NICE_SLIDER	:
+        case FL_HOR_SLIDER:
+             knob_x = (int)(tk_button_incr-(pxSlider/2));
+	     knob_y = (int)px_y;
+	     knob_w = pxSlider;
+             knob_h = (int)px_h;
+	     break;
+        case FL_VERT_NICE_SLIDER	:
+        case FL_VERT_SLIDER:
+             knob_x = (int)px_x;
+             knob_y = (int)(tk_button_incr-(pxSlider/2));
+	     knob_w = (int)px_w;
+             knob_h = pxSlider;
+	     break;
+     }
+}
+//////////////////redraw area damaged if NO_BOX ask parent to redraw (A hard function to find,value_damage)
+void Fl_NSlider::value_damage(){
+  int knob_x, knob_y, knob_w, knob_h;
+  if(value() != oldval) 
+  {
+       calcButton( knob_x, knob_y, knob_w, knob_h,  oldval);
+       if(box() == FL_NO_BOX)  parent()->damage(~1,  knob_x, knob_y, knob_w+3, knob_h+3);
+       else damage(~1,  knob_x, knob_y, knob_w+3, knob_h+3);
+  }
+  calcButton( knob_x, knob_y, knob_w, knob_h, value());
+  damage(~1,  knob_x, knob_y, knob_w, knob_h);
+}
+
+//////////////////////fltk handle stuff (notice FL_DRAG has no redraw,handle_drag() does it)
+int  Fl_NSlider::handle(int event)
+{
+  int newpos = horizontal() ? Fl::event_x() : Fl::event_y();
+  float val=0;
+  switch (event) {
+  case FL_ENTER: 
+	_hilight = 1;
+        value_damage();
+        break;		
+  case FL_LEAVE: 
+	_hilight = 0;
+        value_damage();
+	break;		
+  case FL_PUSH:		
+	handle_push();
+  case FL_DRAG:
+        oldval=value();
+	if( horizontal() ) {
+	    val = ((newpos-x()-box()->dw() - ( (w()*slider_size_)/2))/ px_steps)+minimum();
+	}
+	else{  //vertical
+	    val = ((newpos-y()-box()->dh() - ( (h()*slider_size_)/2) )/ px_steps)+minimum();
+        }
+        val = clamp(val);
+        val = round(val);
+	handle_drag(val);
+        return 1;
+   case FL_RELEASE:
+		handle_release();
+		return 1;
+   default:
+		return 0;
+  }
+return 1;
+}
+////////////a lot of shit for drawing ticks ..to do: merge Hoz/Vert Code tighter 
+void   Fl_NSlider::drawTicks()
+{
+ char  pnt[12];
+ int   fw=0, fh=0;
+ float mdev, mcount, fnum=0, fnumIncr=0;
+ uchar sr1, sg1, sb1; 
+ int    majorLnLen    ;
+ int    majorLnStart  ;
+ int    minorLnLen    ;
+ int    minorLnStart  ;
+ int    majorFntStart ;
+ 
+ fl_get_color( selection_color(), sr1, sg1, sb1);  //get color for ticks
+
+ fl_font( (Fl_Font)_tick_font,_tick_fontSize);
+ 
+ fl_color(_tick_col);
+ sprintf(pnt,  _majorTickPrecision, maximum());
+ fl_measure(pnt, fw, fh);                           //find font size
+ if(tk_range == 0) return;
+ if( horizontal() )             //insure the slider is horz
+ { 
+       majorLnLen    = (int) px_h/2;
+       majorLnStart  = (int) px_y;
+       minorLnLen    = (int) px_h/4;
+       minorLnStart  = (int) px_y;
+       majorFntStart = (int) majorLnStart+majorLnLen+fh;
+       switch(_alignTick) {
+           case FL_ALIGN_CENTER:
+                minorLnStart += majorLnLen -(minorLnLen/2);
+                majorLnStart += (int) px_h/4;
+                majorFntStart = majorLnStart + majorLnLen+fh;                     
+                break;
+	   case FL_ALIGN_LEFT:
+	   case FL_ALIGN_BOTTOM:
+                minorLnStart += (int) px_h - minorLnLen;
+                majorLnStart += (int) px_h - majorLnLen;
+                majorFntStart = (int)(px_y+majorLnLen-(fh/4));
+	        break;
+       }
+       if( majorTick() ) {   
+          mdev   = fabs( px_w/ ( tk_range/_majorTick));    //pixles per major tick span
+          if(mdev < (fw+(fw/3))) mdev   = (fw+(fw/3));
+          fnumIncr = tk_range/(px_w/mdev);
+          mcount   = 0; 
+          fnum     = 0; 
+          fl_line(  px_x+px_w , majorLnStart,  px_x+px_w , majorLnStart+majorLnLen );
+          while(mcount < px_w) {
+               fl_line(  px_x+mcount  , majorLnStart, px_x+mcount  , majorLnStart+majorLnLen );
+               sprintf(pnt, _majorTickPrecision, fnum+minimum() );
+               fl_measure(pnt, fw, fh); 
+               if(_tick_fontSize) fl_draw(pnt, px_x+mcount-(fw/3), majorFntStart); 
+               fnum += fnumIncr;
+               mcount += mdev;
+         }
+     } //(if major)
+     if( minorTick()  && _minorTick <= maximum()) {  //do minor ticks
+         mdev  = fabs( px_w/ ( tk_range/_minorTick));
+         if(mdev < 4) mdev = 4;
+         mcount = mdev;
+         while(mcount < px_w)
+         {   fl_line(  px_x+mcount , minorLnStart,  px_x+mcount , minorLnStart+minorLnLen );  //create main line 
+	     mcount += mdev;
+         }
+     } //(if minor)
+ } //(isHoz)
+ else  //insure the slider is Vert
+ {
+       majorLnLen    = (int) px_w/2;
+       majorLnStart  = (int) px_x;
+       minorLnLen    = (int) px_w/4;
+       minorLnStart  = (int) px_x;
+       majorFntStart = (int) majorLnStart+majorLnLen+(fh/4);
+       switch(_alignTick) {
+           case FL_ALIGN_CENTER:
+                minorLnStart += majorLnLen -(minorLnLen/2);
+                majorLnStart += (int) px_w/4;
+                majorFntStart = majorLnStart + majorLnLen+(fh/4);                     
+                break;
+	   case FL_ALIGN_BOTTOM:
+	   case FL_ALIGN_LEFT:
+                minorLnStart += (int) px_w - minorLnLen;
+                majorLnStart += (int) px_w - majorLnLen;
+                majorFntStart = majorLnStart - fw-(fh/4);                     
+	        break;
+       }
+       if( majorTick() ) {   
+          mdev   = fabs( px_h/ ( tk_range/_majorTick));    //pixles per major tick span
+          if(mdev < (fh+(fh/3))) mdev   = (fh+(fh/3));
+          fnumIncr = tk_range/(px_h/mdev);
+          mcount   = 0; 
+          fnum     = 0; 
+          fl_line(  majorLnStart, px_y+px_h , majorLnStart+majorLnLen,  px_y+px_h );
+          while(mcount < px_h) {
+               fl_line( majorLnStart, px_y+mcount  ,majorLnStart+majorLnLen, px_y+mcount );
+               sprintf(pnt, _majorTickPrecision, fnum+minimum() );
+               fl_measure(pnt, fw, fh); 
+               if(_tick_fontSize) fl_draw(pnt, majorFntStart,px_y+mcount+(fh/3)); 
+               fnum += fnumIncr;
+               mcount += mdev;
+         }
+     } //(if major)
+     if( minorTick()  && _minorTick <= maximum()) {  //do minor ticks
+         mdev  = fabs( px_h/ ( tk_range/_minorTick));
+         if(mdev < 4) mdev = 4;
+         mcount = mdev;
+         while(mcount < px_h)
+         {   fl_line(  minorLnStart, px_y+mcount,  minorLnStart+minorLnLen, px_y+mcount );  //create main line 
+	     mcount += mdev;
+         }
+     } //(if minor) 
+ } //else vert
+} //end drawTicks()
+////////////////////////some tricky stuff to do ramp shit (generates ramp image)
+static void generate_image(void* vv, int X, int Y, int W, uchar* buf) 
+{
+ Fl_NSlider* v = (Fl_NSlider*)vv;
+ char r= r1+Y*(r2-r1)/( v->h()-(v->box()->dh()) );   //VERTICAL
+ char g= g1+Y*(g2-g1)/( v->h()-(v->box()->dh()) );
+ char b= b1+Y*(b2-b1)/( v->h()-(v->box()->dh()) );
+
+ for (int x = X; x < X+W; x++) {
+    if( isHoz ){   
+        r= r1+x*(r2-r1)/( v->w()-(v->box()->dw()) );  //HORIZONTAL
+        g= g1+x*(g2-g1)/( v->w()-(v->box()->dw()) );
+        b= b1+x*(b2-b1)/( v->w()-(v->box()->dw()) );
+    }
+    *buf++ = r;
+    *buf++ = g;
+    *buf++ = b;
+ }
+}
+///////////////////draw the ramp 
+void   Fl_NSlider::drawRamp()
+{
+  if( (_r1+_r2+_g1+_g2+_b1+_b2) == 0) return;   //if black dont do it
+  int x1 = x()+box()->dx();
+  int y1 = y()+box()->dy();
+  int w1 = w()-box()->dw();
+  int h1 = h()-box()->dh();
+  r1=_r1; g1=_g1; b1=_b1;	    //for color ramp
+  r2=_r2; g2=_g2; b2=_b2;
+  fl_draw_image(generate_image, this, x1, y1, w1, h1);
+}
+//////////////////set the slider size
+void Fl_NSlider::slider_size(float v) {
+  if (v <  0) v = 0;
+  if (v > 1) v = 1;
+  if (slider_size_ != float(v)) {
+    slider_size_ = float(v); 
+    damage(FL_DAMAGE_EXPOSE);
+  }
+}
+////////////////set the bounds (from old slider)
+void Fl_NSlider::bounds(float a, float b) {
+  if (minimum() != a || maximum() != b) {
+    Fl_Valuator::range(a, b); 
+    damage(FL_DAMAGE_EXPOSE);
+  }
+}

Added: branches/branch-3.0-2011/test2/plugins/Fl_Pix_Box.H
===================================================================
--- branches/branch-3.0-2011/test2/plugins/Fl_Pix_Box.H	                        (rev 0)
+++ branches/branch-3.0-2011/test2/plugins/Fl_Pix_Box.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,22 @@
+// Fl_Check_Button.H
+
+// For back compatability, a Fl_Light_Button with a diamond down_box()
+// and a red color.
+
+#ifndef Fl_Pix_Box_H
+#define Fl_Pix_Box_H
+
+#include <FL/Fl_Box.H>
+#include <FL/Fl_Pixmap.H>
+
+class Fl_Pix_Box : public Fl_Box 
+{
+public:
+  Fl_Pixmap* bUp_;
+
+  void draw();
+  Fl_Pix_Box(int x,int y,int w,int h,const char *l = 0,Fl_Pixmap* bUp=0);
+};
+
+
+#endif

Added: branches/branch-3.0-2011/test2/plugins/Fl_Pix_Box.cxx
===================================================================
--- branches/branch-3.0-2011/test2/plugins/Fl_Pix_Box.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/plugins/Fl_Pix_Box.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,58 @@
+/* Fl_Pix_Box for WidgetSet, Copyright (c) 1998 curtis Edwards (curt1@jps.net)
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  All work developed as a consequence of the use of
+ * this program should duly acknowledge such use. No representations are
+ * made about the suitability of this software for any purpose.  It is
+ * provided "as is" without express or implied warranty.
+ Description	- subclass of Fl_Button that draws pixmaps with lables
+          each pixmap will draw UP/DOWN/HILIGHT 
+*/ 
+
+#include <FL/Fl.H>
+#include <FL/Fl_Pix_Box.H>
+#include <FL/fl_draw.H>
+
+////constructor
+Fl_Pix_Box::Fl_Pix_Box(int x,int y,int w,int h,const char *l,Fl_Pixmap* bUp)
+: Fl_Box(x,y,w,h,l) 
+{
+ bUp_     = bUp;
+ if(bUp)  fl_measure_pixmap(bUp->data, bUp->w, bUp->h); 
+}
+
+////draw the button
+void Fl_Pix_Box::draw()
+{
+  int remW=0,  nW=1;
+  int remH=0,  nH=1;
+  int X, Y, W=bUp_->w, H=bUp_->h;
+  Y= y() + Fl::box_dy(box());
+  draw_box();
+
+  if(!bUp_) return;
+  if(w() > W)
+  {  nW     = w() / W;
+     remW   = w() % W;
+  }
+  if(h() > H)
+  {  nH   = h() / H;
+     remH = h() % H;
+  }
+
+ for(int j=0; j<=nH; j++)
+ {
+    X=x()+ Fl::box_dx(box());
+    if(j==nH) H = remH-Fl::box_dh(box());
+    for(int i=0; i<nW; i++)
+    {  bUp_->draw(X,Y, w(), H); 
+       X=X+W;
+    }
+    if(remW) bUp_->draw(X,Y, remW-Fl::box_dw(box()), H);  
+    Y=Y+H;
+ }
+  draw_label();
+
+}

Added: branches/branch-3.0-2011/test2/plugins/Fl_Pix_Button.H
===================================================================
--- branches/branch-3.0-2011/test2/plugins/Fl_Pix_Button.H	                        (rev 0)
+++ branches/branch-3.0-2011/test2/plugins/Fl_Pix_Button.H	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,24 @@
+// Fl_Check_Button.H
+
+// For back compatability, a Fl_Light_Button with a diamond down_box()
+// and a red color.
+
+#ifndef Fl_Pix_Button_H
+#define Fl_Pix_Button_H
+
+#include <FL/Fl_Button.H>
+#include <FL/Fl_Pixmap.H>
+
+class Fl_Pix_Button : public Fl_Button 
+{
+public:
+  Fl_Pixmap* pix;
+  int hilight;
+  
+  void draw();
+  int handle(int);
+  Fl_Pix_Button(int x,int y,int w,int h,const char *l = 0,Fl_Pixmap* bUp=0);
+};
+
+
+#endif

Added: branches/branch-3.0-2011/test2/plugins/Fl_Pix_Button.cxx
===================================================================
--- branches/branch-3.0-2011/test2/plugins/Fl_Pix_Button.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/plugins/Fl_Pix_Button.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,68 @@
+/* Fl_Pix_Button for WidgetSet, Copyright (c) 1998 curtis Edwards (curt1@jps.net)
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  All work developed as a consequence of the use of
+ * this program should duly acknowledge such use. No representations are
+ * made about the suitability of this software for any purpose.  It is
+ * provided "as is" without express or implied warranty.
+ Description	- subclass of Fl_Button that draws pixmaps with lables
+                each pixmap will draw UP/DOWN/HILIGHT 
+*/
+#include <FL/Fl.H>
+#include "Fl_Pix_Button.H"
+#include <FL/fl_draw.H>
+#include <math.h>
+
+////constructor
+Fl_Pix_Button::Fl_Pix_Button(int x,int y,int w,int h,const char *l,Fl_Pixmap* bUp)
+: Fl_Button(x,y,w,h,l) 
+{
+ pix     = bUp;
+ hilight  = 0;
+ int maxW=0, maxH=0;
+ if(pix)                       //check size of bitmaps and log biggest sizes
+ {   fl_measure_pixmap(pix->data, pix->w, pix->h); 
+    if(pix->w > maxW ) maxW = pix->w; 
+    if(pix->h/3 > maxH)  maxH = pix->h/3;
+ }
+ Fl_Button::w(maxW);
+ Fl_Button::h(maxH);
+
+}
+
+////draw the button
+void Fl_Pix_Button::draw()
+{
+  if (type() == FL_HIDDEN_BUTTON) return;
+  if (!pix) return;
+  switch(value())
+  {
+      case 0: if(hilight) pix->draw(x(),y(), w(), pix->h/3, 0, 0);
+              else pix->draw(x(),y(), w(), pix->h/3, 0, 0);
+              break;
+      case 1: pix->draw(x(),y(), w(), pix->h/3, 0, 0);
+              break;
+      default: pix->draw(x(),y(), w(), pix->h/3, 0, 0);
+              break;
+  }
+  draw_label();
+}
+
+////handel the events
+int Fl_Pix_Button::handle(int event)
+{
+    switch (event) 
+    {
+       case FL_ENTER:
+            hilight=1;
+            redraw();
+            break;
+       case FL_LEAVE:
+	        hilight=0;
+                redraw();
+                break;
+   }
+ return Fl_Button::handle(event);
+}

Added: branches/branch-3.0-2011/test2/plugins/Makefile
===================================================================
--- branches/branch-3.0-2011/test2/plugins/Makefile	                        (rev 0)
+++ branches/branch-3.0-2011/test2/plugins/Makefile	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,57 @@
+#
+# "$Id: Makefile 1186 2000-06-10 04:10:35Z carl $"
+#
+# Fluid plugin makefile for the Fast Light Tool Kit (FLTK).
+#
+# Copyright 1998-1999 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".
+#
+
+PROGRAM = essai.flpl
+
+CPPFILES = \
+	essai_plugin.cxx
+
+################################################################
+
+OBJECTS = $(CPPFILES:.cxx=.o)
+
+XTRAFLAGS = -I../../fluid -I../..
+
+include ../../makeinclude
+
+all: $(PROGRAM) Fl_NSlider.o
+
+$(PROGRAM) : $(OBJECTS) ../../lib/$(LIBNAME).a
+	$(DSOCOMMAND) $@ $(OBJECTS) $(DSOLIBS)
+
+clean :
+	-@ rm -f *.o $(PROGRAM) $(CLEAN) core *~ makedepend
+	@touch makedepend
+
+depend:
+	$(MAKEDEPEND) $(XTRAFLAGS) $(CXXFLAGS) $(CPPFILES) $(CFILES) > makedepend
+
+install:
+
+include makedepend
+
+#
+# End of "$Id: Makefile 1186 2000-06-10 04:10:35Z carl $".
+#

Added: branches/branch-3.0-2011/test2/plugins/essai.fl
===================================================================
--- branches/branch-3.0-2011/test2/plugins/essai.fl	                        (rev 0)
+++ branches/branch-3.0-2011/test2/plugins/essai.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,23 @@
+# data file for the Fltk User Interface Designer (fluid)
+version 2.00 
+images_dir ./ 
+header_name {.h} 
+code_name {.cxx} 
+gridx 5 
+gridy 5 
+snap 3
+Function {make_window()} {open
+} {
+  Fl_Window {} {open
+    xywh {299 199 299 258} visible
+  } {
+    Fl_Pix_Button {} {
+      label pixbutton
+      xywh {25 25 20 20} align 524289
+    }
+    Fl_NSlider {} {
+      xywh {110 30 35 175} type {Vert Half}
+      majorTickPrecision 3
+    }
+  }
+} 

Added: branches/branch-3.0-2011/test2/plugins/essai_panel.cxx
===================================================================
--- branches/branch-3.0-2011/test2/plugins/essai_panel.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/plugins/essai_panel.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,20 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0000
+
+#include "essai_panel.h"
+
+Fl_Group *Essai=(Fl_Group *)0;
+
+Fl_Group* make_window() {
+  Fl_Group* w;
+  { Fl_Group* o = Essai = new Fl_Group(0, 0, 258, 74);
+    w = o;
+    { Fl_Slider* o = new Fl_Slider(20, 20, 225, 20, "Major tick precision");
+      o->type(5);
+      o->maximum(6);
+      o->step(1);
+      o->callback((Fl_Callback*)major_tick_precision_cb);
+    }
+    o->end();
+  }
+  return w;
+}

Added: branches/branch-3.0-2011/test2/plugins/essai_panel.fl
===================================================================
--- branches/branch-3.0-2011/test2/plugins/essai_panel.fl	                        (rev 0)
+++ branches/branch-3.0-2011/test2/plugins/essai_panel.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,21 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.0000 
+images_dir ./ 
+header_name {.h} 
+code_name {.cxx} 
+gridx 5 
+gridy 5 
+snap 3
+Function {make_window()} {open
+} {
+  Fl_Window Essai {open selected
+    xywh {279 430 258 74}
+    class Fl_Group visible
+  } {
+    Fl_Slider {} {
+      label {Major tick precision}
+      callback major_tick_precision_cb
+      xywh {20 20 225 20} type {Horz Knob} maximum 6 step 1
+    }
+  }
+} 

Added: branches/branch-3.0-2011/test2/plugins/essai_panel.h
===================================================================
--- branches/branch-3.0-2011/test2/plugins/essai_panel.h	                        (rev 0)
+++ branches/branch-3.0-2011/test2/plugins/essai_panel.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,10 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0000
+
+#ifndef essai_panel_h
+#define essai_panel_h
+#include <FL/Fl.H>
+extern Fl_Group *Essai;
+#include <FL/Fl_Slider.H>
+extern void major_tick_precision_cb(Fl_Slider*, void*);
+Fl_Group* make_window();
+#endif

Added: branches/branch-3.0-2011/test2/plugins/essai_plugin.cxx
===================================================================
--- branches/branch-3.0-2011/test2/plugins/essai_plugin.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/plugins/essai_plugin.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,177 @@
+#include <stdio.h>
+#include <string.h>
+#include <FL/Fl_Menu.H>
+#include <FL/Fl_Window.H>
+#include "Fluid_Plugins.h"
+#include "Fl_Type.h"
+#include "Fl_Pix_Button.cxx"
+
+#include "play_buttons256.xpm"
+#include "pause_buttons256.xpm"
+
+#define S2I(a) ( int(a[0])+(int(a[1])<<8)+(int(a[2])<<16)+(int(a[3])<<24) )
+
+// Description of the plugin : declared extern "C" to avoid C++ name encoding
+// (MS Visual C does encode C++ name of variables and not only functions !! Wonder why ...)
+extern "C" FLUID_PLUGIN_API Fluid_Plugin fluid_plugin;
+
+
+void option_cb(Fl_Widget* o, void* p)
+{
+  printf("plugin option callback called !\n");
+}
+
+// Options menu : you can put whatever you want here
+Fl_Menu_Item options_menu[] = {
+{"Options",0,option_cb,0,0},
+{ 0 }
+};
+
+#include <FL/Fl_Button.H>
+
+
+//////////////////////////////////////////////////////////////////////
+// Description of a new widget for fluid
+
+// This object contains all the informations about the widgets and all methods
+// to write and read datas from the .fl file
+// (in this example we do not override the write and read methods !)
+// (see below for a more complete example)
+
+static Fl_Menu_Item buttontype_menu[] = {
+  {"Normal",0,0,(void*)0},
+  {"Toggle",0,0,(void*)FL_TOGGLE_BUTTON},
+  {"Radio",0,0,(void*)FL_RADIO_BUTTON},
+  {0}};
+
+class Fl_Pix_Button_Type : public Fl_Widget_Type {
+  // Return a pointer on the button type menu
+  Fl_Menu_Item *subtypes() {return buttontype_menu;}
+public:
+  // Give the name of the widget type
+  virtual const char *type_name() {return "Fl_Pix_Button";}
+
+  // Actually create a widget of this type to be drawn in fluid
+  // Set a default label name describing the widget type shortly
+  Fl_Widget *widget(int x,int y,int w,int h) {
+    return new Fl_Pix_Button(x,y,w,h,"pixbutton", new Fl_Pixmap(play_buttons256)); }
+
+  // Create a new fluid object of this type
+  Fl_Widget_Type *_make() {return new Fl_Pix_Button_Type();}
+
+  // Give informations on this type
+  int is_button() const {return 1;} // (all other is_foo methods reuturn 0 by default
+};
+static Fl_Pix_Button_Type Fl_Pix_Button_type; // template pixbutton
+
+
+
+///////////////////////////////////////////////////////
+// Another widget : the NSlider
+// Here we override the write and read methods
+#include "Fl_NSlider.cxx"
+static Fl_Menu_Item slider_type_menu[] = { // Type menu definition
+  {"Vertical",0,0,(void*)FL_VERT_SLIDER},
+  {"Horizontal",0,0,(void*)FL_HOR_SLIDER},
+  {"Vert Fill",0,0,(void*)FL_VERT_FILL_SLIDER},
+  {"Horz Fill",0,0,(void*)FL_HOR_FILL_SLIDER},
+  {"Vert Knob",0,0,(void*)FL_VERT_NICE_SLIDER},
+  {"Horz Knob",0,0,(void*)FL_HOR_NICE_SLIDER},
+  {"Vert Half",0,0,(void*)FL_VERT_HALF_SLIDER},
+  {"Horz half",0,0,(void*)FL_HOR_HALF_SLIDER},
+  {0}};
+class Fl_NSlider_Type : public Fl_Widget_Type {
+  Fl_Menu_Item *subtypes() {return slider_type_menu;}
+  // We use this kludge to identify that this is really an NSlider and not any valuator,
+  // could there be any better way ?
+  int is_valuator() const {return S2I("NSLD");}   
+public:
+  virtual const char *type_name() {return "Fl_NSlider";}
+  Fl_Widget *widget(int x,int y,int w,int h) {
+    return new Fl_NSlider(x,y,w,h);}
+  Fl_Widget_Type *_make() {return new Fl_NSlider_Type();}
+
+  void write_properties() {
+    Fl_Widget_Type::write_properties();
+    Fl_NSlider* i = (Fl_NSlider*) o;
+    if(i->majorTickPrecision()) {
+      write_indent(level+1);
+      write_string("majorTickPrecision %d", i->majorTickPrecision());
+    }
+  }
+  void read_property(const char* c) {
+    if(!strcmp(c, "majorTickPrecision")) {
+      Fl_NSlider* i = (Fl_NSlider*) o;
+      int mtp;
+      if(sscanf(read_word(), "%d", &mtp) == 1) i->majorTickPrecision(mtp);
+    } else
+      Fl_Widget_Type::read_property(c);
+  }
+  void write_widget_code() {
+    Fl_Widget_Type::write_widget_code();
+    Fl_NSlider* i = (Fl_NSlider*) o;
+    if(i->majorTickPrecision()) write_c("%so->majorTickPrecision(%d);\n", indent(), 
+					i->majorTickPrecision());
+  }
+};
+static Fl_NSlider_Type Fl_NSlider_type;
+
+
+
+// Submenu in the new menu : only pointers on the the template objects is needed,
+// fluid will fill in the rest (name, callback action, etc ...)
+Fl_Menu_Item new_menu[] = {
+  {0,0,0,(void*)&Fl_Pix_Button_type},
+  {0,0,0,(void*)&Fl_NSlider_type},
+{ 0 }
+};
+
+
+
+// Callback for the panel settings
+// fluid set the user_data parameter to let us know if we have to set or load the settings
+class Fl_Slider;
+void major_tick_precision_cb(Fl_Slider* o, void* v)
+{
+  Fl_Valuator* i = (Fl_Valuator*) o;
+  if (v == LOAD) { // Case LOAD
+    if (current_widget->is_valuator() != S2I("NSLD")) // Is it a NSlider widget ?
+      {i->hide(); return;}                       // no, we hide the controller
+    else { 
+      fluid_plugin.please_show_panel=1; // yes : tell to fluid that we use the panel
+      i->show();                        // and we show the controller
+    } 
+
+    // Actually load the value in the controller
+    i->value(((Fl_NSlider*)current_widget->o)->majorTickPrecision()); 
+
+  } else {         // Case SET
+
+    for (Fl_Type *o = Fl_Type::first; o; o = o->next)
+      if (o->selected && o->is_widget() && o->is_valuator() == S2I("NSLD")) { // is it a NSlider
+	Fl_Widget_Type* q = (Fl_Widget_Type*)o;
+	((Fl_NSlider*)q->o)->majorTickPrecision(i->value()); // yep : set the widget setting
+	q->o->redraw();
+      }
+  }
+}
+
+
+
+// This function create the panel for the specific settings of this set of widgets
+#include "essai_panel.cxx"
+void make_panel()
+{
+  fluid_plugin.panel = make_window();
+}
+
+
+
+
+// This is the description of the plugin
+FLUID_PLUGIN_API Fluid_Plugin fluid_plugin = {
+  "Essai",       // Name of the plugin
+  options_menu,  // pointer on the 'option' menu
+  new_menu,      // pointer on the 'new' menu
+  make_panel,    // function that creates the settings window
+};

Added: branches/branch-3.0-2011/test2/plugins/pause_buttons256.xpm
===================================================================
--- branches/branch-3.0-2011/test2/plugins/pause_buttons256.xpm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/plugins/pause_buttons256.xpm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,111 @@
+/* XPM */
+char *pause_buttons256[] = {
+/* width height num_colors chars_per_pixel */
+"    20    60       44            1",
+/* colors */
+". c #000000",
+"# c #808080",
+"a c #c0dcc0",
+"b c #a6caf0",
+"c c #2a5f55",
+"d c #2a7f55",
+"e c #2a7faa",
+"f c #553f55",
+"g c #555f55",
+"h c #555faa",
+"i c #557f55",
+"j c #557faa",
+"k c #559f55",
+"l c #559faa",
+"m c #55bfaa",
+"n c #7f5f55",
+"o c #7f7f55",
+"p c #7f7faa",
+"q c #7f9f55",
+"r c #7f9faa",
+"s c #7fbfaa",
+"t c #7fbfff",
+"u c #7fdfaa",
+"v c #7fdfff",
+"w c #aa7f55",
+"x c #aa9f55",
+"y c #aa9faa",
+"z c #aabfaa",
+"A c #aadfff",
+"B c #d4bfaa",
+"C c #d4dfaa",
+"D c #d4dfff",
+"E c #ffdfaa",
+"F c #ffdfff",
+"G c #ccccff",
+"H c #99ffff",
+"I c #ccffff",
+"J c #2a1f00",
+"K c #2a1f55",
+"L c #2a3f00",
+"M c #2a3f55",
+"N c #fffbf0",
+"O c #a0a0a4",
+"P c #ffffff",
+/* pixels */
+"#MJK.Lg##O###gJJMg##",
+"MKJJ#yyzyzzyOOOgKKgh",
+"JJM#OOOOyOyOOOO#oMMg",
+"KJ#OyzzBzBBzBzOOO#Jg",
+".gOOOyBzBazBzOOx##gK",
+"MOOzzBa..aD..BzyOO#L",
+"g#OyyzaJJEaJJBzO###g",
+"#yzyaBG..DF..aBBzO##",
+"#OOOBBaJJaCJKzzO#o#o",
+"OOOzzaD..PF..aBzyO##",
+"#xOyyBaJJaaJJBOO#o#o",
+"OOOyBaa..FN..aBzOO##",
+"o##OOyBJJazJJyO#ooog",
+"gOOOzza..aa..zzOO##g",
+"J#q##OOOOyOOOx##oooM",
+"KgOOOOOzBzzzOOOx##gg",
+"gLn#o#####w#o#oinifO",
+"nMf#OxOOxOO#O####fOz",
+"gogLg#oo#ooooooggOzO",
+"g###MJg######fMgyzO#",
+"#MJK.Kg##r###cJJMg##",
+"MK.J#rOrOOOOrOrgKKgh",
+"JJM##rOOrOrrOp##iMMg",
+"JK#rOzyzzzzzzOOrOgKg",
+".g#rOOzzbyzyyrr###gK",
+"KrOOzzb..Ga..ayOrp#L",
+"g#rryyzJJbaKJyrr###f",
+"#OOyzaD..DD..bayrrj#",
+"#rrOObzJJbaJJzrr##g#",
+"rOOzzaG..DD..bzyrrp#",
+"##prOyzJJabJJyrrpg#g",
+"#rOOyab..DD..bzOr#j#",
+"###rrOyJJzzJJrpp##gg",
+"MrrOOzb..bb..zrr#j#M",
+"J###p#rrrOrrpp###ggM",
+"Kg##rrOOyrOOOrp#j#gg",
+"gJh####j####jgigggMO",
+"gfM##p#rpp###pp#jfOy",
+"#ifMgg#g#gihgggMfOzO",
+"gn#gMMM##j###MMnOOO#",
+"#MJK.LcjlrrljgM.Mg##",
+"MKJJlrsssssrsrriKKgh",
+"J.MlrrrsrsrssrllkMMg",
+"JMlrssszzbszsssrriMg",
+".irrsssbssbsssrlllcK",
+"Mrsszba..ba..bssrrlM",
+"crrrsstJJAvJJtsslllc",
+"rssszba..aI..ubssrl#",
+"lrrssbbJJHvJJvmmllji",
+"rrssbub..IA..bbsrlll",
+"llrrssvJJvHJJvmmlljj",
+"rrsszba..AA..utsrlll",
+"jlrlsstJJvuJKmllljid",
+"crrssss..bv..bsslllc",
+"M#jllrmsmmsmllljjdjM",
+"Jdlrrssstsssssllljcg",
+"gKiljlllllljlejieiMO",
+"gfMlllrlrlllllljjcOy",
+"#igMcijjjjjijeicfOzO",
+"gn#nMMckjkljjcMgOyO#"
+};

Added: branches/branch-3.0-2011/test2/plugins/play_buttons256.xpm
===================================================================
--- branches/branch-3.0-2011/test2/plugins/play_buttons256.xpm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/plugins/play_buttons256.xpm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,112 @@
+/* XPM */
+char *play_buttons256[] = {
+/* width height num_colors chars_per_pixel */
+"    20    60       45            1",
+/* colors */
+". c #000000",
+"# c #808080",
+"a c #c0dcc0",
+"b c #a6caf0",
+"c c #2a5f55",
+"d c #2a5faa",
+"e c #2a7f55",
+"f c #2a7faa",
+"g c #553f55",
+"h c #555f55",
+"i c #555faa",
+"j c #557f55",
+"k c #557faa",
+"l c #559f55",
+"m c #559faa",
+"n c #55bfaa",
+"o c #55bfff",
+"p c #7f5f55",
+"q c #7f7f55",
+"r c #7f7faa",
+"s c #7f9f55",
+"t c #7f9faa",
+"u c #7fbfaa",
+"v c #7fbfff",
+"w c #7fdfaa",
+"x c #7fdfff",
+"y c #aa9f55",
+"z c #aa9faa",
+"A c #aabfaa",
+"B c #aadfaa",
+"C c #aadfff",
+"D c #d4bfaa",
+"E c #d4bfff",
+"F c #d4dfff",
+"G c #ffdfaa",
+"H c #ffdfff",
+"I c #ccccff",
+"J c #99ffff",
+"K c #ccffff",
+"L c #2a1f00",
+"M c #2a1f55",
+"N c #2a3f00",
+"O c #2a3f55",
+"P c #fffbf0",
+"Q c #a0a0a4",
+/* pixels */
+"#gMLLMh##Q###hLMOh#r",
+"hMLM#QAzAzAQQQQhLOh#",
+"MLO#QQQzAzQQQ####gg#",
+"LN#AAADaDDDDAAQQQhOh",
+".#QQzDALaaAAzQy#q#hO",
+"MQQDAaE..FaaDAAzQ##N",
+"hQQADDaLLLGaDAQ###qg",
+"#QADaaF....HaDDAQ###",
+"#QQADaPLLMLLaAQ#s#qh",
+"QQADaEP......aDAQ###",
+"#QzADDaLLLLLDAQ#q#qp",
+"QQzDaaF....FaDDQQ###",
+"q#QQzDDLMLaDzQ##qqhh",
+"hQQAAaa..aaDAAAQ###h",
+"N###QQzLAzQQQ#qqqjpO",
+"ghQQQzAAADAAyQQ###hh",
+"hOq#s###Q##q#qqhphgQ",
+"#hg#QQQQyQQ######h#A",
+"##hghqqq#qqqqpjhgQaz",
+"p##qgOh######hghQAQ#",
+"#hML.Lh#####hgLLgh#r",
+"gMLO#tQQQAQtQtthMOh#",
+"OLO#tQQtQtQtt###hgO#",
+"LL#QQzAAaaAAQQttthOh",
+".itQQAAMAzzzQt####gO",
+"O#QAAba..FFaAAQt###M",
+"hQtzAAbLLLabzQt#k#jO",
+"#QzAIaF....FabAQt###",
+"#ttAAbaLMLLLAQtr#hih",
+"tQzAaIF......bAtt###",
+"#ttzzAbLLLMLAQt###hh",
+"#QQAaaF....IbAQtk#k#",
+"##ttQzALLMAuQrr#hhhh",
+"OtQQAbb..abAzttr#r#O",
+"O###r#tLtQttr###hhhO",
+"NhtttQAzzQQQtt#k#kgh",
+"hOh###krkr##h#hhhhOQ",
+"#hg#r#t#t#r#r#k#ig#A",
+"##hOh#h#h#hhhhhcg#AQ",
+"h##qgOO##k#k#OOhQAz#",
+"#gML.Ocmmtm#kcLMgh#r",
+"hMLOmtuQuuuuttteMOh#",
+"MLO#tutuuututtmmjOO#",
+"LOmuuuAbAbAuuutttjOh",
+".jttuAbLbwbuuttmmkcO",
+"OtuAbAb..babbuuttmtO",
+"ctuuuwbLLLbxuuummkjc",
+"tuubabK....abbuutmmk",
+"mttuubCLLMLLxwnmmkjj",
+"tuubaCa......bvummmk",
+"mttubwJMLLLLxunmmjke",
+"tuuuBbb....Cwxuummkk",
+"kmtuuuxLLMxwommmkjfe",
+"ctutbub..Bxbuutmmk#c",
+"O#mmmunLonunmmmkjfeO",
+"Oettuuuvuuutummmmkch",
+"hOkmmmmmmmmmkkfjdegQ",
+"#hO#mmtmtmmmmmkmjc#A",
+"q#hOckkkkkkjdjecgQAQ",
+"####hOclmlkkkcOhQzQ#"
+};

Added: branches/branch-3.0-2011/test2/porsche.xpm
===================================================================
--- branches/branch-3.0-2011/test2/porsche.xpm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/porsche.xpm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,71 @@
+/* XPM */
+static const char * porsche_xpm[] = {
+"64 64 4 1",
+" 	c #background",
+".	c #000000000000",
+"X	c #ffd100",
+"o	c #FFFF00000000",
+"                                                                ",
+"                   ..........................                   ",
+"              .....................................             ",
+"        ............XXXXXXXXXXXXXXXXXXXXXXXX............        ",
+"        ......XXXXXXX...XX...XXXXXXXX...XXXXXXXXXX......        ",
+"        ..XXXXXXXXXX..X..XX..XXXX.XXXX..XXXXXXXXXXXXXX..        ",
+"        ..XXXXXXXXXX..X..XX..XXX..XXXX..X...XXXXXXXXXX..        ",
+"        ..XXXXXXXXXX..XXXXX..XX.....XX..XX.XXXXXXXXXXX..        ",
+"        ..XXXXXXXXX.....XXX..XXX..XXXX..X.XXXXXXXXXXXX..        ",
+"        ..XXXXXXXXXX..XXXXX..XXX..XXXX....XXXXXXXXXXXX..        ",
+"        ..XXXXXXXXXX..XXXXX..XXX..XXXX..X..XXXXXXXXXXX..        ",
+"        ..XXXXXXXXXX..XXXXX..XXX..X.XX..XX..XXXXXXXXXX..        ",
+"        ..XXXXXXXXX....XXX....XXX..XX....XX..XXXXXXXXX..        ",
+"        ..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..        ",
+"        ..XXXXXXXXX..........................XXXXXXXXX..        ",
+"        ..XXX.......XXXXXXXXXXX...................XXXX..        ",
+"        ......XX.XXX.XXX..XXXXX.........................        ",
+"        ..XXXXX.XXX.XXX.XXXX.XX.........................        ",
+"        ..XXXX.XXX.XX.......XXX.........................        ",
+"        ..XXXX.......XXXXXX..XX..ooooooooooooooooooooo..        ",
+"        ..X.....XXXXXXXXXXXXXXX..ooooooooooooooooooooo..        ",
+"        ..X...XXXXXXXXXXXXXXXXX..ooooooooooooooooooooo..        ",
+"        ..X..XXXXXXX.XX.XXXXXXX..ooooooooooooooooooooo..        ",
+"        ..XXXXX.XXX.XX.XXXXXXXX..ooooooooooooooooooooo..        ",
+"        ..XXXX.XXX.XX.XX................................        ",
+"        ..XXXX.X.........X....X.X.X.....................        ",
+"        ..XXXX...XXXXXXX.X..X...X.X.X.X.................        ",
+"        ..X....XXXXXXXXXX.X...X.X.X.....................        ",
+"        ..X...XXXXXXXXXX.XXXXXXXXXXXXXX.................        ",
+"        ..X..XXXXXX.XX.X.XXX...XXXXXXXX.................        ",
+"        ..XXXXX.XX.XX.XX.XX.....XXXXXXX.oooooooooooooo..        ",
+"        ..XXXX.XX.XX.XX..XX.X...XXXXX.X.oooooooooooooo..        ",
+"        ..XXXX.X.......X.XXXX...XXXX..X.oooooooooooooo..        ",
+"        ..X......XXXXXX..XXXX...XXXX..X.oooooooooooooo..        ",
+"        ..X...XXXXXXXXXX.XXX.....XXX.XX.oooooooooooooo..        ",
+"        ..X..XXXXXXXXXXX.X...........XX.oooooooooooooo..        ",
+"        .................X.X.........XX.................        ",
+"        .................X.X.XXXX....XX.XXXXXXXXXXXXXX..        ",
+"        .................XXX.XXXXX.X.XX.XXX.XX.XXXXXXX..        ",
+"         ................XXXX.XXX..X..X.XX.XX.XXX.XXX..         ",
+"         ................XXXXXXXX.XX.XX.X.XX.XXX.XXXX..         ",
+"         .................XXXXXX.XX.XX.X..........XXX..         ",
+"          ..oooooooooooooo.XXXXXXXXXX....XXXXXXXX..X..          ",
+"          ..ooooooooooooooo.XXXXXXXX....XXXXXXXXXXXX..          ",
+"           ..ooooooooooooooo........XXXXXXX.XX.XXXX..           ",
+"           ..oooooooooooooooooo..XXXXX.XXX.XX.XX.XX..           ",
+"            ..ooooooooooooooooo..XXXX.XXX.XX.XX.XX..            ",
+"            ..ooooooooooooooooo..XXX.XX........XXX..            ",
+"             ....................XXX....XXXXXX..X..             ",
+"              ...................XX...XXXXXXXXXXX.              ",
+"              ...................X...XXXXXXXXXXX..              ",
+"               ..................X..XXXX.XXXXXX..               ",
+"                .................XXX.XX.XX.XXX..                ",
+"                 ................XX.XX.XX.XXX..                 ",
+"                  ..ooooooooooo..XX.......XX..                  ",
+"                   ..oooooooooo..X...XXXX.X..                   ",
+"                    ..ooooooooo..X..XXXXXX..                    ",
+"                     ...ooooooo..X..XXXX...                     ",
+"                      ....ooooo..XXXXX....                      ",
+"                        ....ooo..XXX....                        ",
+"                          ....o..X....                          ",
+"                            ........                            ",
+"                              ....                              ",
+"                                                                "};

Added: branches/branch-3.0-2011/test2/porsche1.xpm
===================================================================
--- branches/branch-3.0-2011/test2/porsche1.xpm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/porsche1.xpm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,76 @@
+/* XPM */
+static char * porsche[] = {
+/* width height ncolors chars_per_pixel */
+"64 64 -4 1 ",
+/* colormap */
+"\
+ \x50\x50\x80\
+.\xff\xff\0\
+r\xff\x00\0\
+b\0\0\0",
+/* pixels */
+"        bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb        ",
+"        bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb        ",
+"        bb............................................bb        ",
+"        bb.......................bbbbbbb.bb...........bb        ",
+"        bb.......................bbbbbbb.bb...........bb        ",
+"        bb......bbb...bb..bb.....bb......bb...........bb        ",
+"        bb......bbb...bb..bb.....bb......bb...........bb        ",
+"        bb.......bb.......bbbb...bbbbb...bb...........bb        ",
+"        bb.......bb...bb..bbbbb..bbbbb...bb...........bb        ",
+"        bb.......bb...bb..bb.bb..bb......bb...........bb        ",
+"        bb......bbbb..bb..bbbbb..bb......bbbbbb.......bb        ",
+"        bb......bbbb..bb..bbbb...bb......bbbbbb.......bb        ",
+"        bb............................................bb        ",
+"        bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb        ",
+"        bb.....................bbbbbbbbbbbbbbbbbbbbbbbbb        ",
+"        bb......b...b...bb.....bbbbbbbbbbbbbbbbbbbbbbbbb        ",
+"        bb.....b...b...b....b..bbbbbbbbbbbbbbbbbbbbbbbbb        ",
+"        bb....bb..bb.bbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbb        ",
+"        bb...bbbbbbbb......bb..bbrrrrrrrrrrrrrrrrrrrrrbb        ",
+"        bb..bbbb...............bbrrrrrrrrrrrrrrrrrrrrrbb        ",
+"        bb.bbb.................bbrrrrrrrrrrrrrrrrrrrrrbb        ",
+"        bb..........b..b.......bbrrrrrrrrrrrrrrrrrrrrrbb        ",
+"        bb.....b...b..b........bbrrrrrrrrrrrrrrrrrrrrrbb        ",
+"        bb....b...b..b..bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb        ",
+"        bb....b.bbbbbbbbb..............bbbbbbbbbbbbbbbbb        ",
+"        bb...bbbb.......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb        ",
+"        bb..bbb.........b..............bbbbbbbbbbbbbbbbb        ",
+"        bb.bbb..........b...bbb........bbbbbbbbbbbbbbbbb        ",
+"        bb.........b..b.b..bbbbb.......bbbbbbbbbbbbbbbbb        ",
+"        bb.....b..b..b..b..b.bbb.....b.brrrrrrrrrrrrrrbb        ",
+"        bb....b..b..b..bb....bbb....bb.brrrrrrrrrrrrrrbb        ",
+"        bb...bb.bbbbbbb.b....bbb....bb.brrrrrrrrrrrrrrbb        ",
+"        bb..bbbbb......bb...bbbbb...b..brrrrrrrrrrrrrrbb        ",
+"        bb.bbb..........b.bbbbbbbbbbb..brrrrrrrrrrrrrrbb        ",
+"        bb..............b.b.bbbbbbbbb..brrrrrrrrrrrrrrbb        ",
+"        bbbbbbbbbbbbbbbbb.b.b....bbbb..bbbbbbbbbbbbbbbbb        ",
+"        bbbbbbbbbbbbbbbbb...b.....b.b..b..............bb        ",
+"        bbbbbbbbbbbbbbbbb........bb.bb.b...b..b.......bb        ",
+"         bbbbbbbbbbbbbbbb........b..b..b..b..b...b...bb         ",
+"         bbbbbbbbbbbbbbbb.......b..b...b.b..b...b....bb         ",
+"         bbbbbbbbbbbbbbbbb............b.bbbbbbbbbb...bb         ",
+"          bbrrrrrrrrrrrrrrb..........bbbb........bb.bb          ",
+"          bbrrrrrrrrrrrrrrrb........bbbb............bb          ",
+"           bbrrrrrrrrrrrrrrrbbbbbbbb.......b..b....bb           ",
+"           bbrrrrrrrrrrrrrrrrrrbb.....b...b..b..b..bb           ",
+"            bbrrrrrrrrrrrrrrrrrbb....b...b..b..b..bb            ",
+"            bbrrrrrrrrrrrrrrrrrbb...bb.bbbbbbbb...bb            ",
+"             bbbbbbbbbbbbbbbbbbbb...bbbb......bb.bb             ",
+"              bbbbbbbbbbbbbbbbbbb..bbb...........b              ",
+"              bbbbbbbbbbbbbbbbbbb.bbb...........bb              ",
+"               bbbbbbbbbbbbbbbbbb..............bb               ",
+"                bbbbbbbbbbbbbbbbb...b.b.b.....bb                ",
+"                 bbbbbbbbbbbbbbbb..b.b.b..b..bb                 ",
+"                  bbrrrrrrrrrrrbb..bbbbbbb..bb                  ",
+"                   bbrrrrrrrrrrbb.bbb....b.bb                   ",
+"                    bbrrrrrrrrrbb.bb......bb                    ",
+"                     bbbrrrrrrrbb.......bbb                     ",
+"                      bbbbrrrrrbb.....bbbb                      ",
+"                        bbbbrrrbb...bbbb                        ",
+"                          bbbbrbb.bbbb                          ",
+"                            bbbbbbbb                            ",
+"                              bbbb                              ",
+"                               bb                               ",
+"                                                                "
+} ;

Added: branches/branch-3.0-2011/test2/progress.cxx
===================================================================
--- branches/branch-3.0-2011/test2/progress.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/progress.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,51 @@
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/ProgressBar.h>
+#include <stdlib.h>
+
+using namespace fltk;
+
+Window* win;
+
+static void ptimer(void *o)
+{
+	ProgressBar *pbar = (ProgressBar *)o;
+	if(pbar->position() < 100)
+	{
+		pbar->step(1);
+		add_timeout(0.1, ptimer, (void *)pbar);
+	}
+	else
+		win->hide();
+}
+
+int main(int argc, char **argv) {
+  ProgressBar* pbar;
+  int nargs = 0;
+  { Window* o = new Window(400, 100);
+    o->begin();
+    win = o;
+    { ProgressBar* o = new ProgressBar(25, 25, 330, 25, "Simple Progress Bar");
+      if (argc>1) {nargs++; o->minimum(atoi(argv[1]));}
+      if (argc>2) {nargs++; o->maximum(atoi(argv[2]));}
+
+	  pbar = o;
+	  //pbar->set_vertical();
+      o->box(ENGRAVED_BOX);
+#if (MAJOR_VERSION > 1)
+	  o->clear_flag(ALIGN_MASK);
+	  o->set_flag(ALIGN_BOTTOM);
+#else
+	  o->align(ALIGN_BOTTOM);
+#endif
+	  o->selection_color(BLUE);
+	  o->color(WHITE);
+	  o->textcolor(RED);
+    }
+    o->end();
+  }
+  add_timeout(0.1, ptimer, (void *)pbar);
+  if (nargs) argv[nargs] = argv[0];
+  win->show(argc-nargs, &argv[nargs]);
+  return run();
+}

Added: branches/branch-3.0-2011/test2/qubix.cxx
===================================================================
--- branches/branch-3.0-2011/test2/qubix.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/qubix.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,987 @@
+/* FLQUBIX
+
+   VERSION:  2.0
+   DATE:     20.10.2004
+   USING:    FLTK 2.0
+   PLATFORM: WINDOWS
+
+   A game of four-in-a-row in 3D
+
+   Adapted for FLTK, (http://www.fltk.org) September 2000, Frank
+   Siegert <frank@this.net> More of my workings is available on
+   http://www.this.net/~frank
+
+   This code may be used freely as long as it is given away for free
+   
+   It is hereby placed under the GPL (LGPL if you remove the random
+   generator embedded within)
+   
+   Please do not judge my professional work by the quality of this
+   hack, this puppy was written just for fun in about three hours out
+   of the DisplayPostscript code from NeXTSTEP. By doing this the code
+   comes back from a long journey - as the original author of FLTK
+   Bill Spitzak has released it in his famous 'hackkit' for NeXTSTEP
+   aeons ago (1991). The code is not written for clarity but *hey* it
+   works and now I do not need to boot my trusty NeXT just to
+   play. :-)
+
+   Further adapted by Bill Spitzak for fltk2.0 10/20/2004
+
+*/
+
+/* Original comments:
+
+   qubix.c generated from qubic.psw
+   by unix pswrap V1.009  Wed Apr 19 17:50:24 PDT 1989
+
+   This is the main file, containing all the game logic
+
+   in ancient times all UI stuff was embedded within too (no AppKit!)
+   so do not be too upset with the suboptimal structure
+
+   Original (c) 1991 by Bill Spitzak, Q&D ported to NeXTSTEP/Appkit by
+   Frank M. Siegert, 1998
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#if !defined (__APPLE__) && !defined (__FreeBSD__)
+# include <malloc.h>
+#endif
+#include <string.h>
+#include <math.h>
+#include <time.h>
+
+#include <fltk/run.h>
+#include <fltk/events.h>
+#include <fltk/Widget.h>
+#include <fltk/MenuBar.h>
+#include <fltk/Slider.h>
+#include <fltk/Window.h>
+#include <fltk/ask.h>
+#include <fltk/draw.h>
+#include <fltk/MenuBuild.h>
+
+using namespace fltk;
+
+Window *mainwin;
+Window *infowin;
+
+Slider *y_slider=(Slider *)0;
+
+Slider *x_silder=(Slider *)0;
+
+MenuBar *main_menu=(MenuBar *)0;
+
+void load_menu(MenuBar* menu) {
+    menu->begin();
+    {MenuSection g("Info"); new Item("About"); }
+    {MenuSection g("Game"); 
+	new Item("New Game"); 
+	new Item("Flip Sides"); 
+	new Item("Undo Last Move"); 
+    }
+    {MenuSection g("System"); new Item("Quit"); }
+    menu->end();
+};
+
+// taken directly from NeXTSTEP Qubix
+
+const char *remark=NULL;	/* message set by makemove */
+
+int board[65];			/* game field */
+bool playerblack;		/* which side I am on */
+int xangle=75,yangle=75;	/* angle in range 90 */
+double sinx,cosx,siny,cosy;	/* sin/cos of angles */
+
+#define viewdistance 12.0	/* units from origin of "eye" for perspective */
+#define MARK 1
+#define PLAYER 8
+#define COMPUTER 64
+
+#define TRUE 1
+#define FALSE 0
+
+#define MAXPATH 32
+
+/* Mersenne Twister random stuff */
+
+/* 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 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA   */ 
+/* 02111-1307  USA                                                 */
+
+/* Copyright (C) 1997 Makoto Matsumoto and Takuji Nishimura.       */
+/* When you use this, send an email to: matumoto@math.keio.ac.jp   */
+/* with an appropriate reference to your work.                     */
+
+/* REFERENCE                                                       */
+/* M. Matsumoto and T. Nishimura,                                  */
+/* "Mersenne Twister: A 623-Dimensionally Equidistributed Uniform  */
+/* Pseudo-Random Number Generator",                                */
+/* ACM Transactions on Modeling and Computer Simulation,           */
+/* Vol. 8, No. 1, January 1998, pp 3--30.                          */
+
+#include<stdio.h>
+
+/* Period parameters */  
+#define N 624
+#define M 397
+#define MATRIX_A 0x9908b0df   /* constant vector a */
+#define UPPER_MASK 0x80000000 /* most significant w-r bits */
+#define LOWER_MASK 0x7fffffff /* least significant r bits */
+
+/* Tempering parameters */   
+#define TEMPERING_MASK_B 0x9d2c5680
+#define TEMPERING_MASK_C 0xefc60000
+#define TEMPERING_SHIFT_U(y)  (y >> 11)
+#define TEMPERING_SHIFT_S(y)  (y << 7)
+#define TEMPERING_SHIFT_T(y)  (y << 15)
+#define TEMPERING_SHIFT_L(y)  (y >> 18)
+
+static unsigned long mt[N]; /* the array for the state vector  */
+static int mti=N+1; /* mti==N+1 means mt[N] is not initialized */
+
+/* initializing the array with a NONZERO seed */
+void sgenrand(unsigned long seed) 
+{
+    /* setting initial seeds to mt[N] using         */
+    /* the generator Line 25 of Table 1 in          */
+    /* [KNUTH 1981, The Art of Computer Programming */
+    /*    Vol. 2 (2nd Ed.), pp102]                  */
+    mt[0]= seed & 0xffffffff;
+    for (mti=1; mti<N; mti++)
+        mt[mti] = (69069 * mt[mti-1]) & 0xffffffff;
+}
+
+unsigned long genrand()
+{
+    unsigned long y;
+    static unsigned long mag01[2]={0x0, MATRIX_A};
+    /* mag01[x] = x * MATRIX_A  for x=0,1 */
+
+    if (mti >= N) { /* generate N words at one time */
+        int kk;
+
+        if (mti == N+1)   /* if sgenrand() has not been called, */
+            sgenrand(4357); /* a default initial seed is used   */
+
+        for (kk=0;kk<N-M;kk++) {
+            y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
+            mt[kk] = mt[kk+M] ^ (y >> 1) ^ mag01[y & 0x1];
+        }
+        for (;kk<N-1;kk++) {
+            y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
+            mt[kk] = mt[kk+(M-N)] ^ (y >> 1) ^ mag01[y & 0x1];
+        }
+        y = (mt[N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK);
+        mt[N-1] = mt[M-1] ^ (y >> 1) ^ mag01[y & 0x1];
+
+        mti = 0;
+    }
+  
+    y = mt[mti++];
+    y ^= TEMPERING_SHIFT_U(y);
+    y ^= TEMPERING_SHIFT_S(y) & TEMPERING_MASK_B;
+    y ^= TEMPERING_SHIFT_T(y) & TEMPERING_MASK_C;
+    y ^= TEMPERING_SHIFT_L(y);
+
+    return y; 
+}
+
+// Compatibilty stuff
+// AKA poor man's DPS routines - we really only do the things the original needs omiting the rest
+//
+
+struct tpspoint {
+	double x;
+	double y;
+	bool draw;
+};
+
+struct tpspoint PSpath[MAXPATH];
+int nPathPtr=0;
+
+double grayvalue=0.0;
+double yscale=1.0;
+
+void PSsetgray(double value) {
+	int c = int(value * 255+.5);
+	setcolor(color(c,c,c));
+	grayvalue=value;
+}
+
+void PSsetlinewidth(double value) {
+
+}
+
+void PSgsave() {
+	push_matrix();
+}
+
+void PSgrestore() {
+	pop_matrix();
+}
+
+void PSsetinstance(int value) {
+
+}
+
+void PSscale(float x, float y) {
+	scale(x,y);
+	yscale = y;
+}
+
+
+void PStranslate(float x, float y) {
+	translate(x,y);
+}
+
+void PSshow(char *value) {
+
+}
+
+void PSrectfill(double x1, double y1, double x2, double y2) {
+
+}
+
+void PSmoveto(double x, double y) {
+  PSpath[nPathPtr].x = x;
+  PSpath[nPathPtr].y = 0.25 - y;
+  PSpath[nPathPtr].draw = FALSE;
+  nPathPtr++;
+  if (nPathPtr >= MAXPATH) {
+    alert("PATH OVERFLOW in PSmoveto()");
+    exit(1);
+  }
+}
+
+void PSlineto(double x, double y) {
+  PSpath[nPathPtr].x = x;
+  PSpath[nPathPtr].y = 0.25 - y;
+  PSpath[nPathPtr].draw = TRUE;
+  nPathPtr++;
+  if (nPathPtr >= MAXPATH) {
+    alert("PATH OVERFLOW in PSlineto()");
+    exit(1);
+  }
+}
+
+void PSstroke() {
+  if (nPathPtr<2) return;
+  for (int i=0; i<nPathPtr; i++) {
+    addvertex(float(PSpath[i].x), float(PSpath[i].y));
+  }
+  strokepath();
+  nPathPtr=0;
+}
+
+void PSthickstroke() {
+  if (nPathPtr<2) return;
+  for (int i=0; i<nPathPtr; i++) {
+    addvertex(float(PSpath[i].x), float(PSpath[i].y));
+  }
+  setcolor(YELLOW);
+  float dx = .3f, dy = 0; fltk::transform_distance(dx,dy);
+  line_style(JOIN_ROUND|CAP_ROUND,int(sqrt(dx*dx+dy*dy)+.9));
+  strokepath();
+  line_style(0);
+  PSsetgray(grayvalue);
+  nPathPtr=0;
+}
+
+#define RADIUS 0.25
+#define SOLARSIZE 0.2
+
+inline void addcircle(double x, double y, double r) {
+  addarc((float) (x-r), (float) (y-r), (float) (2*r), (float) (2*r), 0, 360);
+}
+
+void darkblob( void ) {
+  if (!nPathPtr) return;
+  setcolor(RED);
+
+  addcircle(PSpath[nPathPtr-1].x, PSpath[nPathPtr-1].y, RADIUS);
+  fillpath();
+
+  setcolor(color(255,128,128));
+  addcircle(PSpath[nPathPtr-1].x-RADIUS/2, PSpath[nPathPtr-1].y-RADIUS/2, RADIUS/5);
+  fillpath();
+
+  setcolor(color(255,200,200));
+  addcircle(PSpath[nPathPtr-1].x-RADIUS/2, PSpath[nPathPtr-1].y-RADIUS/2, RADIUS/8);
+  fillpath();
+
+  setcolor(BLACK);
+  addcircle(PSpath[nPathPtr-1].x, PSpath[nPathPtr-1].y, RADIUS);
+  strokepath();
+
+  PSsetgray(grayvalue);
+  nPathPtr=0;
+}
+
+void whiteblob( void ) {
+  if (!nPathPtr) return;
+  setcolor(BLUE);
+
+  addcircle(PSpath[nPathPtr-1].x, PSpath[nPathPtr-1].y, RADIUS);
+  fillpath();
+
+  setcolor(color(128,128,255));
+  addcircle(PSpath[nPathPtr-1].x-RADIUS/2, PSpath[nPathPtr-1].y-RADIUS/2, RADIUS/5);
+  fillpath();
+
+  setcolor(color(200,200,255));
+  addcircle(PSpath[nPathPtr-1].x-RADIUS/2, PSpath[nPathPtr-1].y-RADIUS/2, RADIUS/8);
+  fillpath();
+
+  setcolor(BLACK);
+  addcircle(PSpath[nPathPtr-1].x, PSpath[nPathPtr-1].y, RADIUS);
+  strokepath();
+  PSsetgray(grayvalue);
+  nPathPtr=0;
+}
+
+
+// not needed, we don't do instance drawing
+
+void clipblob( void ) {
+
+}
+
+// the rest is take directly from the NeXTSTEP qubix again
+
+void moveto3(double x,double y,double z) {
+  double zscale;
+  zscale = viewdistance/(viewdistance-(siny*y+sinx*cosy*x+cosx*cosy*z));
+  PSmoveto((cosx*x-sinx*z)*zscale, (cosy*y-sinx*siny*x-cosx*siny*z)*zscale);
+  /*  PSmoveto(cosx*x-sinx*siny*y+sinx*cosy*z, z*siny+y*cosy); */
+}
+
+void lineto3(double x,double y,double z) {
+  double zscale;
+  zscale = viewdistance/(viewdistance-(siny*y+sinx*cosy*x+cosx*cosy*z));
+  PSlineto((cosx*x-sinx*z)*zscale, (cosy*y-sinx*siny*x-cosx*siny*z)*zscale);
+  /*  PSlineto(cosx*x-sinx*siny*y+sinx*cosy*z, z*siny+y*cosy); */
+}
+
+double distto(double mx,double my,double x,double y,double z) {
+  double zscale;
+  zscale = viewdistance/(viewdistance-(siny*y+sinx*cosy*x+cosx*cosy*z));
+  return(fabs((cosx*x-sinx*z)*zscale-mx)+
+	 fabs((cosy*y-sinx*siny*x-cosx*siny*z)*zscale-my));
+}
+
+int inwinrow(int);
+
+static double wx,wy,wz;
+void winline(int i,double x,double y, double z) {
+  double d=0.0;
+  if (!inwinrow(i)) return;
+  if (wx) {
+    switch ((x!=wx)+(y!=wy)+(z!=wz)) {
+    case 1: d = .25; break;
+    case 2: d = .25*0.70710678; break;
+    case 3: d = .25*0.57735027; break;
+    }
+    PSsetlinewidth(0.15);
+    moveto3(wx+d*(x-wx),wy+d*(y-wy),wz+d*(z-wz));
+    lineto3(x,y,z);
+    PSthickstroke();
+    PSsetlinewidth(0.0);
+  }
+  wx = x; wy = y; wz = z;
+}
+
+/* draw position x and any of the rest of the board that might obscure
+   it.  If x is zero, also erase the previous board.  If instance is
+   on, draw the new piece using instance drawing. */
+void drawfrom(int ifrom, int instance, fltk::Widget* widget) {
+  double x,y,z,l1;
+  int a,b,c,i,from;
+  from = ifrom;
+  PSscale(widget->w()/6.0f, widget->h()/6.0f);
+  PStranslate(3.0,3.0);
+  PSsetlinewidth(0.0);
+  if (!from) {
+    PSsetgray(.666); 
+    PSrectfill(-3,-3,6,6); 
+    PSsetgray(0.0);
+  } else {
+    PSgsave();
+    a = (from-1)>>4;
+    b = ((from-1)>>2)&3;
+    c = (from-1)&3;
+    moveto3(-1.5+b,-1.5+a,-1.5+c);
+    clipblob();
+    if (instance) PSsetinstance(TRUE);
+  }
+  wx = 0;
+  for(a=0,y=-1.5; a<4; a++,y+=1.0) {
+    if (xangle<45) {				
+      for (b=0,x=-1.5; b<4; b++,x+=1.0) {
+	for (c=0,l1=z=-1.5; c<4; c++,z+=1.0) {
+	  i = 16*a+4*b+c+1;
+	  if (board[i] && (!from || i==from)) {
+	    winline(i,x,y,z);
+	    if (!from && c) {
+	      moveto3(x,y,l1);
+	      lineto3(x,y,z);
+	      PSstroke();
+	    }
+	    from = 0;
+	    moveto3(x,y,z);
+	    if (board[i]==PLAYER)
+	      playerblack?darkblob():whiteblob();
+	    else playerblack?whiteblob():darkblob();
+	    l1 = z+.25;
+	  }
+	}
+	if (from) continue;
+	if (l1<1.5) {
+	  moveto3(x,y,l1); 
+	  lineto3(x,y,1.5); 
+	  PSstroke();
+	}
+	if (b<3) for (c=0,z=-1.5; c<4; c++,z+=1.0) {
+	  moveto3(x+(board[16*a+4*b+c+1]?.25:0.0),y,z);
+	  lineto3(x+1.0,y,z);
+	  PSstroke();
+	}
+      }
+    } else {
+      for (c=0,z=-1.5; c<4; c++,z+=1.0) {
+	for (b=0,l1=x=-1.5; b<4; b++,x+=1.0) {
+	  i = 16*a+4*b+c+1;
+	  if (board[i] && (!from || i==from)) {
+	    winline(i,x,y,z);
+	    if (!from && b) {
+	      moveto3(l1,y,z);
+	      lineto3(x,y,z);
+	      PSstroke();
+	    }
+	    from = 0;
+	    moveto3(x,y,z);
+	    if (board[i]==PLAYER)
+	      playerblack?darkblob():whiteblob();
+	    else playerblack?whiteblob():darkblob();
+	    l1 = x+.25;
+	  }
+	}
+	if (from) continue;
+	if (l1<1.5) {
+	  moveto3(l1,y,z); 
+	  lineto3(1.5,y,z); 
+	  PSstroke();
+	}
+	if (c<3) for (b=0,x=-1.5; b<4; b++,x+=1.0) {
+	  moveto3(x,y,z+(board[16*a+4*b+c+1]?.25:0.0));
+	  lineto3(x,y,z+1.0);
+	  PSstroke();
+	}
+      }
+    }
+  } 
+  if (ifrom) PSgrestore();
+}
+
+/*=========================== Original NS User Interface ===========================*/
+
+void maindisplay() {
+  mainwin->redraw();
+  mainwin->flush();
+}
+
+int winrow;	/* n-1 out of lines table of winning line */
+char moves[64];	/* undo history */
+int movenum;
+int initedfltk=0;
+
+void newgame(void) {
+  memset(board,0,sizeof(board));
+  winrow = 0;
+  movenum = 0;
+  playerblack = 0;
+  remark = NULL;
+  if (initedfltk) maindisplay();
+}
+
+void erasemarks();
+int makemove();
+
+void computermove(void) {
+  int i = makemove(); erasemarks();
+  if (i) board[i] = COMPUTER;
+  moves[movenum++] = i;
+  maindisplay();
+}
+
+void flipboard(void) {
+  int i;
+  for (i=1; i<65; i++)
+    if (board[i] == PLAYER) board[i] = COMPUTER;
+    else if (board[i] == COMPUTER) board[i] = PLAYER;
+}
+
+void flipsides(void) {
+  flipboard();
+  playerblack = !playerblack;
+  if (movenum && moves[movenum-1]==0) movenum--;
+  else computermove();
+  maindisplay();
+}
+
+void help(void) {
+  int i;
+  flipboard();
+  i = makemove(); erasemarks();
+  flipboard();
+  if (i) {
+    board[i] = PLAYER;
+    moves[movenum++] = i;
+    maindisplay();
+    computermove();
+  }
+}
+
+void undo(void) {
+  if (movenum<2) return;
+  board[(int)moves[--movenum]] = 0;
+  board[(int)moves[--movenum]] = 0;
+  winrow = 0;
+  maindisplay();
+}
+
+int setAPiece(double pntx, double pnty, int for_real, fltk::Widget* widget)
+{
+  static int needsReset=FALSE;
+  static int pieceReset=0;
+  double x,y,z,l1,mx,my,idist;
+  int a,b,c,i,pi;
+  int e;
+
+  if (needsReset == TRUE) {
+    board[pieceReset] = 0;
+    needsReset=FALSE;
+  }
+
+  if (winrow) return 1;
+  //printf("setAPiece %d: %f %f\n",for_real, pntx,pnty);
+
+  pi = 0;
+  do {
+    mx = (6.0*(pntx))/widget->w() - 3; 
+    my = (6.0*(pnty))/widget->h() - 3;
+    idist = .25; i = 0;
+    for(a=0,y=-1.5; a<4; a++,y+=1.0) {
+      for (c=0,z=-1.5; c<4; c++,z+=1.0) {
+	for (b=0,x=-1.5; b<4; b++,x+=1.0) {
+	  if (board[16*a+4*b+c+1]) continue;
+	  l1 = distto(mx,my,x,y,z);
+	  if (l1 <= idist) {
+	    idist=l1;
+	    i = 16*a+4*b+c+1;
+	  }
+	}
+      }
+    }
+    if (i!=pi) {
+      if (i && !for_real) {
+	board[i] = PLAYER;
+	maindisplay();
+	needsReset=TRUE;
+	pieceReset=i;
+      }
+      pi = i;
+    }
+    e = 0;
+  } while (e != 0);
+  if (!i) {
+    maindisplay();
+    return 2;
+  }
+  if (!for_real) {
+    maindisplay();
+    return 3;
+  }
+  board[i] = PLAYER; 
+  moves[movenum++] = i;
+  maindisplay();
+  computermove();
+  return 0;
+}
+
+void updateSliderPos(double xangle, double yangle)
+{
+  double x,y;
+  //alert("%f %f",xangle, yangle);
+  x = (90-xangle)*(3.14159/180);
+  sinx = sin(x); cosx = cos(x);
+  y = (90-yangle)*(3.14159/180);
+  siny = sin(y); cosy = cos(y);
+}
+
+void setupGFX() {
+  double x,y;
+
+  x = (90-xangle)*(3.14159/180);
+  sinx = sin(x); cosx = cos(x);
+  y = (90-yangle)*(3.14159/180);
+  siny = sin(y); cosy = cos(y);
+}
+
+/*=============================== Game logic =============================*/
+
+const int lines[304] = {
+	1,2,3,4,	8,7,6,5,	12,11,10,9,	13,14,15,16,
+	20,19,18,17,	21,22,23,24,	25,26,27,28,	32,31,30,29,
+	36,35,34,33,	37,38,39,40,	41,42,43,44,	48,47,46,45,
+	49,50,51,52,	56,55,54,53,	60,59,58,57,	61,62,63,64,
+
+	1,5,9,13,	14,10,6,2,	15,11,7,3,	4,8,12,16,
+	29,25,21,17,	18,22,26,30,	19,23,27,31,	32,28,24,20,
+	45,41,37,33,	34,38,42,46,	35,39,43,47,	48,44,40,36,
+	49,53,57,61,	62,58,54,50,	63,59,55,51,	52,56,60,64,
+
+	1,17,33,49,	53,37,21,5,	57,41,25,9,	13,29,45,61,
+	50,34,18,2,	6,22,38,54,	10,26,42,58,	62,46,30,14,
+	51,35,19,3,	7,23,39,55,	11,27,43,59,	63,47,31,15,
+	4,20,36,52,	56,40,24,8,	60,44,28,12,	16,32,48,64,
+
+	1,6,11,16,	32,27,22,17,	48,43,38,33,	49,54,59,64,
+	13,10,7,4,	20,23,26,29,	36,39,42,45,	61,58,55,52,
+	1,21,41,61,	62,42,22,2,	63,43,23,3,	4,24,44,64,
+	49,37,25,13,	14,26,38,50,	15,27,39,51,	52,40,28,16,
+	1,18,35,52,	56,39,22,5,	60,43,26,9,	13,30,47,64,
+	49,34,19,4,	8,23,38,53,	12,27,42,57,	61,46,31,16,
+
+	1,22,43,64,	49,38,27,16,	61,42,23,4,	13,26,39,52};
+
+int nummarks;
+
+void erasemarks() {
+  int *point;
+  for (point = &board[64]; point > board; point--)
+    if (*point == MARK) *point = 0;
+  nummarks = 0;
+}
+
+int linesum(int i) {	/* add the values in a line on the board */
+  int sum,j;
+  const int *p;
+  if (i > 75) return(-1);
+  for (sum = 0, j = 0, p = lines+4*i; j < 4; j++) sum += board[*p++];
+  return(sum);
+}
+
+void markline(int i) {
+  int j;
+  const int *p;
+  for (j = 0, p = lines+4*i; j < 4; j++,p++) if (!board[*p]) {
+    board[*p] = MARK;
+    nummarks++;
+  }
+}
+
+int find(int n, int i) {	/* locate n in a line */
+  const int *p;
+  p = lines+4*i;
+  if (board[*(p+1)] == n) return(*(p+1));
+  if (board[*(p+2)] == n) return(*(p+2));
+  if (board[*(p+0)] == n) return(*(p+0));
+  if (board[*(p+3)] == n) return(*(p+3));
+  return(0);
+}
+
+int inwinrow(int n) {
+  const int *p;
+  if (!winrow) return(FALSE);
+  p = lines+4*(winrow-1);
+  if (*p++ == n) return(TRUE);
+  if (*p++ == n) return(TRUE);
+  if (*p++ == n) return(TRUE);
+  if (*p == n) return(TRUE);
+  return(FALSE);
+}
+
+int makemove() {
+  int i,line,move;
+
+  for (i=0; (line=linesum(i))>=0; i++) if (line == 4*PLAYER) {
+    remark = "Rats.  You win.";
+    winrow = i+1;
+    return(0);
+  }
+  else if (line == 4*COMPUTER) {
+    remark = "I win!";
+    winrow = i+1;
+    return(0);
+  }
+
+  for (i=0; (line=linesum(i))>=0; i++) if (line == 3*COMPUTER) {
+    remark = "I win!";
+    winrow = i+1;
+    return(find(0,i));
+  }
+
+  for (i=0; (line=linesum(i))>=0; i++) if (line == 3*PLAYER) {
+    remark = "I'll block that.";
+    return(find(0,i));
+  }
+
+  move = 0;
+
+  for (i=0; (line=linesum(i))>=0; i++) {
+    /* computer tries to make crossed triples */
+    if (line == 2*COMPUTER) markline(i);
+    else if (line == 2*COMPUTER+MARK || line == 2*COMPUTER+2*MARK) {
+      remark = "Let's see you get out of this...";
+      move = find(MARK,i);
+      goto DONE;
+    }
+  }
+
+  if (nummarks) for (i=0; (line=linesum(i))>=0; i++) {
+    /* computer tries to force a crossed triple */
+    if (line == COMPUTER+2*MARK || line == COMPUTER+3*MARK) {
+      remark = "You've had it now...";
+      move = find(MARK,i);
+      goto DONE;
+    }
+    else if (line == 3*MARK || line == 4*MARK) {
+      remark = "You have to block my triple...";
+      move = find(MARK,i);
+      goto DONE;
+    }
+    else if (line == 2*MARK) {
+      remark = "Look carefully or you will lose...";
+      move = find(0,i);
+    }
+  }
+
+  erasemarks();
+  for (i=0; (line=linesum(i))>=0; i++)
+    if (line == 2*PLAYER) markline(i);
+    else if (line == 2*PLAYER+MARK || line == 2*PLAYER+2*MARK) {
+      remark = "You'll have to be more clever than that.";
+      move = find(MARK,i);
+      goto DONE;
+    }
+
+  if (nummarks) for (i=0; (line=linesum(i))>=0; i++) {
+    /* try to block good players */
+    if (line == PLAYER+2*MARK || line == PLAYER+3*MARK) {
+      remark = "This should mess up your plans.";
+      move = find(MARK,i);
+      goto DONE;
+    }
+    else if (line == 2*MARK || line == 3*MARK || line == 4*MARK) {
+      remark = "Are you trying something?";
+      move = find(MARK,i);
+    }
+    else if (!move && line>COMPUTER && line<COMPUTER+4*MARK) {
+      remark = 0;
+      move = find(MARK,i);
+    }
+  }
+  if (move) goto DONE;
+
+  /* random move, as long as it is in non-dead line */
+  erasemarks();
+  for (i=1; (line=linesum(i))>=0; i++)
+    if (!((line & 7*PLAYER) && (line & 7*COMPUTER)))
+      /* line does not contain both types of pieces */
+      markline(i);
+  if (nummarks) {
+    remark = 0;
+    do move = (genrand()&63)+1; while (board[move] != MARK);
+  }
+  else remark = "Tie game!";
+
+ DONE:
+  erasemarks();
+  return(move);
+}
+
+// FLTK specific stuff 
+
+// the game board view, also the event handler
+
+class QubixView : public Widget {
+  void draw() {
+    push_clip(0, 0, w(),h());
+    setcolor(WHITE);
+    fillrect(0,0,w(),h());
+    push_matrix();
+    drawfrom(0,0, this);
+    pop_matrix();
+    if (remark) {
+      setfont(HELVETICA,12);
+      drawtext(remark, 3, (float) h()-13);
+    }
+    pop_clip();
+  }
+  int handle(int event) {
+    int x2,y2;
+    switch (event) {
+    case PUSH:
+      /* fall throu */
+    case DRAG:
+      x2 = event_x();
+      y2 = event_y();
+      setAPiece(x2-6,(h()-y2)+18, 0, this);
+      return 1;
+      /* not reached */
+      break;
+    case RELEASE:
+      x2 = event_x();
+      y2 = event_y();
+      setAPiece(x2-6,(h()-y2)+18, 1, this);
+      return 1;
+      /* not reached */
+      break;
+    }
+    return 0;
+  }
+public:
+  QubixView(int X,int Y,int W,int H) : Widget(X,Y,W,H) {}
+};
+
+/* turn the game board by using the sliders */
+void updatedSlider(Widget *wid, void *value) {
+  double xv, yv;
+
+  xv = x_silder->value();
+  yv = y_slider->value();
+
+  updateSliderPos(xv,yv);
+
+  mainwin->redraw();
+}
+
+/* handle the menu */
+void menu_callback(Widget* w, void*) {
+  Menu* mw = (Menu*)w;
+  const Widget* m = mw->item();
+  const char* acTmp = m->label();
+
+  if (!strcmp("About",acTmp)) {
+    infowin->show();
+  }
+  if (!strcmp("New Game",acTmp)) {
+    newgame();
+  }
+  if (!strcmp("Flip Sides",acTmp)) {
+    flipsides();
+  }
+  if (!strcmp("Undo Last Move",acTmp)) {
+    undo();
+  }
+  if (!strcmp("Quit",acTmp)) {
+    alert("  Thanks for playing FlQubix... Have a nice day!");
+    exit(0);
+  }
+
+}
+
+/* make our windows */
+
+Window* make_infowin() {
+  Window* w;
+  { Window* o = new Window(364, 299);
+    w = o;
+    o->begin();
+    { Widget* o = new Widget(20, 0, 325, 95, "Qubix");
+      o->labelfont(TIMES_BOLD_ITALIC);
+      o->labelsize(80);
+    }
+    { Widget* o = new Widget(30, 105, 305, 40, "A game of 4-in-a-row in 3D");
+      o->labelfont(TIMES);
+      o->labelsize(24);
+    }
+    { Widget* o = new Widget(20, 150, 335, 35, "written by Frank Siegert <frank@this.net>");
+      o->labelfont(TIMES);
+      o->labelsize(18);
+    }
+    { Widget* o = new Widget(15, 190, 340, 35, "Based on Qubix by Bill Spitzak");
+      o->labelfont(TIMES);
+      o->labelsize(18);
+    }
+    { Widget* o = new Widget(85, 215, 195, 25, "(c) 1991 on NeXTSTEP");
+      o->labelfont(TIMES);
+      o->labelsize(18);
+    }
+    { Widget* o = new Widget(25, 260, 320, 25, "This program may be distributed freely (GPL)");
+      o->labelfont(TIMES);
+      o->labelsize(18);
+    }
+    { Widget* o = new Widget(10, 75, 320, 20, "in FLTK");
+      o->labelfont(TIMES);
+      o->labelsize(18);
+    }
+    o->end();
+  }
+  return w;
+}
+
+
+Window* make_gamewin() {
+  Window* w;
+  { Window* o = new Window(403, 426,"FLTK Qubix");
+    o->set_double_buffer();
+    o->begin();
+    w = o;
+    y_slider = new Slider(380, 35, 20, 370);
+    y_slider->set_vertical();
+	y_slider->minimum(0.0);
+	y_slider->maximum(90.0);
+	y_slider->value(75.0);
+	y_slider->callback(updatedSlider);
+
+	// oh well... if this the way of fluid....
+
+    { Slider* o = x_silder = new Slider(0, 405, 380, 20);
+	  o->minimum(0.0);
+	  o->maximum(90.0);
+	  o->value(75.0);
+	  o->callback(updatedSlider);
+    }
+    { MenuBar* o = main_menu = new MenuBar(10, 5, 170, 25);
+      load_menu(main_menu);
+	  o->callback(menu_callback);
+    }
+    { QubixView* o = new QubixView(10, 35, 370, 370);
+    w->resizable(o);
+    }
+    o->end();
+  }
+  return w;
+}
+
+/* main routine */
+
+int main(int argc, char **argv) {
+
+  sgenrand(time(0));
+
+  mainwin = make_gamewin();
+  infowin = make_infowin();
+
+  setupGFX();
+  newgame();
+
+  mainwin->show();
+
+  initedfltk = 1;
+
+  return run();
+}

Added: branches/branch-3.0-2011/test2/radio.cxx
===================================================================
--- branches/branch-3.0-2011/test2/radio.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/radio.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,114 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0100
+
+#include "radio.h"
+using namespace fltk;
+
+fltk::LightButton* ttlb;
+
+static void cb_ttlb(fltk::LightButton*, void*) {
+  Tooltip::enable(ttlb->value() ? true : false);
+}
+
+#include <fltk/run.h>
+
+int main (int argc, char **argv) {
+
+  fltk::Window* w;
+   {fltk::Window* o = new fltk::Window(380, 274, "Radio buttons and Tooltips");
+    w = o;
+    o->tooltip("This is a window");
+    o->begin();
+     {fltk::Button* o = new fltk::Button(20, 10, 160, 25, "Button");
+      o->tooltip("This is a button");
+    }
+     {fltk::ReturnButton* o = new fltk::ReturnButton(20, 40, 160, 25, "ReturnButton");
+      o->shortcut(0xff0d);
+      o->tooltip("This is a return button");
+    }
+     {fltk::LightButton* o = new fltk::LightButton(20, 70, 160, 25, "LightButton");
+      o->tooltip("This is a light button!  This particular light button has a very long tooltip\
+.  This tooltip should demonstrate that very long tooltips are wrapped across \
+multiple lines.");
+    }
+     {fltk::CheckButton* o = new fltk::CheckButton(20, 100, 160, 25, "CheckButton");
+      o->tooltip("This is a check button");
+    }
+     {fltk::RadioButton* o = new fltk::RadioButton(20, 125, 160, 25, "RoundButton");
+      o->tooltip("This is a round button");
+    }
+     {fltk::Group* o = new fltk::Group(190, 10, 70, 200);
+      o->set_vertical();
+      o->tooltip("This is a group");
+      o->begin();
+       {fltk::CheckButton* o = new fltk::CheckButton(0, 0, 70, 25, "radio");
+        o->type(fltk::CheckButton::RADIO);
+        o->tooltip("This is a check button");
+      }
+       {fltk::CheckButton* o = new fltk::CheckButton(0, 25, 70, 25, "radio");
+        o->type(fltk::CheckButton::RADIO);
+        o->tooltip("This is a check button");
+      }
+       {fltk::CheckButton* o = new fltk::CheckButton(0, 50, 70, 25, "radio");
+        o->type(fltk::CheckButton::RADIO);
+        o->tooltip("This is a check button");
+      }
+       {fltk::CheckButton* o = new fltk::CheckButton(0, 75, 70, 25, "radio");
+        o->type(fltk::CheckButton::RADIO);
+        o->tooltip("This is a check button");
+      }
+       {fltk::CheckButton* o = new fltk::CheckButton(0, 100, 70, 25, "radio");
+        o->type(fltk::CheckButton::RADIO);
+        o->tooltip("This is a check button");
+      }
+       {fltk::CheckButton* o = new fltk::CheckButton(0, 125, 70, 25, "radio");
+        o->type(fltk::CheckButton::RADIO);
+        o->tooltip("This is a check button");
+      }
+       {fltk::CheckButton* o = new fltk::CheckButton(0, 150, 70, 25, "radio");
+        o->type(fltk::CheckButton::RADIO);
+        o->tooltip("This is a check button");
+      }
+       {fltk::CheckButton* o = new fltk::CheckButton(0, 175, 70, 25, "radio");
+        o->type(fltk::CheckButton::RADIO);
+        o->tooltip("This is a check button");
+      }
+      o->end();
+    }
+     {fltk::Group* o = new fltk::Group(270, 10, 90, 115);
+      o->set_vertical();
+      o->box(fltk::THIN_UP_BOX);
+      o->tooltip("This is a group");
+      o->begin();
+       {fltk::Button* o = new fltk::Button(15, 10, 20, 20, "radio");
+        o->type(fltk::Button::RADIO);
+        o->align(fltk::ALIGN_RIGHT);
+        o->tooltip("This the first button of the group");
+      }
+       {fltk::Button* o = new fltk::Button(15, 35, 20, 20, "radio");
+        o->type(fltk::Button::RADIO);
+        o->align(fltk::ALIGN_RIGHT);
+        o->tooltip("This the second button of the group");
+      }
+       {fltk::Button* o = new fltk::Button(15, 60, 20, 20, "radio");
+        o->type(fltk::Button::RADIO);
+        o->align(fltk::ALIGN_RIGHT);
+        o->tooltip("This the third button of the group");
+      }
+       {fltk::Button* o = new fltk::Button(15, 85, 20, 20, "radio");
+        o->type(fltk::Button::RADIO);
+        o->align(fltk::ALIGN_RIGHT);
+        o->tooltip("This the fourth button of the group");
+      }
+      o->end();
+    }
+     {fltk::LightButton* o = ttlb = new fltk::LightButton(120, 230, 130, 30, "Show Tooltips");
+      o->set_flag(fltk::STATE);
+      o->callback((fltk::Callback*)cb_ttlb);
+      o->tooltip("This button enables or disables tooltips");
+    }
+    o->end();
+    o->resizable(o);
+  }
+  w->show(argc, argv);
+  return  fltk::run();
+}

Added: branches/branch-3.0-2011/test2/radio.fl
===================================================================
--- branches/branch-3.0-2011/test2/radio.fl	                        (rev 0)
+++ branches/branch-3.0-2011/test2/radio.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,122 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.0100 
+images_dir ./ 
+header_name {.h} 
+code_name {.cxx} 
+gridx 10 
+gridy 5 
+snap 3
+namespace fltk {open
+} {
+Function {} {open selected
+} {
+  {fltk::Window} {} {
+    label {Radio buttons and Tooltips} open
+    tooltip {This is a window}
+    xywh {372 93 380 274} resizable visible
+  } {
+    {fltk::Button} {} {
+      label Button
+      tooltip {This is a button}
+      xywh {20 10 160 25}
+    }
+    {fltk::ReturnButton} {} {
+      label ReturnButton
+      tooltip {This is a return button}
+      xywh {20 40 160 25} shortcut 0xff0d
+    }
+    {fltk::LightButton} {} {
+      label LightButton
+      tooltip {This is a light button!  This particular light button has a very long tooltip.  This tooltip should demonstrate that very long tooltips are wrapped across multiple lines.}
+      xywh {20 70 160 25}
+    }
+    {fltk::CheckButton} {} {
+      label CheckButton
+      tooltip {This is a check button}
+      xywh {20 100 160 25}
+    }
+    {fltk::RadioButton} {} {
+      label RoundButton
+      tooltip {This is a round button}
+      xywh {20 125 160 25}
+    }
+    {fltk::Group} {} {open
+      tooltip {This is a group}
+      xywh {190 10 70 200}
+    } {
+      {fltk::CheckButton} {} {
+        label radio
+        tooltip {This is a check button}
+        xywh {0 0 70 25} type RADIO
+      }
+      {fltk::CheckButton} {} {
+        label radio
+        tooltip {This is a check button}
+        xywh {0 25 70 25} type RADIO
+      }
+      {fltk::CheckButton} {} {
+        label radio
+        tooltip {This is a check button}
+        xywh {0 50 70 25} type RADIO
+      }
+      {fltk::CheckButton} {} {
+        label radio
+        tooltip {This is a check button}
+        xywh {0 75 70 25} type RADIO
+      }
+      {fltk::CheckButton} {} {
+        label radio
+        tooltip {This is a check button}
+        xywh {0 100 70 25} type RADIO
+      }
+      {fltk::CheckButton} {} {
+        label radio
+        tooltip {This is a check button}
+        xywh {0 125 70 25} type RADIO
+      }
+      {fltk::CheckButton} {} {
+        label radio
+        tooltip {This is a check button}
+        xywh {0 150 70 25} type RADIO
+      }
+      {fltk::CheckButton} {} {
+        label radio
+        tooltip {This is a check button}
+        xywh {0 175 70 25} type RADIO
+      }
+    }
+    {fltk::Group} {} {open
+      tooltip {This is a group}
+      xywh {270 10 90 115} box THIN_UP_BOX
+    } {
+      {fltk::Button} {} {
+        label radio
+        tooltip {This the first button of the group}
+        xywh {15 10 20 20} type RADIO align 8
+      }
+      {fltk::Button} {} {
+        label radio
+        tooltip {This the second button of the group}
+        xywh {15 35 20 20} type RADIO align 8
+      }
+      {fltk::Button} {} {
+        label radio
+        tooltip {This the third button of the group}
+        xywh {15 60 20 20} type RADIO align 8
+      }
+      {fltk::Button} {} {
+        label radio
+        tooltip {This the fourth button of the group}
+        xywh {15 85 20 20} type RADIO align 8
+      }
+    }
+    {fltk::LightButton} ttlb {
+      label {Show Tooltips}
+      callback {Tooltip::enable(ttlb->value() ? true : false);}
+      tooltip {This button enables or disables tooltips}
+      xywh {120 230 130 30} value 1
+      extra_code {\#include <fltk/Tooltip.h>}
+    }
+  }
+} 
+} 

Added: branches/branch-3.0-2011/test2/radio.h
===================================================================
--- branches/branch-3.0-2011/test2/radio.h	                        (rev 0)
+++ branches/branch-3.0-2011/test2/radio.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,17 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0100
+
+#ifndef radio_h
+#define radio_h
+#include <fltk/Window.h>
+#include <fltk/Button.h>
+#include <fltk/ReturnButton.h>
+#include <fltk/LightButton.h>
+#include <fltk/CheckButton.h>
+#include <fltk/RadioButton.h>
+#include <fltk/Group.h>
+#include <fltk/Tooltip.h>
+extern fltk::LightButton* ttlb;
+
+namespace fltk  {
+}
+#endif

Added: branches/branch-3.0-2011/test2/resizable.cxx
===================================================================
--- branches/branch-3.0-2011/test2/resizable.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/resizable.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,115 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0002
+
+#include "resizable.h"
+
+#include <fltk/run.h>
+
+int main (int argc, char **argv) {
+
+  fltk::Window* w;
+   {fltk::Window* o = new fltk::Window(560, 470);
+    w = o;
+    o->begin();
+     {fltk::MenuBar* o = new fltk::MenuBar(515, 0, 45, 25);
+      o->tooltip("A right-justified help item can be made by making a second menubar and puttin\
+g it to the right of the resizable().");
+      o->begin();
+       {fltk::ItemGroup* o = new fltk::ItemGroup("Help");
+        o->begin();
+        new fltk::Item("About...");
+        new fltk::Item("Chapter 1");
+        o->end();
+      }
+      o->end();
+    }
+     {fltk::MenuBar* o = new fltk::MenuBar(0, 0, 515, 25);
+      o->begin();
+      new fltk::Item("This");
+      new fltk::Item("is");
+      new fltk::Item("a");
+      new fltk::Item("Menu");
+      new fltk::Item("Bar");
+      o->end();
+    }
+     {fltk::InvisibleBox* o = new fltk::InvisibleBox(95, 25, 465, 419, "\nThis program demonstrates how you set the resizable() of a window to get th\
+ings to resize the way you want.");
+      o->box(fltk::FLAT_BOX);
+      o->color((fltk::Color)19);
+      o->labelcolor((fltk::Color)7);
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_INSIDE|fltk::ALIGN_CLIP|fltk::ALIGN_WRAP);
+    }
+     {fltk::Button* o = new fltk::Button(0, 25, 95, 25, "These");
+      o->color((fltk::Color)47);
+    }
+     {fltk::Button* o = new fltk::Button(0, 50, 95, 25, "are some");
+      o->color((fltk::Color)47);
+    }
+     {fltk::Button* o = new fltk::Button(0, 75, 95, 25, "buttons");
+      o->color((fltk::Color)47);
+    }
+     {fltk::Button* o = new fltk::Button(0, 100, 95, 25, "we don't want");
+      o->color((fltk::Color)47);
+    }
+     {fltk::Button* o = new fltk::Button(0, 125, 95, 25, "to resize.");
+      o->color((fltk::Color)47);
+    }
+     {fltk::Button* o = new fltk::Button(0, 150, 95, 25, "Things that");
+      o->color((fltk::Color)0x8e6f8c00);
+    }
+     {fltk::Button* o = new fltk::Button(0, 175, 95, 25, "overlap the box");
+      o->color((fltk::Color)0x8e6f8c00);
+    }
+     {fltk::Button* o = new fltk::Button(0, 200, 95, 25, "will scale.");
+      o->color((fltk::Color)0x8e6f8c00);
+    }
+     {fltk::Group* o = new fltk::Group(0, 225, 95, 190, "A group");
+      o->box(fltk::ENGRAVED_BOX);
+      o->labeltype(fltk::ENGRAVED_LABEL);
+      o->labelcolor((fltk::Color)49);
+      o->align(fltk::ALIGN_BOTTOM|fltk::ALIGN_INSIDE);
+      o->tooltip("This group has resizable(0) (this is the default).  But you can set a group's\
+ resizable to nest different resize behavior.");
+      o->begin();
+       {fltk::Button* o = new fltk::Button(5, 5, 85, 25, "You can put");
+        o->color((fltk::Color)47);
+      }
+       {fltk::Button* o = new fltk::Button(5, 30, 85, 25, "them inside");
+        o->color((fltk::Color)47);
+      }
+       {fltk::Button* o = new fltk::Button(5, 55, 85, 25, "a group to");
+        o->color((fltk::Color)47);
+      }
+       {fltk::Button* o = new fltk::Button(5, 80, 85, 25, "stop scaling.");
+        o->color((fltk::Color)47);
+      }
+      o->end();
+    }
+     {fltk::Button* o = new fltk::Button(0, 419, 95, 25, "nonscaling");
+      o->color((fltk::Color)47);
+    }
+     {fltk::InvisibleBox* o = new fltk::InvisibleBox(0, 444, 460, 25, "This status message will resize horizontally only.");
+      o->box(fltk::BORDER_BOX);
+      o->color((fltk::Color)55);
+      o->align(fltk::ALIGN_LEFT|fltk::ALIGN_INSIDE);
+    }
+    new fltk::Button(460, 445, 25, 25, "@<<");
+    new fltk::Button(485, 445, 25, 25, "@<");
+    new fltk::Button(510, 445, 25, 25, "@>");
+    new fltk::Button(535, 445, 25, 25, "@>>");
+     {fltk::InvisibleBox* o = new fltk::InvisibleBox(95, 150, 365, 270, "This is the resizable() of the window.\nIt is normally invisible.");
+      o->box(fltk::BORDER_BOX);
+      o->color((fltk::Color)37);
+      o->labelcolor((fltk::Color)1);
+      o->align(fltk::ALIGN_CLIP|fltk::ALIGN_WRAP);
+      fltk::Group::current()->resizable(o);
+      o->tooltip("To make it invisible, use an Fl_Box with the default box(FL_NO_BOX) and no la\
+bel.\n\nFltk sets the window's minimum size such that this widget's minimum si\
+ze is 100, unless it starts out smaller than that.  You can override this defa\
+ult by calling size_range() on the window.");
+    }
+    o->end();
+  }
+  // w->size_range(w->w()-w->resizable()->w(), w->h()-w->resizable()->h());
+  w->show(argc, argv);
+  return  fltk::run();
+}

Added: branches/branch-3.0-2011/test2/resizable.fl
===================================================================
--- branches/branch-3.0-2011/test2/resizable.fl	                        (rev 0)
+++ branches/branch-3.0-2011/test2/resizable.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,141 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.0002 
+images_dir ./ 
+header_name {.h} 
+code_name {.cxx} 
+gridx 5 
+gridy 5 
+snap 3
+Function {} {open
+} {
+  {fltk::Window} {} {open
+    xywh {562 242 560 470} resizable visible
+  } {
+    {fltk::MenuBar} {} {open
+      tooltip {A right-justified help item can be made by making a second menubar and putting it to the right of the resizable().}
+      xywh {515 0 45 25}
+    } {
+      {fltk::ItemGroup} {} {
+        label Help open
+        } {
+        {fltk::Item} {} {
+          label {About...}
+          }
+        {fltk::Item} {} {
+          label {Chapter 1}
+          }
+      }
+    }
+    {fltk::MenuBar} {} {open
+      xywh {0 0 515 25}
+    } {
+      {fltk::Item} {} {
+        label This
+        }
+      {fltk::Item} {} {
+        label is
+        }
+      {fltk::Item} {} {
+        label a
+        }
+      {fltk::Item} {} {
+        label Menu
+        }
+      {fltk::Item} {} {
+        label Bar
+        }
+    }
+    {fltk::InvisibleBox} {} {
+      label {
+This program demonstrates how you set the resizable() of a window to get things to resize the way you want.}
+      xywh {95 25 465 419} align 209 box FLAT_BOX color 19 labelcolor 7
+    }
+    {fltk::Button} {} {
+      label These
+      xywh {0 25 95 25} color 47
+    }
+    {fltk::Button} {} {
+      label {are some}
+      xywh {0 50 95 25} color 47
+    }
+    {fltk::Button} {} {
+      label buttons
+      xywh {0 75 95 25} color 47
+    }
+    {fltk::Button} {} {
+      label {we don't want}
+      xywh {0 100 95 25} color 47
+    }
+    {fltk::Button} {} {
+      label {to resize.}
+      xywh {0 125 95 25} color 47
+    }
+    {fltk::Button} {} {
+      label {Things that}
+      xywh {0 150 95 25} color 0x8e6f8c00
+    }
+    {fltk::Button} {} {
+      label {overlap the box}
+      xywh {0 175 95 25} color 0x8e6f8c00
+    }
+    {fltk::Button} {} {
+      label {will scale.}
+      xywh {0 200 95 25} color 0x8e6f8c00
+    }
+    {fltk::Group} {} {
+      label {A group} open
+      tooltip {This group has resizable(0) (this is the default).  But you can set a group's resizable to nest different resize behavior.}
+      xywh {0 225 95 190} align 18 box ENGRAVED_BOX labeltype ENGRAVED_LABEL labelcolor 49
+    } {
+      {fltk::Button} {} {
+        label {You can put}
+        xywh {5 5 85 25} color 47
+      }
+      {fltk::Button} {} {
+        label {them inside}
+        xywh {5 30 85 25} color 47
+      }
+      {fltk::Button} {} {
+        label {a group to}
+        xywh {5 55 85 25} color 47
+      }
+      {fltk::Button} {} {
+        label {stop scaling.}
+        xywh {5 80 85 25} color 47
+      }
+    }
+    {fltk::Button} {} {
+      label nonscaling
+      xywh {0 419 95 25} color 47
+    }
+    {fltk::InvisibleBox} {} {
+      label {This status message will resize horizontally only.}
+      xywh {0 444 460 25} align 20 box BORDER_BOX color 55
+    }
+    {fltk::Button} {} {
+      label {@<<}
+      xywh {460 445 25 25}
+    }
+    {fltk::Button} {} {
+      label {@<}
+      xywh {485 445 25 25}
+    }
+    {fltk::Button} {} {
+      label {@>}
+      xywh {510 445 25 25}
+    }
+    {fltk::Button} {} {
+      label {@>>}
+      xywh {535 445 25 25}
+    }
+    {fltk::InvisibleBox} {} {
+      label {This is the resizable() of the window.
+It is normally invisible.} selected
+      tooltip {To make it invisible, use an Fl_Box with the default box(FL_NO_BOX) and no label.
+
+Fltk sets the window's minimum size such that this widget's minimum size is 100, unless it starts out smaller than that.  You can override this default by calling size_range() on the window.}
+      xywh {95 150 365 270} align 192 resizable box BORDER_BOX color 37 labelcolor 1
+    }
+  }
+  code {// w->size_range(w->w()-w->resizable()->w(), w->h()-w->resizable()->h());} {}
+} 

Added: branches/branch-3.0-2011/test2/resizable.h
===================================================================
--- branches/branch-3.0-2011/test2/resizable.h	                        (rev 0)
+++ branches/branch-3.0-2011/test2/resizable.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,12 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0002
+
+#ifndef resizable_h
+#define resizable_h
+#include <fltk/Window.h>
+#include <fltk/MenuBar.h>
+#include <fltk/ItemGroup.h>
+#include <fltk/Item.h>
+#include <fltk/InvisibleBox.h>
+#include <fltk/Button.h>
+#include <fltk/Group.h>
+#endif

Added: branches/branch-3.0-2011/test2/resize.cxx
===================================================================
--- branches/branch-3.0-2011/test2/resize.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/resize.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,97 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#include "resize.h"
+#include <fltk/events.h>
+
+void warp(int dx, int dy) {
+  fltk::warp_mouse(fltk::event_x_root()+dx, fltk::event_y_root()+dy);
+}
+
+static void cb_8(fltk::Button* o, void*) {
+  fltk::Window* w = o->window();
+  w->position(w->x(),w->y()-50);
+  warp(0,-50);
+}
+
+static void cb_(fltk::Button* o, void*) {
+  fltk::Window* w = o->window();
+  w->position(w->x()-50,w->y());
+  warp(-50,0);
+}
+
+static void cb_1(fltk::Button* o, void*) {
+  fltk::Window* w = o->window();
+  w->position(w->x()+50,w->y());
+  warp(+50,0);
+}
+
+static void cb_2(fltk::Button* o, void*) {
+  fltk::Window* w = o->window();
+  w->position(w->x(),w->y()+50);
+  warp(0,+50);
+}
+
+static void cb_grow(fltk::Button* o, void*) {
+  fltk::Window* w = o->window();
+  int mx = fltk::event_x_root()-w->x();
+  int my = fltk::event_y_root()-w->y();
+  warp(mx*20/w->w(), my*20/w->h());
+  w->resize(w->w()+20, w->h()+20);
+}
+
+static void cb_shrink(fltk::Button* o, void*) {
+  fltk::Window* w = o->window();
+  int mx = fltk::event_x_root()-w->x();
+  int my = fltk::event_y_root()-w->y();
+  warp(-mx*20/w->w(), -my*20/w->h());
+  w->resize(w->w()-20, w->h()-20);
+}
+
+#include <fltk/run.h>
+
+int main (int argc, char **argv) {
+
+  fltk::Window* w;
+   {fltk::Window* o = new fltk::Window(320, 240);
+    w = o;
+    o->shortcut(0xff1b);
+    o->begin();
+     {fltk::Button* o = new fltk::Button(60, 0, 39, 40, "@8->");
+      o->set_vertical();
+      o->callback((fltk::Callback*)cb_8);
+    }
+     {fltk::InvisibleBox* o = new fltk::InvisibleBox(148, 10, 157, 218, "This is a test of program-generated resize() of a window.  The window should \
+move or resize once when each button is clicked.  The program and window manag\
+er should not go into fits echoing resizes back and forth!");
+      o->set_vertical();
+      o->box(fltk::BORDER_BOX);
+      o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER|fltk::ALIGN_INSIDE|fltk::ALIGN_WRAP);
+      fltk::Group::current()->resizable(o);
+    }
+     {fltk::Button* o = new fltk::Button(20, 40, 40, 40, "@<-");
+      o->set_vertical();
+      o->callback((fltk::Callback*)cb_);
+    }
+     {fltk::Button* o = new fltk::Button(99, 40, 39, 40, "@->");
+      o->set_vertical();
+      o->callback((fltk::Callback*)cb_1);
+    }
+     {fltk::Button* o = new fltk::Button(60, 80, 39, 39, "@2->");
+      o->set_vertical();
+      o->callback((fltk::Callback*)cb_2);
+    }
+     {fltk::Button* o = new fltk::Button(30, 129, 108, 40, "grow");
+      o->labelfont(fltk::HELVETICA_BOLD);
+      o->labelsize(18);
+      o->callback((fltk::Callback*)cb_grow);
+    }
+     {fltk::Button* o = new fltk::Button(30, 188, 108, 40, "shrink");
+      o->labelfont(fltk::HELVETICA_BOLD);
+      o->labelsize(18);
+      o->callback((fltk::Callback*)cb_shrink);
+    }
+    o->end();
+  }
+  w->show(argc, argv);
+  return  fltk::run();
+}

Added: branches/branch-3.0-2011/test2/resize.fl
===================================================================
--- branches/branch-3.0-2011/test2/resize.fl	                        (rev 0)
+++ branches/branch-3.0-2011/test2/resize.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,72 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.1000 
+images_dir ./ 
+header_name {.h} 
+code_name {.cxx} 
+gridx 10 
+gridy 10 
+snap 3
+decl {\#include <fltk/events.h>} {} 
+
+Function {warp(int dx, int dy)} {open return_type void
+} {
+  code {fltk::warp_mouse(fltk::event_x_root()+dx, fltk::event_y_root()+dy);} {}
+} 
+
+Function {} {open
+} {
+  {fltk::Window} {} {open
+    xywh {439 389 320 240} resizable visible
+  } {
+    {fltk::Button} {} {
+      label {@8->}
+      callback {fltk::Window* w = o->window();
+w->position(w->x(),w->y()-50);
+warp(0,-50);}
+      xywh {60 0 39 40}
+    }
+    {fltk::InvisibleBox} {} {
+      label {This is a test of program-generated resize() of a window.  The window should move or resize once when each button is clicked.  The program and window manager should not go into fits echoing resizes back and forth!}
+      xywh {148 10 157 218} align 180 resizable box BORDER_BOX
+    }
+    {fltk::Button} {} {
+      label {@<-}
+      callback {fltk::Window* w = o->window();
+w->position(w->x()-50,w->y());
+warp(-50,0);}
+      xywh {20 40 40 40} vertical
+    }
+    {fltk::Button} {} {
+      label {@->}
+      callback {fltk::Window* w = o->window();
+w->position(w->x()+50,w->y());
+warp(+50,0);}
+      xywh {99 40 39 40}
+    }
+    {fltk::Button} {} {
+      label {@2->}
+      callback {fltk::Window* w = o->window();
+w->position(w->x(),w->y()+50);
+warp(0,+50);}
+      xywh {60 80 39 39} vertical
+    }
+    {fltk::Button} {} {
+      label grow
+      callback {fltk::Window* w = o->window();
+int mx = fltk::event_x_root()-w->x();
+int my = fltk::event_y_root()-w->y();
+warp(mx*20/w->w(), my*20/w->h());
+w->resize(w->w()+20, w->h()+20);}
+      xywh {30 129 108 40} labelfont 1 labelsize 18
+    }
+    {fltk::Button} {} {
+      label shrink
+      callback {fltk::Window* w = o->window();
+int mx = fltk::event_x_root()-w->x();
+int my = fltk::event_y_root()-w->y();
+warp(-mx*20/w->w(), -my*20/w->h());
+w->resize(w->w()-20, w->h()-20);} selected
+      xywh {30 188 108 40} labelfont 1 labelsize 18
+    }
+  }
+} 

Added: branches/branch-3.0-2011/test2/resize.h
===================================================================
--- branches/branch-3.0-2011/test2/resize.h	                        (rev 0)
+++ branches/branch-3.0-2011/test2/resize.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,9 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#ifndef resize_h
+#define resize_h
+void warp(int dx, int dy);
+#include <fltk/Window.h>
+#include <fltk/Button.h>
+#include <fltk/InvisibleBox.h>
+#endif

Added: branches/branch-3.0-2011/test2/resizealign.cxx
===================================================================
--- branches/branch-3.0-2011/test2/resizealign.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/resizealign.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,95 @@
+//
+// "$Id: resizealign.cxx 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".
+//
+
+#define W1 40
+#define B 0
+#define W3 (5*W1+6*B)
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/ToggleButton.h>
+
+using namespace fltk;
+
+Window *window;
+int flags = 0;
+
+void b_cb(Widget *b,long w) {
+  if (((Button*)b)->value()) flags |= int(w);
+  else flags &= ~int(w);
+  window->resize_align(flags);
+  window->relayout();
+  window->redraw();
+}
+
+int main(int argc, char **argv) {
+  window = new Window(W3,W3);
+  window->box(NO_BOX);
+  window->begin();
+  Widget *n;
+  for (int x = 0; x<4; x++) for (int y = 0; y<4; y++) {
+    if ((x==1 || x==2) && (y==1 || y==2)) continue;
+    n = new Widget(x*(B+W1)+B,y*(B+W1)+B,W1,W1,0);
+    n->box(ENGRAVED_BOX);
+    n->color(x+y+8);
+  }
+  n = new Widget(B,4*W1+5*B,4*W1+3*B,W1,0);
+  n->box(ENGRAVED_BOX);
+  n->color(12);
+  n = new Widget(4*W1+5*B,B,W1,5*W1+4*B,0);
+  n->box(ENGRAVED_BOX);
+  n->color(13);
+
+  n = new Widget(W1+B+B,W1+B+B,2*W1+B,2*W1+B,0);
+  n->box(ENGRAVED_BOX);
+  n->color(8);
+  window->resizable(n);
+  n->align(ALIGN_INSIDE|ALIGN_BOTTOM|ALIGN_WRAP);
+  n->label("This gray area is the window->resizable().\n"
+	   "The arrow buttons change the "
+	   "window->resizealign() value.");
+  n->labelcolor(GRAY75);
+
+  Button *b;
+  b = new ToggleButton(W1+B+50,W1+B+30,20,20,"@6>");
+  b->callback(b_cb,8);
+  b = new ToggleButton(W1+B+30,W1+B+10,20,20,"@8>");
+  b->callback(b_cb,1);
+  b = new ToggleButton(W1+B+10,W1+B+30,20,20,"@4>");
+  b->callback(b_cb,4);
+  b = new ToggleButton(W1+B+30,W1+B+50,20,20,"@2>");
+  b->callback(b_cb,2);
+  window->resize_align(0);
+
+  window->end();
+
+  window->size_range(W3,W3);
+  window->layout();
+  window->resize(W3*2,W3*2);
+  window->show(argc,argv);
+  return run();
+}
+
+//
+// End of "$Id: resizealign.cxx 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/scroll.cxx
===================================================================
--- branches/branch-3.0-2011/test2/scroll.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/scroll.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,155 @@
+//
+// "$Id: scroll.cxx 5592 2007-01-09 12:20:29Z yuri $"
+//
+// ScrollGroup test program 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".
+//
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/ScrollGroup.h>
+#include <fltk/LightButton.h>
+#include <fltk/Choice.h>
+#include <fltk/Box.h>
+#include <stdio.h>
+#include <fltk/draw.h>
+#include <fltk/math.h>
+#include <fltk/InvisibleBox.h>
+#include <fltk/MenuBuild.h>
+
+using namespace fltk;
+
+class Drawing : public Widget {
+  void draw();
+public:
+  Drawing(int X,int Y,int W,int H,const char* L) : Widget(X,Y,W,H,L) {
+    align(fltk::ALIGN_TOP);
+    box(fltk::FLAT_BOX);
+    color(fltk::WHITE);
+  }
+};
+
+void Drawing::draw() {
+  draw_box();
+  fltk::push_matrix();
+  // Change from fltk1 to 2: removed translation by x(),y():
+  fltk::translate(w()/2, h()/2);
+  fltk::scale(w()/2, h()/2);
+  fltk::color(fltk::BLACK);
+  for (int i = 0; i < 20; i++) {
+    for (int j = i+1; j < 20; j++) {
+      // Change from fltk1 to 2: added 'f' to make arguments float:
+      fltk::newpath();
+      fltk::addvertex(cosf(M_PI*i/10+.1), sinf(M_PI*i/10+.1));
+      fltk::addvertex(cosf(M_PI*j/10+.1), sinf(M_PI*j/10+.1));
+//      fltk::closepath(); //bug
+      fltk::strokepath();
+      // you must reset the line type when done:
+      line_style(SOLID);
+    }
+  }
+  fltk::pop_matrix();
+}
+
+ScrollGroup* thescroll;
+
+void box_cb(Widget* o, void*) {
+  thescroll->box(((Button*)o)->value() ? fltk::DOWN_BOX : fltk::NO_BOX);
+  thescroll->relayout(); // added for fltk2
+  thescroll->redraw();
+}
+
+void type_cb(Widget*, void* v) {
+  thescroll->type(int((long)v));
+  thescroll->relayout(); // changed from fltk1 setting of redraw()
+}
+
+void load_menu_choice (Choice* c)  {
+ c->begin();
+  new Item("0", 0, type_cb, (void*)0);
+  new Item("HORIZONTAL", 0, type_cb, (void*)ScrollGroup::HORIZONTAL);
+  new Item("VERTICAL", 0, type_cb, (void*)ScrollGroup::VERTICAL);
+  new Item("BOTH", 0, type_cb, (void*)ScrollGroup::BOTH);
+  new Item("HORIZONTAL_ALWAYS", 0, type_cb, (void*)ScrollGroup::HORIZONTAL_ALWAYS);
+  new Item("VERTICAL_ALWAYS", 0, type_cb, (void*)ScrollGroup::VERTICAL_ALWAYS);
+  new Item("BOTH_ALWAYS", 0, type_cb, (void*)ScrollGroup::BOTH_ALWAYS);
+ c->end();
+}
+
+void align_cb(Widget*, void* v) {
+  thescroll->scrollbar_align(int((long)v));
+  //thescroll->scrollbar.align(int((long)v)); // fltk1 version
+  thescroll->relayout(); // changed from fltk1 setting of redraw()
+}
+
+void load_menu_achoice (Choice* c)  {
+ c->begin();
+  new Item("left+top", 0, align_cb, (void*)(fltk::ALIGN_LEFT+fltk::ALIGN_TOP));
+  new Item("left+bottom", 0, align_cb, (void*)(fltk::ALIGN_LEFT+fltk::ALIGN_BOTTOM));
+  new Item("right+top", 0, align_cb, (void*)(fltk::ALIGN_RIGHT+fltk::ALIGN_TOP));
+  new Item("right+bottom", 0, align_cb, (void*)(fltk::ALIGN_RIGHT+fltk::ALIGN_BOTTOM));
+ c->end();
+}
+
+int main(int argc, char** argv) {
+  Window window(5*75,400);
+  //window.clear_double_buffer(); // use this to test scroll_area()
+  //window.box(fltk::NO_BOX); //remove trash
+  window.begin();
+  ScrollGroup scroll(0,0,5*75,300);
+  scroll.begin();
+
+  int n = 0;
+  for (int y=0; y<16; y++) for (int x=0; x<5; x++) {
+    char buf[20]; sprintf(buf,"%d",n++);
+    Button* b = new Button(x*75,y*25+(y>=8?5*75:0),75,25);
+    b->copy_label(buf);
+    b->color(n);
+    b->labelcolor(fltk::WHITE);
+  }
+  Drawing drawing(0,8*25,5*75,5*75,0);
+  scroll.end();
+  scroll.type(scroll.VERTICAL);
+  window.resizable(scroll);
+
+  LightButton but1(150, 310, 200, 25, "box");
+  but1.callback(box_cb);
+
+  Choice choice(150, 335, 200, 25, "type():");
+  load_menu_choice(&choice);
+  choice.value(3);
+
+  Choice achoice(150, 360, 200, 25, "scrollbar_align():");
+  load_menu_achoice(&achoice);
+  achoice.value(3);
+
+  thescroll = &scroll;
+
+  scroll.box(fltk::DOWN_BOX);
+  scroll.type(ScrollGroup::VERTICAL);
+  window.end();
+  window.show(argc,argv);
+  return fltk::run();
+}
+
+//
+// End of "$Id: scroll.cxx 5592 2007-01-09 12:20:29Z yuri $".
+//

Added: branches/branch-3.0-2011/test2/shape.cxx
===================================================================
--- branches/branch-3.0-2011/test2/shape.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/shape.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,117 @@
+//
+// "$Id: shape.cxx 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Tiny OpenGL demo program 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".
+//
+
+#include <config.h>
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Slider.h>
+#include <fltk/math.h>
+
+#if HAVE_GL
+
+#include <fltk/gl.h>
+#include <fltk/GlWindow.h>
+
+class shape_window : public fltk::GlWindow {
+  void draw();
+public:
+  int sides;
+  shape_window(int x,int y,int w,int h,const char *l=0);
+};
+
+shape_window::shape_window(int x,int y,int w,int h,const char *l) :
+  fltk::GlWindow(x,y,w,h,l)
+{
+  sides = 3;
+}
+
+void shape_window::draw() {
+// the valid() property may be used to avoid reinitializing your
+// GL transformation for each redraw:
+  if (!valid()) {
+    valid(1);
+    glLoadIdentity();
+    glViewport(0,0,w(),h());
+  }
+// draw an amazing graphic:
+  glClear(GL_COLOR_BUFFER_BIT);
+  glColor3f(.5,.6,.7);
+  glBegin(GL_POLYGON);
+  for (int i=0; i<sides; i++) {
+    double ang = i*2*M_PI/sides;
+    glVertex3f(cos(ang),sin(ang),0);
+  }
+  glEnd();
+}
+
+#else
+
+class shape_window : public fltk::Widget {
+public:	
+  int sides;
+  shape_window(int x,int y,int w,int h,const char *l=0)
+    : Widget(x,y,w,h,l){
+      label("This demo does\nnot work without GL");
+  }
+};
+
+#endif
+
+// when you change the data, as in this callback, you must call redraw():
+void sides_cb(fltk::Widget *o, void *p) {
+  shape_window *sw = (shape_window *)p;
+  sw->sides = int(((fltk::Slider *)o)->value());
+  sw->redraw();
+}
+
+int main(int argc, char **argv) {
+
+  fltk::Window window(300, 330);
+  window.begin();
+
+// the shape window could be it's own window, but here we make it
+// a child window:
+  shape_window sw(10, 10, 280, 280);
+// make it resize:
+  window.resizable(&sw);
+  //  window.size_range(300,330,0,0,1,1,1);
+// add a knob to control it:
+  fltk::Slider slider(50, 295, window.w()-60, 30, "Sides:");
+  slider.clear_flag(fltk::ALIGN_MASK);
+  slider.set_flag(fltk::ALIGN_LEFT);
+  slider.callback(sides_cb,&sw);
+  slider.value(sw.sides);
+  slider.step(1);
+  slider.range(3,40);
+
+  window.end();
+  window.show(argc,argv);
+    
+  return fltk::run();
+}
+
+//
+// End of "$Id: shape.cxx 4886 2006-03-30 09:55:32Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/shiny.cxx
===================================================================
--- branches/branch-3.0-2011/test2/shiny.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/shiny.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,320 @@
+//
+// "$Id: shiny.cxx 827 1999-11-05 00:35:53Z vincent $"
+//
+// OpenGL "shiny buttons" test program for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-1999 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".
+//
+
+#include <config.h>
+#include "shiny_panel.cxx"
+#include <FL/fl_message.H>
+#include <stdio.h>
+
+static uchar color[8][3] = {
+  {128,136,149},
+  {63,54,21},
+  {128,136,146},
+  {223,223,223},
+  {121,128,128},
+  {192,206,220},
+  {137,143,145},
+  {99,81,64}
+};
+static int thickness = 3;
+
+int which = 0;
+
+static Fl_Color pcolor;
+
+Fl_Window *window;
+
+void color_slider_cb(Fl_Value_Slider *o, long i) {
+  int v = int(o->value());
+  if (!i) {
+    color[which][0] = color[which][1] = color[which][2] = v;
+    color_slider[1]->value(v);
+    color_slider[2]->value(v);
+    color_slider[3]->value(v);
+  } else {
+    color[which][i-1] = v;
+  }
+  for (int n=0; n<window->children(); n++) window->child(n)->redraw();
+  pcolor = FL_BLACK; // make it recalculate actual colors
+//   test_box[0]->redraw();
+//   test_box[1]->redraw();
+//   test_box[2]->redraw();
+}
+
+void set_sliders() {
+  color_slider[0]->value(color[which][0]);
+  color_slider[1]->value(color[which][0]);
+  color_slider[2]->value(color[which][1]);
+  color_slider[3]->value(color[which][2]);
+}
+
+void thickness_cb(Fl_Slider* s,void*) {
+  thickness = int(s->value());
+  for (int n=0; n<window->children(); n++) window->child(n)->redraw();
+}
+
+void which_cb(Fl_Button *, long i) {
+  which = which&(~3) | i;
+  set_sliders();
+}
+
+void inside_cb(Fl_Button *b, void*) {
+  if (b->value()) which = which | 4;
+  else which = which & (3|8);
+  set_sliders();
+}
+
+void dump_cb(Fl_Button *, void*) {
+  printf("static uchar color[8][3] = {\n");
+  for (int i=0; i<8; i++) {
+    printf("  {%d,%d,%d}",color[i][0],color[i][1],color[i][2]);
+    if (i<7) printf(",\n");
+  }
+  printf("\n};\nstatic int thickness = %d;\n",thickness);
+}
+
+#include <FL/fl_draw.H>
+
+#if HAVE_GL
+#include <FL/gl.h>
+
+static uchar C[8][3]; // actual colors for current button
+
+static void calc_color(Fl_Color c) {
+  uchar r[3];
+  pcolor = c;
+  Fl::get_color(c,r[0],r[1],r[2]);
+  for (int x = 0; x<8; x++) for (int y=0; y<3; y++) {
+    int i = r[y]-166+color[x][y];
+    if (i<0) i = 0; else if (i>255) i = 255;
+    C[x][y] = i;
+  }
+}
+
+void shiny_down_draw(Fl_Boxtype, int x1, int y1, int w1, int h1, Fl_Color c, Fl_Flags);
+
+void shiny_up_draw(Fl_Boxtype, int x1, int y1, int w1, int h1, Fl_Color c, Fl_Flags f) {
+  if (f & FL_VALUE) {
+    shiny_down_draw(0, x1, y1, w1, h1, c, f);
+    return;
+  }
+  if (c != pcolor) calc_color(c);
+  int x = x1+1;
+  int y = Fl_Window::current()->h()-(y1+h1-1);
+  int w = w1-2;
+  int h = h1-2;
+  gl_start();
+
+  // left edge:
+  glBegin(GL_POLYGON);
+  glColor3ub(C[0][0],C[0][1],C[0][2]);
+  glVertex2i(x,y);
+  glVertex2i(x+thickness,y+thickness);
+  glColor3ub(C[3][0],C[3][1],C[3][2]);
+  glVertex2i(x+thickness,y+h-thickness);
+  glVertex2i(x,y+h);
+  glEnd();
+
+  // top edge:
+  glBegin(GL_POLYGON);
+  glVertex2i(x,y+h);
+  glVertex2i(x+thickness,y+h-thickness);
+  glColor3ub(C[2][0],C[2][1],C[2][2]);
+  glVertex2i(x+w-thickness,y+h-thickness);
+  glVertex2i(x+w,y+h);
+  glEnd();
+
+  // right edge:
+  glColor3ub(C[1][0],C[1][1],C[1][2]);
+  glBegin(GL_POLYGON);
+  glVertex2i(x+w-thickness,y+thickness);
+  glVertex2i(x+w,y+thickness);
+  glVertex2i(x+w,y+h);
+  glVertex2i(x+w-thickness,y+h-thickness);
+  glEnd();
+
+  // bottom edge:
+  glBegin(GL_POLYGON);
+  glVertex2i(x,y);
+  glVertex2i(x+w,y);
+  glVertex2i(x+w,y+thickness);
+  glVertex2i(x+thickness,y+thickness);
+  glEnd();
+
+  glBegin(GL_POLYGON);
+  glColor3ub(C[4][0],C[4][1],C[4][2]);
+  glVertex2i(x+thickness,y+thickness);
+  glColor3ub(C[5][0],C[5][1],C[5][2]);
+  glVertex2i(x+w-thickness,y+thickness);
+  glColor3ub(C[6][0],C[6][1],C[6][2]);
+  glVertex2i(x+w-thickness,y+h-thickness);
+  glColor3ub(C[7][0],C[7][1],C[7][2]);
+  glVertex2i(x+thickness,y+h-thickness);
+  glEnd();
+
+  gl_finish();
+  fl_color(FL_BLACK);
+  fl_rect(x1,y1,w1,h1);
+}
+
+void shiny_down_draw(Fl_Boxtype, int x1, int y1, int w1, int h1, Fl_Color c, Fl_Flags) {
+  if (c != pcolor) calc_color(c);
+  int x = x1+1;
+  int y = Fl_Window::current()->h()-(y1+h1-1);
+  int w = w1-2;
+  int h = h1-2;
+  gl_start();
+
+  // left edge:
+  glColor3ub(C[1][0],C[1][1],C[1][2]);
+  glBegin(GL_POLYGON);
+  glVertex2i(x,y);
+  glVertex2i(x+thickness,y+thickness);
+  glVertex2i(x+thickness,y+h-thickness);
+  glVertex2i(x,y+h);
+  glEnd();
+
+  // top edge:
+  glBegin(GL_POLYGON);
+  glVertex2i(x,y+h);
+  glVertex2i(x+thickness,y+h-thickness);
+  glVertex2i(x+w-thickness,y+h-thickness);
+  glVertex2i(x+w,y+h);
+  glEnd();
+
+  // bottom edge:
+  glBegin(GL_POLYGON);
+  glColor3ub(C[0][0],C[0][1],C[0][2]);
+  glVertex2i(x+thickness,y+thickness);
+  glVertex2i(x,y);
+  glColor3ub(C[1][0],C[1][1],C[1][2]);
+  glVertex2i(x+w,y);
+  glVertex2i(x+w-thickness,y+thickness);
+  glEnd();
+
+  // right edge:
+  glBegin(GL_POLYGON);
+  glVertex2i(x+w-thickness,y+thickness);
+  glVertex2i(x+w,y);
+  glColor3ub(C[2][0],C[2][1],C[2][2]);
+  glVertex2i(x+w,y+h);
+  glVertex2i(x+w-thickness,y+h-thickness);
+  glEnd();
+
+  // inside:
+  glBegin(GL_POLYGON);
+  glColor3ub(C[4][0],C[4][1],C[4][2]);
+  glVertex2i(x+thickness,y+thickness);
+  glColor3ub(C[5][0],C[5][1],C[5][2]);
+  glVertex2i(x+w-thickness,y+thickness);
+  glColor3ub(C[6][0],C[6][1],C[6][2]);
+  glVertex2i(x+w-thickness,y+h-thickness);
+  glColor3ub(C[7][0],C[7][1],C[7][2]);
+  glVertex2i(x+thickness,y+h-thickness);
+  glEnd();
+
+  gl_finish();
+  fl_color(FL_BLACK);
+  fl_rect(x1,y1,w1,h1);
+}
+
+const Fl_Boxtype_ shiny_down_box = {
+  shiny_down_draw, 0, &shiny_down_box, 3,3,6,6, true
+};
+const Fl_Boxtype_ shiny_up_box = {
+  shiny_up_draw, 0, &shiny_down_box, 3,3,6,6, true
+};
+
+// It looks interesting if you use this for the window's boxtype,
+// but it is way too slow under MESA:
+void shiny_flat_draw(Fl_Boxtype, int x, int y1, int w, int h, Fl_Color c, Fl_Flags) {
+  if (c != pcolor) calc_color(c);
+  int y = Fl_Window::current()->h()-(y1+h);
+  gl_start();
+  glBegin(GL_POLYGON);
+  glColor3ub(C[4][0],C[4][1],C[4][2]);
+  glVertex2i(x,y);
+  glColor3ub(C[5][0],C[5][1],C[5][2]);
+  glVertex2i(x+w,y);
+  glColor3ub(C[6][0],C[6][1],C[6][2]);
+  glVertex2i(x+w,y+h);
+  glColor3ub(C[7][0],C[7][1],C[7][2]);
+  glVertex2i(x,y+h);
+  glEnd();
+  gl_finish();
+}
+
+const Fl_Boxtype_ shiny_flat_box = {
+  shiny_flat_draw, 0, &shiny_flat_box, 0,0,0,0
+};
+
+#endif
+
+// If you use a shiny box as a background, things like the sliders that
+// expect to erase a flat area will not work, as you will see the edges
+// of the area.  This "box type" clips to the area and then draws the
+// parent's box.  Perhaps sliders should be fixed to do this automatically?
+void invisible_draw(Fl_Boxtype, int x, int y, int w, int h, Fl_Color c, Fl_Flags) {
+  fl_clip(x,y,w,h);
+  Fl_Window *W = Fl_Window::current();
+  shiny_flat_box.draw(0,0,W->w(),W->h(),c);
+  fl_pop_clip();
+}
+const Fl_Boxtype_ invisible_box = {
+  invisible_draw, 0, &invisible_box, 0,0,0,0
+};
+
+int main(int argc, char **argv) {
+  window = make_panels();
+#if HAVE_GL
+  // This will cause all buttons to be shiny:
+  fl_normal_box.draw_ = shiny_up_draw;
+  Fl_Window::default_style.set_box(&shiny_flat_box);
+#endif
+  set_sliders();
+//color_slider[0]->box(INVISIBLE_BOX);
+//color_slider[1]->box(INVISIBLE_BOX);
+//color_slider[2]->box(INVISIBLE_BOX);
+//color_slider[3]->box(INVISIBLE_BOX);
+  thickness_slider->value(thickness);
+  thickness_slider->box(&invisible_box);
+  thickness_slider->slider(FL_UP_BOX);
+  // we must eat the switches first so -display is done before trying
+  // to set the visual:
+  int i = 0;
+  if (Fl::args(argc,argv,i) < argc) Fl::fatal(Fl::help);
+#if HAVE_GL
+  if (!Fl::gl_visual(FL_RGB|FL_DEPTH)) Fl::fatal("Display does not do OpenGL");
+  glEnable(GL_DEPTH_TEST);
+#else
+  fl_message("This demo does not work without OpenGL");
+#endif
+  window->show(argc,argv);
+  return Fl::run();
+}
+
+//
+// End of "$Id: shiny.cxx 827 1999-11-05 00:35:53Z vincent $".
+//

Added: branches/branch-3.0-2011/test2/size_range.cxx
===================================================================
--- branches/branch-3.0-2011/test2/size_range.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/size_range.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,48 @@
+//
+// "$Id$"
+//
+// size_range demo : constraining the window dimensions
+//
+// 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".
+//
+
+#include "size_range.h"
+// Code for //\n// "$Id"\n//\n// HelpDialog dialog for the Fa...
+#include <fltk/run.h>
+
+UI::UI() {
+  fltk::DoubleBufferWindow* w;
+   {fltk::DoubleBufferWindow* o = window = new fltk::DoubleBufferWindow(195, 176);
+    w = o;
+    o->type(241);
+    o->user_data((void*)(this));
+    o->begin();
+    fltk::Button *b = new fltk::LightButton(25, 25, 68, 20, "button");
+    o->end();
+    o->size_range(0,0,195,0);
+  }
+}
+
+int main() {
+  UI ui;
+  ui.window->show();
+  return fltk::run();
+}
+// End of "$Id$"

Added: branches/branch-3.0-2011/test2/size_range.h
===================================================================
--- branches/branch-3.0-2011/test2/size_range.h	                        (rev 0)
+++ branches/branch-3.0-2011/test2/size_range.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,40 @@
+//
+// "$Id$"
+//
+// size_range demo : constraining the window dimensions
+//
+// 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 size_range_h
+#define size_range_h
+// Header for //\n// "$Id"\n//\n// HelpDialog dialog for the Fa...
+#include <fltk/DoubleBufferWindow.h>
+#include <fltk/LightButton.h>
+
+class UI  {
+public:
+  UI();
+  fltk::DoubleBufferWindow *window;
+};
+int main();
+#endif
+
+// End of "$Id"

Added: branches/branch-3.0-2011/test2/sizes.cxx
===================================================================
--- branches/branch-3.0-2011/test2/sizes.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/sizes.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,66 @@
+#include <fltk/Widget.h>
+#include <fltk/Browser.h>
+#include <fltk/Button.h>
+#include <fltk/CheckButton.h>
+#include <fltk/LightButton.h>
+#include <fltk/ReturnButton.h>
+#include <fltk/Menu.h>
+#include <fltk/MenuBar.h>
+#include <fltk/PopupMenu.h>
+#include <fltk/Choice.h>
+#include <fltk/Adjuster.h>
+#include <fltk/Clock.h>
+#include <fltk/Group.h>
+#include <fltk/ColorChooser.h>
+#include <fltk/Dial.h>
+#include <fltk/Valuator.h>
+#include <fltk/ValueInput.h>
+#include <fltk/Window.h>
+#include <fltk/Input.h>
+#include <fltk/Output.h>
+#include <fltk/ThumbWheel.h>
+#include <fltk/ScrollGroup.h>
+#include <fltk/Slider.h>
+#include <fltk/Scrollbar.h>
+#include <fltk/TabGroup.h>
+#include <fltk/Style.h>
+#include <fltk/TextBuffer.h>
+#include <fltk/TextDisplay.h>
+#include <fltk/TextEditor.h>
+#include <fltk/Box.h>
+
+#include <stdio.h>
+
+int main() {
+  printf("sizeof(fltk::Style) = %lu\n", (unsigned long)sizeof(struct fltk::Style));
+  //printf("  sizeof(fltk::Box) = %lu\n", (unsigned long)sizeof(class fltk::Box));
+  printf("sizeof(fltk::Widget) = %lu\n", (unsigned long)sizeof(class fltk::Widget));
+  printf("  sizeof(fltk::Button) = %lu\n", (unsigned long)sizeof(class fltk::Button));
+  printf("    sizeof(fltk::LightButton) = %lu\n", (unsigned long)sizeof(class fltk::LightButton));
+  printf("      sizeof(fltk::CheckButton) = %lu\n", (unsigned long)sizeof(class fltk::CheckButton));
+  printf("    sizeof(fltk::ReturnButton) = %lu\n", (unsigned long)sizeof(class fltk::ReturnButton));
+  printf("  sizeof(fltk::Clock) = %lu\n", (unsigned long)sizeof(class fltk::Clock));
+  printf("  sizeof(fltk::Group) = %lu\n", (unsigned long)sizeof(class fltk::Group));
+  printf("    sizeof(fltk::Browser) = %lu\n", (unsigned long)sizeof(class fltk::Browser));
+  printf("    sizeof(fltk::ColorChooser) = %lu\n", (unsigned long)sizeof(class fltk::ColorChooser));
+  printf("    sizeof(fltk::ScrollGroup) = %lu\n", (unsigned long)sizeof(class fltk::ScrollGroup));
+  printf("    sizeof(fltk::TabGroup) = %lu\n", (unsigned long)sizeof(class fltk::TabGroup));
+  printf("    sizeof(fltk::TextDisplay) = %lu\n", (unsigned long)sizeof(class fltk::TextDisplay));
+  printf("      sizeof(fltk::TextEditor) = %lu\n", (unsigned long)sizeof(class fltk::TextEditor));
+  printf("    sizeof(fltk::Window) = %lu\n", (unsigned long)sizeof(class fltk::Window));
+  printf("  sizeof(fltk::Input) = %lu\n", (unsigned long)sizeof(class fltk::Input));
+  printf("  sizeof(fltk::Output) = %lu\n", (unsigned long)sizeof(class fltk::Output));
+  printf("  sizeof(fltk::Menu) = %lu\n", (unsigned long)sizeof(class fltk::Menu));
+  printf("    sizeof(fltk::Choice) = %lu\n", (unsigned long)sizeof(class fltk::Choice));
+  printf("    sizeof(fltk::MenuBar) = %lu\n", (unsigned long)sizeof(class fltk::MenuBar));
+  printf("    sizeof(fltk::PopupMenu) = %lu\n", (unsigned long)sizeof(class fltk::PopupMenu));
+  printf("  sizeof(fltk::ThumbWheel) = %lu\n", (unsigned long)sizeof(class fltk::ThumbWheel));
+  printf("  sizeof(fltk::TextBuffer) = %lu\n", (unsigned long)sizeof(class fltk::TextBuffer));
+  printf("  sizeof(fltk::Valuator) = %lu\n", (unsigned long)sizeof(class fltk::Valuator));
+  printf("    sizeof(fltk::Adjuster) = %lu\n", (unsigned long)sizeof(class fltk::Adjuster));
+  printf("    sizeof(fltk::Dial) = %lu\n", (unsigned long)sizeof(class fltk::Dial));
+  printf("    sizeof(fltk::Slider) = %lu\n", (unsigned long)sizeof(class fltk::Slider));
+  printf("      sizeof(fltk::Scrollbar) = %lu\n", (unsigned long)sizeof(class fltk::Scrollbar));
+  printf("    sizeof(fltk::ValueInput) = %lu\n", (unsigned long)sizeof(class fltk::ValueInput));
+  return 0;
+}

Added: branches/branch-3.0-2011/test2/sorceress.xbm
===================================================================
--- branches/branch-3.0-2011/test2/sorceress.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/sorceress.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,67 @@
+#define sorceress_width 75
+#define sorceress_height 75
+static unsigned char sorceress_bits[] =
+{
+  0xfc, 0x7e, 0x40, 0x20, 0x90, 0x00, 0x07, 0x80, 0x23, 0x00, 0x00, 0xc6,
+  0xc1, 0x41, 0x98, 0xb8, 0x01, 0x07, 0x66, 0x00, 0x15, 0x9f, 0x03, 0x47,
+  0x8c, 0xc6, 0xdc, 0x7b, 0xcc, 0x00, 0xb0, 0x71, 0x0e, 0x4d, 0x06, 0x66,
+  0x73, 0x8e, 0x8f, 0x01, 0x18, 0xc4, 0x39, 0x4b, 0x02, 0x23, 0x0c, 0x04,
+  0x1e, 0x03, 0x0c, 0x08, 0xc7, 0xef, 0x08, 0x30, 0x06, 0x07, 0x1c, 0x02,
+  0x06, 0x30, 0x18, 0xae, 0xc8, 0x98, 0x3f, 0x78, 0x20, 0x06, 0x02, 0x20,
+  0x60, 0xa0, 0xc4, 0x1d, 0xc0, 0xff, 0x41, 0x04, 0xfa, 0x63, 0x80, 0xa1,
+  0xa4, 0x3d, 0x00, 0x84, 0xbf, 0x04, 0x0f, 0x06, 0xfc, 0xa1, 0x34, 0x6b,
+  0x01, 0x1c, 0xc9, 0x05, 0x06, 0xc7, 0x06, 0xbe, 0x11, 0x1e, 0x43, 0x30,
+  0x91, 0x05, 0xc3, 0x61, 0x02, 0x30, 0x1b, 0x30, 0xcc, 0x20, 0x11, 0x00,
+  0xc1, 0x3c, 0x03, 0x20, 0x0a, 0x00, 0xe8, 0x60, 0x21, 0x00, 0x61, 0x1b,
+  0xc1, 0x63, 0x08, 0xf0, 0xc6, 0xc7, 0x21, 0x03, 0xf8, 0x08, 0xe1, 0xcf,
+  0x0a, 0xfc, 0x4d, 0x99, 0x43, 0x07, 0x3c, 0x0c, 0xf1, 0x9f, 0x0b, 0xfc,
+  0x5b, 0x81, 0x47, 0x02, 0x16, 0x04, 0x31, 0x1c, 0x0b, 0x1f, 0x17, 0x89,
+  0x4d, 0x06, 0x1a, 0x04, 0x31, 0x38, 0x02, 0x07, 0x56, 0x89, 0x49, 0x04,
+  0x0b, 0x04, 0xb1, 0x72, 0x82, 0xa1, 0x54, 0x9a, 0x49, 0x04, 0x1d, 0x66,
+  0x50, 0xe7, 0xc2, 0xf0, 0x54, 0x9a, 0x58, 0x04, 0x0d, 0x62, 0xc1, 0x1f,
+  0x44, 0xfc, 0x51, 0x90, 0x90, 0x04, 0x86, 0x63, 0xe0, 0x74, 0x04, 0xef,
+  0x31, 0x1a, 0x91, 0x00, 0x02, 0xe2, 0xc1, 0xfd, 0x84, 0xf9, 0x30, 0x0a,
+  0x91, 0x00, 0x82, 0xa9, 0xc0, 0xb9, 0x84, 0xf9, 0x31, 0x16, 0x81, 0x00,
+  0x42, 0xa9, 0xdb, 0x7f, 0x0c, 0xff, 0x1c, 0x16, 0x11, 0x00, 0x02, 0x28,
+  0x0b, 0x07, 0x08, 0x60, 0x1c, 0x02, 0x91, 0x00, 0x46, 0x29, 0x0e, 0x00,
+  0x00, 0x00, 0x10, 0x16, 0x11, 0x02, 0x06, 0x29, 0x04, 0x00, 0x00, 0x00,
+  0x10, 0x16, 0x91, 0x06, 0xa6, 0x2a, 0x04, 0x00, 0x00, 0x00, 0x18, 0x24,
+  0x91, 0x04, 0x86, 0x2a, 0x04, 0x00, 0x00, 0x00, 0x18, 0x27, 0x93, 0x04,
+  0x96, 0x4a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x02, 0x91, 0x04, 0x86, 0x4a,
+  0x0c, 0x00, 0x00, 0x00, 0x1e, 0x23, 0x93, 0x04, 0x56, 0x88, 0x08, 0x00,
+  0x00, 0x00, 0x90, 0x21, 0x93, 0x04, 0x52, 0x0a, 0x09, 0x80, 0x01, 0x00,
+  0xd0, 0x21, 0x95, 0x04, 0x57, 0x0a, 0x0f, 0x80, 0x27, 0x00, 0xd8, 0x20,
+  0x9d, 0x04, 0x5d, 0x08, 0x1c, 0x80, 0x67, 0x00, 0xe4, 0x01, 0x85, 0x04,
+  0x79, 0x8a, 0x3f, 0x00, 0x00, 0x00, 0xf4, 0x11, 0x85, 0x06, 0x39, 0x08,
+  0x7d, 0x00, 0x00, 0x18, 0xb7, 0x10, 0x81, 0x03, 0x29, 0x12, 0xcb, 0x00,
+  0x7e, 0x30, 0x28, 0x00, 0x85, 0x03, 0x29, 0x10, 0xbe, 0x81, 0xff, 0x27,
+  0x0c, 0x10, 0x85, 0x03, 0x29, 0x32, 0xfa, 0xc1, 0xff, 0x27, 0x94, 0x11,
+  0x85, 0x03, 0x28, 0x20, 0x6c, 0xe1, 0xff, 0x07, 0x0c, 0x01, 0x85, 0x01,
+  0x28, 0x62, 0x5c, 0xe3, 0x8f, 0x03, 0x4e, 0x91, 0x80, 0x05, 0x39, 0x40,
+  0xf4, 0xc2, 0xff, 0x00, 0x9f, 0x91, 0x84, 0x05, 0x31, 0xc6, 0xe8, 0x07,
+  0x7f, 0x80, 0xcd, 0x00, 0xc4, 0x04, 0x31, 0x06, 0xc9, 0x0e, 0x00, 0xc0,
+  0x48, 0x88, 0xe0, 0x04, 0x79, 0x04, 0xdb, 0x12, 0x00, 0x30, 0x0c, 0xc8,
+  0xe4, 0x04, 0x6d, 0x06, 0xb6, 0x23, 0x00, 0x18, 0x1c, 0xc0, 0x84, 0x04,
+  0x25, 0x0c, 0xff, 0xc2, 0x00, 0x4e, 0x06, 0xb0, 0x80, 0x04, 0x3f, 0x8a,
+  0xb3, 0x83, 0xff, 0xc3, 0x03, 0x91, 0x84, 0x04, 0x2e, 0xd8, 0x0f, 0x3f,
+  0x00, 0x00, 0x5f, 0x83, 0x84, 0x04, 0x2a, 0x70, 0xfd, 0x7f, 0x00, 0x00,
+  0xc8, 0xc0, 0x84, 0x04, 0x4b, 0xe2, 0x2f, 0x01, 0x00, 0x08, 0x58, 0x60,
+  0x80, 0x04, 0x5b, 0x82, 0xff, 0x01, 0x00, 0x08, 0xd0, 0xa0, 0x84, 0x04,
+  0x72, 0x80, 0xe5, 0x00, 0x00, 0x08, 0xd2, 0x20, 0x44, 0x04, 0xca, 0x02,
+  0xff, 0x00, 0x00, 0x08, 0xde, 0xa0, 0x44, 0x04, 0x82, 0x02, 0x6d, 0x00,
+  0x00, 0x08, 0xf6, 0xb0, 0x40, 0x02, 0x82, 0x07, 0x3f, 0x00, 0x00, 0x08,
+  0x44, 0x58, 0x44, 0x02, 0x93, 0x3f, 0x1f, 0x00, 0x00, 0x30, 0x88, 0x4f,
+  0x44, 0x03, 0x83, 0x23, 0x3e, 0x00, 0x00, 0x00, 0x18, 0x60, 0xe0, 0x07,
+  0xe3, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x70, 0x70, 0xe4, 0x07, 0xc7, 0x1b,
+  0xfe, 0x01, 0x00, 0x00, 0xe0, 0x3c, 0xe4, 0x07, 0xc7, 0xe3, 0xfe, 0x1f,
+  0x00, 0x00, 0xff, 0x1f, 0xfc, 0x07, 0xc7, 0x03, 0xf8, 0x33, 0x00, 0xc0,
+  0xf0, 0x07, 0xff, 0x07, 0x87, 0x02, 0xfc, 0x43, 0x00, 0x60, 0xf0, 0xff,
+  0xff, 0x07, 0x8f, 0x06, 0xbe, 0x87, 0x00, 0x30, 0xf8, 0xff, 0xff, 0x07,
+  0x8f, 0x14, 0x9c, 0x8f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x07, 0x9f, 0x8d,
+  0x8a, 0x0f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0xbf, 0x0b, 0x80, 0x1f,
+  0x00, 0x00, 0xff, 0xff, 0xff, 0x07, 0x7f, 0x3a, 0x80, 0x3f, 0x00, 0x80,
+  0xff, 0xff, 0xff, 0x07, 0xff, 0x20, 0xc0, 0x3f, 0x00, 0x80, 0xff, 0xff,
+  0xff, 0x07, 0xff, 0x01, 0xe0, 0x7f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x07,
+  0xff, 0x0f, 0xf8, 0xff, 0x40, 0xe0, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff,
+  0xff, 0xff, 0x40, 0xf0, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff,
+  0x41, 0xf0, 0xff, 0xff, 0xff, 0x07};

Added: branches/branch-3.0-2011/test2/subwindow.cxx
===================================================================
--- branches/branch-3.0-2011/test2/subwindow.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/subwindow.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,199 @@
+//
+// "$Id: subwindow.cxx 5461 2006-09-19 02:49:30Z spitzak $"
+//
+// Nested window test program for the Fast Light Tool Kit (FLTK).
+//
+// Test to make sure nested windows work.
+// Events should be reported for enter/exit and all mouse operations
+// Buttons and pop-up menu should work, indicating that mouse positions
+// are being correctly translated.
+//
+// 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".
+//
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/ToggleButton.h>
+#include <fltk/PopupMenu.h>
+#include <fltk/Input.h>
+#include <fltk/InputBrowser.h>
+#include <fltk/events.h>
+using namespace fltk;
+
+#define DEBUG 1
+
+class testwindow : public Window {
+  int handle(int);
+  void draw();
+public:
+  testwindow(Box* b,int x,int y,const char *l)
+    : Window(x,y,l) {box(b);}
+  testwindow(Box* b,int x,int y,int w,int h,const char *l)
+    : Window(x,y,w,h,l) {box(b);}
+};
+
+void testwindow::draw() {
+#ifdef DEBUG
+  printf("%s : draw\n",label());
+#endif
+  Window::draw();
+}
+
+class EnterExit : public Widget {
+  uchar oldcolor;
+  int handle(int);
+public:
+  EnterExit(int x, int y, int w, int h, const char *l) :
+    Widget(x,y,w,h,l) {box(BORDER_BOX);}
+};
+
+int EnterExit::handle(int e) {
+  if (e == ENTER) {oldcolor = color(); color(RED); redraw(); return 1;}
+  else if (e == LEAVE) {color(oldcolor); redraw(); return 1;}
+  else if (e == MOVE) return 1;
+  else return 0;
+}
+
+#ifdef DEBUG
+const char *eventnames[] = {
+"zero",
+"PUSH",
+"RELEASE",
+"ENTER",
+"LEAVE",
+"DRAG",
+"FOCUS",
+"UNFOCUS",
+"KEY",
+"KEYUP",
+"MOVE",
+"SHORTCUT",
+"ACTIVATE",
+"DEACTIVATE",
+"SHOW",
+"HIDE",
+"VIEWCHANGE",
+"PASTE",
+"SELECTIONCLEAR",
+};
+#endif
+
+PopupMenu* popup;
+
+int testwindow::handle(int e) {
+#ifdef DEBUG
+  if (e != MOVE) printf("%s : %s\n",label(),eventnames[e]);
+#endif
+  if (Window::handle(e)) return 1;
+  //  if (e==PUSH) return popup->handle(e);
+  return 0;
+}
+
+const char* bigmess =
+#if 0
+"this|is|only|a test"
+#else
+"item1|item2|item3|item4|item5|"
+"submenu/item1|submenu/item2|submenu/item3|submenu/item4|"
+"submenu/sub/item1|submenu/sub/item2|submenu/sub/item3|"
+"item6|item7|item8|item9|item10|"
+"item21|item22|item23|item24|item25|"
+"submenu/item21|submenu/item22|submenu/item23|submenu/item24|"
+"submenu/sub/item21|submenu/sub/item22|submenu/sub/item23|"
+"item36|item37|item38|item39|item310|"
+"item31|item32|item33|item34|item35|"
+"submenu/item31|submenu/item32|submenu/item33|submenu/item34|"
+"submenu/sub/item31|submenu/sub/item32|submenu/sub/item33|"
+"item46|item47|item48|item49|item410|"
+"item41|item42|item43|item44|item45|"
+"submenu/item41|submenu/item42|submenu/item43|submenu/item44|"
+"submenu/sub/item41|submenu/sub/item42|submenu/sub/item43|"
+"item26|item27|item28|item29|item210|"
+"submenu2/item1|submenu2/item2|submenu2/item3|submenu2/item4|"
+"submenu2/sub/item1|submenu2/sub/item2|submenu2/sub/item3|"
+"item6|item7|item8|item9|item10|"
+"item21|item22|item23|item24|item25|"
+"submenu2/item21|submenu2/item22|submenu2/item23|submenu2/item24|"
+"submenu2/sub/item21|submenu2/sub/item22|submenu2/sub/item23|"
+"item36|item37|item38|item39|item310|"
+"item31|item32|item33|item34|item35|"
+"submenu2/item31|submenu2/item32|submenu2/item33|submenu2/item34|"
+"submenu2/sub/item31|submenu2/sub/item32|submenu2/sub/item33|"
+"item46|item47|item48|item49|item410|"
+"item41|item42|item43|item44|item45|"
+"submenu2/item41|submenu2/item42|submenu2/item43|submenu2/item44|"
+"submenu2/sub/item41|submenu2/sub/item42|submenu2/sub/item43|"
+"item26|item27|item28|item29|item210|"
+#endif
+;
+
+int main(int, char **) {
+  testwindow *window =
+    new testwindow(UP_BOX,400,400,"outer");
+  window->begin();
+//  (new Menu_Button(5,150,80,25,"menu&1"))->add_many(bigmess);
+  testwindow *subwindow =
+    new testwindow(DOWN_BOX,100,100,200,200,"inner");
+  subwindow->color(YELLOW);
+  subwindow->begin();
+  (new PopupMenu(50,50,80,25,"menu&2"))->add_many(bigmess);
+  (void) new Input(45,80,150,25,"input:");
+  (void) new EnterExit(10,110,80,80,"enterexit");
+  (void) new ToggleButton(110,110,80,80,"&inner");
+  subwindow->resizable(subwindow);
+  window->resizable(subwindow);
+  subwindow->end();
+  subwindow->tooltip(
+"This is a child fltk::Window. This may be necessary for imbedding "
+"controls that need a different X visual, OpenGL (using fltk::GlWindow), "
+"or to use the system's clipping to the edge of the window. This program "
+"tests for bugs in event handling and redrawing of these windows.\n\n"
+
+"Things to check:\n"
+" Outer border always draws exactly around yellow area.\n"
+" enterexit widgets turn red when pointed to by mouse, even if this "
+"happens when you exit a popup menu or move from an overlapping "
+"window belonging to another application, or raise this window.\n"
+" focus can move between both windows and you can type to both "
+"input widgets.");
+  (void) new EnterExit(10,310,80,80,"enterexit");
+  (void) new Input(150,310,150,25,"input:");
+  (void) new ToggleButton(310,310,80,80,"&outer");
+#if 0
+  { InputBrowser *o = new InputBrowser(5,150,80,25,"menu&1");
+    o->type(InputBrowser::NONEDITABLE_INDENTED);
+    o->add_many(bigmess);
+    o->value(o->child(0)->label());
+  }
+#endif
+  popup = new PopupMenu(0,0,400,400);
+  popup->type(PopupMenu::POPUP3);
+  popup->add_many("This|is|a popup|menu");
+  window->end();
+  subwindow->show(); // this should do nothing. On older fltk it crashed.
+  window->show(); // this actually shows the window + subwindow
+  return fltk::run();
+}
+
+//
+// End of "$Id: subwindow.cxx 5461 2006-09-19 02:49:30Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/symbols.cxx
===================================================================
--- branches/branch-3.0-2011/test2/symbols.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/symbols.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,115 @@
+// "$Id: symbols.cxx 5445 2006-09-18 20:28:08Z spitzak $"
+//
+// Symbol test program 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".
+
+#include <fltk/Window.h>
+#include <fltk/Browser.h>
+#include <fltk/Symbol.h>
+#include <fltk/run.h>
+#include <fltk/string.h>
+#include <fltk/Slider.h>
+#include <stdlib.h>
+
+using namespace fltk;
+
+int sort(const void* a, const void* b) {
+  const Symbol* A = *(const Symbol**)a;
+  const Symbol* B = *(const Symbol**)b;
+  return strcasecmp(A->name(), B->name());
+}
+
+struct fl_char_table {const char* name; const char* text;} specialtable[] = {
+  {"b", "@t@@b;\t@n@b;bold"},
+  {"B", "@t@@B#;\t@n@B11;bg color"},
+  {"C", "@t@@C#;\t@n@C11;color"},
+  {"f", "@t@@f;\t@n@f;fixed"},
+  {"i", "@t@@i;\t@n@i;italic"},
+  {"n", "@t@@n;\t@n;reset font & color"},
+  {"t", "@t@@t;\t@t;typewriter"},
+  {"s", "@t@@s+#;\t@n@s+4;bigger"},
+  {"S", "@t@@s-#;\t@n@S-4;smaller"},
+  {"x", "@t@@x#;\t@n@x+10;t@x+3;e@x-4;x@x+5;t (displace x)"},
+  {"y", "@t@@y#;\t@n@y-1;t@y+1;e@y+3;x@y+5;t@n; (displace y)"},
+  {".", "@t@@.;\t@n@.;raw mode: @&"},
+  {"l",	"@t@@l;\t@n@l;left"},
+  {"c",	"@t@@c;\t@n@c;center"},
+  {"r",	"@t@@r;\t@n@r;right"}
+};
+
+void slider_cb(Widget* w, void* v) {
+  Browser* browser = (Browser*)v;
+  browser->textsize(((Slider*)w)->value());
+  // make it remeasure all the child items (not sure if this is a bug
+  // in the Browser or not:
+  for (int i = 0; i < browser->children(); i++)
+    browser->child(i)->h(0);
+  browser->relayout();
+  browser->redraw();
+}
+
+static const char* labels[] = {"command", "result", 0};
+static int widths[] = {170,-1,0};
+
+int main(int argc, char** argv) {
+  Window window(250,700);
+  window.begin();
+  const int sliderh = 25;
+  Browser browser(0,0,window.w(),window.h()-sliderh);
+  browser.column_widths(widths);
+  browser.column_labels(labels);
+  browser.color(GRAY85);
+  window.resizable(browser);
+  Slider slider(0, browser.h(), window.w(), sliderh);
+  slider.type(Slider::TICK_ABOVE|Slider::LOG);
+  slider.range(1,60);
+  slider.step(1);
+  slider.value(browser.textsize());
+  slider.callback(slider_cb, &browser);
+  window.end();
+  const Symbol* table[1000];
+  int n = 0;
+  int i; for (i=0;;) {
+    const Symbol* symbol = Symbol::iterate(i);
+    if (!symbol) break;
+    table[n++] = symbol;
+  }
+  qsort(table, n, sizeof(*table), sort);
+  for (i=0; i<n; i++) {
+    const Symbol* symbol = table[i];
+    char buffer[256];
+    for (unsigned j = 0; j < sizeof(specialtable)/sizeof(*specialtable); j++) {
+      if (!strcmp(specialtable[j].name, symbol->name())) {
+        browser.add(specialtable[j].text);
+        goto CONTINUE;
+      }
+    }
+    snprintf(buffer, 256, "@t@@%s;\t@n@%s;", symbol->name(), symbol->name());
+    browser.add(buffer);
+  CONTINUE:;
+  }
+  window.show(argc, argv);
+  return fltk::run();
+}
+
+/*
+ * End of "$Id: symbols.cxx 5445 2006-09-18 20:28:08Z spitzak $".
+ */

Added: branches/branch-3.0-2011/test2/tabs.cxx
===================================================================
--- branches/branch-3.0-2011/test2/tabs.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/tabs.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,109 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#include "tabs.h"
+
+fltk::Window *foo_window=(fltk::Window *)0;
+
+static void cb_cancel(fltk::Button*, void*) {
+  exit(1);
+}
+
+static void cb_OK(fltk::ReturnButton*, void*) {
+  exit(0);
+}
+
+#include <fltk/run.h>
+
+int main (int argc, char **argv) {
+
+  fltk::Window* w;
+   {fltk::Window* o = foo_window = new fltk::Window(320, 296);
+    w = o;
+    o->shortcut(0xff1b);
+    o->begin();
+     {fltk::TabGroup* o = new fltk::TabGroup(10, 10, 300, 191);
+      o->begin();
+       {fltk::Group* o = new fltk::Group(0, 20, 300, 171, "Label1");
+        o->begin();
+        new fltk::Input(50, 14, 240, 22, "input:");
+        new fltk::Input(50, 36, 240, 22, "input2:");
+         {fltk::WordwrapInput* o = new fltk::WordwrapInput(50, 58, 240, 99, "input3:");
+          o->type(5);
+        }
+        o->end();
+        fltk::Group::current()->resizable(o);
+      }
+       {fltk::Group* o = new fltk::Group(0, 20, 300, 171, "tab2");
+        o->hide();
+        o->begin();
+        new fltk::Button(10, 25, 100, 22, "button1");
+        new fltk::Input(130, 58, 100, 22, "input in box2");
+        new fltk::Button(20, 113, 260, 22, "This is stuff inside the Fl_Group \"tab2\"");
+        o->end();
+      }
+       {fltk::Group* o = new fltk::Group(0, 20, 300, 171, "tab3");
+        o->hide();
+        o->begin();
+         {fltk::Button* o = new fltk::Button(10, 30, 60, 80, "button2");
+          o->set_vertical();
+        }
+         {fltk::Button* o = new fltk::Button(70, 30, 60, 80, "button");
+          o->set_vertical();
+        }
+         {fltk::Button* o = new fltk::Button(130, 30, 60, 80, "button");
+          o->set_vertical();
+        }
+        o->end();
+      }
+       {fltk::Group* o = new fltk::Group(0, 20, 300, 171, "tab4");
+        o->labelfont(fltk::HELVETICA_ITALIC);
+        o->hide();
+        o->begin();
+         {fltk::Button* o = new fltk::Button(10, 20, 60, 110, "button2");
+          o->set_vertical();
+        }
+         {fltk::Button* o = new fltk::Button(70, 20, 60, 110, "button");
+          o->set_vertical();
+        }
+         {fltk::Button* o = new fltk::Button(130, 20, 60, 110, "button");
+          o->set_vertical();
+        }
+        o->end();
+      }
+       {fltk::Group* o = new fltk::Group(0, 20, 300, 171, "very long tab text");
+        o->labeltype(fltk::ENGRAVED_LABEL);
+        o->hide();
+        o->begin();
+         {fltk::Button* o = new fltk::Button(10, 50, 60, 80, "button2");
+          o->set_vertical();
+        }
+         {fltk::Button* o = new fltk::Button(80, 60, 60, 80, "button");
+          o->set_vertical();
+        }
+         {fltk::Clock* o = new fltk::Clock(155, 13, 100, 100, "Make sure this clock does not use processor time when this tab is hidden or w\
+indow is iconized");
+          o->box(fltk::OSHADOW_BOX);
+          o->labelfont(fltk::TIMES);
+          o->color((fltk::Color)238);
+          o->labelsize(10);
+          o->align(fltk::ALIGN_BOTTOM|fltk::ALIGN_WRAP);
+        }
+        o->end();
+      }
+      o->end();
+      fltk::Group::current()->resizable(o);
+    }
+    new fltk::Input(60, 211, 130, 22, "inputA:");
+    new fltk::Input(60, 233, 250, 22, "inputB:");
+     {fltk::Button* o = new fltk::Button(180, 266, 60, 22, "cancel");
+      o->callback((fltk::Callback*)cb_cancel);
+    }
+     {fltk::ReturnButton* o = new fltk::ReturnButton(250, 266, 60, 22, "OK");
+      o->shortcut(0xff0d);
+      o->callback((fltk::Callback*)cb_OK);
+    }
+    o->end();
+  }
+  w->show(argc, argv);
+  return  fltk::run();
+}

Added: branches/branch-3.0-2011/test2/tabs.fl
===================================================================
--- branches/branch-3.0-2011/test2/tabs.fl	                        (rev 0)
+++ branches/branch-3.0-2011/test2/tabs.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,124 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.0100 
+images_dir ./ 
+header_name {.h} 
+code_name {.cxx} 
+gridx 5 
+gridy 11 
+snap 3
+Function {} {open
+} {
+  {fltk::Window} foo_window {open
+    xywh {457 236 320 296} resizable visible
+  } {
+    {fltk::TabGroup} {} {open
+      xywh {10 10 300 191} resizable
+    } {
+      {fltk::Group} {} {
+        label Label1 open
+        xywh {0 20 300 171} resizable
+      } {
+        {fltk::Input} {} {
+          label {input:}
+          xywh {50 14 240 22}
+        }
+        {fltk::Input} {} {
+          label {input2:}
+          xywh {50 36 240 22}
+        }
+        {fltk::Input} {} {
+          label {input3:}
+          xywh {50 58 240 99} type Wordwrap
+        }
+      }
+      {fltk::Group} {} {
+        label tab2 open
+        xywh {0 20 300 171} hide
+      } {
+        {fltk::Button} {} {
+          label button1
+          xywh {10 25 100 22}
+        }
+        {fltk::Input} {} {
+          label {input in box2}
+          xywh {130 58 100 22}
+        }
+        {fltk::Button} {} {
+          label {This is stuff inside the Fl_Group "tab2"}
+          xywh {20 113 260 22}
+        }
+      }
+      {fltk::Group} {} {
+        label tab3 open
+        xywh {0 20 300 171} hide
+      } {
+        {fltk::Button} {} {
+          label button2
+          xywh {10 30 60 80}
+        }
+        {fltk::Button} {} {
+          label button
+          xywh {70 30 60 80}
+        }
+        {fltk::Button} {} {
+          label button
+          xywh {130 30 60 80}
+        }
+      }
+      {fltk::Group} {} {
+        label tab4 open
+        xywh {0 20 300 171} hide labelfont 2
+      } {
+        {fltk::Button} {} {
+          label button2
+          xywh {10 20 60 110}
+        }
+        {fltk::Button} {} {
+          label button
+          xywh {70 20 60 110}
+        }
+        {fltk::Button} {} {
+          label button
+          xywh {130 20 60 110}
+        }
+      }
+      {fltk::Group} {} {
+        label {very long tab text} open
+        xywh {0 20 300 171} hide labeltype ENGRAVED_LABEL
+      } {
+        {fltk::Button} {} {
+          label button2
+          xywh {10 50 60 80}
+        }
+        {fltk::Button} {} {
+          label button
+          xywh {80 60 60 80}
+        }
+        {fltk::Clock} {} {
+          label {Make sure this clock does not use processor time when this tab is hidden or window is iconized}
+          xywh {155 13 100 100} align 130 box OSHADOW_BOX labelfont 8 color 238 labelsize 10
+        }
+      }
+    }
+    {fltk::Input} {} {
+      label {inputA:}
+      xywh {60 211 130 22}
+    }
+    {fltk::Input} {} {
+      label {inputB:}
+      xywh {60 233 250 22}
+    }
+    {fltk::Button} {} {
+      label cancel
+      callback {exit(1);}
+      xywh {180 266 60 22}
+      extra_code {\#include <stdlib.h>}
+    }
+    {fltk::ReturnButton} {} {
+      label OK
+      callback {exit(0);}
+      xywh {250 266 60 22} shortcut 0xff0d
+      extra_code {\#include <stdlib.h>}
+    }
+  }
+} 

Added: branches/branch-3.0-2011/test2/tabs.h
===================================================================
--- branches/branch-3.0-2011/test2/tabs.h	                        (rev 0)
+++ branches/branch-3.0-2011/test2/tabs.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,15 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#ifndef tabs_h
+#define tabs_h
+#include <fltk/Window.h>
+extern fltk::Window* foo_window;
+#include <fltk/TabGroup.h>
+#include <fltk/Group.h>
+#include <fltk/Input.h>
+#include <fltk/WordwrapInput.h>
+#include <fltk/Button.h>
+#include <fltk/Clock.h>
+#include <stdlib.h>
+#include <fltk/ReturnButton.h>
+#endif

Added: branches/branch-3.0-2011/test2/threads.cxx
===================================================================
--- branches/branch-3.0-2011/test2/threads.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/threads.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,136 @@
+//
+// "$Id: threads.cxx 5469 2006-09-19 20:03:07Z spitzak $"
+//
+// Threading example program 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".
+//
+
+#include <config.h>
+
+#if HAVE_PTHREAD || defined(WIN32)
+#  include <fltk/Window.h>
+#  include <fltk/Browser.h>
+#  include <fltk/ValueInput.h>
+#  include <fltk/Threads.h>
+#  include <fltk/run.h>
+#  include <stdio.h>
+#  include <math.h>
+
+fltk::Thread prime_thread;
+
+fltk::Browser *browser1, *browser2;
+fltk::ValueInput *value1, *value2;
+unsigned start2 = 5;
+
+void* prime_func(void* p)
+{
+  fltk::Browser* browser = (fltk::Browser*) p;
+  fltk::ValueInput *value;
+  unsigned n = 5;
+  if (browser == browser2) {
+    value = value2;
+  } else {
+    value = value1;
+  }
+
+  // very simple prime number calculator !
+  for (; ; n += 2) {
+    if (browser == browser2) {
+      // for multithreaded one, get next number to test
+      fltk::lock();
+      n = start2;
+      start2 += 2;
+      fltk::unlock();
+    }
+    for (unsigned p=3; n%p; p+=2) {
+      if (p*p > n) {
+	char s[128];
+	sprintf(s, "%u", n);
+	fltk::lock();
+	browser->add(s);
+	browser->bottomline(browser->size());
+	if (n > value->value()) value->value(n);
+	fltk::awake((void*) (browser == browser1? p:0));	// Cause the browser to redraw ...
+	fltk::unlock();
+	break;
+      }
+    }
+  }
+  return 0;
+}
+
+int main()
+{
+  fltk::lock(); // you must do this before creating any threads!
+
+  fltk::Window* w = new fltk::Window(200, 200, "Single Thread");
+  w->begin();
+  browser1 = new fltk::Browser(0, 0, 200, 175);
+  w->resizable(browser1);
+  value1 = new fltk::ValueInput(100, 175, 200, 25, "Max Prime:");
+  w->end();
+  w->show();
+  w = new fltk::Window(200, 200, "Six Threads");
+  w->begin();
+  browser2 = new fltk::Browser(0, 0, 200, 175);
+  w->resizable(browser2);
+  value2 = new fltk::ValueInput(100, 175, 200, 25, "Max Prime:");
+  w->end();
+  w->show();
+
+  browser1->add("Prime numbers:");
+  browser1->add("2");
+  browser1->add("3");
+  browser2->add("Prime numbers:");
+  browser2->add("2");
+  browser2->add("3");
+
+  // One thread displaying in one browser
+  fltk::create_thread(prime_thread, prime_func, browser1);
+  // Several threads displaying in another browser
+  fltk::create_thread(prime_thread, prime_func, browser2);
+  fltk::create_thread(prime_thread, prime_func, browser2);
+  fltk::create_thread(prime_thread, prime_func, browser2);
+  fltk::create_thread(prime_thread, prime_func, browser2);
+  fltk::create_thread(prime_thread, prime_func, browser2);
+  fltk::create_thread(prime_thread, prime_func, browser2);
+
+  //  fltk::run();
+  while (w->visible()) {
+    fltk::wait();
+//    void* m = fltk::thread_message();
+//    printf("Received message: %p\n", m);
+  }
+
+  return 0;
+}
+#else
+#  include <fltk/ask.h>
+
+int main() {
+  fltk::alert("Sorry, threading not supported on this platform!");
+}
+#endif // HAVE_PTHREAD || WIN32
+
+
+//
+// End of "$Id: threads.cxx 5469 2006-09-19 20:03:07Z spitzak $".
+//

Added: branches/branch-3.0-2011/test2/tile.cxx
===================================================================
--- branches/branch-3.0-2011/test2/tile.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/tile.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,100 @@
+//
+// "$Id: tile.cxx 4942 2006-04-12 16:26:07Z fabien $"
+//
+// Tile test program 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".
+//
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/TiledGroup.h>
+#include <fltk/Button.h>
+
+int main(int argc, char** argv) {
+  fltk::Window window(320,320);
+  window.begin();
+  window.resizable(window);
+
+  fltk::TiledGroup tile(10,10,300,300);
+  tile.begin();
+
+  fltk::Group box0(0,0,150,150,"0");
+  box0.box(fltk::DOWN_BOX);
+  box0.color(9);
+  box0.labelsize(36);
+  box0.set_flag(fltk::ALIGN_CLIP);
+
+  box0.begin();
+  fltk::Button but(20, 20, 100, 30, "Button");
+  but.set_flag(fltk::ALIGN_CLIP);
+  box0.end();
+
+  fltk::Window w1(150,0,150,150,"1");
+  w1.begin();
+  fltk::Widget box1(0,0,150,150,"1\nThis is a\nchild\nX window");
+  box1.box(fltk::DOWN_BOX);
+  box1.color(19);
+  box1.labelsize(18);
+  box1.set_flag(fltk::ALIGN_CLIP);
+  w1.resizable(box1);
+  w1.end();
+
+  //  fltk::Tile tile2(0,150,150,150);
+  fltk::Widget box2a(0,150,70,150,"2a");
+  box2a.box(fltk::DOWN_BOX);
+  box2a.color(12);
+  box2a.labelsize(36);
+  box2a.set_flag(fltk::ALIGN_CLIP);
+  fltk::Widget box2b(70,150,80,150,"2b");
+  box2b.box(fltk::DOWN_BOX);
+  box2b.color(13);
+  box2b.labelsize(36);
+  box2b.set_flag(fltk::ALIGN_CLIP);
+  //tile2.end();
+
+  //Tile tile3(150,150,150,150);
+  fltk::Widget box3a(150,150,150,70,"3a");
+  box3a.box(fltk::DOWN_BOX);
+  box3a.color(12);
+  box3a.labelsize(36);
+  box3a.set_flag(fltk::ALIGN_CLIP);
+  fltk::Widget box3b(150,150+70,150,80,"3b");
+  box3b.box(fltk::DOWN_BOX);
+  box3b.color(13);
+  box3b.labelsize(36);
+  box3b.set_flag(fltk::ALIGN_CLIP);
+  //tile3.end();
+  
+  fltk::Widget r(10,0,300-10,300-10);
+  //r.box(fltk::BORDER_FRAME);
+  r.hide();
+  tile.resizable(r);
+
+  tile.end();
+  window.end();
+  window.show(argc,argv);
+  w1.show();
+  return fltk::run();
+}
+
+//
+// End of "$Id: tile.cxx 4942 2006-04-12 16:26:07Z fabien $".
+//

Added: branches/branch-3.0-2011/test2/timer.cxx
===================================================================
--- branches/branch-3.0-2011/test2/timer.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/timer.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,75 @@
+#include <fltk/run.h>
+#include <fltk/Widget.h>
+#include <fltk/Window.h>
+#include <fltk/ValueInput.h>
+#include <fltk/ValueOutput.h>
+#include <fltk/Slider.h>
+
+using namespace fltk;
+
+double cps = 24.0;
+double period = 1.0/24.0;
+
+unsigned ticks;
+static double starttime;
+unsigned prevticks;
+
+//#define SLIDER_TICKS cps
+// A prime number to avoid system tendency to do things in multiples of 2
+// and 100:
+#define SLIDER_TICKS 139
+
+ValueOutput* actual;
+int timing_period = 1;
+
+void timeout_callback(void* v) {
+  ticks++;
+  ((Slider*)v)->value(ticks%SLIDER_TICKS);
+  fltk::repeat_timeout(period, timeout_callback, v);
+
+  if (ticks-prevticks > cps*timing_period) {
+    double now = fltk::get_time_secs();
+    actual->value((ticks-prevticks)/(now-starttime));
+    starttime = now;
+    prevticks = ticks;
+    timing_period++;
+  }
+}
+
+void fps_callback(Widget* w, void* v) {
+  cps = ((ValueInput*)w)->value();
+  //((Slider*)v)->maximum(SLIDER_TICKS-1);
+  period = 1.0/cps;
+  fltk::remove_timeout(timeout_callback, v);
+  fltk::add_timeout(period, timeout_callback, v);
+  starttime = fltk::get_time_secs();
+  prevticks = ticks;
+  timing_period = 1;
+}
+
+int main(int argc, char** argv) {
+
+  Window window(300,200);
+  window.begin();
+  Widget box(0, 0, 300, 100, "fltk::repeat_timeout() test");
+  box.labelsize(20); //box.labelfont(HELVETICA_BOLD);
+  box.align(ALIGN_WRAP);
+  window.resizable(box);
+  Slider ticker(10, 100,280,25);
+  ticker.maximum(SLIDER_TICKS-1);
+  ticker.set_output();
+  ValueInput fps(120, 130, 170, 25, "Desired speed:");
+  fps.value(24);
+  fps.callback(fps_callback, &ticker);
+  ValueOutput actual(120, 165, 170, 25, "Actual speed:");
+  actual.tooltip("Average speed since you last changed the speed.");
+  ::actual = &actual;
+
+  window.show(argc, argv);
+  fltk::wait();
+
+  fltk::add_timeout(period, timeout_callback, &ticker);
+  starttime = fltk::get_time_secs();
+
+  return fltk::run();
+}

Added: branches/branch-3.0-2011/test2/trackball.c
===================================================================
--- branches/branch-3.0-2011/test2/trackball.c	                        (rev 0)
+++ branches/branch-3.0-2011/test2/trackball.c	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,324 @@
+/*
+ * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
+ * ALL RIGHTS RESERVED
+ * Permission to use, copy, modify, and distribute this software for
+ * any purpose and without fee is hereby granted, provided that the above
+ * copyright notice appear in all copies and that both the copyright notice
+ * and this permission notice appear in supporting documentation, and that
+ * the name of Silicon Graphics, Inc. not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission.
+ *
+ * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
+ * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
+ * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
+ * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
+ * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
+ * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
+ * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
+ * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
+ * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
+ * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * US Government Users Restricted Rights
+ * Use, duplication, or disclosure by the Government is subject to
+ * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
+ * clause at DFARS 252.227-7013 and/or in similar or successor
+ * clauses in the FAR or the DOD or NASA FAR Supplement.
+ * Unpublished-- rights reserved under the copyright laws of the
+ * United States.  Contractor/manufacturer is Silicon Graphics,
+ * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
+ *
+ * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
+ */
+/*
+ * Trackball code:
+ *
+ * Implementation of a virtual trackball.
+ * Implemented by Gavin Bell, lots of ideas from Thant Tessman and
+ *   the August '88 issue of Siggraph's "Computer Graphics," pp. 121-129.
+ *
+ * Vector manip code:
+ *
+ * Original code from:
+ * David M. Ciemiewicz, Mark Grossman, Henry Moreton, and Paul Haeberli
+ *
+ * Much mucking with by:
+ * Gavin Bell
+ */
+#include <math.h>
+#include "trackball.h"
+
+/*
+ * This size should really be based on the distance from the center of
+ * rotation to the point on the object underneath the mouse.  That
+ * point would then track the mouse as closely as possible.  This is a
+ * simple example, though, so that is left as an Exercise for the
+ * Programmer.
+ */
+#define TRACKBALLSIZE  (0.8)
+
+/*
+ * Local function prototypes (not defined in trackball.h)
+ */
+static float tb_project_to_sphere(float, float, float);
+static void normalize_quat(float [4]);
+
+void
+vzero(float *v)
+{
+    v[0] = 0.0;
+    v[1] = 0.0;
+    v[2] = 0.0;
+}
+
+void
+vset(float *v, float x, float y, float z)
+{
+    v[0] = x;
+    v[1] = y;
+    v[2] = z;
+}
+
+void
+vsub(const float *src1, const float *src2, float *dst)
+{
+    dst[0] = src1[0] - src2[0];
+    dst[1] = src1[1] - src2[1];
+    dst[2] = src1[2] - src2[2];
+}
+
+void
+vcopy(const float *v1, float *v2)
+{
+    register int i;
+    for (i = 0 ; i < 3 ; i++)
+        v2[i] = v1[i];
+}
+
+void
+vcross(const float *v1, const float *v2, float *cross)
+{
+    float temp[3];
+
+    temp[0] = (v1[1] * v2[2]) - (v1[2] * v2[1]);
+    temp[1] = (v1[2] * v2[0]) - (v1[0] * v2[2]);
+    temp[2] = (v1[0] * v2[1]) - (v1[1] * v2[0]);
+    vcopy(temp, cross);
+}
+
+float
+vlength(const float *v)
+{
+    return (float)(sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]));
+}
+
+void
+vscale(float *v, float div)
+{
+    v[0] *= div;
+    v[1] *= div;
+    v[2] *= div;
+}
+
+void
+vnormal(float *v)
+{
+    vscale(v,1.0/vlength(v));
+}
+
+float
+vdot(const float *v1, const float *v2)
+{
+    return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2];
+}
+
+void
+vadd(const float *src1, const float *src2, float *dst)
+{
+    dst[0] = src1[0] + src2[0];
+    dst[1] = src1[1] + src2[1];
+    dst[2] = src1[2] + src2[2];
+}
+
+/*
+ * Ok, simulate a track-ball.  Project the points onto the virtual
+ * trackball, then figure out the axis of rotation, which is the cross
+ * product of P1 P2 and O P1 (O is the center of the ball, 0,0,0)
+ * Note:  This is a deformed trackball-- is a trackball in the center,
+ * but is deformed into a hyperbolic sheet of rotation away from the
+ * center.  This particular function was chosen after trying out
+ * several variations.
+ *
+ * It is assumed that the arguments to this routine are in the range
+ * (-1.0 ... 1.0)
+ */
+void
+trackball(float q[4], float p1x, float p1y, float p2x, float p2y)
+{
+    float a[3]; /* Axis of rotation */
+    float phi;  /* how much to rotate about axis */
+    float p1[3], p2[3], d[3];
+    float t;
+
+    if (p1x == p2x && p1y == p2y) {
+        /* Zero rotation */
+        vzero(q);
+        q[3] = 1.0;
+        return;
+    }
+
+    /*
+     * First, figure out z-coordinates for projection of P1 and P2 to
+     * deformed sphere
+     */
+    vset(p1,p1x,p1y,tb_project_to_sphere(TRACKBALLSIZE,p1x,p1y));
+    vset(p2,p2x,p2y,tb_project_to_sphere(TRACKBALLSIZE,p2x,p2y));
+
+    /*
+     *  Now, we want the cross product of P1 and P2
+     */
+    vcross(p2,p1,a);
+
+    /*
+     *  Figure out how much to rotate around that axis.
+     */
+    vsub(p1,p2,d);
+    t = vlength(d) / (2.0*TRACKBALLSIZE);
+
+    /*
+     * Avoid problems with out-of-control values...
+     */
+    if (t > 1.0) t = 1.0;
+    if (t < -1.0) t = -1.0;
+    phi = 2.0 * asin(t);
+
+    axis_to_quat(a,phi,q);
+}
+
+/*
+ *  Given an axis and angle, compute quaternion.
+ */
+void
+axis_to_quat(float a[3], float phi, float q[4])
+{
+    vnormal(a);
+    vcopy(a,q);
+    vscale(q,sin(phi/2.0));
+    q[3] = cos(phi/2.0);
+}
+
+/*
+ * Project an x,y pair onto a sphere of radius r OR a hyperbolic sheet
+ * if we are away from the center of the sphere.
+ */
+static float
+tb_project_to_sphere(float r, float x, float y)
+{
+    float d, t, z;
+
+    d = sqrt(x*x + y*y);
+    if (d < r * 0.70710678118654752440) {    /* Inside sphere */
+        z = sqrt(r*r - d*d);
+    } else {           /* On hyperbola */
+        t = r / 1.41421356237309504880;
+        z = t*t / d;
+    }
+    return z;
+}
+
+/*
+ * Given two rotations, e1 and e2, expressed as quaternion rotations,
+ * figure out the equivalent single rotation and stuff it into dest.
+ *
+ * This routine also normalizes the result every RENORMCOUNT times it is
+ * called, to keep error from creeping in.
+ *
+ * NOTE: This routine is written so that q1 or q2 may be the same
+ * as dest (or each other).
+ */
+
+#define RENORMCOUNT 97
+
+void
+add_quats(float q1[4], float q2[4], float dest[4])
+{
+    static int count=0;
+    float t1[4], t2[4], t3[4];
+    float tf[4];
+
+    vcopy(q1,t1);
+    vscale(t1,q2[3]);
+
+    vcopy(q2,t2);
+    vscale(t2,q1[3]);
+
+    vcross(q2,q1,t3);
+    vadd(t1,t2,tf);
+    vadd(t3,tf,tf);
+    tf[3] = q1[3] * q2[3] - vdot(q1,q2);
+
+    dest[0] = tf[0];
+    dest[1] = tf[1];
+    dest[2] = tf[2];
+    dest[3] = tf[3];
+
+    if (++count > RENORMCOUNT) {
+        count = 0;
+        normalize_quat(dest);
+    }
+}
+
+/*
+ * Quaternions always obey:  a^2 + b^2 + c^2 + d^2 = 1.0
+ * If they don't add up to 1.0, dividing by their magnitued will
+ * renormalize them.
+ *
+ * Note: See the following for more information on quaternions:
+ *
+ * - Shoemake, K., Animating rotation with quaternion curves, Computer
+ *   Graphics 19, No 3 (Proc. SIGGRAPH'85), 245-254, 1985.
+ * - Pletinckx, D., Quaternion calculus as a basic tool in computer
+ *   graphics, The Visual Computer 5, 2-13, 1989.
+ */
+static void
+normalize_quat(float q[4])
+{
+    int i;
+    float mag;
+
+    mag = (q[0]*q[0] + q[1]*q[1] + q[2]*q[2] + q[3]*q[3]);
+    for (i = 0; i < 4; i++) q[i] /= mag;
+}
+
+/*
+ * Build a rotation matrix, given a quaternion rotation.
+ *
+ */
+void
+build_rotmatrix(float m[4][4], float q[4])
+{
+    m[0][0] = 1.0 - 2.0 * (q[1] * q[1] + q[2] * q[2]);
+    m[0][1] = 2.0 * (q[0] * q[1] - q[2] * q[3]);
+    m[0][2] = 2.0 * (q[2] * q[0] + q[1] * q[3]);
+    m[0][3] = 0.0;
+
+    m[1][0] = 2.0 * (q[0] * q[1] + q[2] * q[3]);
+    m[1][1]= 1.0 - 2.0 * (q[2] * q[2] + q[0] * q[0]);
+    m[1][2] = 2.0 * (q[1] * q[2] - q[0] * q[3]);
+    m[1][3] = 0.0;
+
+    m[2][0] = 2.0 * (q[2] * q[0] - q[1] * q[3]);
+    m[2][1] = 2.0 * (q[1] * q[2] + q[0] * q[3]);
+    m[2][2] = 1.0 - 2.0 * (q[1] * q[1] + q[0] * q[0]);
+    m[2][3] = 0.0;
+
+    m[3][0] = 0.0;
+    m[3][1] = 0.0;
+    m[3][2] = 0.0;
+    m[3][3] = 1.0;
+}
+

Added: branches/branch-3.0-2011/test2/trackball.h
===================================================================
--- branches/branch-3.0-2011/test2/trackball.h	                        (rev 0)
+++ branches/branch-3.0-2011/test2/trackball.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,78 @@
+/*
+ * (c) Copyright 1993, 1994, Silicon Graphics, Inc.
+ * ALL RIGHTS RESERVED
+ * Permission to use, copy, modify, and distribute this software for
+ * any purpose and without fee is hereby granted, provided that the above
+ * copyright notice appear in all copies and that both the copyright notice
+ * and this permission notice appear in supporting documentation, and that
+ * the name of Silicon Graphics, Inc. not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission.
+ *
+ * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
+ * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
+ * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
+ * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
+ * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
+ * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
+ * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
+ * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
+ * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
+ * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * US Government Users Restricted Rights
+ * Use, duplication, or disclosure by the Government is subject to
+ * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
+ * clause at DFARS 252.227-7013 and/or in similar or successor
+ * clauses in the FAR or the DOD or NASA FAR Supplement.
+ * Unpublished-- rights reserved under the copyright laws of the
+ * United States.  Contractor/manufacturer is Silicon Graphics,
+ * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
+ *
+ * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
+ */
+/*
+ * trackball.h
+ * A virtual trackball implementation
+ * Written by Gavin Bell for Silicon Graphics, November 1988.
+ */
+
+/*
+ * Pass the x and y coordinates of the last and current positions of
+ * the mouse, scaled so they are from (-1.0 ... 1.0).
+ *
+ * The resulting rotation is returned as a quaternion rotation in the
+ * first paramater.
+ */
+void
+trackball(float q[4], float p1x, float p1y, float p2x, float p2y);
+
+/*
+ * Given two quaternions, add them together to get a third quaternion.
+ * Adding quaternions to get a compound rotation is analagous to adding
+ * translations to get a compound translation.  When incrementally
+ * adding rotations, the first argument here should be the new
+ * rotation, the second and third the total rotation (which will be
+ * over-written with the resulting new total rotation).
+ */
+void
+add_quats(float *q1, float *q2, float *dest);
+
+/*
+ * A useful function, builds a rotation matrix in Matrix based on
+ * given quaternion.
+ */
+void
+build_rotmatrix(float m[4][4], float q[4]);
+
+/*
+ * This function computes a quaternion based on an axis (defined by
+ * the given vector) and an angle about which to rotate.  The angle is
+ * expressed in radians.  The result is put into the third argument.
+ */
+void
+axis_to_quat(float a[3], float phi, float q[4]);
+

Added: branches/branch-3.0-2011/test2/utf.cxx
===================================================================
--- branches/branch-3.0-2011/test2/utf.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/utf.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,159 @@
+// Test of UTF-8 handling in fltk.
+
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Scrollbar.h>
+#include <fltk/draw.h>
+#include <fltk/string.h>
+#include <fltk/Box.h>
+#include <fltk/Choice.h>
+#include <fltk/Font.h>
+#include <fltk/utf.h>
+#include <fltk/math.h>
+#include <fltk/Tooltip.h>
+#include <fltk/events.h>
+using namespace fltk;
+
+fltk::Font** fonts; // list returned by fltk
+Scrollbar* scrollbar;
+
+class Drawing : public Widget {
+  void draw();
+  int handle(int);
+public:
+  Drawing(int x, int y, int w, int h) : Widget(x,y,w,h) {}
+  void layout();
+};
+
+Drawing *drawing;
+
+// Return color to draw behind given code
+Color code_color(unsigned ucs) {
+  if (ucs < 32 || ucs==127 // ascii control characters
+      || (ucs >= 0x80 && ucs <= 0x9f) // C1 control characters
+      || (ucs >= 0xd800 && ucs <= 0xdfff) // surrogate pairs
+      || (ucs >= 0xfdd0 && ucs <= 0xfdef) // noncharacters
+      || (ucs&0xffff) >= 0xfffe // noncharacters
+      ) return GRAY50;
+  if (ucs & 0x100) return GRAY80;
+  return WHITE;
+}
+
+void Drawing::draw() {
+  push_clip(*this);
+  unsigned scroll = unsigned(scrollbar->value());
+  unsigned itemh = unsigned(textsize()+8);
+  unsigned base = scroll*16;
+  int y = 0;
+  Box* box = this->box();
+  for (; y < h(); y+=itemh, base+=16) {
+    char buf[20];
+    sprintf(buf, "U+%03Xx", base>>4);
+    Rectangle r(0, y, w()*2/18, itemh);
+    setbgcolor((base&0x100) ? GRAY80 : WHITE);
+    box->draw(r);
+    setcolor(labelcolor());
+    setfont(labelfont(),labelsize());
+    drawtext(buf, r, 0);
+    setfont(textfont(),textsize());
+    for (int z = 0; z < 16; z++) {
+      r.x(r.r()); r.set_r(w()*(3+z)/18);
+      char* p = buf;
+      // if (base < 0x100) *p++ = base+z; else // demonstrate cp1252 emulation
+      p += utf8encode(base+z,p);
+      *p = 0;
+      setbgcolor(code_color(base+z));
+      box->draw(r);
+      setcolor(labelcolor());
+      drawtext(buf, r, 0);
+    }
+  }
+  pop_clip();
+}
+
+const char* generator(Widget*, void* data) {
+  unsigned ucs = (unsigned)(unsigned long)data;
+  static char buffer[20];
+  sprintf(buffer,"U+%04x",ucs);
+  return buffer;
+}
+
+int Drawing::handle(int event) {
+  switch (event) {
+  case ENTER:
+  case MOVE:
+  case DRAG:
+  case PUSH:
+  case RELEASE:
+    break;
+  default:
+    return Widget::handle(event);
+  }
+  unsigned itemh = unsigned(textsize()+8);
+  int x = event_x()*18/w()-2;
+  int y = event_y()/itemh;
+  if (x < 0 || x > 15 || y < 0 || event_y()>h()) {
+    Tooltip::exit();
+    return true;
+  }
+  unsigned scroll = unsigned(scrollbar->value());
+  unsigned base = scroll*16;
+  unsigned ucs = base+y*16+x;
+  Tooltip::enter(this, Rectangle(w()*(2+x)/18, y*itemh, (w()+9)/18, itemh),
+		 generator, (void*)ucs);
+  return true;
+}
+
+void Drawing::layout() {
+  unsigned itemh = unsigned(textsize()+8);
+  //actually the height should be 0x11000*itemh to get all Unicode:
+  scrollbar->value(scrollbar->value(),h()/itemh,0,0x1000);
+  scrollbar->linesize(1);
+  Widget::layout();
+}
+
+void scroll_cb(Widget* w, void*) {
+  drawing->redraw();
+}
+
+void font_cb(Widget* w, void*) {
+  drawing->textfont(fonts[((Choice*)w)->value()]);
+  drawing->redraw();
+}
+
+void size_cb(Widget* w, void*) {
+  drawing->textsize(rint(((Slider*)w)->value()));
+  drawing->relayout();
+  drawing->redraw();
+}
+
+#define WH 24
+
+int main(int argc, char** argv) {
+  Window window(400,400+2*WH);
+  window.begin();
+  Drawing drawing(0,0,385,400);
+  ::drawing = &drawing;
+  window.resizable(drawing);
+  Scrollbar scrollbar(385,0,15,400);
+  scrollbar.set_vertical();
+  ::scrollbar = &scrollbar;
+  scrollbar.callback(scroll_cb);
+  Choice fontchooser(0,400,400,WH);
+  int numfonts = fltk::list_fonts(fonts);
+  int i; for (i = 0; i < numfonts; i++) fontchooser.add(fonts[i]->name());
+  fontchooser.callback(font_cb);
+  Slider sizeslider(0,400+WH,400,WH);
+  sizeslider.type(Slider::TICK_ABOVE|Slider::LOG);
+  sizeslider.range(5,50);
+  sizeslider.callback(size_cb);
+  window.end();
+  window.show(argc,argv);
+  sizeslider.value(drawing.textsize());
+  for (i=0; i < numfonts; i++)
+    if (drawing.textfont()==fonts[i]) {
+      fontchooser.value(i);
+      break;
+    }
+  return run();
+}

Added: branches/branch-3.0-2011/test2/valuators.cxx
===================================================================
--- branches/branch-3.0-2011/test2/valuators.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/valuators.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,277 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#include "valuators.h"
+
+static void callback(fltk::Widget* o, void*) {
+  printf("%g     \r", ((fltk::Valuator*)o)->value());
+  fflush(stdout);
+}
+
+#include <fltk/run.h>
+
+int main (int argc, char **argv) {
+
+  fltk::Window* w;
+   {fltk::Window* o = new fltk::Window(565, 490, "Valuator classes, showing values for the type()");
+    w = o;
+    o->labelsize(10);
+    o->shortcut(0xff1b);
+    o->begin();
+     {fltk::Widget* o = new fltk::Widget(10, 10, 280, 235, "Fl_Slider");
+      o->box(fltk::ENGRAVED_BOX);
+      o->labelfont(fltk::HELVETICA_BOLD);
+      o->color((fltk::Color)49);
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_CENTER);
+    }
+     {fltk::Slider* o = new fltk::Slider(25, 49, 20, 157, "VERTICAL");
+      o->set_vertical();
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)callback);
+      o->align(fltk::ALIGN_TOP);
+    }
+     {fltk::Slider* o = new fltk::Slider(60, 70, 20, 158, "VERTICAL|TICK_LEFT");
+      o->type(fltk::Slider::TICK_ABOVE);
+      o->set_vertical();
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)callback);
+    }
+     {fltk::Slider* o = new fltk::Slider(100, 49, 20, 157, "VERTICAL|TICK_RIGHT");
+      o->type(fltk::Slider::TICK_BELOW);
+      o->set_vertical();
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)callback);
+      o->align(fltk::ALIGN_TOP);
+    }
+     {fltk::Slider* o = new fltk::Slider(140, 54, 130, 16, "HORIZONTAL");
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)callback);
+    }
+     {fltk::Slider* o = new fltk::Slider(140, 81, 130, 22, "HORIZONTAL|TICK_ABOVE");
+      o->type(fltk::Slider::TICK_ABOVE);
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)callback);
+    }
+     {fltk::Slider* o = new fltk::Slider(140, 119, 130, 22, "HORIZONTAL|TICK_ABOVE,box");
+      o->type(fltk::Slider::TICK_ABOVE);
+      o->box(fltk::DOWN_BOX);
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)callback);
+    }
+     {fltk::Slider* o = new fltk::Slider(140, 157, 130, 22, "HORIZONTAL|TICK_BELOW");
+      o->type(fltk::Slider::TICK_BELOW);
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)callback);
+    }
+     {fltk::Slider* o = new fltk::Slider(140, 201, 130, 22, "HORIZONTAL|TICK_BOTH");
+      o->type(fltk::Slider::TICK_BOTH);
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)callback);
+    }
+     {fltk::Widget* o = new fltk::Widget(295, 10, 260, 126, "Fl_Value_Input");
+      o->box(fltk::ENGRAVED_BOX);
+      o->labelfont(fltk::HELVETICA_BOLD);
+      o->color((fltk::Color)49);
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_CENTER);
+    }
+     {fltk::ValueInput* o = new fltk::ValueInput(360, 35, 180, 22, "outside label");
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)callback);
+    }
+     {fltk::ValueInput* o = new fltk::ValueInput(310, 63, 100, 22, "inside");
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)callback);
+      o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER);
+    }
+     {fltk::ValueInput* o = new fltk::ValueInput(410, 63, 65, 22, "x");
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->maximum(100);
+      o->step(0.1);
+      o->callback((fltk::Callback*)callback);
+      o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER);
+    }
+     {fltk::ValueInput* o = new fltk::ValueInput(475, 63, 65, 22, "y");
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->maximum(100);
+      o->step(0.1);
+      o->callback((fltk::Callback*)callback);
+      o->align(fltk::ALIGN_LEFT|fltk::ALIGN_CENTER);
+    }
+     {fltk::ValueInput* o = new fltk::ValueInput(360, 93, 180, 32, "larger");
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->callback((fltk::Callback*)callback);
+    }
+     {fltk::Widget* o = new fltk::Widget(10, 250, 280, 229, "Fl_Value_Slider");
+      o->box(fltk::ENGRAVED_BOX);
+      o->labelfont(fltk::HELVETICA_BOLD);
+      o->color((fltk::Color)49);
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_CENTER);
+    }
+     {fltk::Widget* o = new fltk::Widget(295, 141, 145, 131, "   Fl_Scrollbar");
+      o->box(fltk::ENGRAVED_BOX);
+      o->labelfont(fltk::HELVETICA_BOLD);
+      o->color((fltk::Color)49);
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_LEFT|fltk::ALIGN_CENTER);
+    }
+     {fltk::Scrollbar* o = new fltk::Scrollbar(300, 240, 105, 20, "HORIZONTAL");
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->maximum(100);
+      o->callback((fltk::Callback*)callback);
+    }
+     {fltk::Scrollbar* o = new fltk::Scrollbar(405, 145, 20, 115, "VERTICAL");
+      o->set_vertical();
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->minimum(100);
+      o->maximum(0);
+      o->callback((fltk::Callback*)callback);
+    }
+     {fltk::ValueSlider* o = new fltk::ValueSlider(25, 277, 30, 158, "VERTICAL");
+      o->set_vertical();
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->textsize(10);
+      o->callback((fltk::Callback*)callback);
+      o->align(fltk::ALIGN_TOP);
+    }
+     {fltk::ValueSlider* o = new fltk::ValueSlider(65, 310, 30, 152, "VERTICAL|TICK_LEFT");
+      o->type(fltk::ValueSlider::TICK_ABOVE);
+      o->set_vertical();
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->textsize(10);
+      o->callback((fltk::Callback*)callback);
+    }
+     {fltk::ValueSlider* o = new fltk::ValueSlider(105, 283, 35, 158, "VERTICAL|TICK_LEFT,box");
+      o->type(fltk::ValueSlider::TICK_ABOVE);
+      o->set_vertical();
+      o->box(fltk::DOWN_BOX);
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->textsize(10);
+      o->callback((fltk::Callback*)callback);
+      o->align(fltk::ALIGN_TOP);
+    }
+     {fltk::ValueSlider* o = new fltk::ValueSlider(145, 294, 130, 21, "HORIZONTAL");
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)callback);
+    }
+     {fltk::ValueSlider* o = new fltk::ValueSlider(145, 337, 130, 22, "HORIZONTAL|TICK_BELOW");
+      o->type(fltk::ValueSlider::TICK_BELOW);
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)callback);
+    }
+     {fltk::ValueSlider* o = new fltk::ValueSlider(145, 381, 130, 21, "HORIZONTAL|TICK_BELOW,box");
+      o->type(fltk::ValueSlider::TICK_BELOW);
+      o->box(fltk::DOWN_BOX);
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)callback);
+    }
+     {fltk::ValueSlider* o = new fltk::ValueSlider(145, 424, 130, 33, "HORIZONTAL|TICK_BOTH");
+      o->type(fltk::ValueSlider::TICK_BOTH);
+      o->color((fltk::Color)10);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)callback);
+    }
+     {fltk::Widget* o = new fltk::Widget(295, 277, 145, 136, "Fl_Roller");
+      o->box(fltk::ENGRAVED_BOX);
+      o->labelfont(fltk::HELVETICA_BOLD);
+      o->color((fltk::Color)49);
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_CENTER);
+    }
+     {fltk::ThumbWheel* o = new fltk::ThumbWheel(305, 340, 90, 20, "HORIZONTAL");
+      o->color((fltk::Color)0xe6e7e600);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)callback);
+    }
+     {fltk::ThumbWheel* o = new fltk::ThumbWheel(405, 299, 20, 103, "VERTICAL");
+      o->set_vertical();
+      o->color((fltk::Color)0xe6e7e600);
+      o->selection_color((fltk::Color)1);
+      o->labelsize(8);
+      o->callback((fltk::Callback*)callback);
+    }
+     {fltk::Group* o = new fltk::Group(445, 141, 110, 272, "Fl_Dial");
+      o->set_vertical();
+      o->box(fltk::ENGRAVED_BOX);
+      o->labelfont(fltk::HELVETICA_BOLD);
+      o->align(fltk::ALIGN_TOP|fltk::ALIGN_CENTER);
+      o->begin();
+       {fltk::Dial* o = new fltk::Dial(23, 24, 63, 65, "NORMAL");
+        o->set_vertical();
+        o->color((fltk::Color)10);
+        o->selection_color((fltk::Color)1);
+        o->labelsize(8);
+        o->value(0.5);
+        o->callback((fltk::Callback*)callback);
+        o->angles(0,315);
+      }
+       {fltk::Dial* o = new fltk::Dial(23, 104, 63, 65, "LINE");
+        o->type(fltk::Dial::LINE);
+        o->set_vertical();
+        o->color((fltk::Color)10);
+        o->selection_color((fltk::Color)1);
+        o->labelsize(8);
+        o->value(0.5);
+        o->callback((fltk::Callback*)callback);
+      }
+       {fltk::Dial* o = new fltk::Dial(23, 184, 63, 65, "FILL");
+        o->type(fltk::Dial::FILL);
+        o->set_vertical();
+        o->color((fltk::Color)10);
+        o->selection_color((fltk::Color)1);
+        o->labelsize(8);
+        o->value(0.75);
+        o->callback((fltk::Callback*)callback);
+        o->angles(0,360);
+      }
+      o->end();
+    }
+     {fltk::Widget* o = new fltk::Widget(295, 419, 260, 60, "All widgets have color(green) and selection_color(red) to show the areas thes\
+e colors affect.");
+      o->box(fltk::ENGRAVED_BOX);
+      o->labelsize(10);
+      o->align(fltk::ALIGN_WRAP);
+    }
+    o->end();
+    o->resizable(o);
+  }
+  w->show(argc, argv);
+  return  fltk::run();
+}

Added: branches/branch-3.0-2011/test2/valuators.fl
===================================================================
--- branches/branch-3.0-2011/test2/valuators.fl	                        (rev 0)
+++ branches/branch-3.0-2011/test2/valuators.fl	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,189 @@
+# data file for the FLTK User Interface Designer (FLUID)
+version 2.0100 
+images_dir ./ 
+header_name {.h} 
+code_name {.cxx} 
+gridx 5 
+gridy 5 
+snap 3
+Function {callback(fltk::Widget* o, void*)} {open private return_type void
+} {
+  code {printf("%g     \\r", ((fltk::Valuator*)o)->value());
+fflush(stdout);} {}
+} 
+
+Function {} {open
+} {
+  {fltk::Window} {} {
+    label {Valuator classes, showing values for the type()} open
+    xywh {182 371 565 490} resizable labelsize 10
+    extra_code {\#include <stdio.h>} visible
+  } {
+    {fltk::Widget} {} {
+      label Fl_Slider
+      xywh {10 10 280 235} align 17 box ENGRAVED_BOX labelfont 1 color 49
+    }
+    {fltk::Slider} {} {
+      label VERTICAL
+      callback callback
+      xywh {25 49 20 157} align 1 color 10 selection_color 1 labelsize 8
+    }
+    {fltk::Slider} {} {
+      label {VERTICAL|TICK_LEFT}
+      callback callback
+      xywh {60 70 20 158} type TICK_ABOVE color 10 selection_color 1 labelsize 8
+    }
+    {fltk::Slider} {} {
+      label {VERTICAL|TICK_RIGHT}
+      callback callback
+      xywh {100 49 20 157} type TICK_BELOW align 1 color 10 selection_color 1 labelsize 8
+    }
+    {fltk::Slider} {} {
+      label HORIZONTAL
+      callback callback
+      xywh {140 54 130 16} color 10 selection_color 1 labelsize 8
+    }
+    {fltk::Slider} {} {
+      label {HORIZONTAL|TICK_ABOVE}
+      callback callback selected
+      xywh {140 81 130 22} type TICK_ABOVE color 10 selection_color 1 labelsize 8
+    }
+    {fltk::Slider} {} {
+      label {HORIZONTAL|TICK_ABOVE,box}
+      callback callback
+      xywh {140 119 130 22} type TICK_ABOVE box DOWN_BOX color 10 selection_color 1 labelsize 8
+    }
+    {fltk::Slider} {} {
+      label {HORIZONTAL|TICK_BELOW}
+      callback callback
+      xywh {140 157 130 22} type TICK_BELOW color 10 selection_color 1 labelsize 8
+    }
+    {fltk::Slider} {} {
+      label {HORIZONTAL|TICK_BOTH}
+      callback callback
+      xywh {140 201 130 22} type TICK_BOTH color 10 selection_color 1 labelsize 8
+    }
+    {fltk::Widget} {} {
+      label Fl_Value_Input
+      xywh {295 10 260 126} align 17 box ENGRAVED_BOX labelfont 1 color 49
+    }
+    {fltk::ValueInput} {} {
+      label {outside label}
+      callback callback
+      xywh {360 35 180 22} color 10 selection_color 1 labelsize 8
+    }
+    {fltk::ValueInput} {} {
+      label inside
+      callback callback
+      xywh {310 63 100 22} align 20 color 10 selection_color 1 labelsize 8
+    }
+    {fltk::ValueInput} {} {
+      label x
+      callback callback
+      xywh {410 63 65 22} align 20 color 10 selection_color 1 maximum 100 step 0.1
+    }
+    {fltk::ValueInput} {} {
+      label y
+      callback callback
+      xywh {475 63 65 22} align 20 color 10 selection_color 1 maximum 100 step 0.1
+    }
+    {fltk::ValueInput} {} {
+      label larger
+      callback callback
+      xywh {360 93 180 32} color 10 selection_color 1
+    }
+    {fltk::Widget} {} {
+      label Fl_Value_Slider
+      xywh {10 250 280 229} align 17 box ENGRAVED_BOX labelfont 1 color 49
+    }
+    {fltk::Widget} {} {
+      label {   Fl_Scrollbar}
+      xywh {295 141 145 131} align 21 box ENGRAVED_BOX labelfont 1 color 49
+    }
+    {fltk::Scrollbar} {} {
+      label HORIZONTAL
+      callback callback
+      xywh {300 240 105 20} color 10 selection_color 1 labelsize 8 maximum 100
+    }
+    {fltk::Scrollbar} {} {
+      label VERTICAL
+      callback callback
+      xywh {405 145 20 115} color 10 selection_color 1 labelsize 8 minimum 100 maximum 0
+    }
+    {fltk::ValueSlider} {} {
+      label VERTICAL
+      callback callback
+      xywh {25 277 30 158} align 1 color 10 selection_color 1 labelsize 8 textsize 10
+    }
+    {fltk::ValueSlider} {} {
+      label {VERTICAL|TICK_LEFT}
+      callback callback
+      xywh {65 310 30 152} type TICK_ABOVE color 10 selection_color 1 labelsize 8 textsize 10
+    }
+    {fltk::ValueSlider} {} {
+      label {VERTICAL|TICK_LEFT,box}
+      callback callback
+      xywh {105 283 35 158} type TICK_ABOVE align 1 box DOWN_BOX color 10 selection_color 1 labelsize 8 textsize 10
+    }
+    {fltk::ValueSlider} {} {
+      label HORIZONTAL
+      callback callback
+      xywh {145 294 130 21} color 10 selection_color 1 labelsize 8
+    }
+    {fltk::ValueSlider} {} {
+      label {HORIZONTAL|TICK_BELOW}
+      callback callback
+      xywh {145 337 130 22} type TICK_BELOW color 10 selection_color 1 labelsize 8
+    }
+    {fltk::ValueSlider} {} {
+      label {HORIZONTAL|TICK_BELOW,box}
+      callback callback
+      xywh {145 381 130 21} type TICK_BELOW box DOWN_BOX color 10 selection_color 1 labelsize 8
+    }
+    {fltk::ValueSlider} {} {
+      label {HORIZONTAL|TICK_BOTH}
+      callback callback
+      xywh {145 424 130 33} type TICK_BOTH color 10 selection_color 1 labelsize 8
+    }
+    {fltk::Widget} {} {
+      label Fl_Roller
+      xywh {295 277 145 136} align 17 box ENGRAVED_BOX labelfont 1 color 49
+    }
+    {fltk::ThumbWheel} {} {
+      label HORIZONTAL
+      callback callback
+      xywh {305 340 90 20} color 0xe6e7e600 selection_color 1 labelsize 8
+    }
+    {fltk::ThumbWheel} {} {
+      label VERTICAL
+      callback callback
+      xywh {405 299 20 103} color 0xe6e7e600 selection_color 1 labelsize 8
+    }
+    {fltk::Group} {} {
+      label Fl_Dial open
+      xywh {445 141 110 272} align 17 box ENGRAVED_BOX labelfont 1
+    } {
+      {fltk::Dial} {} {
+        label NORMAL
+        callback callback
+        xywh {23 24 63 65} color 10 selection_color 1 labelsize 8 value 0.5
+        extra_code {o->angles(0,315);}
+      }
+      {fltk::Dial} {} {
+        label LINE
+        callback callback
+        xywh {23 104 63 65} type LINE color 10 selection_color 1 labelsize 8 value 0.5
+      }
+      {fltk::Dial} {} {
+        label FILL
+        callback callback
+        xywh {23 184 63 65} type FILL color 10 selection_color 1 labelsize 8 value 0.75
+        extra_code {o->angles(0,360);}
+      }
+    }
+    {fltk::Widget} {} {
+      label {All widgets have color(green) and selection_color(red) to show the areas these colors affect.}
+      xywh {295 419 260 60} align 128 box ENGRAVED_BOX labelsize 10
+    }
+  }
+} 

Added: branches/branch-3.0-2011/test2/valuators.h
===================================================================
--- branches/branch-3.0-2011/test2/valuators.h	                        (rev 0)
+++ branches/branch-3.0-2011/test2/valuators.h	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,21 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#ifndef valuators_h
+#define valuators_h
+#include <fltk/Window.h>
+#include <stdio.h>
+#include <fltk/Widget.h>
+#include <fltk/Slider.h>
+extern void callback(fltk::Slider*, void*);
+#include <fltk/ValueInput.h>
+extern void callback(fltk::ValueInput*, void*);
+#include <fltk/Scrollbar.h>
+extern void callback(fltk::Scrollbar*, void*);
+#include <fltk/ValueSlider.h>
+extern void callback(fltk::ValueSlider*, void*);
+#include <fltk/ThumbWheel.h>
+extern void callback(fltk::ThumbWheel*, void*);
+#include <fltk/Group.h>
+#include <fltk/Dial.h>
+extern void callback(fltk::Dial*, void*);
+#endif

Added: branches/branch-3.0-2011/test2/white_1.xbm
===================================================================
--- branches/branch-3.0-2011/test2/white_1.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/white_1.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#define white_1_width 56
+#define white_1_height 56
+static unsigned char white_1_bits[] = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x05, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x05, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x01, 
+0x80, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x00, 
+0x00, 0x01, 0x00, 0x00, 0x40, 0x55, 0x00, 
+0x00, 0x02, 0x00, 0x00, 0xa8, 0x2a, 0x00, 
+0x00, 0x14, 0x00, 0x00, 0x54, 0x15, 0x00, 
+0x00, 0x28, 0x00, 0x80, 0xaa, 0x0a, 0x00, 
+0x00, 0x50, 0x05, 0x54, 0x55, 0x05, 0x00, 
+0x00, 0xa0, 0xaa, 0xaa, 0xaa, 0x02, 0x00, 
+0x00, 0x40, 0x55, 0x55, 0x55, 0x01, 0x00, 
+0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 
+0x00, 0x00, 0x50, 0x55, 0x15, 0x00, 0x00, 
+0x00, 0x00, 0x80, 0xaa, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+};

Added: branches/branch-3.0-2011/test2/white_2.xbm
===================================================================
--- branches/branch-3.0-2011/test2/white_2.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/white_2.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#define white_2_width 56
+#define white_2_height 56
+static unsigned char white_2_bits[] = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 
+0x00, 0x00, 0x04, 0x90, 0x04, 0x00, 0x00, 
+0x00, 0x20, 0x01, 0x40, 0x12, 0x00, 0x00, 
+0x00, 0x48, 0xfc, 0x0f, 0x09, 0x00, 0x00, 
+0x00, 0x10, 0x07, 0x30, 0x04, 0x00, 0x00, 
+0x40, 0xc2, 0x00, 0xc0, 0x10, 0x00, 0x00, 
+0x80, 0x24, 0x00, 0x00, 0x09, 0x00, 0x00, 
+0x20, 0x11, 0x00, 0x00, 0x42, 0x00, 0x00, 
+0x40, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 
+0x90, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 
+0x20, 0x02, 0x00, 0x00, 0x40, 0x04, 0x00, 
+0x48, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x10, 0x01, 0x00, 0x00, 0x80, 0x08, 0x00, 
+0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 
+0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 
+0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 
+0x84, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 
+0xa0, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 
+0x00, 0x01, 0x00, 0x54, 0x01, 0x01, 0x00, 
+0x44, 0x01, 0x00, 0xaa, 0x00, 0x02, 0x00, 
+0x00, 0x02, 0x40, 0x55, 0x80, 0x04, 0x00, 
+0x88, 0x02, 0xa0, 0x0a, 0x00, 0x01, 0x00, 
+0x40, 0x04, 0x50, 0x05, 0x40, 0x02, 0x00, 
+0x00, 0x09, 0xa0, 0x00, 0x80, 0x00, 0x00, 
+0x80, 0x00, 0x50, 0x00, 0x20, 0x01, 0x00, 
+0x00, 0x04, 0x08, 0x00, 0x48, 0x00, 0x00, 
+0x00, 0x02, 0x00, 0x00, 0x90, 0x00, 0x00, 
+0x00, 0x08, 0x00, 0x00, 0x02, 0x00, 0x00, 
+0x00, 0x24, 0x00, 0x80, 0x04, 0x00, 0x00, 
+0x00, 0x92, 0x00, 0x20, 0x01, 0x00, 0x00, 
+0x00, 0x48, 0x02, 0x08, 0x00, 0x00, 0x00, 
+0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+};

Added: branches/branch-3.0-2011/test2/white_3.xbm
===================================================================
--- branches/branch-3.0-2011/test2/white_3.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/white_3.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#define white_3_width 56
+#define white_3_height 56
+static unsigned char white_3_bits[] = {
+0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 
+0x00, 0x40, 0x40, 0x81, 0x00, 0x00, 0x00, 
+0x00, 0x18, 0x40, 0x09, 0x00, 0x00, 0x00, 
+0x00, 0x06, 0x52, 0x09, 0x00, 0x00, 0x00, 
+0x00, 0x91, 0x52, 0x05, 0x00, 0x00, 0x00, 
+0x80, 0x94, 0x50, 0x05, 0x00, 0x00, 0x00, 
+0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x10, 0x01, 0x50, 0x05, 0x60, 0x00, 0x00, 
+0x08, 0x00, 0xaa, 0x2a, 0x00, 0x00, 0x00, 
+0x08, 0x40, 0x55, 0x55, 0x80, 0x01, 0x00, 
+0x04, 0xa0, 0xaa, 0xa0, 0x00, 0x00, 0x00, 
+0x04, 0x50, 0x55, 0x55, 0x05, 0x03, 0x00, 
+0x02, 0xa8, 0x0a, 0xa0, 0x0a, 0x00, 0x00, 
+0x02, 0x54, 0x55, 0x55, 0x15, 0x00, 0x00, 
+0x00, 0xa8, 0x00, 0x80, 0x1a, 0x03, 0x00, 
+0x00, 0x54, 0x55, 0x55, 0x35, 0x00, 0x00, 
+0x00, 0x0a, 0x00, 0x80, 0x2a, 0x06, 0x00, 
+0x0d, 0x45, 0x55, 0x55, 0x55, 0x00, 0x00, 
+0x31, 0x0a, 0x00, 0x00, 0x6a, 0x00, 0x00, 
+0x00, 0x05, 0x55, 0x55, 0x55, 0x07, 0x00, 
+0x3e, 0x02, 0x00, 0x00, 0x6a, 0x00, 0x00, 
+0x00, 0x05, 0x55, 0x55, 0x55, 0x1f, 0x00, 
+0x3e, 0x0a, 0x00, 0x00, 0x68, 0x00, 0x00, 
+0x00, 0x15, 0x54, 0x55, 0x55, 0x1f, 0x00, 
+0x38, 0x0a, 0x00, 0x00, 0x69, 0x00, 0x00, 
+0x01, 0x15, 0x54, 0x95, 0x56, 0x03, 0x00, 
+0x01, 0x2a, 0x00, 0x50, 0x69, 0x0c, 0x00, 
+0x18, 0x54, 0x50, 0xa9, 0x34, 0x00, 0x00, 
+0x00, 0x2a, 0x00, 0x55, 0x2b, 0x00, 0x00, 
+0x30, 0x54, 0x90, 0x2a, 0x15, 0x00, 0x00, 
+0x02, 0xa8, 0x40, 0xb5, 0x1a, 0x00, 0x00, 
+0x00, 0x50, 0xa1, 0x52, 0x0d, 0x00, 0x00, 
+0x30, 0xa0, 0x50, 0xab, 0x06, 0x00, 0x00, 
+0x00, 0x50, 0x29, 0x55, 0x03, 0x00, 0x00, 
+0x60, 0xa0, 0xb2, 0xaa, 0x01, 0x00, 0x00, 
+0x00, 0xc0, 0x55, 0xd5, 0x00, 0x00, 0x00, 
+0x80, 0x01, 0xab, 0x3a, 0x20, 0x00, 0x00, 
+0x00, 0x00, 0xfc, 0x0f, 0x20, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 
+0x00, 0x00, 0xa8, 0x42, 0x0a, 0x00, 0x00, 
+0x00, 0x00, 0xa8, 0x52, 0x02, 0x00, 0x00, 
+0x00, 0x00, 0xa4, 0x12, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+};

Added: branches/branch-3.0-2011/test2/white_4.xbm
===================================================================
--- branches/branch-3.0-2011/test2/white_4.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/white_4.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#define white_4_width 56
+#define white_4_height 56
+static unsigned char white_4_bits[] = {
+0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 
+0x00, 0x80, 0xbf, 0x7e, 0x00, 0x00, 0x00, 
+0x00, 0xe0, 0xb6, 0xf6, 0x01, 0x00, 0x00, 
+0x00, 0xb8, 0xad, 0xb6, 0x07, 0x00, 0x00, 
+0x00, 0x6e, 0xad, 0xda, 0x1e, 0x00, 0x00, 
+0x00, 0x6b, 0xab, 0x6a, 0x3b, 0x00, 0x00, 
+0x80, 0xdb, 0xfe, 0xbf, 0x6d, 0x00, 0x00, 
+0xc0, 0xb6, 0x03, 0xf0, 0xf6, 0x00, 0x00, 
+0xe0, 0xee, 0xa8, 0xca, 0x9b, 0x01, 0x00, 
+0xb0, 0x3d, 0x55, 0x15, 0xef, 0x03, 0x00, 
+0x70, 0x9b, 0xaa, 0xaa, 0x76, 0x02, 0x00, 
+0xd8, 0x4e, 0x55, 0x5f, 0xbd, 0x07, 0x00, 
+0xb8, 0xa7, 0xaa, 0xaa, 0xda, 0x04, 0x00, 
+0x6c, 0x53, 0xf5, 0x5f, 0x75, 0x0f, 0x00, 
+0xdc, 0xa9, 0xaa, 0xaa, 0xaa, 0x0b, 0x00, 
+0xb6, 0x55, 0xff, 0x7f, 0xe5, 0x1c, 0x00, 
+0xee, 0xaa, 0xaa, 0xaa, 0x4a, 0x17, 0x00, 
+0xde, 0xf4, 0xff, 0x7f, 0xd5, 0x19, 0x00, 
+0x72, 0xba, 0xaa, 0xaa, 0xaa, 0x1e, 0x00, 
+0x4e, 0xf5, 0xff, 0xff, 0x95, 0x17, 0x00, 
+0x7f, 0xfa, 0xaa, 0xaa, 0xaa, 0x38, 0x00, 
+0x41, 0xfd, 0xff, 0xff, 0x95, 0x3f, 0x00, 
+0x7f, 0xfa, 0xaa, 0xaa, 0xaa, 0x20, 0x00, 
+0x41, 0xf5, 0xff, 0xff, 0x97, 0x3f, 0x00, 
+0x7f, 0xea, 0xab, 0xaa, 0xaa, 0x20, 0x00, 
+0x47, 0xf5, 0xff, 0xff, 0x94, 0x3f, 0x00, 
+0x7a, 0xea, 0xab, 0x2a, 0xa8, 0x1c, 0x00, 
+0x5e, 0xd5, 0xff, 0x0f, 0x94, 0x13, 0x00, 
+0xe6, 0xaa, 0xaf, 0x02, 0xca, 0x1e, 0x00, 
+0xba, 0xd4, 0xff, 0x00, 0xd4, 0x1d, 0x00, 
+0xce, 0xa9, 0x2f, 0x80, 0x6a, 0x1b, 0x00, 
+0x74, 0x55, 0x1f, 0x40, 0xe5, 0x0e, 0x00, 
+0xbc, 0xab, 0x0e, 0xa8, 0xb2, 0x0d, 0x00, 
+0xc8, 0x56, 0x0f, 0x54, 0x79, 0x07, 0x00, 
+0x78, 0xaf, 0x86, 0xaa, 0xdc, 0x06, 0x00, 
+0x90, 0x5b, 0x45, 0x55, 0xb6, 0x03, 0x00, 
+0xf0, 0x3d, 0xaa, 0x2a, 0x6f, 0x03, 0x00, 
+0x60, 0xf6, 0x54, 0xc5, 0xdd, 0x01, 0x00, 
+0xc0, 0xdb, 0x03, 0x70, 0xdb, 0x00, 0x00, 
+0x80, 0x6d, 0xff, 0xdf, 0x76, 0x00, 0x00, 
+0x00, 0xb7, 0x55, 0xb5, 0x35, 0x00, 0x00, 
+0x00, 0xde, 0x56, 0xad, 0x1d, 0x00, 0x00, 
+0x00, 0x78, 0x5b, 0x6d, 0x07, 0x00, 0x00, 
+0x00, 0xe0, 0x5b, 0xdb, 0x01, 0x00, 0x00, 
+0x00, 0x80, 0x5f, 0x7f, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+};

Added: branches/branch-3.0-2011/test2/whiteking_1.xbm
===================================================================
--- branches/branch-3.0-2011/test2/whiteking_1.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/whiteking_1.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#define whiteking_1_width 56
+#define whiteking_1_height 56
+static unsigned char whiteking_1_bits[] = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x15, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0a, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x15, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2a, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2a, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x2a, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 
+0x80, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 
+0x00, 0x01, 0x00, 0x00, 0x40, 0x55, 0x55, 
+0x00, 0x02, 0x00, 0x00, 0xa8, 0xaa, 0x2a, 
+0x00, 0x14, 0x00, 0x00, 0x54, 0x55, 0x15, 
+0x00, 0x28, 0x00, 0x80, 0xaa, 0xaa, 0x2a, 
+0x00, 0x50, 0x05, 0x54, 0x55, 0x55, 0x15, 
+0x00, 0xa0, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 
+0x00, 0x40, 0x55, 0x55, 0x55, 0x55, 0x05, 
+0x00, 0x80, 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 
+0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x01, 
+0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 
+0x00, 0x00, 0x54, 0x55, 0x55, 0x55, 0x00, 
+0x00, 0x00, 0xa8, 0xaa, 0xaa, 0x2a, 0x00, 
+0x00, 0x00, 0x40, 0x55, 0x55, 0x15, 0x00, 
+0x00, 0x00, 0x00, 0xaa, 0xaa, 0x02, 0x00, 
+0x00, 0x00, 0x00, 0x50, 0x15, 0x00, 0x00, 
+};

Added: branches/branch-3.0-2011/test2/whiteking_2.xbm
===================================================================
--- branches/branch-3.0-2011/test2/whiteking_2.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/whiteking_2.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#define whiteking_2_width 56
+#define whiteking_2_height 56
+static unsigned char whiteking_2_bits[] = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 
+0x00, 0x00, 0x04, 0x90, 0x04, 0x00, 0x00, 
+0x00, 0x20, 0x01, 0x40, 0x12, 0x00, 0x00, 
+0x00, 0x48, 0xfc, 0x0f, 0x09, 0x00, 0x00, 
+0x00, 0x10, 0x07, 0x30, 0x04, 0x00, 0x00, 
+0x40, 0xc2, 0x00, 0xc0, 0x10, 0x00, 0x00, 
+0x80, 0x24, 0x00, 0x00, 0x09, 0x00, 0x00, 
+0x20, 0x11, 0x00, 0x00, 0x42, 0x00, 0x00, 
+0x40, 0x08, 0x80, 0x00, 0x20, 0x00, 0x00, 
+0x90, 0x04, 0xc4, 0x10, 0x80, 0x00, 0x00, 
+0x20, 0x02, 0x06, 0x18, 0x40, 0x04, 0x00, 
+0x48, 0x42, 0x00, 0x00, 0x01, 0x00, 0x00, 
+0x10, 0x61, 0x00, 0x88, 0x81, 0x08, 0x00, 
+0x20, 0x01, 0x10, 0x10, 0x00, 0x00, 0x00, 
+0x80, 0x00, 0x20, 0x08, 0x00, 0x01, 0x00, 
+0x80, 0x40, 0x40, 0x10, 0x04, 0x08, 0x00, 
+0x80, 0x80, 0x00, 0x20, 0x02, 0x00, 0x00, 
+0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 
+0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 
+0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 
+0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 
+0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 
+0x84, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 
+0xa0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 
+0x00, 0x01, 0x00, 0x80, 0x00, 0x01, 0x00, 
+0x44, 0x01, 0x00, 0x40, 0x01, 0x02, 0x00, 
+0x00, 0x02, 0xaa, 0xaa, 0x80, 0x04, 0x00, 
+0x88, 0x02, 0x54, 0x55, 0x00, 0x01, 0x00, 
+0x40, 0x04, 0xaa, 0x2a, 0x40, 0x02, 0x00, 
+0x00, 0x09, 0x54, 0x15, 0x80, 0x00, 0x00, 
+0x80, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 
+0x00, 0x04, 0x00, 0x00, 0x48, 0x00, 0x00, 
+0x00, 0x02, 0x00, 0x00, 0x90, 0x00, 0x00, 
+0x00, 0x08, 0x00, 0x00, 0x02, 0x00, 0x00, 
+0x00, 0x24, 0x00, 0x80, 0x04, 0x00, 0x00, 
+0x00, 0x92, 0x00, 0x20, 0x01, 0x00, 0x00, 
+0x00, 0x48, 0x02, 0x08, 0x00, 0x00, 0x00, 
+0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+};

Added: branches/branch-3.0-2011/test2/whiteking_3.xbm
===================================================================
--- branches/branch-3.0-2011/test2/whiteking_3.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/whiteking_3.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#define whiteking_3_width 56
+#define whiteking_3_height 56
+static unsigned char whiteking_3_bits[] = {
+0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, 
+0x00, 0x40, 0x40, 0x81, 0x00, 0x00, 0x00, 
+0x00, 0x18, 0x40, 0x09, 0x00, 0x00, 0x00, 
+0x00, 0x06, 0x52, 0x09, 0x00, 0x00, 0x00, 
+0x00, 0x91, 0x52, 0x05, 0x00, 0x00, 0x00, 
+0x80, 0x94, 0x50, 0x05, 0x00, 0x00, 0x00, 
+0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x10, 0x01, 0x50, 0x05, 0x60, 0x00, 0x00, 
+0x08, 0x00, 0xaa, 0x2a, 0x00, 0x00, 0x00, 
+0x08, 0x40, 0x55, 0x55, 0x80, 0x01, 0x00, 
+0x04, 0xa0, 0x0a, 0xaa, 0x00, 0x00, 0x00, 
+0x04, 0x50, 0x10, 0x41, 0x05, 0x03, 0x00, 
+0x02, 0xa8, 0x08, 0xa2, 0x0a, 0x00, 0x00, 
+0x02, 0x04, 0x50, 0x01, 0x14, 0x00, 0x00, 
+0x00, 0x88, 0xaa, 0x2a, 0x1a, 0x03, 0x00, 
+0x00, 0x04, 0x59, 0x11, 0x34, 0x00, 0x00, 
+0x01, 0xaa, 0xa8, 0xa8, 0x2a, 0x06, 0x00, 
+0x0d, 0x55, 0x51, 0x54, 0x55, 0x00, 0x00, 
+0x31, 0xa2, 0x28, 0x2a, 0x6a, 0x00, 0x00, 
+0x00, 0x45, 0x54, 0x15, 0x55, 0x07, 0x00, 
+0x3e, 0xa2, 0xa8, 0xaa, 0x6b, 0x00, 0x00, 
+0x00, 0x45, 0x55, 0x55, 0x55, 0x1f, 0x00, 
+0x3e, 0x8a, 0xaa, 0xaa, 0x6a, 0x00, 0x00, 
+0x00, 0x45, 0x55, 0xd5, 0x55, 0x1f, 0x00, 
+0x38, 0x8a, 0xaa, 0xaa, 0x6a, 0x00, 0x00, 
+0x01, 0x15, 0x55, 0x55, 0x55, 0x03, 0x00, 
+0x01, 0x2a, 0xaa, 0xea, 0x6a, 0x0c, 0x00, 
+0x19, 0x14, 0x54, 0x55, 0x35, 0x00, 0x00, 
+0x00, 0x2a, 0xaa, 0xaa, 0x2a, 0x00, 0x00, 
+0x30, 0x54, 0x54, 0x55, 0x15, 0x00, 0x00, 
+0x02, 0xa8, 0xaa, 0xaa, 0x1a, 0x00, 0x00, 
+0x00, 0x50, 0x55, 0xd5, 0x0d, 0x00, 0x00, 
+0x30, 0xa0, 0xaa, 0xea, 0x06, 0x00, 0x00, 
+0x00, 0x50, 0x55, 0x55, 0x03, 0x00, 0x00, 
+0x60, 0xa0, 0xaa, 0xaa, 0x01, 0x00, 0x00, 
+0x00, 0xc0, 0x55, 0xd5, 0x00, 0x00, 0x00, 
+0x80, 0x01, 0xab, 0x3a, 0x20, 0x00, 0x00, 
+0x00, 0x00, 0xfc, 0x0f, 0x20, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 
+0x00, 0x00, 0xa8, 0x42, 0x0a, 0x00, 0x00, 
+0x00, 0x00, 0xa8, 0x52, 0x02, 0x00, 0x00, 
+0x00, 0x00, 0xa4, 0x12, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+};

Added: branches/branch-3.0-2011/test2/whiteking_4.xbm
===================================================================
--- branches/branch-3.0-2011/test2/whiteking_4.xbm	                        (rev 0)
+++ branches/branch-3.0-2011/test2/whiteking_4.xbm	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,60 @@
+#define whiteking_4_width 56
+#define whiteking_4_height 56
+static unsigned char whiteking_4_bits[] = {
+0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 
+0x00, 0x80, 0xbf, 0x7e, 0x00, 0x00, 0x00, 
+0x00, 0xe0, 0xb6, 0xf6, 0x01, 0x00, 0x00, 
+0x00, 0xb8, 0xad, 0xb6, 0x07, 0x00, 0x00, 
+0x00, 0x6e, 0xad, 0xda, 0x1e, 0x00, 0x00, 
+0x00, 0x6b, 0xab, 0x6a, 0x3b, 0x00, 0x00, 
+0x80, 0xdb, 0xfe, 0xbf, 0x6d, 0x00, 0x00, 
+0xc0, 0xb6, 0x03, 0xf0, 0xf6, 0x00, 0x00, 
+0xe0, 0xee, 0xa8, 0xca, 0x9b, 0x01, 0x00, 
+0xb0, 0x3d, 0x55, 0x15, 0xef, 0x03, 0x00, 
+0x70, 0x9b, 0xaa, 0xaa, 0x76, 0x02, 0x00, 
+0xd8, 0x4e, 0xf5, 0x55, 0xbd, 0x07, 0x00, 
+0xb8, 0xa7, 0x6f, 0xbe, 0xda, 0x04, 0x00, 
+0x6c, 0x53, 0x33, 0x4d, 0x75, 0x0f, 0x00, 
+0xdc, 0xf9, 0xa9, 0xe6, 0xab, 0x0b, 0x00, 
+0xb6, 0x35, 0x55, 0xd5, 0xe4, 0x1c, 0x00, 
+0xee, 0x9a, 0xa6, 0x66, 0x4a, 0x17, 0x00, 
+0xde, 0x54, 0x47, 0x47, 0xd5, 0x19, 0x00, 
+0x72, 0xaa, 0x8e, 0xa3, 0xaa, 0x1e, 0x00, 
+0x4e, 0x1d, 0x97, 0xc5, 0x91, 0x17, 0x00, 
+0x7f, 0x3a, 0xab, 0xca, 0xa8, 0x38, 0x00, 
+0x41, 0x5d, 0x57, 0x55, 0x90, 0x3f, 0x00, 
+0x7f, 0xba, 0xaa, 0xaa, 0xa8, 0x20, 0x00, 
+0x41, 0x75, 0x55, 0x55, 0x94, 0x3f, 0x00, 
+0x7f, 0xba, 0xaa, 0x2a, 0xa8, 0x20, 0x00, 
+0x47, 0x75, 0x55, 0x55, 0x94, 0x3f, 0x00, 
+0x7a, 0xea, 0xaa, 0x2a, 0xaa, 0x1c, 0x00, 
+0x5e, 0xd5, 0x55, 0x15, 0x94, 0x13, 0x00, 
+0xe6, 0xea, 0xab, 0x2a, 0xca, 0x1e, 0x00, 
+0xba, 0xd4, 0x55, 0x15, 0xd4, 0x1d, 0x00, 
+0xce, 0xa9, 0x01, 0x00, 0x6a, 0x1b, 0x00, 
+0x74, 0x55, 0x01, 0x00, 0xe5, 0x0e, 0x00, 
+0xbc, 0xab, 0x00, 0x00, 0xb2, 0x0d, 0x00, 
+0xc8, 0x56, 0x01, 0x00, 0x79, 0x07, 0x00, 
+0x78, 0xaf, 0xaa, 0xaa, 0xdc, 0x06, 0x00, 
+0x90, 0x5b, 0x55, 0x55, 0xb6, 0x03, 0x00, 
+0xf0, 0x3d, 0xaa, 0x2a, 0x6f, 0x03, 0x00, 
+0x60, 0xf6, 0x54, 0xc5, 0xdd, 0x01, 0x00, 
+0xc0, 0xdb, 0x03, 0x70, 0xdb, 0x00, 0x00, 
+0x80, 0x6d, 0xff, 0xdf, 0x76, 0x00, 0x00, 
+0x00, 0xb7, 0x55, 0xb5, 0x35, 0x00, 0x00, 
+0x00, 0xde, 0x56, 0xad, 0x1d, 0x00, 0x00, 
+0x00, 0x78, 0x5b, 0x6d, 0x07, 0x00, 0x00, 
+0x00, 0xe0, 0x5b, 0xdb, 0x01, 0x00, 0x00, 
+0x00, 0x80, 0x5f, 0x7f, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+};

Added: branches/branch-3.0-2011/test2/wizard.cxx
===================================================================
--- branches/branch-3.0-2011/test2/wizard.cxx	                        (rev 0)
+++ branches/branch-3.0-2011/test2/wizard.cxx	2011-01-09 14:38:38 UTC (rev 8227)
@@ -0,0 +1,79 @@
+//
+// "$Id: Wizard.cxx 4288 2005-04-16 00:13:17Z mike $"
+//
+// Wizard demo inspired from Greg Ercolano cheat page
+//
+// Copyright 1997-2005 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 on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+//
+
+#include <stdlib.h>
+#include <fltk/run.h>
+#include <fltk/Window.h>
+#include <fltk/Group.h>
+#include <fltk/Button.h>
+#include <fltk/WizardGroup.h>
+
+using namespace fltk;
+
+// Simple 'wizard' using fltk's new Wizard widget
+
+Window *G_win;
+WizardGroup *G_wiz;
+
+void done_cb(Widget*, void*) { G_win->hide(); }
+void back_cb(Widget*, void*) { G_wiz->prev(); }
+void next_cb(Widget*, void*) { G_wiz->next(); }
+
+const int WIDTH  = 140;
+const int HEIGHT = 180;
+
+void add_group(const char * text, Color c, bool first, bool last) {
+  Group  *g = new Group(0,0,WIDTH,HEIGHT);
+  g->begin();
+  if (!first) (new Button(20,25,WIDTH-40,25,"<< Back"))->callback(back_cb);
+  if (!last)  (new Button(20,55,WIDTH-40,25,"Next >>"))->callback(next_cb);
+  else        (new Button(20,55,WIDTH-40,25,"Finish"))->callback(done_cb);
+  Widget *out = new Widget(10,100,WIDTH-20,HEIGHT-100-10);
+  out->color(c); out->label(text);
+  g->end();
+}
+
+int main(int argc, char **argv) {
+  G_win = new Window(WIDTH,HEIGHT);
+  G_win->begin();
+  G_wiz = new WizardGroup(0,0,WIDTH, HEIGHT);
+  G_wiz->begin();
+  add_group("This is the\nFirst\npage", fltk::RED,true, false ); // Wizard: page 1
+  add_group("This is the\nSecond\npage", fltk::YELLOW, false, false); // Wizard: page 2
+  add_group("This is the\nLast\npage", fltk::GREEN, false, true); // Wizard: page 3
+  G_wiz->end();
+  G_win->end();
+  
+  G_win->show(argc, argv);
+  
+  return fltk::run();
+}
+
+//
+// End of "$Id"
+//

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'.