|
Author: matt
Date: 2010-03-30 12:10:49 -0700 (Tue, 30 Mar 2010)
New Revision: 7368
Log:
Another huge one: moved headers to fltk3, add fltk2 headers in fltk
Added:
branches/branch-3.0/fltk/
branches/branch-3.0/fltk/Adjuster.h
branches/branch-3.0/fltk/AlignGroup.h
branches/branch-3.0/fltk/AnsiWidget.h
branches/branch-3.0/fltk/BarGroup.h
branches/branch-3.0/fltk/Box.h
branches/branch-3.0/fltk/Browser.h
branches/branch-3.0/fltk/Button.h
branches/branch-3.0/fltk/CheckButton.h
branches/branch-3.0/fltk/Choice.h
branches/branch-3.0/fltk/Clock.h
branches/branch-3.0/fltk/Color.h
branches/branch-3.0/fltk/ColorChooser.h
branches/branch-3.0/fltk/ComboBox.h
branches/branch-3.0/fltk/Cursor.h
branches/branch-3.0/fltk/CycleButton.h
branches/branch-3.0/fltk/Dial.h
branches/branch-3.0/fltk/Divider.h
branches/branch-3.0/fltk/DoubleBufferWindow.h
branches/branch-3.0/fltk/FL_API.h
branches/branch-3.0/fltk/FL_VERSION.h
branches/branch-3.0/fltk/FileBrowser.h
branches/branch-3.0/fltk/FileChooser.h
branches/branch-3.0/fltk/FileIcon.h
branches/branch-3.0/fltk/FileInput.h
branches/branch-3.0/fltk/FillDial.h
branches/branch-3.0/fltk/FillSlider.h
branches/branch-3.0/fltk/Flags.h
branches/branch-3.0/fltk/FloatInput.h
branches/branch-3.0/fltk/Font.h
branches/branch-3.0/fltk/GlWindow.h
branches/branch-3.0/fltk/Group.h
branches/branch-3.0/fltk/HelpDialog.h
branches/branch-3.0/fltk/HelpView.h
branches/branch-3.0/fltk/HighlightButton.h
branches/branch-3.0/fltk/Image.h
branches/branch-3.0/fltk/Input.h
branches/branch-3.0/fltk/InputBrowser.h
branches/branch-3.0/fltk/IntInput.h
branches/branch-3.0/fltk/InvisibleBox.h
branches/branch-3.0/fltk/Item.h
branches/branch-3.0/fltk/ItemGroup.h
branches/branch-3.0/fltk/LabelType.h
branches/branch-3.0/fltk/LightButton.h
branches/branch-3.0/fltk/LineDial.h
branches/branch-3.0/fltk/Menu.h
branches/branch-3.0/fltk/MenuBar.h
branches/branch-3.0/fltk/MenuBuild.h
branches/branch-3.0/fltk/MenuWindow.h
branches/branch-3.0/fltk/Monitor.h
branches/branch-3.0/fltk/MultiBrowser.h
branches/branch-3.0/fltk/MultiImage.h
branches/branch-3.0/fltk/MultiLineInput.h
branches/branch-3.0/fltk/MultiLineOutput.h
branches/branch-3.0/fltk/NumericInput.h
branches/branch-3.0/fltk/Output.h
branches/branch-3.0/fltk/PackedGroup.h
branches/branch-3.0/fltk/PixelType.h
branches/branch-3.0/fltk/PopupMenu.h
branches/branch-3.0/fltk/Preferences.h
branches/branch-3.0/fltk/ProgressBar.h
branches/branch-3.0/fltk/README
branches/branch-3.0/fltk/RadioButton.h
branches/branch-3.0/fltk/RadioItem.h
branches/branch-3.0/fltk/RadioLightButton.h
branches/branch-3.0/fltk/Rectangle.h
branches/branch-3.0/fltk/RepeatButton.h
branches/branch-3.0/fltk/ReturnButton.h
branches/branch-3.0/fltk/ScrollGroup.h
branches/branch-3.0/fltk/Scrollbar.h
branches/branch-3.0/fltk/SecretInput.h
branches/branch-3.0/fltk/ShapedWindow.h
branches/branch-3.0/fltk/SharedImage.h
branches/branch-3.0/fltk/Slider.h
branches/branch-3.0/fltk/StatusBarGroup.h
branches/branch-3.0/fltk/StringList.h
branches/branch-3.0/fltk/Style.h
branches/branch-3.0/fltk/StyleSet.h
branches/branch-3.0/fltk/Symbol.h
branches/branch-3.0/fltk/SystemMenuBar.h
branches/branch-3.0/fltk/TabGroup.h
branches/branch-3.0/fltk/TextBuffer.h
branches/branch-3.0/fltk/TextDisplay.h
branches/branch-3.0/fltk/TextEditor.h
branches/branch-3.0/fltk/Threads.h
branches/branch-3.0/fltk/ThumbWheel.h
branches/branch-3.0/fltk/TiledGroup.h
branches/branch-3.0/fltk/TiledImage.h
branches/branch-3.0/fltk/ToggleButton.h
branches/branch-3.0/fltk/ToggleItem.h
branches/branch-3.0/fltk/Tooltip.h
branches/branch-3.0/fltk/Valuator.h
branches/branch-3.0/fltk/ValueInput.h
branches/branch-3.0/fltk/ValueOutput.h
branches/branch-3.0/fltk/ValueSlider.h
branches/branch-3.0/fltk/Widget.h
branches/branch-3.0/fltk/WidgetAssociation.h
branches/branch-3.0/fltk/Window.h
branches/branch-3.0/fltk/WizardGroup.h
branches/branch-3.0/fltk/WordwrapInput.h
branches/branch-3.0/fltk/WordwrapOutput.h
branches/branch-3.0/fltk/ask.h
branches/branch-3.0/fltk/damage.h
branches/branch-3.0/fltk/dirent.h
branches/branch-3.0/fltk/draw.h
branches/branch-3.0/fltk/error.h
branches/branch-3.0/fltk/events.h
branches/branch-3.0/fltk/file_chooser.h
branches/branch-3.0/fltk/filename.h
branches/branch-3.0/fltk/fltk_cairo.h
branches/branch-3.0/fltk/forms.h
branches/branch-3.0/fltk/gl.h
branches/branch-3.0/fltk/gl2opengl.h
branches/branch-3.0/fltk/glut.h
branches/branch-3.0/fltk/layout.h
branches/branch-3.0/fltk/load_plugin.h
branches/branch-3.0/fltk/mac.r
branches/branch-3.0/fltk/math.h
branches/branch-3.0/fltk/osx.h
branches/branch-3.0/fltk/pnmImage.h
branches/branch-3.0/fltk/rgbImage.h
branches/branch-3.0/fltk/run.h
branches/branch-3.0/fltk/show_colormap.h
branches/branch-3.0/fltk/string.h
branches/branch-3.0/fltk/string.h.in
branches/branch-3.0/fltk/utf.h
branches/branch-3.0/fltk/visual.h
branches/branch-3.0/fltk/win32.h
branches/branch-3.0/fltk/x.h
branches/branch-3.0/fltk/x11.h
branches/branch-3.0/fltk/xbmImage.h
branches/branch-3.0/fltk/xpmImage.h
branches/branch-3.0/fltk3/Group.h
branches/branch-3.0/fltk3/Widget.h
branches/branch-3.0/fltk3/Window.h
branches/branch-3.0/fltk3/run.h
branches/branch-3.0/test/hello1.cxx
branches/branch-3.0/test/hello2.cxx
Removed:
branches/branch-3.0/fltk3/Fl.H
branches/branch-3.0/fltk3/Fl_Group.H
branches/branch-3.0/fltk3/Fl_Widget.H
branches/branch-3.0/fltk3/Fl_Window.H
Modified:
branches/branch-3.0/FL/Fl_File_Input.H
branches/branch-3.0/FL/Fl_Native_File_Chooser.H
branches/branch-3.0/FL/Fl_Native_File_Chooser_FLTK.H
branches/branch-3.0/FL/Fl_PSfile_Device.H
branches/branch-3.0/FL/Fl_Tree_Item_Array.H
branches/branch-3.0/FL/Fl_Tree_Prefs.H
branches/branch-3.0/FL/filename.H
branches/branch-3.0/FL/fl_utf8.h
branches/branch-3.0/FL/gl2opengl.h
branches/branch-3.0/FL/math.h
branches/branch-3.0/fltk3/Fl_Box.H
branches/branch-3.0/fltk3/Fl_Browser_.H
branches/branch-3.0/fltk3/Fl_Button.H
branches/branch-3.0/fltk3/Fl_Cairo_Window.H
branches/branch-3.0/fltk3/Fl_Chart.H
branches/branch-3.0/fltk3/Fl_Check_Browser.H
branches/branch-3.0/fltk3/Fl_Clock.H
branches/branch-3.0/fltk3/Fl_Color_Chooser.H
branches/branch-3.0/fltk3/Fl_Double_Window.H
branches/branch-3.0/fltk3/Fl_File_Chooser.H
branches/branch-3.0/fltk3/Fl_File_Icon.H
branches/branch-3.0/fltk3/Fl_Free.H
branches/branch-3.0/fltk3/Fl_Gl_Window.H
branches/branch-3.0/fltk3/Fl_Help_Dialog.H
branches/branch-3.0/fltk3/Fl_Help_View.H
branches/branch-3.0/fltk3/Fl_Input_.H
branches/branch-3.0/fltk3/Fl_Input_Choice.H
branches/branch-3.0/fltk3/Fl_Menu_.H
branches/branch-3.0/fltk3/Fl_Menu_Item.H
branches/branch-3.0/fltk3/Fl_Object.H
branches/branch-3.0/fltk3/Fl_Pack.H
branches/branch-3.0/fltk3/Fl_Positioner.H
branches/branch-3.0/fltk3/Fl_Progress.H
branches/branch-3.0/fltk3/Fl_Repeat_Button.H
branches/branch-3.0/fltk3/Fl_Scroll.H
branches/branch-3.0/fltk3/Fl_Single_Window.H
branches/branch-3.0/fltk3/Fl_Spinner.H
branches/branch-3.0/fltk3/Fl_Table.H
branches/branch-3.0/fltk3/Fl_Tabs.H
branches/branch-3.0/fltk3/Fl_Text_Display.H
branches/branch-3.0/fltk3/Fl_Tile.H
branches/branch-3.0/fltk3/Fl_Timer.H
branches/branch-3.0/fltk3/Fl_Tooltip.H
branches/branch-3.0/fltk3/Fl_Tree.H
branches/branch-3.0/fltk3/Fl_Tree_Item.H
branches/branch-3.0/fltk3/Fl_Valuator.H
branches/branch-3.0/fltk3/Fl_Wizard.H
branches/branch-3.0/fltk3/fl_draw.H
branches/branch-3.0/fltk3/forms.H
branches/branch-3.0/fltk3/glut.H
branches/branch-3.0/fltk3/mac.H
branches/branch-3.0/fltk3/win32.H
branches/branch-3.0/fltk3/x.H
branches/branch-3.0/ide/Xcode3/FLTK.xcodeproj/project.pbxproj
branches/branch-3.0/src/Fl.cxx
branches/branch-3.0/src/Fl_Abstract_Printer.cxx
branches/branch-3.0/src/Fl_Adjuster.cxx
branches/branch-3.0/src/Fl_Bitmap.cxx
branches/branch-3.0/src/Fl_Box.cxx
branches/branch-3.0/src/Fl_Browser.cxx
branches/branch-3.0/src/Fl_Browser_.cxx
branches/branch-3.0/src/Fl_Browser_load.cxx
branches/branch-3.0/src/Fl_Button.cxx
branches/branch-3.0/src/Fl_Chart.cxx
branches/branch-3.0/src/Fl_Check_Button.cxx
branches/branch-3.0/src/Fl_Choice.cxx
branches/branch-3.0/src/Fl_Clock.cxx
branches/branch-3.0/src/Fl_Color_Chooser.cxx
branches/branch-3.0/src/Fl_Counter.cxx
branches/branch-3.0/src/Fl_Device.cxx
branches/branch-3.0/src/Fl_Dial.cxx
branches/branch-3.0/src/Fl_Double_Window.cxx
branches/branch-3.0/src/Fl_File_Icon.cxx
branches/branch-3.0/src/Fl_File_Icon2.cxx
branches/branch-3.0/src/Fl_File_Input.cxx
branches/branch-3.0/src/Fl_Font.H
branches/branch-3.0/src/Fl_GDI_Printer.cxx
branches/branch-3.0/src/Fl_GIF_Image.cxx
branches/branch-3.0/src/Fl_Gl_Choice.cxx
branches/branch-3.0/src/Fl_Gl_Device_Plugin.cxx
branches/branch-3.0/src/Fl_Gl_Overlay.cxx
branches/branch-3.0/src/Fl_Gl_Window.cxx
branches/branch-3.0/src/Fl_Group.cxx
branches/branch-3.0/src/Fl_Help_View.cxx
branches/branch-3.0/src/Fl_Image.cxx
branches/branch-3.0/src/Fl_Input.cxx
branches/branch-3.0/src/Fl_Input_.cxx
branches/branch-3.0/src/Fl_Light_Button.cxx
branches/branch-3.0/src/Fl_Menu.cxx
branches/branch-3.0/src/Fl_Menu_.cxx
branches/branch-3.0/src/Fl_Menu_Bar.cxx
branches/branch-3.0/src/Fl_Menu_Button.cxx
branches/branch-3.0/src/Fl_Menu_Window.cxx
branches/branch-3.0/src/Fl_Menu_global.cxx
branches/branch-3.0/src/Fl_Multi_Label.cxx
branches/branch-3.0/src/Fl_Native_File_Chooser_MAC.cxx
branches/branch-3.0/src/Fl_Native_File_Chooser_WIN32.cxx
branches/branch-3.0/src/Fl_Native_File_Chooser_common.cxx
branches/branch-3.0/src/Fl_Overlay_Window.cxx
branches/branch-3.0/src/Fl_PNG_Image.cxx
branches/branch-3.0/src/Fl_PNM_Image.cxx
branches/branch-3.0/src/Fl_PS_Printer.cxx
branches/branch-3.0/src/Fl_Pack.cxx
branches/branch-3.0/src/Fl_Pixmap.cxx
branches/branch-3.0/src/Fl_Positioner.cxx
branches/branch-3.0/src/Fl_Preferences.cxx
branches/branch-3.0/src/Fl_Progress.cxx
branches/branch-3.0/src/Fl_Quartz_Printer.mm
branches/branch-3.0/src/Fl_Repeat_Button.cxx
branches/branch-3.0/src/Fl_Return_Button.cxx
branches/branch-3.0/src/Fl_Roller.cxx
branches/branch-3.0/src/Fl_Round_Button.cxx
branches/branch-3.0/src/Fl_Scroll.cxx
branches/branch-3.0/src/Fl_Scrollbar.cxx
branches/branch-3.0/src/Fl_Shared_Image.cxx
branches/branch-3.0/src/Fl_Slider.cxx
branches/branch-3.0/src/Fl_Sys_Menu_Bar.cxx
branches/branch-3.0/src/Fl_Table_Row.cxx
branches/branch-3.0/src/Fl_Tabs.cxx
branches/branch-3.0/src/Fl_Text_Buffer.cxx
branches/branch-3.0/src/Fl_Text_Display.cxx
branches/branch-3.0/src/Fl_Text_Editor.cxx
branches/branch-3.0/src/Fl_Tile.cxx
branches/branch-3.0/src/Fl_Tiled_Image.cxx
branches/branch-3.0/src/Fl_Tree_Item.cxx
branches/branch-3.0/src/Fl_Tree_Prefs.cxx
branches/branch-3.0/src/Fl_Valuator.cxx
branches/branch-3.0/src/Fl_Value_Input.cxx
branches/branch-3.0/src/Fl_Value_Output.cxx
branches/branch-3.0/src/Fl_Value_Slider.cxx
branches/branch-3.0/src/Fl_Widget.cxx
branches/branch-3.0/src/Fl_Window.cxx
branches/branch-3.0/src/Fl_Window_fullscreen.cxx
branches/branch-3.0/src/Fl_Window_hotspot.cxx
branches/branch-3.0/src/Fl_Wizard.cxx
branches/branch-3.0/src/Fl_XBM_Image.cxx
branches/branch-3.0/src/Fl_XColor.H
branches/branch-3.0/src/Fl_XPM_Image.cxx
branches/branch-3.0/src/Fl_abort.cxx
branches/branch-3.0/src/Fl_add_idle.cxx
branches/branch-3.0/src/Fl_arg.cxx
branches/branch-3.0/src/Fl_cocoa.mm
branches/branch-3.0/src/Fl_compose.cxx
branches/branch-3.0/src/Fl_display.cxx
branches/branch-3.0/src/Fl_get_key.cxx
branches/branch-3.0/src/Fl_get_key_mac.cxx
branches/branch-3.0/src/Fl_get_system_colors.cxx
branches/branch-3.0/src/Fl_grab.cxx
branches/branch-3.0/src/Fl_lock.cxx
branches/branch-3.0/src/Fl_mac.cxx
branches/branch-3.0/src/Fl_own_colormap.cxx
branches/branch-3.0/src/Fl_visual.cxx
branches/branch-3.0/src/Fl_win32.cxx
branches/branch-3.0/src/Fl_x.cxx
branches/branch-3.0/src/fl_ask.cxx
branches/branch-3.0/src/fl_boxtype.cxx
branches/branch-3.0/src/fl_color.cxx
branches/branch-3.0/src/fl_color_mac.cxx
branches/branch-3.0/src/fl_color_win32.cxx
branches/branch-3.0/src/fl_cursor.cxx
branches/branch-3.0/src/fl_diamond_box.cxx
branches/branch-3.0/src/fl_dnd_mac.cxx
branches/branch-3.0/src/fl_dnd_win32.cxx
branches/branch-3.0/src/fl_dnd_x.cxx
branches/branch-3.0/src/fl_draw.cxx
branches/branch-3.0/src/fl_draw_image.cxx
branches/branch-3.0/src/fl_draw_image_mac.cxx
branches/branch-3.0/src/fl_draw_image_win32.cxx
branches/branch-3.0/src/fl_draw_pixmap.cxx
branches/branch-3.0/src/fl_engraved_label.cxx
branches/branch-3.0/src/fl_font.cxx
branches/branch-3.0/src/fl_gtk.cxx
branches/branch-3.0/src/fl_labeltype.cxx
branches/branch-3.0/src/fl_line_style.cxx
branches/branch-3.0/src/fl_oval_box.cxx
branches/branch-3.0/src/fl_overlay_visual.cxx
branches/branch-3.0/src/fl_plastic.cxx
branches/branch-3.0/src/fl_read_image.cxx
branches/branch-3.0/src/fl_rect.cxx
branches/branch-3.0/src/fl_round_box.cxx
branches/branch-3.0/src/fl_rounded_box.cxx
branches/branch-3.0/src/fl_scroll_area.cxx
branches/branch-3.0/src/fl_set_font.cxx
branches/branch-3.0/src/fl_set_fonts.cxx
branches/branch-3.0/src/fl_shadow_box.cxx
branches/branch-3.0/src/fl_shortcut.cxx
branches/branch-3.0/src/fl_show_colormap.cxx
branches/branch-3.0/src/fl_symbols.cxx
branches/branch-3.0/src/fl_vertex.cxx
branches/branch-3.0/src/flstring.h
branches/branch-3.0/src/forms_free.cxx
branches/branch-3.0/src/forms_timer.cxx
branches/branch-3.0/src/gl_draw.cxx
branches/branch-3.0/src/gl_start.cxx
branches/branch-3.0/src/print_panel.h
branches/branch-3.0/src/ps_image.cxx
branches/branch-3.0/src/scandir_win32.c
branches/branch-3.0/src/screen_xywh.cxx
branches/branch-3.0/src/xutf8/keysym2Ucs.c
branches/branch-3.0/src/xutf8/utf8Input.c
branches/branch-3.0/src/xutf8/utf8Utils.c
branches/branch-3.0/src/xutf8/utf8Wrap.c
branches/branch-3.0/test/hello.cxx
Modified: branches/branch-3.0/FL/Fl_File_Input.H
===================================================================
--- branches/branch-3.0/FL/Fl_File_Input.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/Fl_File_Input.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
#ifndef Fl_File_Input_H
# define Fl_File_Input_H
-# include <FL/Fl_Input.H>
+# include <fltk3/Fl_Input.H>
/**
\class Fl_File_Input
Modified: branches/branch-3.0/FL/Fl_Native_File_Chooser.H
===================================================================
--- branches/branch-3.0/FL/Fl_Native_File_Chooser.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/Fl_Native_File_Chooser.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,17 +31,17 @@
// Use Windows' chooser
#ifdef WIN32
-#include <FL/Fl_Native_File_Chooser_WIN32.H>
+#include <fltk3/Fl_Native_File_Chooser_WIN32.H>
#endif
// Use Apple's chooser
#ifdef __APPLE__
-#include <FL/Fl_Native_File_Chooser_MAC.H>
+#include <fltk3/Fl_Native_File_Chooser_MAC.H>
#endif
// All else falls back to FLTK's own chooser
#if ! defined(__APPLE__) && !defined(WIN32)
-#include <FL/Fl_Native_File_Chooser_FLTK.H>
+#include <fltk3/Fl_Native_File_Chooser_FLTK.H>
#endif
#endif /*FL_NATIVE_FILE_CHOOSER_H*/
Modified: branches/branch-3.0/FL/Fl_Native_File_Chooser_FLTK.H
===================================================================
--- branches/branch-3.0/FL/Fl_Native_File_Chooser_FLTK.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/Fl_Native_File_Chooser_FLTK.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
/* \file
Fl_Native_File_Chooser widget. */
-#include <FL/Fl_File_Chooser.H>
+#include <fltk3/Fl_File_Chooser.H>
#include <unistd.h> // _POSIX_NAME_MAX
/**
@@ -43,7 +43,7 @@
<P>
\code
// Create and post the local native file chooser
- #include <FL/Fl_Native_File_Chooser.H>
+ #include <fltk3/Fl_Native_File_Chooser.H>
[..]
Fl_Native_File_Chooser fnfc;
fnfc.title("Pick a file");
Modified: branches/branch-3.0/FL/Fl_PSfile_Device.H
===================================================================
--- branches/branch-3.0/FL/Fl_PSfile_Device.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/Fl_PSfile_Device.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <FL/Fl_Printer.H> // must stay here
+#include <fltk3/Fl_Printer.H> // must stay here
#ifndef Fl_PSfile_Device_H
#define Fl_PSfile_Device_H
Modified: branches/branch-3.0/FL/Fl_Tree_Item_Array.H
===================================================================
--- branches/branch-3.0/FL/Fl_Tree_Item_Array.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/Fl_Tree_Item_Array.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -9,7 +9,7 @@
// or doxygen will not document our class..
//////////////////////////
-// FL/Fl_Tree_Item_Array.H
+// fltk3/Fl_Tree_Item_Array.H
//////////////////////////
//
// Fl_Tree -- This file is part of the Fl_Tree widget for FLTK
Modified: branches/branch-3.0/FL/Fl_Tree_Prefs.H
===================================================================
--- branches/branch-3.0/FL/Fl_Tree_Prefs.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/Fl_Tree_Prefs.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -6,7 +6,7 @@
#define FL_TREE_PREFS_H
//////////////////////
-// FL/Fl_Tree_Prefs.H
+// fltk3/Fl_Tree_Prefs.H
//////////////////////
//
// Fl_Tree -- This file is part of the Fl_Tree widget for FLTK
Modified: branches/branch-3.0/FL/filename.H
===================================================================
--- branches/branch-3.0/FL/filename.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/filename.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -37,7 +37,7 @@
/** Gets the file name from a path.
Similar to basename(3), exceptions shown below.
\code
- #include <FL/filename.H>
+ #include <fltk3/filename.H>
[..]
const char *out;
out = fl_filename_name("/usr/lib"); // out="lib"
Modified: branches/branch-3.0/FL/fl_utf8.h
===================================================================
--- branches/branch-3.0/FL/fl_utf8.h 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/fl_utf8.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -38,8 +38,8 @@
#ifndef _HAVE_FL_UTF8_HDR_
#define _HAVE_FL_UTF8_HDR_
-#include "FL/Fl_Export.H"
-#include "FL/fl_types.h"
+#include "fltk3/Fl_Export.H"
+#include "fltk3/fl_types.h"
#include <stdio.h>
#include <string.h>
Modified: branches/branch-3.0/FL/gl2opengl.h
===================================================================
--- branches/branch-3.0/FL/gl2opengl.h 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/gl2opengl.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -6,7 +6,7 @@
*/
-#include <FL/gl.h>
+#include <fltk3/gl.h>
#include "gl_draw.H"
inline void clear() {glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);}
Modified: branches/branch-3.0/FL/math.h
===================================================================
--- branches/branch-3.0/FL/math.h 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/FL/math.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
# define fl_math_h
// Apple's ProjectBuilder has the nasty habit of including recursively
-// down the file tree. To avoid re-including <FL/math.h> we must
+// down the file tree. To avoid re-including <fltk3/math.h> we must
// directly include the systems math file. (Plus, I could not find a
// predefined macro for ProjectBuilder builds, so we have to define it
// in the project)
Added: branches/branch-3.0/fltk/Adjuster.h
===================================================================
--- branches/branch-3.0/fltk/Adjuster.h (rev 0)
+++ branches/branch-3.0/fltk/Adjuster.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,58 @@
+//
+// "$Id: Adjuster.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+// Undocumented valuator provided for back-compatability.
+// This may be removed before the final version.
+// 3-button "slider", made for Nuke
+
+#ifndef fltk_Adjuster_h
+#define fltk_Adjuster_h
+
+#include "Valuator.h"
+
+namespace fltk {
+
+class FL_API Adjuster : public Valuator {
+public:
+ Adjuster(int x, int y, int w, int h, const char *l=0);
+ static NamedStyle* default_style;
+ void soft(int x) {soft_ = x;}
+ int soft() const {return soft_;}
+ int handle(int);
+
+protected:
+ void draw();
+ void value_damage();
+
+private:
+ int drag, highlight, last;
+ int ix;
+ int soft_;
+};
+
+}
+#endif
+
+//
+// End of "$Id: Adjuster.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/AlignGroup.h
===================================================================
--- branches/branch-3.0/fltk/AlignGroup.h (rev 0)
+++ branches/branch-3.0/fltk/AlignGroup.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,65 @@
+// Layout header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_AlignGroup_h
+#define fltk_AlignGroup_h
+
+#include "Group.h"
+
+namespace fltk {
+
+class FL_API AlignGroup : public Group {
+ bool vertical_;
+ uchar n_to_break_,dw_,dh_;
+ Flags align_;
+
+public:
+
+ void layout();
+
+ // WAS: this should have a begin=false argument added somehow.
+ AlignGroup(int X, int Y, int W, int H, const char* L = 0,
+ uchar n_to_break = 0, bool vertical = 1,
+ Flags align = ALIGN_LEFT,
+ uchar dw = 0,uchar dh = 0)
+ : Group(X,Y,W,H,L),
+ vertical_(vertical), n_to_break_(n_to_break), dw_(dw), dh_(dh),
+ align_(align) {}
+
+ bool vertical() const {return vertical_;}
+ void vertical(bool v) {vertical_ = v;}
+
+ uchar n_to_break() const {return n_to_break_;}
+ void n_to_break(uchar n) {n_to_break_ = n;}
+
+ uchar dw() const {return dw_;}
+ void dw(uchar d) {dw_ = d;}
+ uchar dh() const {return dh_;}
+ void dh(uchar d) {dh_ = d;}
+
+ Flags align() const {return align_;}
+ void align(Flags a) {align_ = a;}
+};
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/AnsiWidget.h
===================================================================
--- branches/branch-3.0/fltk/AnsiWidget.h (rev 0)
+++ branches/branch-3.0/fltk/AnsiWidget.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,93 @@
+// "$Id: Widget.h 5600 2007-01-13 00:04:55Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+// Original code Copyright Chris Warren-Smith. Permission to distribute under
+// the LGPL for the FLTK library granted by Chris Warren-Smith.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef FL_ANSI_WIDGET
+#define FL_ANSI_WIDGET
+
+#include <fltk/Widget.h>
+#include <fltk/draw.h>
+#include <fltk/Image.h>
+
+using namespace fltk;
+
+class AnsiWidget : public Widget {
+ public:
+ AnsiWidget(int x, int y, int w, int h, int defsize);
+ virtual ~AnsiWidget();
+
+ // inherited methods
+ void draw();
+ void layout();
+ int handle(int e);
+
+ // public api
+ void clearScreen();
+ void print(const char *str);
+ void drawLine(int x1, int y1, int x2, int y2);
+ void drawRectFilled(int x1, int y1, int x2, int y2);
+ void drawRect(int x1, int y1, int x2, int y2);
+ void drawImage(Image* img, int x, int y, int sx, int sy, int w, int h);
+ void saveImage(const char* fn, int x, int y, int w, int h);
+ void setTextColor(long fg, long bg);
+ void setColor(long color);
+ int getX() {return curX;}
+ int getY() {return curY;}
+ void setPixel(int x, int y, int c);
+ int getPixel(int x, int y);
+ void setXY(int x, int y) {curX=x; curY=y;}
+ int textWidth(const char* s);
+ int textHeight(void);
+ int getWidth() {return w();}
+ int getHeight() {return h();}
+ void setFontSize(float i) {labelsize(i);}
+ int getFontSize() {return (int)labelsize();}
+ void beep() const;
+ static Color ansiToFltk(long color);
+
+ private:
+ void init();
+ void destroyImage();
+ void initImage();
+ bool setGraphicsRendition(char c, int escValue);
+ bool doEscape(unsigned char *&p);
+ int calcTab(int x) const;
+ void newLine();
+ void reset();
+ void setFont();
+
+ Image* img;
+ bool underline;
+ bool invert;
+ bool bold;
+ bool italic;
+ bool resized;
+ int curY;
+ int curX;
+ int curYSaved;
+ int curXSaved;
+ int tabSize;
+};
+
+#endif
+
+// $Id: Fl_Ansi_Window.h,v 1.23 2006/08/03 10:28:12 zeeb90au Exp $
Added: branches/branch-3.0/fltk/BarGroup.h
===================================================================
--- branches/branch-3.0/fltk/BarGroup.h (rev 0)
+++ branches/branch-3.0/fltk/BarGroup.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,60 @@
+//
+// "$Id: BarGroup.h 5575 2007-01-02 17:31:40Z spitzak $"
+//
+// The BarGroup is a closable strip that can be put in the edges of a Pack,
+// usually it contains toolbars or buttons.
+//
+// Copyright 2002-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_BarGroup_h
+#define fltk_BarGroup_h
+
+#include "Group.h"
+
+namespace fltk {
+
+class FL_API BarGroup : public Group {
+ bool open_;
+ bool highlighted;
+ bool pushed;
+ int glyph_size_;
+ int saved_size;
+ void glyph_box(Rectangle&) const;
+public:
+ BarGroup(int x,int y,int w ,int h,const char *l = 0,bool begin=false);
+ static NamedStyle* default_style;
+ void layout();
+ int handle(int);
+ void draw();
+ bool opened() const {return open_;}
+ bool opened(bool);
+ bool open() {return opened(true);}
+ bool close() {return opened(false);}
+ int glyph_size() const {return glyph_size_;}
+ void glyph_size(int v) {glyph_size_ = v;}
+};
+
+}
+#endif
+
+//
+// End of "$Id: BarGroup.h 5575 2007-01-02 17:31:40Z spitzak $".
+//
Added: branches/branch-3.0/fltk/Box.h
===================================================================
--- branches/branch-3.0/fltk/Box.h (rev 0)
+++ branches/branch-3.0/fltk/Box.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,75 @@
+//
+// "$Id: Box.h 5865 2007-06-01 13:04:19Z sanel.z $"
+//
+// Define your own values for box() on a widget by making one of these.
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Box_h
+#define fltk_Box_h
+
+#include "Color.h"
+#include "Flags.h"
+#include "Symbol.h"
+
+namespace fltk {
+
+typedef Symbol Box;
+
+class FL_API FrameBox : public Box {
+protected:
+ const char* data_;
+ const Box* down_;
+public:
+ const char* data() const {return data_;}
+ void data(const char* d) {data_ = d;}
+ void _draw(const Rectangle&) const;
+ void inset(Rectangle&) const;
+ bool fills_rectangle() const;
+ bool is_frame() const;
+ FrameBox(const char* name, int dx,int dy,int dw,int dh, const char* pattern, const Box* down=0)
+ : Box(name),data_(pattern),down_(down) {set_inset(dx,dy,-dw,-dh);}
+};
+
+class FL_API FlatBox : public Box {
+public:
+ void _draw(const Rectangle&) const;
+ bool fills_rectangle() const;
+ bool is_frame() const;
+ FlatBox(const char* n);
+};
+
+class FL_API HighlightBox : public FlatBox {
+ const Box* down_;
+public:
+ void _draw(const Rectangle&) const;
+ bool fills_rectangle() const;
+ bool is_frame() const;
+ HighlightBox(const char* n, const Box* d);
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Box.h 5865 2007-06-01 13:04:19Z sanel.z $".
+//
Added: branches/branch-3.0/fltk/Browser.h
===================================================================
--- branches/branch-3.0/fltk/Browser.h (rev 0)
+++ branches/branch-3.0/fltk/Browser.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,214 @@
+// "$Id: Browser.h 6077 2008-03-21 00:14:56Z fabien $"
+//
+// Copyright 2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Browser_h
+#define fltk_Browser_h
+
+#include "Menu.h"
+#include "Scrollbar.h"
+
+namespace fltk {
+
+class FL_API Browser : public Menu {
+public:
+
+ int handle(int);
+ void layout();
+ void draw();
+
+ Browser(int X,int Y,int W,int H,const char*l=0);
+ static NamedStyle* default_style;
+ ~Browser();
+
+ enum { //<! values for type()
+ IS_MULTI = 1,
+ NORMAL = GROUP_TYPE, //!< means single selection can be achieved by user
+ MULTI = GROUP_TYPE+1 //!< means multiple selection can be achieved by user
+ };
+ enum { // value for selected_column
+ NO_COLUMN_SELECTED = -1 //!< means that no column has been selected by user
+ };
+
+ class FL_API Mark {
+ friend class Browser;
+ unsigned level; // depth in hierarchy of the item
+ unsigned open_level; // depth of highest closed parent
+ int position; // distance in pixels from top of browser
+ unsigned indexes_size; // allocated size
+ int* indexes; // array of indexes
+ int index0; // used as *indexes if indexes_size==1
+ public:
+ Mark() {
+ level = 0;
+ open_level = 0;
+ position = 0;
+ indexes_size = 1;
+ indexes = &index0;
+ index0 = 0;
+ }
+ Mark(const Mark&);
+ ~Mark() {
+ if (indexes != &index0) delete[] indexes;
+ }
+ const Mark& operator=(const Mark&);
+ int compare(const Mark& mark2) const;
+ void unset() {indexes[0] = -1;}
+ bool is_set() const {return indexes[0] >= 0;}
+ };
+
+ enum linepos { //!< Argument to make_item_visible()
+ NOSCROLL, //!< move as little as possible so item is visible
+ TOP, //!< position current item to top
+ MIDDLE, //!< position current item to middle
+ BOTTOM //!< position current item to bottom
+ };
+
+ int width() const {return width_;}
+ int height() const {return height_;}
+ int box_width() const {return interior.w();}
+ int box_height() const {return interior.h();}
+ int xposition() const {return xposition_;}
+ void xposition(int);
+ int yposition() const {return yposition_;}
+ void yposition(int);
+ bool indented() const {return indented_;}
+ void indented(bool v) {indented_ = v;}
+
+ Scrollbar scrollbar;
+ Scrollbar hscrollbar;
+
+ Widget* goto_top();
+ Widget* goto_focus() {return goto_mark(FOCUS);}
+ Widget* goto_position(int y);
+ Widget* goto_index(const int* indexes, unsigned level);
+ Widget* goto_index(int);
+ Widget* goto_index(int,int,int=-1,int=-1,int=-1);
+ Widget* goto_mark(const Mark&); // set HERE to mark
+ Widget* next();
+ Widget* next_visible();
+ Widget* previous_visible();
+ bool at_mark(const Mark& mark) const {return !HERE.compare(mark);}
+ int compare_to_mark(const Mark& mark) const {return HERE.compare(mark);}
+ bool item_is_visible() const;
+ bool item_is_parent() const;
+ bool item_is_open() const;
+ int item_h() const;
+
+ bool set_focus();
+ void set_mark(Mark& dest) const {dest = HERE;}
+ void set_mark_to_focus(Mark& dest) const {dest = FOCUS;}
+ bool select(Widget*e, int val, int do_callback=0);
+ bool set_item_selected(bool value = true, int do_callback = 0);
+ bool select_only_this(int do_callback = 0);
+ bool deselect(int do_callback = 0);
+ bool make_item_visible(linepos = NOSCROLL);
+ void damage_item() {damage_item(HERE);}
+ void damage_item(const Mark&); // make this item redraw
+ bool set_item_opened(bool);
+ bool set_item_visible(bool);
+
+ int current_level() const {return HERE.level;}
+ const int* current_index() const {return HERE.indexes;}
+ int current_position() const {return HERE.position;}
+
+ int focus_level() const {return FOCUS.level;}
+ const int* focus_index() const {return FOCUS.indexes;}
+ int focus_position() const {return FOCUS.position;}
+
+ // Maybe these should be moved to base Menu class:
+ const int *column_widths() const { return column_widths_p; }
+ void column_widths(const int *pWidths);
+ const char **column_labels() const { return column_labels_; }
+ void column_labels(const char **pLabels);
+ int selected_column() { return selected_column_; }
+ int set_column_start(int column, int x);
+
+ Widget *header(int col) { if(col<0 || col>=nHeader) return 0; return header_[col]; }
+ int nheader() const { return nHeader; }
+
+ // Convienence functions for flat browsers:
+ void value(int v) {goto_index(v); set_focus();}
+ int value() const {return FOCUS.indexes[0];}
+ bool select(int line, bool value = true);
+ bool selected(int line);
+ int topline() const {return FIRST_VISIBLE.indexes[0];}
+ void topline(int line) {goto_index(line); make_item_visible(TOP);}
+ void bottomline(int line) {goto_index(line); make_item_visible(BOTTOM);}
+ void middleline(int line) {goto_index(line); make_item_visible();}
+ bool displayed(int line);
+ bool display(int line, bool value = true);
+
+ bool display_lines() const;
+ void display_lines(bool display);
+
+ int load(const char *filename);
+
+ int multi() const {return type()&IS_MULTI;}
+
+ const Symbol* leaf_symbol() const {return leaf_symbol_;}
+ void leaf_symbol(const Symbol* s) {leaf_symbol_ = s;}
+ const Symbol* group_symbol() const {return group_symbol_;}
+ void group_symbol(const Symbol* s) {group_symbol_ = s;}
+
+protected:
+ void handle_callback(int doit); // defines how cb are handled in the browser
+
+private:
+ bool displaylines_;
+ bool indented_;
+ const int *column_widths_; // original column widths
+ int *column_widths_i; // original column widths after user interaction
+ int *column_widths_p; // actual column widths
+ const char **column_labels_;
+ int xposition_, yposition_;
+ int width_, height_;
+ int scrolldx, scrolldy;
+ static void hscrollbar_cb(Widget*, void*);
+ static void scrollbar_cb(Widget*, void*);
+ void draw_item(int);
+ void draw_clip(const Rectangle&);
+ static void draw_clip_cb(void*,const Rectangle&);
+ Rectangle interior; // inside box edges and scrollbars
+ void set_belowmouse();
+ void clear_belowmouse();
+
+ Widget **header_;
+ int nHeader, nColumn, selected_column_;
+ void set_level(unsigned);
+ enum {NUM_REDRAW = 2};
+ Mark HERE, FOCUS, FIRST_VISIBLE, REDRAW[NUM_REDRAW], OPEN, BELOWMOUSE;
+
+ Widget* goto_visible_focus(); // set HERE to focus if visible
+
+ int siblings; // # of children of parent of HERE item
+ static void column_click_cb_(Widget*, void*);
+
+ const Symbol* leaf_symbol_;
+ const Symbol* group_symbol_;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Browser.h 6077 2008-03-21 00:14:56Z fabien $".
+//
Added: branches/branch-3.0/fltk/Button.h
===================================================================
--- branches/branch-3.0/fltk/Button.h (rev 0)
+++ branches/branch-3.0/fltk/Button.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,57 @@
+//
+// "$Id: Button.h 5433 2006-09-16 03:00:02Z spitzak $"
+//
+// Push button widget
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Button_h
+#define fltk_Button_h
+
+#ifndef fltk_Widget_h
+#include "Widget.h"
+#endif
+
+namespace fltk {
+
+class FL_API Button : public Widget {
+public:
+ enum {HIDDEN=3}; // back-comptability value to hide the button
+
+ bool value() const { return state(); }
+ bool value(bool v) { return state(v); }
+
+ int handle(int);
+ int handle(int event, const Rectangle&);
+ Button(int,int,int,int,const char * = 0);
+ static NamedStyle* default_style;
+
+ virtual void draw();
+ void draw(int glyph_width) const;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Button.h 5433 2006-09-16 03:00:02Z spitzak $".
+//
Added: branches/branch-3.0/fltk/CheckButton.h
===================================================================
--- branches/branch-3.0/fltk/CheckButton.h (rev 0)
+++ branches/branch-3.0/fltk/CheckButton.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,46 @@
+//
+// "$Id: CheckButton.h 4910 2006-04-06 19:26:22Z fabien $"
+//
+// Button with a checkmark to the left of it.
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_CheckButton_h
+#define fltk_CheckButton_h
+
+#include "Button.h"
+
+namespace fltk {
+
+class FL_API CheckButton : public Button {
+public:
+ CheckButton(int x,int y,int w,int h,const char *l = 0);
+ static NamedStyle* default_style;
+
+ virtual void draw();
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: CheckButton.h 4910 2006-04-06 19:26:22Z fabien $".
+//
Added: branches/branch-3.0/fltk/Choice.h
===================================================================
--- branches/branch-3.0/fltk/Choice.h (rev 0)
+++ branches/branch-3.0/fltk/Choice.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,52 @@
+//
+// "$Id: Choice.h 4319 2005-05-08 19:18:50Z spitzak $"
+//
+// Popup list of items that the user can choose one of. Based on Motif
+// but modern equivalent is the OS/X popup choices.
+//
+// This is not a "combo box". You should try this, but if you insist
+// on that use the InputBrowser widget.
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Choice_h
+#define fltk_Choice_h
+
+#include "Menu.h"
+
+namespace fltk {
+
+class FL_API Choice : public Menu {
+public:
+ int handle(int);
+ int handle(int, const Rectangle&);
+ Choice(int,int,int,int,const char * = 0);
+ static NamedStyle* default_style;
+ void draw();
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Choice.h 4319 2005-05-08 19:18:50Z spitzak $".
+//
Added: branches/branch-3.0/fltk/Clock.h
===================================================================
--- branches/branch-3.0/fltk/Clock.h (rev 0)
+++ branches/branch-3.0/fltk/Clock.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,68 @@
+//
+// "$Id: Clock.h 5197 2006-06-14 07:43:46Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Clock_h
+#define fltk_Clock_h
+
+#include "Widget.h"
+
+namespace fltk {
+
+// a ClockOutput can be used to display a program-supplied time:
+
+class FL_API ClockOutput : public Widget {
+public:
+ enum {SQUARE = 0, ANALOG = 0, ROUND, DIGITAL};
+ ClockOutput(int x,int y,int w,int h, const char *l = 0);
+ void value(unsigned long v); // set to this Unix time
+ void value(int,int,int); // set hour, minute, second
+ unsigned long value() const {return value_;}
+ int hour() const {return hour_;}
+ int minute() const {return minute_;}
+ int second() const {return second_;}
+protected:
+ void draw(int, int, int, int);
+ void draw();
+private:
+ int hour_, minute_, second_;
+ unsigned long value_;
+ void drawhands(Color, Color); // part of draw
+};
+
+// a Clock displays the current time always by using a timeout:
+
+class FL_API Clock : public ClockOutput {
+public:
+ int handle(int);
+ void update();
+ Clock(int x,int y,int w,int h, const char *l = 0);
+ static NamedStyle* default_style;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Clock.h 5197 2006-06-14 07:43:46Z spitzak $".
+//
Added: branches/branch-3.0/fltk/Color.h
===================================================================
--- branches/branch-3.0/fltk/Color.h (rev 0)
+++ branches/branch-3.0/fltk/Color.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,131 @@
+//
+// "$Id: Color.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// Color value. These are 32-bit unsigned numbers with RGB as the
+// upper 3 bytes. The lowest-order byte is treated as an "index"
+// for back compatabilty, or as an "alpha", depending on context.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to:
+//
+// http://www.fltk.org/str.php
+//
+
+#ifndef fltk_Color_h
+#define fltk_Color_h
+
+#include "FL_API.h"
+#include "Flags.h"
+
+namespace fltk {
+
+/// \name fltk/Color.h
+//@{
+
+typedef unsigned Color;
+
+/*! Symbolic names for some of the indexed colors.
+
+ The 24-entry "gray ramp" is modified by fltk::set_background() so
+ that the color fltk::GRAY75 is the background color, and the others
+ are a nice range from black to a lighter version of the gray. These
+ are used to draw box edges. The gray levels are chosen to be evenly
+ spaced, listed here is the actual 8-bit and decimal gray level
+ assigned by default. Also listed here is the letter used for
+ fltk::FrameBox and the old fltk1.1 names used for these levels.
+
+ The remiander of the colormap is a 5x8x5 color cube. This cube is
+ used to dither images on 8-bit screens X colormaps to reduce the
+ number of colors used.
+*/
+enum {
+ NO_COLOR = 0, //!< Black, empty place holder in Style
+
+ FREE_COLOR = 16, //!< Starting from index 16 is the FREE_COLOR area
+ NUM_FREE_COLOR= 16, //!< Number of free color slots starting from index FREE_COLOR
+
+ GRAY00 = 32, //!< hex=00, dec=.00, framebox=A, fltk1 = GRAY0, GRAY_RAMP
+ GRAY05 = 33, //!< hex=0d, dec=.05, framebox=B
+ GRAY10 = 34, //!< hex=1a, dec=.10, framebox=C
+ GRAY15 = 35, //!< hex=27, dec=.15, framebox=D
+ GRAY20 = 36, //!< hex=34, dec=.20, framebox=E
+ GRAY25 = 37, //!< hex=41, dec=.25, framebox=F
+ GRAY30 = 38, //!< hex=4f, dec=.31, framebox=G
+ GRAY33 = 39, //!< hex=5c, dec=.36, framebox=H, fltk1 = DARK3
+ GRAY35 = 40, //!< hex=69, dec=.41, framebox=I
+ GRAY40 = 41, //!< hex=76, dec=.46, framebox=J (18% gray card)
+ GRAY45 = 42, //!< hex=83, dec=.51, framebox=K
+ GRAY50 = 43, //!< hex=90, dec=.56, framebox=L
+ GRAY55 = 44, //!< hex=9e, dec=.62, framebox=M
+ GRAY60 = 45, //!< hex=ab, dec=.67, framebox=N, fltk1 = DARK2
+ GRAY65 = 46, //!< hex=b8, dec=.72, framebox=O
+ GRAY66 = 47, //!< hex=c5, dec=.77, framebox=P, fltk1 = DARK1, INACTIVE_COLOR
+ GRAY70 = 48, //!< hex=d2, dec=.82, framebox=Q
+ GRAY75 = 49, //!< hex=e0, dec=.88, framebox=R, fltk1 = GRAY, SELECTION_COLOR
+ GRAY80 = 50, //!< hex=e5, dec=.90, framebox=S
+ GRAY85 = 51, //!< hex=ea, dec=.92, framebox=T, fltk1 = LIGHT1
+ //unnamed entry hex=ef, dec=.94, framebox=U
+ GRAY90 = 53, //!< hex=f4, dec=.96, framebox=V, fltk1 = LIGHT2
+ GRAY95 = 54, //!< hex=f9, dec=.98, framebox=W
+ GRAY99 = 55, //!< hex=ff, dec=1.0, framebox=X, fltk1 = LIGHT3
+
+ BLACK = 0x38, //!< Corner of color cube
+ RED = 0x58, //!< Corner of color cube
+ GREEN = 0x3f, //!< Corner of color cube
+ YELLOW = 0x5f, //!< Corner of color cube
+ BLUE = 0xd8, //!< Corner of color cube
+ MAGENTA = 0xf8, //!< Corner of color cube
+ CYAN = 0xdf, //!< Corner of color cube
+ WHITE = 0xff, //!< Corner of color cube
+
+ DARK_RED = 72,
+ DARK_GREEN = 60,
+ DARK_YELLOW = 76,
+ DARK_BLUE = 136,
+ DARK_MAGENTA = 152,
+ DARK_CYAN = 140,
+
+ WINDOWS_BLUE = 0x88 //!< default selection_color
+};
+
+inline Color color(unsigned char r, unsigned char g, unsigned char b) {
+ return Color((r<<24)+(g<<16)+(b<<8)); }
+inline Color color(unsigned char g) {
+ return Color(g*0x1010100u); }
+FL_API Color color(const char*);
+FL_API Color parsecolor(const char*, unsigned length);
+FL_API Color lerp(Color c0, Color c1, float f);
+FL_API Color inactive(Color fg);
+FL_API Color inactive(Color fg, Color bg);
+FL_API Color contrast(Color fg, Color bg);
+FL_API void split_color(Color c, unsigned char& r, unsigned char& g, unsigned char& b);
+FL_API void set_color_index(Color index, Color);
+FL_API Color get_color_index(Color index);
+FL_API void set_background(Color);
+FL_API Color nearest_index(Color);
+
+}
+
+//@}
+
+#endif
+
+//
+// End of "$Id: Color.h 6233 2008-09-14 07:54:06Z spitzak $".
+//
Added: branches/branch-3.0/fltk/ColorChooser.h
===================================================================
--- branches/branch-3.0/fltk/ColorChooser.h (rev 0)
+++ branches/branch-3.0/fltk/ColorChooser.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,116 @@
+//
+// "$Id: ColorChooser.h 5197 2006-06-14 07:43:46Z spitzak $"
+//
+// Color chooser header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+// The color chooser object and the color chooser popup. The popup
+// is just a window containing a single color chooser and some boxes
+// to indicate the current and cancelled color.
+
+#ifndef fltk_ColorChooser_h
+#define fltk_ColorChooser_h
+
+#include "Group.h"
+
+namespace fltk {
+
+class FL_API ccHueBox : public Widget {
+ int px, py;
+protected:
+ void draw();
+public:
+ int handle(int);
+ ccHueBox(int X, int Y, int W, int H) : Widget(X,Y,W,H) {
+ px = py = 0;}
+};
+
+class FL_API ccValueBox : public Widget {
+ int py;
+ bool is_alpha() const;
+protected:
+ void draw();
+public:
+ int handle(int);
+ ccValueBox(int X, int Y, int W, int H) : Widget(X,Y,W,H) {
+ py = 0;}
+};
+
+class FL_API ccCellBox : public Widget {
+public:
+ ccCellBox(int X, int Y, int W, int H) : Widget(X,Y,W,H) {}
+ void draw();
+ int handle(int);
+};
+
+class FL_API ColorChooser : public Group {
+ friend class ccHueBox;
+ friend class ccValueBox;
+ friend class ccCellBox;
+ ccHueBox huebox;
+ ccValueBox valuebox;
+ ccValueBox alphabox;
+ ccCellBox cellbox;
+ float hue_, saturation_, value_;
+ float r_, g_, b_, a_;
+ bool no_value_;
+ bool support_no_value;
+public:
+ float h() const {return hue_;}
+ float s() const {return saturation_;}
+ float v() const {return value_;}
+ float r() const {return r_;}
+ float g() const {return g_;}
+ float b() const {return b_;}
+ float a() const {return a_;}
+ bool no_value() const {return no_value_;}
+ bool no_value(bool);
+ Color value() const;
+ bool value(Color);
+ bool hsv(float,float,float);
+ bool rgb(float,float,float);
+ bool a(float);
+ void hide_a();
+ void hide_no_value() {support_no_value = false;}
+ static void hsv2rgb(float, float, float,float&,float&,float&);
+ static void rgb2hsv(float, float, float,float&,float&,float&);
+ ColorChooser(int,int,int,int,const char* = 0);
+ void layout();
+ float setcell(int,float,float,float,float);
+ float getcell(int,float,float,float,float);
+};
+
+// Convience functions to pop-up a control panel:
+
+FL_API bool color_chooser(const char* name, float& r, float& g, float& b);
+FL_API bool color_chooser(const char* name, float& r, float& g, float& b, float& a);
+FL_API bool color_chooser(const char* name, uchar& r, uchar& g, uchar& b);
+FL_API bool color_chooser(const char* name, uchar& r, uchar& g, uchar& b, uchar& a);
+FL_API bool color_chooser(const char* name, Color& c);
+
+}
+
+#endif
+
+//
+// End of "$Id: ColorChooser.h 5197 2006-06-14 07:43:46Z spitzak $".
+//
Added: branches/branch-3.0/fltk/ComboBox.h
===================================================================
--- branches/branch-3.0/fltk/ComboBox.h (rev 0)
+++ branches/branch-3.0/fltk/ComboBox.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,108 @@
+//
+//
+//
+// single line input field with predefined choices via popup menu
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_ComboBox_h
+#define fltk_ComboBox_h
+
+#include "Choice.h"
+#include "Input.h"
+
+namespace fltk {
+
+class FL_API ComboBox : public Choice {
+public:
+ ComboBox(int,int,int,int,const char * = 0);
+ ~ComboBox();
+ static NamedStyle* default_style;
+
+ void draw();
+ void layout();
+ int handle(int);
+ int popup(const Rectangle&,const char* title=0,bool menubar=false);
+
+ int choice(int v);
+ int choice() const;
+ int find_choice() const;
+ bool text(const char *txt)
+ { return text_changed_(input_->text(txt)); }
+ bool text(const char *txt, int n)
+ { return text_changed_(input_->text(txt, n)); }
+ bool static_text(const char *txt)
+ { return text_changed_(input_->static_text(txt)); }
+ bool static_text(const char *txt, int n)
+ { return text_changed_(input_->static_text(txt, n)); }
+ const char* text() const { return input_->text();}
+ char at(int i) const { return input_->at(i); }
+
+ int size(bool ofText) const
+ { return ofText ? input_->size() : Choice::size(); }
+
+ int position() const { return input_->position();}
+ int mark() const { return input_->mark();}
+ void position(int p, int m)
+ { input_->position(p, m); text_changed_(); }
+ void position(int p) { position(p, p); }
+ void up_down_position(int p, bool m)
+ { input_->up_down_position(p, m); text_changed_(); }
+ void mark(int m) { position(position(), m);}
+
+ virtual bool replace(int a, int b, const char *c, int d)
+ { return text_changed_(input_->replace(a, b, c, d)); }
+ bool cut() {return replace(position(), mark(), 0, 0);}
+ bool cut(int n) {return replace(position(), position()+n, 0, 0);}
+ bool cut(int a, int b) {return replace(a, b, 0, 0);}
+ bool insert(const char* t, int l=0)
+ { return replace(input_->position(), input_->mark(), t, l); }
+ bool replace(int a, int b, char c) { return replace(a,b,&c,1); }
+ bool copy(bool clipboard = true) { return input_->copy(clipboard); }
+ bool undo() { return text_changed_(input_->undo()); }
+
+ int word_start(int i) const { return input_->word_start(i); }
+ int word_end(int i) const { return input_->word_end(i); }
+ int line_start(int i) const { return input_->line_start(i); }
+ int line_end(int i) const { return input_->line_end(i); }
+ int mouse_position(const Rectangle& r) const
+ { return input_->mouse_position(r); }
+ int xscroll() const { return input_->xscroll();}
+ int yscroll() const { return input_->yscroll();}
+
+protected:
+ bool text_changed_(bool ret=true);
+
+private:
+ Input *input_;
+#if defined (_WIN32) || (defined( __GNUC__ ) && __GNUC__ < 3)
+ public:
+#endif
+ static void input_callback_(Widget*,void*);
+};
+
+}
+
+#endif
+
+//
+//
+//
Added: branches/branch-3.0/fltk/Cursor.h
===================================================================
--- branches/branch-3.0/fltk/Cursor.h (rev 0)
+++ branches/branch-3.0/fltk/Cursor.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,39 @@
+//
+// "$Id"
+//
+// Mouse cursor support for the Fast Light Tool Kit (FLTK).
+
+// This is likely to change!
+
+#ifndef fltk_Cursor_h
+#define fltk_Cursor_h
+
+#include "FL_API.h"
+
+namespace fltk {
+
+struct Cursor; // this is not public
+
+class Image;
+Cursor* cursor(Image*, int x, int y);
+extern FL_API Cursor* cursor(void *raw);
+
+extern FL_API Cursor* const CURSOR_DEFAULT; // == NULL
+extern FL_API Cursor* const CURSOR_ARROW;
+extern FL_API Cursor* const CURSOR_CROSS;
+extern FL_API Cursor* const CURSOR_WAIT;
+extern FL_API Cursor* const CURSOR_INSERT;
+extern FL_API Cursor* const CURSOR_HAND;
+extern FL_API Cursor* const CURSOR_HELP;
+extern FL_API Cursor* const CURSOR_MOVE;
+extern FL_API Cursor* const CURSOR_NS;
+extern FL_API Cursor* const CURSOR_WE;
+extern FL_API Cursor* const CURSOR_NWSE;
+extern FL_API Cursor* const CURSOR_NESW;
+extern FL_API Cursor* const CURSOR_NO;
+extern FL_API Cursor* const CURSOR_NONE;
+
+}
+#endif
+
+// End of "$Id"
Added: branches/branch-3.0/fltk/CycleButton.h
===================================================================
--- branches/branch-3.0/fltk/CycleButton.h (rev 0)
+++ branches/branch-3.0/fltk/CycleButton.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,52 @@
+//
+// "$Id: CycleButton.h 4910 2006-04-06 19:26:22Z fabien $"
+//
+// Popup list of items that the user can choose one of. Based on Motif
+// but modern equivalent is the OS/X popup choices.
+//
+// This is not a "combo box". You should try this, but if you insist
+// on that use the InputBrowser widget.
+//
+// Copyright 2004 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_CycleButton_h
+#define fltk_CycleButton_h
+
+#include "Menu.h"
+
+namespace fltk {
+
+class FL_API CycleButton : public Menu {
+public:
+ int handle(int);
+ CycleButton(int,int,int,int,const char * = 0);
+ static NamedStyle* default_style;
+protected:
+ void draw();
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: CycleButton.h 4910 2006-04-06 19:26:22Z fabien $".
+//
Added: branches/branch-3.0/fltk/Dial.h
===================================================================
--- branches/branch-3.0/fltk/Dial.h (rev 0)
+++ branches/branch-3.0/fltk/Dial.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,64 @@
+//
+// "$Id: Dial.h 4910 2006-04-06 19:26:22Z fabien $"
+//
+// Rotating value control
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Dial_h
+#define fltk_Dial_h
+
+#ifndef fltk_Valuator_h
+#include "Valuator.h"
+#endif
+
+namespace fltk {
+
+class FL_API Dial : public Valuator {
+
+public:
+
+ enum {NORMAL = 0, LINE, FILL}; // values for type()
+ int handle(int);
+ Dial(int x,int y,int w,int h, const char *l = 0);
+ static NamedStyle* default_style;
+ short angle1() const {return a1;}
+ void angle1(short a) {a1 = a;}
+ short angle2() const {return a2;}
+ void angle2(short a) {a2 = a;}
+ void angles(short a, short b) {a1 = a; a2 = b;}
+
+protected:
+
+ void draw();
+
+private:
+
+ short a1,a2;
+
+};
+
+}
+#endif
+
+//
+// End of "$Id: Dial.h 4910 2006-04-06 19:26:22Z fabien $".
+//
Added: branches/branch-3.0/fltk/Divider.h
===================================================================
--- branches/branch-3.0/fltk/Divider.h (rev 0)
+++ branches/branch-3.0/fltk/Divider.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,45 @@
+//
+// "$Id: Divider.h 4910 2006-04-06 19:26:22Z fabien $"
+//
+// Widget to draw a divider line in a menu
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Divider_h
+#define fltk_Divider_h
+
+#ifndef fltk_Widget_h
+# include "Widget.h"
+#endif
+
+namespace fltk {
+
+class FL_API Divider : public Widget {
+public:
+ void draw();
+ void layout();
+ int handle(int);
+ Divider();
+};
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/DoubleBufferWindow.h
===================================================================
--- branches/branch-3.0/fltk/DoubleBufferWindow.h (rev 0)
+++ branches/branch-3.0/fltk/DoubleBufferWindow.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,27 @@
+// This class is provided for back compatability only with some fltk2.0
+// versions. You can turn on double buffering on a normal window if
+// you want it.
+
+#ifndef fltk_DoubleBufferWindow_h
+#define fltk_DoubleBufferWindow_h
+
+#ifndef fltk_Window_h
+# include "Window.h"
+#endif
+
+namespace fltk {
+
+class DoubleBufferWindow : public Window {
+
+public:
+ DoubleBufferWindow(int x, int y, int w, int h, const char*l = 0)
+ : Window(x,y,w,h,l) {set_double_buffer();}
+
+ DoubleBufferWindow(int w, int h, const char*l = 0)
+ : Window(w,h,l) {set_double_buffer();}
+
+};
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/FL_API.h
===================================================================
--- branches/branch-3.0/fltk/FL_API.h (rev 0)
+++ branches/branch-3.0/fltk/FL_API.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,76 @@
+// "$Id: FL_API.h 5448 2006-09-19 01:14:07Z spitzak $"
+//
+// This file is included by all FLTK header files. Originally it was to
+// get that damn dllimport/export stuff on Windows. It now also turns
+// off warnings on Windows so that you can use stdc functions, and
+// defines the uchar type that is used by FLTK a lot.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+#ifndef FL_API
+
+#if _MSC_VER > 1000
+# pragma once
+// suppress vc2005 warnings:
+// C4312 because we have no problem to cast a smaller type to a greater (potentially 64bit) one
+// and C4996 (deprecated C-lib calls like strcpy that should be _strcpy, etc ...)
+# pragma warning(disable:4312 4996)
+#endif
+
+#if !defined(DOXYGEN) && defined(_WIN32) && defined(FL_SHARED)
+# ifdef FL_LIBRARY
+# define FL_API __declspec(dllexport)
+# else
+# define FL_API __declspec(dllimport)
+# endif
+# ifdef FL_IMAGES_LIBRARY
+# define FL_IMAGES_API __declspec(dllexport)
+# else
+# define FL_IMAGES_API __declspec(dllimport)
+# endif
+# ifdef FL_GLUT_LIBRARY
+# define FL_GLUT_API __declspec(dllexport)
+# else
+# define FL_GLUT_API __declspec(dllimport)
+# endif
+# ifdef FL_FORMS_LIBRARY
+# define FL_FORMS_API __declspec(dllexport)
+# else
+# define FL_FORMS_API __declspec(dllimport)
+# endif
+# ifdef FL_GL_LIBRARY
+# define FL_GL_API __declspec(dllexport)
+# else
+# define FL_GL_API __declspec(dllimport)
+# endif
+#else
+# define FL_API
+# define FL_IMAGES_API
+# define FL_GLUT_API
+# define FL_FORMS_API
+# define FL_GL_API
+#endif
+
+typedef unsigned char uchar;
+
+#endif
+
+//
+// End of "$Id: FL_API.h 5448 2006-09-19 01:14:07Z spitzak $".
+//
Added: branches/branch-3.0/fltk/FL_VERSION.h
===================================================================
--- branches/branch-3.0/fltk/FL_VERSION.h (rev 0)
+++ branches/branch-3.0/fltk/FL_VERSION.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,39 @@
+/*! \file
+
+The FLTK version number. Allows you to write conditionally compiled
+code for different versions of FLTK. This file may be included by C
+code in case you need it there.
+
+FL_VERSION is a macro double that describes the major, minor, and
+patch version numbers. The integer value is the major number. One
+digit is used for the minor number, and three for the "patch" number
+which is increased for each binary differnt release (it can go to 999).
+
+Because double cannot be used in #if statements, the integer
+numbers are in the FL_MAJOR_VERSION, FL_MINOR_VERSION, and
+FL_PATCH_VERSION macro constants.
+
+*/
+
+#ifndef FL_VERSION
+
+# define FL_MAJOR_VERSION 2 //!< The major release number, 1 or 2
+# define FL_MINOR_VERSION 1 //!< The minor release number, 0-9
+# define FL_PATCH_VERSION 0 //!< The patch number, 0-999
+# define FL_VERSION 2.1000
+
+#if defined(__cplusplus) || defined(DOXYGEN) /* Allow this file to be included by C code */
+#include "FL_API.h"
+namespace fltk {
+
+/*!
+ Returns the value of FL_VERSION that FLTK was compiled with.
+ This can be compared to the FL_VERSION macro to see if the shared
+ library of fltk your program linked with is up to date.
+*/
+FL_API double version();
+
+}
+#endif
+
+#endif
Added: branches/branch-3.0/fltk/FileBrowser.h
===================================================================
--- branches/branch-3.0/fltk/FileBrowser.h (rev 0)
+++ branches/branch-3.0/fltk/FileBrowser.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,95 @@
+//
+// "$Id: FileBrowser.h 4926 2006-04-10 21:03:29Z fabien $"
+//
+// FileBrowser definitions.
+//
+// Copyright 1999-2006 by Michael Sweet.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+//
+// Include necessary header files...
+//
+
+#ifndef fltk_FileBrowser_h
+#define fltk_FileBrowser_h
+
+#include <fltk/Browser.h>
+#include <fltk/FileIcon.h>
+#include <fltk/filename.h>
+
+namespace fltk {
+
+
+//
+// FileBrowser class...
+//
+
+class FL_API FileBrowser : public Browser
+{
+ int filetype_;
+ const char *directory_;
+ float icon_size_;
+ const char *pattern_;
+
+public:
+ enum { FILES, DIRECTORIES };
+
+ FileBrowser(int, int, int, int, const char * = 0);
+
+ float icon_size() const {
+ return (icon_size_ <0? (2.0f* textsize()) : icon_size_);
+ }
+ void icon_size(float f) { icon_size_ = f; redraw(); };
+
+ void filter(const char *pattern);
+ const char *filter() const { return (pattern_); };
+
+ int load(const char *directory, File_Sort_F *sort = (File_Sort_F*) fltk::numericsort);
+
+ float textsize() const { return (Browser::textsize()); };
+ void textsize(float s) { Browser::textsize(s); icon_size_ = (uchar)(3 * s / 2); };
+
+ int filetype() const { return (filetype_); };
+ void filetype(int t) { filetype_ = t; };
+ const char * directory() const {return directory_;}
+
+ // adding or inserting a line into the fileBrowser
+ void insert(int n, const char* label, FileIcon* icon);
+ void insert(int n, const char* label, void* data){Menu::insert(n, label,data);}
+ void add(const char * line, FileIcon* icon);
+
+ // Showing or not showing the hidden files, that's the question:
+public:
+ // sets this flag if you want to see the hidden files in the browser
+ void show_hidden(bool show) { show_hidden_= show; }
+ bool show_hidden() const {return show_hidden_;}
+private:
+ bool show_hidden_;
+};
+
+}
+
+#endif // !_Fl_File_Browser_H_
+
+//
+// End of "$Id: FileBrowser.h 4926 2006-04-10 21:03:29Z fabien $".
+//
Added: branches/branch-3.0/fltk/FileChooser.h
===================================================================
--- branches/branch-3.0/fltk/FileChooser.h (rev 0)
+++ branches/branch-3.0/fltk/FileChooser.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,166 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.1000
+
+#ifndef FileChooser_h
+#define FileChooser_h
+// Header for //\n// "$Id: FileChooser.fl 5447 2006-09-19 00:09...
+#include <fltk/DoubleBufferWindow.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <fltk/Group.h>
+#include <fltk/Choice.h>
+#include <fltk/PopupMenu.h>
+#include <fltk/Button.h>
+#include <fltk/Preferences.h>
+#include <fltk/TiledGroup.h>
+#include <fltk/FileBrowser.h>
+#include <fltk/InvisibleBox.h>
+#include <fltk/CheckButton.h>
+#include <fltk/FileInput.h>
+#include <fltk/ReturnButton.h>
+#include <fltk/ask.h>
+
+namespace fltk {
+
+class FL_API FileChooser {
+public:
+ enum { SINGLE = 0, MULTI = 1, CREATE = 2, DIRECTORY = 4 };
+private:
+ static fltk::Preferences prefs_;
+ void (*callback_)(FileChooser*, void *);
+ void *data_;
+ char directory_[1024];
+ char pattern_[1024];
+ char preview_text_[2048];
+ int type_;
+ void favoritesButtonCB();
+ void favoritesCB(fltk::Widget *w);
+ void fileListCB();
+ void fileNameCB();
+ void newdir();
+ static void previewCB(FileChooser *fc);
+ void showChoiceCB();
+ void update_favorites();
+ void update_preview();
+ int favorites_showing;
+public:
+ FileChooser(const char *d, const char *p, int t, const char *title);
+private:
+ fltk::DoubleBufferWindow *window;
+ inline void cb_window_i(fltk::DoubleBufferWindow*, void*);
+ static void cb_window(fltk::DoubleBufferWindow*, void*);
+ fltk::Choice *showChoice;
+ inline void cb_showChoice_i(fltk::Choice*, void*);
+ static void cb_showChoice(fltk::Choice*, void*);
+ fltk::PopupMenu *favoritesButton;
+ inline void cb_favoritesButton_i(fltk::PopupMenu*, void*);
+ static void cb_favoritesButton(fltk::PopupMenu*, void*);
+public:
+ fltk::Button *newButton;
+private:
+ inline void cb_newButton_i(fltk::Button*, void*);
+ static void cb_newButton(fltk::Button*, void*);
+ inline void cb__i(fltk::TiledGroup*, void*);
+ static void cb_(fltk::TiledGroup*, void*);
+ fltk::FileBrowser *fileList;
+ inline void cb_fileList_i(fltk::FileBrowser*, void*);
+ static void cb_fileList(fltk::FileBrowser*, void*);
+ fltk::InvisibleBox *previewBox;
+public:
+ fltk::CheckButton *previewButton;
+private:
+ inline void cb_previewButton_i(fltk::CheckButton*, void*);
+ static void cb_previewButton(fltk::CheckButton*, void*);
+public:
+ fltk::CheckButton *showHiddenButton;
+private:
+ inline void cb_showHiddenButton_i(fltk::CheckButton*, void*);
+ static void cb_showHiddenButton(fltk::CheckButton*, void*);
+ fltk::FileInput *fileName;
+ inline void cb_fileName_i(fltk::FileInput*, void*);
+ static void cb_fileName(fltk::FileInput*, void*);
+ fltk::ReturnButton *okButton;
+ inline void cb_okButton_i(fltk::ReturnButton*, void*);
+ static void cb_okButton(fltk::ReturnButton*, void*);
+ fltk::Button *cancelButton;
+ inline void cb_cancelButton_i(fltk::Button*, void*);
+ static void cb_cancelButton(fltk::Button*, void*);
+ fltk::DoubleBufferWindow *favWindow;
+ fltk::FileBrowser *favList;
+ inline void cb_favList_i(fltk::FileBrowser*, void*);
+ static void cb_favList(fltk::FileBrowser*, void*);
+ fltk::Button *favUpButton;
+ inline void cb_favUpButton_i(fltk::Button*, void*);
+ static void cb_favUpButton(fltk::Button*, void*);
+ fltk::Button *favDeleteButton;
+ inline void cb_favDeleteButton_i(fltk::Button*, void*);
+ static void cb_favDeleteButton(fltk::Button*, void*);
+ fltk::Button *favDownButton;
+ inline void cb_favDownButton_i(fltk::Button*, void*);
+ static void cb_favDownButton(fltk::Button*, void*);
+ fltk::Button *favCancelButton;
+ inline void cb_favCancelButton_i(fltk::Button*, void*);
+ static void cb_favCancelButton(fltk::Button*, void*);
+ fltk::ReturnButton *favOkButton;
+ inline void cb_favOkButton_i(fltk::ReturnButton*, void*);
+ static void cb_favOkButton(fltk::ReturnButton*, void*);
+public:
+ ~FileChooser();
+ void callback(void (*cb)(FileChooser *, void *), void *d = 0);
+ void color(Color c);
+ Color color();
+ int count();
+ void directory(const char *d);
+ char * directory();
+ void filter(const char *p);
+ const char * filter();
+ int filter_value();
+ void filter_value(int f);
+ void hide();
+ void icon_size(uchar s);
+ uchar icon_size();
+ void label(const char *l);
+ const char * label();
+ void ok_label(const char *l);
+ const char * ok_label();
+ void preview(int e);
+ int preview() const { return previewButton->value(); };
+ void rescan();
+ void show();
+ void show(int x, int y);
+ bool exec(Window* p, bool grab);
+ int shown();
+ void textcolor(Color c);
+ Color textcolor();
+ void textfont(Font* f);
+ Font* textfont();
+ void textsize(float s);
+ float textsize();
+ void type(int t);
+ int type();
+ void * user_data() const;
+ void user_data(void *d);
+ const char *value(int f = 1);
+ void value(const char *filename);
+ int visible();
+ void favorites(int e);
+ int favorites() const;
+ static const char *add_favorites_label;
+ static const char *all_files_label;
+ static const char *custom_filter_label;
+ static const char *existing_file_label;
+ static const char *favorites_label;
+ static const char *filename_label;
+ static const char *filesystems_label;
+ static const char *manage_favorites_label;
+ static const char *new_directory_label;
+ static const char *new_directory_tooltip;
+ static const char *preview_label;
+ static const char *save_label;
+ static const char *show_label;
+ static File_Sort_F *sort;
+};
+extern FL_API void file_chooser_ok_label(const char*l);
+}
+// Header for //\n// End of "$Id: FileChooser.fl 5447 2006-09-1...
+#endif
Added: branches/branch-3.0/fltk/FileIcon.h
===================================================================
--- branches/branch-3.0/fltk/FileIcon.h (rev 0)
+++ branches/branch-3.0/fltk/FileIcon.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,114 @@
+//
+// "$Id: FileIcon.h 5576 2007-01-03 00:20:28Z spitzak $"
+//
+// Fl_FileIcon definitions for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1997-1999 by Easy Software Products.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_FileIcon_h
+#define fltk_FileIcon_h
+
+#include "FL_API.h"
+#include "Color.h"
+#include "Symbol.h"
+
+namespace fltk {
+
+class Widget;
+
+class FL_API FileIcon : public Symbol {
+ static FileIcon *first_; // Pointer to first icon/filetype
+ FileIcon *next_; // Pointer to next icon/filetype
+ const char *pattern_; // Pattern string
+ int type_; // Match only if directory or file?
+ int num_data_; // Number of data elements
+ int alloc_data_; // Number of allocated elements
+ short *data_; // Icon data
+ int w_,h_;
+ bool on_select_; // true if in browser or menu
+public:
+
+ enum // File types
+ {
+ ANY, // Any kind of file
+ PLAIN, // Only plain files
+ FIFO, // Only named pipes
+ DEVICE, // Only character and block devices
+ LINK, // Only symbolic links
+ DIRECTORY // Only directories
+ };
+
+ enum // Data opcodes
+ {
+ END, // End of primitive/icon
+ COLOR, // Followed by color index
+ LINE, // Start of line
+ CLOSEDLINE, // Start of closed line
+ POLYGON, // Start of polygon
+ OUTLINEPOLYGON, // Followed by outline color
+ VERTEX // Followed by scaled X,Y
+ };
+
+ FileIcon(const char *p, int t, int nd = 0, short *d = 0);
+ FileIcon(const FileIcon& f) ;
+ ~FileIcon();
+
+ short *add(short d);
+ short *add_color(Color c)
+ { short *d = add((short)COLOR); add((short)(c >> 16)); add((short)c); return (d); }
+ short *add_vertex(int x, int y)
+ { short *d = add(VERTEX); add(x); add(y); return (d); }
+ short *add_vertex(float x, float y)
+ { short *d = add(VERTEX); add((int)(x * 10000.0));
+ add((int)(y * 10000.0)); return (d); }
+ void clear() { num_data_ = 0; }
+
+ const Symbol* image() const {return image_;}
+
+ void load(const char *f);
+ const char *pattern() { return (pattern_); }
+ int size() { return (num_data_); }
+ int type() { return (type_); }
+ short *data() { return (data_); }
+
+ static FileIcon *find(const char *filename, int filetype = ANY);
+ static FileIcon *first() { return (first_); }
+ static void load_system_icons(void);
+
+ void value(Widget* i, bool on_select=false);
+
+ // virtual image overloads
+ void _measure(int& w, int& h) const;
+ void _draw(const Rectangle& r) const;
+private:
+ void image(const Symbol* direct_raster, bool owned=true) {image_=direct_raster;owned_image_=owned;}
+ void load_fti(const char *fti);
+ const Symbol* image_;
+ bool owned_image_;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: FileIcon.h 5576 2007-01-03 00:20:28Z spitzak $".
+//
Added: branches/branch-3.0/fltk/FileInput.h
===================================================================
--- branches/branch-3.0/fltk/FileInput.h (rev 0)
+++ branches/branch-3.0/fltk/FileInput.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,67 @@
+//
+// "$Id: FileInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// File_Input header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+// Original version Copyright 1998 by Curtis Edwards.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+#ifndef fltk_FileInput_H
+# define fltk_FileInput_H
+
+# include "Input.h"
+
+namespace fltk {
+
+class FL_API FileInput : public Input {
+ Color errorcolor_;
+ char ok_entry_;
+ short buttons_[120];
+ short pressed_;
+
+ void draw_buttons();
+ int handle_button(int event);
+ void update_buttons();
+
+public:
+
+ FileInput(int,int,int,int,const char *t=0);
+
+ void draw_boxes(bool pressed, const Rectangle& r);
+ virtual int handle(int);
+ virtual void draw();
+
+ Color errorcolor() const { return errorcolor_; }
+ void errorcolor(Color c) { errorcolor_ = c; }
+ int text(const char*);
+ int text(const char*, int);
+ const char * text() { return Input::text(); }
+};
+
+}
+#endif // !Fl_File_Input_H
+
+
+//
+// End of "$Id: FileInput.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/FillDial.h
===================================================================
--- branches/branch-3.0/fltk/FillDial.h (rev 0)
+++ branches/branch-3.0/fltk/FillDial.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,44 @@
+//
+// "$Id: FillDial.h 4910 2006-04-06 19:26:22Z fabien $"
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_FillDial_h
+#define fltk_FillDial_h
+
+#include "Dial.h"
+
+namespace fltk {
+
+/*! Dial but the constructor sets type() to FILL, so it draws a pie slice. */
+class FL_API FillDial : public Dial {
+public:
+ FillDial(int x,int y,int w,int h, const char *l = 0)
+ : Dial(x,y,w,h,l) {type(FILL);}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: FillDial.h 4910 2006-04-06 19:26:22Z fabien $".
+//
Added: branches/branch-3.0/fltk/FillSlider.h
===================================================================
--- branches/branch-3.0/fltk/FillSlider.h (rev 0)
+++ branches/branch-3.0/fltk/FillSlider.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,44 @@
+//
+// "$Id: FillSlider.h 5450 2006-09-19 02:33:42Z spitzak $"
+//
+// Copyright 2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_FillSlider_h
+#define fltk_FillSlider_h
+
+#include "Slider.h"
+
+namespace fltk {
+
+/*! Vertical Slider that is filled from the end (like a progress bar) */
+class FL_API FillSlider : public Slider {
+public:
+ FillSlider(int x,int y,int w,int h,const char *l=0)
+ : Slider(x,y,w,h,l) {slider_size(0);}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: FillSlider.h 5450 2006-09-19 02:33:42Z spitzak $".
+//
Added: branches/branch-3.0/fltk/Flags.h
===================================================================
--- branches/branch-3.0/fltk/Flags.h (rev 0)
+++ branches/branch-3.0/fltk/Flags.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,112 @@
+//
+// "$Id: Flags.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// Unified flags set for fltk. These flags control the appearance of
+// boxes and widgets. This same value is used to:
+//
+// 1. store state and other information in a widget or menu item
+// 2. provide hints to boxes, labeltypes, and images for how to draw
+// 3. provide structural information to an array of menu items
+//
+// These are shared because various parts of the code, especially
+// drawing, want all of this information at once, and providing it
+// as a single word is the easiest way.
+//
+
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Flags_h
+#define fltk_Flags_h
+
+namespace fltk {
+
+/// \name fltk/Flags.h
+//@{
+
+/*! Type returned by fltk::Widget::flags() and passed to fltk::Box
+ and many other drawing functions. */
+typedef int Flags;
+
+/*! For back compatability with fltk1.1 */
+typedef Flags Align; // for back compatability
+enum {
+ NO_FLAGS = 0x00000000,
+
+ // from Align, values are comptable with fltk 1.0:
+ // These control the location and appearance of labels:
+ // Warning: unused numbers may change behavior!
+ ALIGN_TOP = 0x00000001, //!< Label is centered above widget
+ ALIGN_BOTTOM = 0x00000002, //!< Label is centered below widget
+ ALIGN_LEFT = 0x00000004, //!< Label is to left of widget
+ ALIGN_RIGHT = 0x00000008, //!< Label is to right of widget
+ ALIGN_CENTER = 0x00000010, //!< (0) The label is centered inside widget
+ ALIGN_INSIDE = 0x00000020, //!< Label is inside widget, image centered
+ ALIGN_CLIP = 0x00000040, //!< The label is clipped to the widget
+ ALIGN_WRAP = 0x00000080, //!< The label is word-wrapped
+ ALIGN_MASK = 0x000000FF, //!< Used to split align() from flags()
+ ALIGN_POSITIONMASK = 0x0000000F, //!< Used to split align() from flags()
+
+ ALIGN_TOPLEFT = (ALIGN_TOP|ALIGN_LEFT), //!< Label is left-justified above widget
+ ALIGN_BOTTOMLEFT = (ALIGN_BOTTOM|ALIGN_LEFT), //!< Label is left-justified below widget
+ ALIGN_TOPRIGHT = (ALIGN_TOP|ALIGN_RIGHT), //!< Label is right-justified above widget
+ ALIGN_BOTTOMRIGHT = (ALIGN_BOTTOM|ALIGN_RIGHT), //!< Label is right-justified below widget
+ ALIGN_CENTERLEFT = (ALIGN_CENTER|ALIGN_LEFT), //!< Label is centered in space left of widget
+ ALIGN_CENTERRIGHT = (ALIGN_CENTER|ALIGN_RIGHT), //!< Label is centered in space left of widget
+ ALIGN_INSIDE_TOP = (ALIGN_INSIDE|ALIGN_TOP), //!< Label is inside widget at top
+ ALIGN_INSIDE_BOTTOM = (ALIGN_INSIDE|ALIGN_BOTTOM), //!< Label is inside widget at bottom
+ ALIGN_INSIDE_LEFT = (ALIGN_INSIDE|ALIGN_LEFT), //!< Label is inside widget at left
+ ALIGN_INSIDE_TOPLEFT = (ALIGN_INSIDE|ALIGN_TOPLEFT), //!< Label is inside widget at top left
+ ALIGN_INSIDE_BOTTOMLEFT = (ALIGN_INSIDE|ALIGN_BOTTOMLEFT),//!< Label is inside widget at bottom left
+ ALIGN_INSIDE_RIGHT = (ALIGN_INSIDE|ALIGN_RIGHT), //!< Label is inside widget at right
+ ALIGN_INSIDE_TOPRIGHT = (ALIGN_INSIDE|ALIGN_TOPRIGHT), //!< Label is inside widget at top right
+ ALIGN_INSIDE_BOTTOMRIGHT= (ALIGN_INSIDE|ALIGN_BOTTOMRIGHT),//!< Label is inside widget bottom right
+ ALIGN_MENU = (ALIGN_INSIDE_LEFT|ALIGN_CLIP), //!< Label is inside widget bottom right
+ ALIGN_BROWSER = ALIGN_MENU, //!< Label is inside widget bottom right
+
+ INACTIVE = 0x00000100, //!< !active()
+ OUTPUT = 0x00000200, //!< does not get events, draw text colors
+ STATE = 0x00000400, //!< state(), value() for buttons
+ SELECTED = 0x00000800, //!< chosen in browser/menu, draw selected colors
+ INVISIBLE = 0x00001000, //!< !visible(), draw_frame()
+ HIGHLIGHT = 0x00002000, //!< draw highlighted
+ CHANGED = 0x00004000, //!< value changed since last callback
+ COPIED_LABEL = 0x00008000, //!< copy_label() was called
+ RAW_LABEL = 0x00010000, //!< don't interpret & or @ in label
+ LAYOUT_VERTICAL = 0x00020000, //!< fltk::Pack puts this widget vertical
+ TAB_TO_FOCUS = 0x00040000, //!< Widget::tab_to_focus();
+ CLICK_TO_FOCUS = 0x00080000, //!< Widget::click_to_focus()
+ INACTIVE_R = 0x00100000, //!< draw it grayed-out
+ FOCUSED = 0x00200000, //!< draw with keyboard focus
+ PUSHED = 0x00400000, //!< draw pushed-in
+ RESIZE_NONE = 0, //!< default behavior
+ RESIZE_FIT = 0x01000000, //!< proportionnaly resize img in widget
+ RESIZE_FILL = 0x00800000, //!< resize img to fill the widget
+ OPENED = STATE //!< opened browser hierarchy parent
+};
+
+//@}
+
+}
+
+#endif
+
+//
+// End of "$Id: Flags.h 6233 2008-09-14 07:54:06Z spitzak $".
+//
Added: branches/branch-3.0/fltk/FloatInput.h
===================================================================
--- branches/branch-3.0/fltk/FloatInput.h (rev 0)
+++ branches/branch-3.0/fltk/FloatInput.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,51 @@
+//
+// "$Id: FloatInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// NumericInput modified to only allow floating point to by
+// typed. Currently this is implemented by the base class by checking
+// type() but this may change in the future.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_FloatInput_h
+#define fltk_FloatInput_h
+
+#include "NumericInput.h"
+
+namespace fltk {
+
+class FL_API FloatInput : public NumericInput {
+ virtual bool replace(int, int, const char*, int);
+public:
+ enum { FLOAT = 1, INT = 2 };
+ FloatInput(int x,int y,int w,int h,const char *l = 0)
+ : NumericInput(x,y,w,h,l) { type(FLOAT); }
+ long lvalue() const;
+ int ivalue() const { return int(lvalue()); }
+ double fvalue() const;
+};
+
+}
+#endif
+
+//
+// End of "$Id: FloatInput.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/Font.h
===================================================================
--- branches/branch-3.0/fltk/Font.h (rev 0)
+++ branches/branch-3.0/fltk/Font.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,70 @@
+//
+// "$Id: Font.h 5461 2006-09-19 02:49:30Z spitzak $"
+//
+// Copyright 2004 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Font_h
+#define fltk_Font_h
+
+#include "Style.h"
+
+namespace fltk {
+
+enum { // values for attributes:
+ BOLD = 1,
+ ITALIC = 2,
+ BOLD_ITALIC = 3
+};
+
+struct FL_API Font {
+ const char* name_;
+ int attributes_;
+ // other fields are added here!
+
+ const char* name() const;
+
+ const char* name(int* p) {*p = attributes_; return name_;}
+
+ Font* plus(int attributes);
+ Font* bold() {return plus(BOLD);}
+ Font* italic() {return plus(ITALIC);}
+
+ int sizes(int*&);
+
+ int encodings(const char**&);
+
+ const char* system_name();
+
+ static const char* current_name();
+
+};
+
+// Find a Font from a name and attributes:
+FL_API Font* font(const char* name, int attrib = 0);
+
+// Find a Font from an fltk1 integer font id:
+FL_API Font* font(int);
+
+// Find and return every font on the system.
+FL_API int list_fonts(Font**& arrayp);
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/GlWindow.h
===================================================================
--- branches/branch-3.0/fltk/GlWindow.h (rev 0)
+++ branches/branch-3.0/fltk/GlWindow.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,108 @@
+//
+// "$Id: GlWindow.h 5892 2007-06-08 18:15:37Z spitzak $"
+//
+// OpenGL window. You must subclass this and implement draw() if
+// you want this to work.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_GlWindow_h
+#define fltk_GlWindow_h
+
+#include "Window.h"
+
+namespace fltk {
+
+#ifndef GLContext // you can define this to the correct type if wanted
+typedef void* GLContext; //!< Actually a GLXContext or HGLDC
+#endif
+
+class GlChoice; // structure to hold result of glXChooseVisual
+class GlOverlay; // used by X version for the overlay
+
+enum {
+ NO_AUTO_SWAP = 1024,
+ NO_ERASE_OVERLAY = 2048
+};
+
+class FL_GL_API GlWindow : public Window {
+
+public:
+
+ void create();
+ void flush();
+ void destroy();
+ void layout();
+
+ char valid() const {return valid_;}
+ void valid(char i) {valid_ = i;}
+ void invalidate();
+
+ int mode() const {return mode_;}
+ bool mode(int a);
+ static bool can_do(int);
+ bool can_do() const {return can_do(mode_);}
+
+ GLContext context() const {return context_;}
+ // this wrapper is so c++mangled name does not depend on GLContext type:
+ void context(GLContext v, bool destroy_flag = false) {_context(v,destroy_flag);}
+ void make_current();
+ void swap_buffers();
+ void ortho();
+
+ bool can_do_overlay();
+ void redraw_overlay();
+ void hide_overlay();
+ void make_overlay_current();
+
+ ~GlWindow();
+ GlWindow(int W, int H, const char *l=0) : Window(W,H,l) {init();}
+ GlWindow(int X, int Y, int W, int H, const char *l=0)
+ : Window(X,Y,W,H,l) {init();}
+
+ virtual void draw() = 0;
+ virtual void draw_overlay();
+
+ virtual int handle( int event );
+
+private:
+
+ int mode_;
+ GlChoice *gl_choice;
+ GLContext context_;
+ void _context(void*, bool destroy_flag);
+ char valid_;
+ char damage1_; // damage() of back buffer
+ void init();
+
+ void *overlay;
+ void make_overlay();
+ friend class GlOverlay;
+
+ void draw_swap();
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: GlWindow.h 5892 2007-06-08 18:15:37Z spitzak $".
+//
Added: branches/branch-3.0/fltk/Group.h
===================================================================
--- branches/branch-3.0/fltk/Group.h (rev 0)
+++ branches/branch-3.0/fltk/Group.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,115 @@
+//
+// "$Id: Group.h 5915 2007-06-19 17:49:29Z spitzak $"
+//
+// Group is the base class for all container widgets. For historical
+// reasons it also provides a default version of layout.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Group_h
+#define fltk_Group_h
+
+#ifndef fltk_Widget_h
+# include "Widget.h"
+#endif
+
+namespace fltk {
+
+class FL_API Group : public Widget {
+public:
+
+ int children() const {return children_;}
+ Widget* child(int n) const {return array_[n];}
+
+ void draw();
+ void layout();
+ int handle(int);
+
+ void begin() {current_ = this;}
+ void end() {current_ = (Group*)parent();}
+ static Group *current() {return current_;}
+ static void current(Group *g) {current_ = g;}
+
+ int find(const Widget*) const;
+ int find(const Widget& o) const {return find(&o);}
+
+ Group(int,int,int,int, const char * = 0, bool begin=false);
+ virtual ~Group();
+ void add(Widget&);
+ void add(Widget* o) {add(*o);}
+ void insert(Widget&, int index);
+ void insert(Widget& o, Widget* before) {insert(o,find(before));}
+ void remove(int index);
+ void remove(Widget& o) {remove(find(o));}
+ void remove(Widget* o) {remove(find(*o));}
+ void remove_all();
+ void replace(int index, Widget&);
+ void replace(Widget& old, Widget& o) {replace(find(old),o);}
+ void swap(int indexA, int indexB);
+ void clear();
+
+ void resizable(Widget& o) {resizable_ = &o;}
+ void resizable(Widget* o) {resizable_ = o;}
+ Widget* resizable() const {return resizable_;}
+ void add_resizable(Widget& o) {resizable_ = &o; add(o);}
+ void init_sizes();
+
+ void focus_index(int v) {focus_index_ = v;}
+ void set_focus(Widget* w) {focus_index_ = find(w);}
+ int focus_index() const {return focus_index_;}
+ static int navigation_key();
+
+ // back compatability function:
+ friend FL_FORMS_API void end_group(); // forms emulation function
+ void fix_old_positions();
+
+ Flags resize_align() const {return resize_align_;}
+ void resize_align(Flags f) {resize_align_ = f;}
+
+protected:
+
+ void draw_child(Widget&) const;
+ void update_child(Widget&) const;
+ void draw_outside_label(Widget&) const ;
+ int initial_w, initial_h;
+ int* sizes();
+ void layout(const Rectangle&, int layout_damage);
+
+private:
+
+ int children_;
+ int focus_index_;
+ Widget** array_;
+ Widget* resizable_;
+ Flags resize_align_;
+ int *sizes_; // remembered initial sizes of children
+
+ static Group *current_;
+
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Group.h 5915 2007-06-19 17:49:29Z spitzak $".
+//
Added: branches/branch-3.0/fltk/HelpDialog.h
===================================================================
--- branches/branch-3.0/fltk/HelpDialog.h (rev 0)
+++ branches/branch-3.0/fltk/HelpDialog.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,66 @@
+// generated by Fast Light User Interface Designer (fluid) version 2.0100
+
+#ifndef HelpDialog_h
+#define HelpDialog_h
+// Header for //\n// "$Id: HelpDialog.fl 4721 2005-12-19 16:52:...
+#include <fltk/DoubleBufferWindow.h>
+#include <fltk/HelpView.h>
+#include <fltk/Group.h>
+#include <fltk/Button.h>
+#include <fltk/Input.h>
+
+namespace fltk {
+
+class FL_IMAGES_API HelpDialog {
+ int index_;
+ int max_;
+ int line_[100];
+ char file_[100][256];
+ int find_pos_;
+public:
+ HelpDialog();
+private:
+ fltk::DoubleBufferWindow *window_;
+ fltk::HelpView *view_;
+ inline void cb_view__i(fltk::HelpView*, void*);
+ static void cb_view_(fltk::HelpView*, void*);
+ inline void cb_Close_i(fltk::Button*, void*);
+ static void cb_Close(fltk::Button*, void*);
+ fltk::Button *back_;
+ inline void cb_back__i(fltk::Button*, void*);
+ static void cb_back_(fltk::Button*, void*);
+ fltk::Button *forward_;
+ inline void cb_forward__i(fltk::Button*, void*);
+ static void cb_forward_(fltk::Button*, void*);
+ fltk::Button *smaller_;
+ inline void cb_smaller__i(fltk::Button*, void*);
+ static void cb_smaller_(fltk::Button*, void*);
+ fltk::Button *larger_;
+ inline void cb_larger__i(fltk::Button*, void*);
+ static void cb_larger_(fltk::Button*, void*);
+ fltk::Input *find_;
+ inline void cb_find__i(fltk::Input*, void*);
+ static void cb_find_(fltk::Input*, void*);
+public:
+ ~HelpDialog();
+ int h();
+ void hide();
+ void load(const char *f);
+ void position(int xx, int yy);
+ void resize(int xx, int yy, int ww, int hh);
+ void show();
+ void show(int argc, char **argv);
+ void textsize(uchar s);
+ uchar textsize();
+ void topline(const char *n);
+ void topline(int n);
+ void value(const char *f);
+ const char * value() const;
+ int visible();
+ int w();
+ int x();
+ int y();
+};
+}
+// Header for //\n// End of "$Id: HelpDialog.fl 4721 2005-12-19...
+#endif
Added: branches/branch-3.0/fltk/HelpView.h
===================================================================
--- branches/branch-3.0/fltk/HelpView.h (rev 0)
+++ branches/branch-3.0/fltk/HelpView.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,201 @@
+//
+// "$Id: HelpView.h 5860 2007-05-30 18:32:26Z sanel.z $"
+//
+// Help Viewer widget definitions.
+//
+// Copyright 1997-2006 by Easy Software Products.
+// Image support donated by Matthias Melcher, Copyright 2000.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef HelpView_H
+# define HelpView_H
+
+//
+// Include necessary header files...
+//
+
+# include <stdio.h>
+# include <fltk/Group.h>
+# include <fltk/Scrollbar.h>
+# include <fltk/draw.h>
+# include <fltk/SharedImage.h>
+
+namespace fltk {
+
+//
+// HelpFunc type - link callback function for files...
+//
+
+
+typedef const char *(HelpFunc) (Widget *, const char *);
+
+
+//
+// HelpBlock structure...
+//
+
+struct HelpBlock {
+ const char *start, // Start of text
+ *end; // End of text
+ uchar border; // Draw border?
+ Color bgcolor; // Background color
+ int x, // Indentation/starting X coordinate
+ y, // Starting Y coordinate
+ w, // Width
+ h; // Height
+ int line[32]; // Left starting position for each line
+};
+
+//
+// HelpLink structure...
+//
+
+struct HelpLink {
+ char filename[192], // Reference filename
+ name[32]; // Link target (blank if none)
+ int x, // X offset of link text
+ y, // Y offset of link text
+ w, // Width of link text
+ h; // Height of link text
+};
+
+//
+// HelpTarget structure...
+//
+
+struct HelpTarget {
+ char name[32]; // Target name
+ int y; // Y offset of target
+};
+
+//
+// HelpView class...
+//
+
+class FL_API HelpView : public Group //// Help viewer widget
+{
+ enum { RIGHT = -1, CENTER, LEFT }; // Alignments
+
+ char title_[1024]; // Title string
+ Color defcolor_, // Default text color
+ bgcolor_, // Background color
+ textcolor_, // Text color
+ linkcolor_; // Link color
+ Font *textfont_; // Default font for text
+ int textsize_; // Default font size
+ const char *value_; // HTML text value
+
+ int nblocks_, // Number of blocks/paragraphs
+ ablocks_; // Allocated blocks
+ HelpBlock *blocks_; // Blocks
+
+ int nfonts_; // Number of fonts in stack
+ Font *fonts_[100]; // Font stack
+ int fontsizes_[100];
+
+ HelpFunc *link_; // Link transform function
+
+ int nlinks_, // Number of links
+ alinks_; // Allocated links
+ HelpLink *links_; // Links
+
+ int ntargets_, // Number of targets
+ atargets_; // Allocated targets
+ HelpTarget *targets_; // Targets
+
+ char directory_[1024]; // Directory for current file
+ char filename_[1024]; // Current filename
+ int topline_, // Top line in document
+ leftline_, // Lefthand position
+ size_, // Total document length
+ hsize_; // Maximum document width
+ Scrollbar *scrollbar_, // Vertical scrollbar for document
+ *hscrollbar_; // Horizontal scrollbar
+
+ HelpBlock *add_block (const char *s, int xx, int yy, int ww, int hh,
+ uchar border = 0);
+ void add_link (const char *n, int xx, int yy, int ww, int hh);
+ void add_target (const char *n, int yy);
+ static int compare_targets (const HelpTarget * t0,
+ const HelpTarget * t1);
+ int do_align (HelpBlock * block, int line, int xx, int a, int &l);
+ void write_text (const char * buf, const char * ptr, int X, int Y, int X1, int underline);
+ void draw ();
+ void format ();
+ void format_table (int *table_width, int *columns, const char *table);
+ int get_align (const char *p, int a);
+ const char *get_attr (const char *p, const char *n, char *buf, int bufsize);
+ Color get_color (const char *n, Color c);
+ SharedImage *get_image (const char *name, int W, int H);
+ int get_length (const char *l);
+ int handle (int);
+
+ void initfont (Font *&f, int &s);
+ void pushfont (Font *f, int s);
+ void popfont (Font *&f, int &s);
+
+public:
+
+ HelpView (int xx, int yy, int ww, int hh, const char *l = 0);
+
+ ~HelpView ();
+ const char *directory () const {
+ if (directory_[0])
+ return (directory_);
+ else
+ return ((const char *) 0);
+ }
+ const char *filename () const {
+ if (filename_[0])
+ return (filename_);
+ else
+ return ((const char *) 0);
+ } void link (HelpFunc * fn) {
+ link_ = fn;
+ }
+ int load (const char *f);
+ void layout();
+ int size () const { return (size_); }
+
+ void textcolor (Color c);
+ void textfont (Font *f);
+ void textsize (int s);
+
+ Color textcolor () const { return (defcolor_); }
+ Font *textfont () const { return (textfont_); }
+ int textsize () const { return (textsize_); }
+ const char *title () { return (title_); }
+ void topline (const char *n);
+ void topline (int);
+ int topline () const { return (topline_); }
+ void leftline (int);
+ int leftline () const { return (leftline_); }
+ void value (const char *v);
+ const char *value () const { return (value_); }
+ int find (const char *s,int p);
+};
+
+} // namespace fltk
+
+#endif // !HelpView_H
+
+//
+// End of "$Id: HelpView.h 5860 2007-05-30 18:32:26Z sanel.z $".
+//
Added: branches/branch-3.0/fltk/HighlightButton.h
===================================================================
--- branches/branch-3.0/fltk/HighlightButton.h (rev 0)
+++ branches/branch-3.0/fltk/HighlightButton.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,45 @@
+//
+// "$Id: HighlightButton.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// This button highlights even if the default style does not do so.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_HighlightButton_h
+#define fltk_HighlightButton_h
+
+#include "Button.h"
+
+namespace fltk {
+
+class FL_API HighlightButton : public Button {
+public:
+ HighlightButton(int x,int y,int w,int h,const char *l=0);
+ static NamedStyle* default_style;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: HighlightButton.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/Image.h
===================================================================
--- branches/branch-3.0/fltk/Image.h (rev 0)
+++ branches/branch-3.0/fltk/Image.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,116 @@
+// "$Id: Image.h 5768 2007-04-08 19:58:56Z spitzak $"
+//
+// Copyright 1998-2005 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Image_h
+#define fltk_Image_h
+
+#include "Symbol.h"
+# undef OPAQUE // fix for windows.h
+
+namespace fltk {
+
+class FL_API Widget;
+struct Picture; // secret internal system-specific data
+
+class FL_API Image : public Symbol {
+
+ PixelType pixeltype_; int w_, h_;
+ Picture* picture;
+ int flags; enum {COPIED=1, FETCHED=2, FORCEARGB32=4, MEASUREFETCH=8};
+
+ static unsigned long memused_;
+
+public:
+
+ Image(const char* name=0) :
+ Symbol(name), pixeltype_(fltk::RGB32), w_(12), h_(12),
+ picture(0), flags(MEASUREFETCH) {}
+ Image(int w, int h, const char* name=0) :
+ Symbol(name), pixeltype_(fltk::RGB32), w_(w), h_(h),
+ picture(0), flags(0) {}
+ Image(PixelType p, int w, int h, const char* name=0) :
+ Symbol(name), pixeltype_(p), w_(w), h_(h),
+ picture(0), flags(0) {}
+ Image(const uchar* d, PixelType p, int w, int h) :
+ Symbol(), picture(0) {setimage(d,p,w,h);}
+ Image(const uchar* d, PixelType p, int w, int h, int linedelta) :
+ Symbol(), picture(0) {setimage(d,p,w,h,linedelta);}
+ ~Image();
+
+ PixelType pixeltype() const {return pixeltype_;}
+ int depth() const {return fltk::depth(pixeltype_);}
+ int w() const {return w_;}
+ int width() const {return w_;}
+ int h() const {return h_;}
+ int height() const {return h_;}
+
+ void setpixeltype(PixelType);
+ void setsize(int w, int h);
+ void setpixels(const uchar* d, const Rectangle&, int linedelta);
+ void setpixels(const uchar* d, const Rectangle& r) {setpixels(d,r,depth()*r.w());}
+ void setpixels(const uchar* d, int y);
+ uchar* linebuffer(int y);
+
+ void setimage(const uchar* d, PixelType p, int w, int h, int linedelta);
+ void setimage(const uchar* d, PixelType p, int w, int h) {setimage(d,p,w,h,fltk::depth(p)*w);}
+
+ uchar* buffer();
+ const uchar* buffer() const;
+ void set_forceARGB32();
+ void clear_forceARGB32();
+ bool forceARGB32() const {return (flags&FORCEARGB32) != 0;}
+ PixelType buffer_pixeltype() const;
+ int buffer_depth() const;
+ int buffer_width() const;
+ int buffer_height() const;
+ int buffer_linedelta() const;
+ void buffer_changed() {flags &= ~COPIED;}
+ void destroy();
+
+ void draw(int x, int y) const;
+ void draw(const Rectangle& r) const {_draw(r);}
+ void draw(const Rectangle& from, const Rectangle& to) const;
+
+ void _draw(const Rectangle&) const; // Symbol virtual method
+ void _measure(int& W, int& H) const; // Symbol virtual method
+ bool fills_rectangle() const; // Symbol virtual method
+ virtual bool fetch(); // for image file reading subclasses
+ void fetch_if_needed() const;
+ void refetch() {flags &= ~FETCHED;}
+
+ unsigned long mem_used() const;
+ static unsigned long total_mem_used() {return memused_;}
+
+ // for back compatability with fltk1 only:
+ void label(Widget* o);
+
+ // see also: GSave
+ void make_current();
+
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Image.h 5768 2007-04-08 19:58:56Z spitzak $".
+//
Added: branches/branch-3.0/fltk/Input.h
===================================================================
--- branches/branch-3.0/fltk/Input.h (rev 0)
+++ branches/branch-3.0/fltk/Input.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,132 @@
+//
+// "$Id: Input.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// One-line text input field.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Input_h
+#define fltk_Input_h
+
+#ifndef fltk_Widget_h
+#include "Widget.h"
+#endif
+
+namespace fltk {
+
+class FL_API Input : public Widget {
+public:
+ enum { // values for type()
+ NORMAL = 0,
+ FLOAT_INPUT = 1,
+ INT_INPUT = 2,
+ SECRET = 3,
+ MULTILINE = 4,
+ WORDWRAP = 5
+ };
+
+ Input(int, int, int, int, const char* = 0);
+ ~Input();
+ static NamedStyle* default_style;
+
+ void draw();
+ void draw(const Rectangle&);
+ int handle(int);
+ int handle(int event, const Rectangle&);
+ bool handle_key();
+
+ bool text(const char*);
+ bool text(const char*, int);
+ bool static_text(const char*);
+ bool static_text(const char*, int);
+ const char* text() const {return text_;}
+ char at(int i) const {return text_[i];}
+#ifdef FLTK_1_WIDGET // back-compatability section:
+ char index(int i) const {return text_[i];}
+#endif
+#ifndef SKIP_DEPRECIATED
+ bool value(const char* v) {return text(v);}
+ bool value(const char* v, int n) {return text(v,n);}
+ bool static_value(const char* v) {return static_text(v);}
+ const char* value() const {return text_;}
+#endif
+ int size() const {return size_;}
+ void reserve(int newsize);
+
+ int position() const {return position_;}
+ int mark() const {return mark_;}
+ void position(int p, int m);
+ void position(int p) {position(p, p);}
+ void up_down_position(int position, bool extend);
+ void mark(int m) { position(position(), m);}
+
+ virtual bool replace(int, int, const char*, int);
+ bool cut() {return replace(position(), mark(), 0, 0);}
+ bool cut(int n) {return replace(position(), position()+n, 0, 0);}
+ bool cut(int a, int b) {return replace(a, b, 0, 0);}
+ bool insert(const char* t);
+ bool insert(const char* t, int l){return replace(position_, mark_, t, l);}
+ bool replace(int a, int b, char c) {return replace(a,b,&c,1);}
+ bool copy(bool clipboard = true);
+ bool undo();
+ void maybe_do_callback();
+
+ int word_start(int i) const;
+ int word_end(int i) const;
+ int line_start(int i) const;
+ int line_end(int i) const;
+ int mouse_position(const Rectangle&) const;
+ int xscroll() const {return xscroll_;}
+ int yscroll() const {return yscroll_;}
+
+private:
+
+ const char* text_;
+ char* buffer;
+
+ int size_;
+ int bufsize;
+ int position_;
+ int mark_;
+ int xscroll_, yscroll_;
+ int mu_p;
+ int label_width;
+
+ const char* expand(const char*, char*, int) const;
+ float expandpos(const char*, const char*, const char*, int*) const;
+ void minimal_update(int, int);
+ void minimal_update(int p);
+ void erase_cursor_at(int p);
+
+ void setfont() const;
+
+ void shift_position(int p);
+ void shift_up_down_position(int p);
+
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Input.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/InputBrowser.h
===================================================================
--- branches/branch-3.0/fltk/InputBrowser.h (rev 0)
+++ branches/branch-3.0/fltk/InputBrowser.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,100 @@
+//
+// "$Id: InputBrowser.h 5571 2006-12-30 08:20:02Z spitzak $"
+//
+// MicroSoft style "ComboBox" with the menu appearing below with a
+// scrollbar. I would like to use the name "ComboBox" or "InputChoice"
+// for a more user-friendly version which uses pop-up menus and
+// positions the menu with the cursor pointing at the current item,
+// but this version can be used to get what MicroSoft users expect.
+// The implementation is a good example of how to get a widget to appear
+// in a modal pop-up window.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_InputBrowser_h
+#define fltk_InputBrowser_h
+
+#include "Menu.h"
+#include "Input.h"
+
+namespace fltk {
+
+class ComboBrowser;
+class ComboWindow;
+
+class FL_API InputBrowser : public Menu {
+public:
+ enum { // values for type()
+ NORMAL = 0,
+ NONEDITABLE = 1,
+ INDENTED = 2,
+ NONEDITABLE_INDENTED = 3
+ };
+
+ InputBrowser(int,int,int,int,const char * = 0);
+ ~InputBrowser();
+ static NamedStyle* default_style;
+
+ void popup();
+ void hide_popup();
+ virtual int popup(int x, int y, int w, int h) { InputBrowser::popup(); return Menu::popup(Rectangle(x,y,w,h)); }
+
+ virtual int handle(int);
+
+ Widget* item() const ;
+ Widget* item(Widget* v) const ;
+
+ void minw(int i) { minw_ = i; }
+ void minh(int i) { minh_ = i; }
+ int minw() { return minw_; }
+ int minh() { return minh_; }
+
+ void maxw(int i) { maxw_ = i; }
+ void maxh(int i) { maxh_ = i; }
+ int maxw() { return maxw_; }
+ int maxh() { return maxh_; }
+
+ void text(const char *v) { m_input.text(v); }
+ const char *text() const { return m_input.text(); }
+
+protected:
+ virtual void draw();
+ static void input_cb(Input *w, InputBrowser *ib);
+
+ Input m_input;
+
+ ComboWindow *win;
+ ComboBrowser *list;
+
+ friend class ComboWindow;
+ friend class ComboBrowser;
+
+ int minw_, minh_, maxw_, maxh_;
+ int over_now, over_last;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: InputBrowser.h 5571 2006-12-30 08:20:02Z spitzak $".
+//
Added: branches/branch-3.0/fltk/IntInput.h
===================================================================
--- branches/branch-3.0/fltk/IntInput.h (rev 0)
+++ branches/branch-3.0/fltk/IntInput.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,42 @@
+//
+// "$Id: IntInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_IntInput_h
+#define fltk_IntInput_h
+
+#include "FloatInput.h"
+
+namespace fltk {
+
+class FL_API IntInput : public FloatInput {
+public:
+ IntInput(int x,int y,int w,int h,const char *l = 0)
+ : FloatInput(x,y,w,h,l) { type(INT); }
+};
+
+}
+#endif
+
+//
+// End of "$Id: IntInput.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/InvisibleBox.h
===================================================================
--- branches/branch-3.0/fltk/InvisibleBox.h (rev 0)
+++ branches/branch-3.0/fltk/InvisibleBox.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,30 @@
+//
+// "$Id: InvisibleBox.h 5698 2007-02-19 05:40:36Z spitzak $"
+//
+// This is a box that is invisible due to not having a box. The
+// label still prints so it can be used to position labels. Also
+// this is useful as a resizable() widget.
+
+#ifndef fltk_InvisibleBox_h
+#define fltk_InvisibleBox_h
+
+#include "Widget.h"
+
+namespace fltk {
+
+class FL_API InvisibleBox : public Widget {
+public:
+ InvisibleBox(int x, int y, int w, int h, const char *l=0);
+ InvisibleBox(Box* b, int x, int y, int w, int h, const char *l);
+ static NamedStyle* default_style;
+ int handle(int);
+ void draw();
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: InvisibleBox.h 5698 2007-02-19 05:40:36Z spitzak $".
+//
Added: branches/branch-3.0/fltk/Item.h
===================================================================
--- branches/branch-3.0/fltk/Item.h (rev 0)
+++ branches/branch-3.0/fltk/Item.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,57 @@
+//
+// "$Id: Item.h 5576 2007-01-03 00:20:28Z spitzak $"
+//
+// Widget designed to be a menu or browser item.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Item_h
+#define fltk_Item_h
+
+#ifndef fltk_Widget_h
+#include "Widget.h"
+#endif
+
+namespace fltk {
+
+class FL_API Item : public Widget {
+public:
+
+ void draw();
+ void layout();
+ int handle(int);
+
+ Item(const char* label = 0);
+ Item(const char* label, const Symbol*);
+ Item(const char* label, int shortcut, Callback *callback=0, void *user_data_=0, int flags=0);
+
+ static NamedStyle* default_style;
+ static void set_style(const Style*, bool menubar);
+ static void set_style(const Widget* w, bool f) {set_style(w->style(),f);}
+ static void clear_style() {set_style(Widget::default_style,false);}
+
+private:
+ void init(); // common constructor initialization
+};
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/ItemGroup.h
===================================================================
--- branches/branch-3.0/fltk/ItemGroup.h (rev 0)
+++ branches/branch-3.0/fltk/ItemGroup.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,75 @@
+//
+// "$Id: ItemGroup.h 5575 2007-01-02 17:31:40Z spitzak $"
+//
+// Widget designed to be a nested list in a menu or browser. This
+// copies the drawing and style code from Item. I did not modify the
+// base Menu class this way because the style inheritance would mess
+// up the styles of MenuButton and MenuBar. Code is in Item.cxx
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_ItemGroup_h
+#define fltk_ItemGroup_h
+
+#include "Menu.h"
+
+namespace fltk {
+
+class FL_API ItemGroup : public Menu {
+public:
+ void draw();
+ void layout();
+ int handle(int);
+ ItemGroup(const char* label = 0, bool begin=false);
+ ItemGroup(const char* label, const Symbol*, bool begin=false);
+};
+
+/** \class MenuSection
+ This class will elegantly facilitate dynamic (& hand-made) menu code writing
+ by creating and calling begin() on an ItemGroup in the constructor and
+ calling end() in the destructor:
+ \code
+ mymenu->begin();
+ new Item("in main menu");
+ {MenuSection g("submenu title");
+ new Item("in submenu");
+ new Item("also in submenu");
+ } // destructor ends the submenu
+ \endcode
+*/
+class FL_API MenuSection {
+ ItemGroup* group_;
+public:
+ //! build a typical submenu group section, then call begin()
+ MenuSection(const char* label = 0) { group_ = new ItemGroup(label,true); }
+
+ MenuSection(const char* label, const Symbol* i) { group_ = new ItemGroup(label,i,true); }
+
+ //! call end() at destruction
+ ~MenuSection() {group_->end();}
+
+ //! The ItemGroup created by this.
+ ItemGroup* group() const {return group_;}
+};
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/LabelType.h
===================================================================
--- branches/branch-3.0/fltk/LabelType.h (rev 0)
+++ branches/branch-3.0/fltk/LabelType.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,61 @@
+//
+// "$Id: LabelType.h 5770 2007-04-10 10:42:07Z spitzak $"
+//
+// A LabelType determines how to draw the text of the label. This
+// is not used very much, it can be used to draw engraved or shadowed
+// labels. You could also put in code that interprets the text of
+// the label and draws anything you want with it.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_LabelType_h
+#define fltk_LabelType_h
+
+#include "Flags.h"
+#include "Rectangle.h"
+
+namespace fltk {
+
+class Style;
+
+class FL_API LabelType {
+public:
+ virtual void draw(const char*, const Rectangle&, Flags) const;
+ const char* name;
+ LabelType* next;
+ static LabelType* first;
+ LabelType(const char* n) : name(n), next(first) {first = this;}
+ static LabelType* find(const char* name);
+ virtual ~LabelType(); // virtual to shut up C++ warnings
+};
+
+// You can use this to draw overlapping patterns
+class FL_API EngravedLabel : public LabelType {
+ const int* data;
+public:
+ void draw(const char*, const Rectangle&, Flags) const;
+ EngravedLabel(const char * n, const int p[][3])
+ : LabelType(n), data((const int*)p) {}
+};
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/LightButton.h
===================================================================
--- branches/branch-3.0/fltk/LightButton.h (rev 0)
+++ branches/branch-3.0/fltk/LightButton.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,45 @@
+//
+// "$Id: LightButton.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Forms/XForms/Flame style button with indicator light on left
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Light_Button_h
+#define fltk_Light_Button_h
+
+#include "CheckButton.h"
+
+namespace fltk {
+
+class FL_API LightButton : public CheckButton {
+public:
+ LightButton(int x,int y,int w,int h,const char *l = 0);
+ static NamedStyle* default_style;
+ static void default_glyph(const Widget*, int, int,int,int,int, Flags);
+};
+
+}
+#endif
+
+//
+// End of "$Id: LightButton.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/LineDial.h
===================================================================
--- branches/branch-3.0/fltk/LineDial.h (rev 0)
+++ branches/branch-3.0/fltk/LineDial.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,44 @@
+//
+// "$Id: LineDial.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_LineDial_h
+#define fltk_LineDial_h
+
+#include "Dial.h"
+
+namespace fltk {
+
+/*! Dial but the constructor sets type() to LINE, so it draws a
+ pointer rather than a dot. */
+class FL_API LineDial : public Dial {
+public:
+ LineDial(int x,int y,int w,int h, const char *l = 0) :
+ Dial(x,y,w,h,l) {type(LINE);}
+};
+
+}
+#endif
+
+//
+// End of "$Id: LineDial.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/Menu.h
===================================================================
--- branches/branch-3.0/fltk/Menu.h (rev 0)
+++ branches/branch-3.0/fltk/Menu.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,152 @@
+// "$Id: Menu.h 5708 2007-02-23 00:52:14Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Menu_h
+#define fltk_Menu_h
+
+#include "Group.h"
+
+namespace fltk {
+
+class FL_API Menu;
+
+class FL_API List {
+public:
+ virtual int children(const Menu*, const int* indexes, int level);
+ virtual Widget* child(const Menu*, const int* indexes, int level);
+ virtual void flags_changed(const Menu*, Widget*);
+ virtual ~List();
+};
+
+enum { // Special flag values for add(), you can also use Flags.h values
+ // These match values from Fl_Menu_Item in fltk 1.0:
+ MENU_TOGGLE = 2,
+ MENU_RADIO = 8,
+ SUBMENU = 0x40,
+ MENU_DIVIDER = 0x80
+};
+
+class FL_API Menu : public Group {
+
+public:
+
+ Menu(int,int,int,int, const char* l=0, bool begin=false);
+ List* list() const {return list_;}
+ void list(List* l) {list_ = l;}
+ void layout();
+
+ static NamedStyle* default_style;
+
+ int children(const int* indexes, int level) const ;
+ int children(int index) const;
+ int children() const ;
+ Widget* child(const int* indexes, int level) const ;
+ Widget* child(int index) const ;
+
+ Widget* item() const {return item_;}
+ Widget* item(Widget* v) {return item_ = v;}
+
+ bool set_item(const int* indexes, int level);
+ Widget* get_item();
+ int value() const {return Group::focus_index();}
+ bool value(int v);
+ int size() const {return children();}
+
+ void layout_in(Widget*,const int* indexes, int level) const;
+ void draw_in(Widget*,const int* indexes, int level, int, int) const;
+ int find_selected(Widget*,const int* indexes, int level, int, int) const;
+ Rectangle get_location(Widget*,const int* indexes, int level, int) const;
+
+ int popup(const Rectangle&, const char* title=0,bool menubar=false);
+ int handle_shortcut();
+ static void default_callback(Widget*, void*);
+ void execute(Widget*);
+ void global();
+
+ Widget* find(const char*) const;
+ void remove(const char* l) { delete find(l); }
+ Widget* add(const char*, unsigned shortcut, Callback*, void* = 0, int = 0);
+ Widget* replace(const char*, unsigned shortcut, Callback*, void* = 0, int = 0);
+ Widget* insert(int n, const char*, unsigned shortcut, Callback*, void* = 0, int = 0);
+ Widget* add(const char*, void* = 0);
+ Group* add_group(const char* label, Group* parent=0, void* data=0);
+ Widget* add_leaf(const char* label, Group* parent=0, void* data=0);
+ Widget* add_many(const char*);
+ Widget* replace(const char*, void* = 0);
+ Widget* insert(int n, const char*, void* = 0);
+
+ // Undo the overrides of stuff from Group:
+ void add(Widget& o) {Group::add(o);}
+ void add(Widget* o) {add(*o);}
+ void insert(Widget& o, int n) {Group::insert(o, n);}
+ void replace(int index, Widget& o) {Group::replace(index, o);}
+ void replace(Widget& old, Widget& o) {Group::replace(old,o);}
+ void remove(int index) {Group::remove(index);}
+ void remove(Widget& o) {Group::remove(o);}
+ void remove(Widget* o) {Group::remove(o);}
+
+#ifdef Fl_Menu_Item_h
+ // Commented-out methods cannot be emulated.
+//const Fl_Menu_Item* test_shortcut();
+//Fl_Menu_Item* menu() const;
+ void copy(const Fl_Menu_Item* m, void* data = 0) {clear(); m->add_to(this,data);}
+ void menu(const Fl_Menu_Item* m) {copy(m,0);}
+ void replace(int n, const char* s) { child(n)->label(s); }
+ void replace(const char* l, const char* s) { find(l)->label(s); }
+ void shortcut(const char* l, unsigned s) { find(l)->shortcut(s); }
+ void shortcut(unsigned s) {Widget::shortcut(s);}
+ unsigned shortcut() const {return Widget::shortcut();}
+ void shortcut(int i, unsigned s) { child(i)->shortcut(s); }
+//int index(Fl_Menu_Item* m) const { return m - menu_; }
+//int index(const char* label) const;
+//void replace(Fl_Menu_Item* m, const char* s) { replace(index(m), s); }
+//void remove(Fl_Menu_Item* m) { remove(index(m)); }
+//void shortcut(Fl_Menu_Item* m, unsigned s) {shortcut(index(m), s);}
+//void mode(int i,int x);
+//void mode(Fl_Menu_Item* m, int x) {mode(index(m), x);}
+//void mode(const char* l, int x) {mode(index(l), x);}
+ unsigned mode(int i) const {return child(i)->flags() >> 8;}
+//unsigned mode(Fl_Menu_Item* m) const {return mode(index(m));}
+ unsigned mode(const char* l) const {return find(l)->flags() >> 8;}
+
+ // in fltk 1.0 these returned/took an Fl_Menu_Item*:
+ Widget* mvalue() {return item();}
+//void value(Widget* o) {set_item(o);}
+
+ const char *text(int i) const {return i >= 0 ? child(i)->label() : 0;}
+ const char *text() const {Widget* w = item(); return w ? w->label() : 0;}
+#endif
+
+protected:
+ Widget *try_popup(const Rectangle&,const char* title=0,bool menubar=false);
+
+private:
+ List* list_;
+ Widget* item_;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Menu.h 5708 2007-02-23 00:52:14Z spitzak $".
+//
Added: branches/branch-3.0/fltk/MenuBar.h
===================================================================
--- branches/branch-3.0/fltk/MenuBar.h (rev 0)
+++ branches/branch-3.0/fltk/MenuBar.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,51 @@
+//
+// "$Id: MenuBar.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Menu bar, each submenu is a pull-down menu. Any items act like
+// a button in the menu bar.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_MenuBar_h
+#define fltk_MenuBar_h
+
+#include "Menu.h"
+
+namespace fltk {
+
+class FL_API MenuBar : public Menu {
+public:
+ MenuBar(int x,int y,int w,int h,const char *l=0);
+ static NamedStyle* default_style;
+ int handle(int);
+protected:
+ void draw();
+private:
+ int highlight_, last_;
+ Widget *lastfocus_;
+};
+
+}
+#endif
+
+//
+// End of "$Id: MenuBar.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/MenuBuild.h
===================================================================
--- branches/branch-3.0/fltk/MenuBuild.h (rev 0)
+++ branches/branch-3.0/fltk/MenuBuild.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,37 @@
+// "$Id: MenuBuild.h 4319 2005-05-08 19:18:50Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Menu_Build_h
+#define fltk_Menu_Build_h
+
+// include facility for building dynamic fltk2 menus
+#include "ItemGroup.h"
+#include "Item.h"
+#include "Divider.h"
+#include "MenuBar.h"
+#include "Choice.h"
+#include "PopupMenu.h"
+#include "events.h"
+#endif
+
+//
+// End of "$Id: Menu.h 4319 2005-05-08 19:18:50Z spitzak $".
+//
Added: branches/branch-3.0/fltk/MenuWindow.h
===================================================================
--- branches/branch-3.0/fltk/MenuWindow.h (rev 0)
+++ branches/branch-3.0/fltk/MenuWindow.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,55 @@
+// "$Id: MenuWindow.h 5600 2007-01-13 00:04:55Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_MenuWindow_h
+#define fltk_MenuWindow_h
+
+#include "Window.h"
+
+namespace fltk {
+
+class FL_API MenuWindow : public Window {
+ enum {NO_OVERLAY = 0x08000000};
+
+public:
+
+ virtual void create();
+ virtual void flush();
+ virtual void destroy();
+
+ static NamedStyle* default_style;
+
+ int overlay() {return !flag(NO_OVERLAY);}
+ void set_overlay() {clear_flag(NO_OVERLAY);}
+ void clear_overlay() {set_flag(NO_OVERLAY);}
+ ~MenuWindow();
+ MenuWindow(int W, int H, const char *l = 0);
+ MenuWindow(int X, int Y, int W, int H, const char *l = 0);
+
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: MenuWindow.h 5600 2007-01-13 00:04:55Z spitzak $".
+//
Added: branches/branch-3.0/fltk/Monitor.h
===================================================================
--- branches/branch-3.0/fltk/Monitor.h (rev 0)
+++ branches/branch-3.0/fltk/Monitor.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,46 @@
+// "$Id: Monitor.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Monitor_h
+#define fltk_Monitor_h
+
+#include "Rectangle.h"
+
+namespace fltk {
+
+class FL_API Monitor : public Rectangle {
+ int depth_;
+ float dpi_x_;
+ float dpi_y_;
+ public:
+ Rectangle work; // Allows you to do rect->work.x(), etc.
+ int depth() const {return depth_;}
+ float dpi_x() const {return dpi_x_;}
+ float dpi_y() const {return dpi_y_;}
+ float dpi() const {return dpi_y_;}
+ static int list(const Monitor**);
+ static const Monitor& all();
+ static const Monitor& find(int x, int y);
+};
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/MultiBrowser.h
===================================================================
--- branches/branch-3.0/fltk/MultiBrowser.h (rev 0)
+++ branches/branch-3.0/fltk/MultiBrowser.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,47 @@
+//
+// "$Id: MultiBrowser.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Browser that lets the user select more than one item at a time.
+// Most of the implementation is in the base Browser class.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_MultiBrowser_h
+#define fltk_MultiBrowser_h
+
+#include "Browser.h"
+
+namespace fltk {
+
+// This class is entirely inline. If that changes, add FL_API to its declaration
+class MultiBrowser : public Browser {
+public:
+ MultiBrowser(int x,int y,int w,int h,const char *l=0)
+ : Browser(x,y,w,h,l) {type(MULTI);}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: MultiBrowser.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/MultiImage.h
===================================================================
--- branches/branch-3.0/fltk/MultiImage.h (rev 0)
+++ branches/branch-3.0/fltk/MultiImage.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,103 @@
+//
+// "$Id: MultiImage.h 5515 2006-10-10 09:46:05Z fabien $"
+//
+// Image type that draws a different image depending on the flags,
+// for instace VALUE or SELECTED or HIGHLIGHT.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_MultiImage_h
+#define fltk_MultiImage_h
+
+#include "Symbol.h"
+#include <stdarg.h>
+
+namespace fltk {
+
+class FL_API MultiImage : public Symbol
+{
+ const Symbol* image0;
+ struct MultiImagePair {
+ const Symbol* image;
+ Flags flags;
+ };
+ MultiImagePair* pairs;
+ unsigned n_images;
+
+public:
+ void _measure(int&, int&) const;
+ void _draw(const Rectangle&) const;
+ const Symbol* current_image() const;
+ void inset(Rectangle&) const;
+ bool fills_rectangle() const;
+ bool is_frame() const;
+
+ ~MultiImage() { release();}
+
+ //! for MultiImage arrays construction using set() for post initialization
+ MultiImage() { pairs=0; n_images = 0; }
+
+ //! constructor for unlimited images state affectation
+ MultiImage(unsigned count, const Symbol* img0, va_list ap) { set(count,img0, ap); }
+
+ void set (unsigned count, const Symbol* img0, ...); // fabien: need to be accessible because of MultiImage arrays with post (set) affectations
+
+ void add(Flags flags, const Symbol& image);
+
+ //! Destroys everything except image0.
+ void release() { delete[] pairs; pairs = 0; n_images = 0; }
+
+ MultiImage(const Symbol& img0) : image0(&img0), pairs(0), n_images(0) {}
+
+ /* compatibility convenient constructors */
+ MultiImage(const Symbol& img0, Flags f1, const Symbol& img1) { set(2, &img0,f1,&img1); }
+ MultiImage(const Symbol& img0, Flags f1, const Symbol& img1,Flags f2, const Symbol& img2) {
+ set(3, &img0, f1, &img1, f2, &img2);
+ }
+ MultiImage(const Symbol& img0, Flags f1, const Symbol& img1, Flags f2, const Symbol& img2, Flags f3, const Symbol& img3) {
+ set(4, &img0, f1, &img1, f2, &img2, f3);
+ }
+ MultiImage(const Symbol& img0, Flags f1, const Symbol& img1, Flags f2, const Symbol& img2, Flags f3, const Symbol& img3,
+ Flags f4, const Symbol& img4) {
+ set(5, &img0, f1, &img1, f2, &img2, f3, &img3, f4, &img4);
+ }
+ MultiImage(const Symbol& img0, Flags f1, const Symbol& img1, Flags f2, const Symbol& img2, Flags f3, const Symbol& img3,
+ Flags f4, const Symbol& img4, Flags f5, const Symbol& img5) {
+ set(6, &img0, f1, &img1, f2, &img2, f3, &img3, f4, &img4, f5, &img5);
+ }
+ MultiImage(const Symbol& img0, Flags f1, const Symbol& img1, Flags f2, const Symbol& img2, Flags f3, const Symbol& img3,
+ Flags f4, const Symbol& img4, Flags f5, const Symbol& img5, Flags f6, const Symbol& img6) {
+ set(7, &img0, f1, &img1, f2, &img2, f3, &img3, f4, &img4, f5, &img5, f6, &img6);
+ }
+ MultiImage(const Symbol& img0, Flags f1, const Symbol& img1, Flags f2, const Symbol& img2, Flags f3, const Symbol& img3,
+ Flags f4, const Symbol& img4, Flags f5, const Symbol& img5, Flags f6, const Symbol& img6, Flags f7, const Symbol& img7 ) {
+ set(8, &img0, f1, &img1, f2, &img2, f3, &img3, f4, &img4, f5, &img5, f6, &img6, f7, &img7);
+ }
+};
+
+}
+
+
+#endif
+
+//
+// End of "$Id: MultiImage.h 5515 2006-10-10 09:46:05Z fabien $".
+//
Added: branches/branch-3.0/fltk/MultiLineInput.h
===================================================================
--- branches/branch-3.0/fltk/MultiLineInput.h (rev 0)
+++ branches/branch-3.0/fltk/MultiLineInput.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,48 @@
+//
+// "$Id: MultiLineInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Allows you to edit a *small* number of lines of text. Does not have
+// any scrollbars. You may want a TextEditor instead, it is designed for
+// large amounts of text.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_MultiLineInput_h
+#define fltk_MultiLineInput_h
+
+#include "Input.h"
+
+namespace fltk {
+
+// This class is entirely inline. If that changes, add FL_API to its declaration
+class MultiLineInput : public Input {
+public:
+ MultiLineInput(int x,int y,int w,int h,const char *l = 0)
+ : Input(x,y,w,h,l) {type(MULTILINE);}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: MultiLineInput.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/MultiLineOutput.h
===================================================================
--- branches/branch-3.0/fltk/MultiLineOutput.h (rev 0)
+++ branches/branch-3.0/fltk/MultiLineOutput.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,47 @@
+//
+// "$Id: MultiLineOutput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Displays a multi-line sequence of text, the user can select text
+// and copy it to other programs. Does not have any scrollbars.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_MultiLineOutput_h
+#define fltk_MultiLineOutput_h
+
+#include "Output.h"
+
+namespace fltk {
+
+// This class is entirely inline. If that changes, add FL_API to its declaration
+class MultiLineOutput : public Output {
+public:
+ MultiLineOutput(int x,int y,int w,int h,const char *l = 0)
+ : Output(x,y,w,h,l) {type(MULTILINE);}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: MultiLineOutput.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/NumericInput.h
===================================================================
--- branches/branch-3.0/fltk/NumericInput.h (rev 0)
+++ branches/branch-3.0/fltk/NumericInput.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,52 @@
+//
+// "$Id: NumericInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// One-line text input field, which handles up/down arrows to
+// change the digit to the right of the cursor. This still allows
+// arbitrary text such as a math expression to be typed, if you
+// want to restrict the user to a number use FloatInput or IntInput.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_NumericInput_h
+#define fltk_NumericInput_h
+
+#include "Input.h"
+
+namespace fltk {
+
+class FL_API NumericInput : public Input {
+ protected:
+ int handle_arrow(int);
+ public:
+ NumericInput(int x,int y, int w,int h,const char* l = 0) :
+ Input(x,y,w,h,l) {when(WHEN_ENTER_KEY|WHEN_RELEASE);}
+ void value(double);
+ void value(int);
+ int handle(int);
+};
+
+}
+#endif
+
+//
+// End of "$Id: NumericInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
Added: branches/branch-3.0/fltk/Output.h
===================================================================
--- branches/branch-3.0/fltk/Output.h (rev 0)
+++ branches/branch-3.0/fltk/Output.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,49 @@
+//
+// "$Id: Output.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// One-line text output, the user can select text and copy it
+// to other applications.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Output_h
+#define fltk_Output_h
+
+#include "Input.h"
+
+namespace fltk {
+
+class FL_API Output : public Input {
+ virtual bool replace(int, int, const char*, int); // does nothing
+public:
+ Output(int x, int y, int w, int h, const char *l = 0);
+ int handle(int);
+ // this style is so Motif can have different color for output vs input:
+ static NamedStyle* default_style;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Output.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/PackedGroup.h
===================================================================
--- branches/branch-3.0/fltk/PackedGroup.h (rev 0)
+++ branches/branch-3.0/fltk/PackedGroup.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,70 @@
+//
+// "$Id: PackedGroup.h 6132 2008-05-29 23:09:01Z TobiasFar $"
+//
+// Group that places all it's child widgets packed against the
+// edges. The edge is decided by the PACK_VERTICAL flag stored on
+// the child and by whether the child is before or after the
+// resizable() child.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_PackedGroup_h
+#define fltk_PackedGroup_h
+
+#include "Group.h"
+
+namespace fltk {
+
+class FL_API PackedGroup : public Group {
+ int spacing_;
+ int margin_left_;
+ int margin_right_;
+ int margin_top_;
+ int margin_bottom_;
+public:
+ enum { // values for type(int), for back-compatability
+ NORMAL = GROUP_TYPE,
+ ALL_CHILDREN_VERTICAL = GROUP_TYPE+1
+ };
+ void layout();
+ PackedGroup(int x, int y, int w, int h, const char *l = 0, bool begin=false);
+ int spacing() const {return spacing_;}
+ void spacing(int i) {spacing_ = i;}
+
+ int margin_left() const {return margin_left_;}
+ void margin_left(int m) {margin_left_ = m;}
+ int margin_right() const {return margin_right_;}
+ void margin_right(int m) {margin_right_ = m;}
+ int margin_top() const {return margin_top_;}
+ void margin_top(int m) {margin_top_ = m;}
+ int margin_bottom() const {return margin_bottom_;}
+ void margin_bottom(int m) {margin_bottom_ = m;}
+
+ void margin(int m) {margin_left_ = margin_right_ = margin_top_ = margin_bottom_ = m;}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: PackedGroup.h 6132 2008-05-29 23:09:01Z TobiasFar $".
+//
Added: branches/branch-3.0/fltk/PixelType.h
===================================================================
--- branches/branch-3.0/fltk/PixelType.h (rev 0)
+++ branches/branch-3.0/fltk/PixelType.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,67 @@
+// "$Id: PixelType.h 1399 2006-08-11 02:15:20Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_PixelType_h
+#define fltk_PixelType_h
+
+namespace fltk {
+
+/// \name fltk/PixelType.h
+//@{
+
+/**
+ Enumeration describing how colors are stored in an array of bytes
+ that is a pixel. This is used as an argument for fltk::drawimage(),
+ fltk::readimage(), and fltk::Image.
+
+ Notice that the order of the bytes in memory of ARGB32 or RGB32 is
+ a,r,g,b on a little-endian machine and b,g,r,a on a big-endian
+ machine. Due to the use of these types by Windows, this is often
+ the fastest form of data, if you have a choice. To convert an
+ fltk::Color to RGB32, shift it right by 8 (for ARGB32 shift the
+ alpha left 24 and or it in).
+
+ More types may be added in the future. The set is as minimal as
+ possible while still covering the types I have actually encountered.
+*/
+enum PixelType {
+ MASK = 0, //!< 1 byte of inverted mask, filled with current color
+ MONO = 1, //!< 1 byte of gray scale
+ RGBx = 2, //!< bytes in r,g,b,a,r,g,b,a... order, a byte is ignored
+ RGB = 3, //!< bytes in r,g,b,r,g,b... order
+ RGBA = 4, //!< bytes in r,g,b,a,r,g,b,a... order
+ RGB32 = 5, //!< 32-bit words containiing 0xaarrggbb (aa is ignored)
+ ARGB32= 6, //!< 32-bit words containing 0xaarrggbb
+ // unpremulitplied is not yet implemented, acts like RGBA/ARGB32:
+ RGBM = 7, //!< unpremultiplied bytes in r,g,b,a order
+ MRGB32= 8 //!< unpremultiplied 0xaarrggbb
+};
+
+/**
+ Turn a PixelType into the number of bytes needed to hold a pixel.
+*/
+inline int depth(PixelType t) {return (t<2 ? 1 : t==3 ? 3 : 4);}
+
+//@}
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/PopupMenu.h
===================================================================
--- branches/branch-3.0/fltk/PopupMenu.h (rev 0)
+++ branches/branch-3.0/fltk/PopupMenu.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,56 @@
+//
+// "$Id: PopupMenu.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Setting the type to POPUP* will make an invisible widget that can
+// overlap any other widgets and provides a popup menu. The default
+// type gives you something similar to a Choice except it does not
+// display the current value.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_PopupMenu_h
+#define fltk_PopupMenu_h
+
+#include "Menu.h"
+
+namespace fltk {
+
+class FL_API PopupMenu : public Menu {
+public:
+ // values for type:
+ enum {NORMAL = GROUP_TYPE, POPUP1, POPUP2, POPUP12,
+ POPUP3, POPUP13, POPUP23, POPUP123};
+ int handle(int);
+ int popup();
+ PopupMenu(int,int,int,int,const char * =0);
+ static NamedStyle* default_style;
+
+protected:
+ void draw();
+
+};
+
+}
+#endif
+
+//
+// End of "$Id: PopupMenu.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/Preferences.h
===================================================================
--- branches/branch-3.0/fltk/Preferences.h (rev 0)
+++ branches/branch-3.0/fltk/Preferences.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,109 @@
+// "$Id: Preferences.H 4458 2005-07-26 07:59:01Z matt $"
+//
+// Copyright 2002-2005 by Matthias Melcher.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+
+#ifndef fltk_Preferences_h
+#define fltk_Preferences_h
+
+#include "FL_API.h"
+
+namespace fltk {
+
+/**
+ * Preferences are a data tree containing a root, branches and leafs
+ */
+class FL_API Preferences
+{
+
+public:
+
+ enum Root { SYSTEM=0, USER };
+
+ Preferences( Root root, const char *vendor, const char *application );
+ Preferences( const char *path, const char *vendor, const char *application );
+ Preferences( Preferences&, const char *group );
+ Preferences( Preferences*, const char *group );
+ ~Preferences();
+
+ int groups();
+ const char *group( int );
+ bool groupExists( const char *group );
+ bool deleteGroup( const char *group );
+
+ int entries();
+ const char *entry( int );
+ bool entryExists( const char *entry );
+ bool deleteEntry( const char *entry );
+
+ bool set( const char *entry, int value );
+ bool set( const char *entry, float value );
+ bool set( const char *entry, double value );
+ bool set( const char *entry, const char *value );
+ bool set( const char *entry, const void *value, int size );
+
+ bool get( const char *entry, int &value, int defaultValue );
+ bool get( const char *entry, float &value, float defaultValue );
+ bool get( const char *entry, double &value, double defaultValue );
+ bool get( const char *entry, char *&value, const char *defaultValue );
+ bool get( const char *entry, char *value, const char *defaultValue, int maxSize );
+ bool get( const char *entry, void *&value, const void *defaultValue, int defaultSize );
+ bool get( const char *entry, void *value, const void *defaultValue, int defaultSize, int maxSize );
+ int size( const char *entry );
+
+ bool getUserdataPath( char *path, int pathlen );
+
+ void flush();
+
+ // bool export( const char *filename, Type fileFormat );
+ // bool import( const char *filename );
+
+ class FL_API Name {
+ char *data_;
+ public:
+ Name( int n );
+ Name( const char *format, ... );
+ operator const char *() { return data_; }
+ ~Name() { delete[] data_; }
+ };
+
+private:
+
+ // make the following functions unavailable
+ Preferences();
+ Preferences(const Preferences&);
+ Preferences &operator=(const Preferences&);
+
+ class Node;
+ friend class Node;
+ Node *node;
+
+ class RootNode;
+ friend class RootNode;
+ RootNode *rootNode;
+
+};
+
+}
+
+#endif
+
+// End of "$Id: Preferences.H 4458 2005-07-26 07:59:01Z matt $".
Added: branches/branch-3.0/fltk/ProgressBar.h
===================================================================
--- branches/branch-3.0/fltk/ProgressBar.h (rev 0)
+++ branches/branch-3.0/fltk/ProgressBar.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,62 @@
+//
+// "$Id: ProgressBar.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Progress indicator with bar that fills up and text showing the
+// job being done and expected time to go. Not fully implemented yet.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_ProgressBar_h
+#define fltk_ProgressBar_h
+
+#include "Widget.h"
+
+namespace fltk {
+
+class FL_API ProgressBar : public Widget {
+protected:
+ double mMin;
+ double mMax;
+ double mPresent;
+ double mStep;
+ bool mShowPct;
+ Color mTextColor;
+ void draw();
+public:
+ ProgressBar(int x, int y, int w, int h, const char *lbl = 0);
+ void range(double min, double max, double step = 1) { mMin = min; mMax = max; mStep = step; };
+ void step(double step) { mPresent += step; redraw(); };
+ double minimum() { return mMin; }
+ double maximum() { return mMax; }
+ void minimum(double nm) { mMin = nm; };
+ void maximum(double nm) { mMax = nm; };
+ double position() { return mPresent; }
+ double step() { return mStep; }
+ void position(double pos) { mPresent = pos; redraw(); }
+ void showtext(bool st) { mShowPct = st; }
+ bool showtext() { return mShowPct; }
+ void text_color(Color col) { mTextColor = col; }
+ Color text_color() { return mTextColor; }
+};
+
+}
+#endif
+
Added: branches/branch-3.0/fltk/README
===================================================================
--- branches/branch-3.0/fltk/README (rev 0)
+++ branches/branch-3.0/fltk/README 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,8 @@
+This directory is for the public include files used by fltk. The
+directory is named "fltk" so that fltk's source and test programs can
+be compiled with these headers by using -I.. as a switch to the
+compiler.
+
+FLTK developers: please notice that this is for *PUBLIC* header
+files. If you have a private structure that is shared between fltk
+source files, put it in the same directory as the source files!
Added: branches/branch-3.0/fltk/RadioButton.h
===================================================================
--- branches/branch-3.0/fltk/RadioButton.h (rev 0)
+++ branches/branch-3.0/fltk/RadioButton.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,46 @@
+//
+// "$Id: RadioButton.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Button with a circle indicator to it's left, turning it on turns
+// off all other radio buttons in the same Group.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_RadioButton_h
+#define fltk_RadioButton_h
+
+#include "CheckButton.h"
+
+namespace fltk {
+
+class FL_API RadioButton : public CheckButton {
+public:
+ RadioButton(int x, int y, int w, int h, const char *l=0);
+ static NamedStyle* default_style;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: RadioButton.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/RadioItem.h
===================================================================
--- branches/branch-3.0/fltk/RadioItem.h (rev 0)
+++ branches/branch-3.0/fltk/RadioItem.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,41 @@
+// "$Id: RadioItem.h 5924 2007-07-13 13:25:31Z sanel.z $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_RadioItem_h
+#define fltk_RadioItem_h
+
+#include "Item.h"
+
+namespace fltk {
+
+/** This widget makes a radio item in a popup or pulldown Menu.
+ It's behavior in a Browser or MultiBrowser is that it changes its status on multiple clicks (e.g. double click). */
+class RadioItem : public Item {
+public:
+ RadioItem(const char* label = 0) : Item(label) {type(RADIO);}
+ RadioItem(const char* label,int shortcut,Callback *callback=0,void *user_data=0, int flags=0)
+ : Item(label,shortcut,callback,user_data,flags) {type(RADIO);}
+};
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/RadioLightButton.h
===================================================================
--- branches/branch-3.0/fltk/RadioLightButton.h (rev 0)
+++ branches/branch-3.0/fltk/RadioLightButton.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,45 @@
+//
+// "$Id: RadioLightButton.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// LightButton that toggles off all others in the group when turned on.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_RadioLightButton_h
+#define fltk_RadioLightButton_h
+
+#include "LightButton.h"
+
+namespace fltk {
+
+class RadioLightButton : public LightButton {
+public:
+ RadioLightButton(int x, int y, int w, int h, const char *l=0)
+ : LightButton(x,y,w,h,l) {type(RADIO);}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: RadioLightButton.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/Rectangle.h
===================================================================
--- branches/branch-3.0/fltk/Rectangle.h (rev 0)
+++ branches/branch-3.0/fltk/Rectangle.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,122 @@
+// "$Id: Rectangle.h 5454 2006-09-19 02:38:02Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Rectangle_h
+#define fltk_Rectangle_h
+
+#include "FL_API.h"
+
+// rectangle macros that help keeping rectangle predicates as strict as possible
+// even when not using rectangles in some situations (as when only using w h scalars)
+// so that there is only one strict defintion for common predicates,
+// if one change the following, it will be repercuted in all the core lib
+#define FLTK_RECT_EMPTY(w,h) (w <= 0 || h <= 0)
+// we should always use the same evaluation for center_x, center_y in all corelib code:
+//#define FLTK_CENTER_X(coord, length) (coord + (length>>1))
+//#define FLTK_CENTER_Y(coord, length) (coord + (length>>1))
+
+namespace fltk {
+
+class FL_API Rectangle {
+ int x_, y_, w_, h_;
+
+ public:
+
+ /*! Left edge */
+ int x() const {return x_;}
+ /*! Top edge */
+ int y() const {return y_;}
+ /*! Distance between left and right edges */
+ int w() const {return w_;}
+ /*! Distance between top and bottom edges */
+ int h() const {return h_;}
+ /*! Return x()+w(), the right edge of the rectangle. */
+ int r() const {return x_+w_;}
+ /*! Return y()+h(), the bottom edge of the rectangle. */
+ int b() const {return y_+h_;}
+ /*! Move the rectangle so the left edge is at \a v. */
+ void x(int v) {x_ = v;}
+ /*! Move the rectangle so the top edge is at \a v. */
+ void y(int v) {y_ = v;}
+ /*! Change w() by moving the right edge. x() does not change. */
+ void w(int v) {w_ = v;}
+ /*! Change h() by moving the bottom edge. y() does not change. */
+ void h(int v) {h_ = v;}
+ /*! Change x() without changing r(), by changing the width. */
+ void set_x(int v) {w_ -= v-x_; x_ = v;}
+ /*! Change y() without changing b(), by changing the height. */
+ void set_y(int v) {h_ -= v-y_; y_ = v;}
+ /*! Change r() without changing x(), by changine the width. */
+ void set_r(int v) {w_ = v-x_;}
+ /*! Change b() without changing y(), by changine the height. */
+ void set_b(int v) {h_ = v-y_;}
+ /*! Set x(), y(), w(), and h() all at once. */
+ void set(int x, int y, int w, int h) {x_=x; y_=y; w_=w; h_=h;}
+ /*! Sets x, y, w, h so that's it's centered or aligned (if flags!=0) inside the source r */
+ void set (const Rectangle& r, int w, int h, int flags = 0);
+ /*! Add \a d to x() without changing r() (it reduces w() by \a d). */
+ void move_x(int d) {x_ += d; w_ -= d;}
+ /*! Add \a d to y() without changing b() (it reduces h() by \a d). */
+ void move_y(int d) {y_ += d; h_ -= d;}
+ /*! Add \a d to r() and w(). */
+ void move_r(int d) {w_ += d;}
+ /*! Add \a d to b() and h(). */
+ void move_b(int d) {h_ += d;}
+ /*! Move all edges in by \a d. See also Symbol::inset() */
+ void inset(int d) {x_ += d; y_ += d; w_ -= 2*d; h_ -= 2*d;}
+ /*! Move entire rectangle by given distance in x and y. */
+ void move(int dx, int dy) {x_ += dx; y_ += dy;}
+ /*! True if w() or h() are less or equal to zero. */
+ bool empty() const {return FLTK_RECT_EMPTY(w_, h_);}
+ /*! Same as !empty(), true if w() and h() are both greater than zero. */
+ bool not_empty() const {return !FLTK_RECT_EMPTY(w_, h_);}
+ /*! Integer center position. Rounded to the left if w() is odd. */
+ int center_x() const {return x_+(w_>>1);}
+ /*! Integer center position. Rounded to lower y if h() is odd. */
+ int center_y() const {return y_+(h_>>1);}
+ /*! Where to put baseline to center current font nicely */
+ int baseline_y() const;
+
+ Rectangle() {}
+
+ /*! Constructor that sets x(), y(), w(), and h(). */
+ Rectangle(int x, int y, int w, int h) : x_(x), y_(y), w_(w), h_(h) {}
+
+ /*! Constructor that sets x() and y() to zero, and sets w() and h(). */
+ Rectangle(int w, int h) : x_(0), y_(0), w_(w), h_(h) {}
+
+ /*! Copy constructor. */
+ Rectangle(const Rectangle& r) : x_(r.x_),y_(r.y_),w_(r.w_),h_(r.h_) {}
+
+ /*! Constructor that calls set(). */
+ Rectangle(const Rectangle& r, int w, int h, int flags = 0) {set(r,w,h,flags);}
+
+ /*! True if rectangle contains the pixel who's upper-left corner is at x,y */
+ bool contains(int x, int y) const {return x>=x_ && y>=y_ && x<x_+w_ && y<y_+h_;}
+
+ void merge(const Rectangle& r);
+ void intersect(const Rectangle& r);
+
+};
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/RepeatButton.h
===================================================================
--- branches/branch-3.0/fltk/RepeatButton.h (rev 0)
+++ branches/branch-3.0/fltk/RepeatButton.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,47 @@
+//
+// "$Id: RepeatButton.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// This button does it's callback repeatedly (about 10/second) while
+// the user holds the button down.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_RepeatButton_h
+#define fltk_RepeatButton_h
+
+#include "Button.h"
+
+namespace fltk {
+
+class FL_API RepeatButton : public Button {
+ static void repeat_callback(void *);
+public:
+ int handle(int);
+ RepeatButton(int x,int y,int w,int h,const char *l=0) : Button(x,y,w,h,l) {}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: RepeatButton.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/ReturnButton.h
===================================================================
--- branches/branch-3.0/fltk/ReturnButton.h (rev 0)
+++ branches/branch-3.0/fltk/ReturnButton.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,41 @@
+// "$Id: ReturnButton.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_ReturnButton_h
+#define fltk_ReturnButton_h
+
+#include "Button.h"
+
+namespace fltk {
+
+class FL_API ReturnButton : public Button {
+public:
+ ReturnButton(int x,int y,int w,int h,const char *l=0);
+ static NamedStyle* default_style;
+protected:
+ void draw();
+};
+
+}
+
+#endif
+
+// End of "$Id: ReturnButton.h 4886 2006-03-30 09:55:32Z fabien $".
Added: branches/branch-3.0/fltk/ScrollGroup.h
===================================================================
--- branches/branch-3.0/fltk/ScrollGroup.h (rev 0)
+++ branches/branch-3.0/fltk/ScrollGroup.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,90 @@
+//
+// "$Id: ScrollGroup.h 6132 2008-05-29 23:09:01Z TobiasFar $"
+//
+// Group that adds scrollbars so you can scroll around the area
+// covered by all the child widgets. For most uses you will make
+// a single child widget, this child may resize in it's layout()
+// and the scrollbars will adjust to match.
+//
+// Due to clipping problems no subclasses of Window may be used
+// as child widgets.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_ScrollGroup_h
+#define fltk_ScrollGroup_h
+
+#include "Group.h"
+#include "Scrollbar.h"
+
+namespace fltk {
+
+class FL_API ScrollGroup : public Group {
+
+ int xposition_, yposition_;
+ int layoutdx, layoutdy;
+ int scrolldx, scrolldy;
+ bool enable_drag_scroll_;
+ bool drag_scrolling_;
+ bool delegate_alt_click_;
+ int drag_x_, drag_y_, pos_x_, pos_y_;
+ int max_x_scroll_, max_y_scroll_;
+ static void hscrollbar_cb(Widget*, void*);
+ static void scrollbar_cb(Widget*, void*);
+ static void draw_clip(void*,const Rectangle&);
+
+protected:
+
+ void draw();
+
+public:
+
+ void bbox(Rectangle&);
+ Scrollbar scrollbar;
+ Scrollbar hscrollbar;
+
+ void enable_drag_scroll( bool enable ) { enable_drag_scroll_ = true; }
+
+ virtual int handle(int);
+ virtual void layout();
+
+ ScrollGroup(int x,int y,int w,int h, const char*l=0, bool begin=false);
+
+ enum { // values for type()
+ HORIZONTAL = 1,
+ VERTICAL = 2,
+ BOTH = 3,
+ ALWAYS_ON = 4,
+ HORIZONTAL_ALWAYS = 5,
+ VERTICAL_ALWAYS = 6,
+ BOTH_ALWAYS = 7
+ };
+
+ int xposition() const {return xposition_;}
+ int yposition() const {return yposition_;}
+ void scrollTo(int, int);
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: ScrollGroup.h 6132 2008-05-29 23:09:01Z TobiasFar $".
+//
Added: branches/branch-3.0/fltk/Scrollbar.h
===================================================================
--- branches/branch-3.0/fltk/Scrollbar.h (rev 0)
+++ branches/branch-3.0/fltk/Scrollbar.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,64 @@
+//
+// "$Id: Scrollbar.h 5956 2007-10-17 19:57:31Z spitzak $"
+//
+// Scrollbar, controls an integer position of a window of a given
+// size inside a data set of a given total size.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Scrollbar_h
+#define fltk_Scrollbar_h
+
+#include "Slider.h"
+
+namespace fltk {
+
+class FL_API Scrollbar : public Slider {
+
+public:
+ Scrollbar(int x,int y,int w,int h, const char *l = 0);
+ static NamedStyle* default_style;
+
+ int value() const {return int(Slider::value());}
+ bool value(int position) {return Slider::value(position);}
+ bool value(int position, int size, int top, int total);
+ int handle(int);
+
+ int pagesize() const {return pagesize_;}
+ void pagesize(int a) {pagesize_ = a;}
+
+protected:
+ void draw();
+
+private:
+ int pagesize_;
+ static void timeout_cb(void*);
+ void increment_cb();
+
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Scrollbar.h 5956 2007-10-17 19:57:31Z spitzak $".
+//
Added: branches/branch-3.0/fltk/SecretInput.h
===================================================================
--- branches/branch-3.0/fltk/SecretInput.h (rev 0)
+++ branches/branch-3.0/fltk/SecretInput.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,47 @@
+//
+// "$Id: SecretInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// One-line text input field that draws asterisks instead of the
+// letters. It also prevents the user from cutting or copying the
+// text and then pasting it somewhere.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_SecretInput_h
+#define fltk_SecretInput_h
+
+#include "Input.h"
+
+namespace fltk {
+
+class SecretInput : public Input {
+public:
+ SecretInput(int x,int y,int w,int h,const char *l = 0)
+ : Input(x,y,w,h,l) {type(SECRET);}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: SecretInput.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/ShapedWindow.h
===================================================================
--- branches/branch-3.0/fltk/ShapedWindow.h (rev 0)
+++ branches/branch-3.0/fltk/ShapedWindow.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,57 @@
+// "$Id: ShapedWindow.h 5972 2007-11-14 16:49:25Z dejan $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_ShapedWindow_h
+#define fltk_ShapedWindow_h
+
+#include "Window.h"
+// WAS: This needs to take an arbitrary Image as a mask!
+#include "xbmImage.h"
+
+namespace fltk {
+
+class FL_API ShapedWindow : public Window {
+ void init() { shape_ = 0; lw = lh = 0; changed = 0; }
+ public:
+ ShapedWindow(int W, int H, const char *l = 0) : Window(W,H,l) {
+ border(false);
+ init();
+ }
+ ShapedWindow(int X, int Y, int W, int H, const char *l = 0): Window(X,Y,W,H,l) {
+ border(false);
+ init();
+ }
+ void shape(xbmImage* b) { shape_ = b; changed = 1; }
+ void shape(xbmImage& b) { shape_ =&b; changed = 1; }
+
+ protected:
+ virtual void draw();
+ xbmImage* shape_;
+ int lw, lh;
+ int changed;
+};
+
+}
+#endif
+
+//
+// End of "$Id: ShapedWindow.h 5972 2007-11-14 16:49:25Z dejan $"
+//
Added: branches/branch-3.0/fltk/SharedImage.h
===================================================================
--- branches/branch-3.0/fltk/SharedImage.h (rev 0)
+++ branches/branch-3.0/fltk/SharedImage.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,236 @@
+// "$Id: SharedImage.h 5738 2007-03-12 18:07:45Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+/*! \class fltk::SharedImage
+
+Subclass of Image that can read a file or block of compressed data.
+This provides several useful functions:
+* Images are identified by filename. The static get() function will
+return an existing instance if it was called before with the same filename.
+The release() function will decrement the reference count and delete
+the image if nobody wants it any more.
+* An inline block of data may be provided that is the contents of the file,
+so the file does not have to exist and you can link the image directly
+into your program.
+* You may set a memory usage limit. If Image::mem_used() goes above
+this limit, it will call destroy() on least-recently-used images until
+it goes below this limit.
+* The get() function can determine the type of the file or block of
+data and create the correct subclass.
+
+*/
+
+#ifndef fltk_SharedImage_h
+#define fltk_SharedImage_h
+
+#include "Image.h"
+
+namespace fltk {
+
+struct FL_IMAGES_API ImageType;
+
+
+class FL_API SharedImage : public Image {
+// fabien : introducing SharedImage handlers and uniform loading api inspired from 1.1.x
+public:
+ /*! get an image of this name and dimensions , can be already loaded or not */
+ static SharedImage *get(const char *n); // future impl. should care about W,H dims
+
+ /*! a SharedImageHandler accepts handling a filename
+ by analizing its extension and/or eventually its header,
+ if it handles it it returns a non null pointer on the loaded concrete image
+ */
+ /** fetch to the data/pixels unified buffer the image, return true if success.
+ this method() does NOT draw the image, it only prepares
+ a generic buffer and its info, this method should be used by all
+ non-progresive-reading read() methods so that we avoid redondant code
+ */
+ typedef SharedImage *(*Handler)(const char * filename, uchar *header, int headerlen);
+ /*! adds a new handler for hanling a concrete type of image, typically one handler per image type should be registered */
+ static void add_handler(Handler f);
+ /*! removes a concrete handler */
+ static void remove_handler(Handler f);
+
+private:
+ static Handler *handlers_; // Additional format handlers
+ static int num_handlers_; // Number of format handlers
+ static int alloc_handlers_; // Allocated format handlers
+
+protected:
+ static const char* shared_image_root;
+
+ static int image_used;
+ static unsigned mem_usage_limit;
+
+ SharedImage* l1; // Left leaf in the binary tree
+ SharedImage* l2; // Right leaf in the binary tree
+ const char* name; // Used to indentify the image, and as filename
+ const uchar* datas; // If non zero, pointers on inlined compressed datas
+ unsigned int used; // Last time used, for cache handling purpose
+ int refcount; // Number of time this image has been get
+
+ SharedImage() { }; // Constructor is protected on purpose,
+ // use the get function rather
+ //~SharedImage();
+
+ void find_less_used();
+ static void check_mem_usage();
+
+ /*! Return the filename obtained from the concatenation
+ of the image root directory and this image name
+ WARNING : the returned pointer will be
+ available only until next call to get_filename */
+ const char* get_filename() const;
+
+ virtual bool fetch() = 0; // force fetch() to be defined by subclasses
+
+ static void insert(SharedImage*& p, SharedImage* image);
+ static SharedImage* find(SharedImage* image, const char* name);
+ void remove_from_tree(SharedImage*& p, SharedImage* image);
+
+public:
+
+ static SharedImage *first_image;
+
+ /*! Return an SharedImage, using the create function if an image with
+ the given name doesn't already exist. Use datas, or read from the
+ file with filename name if datas==0. */
+ static SharedImage* get(SharedImage* (*create)(),
+ const char* name, const uchar* datas=0);
+
+ /*! Reload the image, useful if it has changed on disk, or if the datas
+ / in memory have changed (you can also give a new pointer on datas) */
+ void reload(const uchar* datas=0);
+ static void reload(const char* name, const uchar* datas=0);
+
+ /*! Remove an image from the database and delete it if its refcount has
+ fallen to zero
+ Each remove() decrements the refcount, each get() increments it
+ Return 1 if it has been really deleted. */
+ int remove();
+ static int remove(const char* name);
+
+ /*! Clear the cache for this image and all of its children in the binary tree */
+ void clear_cache();
+
+ /*! Set the position where images are looked for on disk */
+ static void set_root_directory(const char* d);
+
+ /*! Expand a name relative to root to see what file it will read */
+ static const char* get_filename(const char*);
+
+ /*! Set the size of the cache (0 = unlimited is the default) */
+ static void set_cache_size(unsigned l);
+
+ void _draw(const Rectangle&) const;
+
+};
+
+////////////////////////////////////////////////////////////////
+
+/*! Description of an Image file format */
+struct FL_IMAGES_API ImageType {
+ // Name of the filetype as it appear in the source code LOWERCASE!!!
+ const char* name;
+ // Function to test the filetype
+ bool (*test)(const uchar* datas, unsigned size);
+ // Function to get/create an image of this type
+ SharedImage* (*get)(const char* name, const uchar* datas);
+};
+extern FL_IMAGES_API ImageType image_filetypes[];
+
+/*! Try to guess the filetype
+ Beware that calling this force you to link in all image types ! */
+FL_IMAGES_API ImageType* guess_image(const char* name, const uchar* datas=0);
+
+////////////////////////////////////////////////////////////////
+
+//
+// bmp and gif classes are build in libfltk2 so they are FL_API
+//
+
+class FL_API gifImage : public SharedImage {
+ gifImage() { }
+ static SharedImage* create() { return new gifImage; }
+public:
+ static bool test(const uchar* datas, unsigned size=0);
+ static SharedImage* get(const char* name, const uchar* datas = 0) {
+ return SharedImage::get(create, name, datas);
+ }
+ bool fetch();
+};
+
+class FL_API bmpImage : public SharedImage {
+ bmpImage() { }
+ static SharedImage* create() { return new bmpImage; }
+public:
+ static bool test(const uchar* datas, unsigned size=0);
+ static SharedImage* get(const char* name, const uchar* datas = 0) {
+ return SharedImage::get(create, name, datas);
+ }
+ bool fetch();
+};
+
+class FL_IMAGES_API xpmFileImage : public SharedImage {
+ xpmFileImage() { }
+ static SharedImage* create() { return new xpmFileImage; }
+public:
+ static bool test(const uchar* datas, unsigned size=0);
+ static SharedImage* get(const char* name, const uchar* datas = 0) {
+ return SharedImage::get(create, name, datas);
+ }
+ bool fetch();
+};
+
+//
+// jpeg and png classes are in libfltk2_images so they are FL_IMAGES_API
+//
+
+class FL_IMAGES_API jpegImage : public SharedImage {
+ jpegImage() { }
+ static SharedImage* create() { return new jpegImage; }
+public:
+ static bool test(const uchar* datas, unsigned size=0);
+ static SharedImage* get(const char* name, const uchar* datas = 0) {
+ return SharedImage::get(create, name, datas);
+ }
+ bool fetch();
+};
+
+class FL_IMAGES_API pngImage : public SharedImage {
+ pngImage() { }
+ static SharedImage* create() { return new pngImage; } // Instantiate
+public:
+// Check the given buffer if it is in PNG format
+ static bool test(const uchar* datas, unsigned size=0);
+ static SharedImage* get(const char* name, const uchar* datas = 0) {
+ return SharedImage::get(create, name, datas);
+ }
+ bool fetch();
+};
+
+ extern FL_IMAGES_API void register_images(); // return always true only for automatic lib init purpose see images_core.cxx trick
+ extern FL_IMAGES_API void unregister_images();
+}
+
+#endif
+
+// End of "$Id: SharedImage.h 5738 2007-03-12 18:07:45Z spitzak $"
Added: branches/branch-3.0/fltk/Slider.h
===================================================================
--- branches/branch-3.0/fltk/Slider.h (rev 0)
+++ branches/branch-3.0/fltk/Slider.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,95 @@
+//
+// "$Id: Slider.h 5600 2007-01-13 00:04:55Z spitzak $"
+//
+// Slider value control. By default it moves vertically with the
+// minimum number at the bottom. See HorizontalSlider for one that
+// moves across (which is usually the default in other toolkits).
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Slider_h
+#define fltk_Slider_h
+
+#ifndef fltk_Valuator_h
+#include "Valuator.h"
+#endif
+
+namespace fltk {
+
+class FL_API Slider : public Valuator {
+
+ unsigned short slider_size_;
+ unsigned short tick_size_;
+
+public:
+
+ enum { // bit flags for type():
+ LINEAR = 0,
+ TICK_ABOVE = 2,
+ TICK_LEFT = TICK_ABOVE,
+ TICK_BELOW = 4,
+ TICK_RIGHT = TICK_BELOW,
+ TICK_BOTH = TICK_ABOVE|TICK_BELOW,
+ LOG = 8
+#ifdef FLTK_1_SLIDER
+ // for back-compatability only
+ ,VERTICAL = 0,
+ HORIZONTAL = 1,
+ FILL = 16
+#endif
+ };
+ bool horizontal() const {return !flag(LAYOUT_VERTICAL) || (type()&1);}
+ bool log() const {return (type()&LOG)!=0;}
+
+ void draw();
+ int handle(int);
+
+ Slider(int x,int y,int w,int h, const char *l = 0);
+ static NamedStyle* default_style;
+
+ unsigned short slider_size() const {return slider_size_;}
+ void slider_size(int n) {slider_size_ = (unsigned short)n;}
+ unsigned short tick_size() const {return tick_size_;}
+ void tick_size(int n) {tick_size_ = (unsigned short)n;}
+
+#ifdef FLTK_1_SLIDER
+ // back comptability:
+ Box* slider() const {return buttonbox();}
+ void slider(Box* b) {buttonbox(b);}
+ void slider_size(double v) {slider_size(int(v*w()));}
+#endif
+
+ //protected:
+
+ int slider_position(double value, int w);
+ double position_value(int x, int w);
+ int handle(int event, const Rectangle&);
+ void draw_ticks(const Rectangle&, int min_spacing);
+ bool draw(const Rectangle&, Flags flags, bool slot);
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Slider.h 5600 2007-01-13 00:04:55Z spitzak $".
+//
Added: branches/branch-3.0/fltk/StatusBarGroup.h
===================================================================
--- branches/branch-3.0/fltk/StatusBarGroup.h (rev 0)
+++ branches/branch-3.0/fltk/StatusBarGroup.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,90 @@
+//
+// "$Id"
+//
+// The Status StatusBarGroup is strip that can be put in the bottom edge of a Pack,
+// usually it contains a status bar.
+// it redims according to its parent width and keeps original given height
+//
+// Copyright 2002-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_StatusStatusBarGroup_h
+#define fltk_StatusStatusBarGroup_h
+
+#include "Group.h"
+#include "InvisibleBox.h"
+
+namespace fltk {
+
+class FL_API StatusBarGroup : public Group {
+public:
+ StatusBarGroup(int x,int y,int w,int h, const char* l=0, bool begin=false) :
+ Group(x,y,w,h,l,begin) {init(); }
+ //! statusbar default constructor
+ StatusBarGroup(int H=24) : Group(0, 0, 0, H, 0) {init(); }
+ virtual ~StatusBarGroup();
+
+ static NamedStyle* default_style;
+
+ void layout();
+ void show();
+ void hide();
+
+ enum Position {
+ SBAR_LEFT=0, //!< statusbar text left-aligned
+ SBAR_CENTER, //!< statusbar text centered
+ SBAR_RIGHT //!< statusbar text right-aligned (default)
+ };
+
+ /** set a simple string in the status bar
+ at a given Position 'pos' alignment spec.
+ */
+ void set(const char * t, Position pos=SBAR_RIGHT);
+ /** set a formatable (printf-like) text in the status bar
+ at a given Position 'pos' alignment spec.
+ */
+ void set(Position pos, const char * format, ... );
+ //! set a default box to all texts inside the status bar
+ void child_box(Box* b) {for(int i=0;i<3;i++) child_box(b,(Position)i);}
+ //! set a default box to text at particular position inside the status bar
+ void child_box(Box* b, Position i) {b_[i]= b;if(tf_[i]) tf_[i]->box(b);}
+
+protected:
+ //! draw a label on a particular (left,middle, right) Position
+ void draw_label(Position pos, const char * label);
+ //! adapt box position and size according to Position pos and statusbar dimensions
+ void update_box(InvisibleBox *b, Position pos);
+
+private:
+ void init();
+ void resize_from_parent();
+
+ // text fields up to three fields
+ InvisibleBox* tf_[3]; // 3 position possible and cumulable left, middle, center fields
+ Box* b_[3]; // box style for fields, default to no box
+ int saved_h_;
+};
+
+}
+#endif
+
+//
+// End of "$Id"
+//
Added: branches/branch-3.0/fltk/StringList.h
===================================================================
--- branches/branch-3.0/fltk/StringList.h (rev 0)
+++ branches/branch-3.0/fltk/StringList.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,72 @@
+// "$Id: StringList.h 5709 2007-02-23 01:03:47Z spitzak $"
+//
+// Copyright 1998-2007 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_StringList_h
+#define fltk_StringList_h
+
+#include "Menu.h"
+
+namespace fltk {
+
+class FL_API StringHierarchy : public List {
+ Widget* generated_item_;
+public:
+ // fltk::List virtual functions:
+ virtual Widget* child(const Menu*, const int* indexes, int level);
+ // virtual functions to return hierarchy of strings:
+ virtual int children(const Menu*, const int* indexes, int level) = 0;
+ virtual const char* label(const Menu*, const int* indexes, int level)=0;
+ // label() can mess with this item to change flags, font, etc:
+ Widget* generated_item() {return generated_item_;}
+ StringHierarchy() {generated_item_ = 0;}
+ ~StringHierarchy() {delete generated_item_;}
+};
+
+class FL_API StringList : public StringHierarchy {
+public:
+ // overrides of StringHierarchy virtual functions:
+ virtual int children(const Menu*, const int* indexes, int level);
+ virtual const char* label(const Menu*, const int* indexes, int level);
+ // new virtual funcitons:
+ virtual int children(const Menu*) = 0;
+ virtual const char* label(const Menu*, int index) = 0;
+};
+
+class FL_API StringArray : public StringList {
+ const char* const * array;
+ int children_;
+public:
+ // overrides of StringList virtual functions:
+ virtual int children(const Menu*);
+ virtual const char* label(const Menu*, int index);
+ // Constructors to use a constant array of strings:
+ StringArray(const char*const* a, int n) : array(a), children_(n) {}
+ StringArray(const char*const* a) {set(a);}
+ StringArray(const char* s) {set(s);}
+ StringArray() {children_ = 0;}
+ // change the array:
+ void set(const char*const* a, int n) {array=a; children_ = n;}
+ void set(const char*const* a);
+ void set(const char* s); // nul-seperated list
+};
+
+}
+#endif
Added: branches/branch-3.0/fltk/Style.h
===================================================================
--- branches/branch-3.0/fltk/Style.h (rev 0)
+++ branches/branch-3.0/fltk/Style.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,207 @@
+//
+// "$Id: Style.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// Style structure used by Widgets
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Style_h
+#define fltk_Style_h
+
+#include "Color.h"
+
+namespace fltk {
+
+/// \name fltk/Style.h
+//@{
+
+class FL_API Widget;
+class FL_API Rectangle;
+class FL_API Symbol;
+typedef Symbol Box;
+
+extern FL_API Box* const UP_BOX;
+extern FL_API Box* const DOWN_BOX;
+extern FL_API Box* const THIN_UP_BOX;
+extern FL_API Box* const THIN_DOWN_BOX;
+extern FL_API Box* const ENGRAVED_BOX;
+extern FL_API Box* const EMBOSSED_BOX;
+extern FL_API Box* const BORDER_BOX;
+extern FL_API Box* const FLAT_BOX;
+extern FL_API Box* const HIGHLIGHT_UP_BOX;
+extern FL_API Box* const HIGHLIGHT_DOWN_BOX;
+extern FL_API Box* const ROUND_UP_BOX;
+extern FL_API Box* const ROUND_DOWN_BOX;
+extern FL_API Box* const DIAMOND_UP_BOX;
+extern FL_API Box* const DIAMOND_DOWN_BOX;
+extern FL_API Box* const NO_BOX;
+extern FL_API Box* const SHADOW_BOX;
+extern FL_API Box* const ROUNDED_BOX;
+extern FL_API Box* const RSHADOW_BOX;
+extern FL_API Box* const RFLAT_BOX;
+extern FL_API Box* const OVAL_BOX;
+extern FL_API Box* const OSHADOW_BOX;
+extern FL_API Box* const OFLAT_BOX;
+extern FL_API Box* const BORDER_FRAME;
+extern FL_API Box* const PLASTIC_UP_BOX;
+extern FL_API Box* const PLASTIC_DOWN_BOX;
+
+struct Font;
+extern FL_API Font* const HELVETICA;
+extern FL_API Font* const HELVETICA_BOLD;
+extern FL_API Font* const HELVETICA_ITALIC;
+extern FL_API Font* const HELVETICA_BOLD_ITALIC;
+extern FL_API Font* const COURIER;
+extern FL_API Font* const COURIER_BOLD;
+extern FL_API Font* const COURIER_ITALIC;
+extern FL_API Font* const COURIER_BOLD_ITALIC;
+extern FL_API Font* const TIMES;
+extern FL_API Font* const TIMES_BOLD;
+extern FL_API Font* const TIMES_ITALIC;
+extern FL_API Font* const TIMES_BOLD_ITALIC;
+extern FL_API Font* const SYMBOL_FONT;
+extern FL_API Font* const SCREEN_FONT;
+extern FL_API Font* const SCREEN_BOLD_FONT;
+extern FL_API Font* const ZAPF_DINGBATS;
+
+class LabelType;
+extern FL_API LabelType* const NO_LABEL;
+extern FL_API LabelType* const NORMAL_LABEL;
+extern FL_API LabelType* const SYMBOL_LABEL; // same as NORMAL_LABEL
+extern FL_API LabelType* const SHADOW_LABEL;
+extern FL_API LabelType* const ENGRAVED_LABEL;
+extern FL_API LabelType* const EMBOSSED_LABEL;
+
+class Style;
+
+class FL_API Style {
+ public:
+ // Everything is public for various back-compatability hacks:
+ const Style* parent_;
+ Box* box_;
+ Box* buttonbox_;
+ Symbol* glyph_;
+ Font* labelfont_;
+ Font* textfont_;
+ LabelType* labeltype_;
+ Color color_;
+ Color textcolor_;
+ Color selection_color_;
+ Color selection_textcolor_;
+ Color buttoncolor_;
+ Color labelcolor_;
+ Color highlight_color_;
+ Color highlight_textcolor_;
+ float labelsize_;
+ float textsize_;
+ float leading_;
+ unsigned char scrollbar_align_;
+ unsigned char scrollbar_width_;
+ bool dynamic_;
+ // global settings:
+ static bool hide_underscore_;
+ static bool draw_boxes_inactive_;
+ static int wheel_scroll_lines_;
+
+ // Get functions, which search parents if value is zero:
+ Box* box() const;
+ Box* buttonbox() const;
+ Symbol* glyph() const;
+ Font* labelfont() const;
+ Font* textfont() const;
+ LabelType* labeltype() const;
+ Color color() const;
+ Color textcolor() const;
+ Color selection_color() const;
+ Color selection_textcolor() const;
+ Color buttoncolor() const;
+ Color labelcolor() const;
+ Color highlight_color() const;
+ Color highlight_textcolor() const;
+ float labelsize() const;
+ float textsize() const;
+ float leading() const;
+ unsigned char scrollbar_align() const;
+ unsigned char scrollbar_width() const;
+
+ bool hide_underscore() const {return hide_underscore_;}
+ bool draw_boxes_inactive() const {return draw_boxes_inactive_;}
+ int wheel_scroll_lines() const {return wheel_scroll_lines_;}
+
+ // Set functions:
+ void box (Box* v) {box_ = v; }
+ void buttonbox (Box* v) {buttonbox_ = v; }
+ void glyph (Symbol* v) {glyph_ = v; }
+ void labelfont (Font* v) {labelfont_ = v; }
+ void textfont (Font* v) {textfont_ = v; }
+ void labeltype (LabelType* v) {labeltype_ = v; }
+ void color (Color v) {color_ = v; }
+ void textcolor (Color v) {textcolor_ = v; }
+ void selection_color (Color v) {selection_color_ = v; }
+ void selection_textcolor(Color v) {selection_textcolor_ = v;}
+ void buttoncolor (Color v) {buttoncolor_ = v; }
+ void labelcolor (Color v) {labelcolor_ = v; }
+ void highlight_color (Color v) {highlight_color_ = v; }
+ void highlight_textcolor(Color v) {highlight_textcolor_ = v;}
+ void labelsize (float v) {labelsize_ = v; }
+ void textsize (float v) {textsize_ = v; }
+ void leading (float v) {leading_ = v; }
+ void scrollbar_align (unsigned char v) {scrollbar_align_ = v;}
+ void scrollbar_width (unsigned char v) {scrollbar_width_ = v;}
+
+ void hide_underscore (bool v) {hide_underscore_ = v; }
+ void draw_boxes_inactive(bool v) {draw_boxes_inactive_ = v;}
+ void wheel_scroll_lines(int v) {wheel_scroll_lines_ = v;}
+
+ Style();
+ bool dynamic() const {return dynamic_;}
+
+ static Style* find(const char* name);
+};
+
+struct FL_API NamedStyle : public Style {
+ const char* name;
+ void (*revertfunc)(Style*);
+ NamedStyle** back_pointer; // used by StyleSet
+ static NamedStyle* first;
+ NamedStyle* next;
+ NamedStyle(const char* name, void (*revert)(Style*), NamedStyle** backptr);
+};
+
+extern "C" {typedef bool (*Theme)();}
+extern FL_API Theme theme_;
+inline Theme theme() {return theme_;}
+inline void theme(Theme f) {theme_ = f;}
+FL_API void load_theme();
+FL_API void reload_theme();
+FL_API bool reset_theme();
+
+}
+
+extern "C" FL_API bool fltk_theme();
+
+//@}
+
+#endif
+
+//
+// End of "$Id: Style.h 6233 2008-09-14 07:54:06Z spitzak $".
+//
Added: branches/branch-3.0/fltk/StyleSet.h
===================================================================
--- branches/branch-3.0/fltk/StyleSet.h (rev 0)
+++ branches/branch-3.0/fltk/StyleSet.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,48 @@
+//
+// "$Id: StyleSet.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Saves and restores all the styles used by Widget constructors. Fluid
+// uses this so you can preview a style without fluid's own control
+// panels changing. I think this is broken, anybody want to fix it?
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_StyleSet_h
+#define fltk_StyleSet_h
+
+#include "Style.h"
+
+namespace fltk {
+
+class FL_API StyleSet {
+ NamedStyle* first_style;
+ Theme theme;
+ Color background;
+ void* reserved; // pointer to extra saved stuff
+public:
+ StyleSet();
+ void make_current();
+ ~StyleSet();
+};
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/Symbol.h
===================================================================
--- branches/branch-3.0/fltk/Symbol.h (rev 0)
+++ branches/branch-3.0/fltk/Symbol.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,91 @@
+// "$Id: Symbol.h 5865 2007-06-01 13:04:19Z sanel.z $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Symbol_h
+#define fltk_Symbol_h
+
+#include "FL_API.h"
+#include "Color.h"
+#include "Rectangle.h"
+#include "PixelType.h"
+
+namespace fltk {
+
+class Style;
+
+class FL_API Symbol {
+ const char* name_;
+ Rectangle inset_;
+
+ // Forbid use of copy contructor and assign operator
+ Symbol & operator=(const Symbol &);
+ Symbol(const Symbol &);
+
+ static const char* text_;
+ static unsigned text_length_;
+
+ public:
+
+ Symbol(const char* name=0);
+ const char* name() const {return name_;}
+ void name(const char*);
+
+ virtual void _measure(int& w, int& h) const;
+ void measure(int& w, int& h) const {_measure(w,h);}
+
+ virtual void _draw(const Rectangle&) const = 0;
+ void draw(const Rectangle& r) const {_draw(r);}
+ virtual void draw_symbol_overlay(const Rectangle&) const;
+
+ void set_inset(int x,int y,int w,int h) {inset_.set(x,y,w,h);}
+ void set_inset(int x,int y) {inset_.set(x,y,-2*x,-2*y);}
+ void set_inset(int x) {inset_.set(x,x,-2*x,-2*x);}
+ void set_inset(const Rectangle& r) {inset_ = r;}
+ const Rectangle& get_inset() const {return inset_;}
+
+ int dx() const {return inset_.x();}
+ int dy() const {return inset_.y();}
+ int dw() const {return -inset_.w();} // inverted for back-compatability
+ int dh() const {return -inset_.h();} // inverted for back-compatability
+
+ // Hints for widgets:
+ virtual void inset(Rectangle& r) const;
+ virtual bool fills_rectangle() const;
+ virtual bool is_frame() const;
+
+ // hash table lookup:
+ static const Symbol* find(const char* name);
+ static const Symbol* find(const char* start, const char* end);
+ static const Symbol* iterate(int& index);
+ static void text(const char* s, unsigned n) {text_=s; text_length_=n;}
+ static const char* text() {return text_;}
+ static unsigned text_length() {return text_length_;}
+
+ virtual ~Symbol();
+};
+
+// Back-compatability constructor:
+FL_API void add_symbol(const char* name, void (*drawit)(Color), int scalable);
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/SystemMenuBar.h
===================================================================
--- branches/branch-3.0/fltk/SystemMenuBar.h (rev 0)
+++ branches/branch-3.0/fltk/SystemMenuBar.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,62 @@
+//
+// "$Id:$"
+//
+// MacOS system menu bar header file for the Fast Light Tool Kit (FLTK2).
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+#ifndef fltk_SystemMenuBar_h
+#define fltk_SystemMenuBar_h
+
+#include "MenuBar.h"
+
+struct Fl_Menu_Item;
+
+namespace fltk {
+
+#ifdef __APPLE__
+
+class FL_API SystemMenuBar : public MenuBar {
+protected:
+ void draw();
+public:
+ SystemMenuBar(int x,int y,int w,int h,const char *l=0)
+ : MenuBar(x,y,w,h,l) {
+ deactivate(); // don't let the old area take events
+ }
+ void layout();
+};
+
+#else
+
+typedef MenuBar SystemMenuBar;
+
+#endif
+
+}
+
+#endif
+
+//
+// End of "$Id:$".
+//
Added: branches/branch-3.0/fltk/TabGroup.h
===================================================================
--- branches/branch-3.0/fltk/TabGroup.h (rev 0)
+++ branches/branch-3.0/fltk/TabGroup.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,141 @@
+//
+// "$Id: TabGroup.h 5575 2007-01-02 17:31:40Z spitzak $"
+//
+// For making a "tabbed dialog box". Each child widget creates a tab.
+// Only one is visible at a time. This works best if all the children
+// have the same size and they don't cover a strip at the top for the
+// tabs.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_TabGroup_h
+#define fltk_TabGroup_h
+
+#include "Group.h"
+
+#define MIN_TABSIZE 30
+
+namespace fltk {
+
+class TabGroup;
+
+
+enum {TAB_LEFT, TAB_RIGHT, TAB_SELECTED};
+
+class FL_API TabGroupPager {
+public:
+
+ TabGroupPager() : shift_(0), border_(10), slope_(5), extra_space_(5),_noclip(false) {}
+
+ /* Pager template methods definition */
+
+ /*! this method must update the tab positions and width array, returns the selected tab */
+ virtual int update_positions(TabGroup* g, int numchildren, int& selected,
+ int& cumulated_width, int& available_width , int* tab_pos, int* tab_width) { return selected;}
+ /*! draw the tabs for this custom pager, return false means no custom draw is made */
+ virtual bool draw_tabs(TabGroup* g, int selected, int* tab_pos, int* tab_width) { return false;}
+ /*! determine and return the index of the child group at the corresponding pos */
+ virtual int which(TabGroup* g, int m_x,int m_y)=0;
+ /*! virtual copy from a prototype */
+ virtual TabGroupPager* clone() const=0;
+
+ virtual const char * mode_name() const = 0;
+ virtual int id() const = 0;
+
+ /*! return max width available for drawing tab thumbnails */
+ virtual int available_width(TabGroup *g ) const;
+
+ // tab appearance
+ int border() const {return border_;}
+ int slope() const {return slope_;}
+ int extra_space() const {return extra_space_;}
+ void border(int v) {border_=v;}
+ void slope(int v) {slope_=v;}
+ void extra_space(int v) {extra_space_=v;}
+
+ /*! shifting to nth+1 tab to draw, permit to 'keep' a position while
+ changing tabs and tab is in the interval
+ */
+ int shift() const {return shift_;}
+ void shift(int v) {shift_=v;}
+ int spacing() const {return slope_+extra_space_;}
+ /*! determines if we forbid partial tabs drawing with clipping */
+ void noclip(bool v) {_noclip=v;}
+
+private:
+ int shift_, border_, slope_, extra_space_;
+ bool _noclip;
+
+};
+
+// fltk default factory pagers
+const int PAGER_MENU = 0; //<-- two left and right buttons provide prev page and next page
+const int PAGER_SHRINK = 1; //<-- tabs outside rect are shrinked to very small slice to fit
+
+
+class FL_API TabGroup : public Group {
+
+public:
+ int handle(int);
+
+ TabGroup(int,int,int,int,const char * = 0, bool begin=false);
+ ~TabGroup() {delete pager_;}
+ static NamedStyle* default_style;
+
+ int value() const;
+ bool value(int);
+ int which(int event_x, int event_y);
+ Widget *selected_child();
+ bool selected_child(Widget *);
+ void set_draw_outline( bool draw_outline );
+
+ //! setting the pager_ to a tabgroup, pager is _never_ null by design
+ void pager(TabGroupPager * value);
+ //! returning the current pager_ responsible of this instance
+ TabGroupPager * pager() const {return pager_;}
+ //! setting the default pager_ for future tabgroups, a default pager is _never_ null by design
+ static void default_pager(TabGroupPager * v);
+ //! setting the default pager_ from the built-in ones
+ static void default_pager(int factory_pager_index);
+
+ int tab_height();
+ int tab_positions(int*, int*);
+
+ void draw_tab(int x1, int x2, int W, int H, Widget* o, int sel=0);
+ void draw_tab_background();
+
+protected:
+ void draw();
+
+private:
+ int push(Widget *);
+ bool _drawOutline;
+ TabGroupPager* pager_;
+ static TabGroupPager* default_pager_;
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: TabGroup.h 5575 2007-01-02 17:31:40Z spitzak $".
+//
Added: branches/branch-3.0/fltk/TextBuffer.h
===================================================================
--- branches/branch-3.0/fltk/TextBuffer.h (rev 0)
+++ branches/branch-3.0/fltk/TextBuffer.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,285 @@
+//
+// "$Id: TextBuffer.h 5432 2006-09-16 02:03:04Z spitzak $"
+//
+// Header file for TextBuffer class.
+//
+// Copyright 2001-2006 by Bill Spitzak and others.
+// Original code Copyright Mark Edel. Permission to distribute under
+// the LGPL for the FLTK library granted by Mark Edel.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+#ifndef _fltk_TextBuffer_h_
+#define _fltk_TextBuffer_h_
+
+#include "FL_API.h"
+
+namespace fltk {
+
+/* Maximum length in characters of a tab or control character expansion
+ of a single buffer character */
+#define TEXT_MAX_EXP_CHAR_LEN 20
+
+class FL_API TextSelection {
+public:
+ TextSelection();
+
+ void set(int start, int end);
+ void set_rectangular(int start, int end, int rectstart, int rectend);
+ void update(int pos, int ndeleted, int ninserted);
+ bool rectangular() const { return rectangular_; }
+ int start() const { return start_; }
+ int end() const { return end_; }
+ int rectstart() const { return rectstart_; }
+ int rectend() const { return rectend_; }
+ bool selected() const { return selected_; }
+ void selected(bool b) { selected_ = b; }
+ bool zerowidth() const { return zerowidth_; }
+ void zerowidth(bool b) { zerowidth_ = b; }
+ bool includes(int pos, int lineStartPos, int dispIndex);
+ int position(int* start, int* end);
+ int position(int* start, int* end, int* isrect, int* rectstart, int* rectend);
+
+protected:
+ bool selected_; /*!< True if the selection is active */
+ bool rectangular_; /*!< True if the selection is rectangular */
+ bool zerowidth_; /*!< Width 0 selections aren't "real" selections, but
+ they can be useful when creating rectangular
+ selections from the keyboard. */
+ int start_; /*!< Pos. of start of selection, or if rectangular
+ start of line containing it. */
+ int end_; /*!< Pos. of end of selection, or if rectangular
+ end of line containing it. */
+ int rectstart_; /*!< Indent of left edge of rect. selection */
+ int rectend_; /*!< Indent of right edge of rect. selection */
+};
+
+
+typedef void (*Text_Modify_Cb)( int pos, int nInserted, int nDeleted,
+ int nRestyled, const char* deletedText,
+ void* cbArg);
+
+typedef void (*Text_Predelete_Cb)(int pos, int nDeleted, void* cbArg);
+
+/** TextBuffer */
+class FL_API TextBuffer {
+public:
+ TextBuffer(int requestedsize = 0);
+ ~TextBuffer();
+
+ int length() const { return length_; }
+
+ const char *text();
+ void text(const char* text);
+
+ char character(int pos);
+ char *text_range(int start, int end);
+ char *text_in_rectangle(int start, int end, int rectStart, int rectEnd);
+
+ void insert(int pos, const char *text);
+ void append(const char *t) { insert(length(), t); }
+ void remove(int start, int end);
+ void replace(int start, int end, const char *text);
+ void copy(TextBuffer *from_buf, int from_start, int from_end, int to_pos);
+
+ int undo(int *cp = 0);
+ void canUndo(char flag = 1);
+
+ int insertfile(const char *file, int pos, int buflen = 128*1024);
+ int appendfile(const char *file, int buflen = 128*1024)
+ { return insertfile(file, length(), buflen); }
+ int loadfile(const char *file, int buflen = 128*1024)
+ { select(0, length()); remove_selection(); return appendfile(file, buflen); }
+ int outputfile(const char *file, int start, int end, int buflen = 128*1024);
+ int savefile(const char *file, int buflen = 128*1024)
+ { return outputfile(file, 0, length(), buflen); }
+
+ void insert_column(int column, int startpos, const char *text,
+ int *chars_inserted, int *chars_deleted);
+
+ void replace_rectangular(int start, int end, int rectstart, int rectend,
+ const char *text);
+
+ void overlay_rectangular(int startpos, int rectStart, int rectEnd,
+ const char* text, int* charsInserted,
+ int* charsDeleted);
+
+ void remove_rectangular(int start, int end, int rectStart, int rectEnd);
+ void clear_rectangular(int start, int end, int rectStart, int rectEnd);
+ int tab_distance() const { return tabdist_; }
+ void tab_distance(int tabDist);
+
+ void select(int start, int end);
+ bool selected() const { return primary_.selected(); }
+ void unselect();
+
+ void select_rectangular(int start, int end, int rectStart, int rectEnd);
+ int selection_position(int* start, int* end);
+
+ int selection_position(int* start, int* end, int* isRect, int* rectStart,
+ int* rectEnd);
+
+ char *selection_text();
+ void remove_selection();
+ void replace_selection(const char* text);
+ void secondary_select(int start, int end);
+ void secondary_unselect();
+
+ void secondary_select_rectangular(int start, int end, int rectStart,
+ int rectEnd);
+
+ int secondary_selection_position(int* start, int* end, int* isRect,
+ int* rectStart, int* rectEnd);
+
+ char *secondary_selection_text();
+ void remove_secondary_selection();
+ void replace_secondary_selection(const char* text);
+ void highlight(int start, int end);
+ void unhighlight();
+ void highlight_rectangular(int start, int end, int rectStart, int rectEnd);
+
+ int highlight_position(int* start, int* end, int* isRect, int* rectStart,
+ int* rectEnd);
+
+ char *highlight_text();
+ void add_modify_callback(Text_Modify_Cb bufModifiedCB, void* cbArg);
+ void remove_modify_callback(Text_Modify_Cb bufModifiedCB, void* cbArg);
+
+ void call_modify_callbacks() { call_modify_callbacks(0, 0, 0, 0, 0); }
+
+ void add_predelete_callback(Text_Predelete_Cb bufPredelCB, void* cbArg);
+ void remove_predelete_callback(Text_Predelete_Cb predelCB, void* cbArg);
+
+ void call_predelete_callbacks() { call_predelete_callbacks(0, 0); }
+
+ char* line_text(int pos);
+ int line_start(int pos);
+ int line_end(int pos);
+ int word_start(int pos);
+ int word_end(int pos);
+ int expand_character(int pos, int indent, char *outStr);
+
+ static int expand_character(char c, int indent, char* outStr, int tabDist,
+ char nullSubsChar);
+
+ static int character_width(char c, int indent, int tabDist, char nullSubsChar);
+ int count_displayed_characters(int lineStartPos, int targetPos);
+ int count_displayed_characters_utf(int lineStartPos, int targetPos);
+ int skip_displayed_characters(int lineStartPos, int nChars);
+ int skip_displayed_characters_utf(int lineStartPos, int nChars);
+ int count_lines(int startPos, int endPos);
+ int skip_lines(int startPos, int nLines);
+ int rewind_lines(int startPos, int nLines);
+
+ bool findchar_forward(int startPos, char searchChar, int* foundPos);
+ bool findchar_backward(int startPos, char searchChar, int* foundPos);
+
+ bool findchars_forward(int startpos, const char *searchChars, int *foundPos);
+ bool findchars_backward(int startpos, const char *searchChars, int *foundPos);
+
+ bool search_forward(int startPos, const char* searchString, int* foundPos,
+ bool matchCase = false);
+
+ bool search_backward(int startPos, const char* searchString, int* foundPos,
+ bool matchCase = false);
+
+ char null_substitution_character() { return nullsubschar_; }
+ TextSelection* primary_selection() { return &primary_; }
+ TextSelection* secondary_selection() { return &secondary_; }
+ TextSelection* highlight_selection() { return &highlight_; }
+
+protected:
+ void call_modify_callbacks(int pos, int nDeleted, int nInserted,
+ int nRestyled, const char* deletedText);
+ void call_predelete_callbacks(int pos, int nDeleted);
+
+ int insert_(int pos, const char* text);
+ void remove_(int start, int end);
+
+ void remove_rectangular_(int start, int end, int rectStart, int rectEnd,
+ int* replaceLen, int* endPos);
+
+ void insert_column_(int column, int startPos, const char* insText,
+ int* nDeleted, int* nInserted, int* endPos);
+
+ void overlay_rectangular_(int startPos, int rectStart, int rectEnd,
+ const char* insText, int* nDeleted,
+ int* nInserted, int* endPos);
+
+ void redisplay_selection(TextSelection* oldSelection,
+ TextSelection* newSelection);
+
+ void move_gap(int pos);
+ void reallocate_with_gap(int newGapStart, int newGapLen);
+ char *selection_text_(TextSelection *sel);
+ void remove_selection_(TextSelection *sel);
+ void replace_selection_(TextSelection *sel, const char* text);
+
+ void rectangular_selection_boundaries(int lineStartPos, int rectStart,
+ int rectEnd, int* selStart,
+ int* selEnd);
+
+ void update_selections(int pos, int nDeleted, int nInserted);
+
+ TextSelection primary_; /* highlighted areas */
+ TextSelection secondary_;
+ TextSelection highlight_;
+
+ int length_; /*!< length of the text in the buffer (the length
+ of the buffer itself must be calculated:
+ gapend - gapstart + length) */
+ char *buf_; /*!< allocated memory where the text is stored */
+ int gapstart_; /*!< points to the first character of the gap */
+ int gapend_; /*!< points to the first char after the gap */
+
+ int tabdist_; /*!< equiv. number of characters in a tab */
+ bool usetabs_; /*!< True if buffer routines are allowed to use
+ tabs for padding in rectangular operations */
+
+ int nmodifyprocs_; /*!< number of modify-redisplay procs attached */
+ Text_Modify_Cb *modifyprocs_; /* modified to redisplay contents */
+ void **modifycbargs_; /*!< caller arguments for modifyprocs_ above */
+
+ int npredeleteprocs_; /*!< number of pre-delete procs attached */
+ Text_Predelete_Cb *predeleteprocs_; /* procedure to call before text is deleted */
+ /* from the buffer; at most one is supported. */
+ void **prepeletecbargs_; /*!< caller argument for pre-delete proc above */
+
+ int cursorposhint_; /*!< hint for reasonable cursor position after
+ a buffer modification operation */
+ char nullsubschar_; /*!< TextBuffer is based on C null-terminated strings,
+ so ascii-nul characters must be substituted
+ with something else. This is the else, but
+ of course, things get quite messy when you
+ use it */
+
+ char mCanUndo; /*!< if this buffer is used for attributes, it must
+ not do any undo calls */
+};
+
+} /* namespace fltk */
+
+#endif
+
+//
+// End of "$Id: TextBuffer.h 5432 2006-09-16 02:03:04Z spitzak $".
+//
+
Added: branches/branch-3.0/fltk/TextDisplay.h
===================================================================
--- branches/branch-3.0/fltk/TextDisplay.h (rev 0)
+++ branches/branch-3.0/fltk/TextDisplay.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,358 @@
+//
+// "$Id: TextDisplay.h 5432 2006-09-16 02:03:04Z spitzak $"
+//
+// Header file for TextDisplay class.
+//
+// Copyright 2001-2006 by Bill Spitzak and others.
+// Original code Copyright Mark Edel. Permission to distribute under
+// the LGPL for the FLTK library granted by Mark Edel.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+#ifndef _fltk_TextDisplay_h_
+#define _fltk_TextDisplay_h_
+
+#include "draw.h"
+#include "Group.h"
+#include "Widget.h"
+#include "Scrollbar.h"
+#include "TextBuffer.h"
+#include "Font.h"
+
+namespace fltk {
+
+typedef void (*UnfinishedStyleCb)(int, void *);
+
+/** TextDisplay */
+class FL_API TextDisplay: public Group {
+public:
+ enum {
+ NORMAL_CURSOR, CARET_CURSOR, DIM_CURSOR,
+ BLOCK_CURSOR, HEAVY_CURSOR
+ };
+
+ enum {
+ CURSOR_POS, CHARACTER_POS
+ };
+
+ // drag types- they match fltk::event_clicks() so that single clicking to
+ // start a collection selects by character, double clicking selects by
+ // word and triple clicking selects by line.
+ enum {
+ DRAG_CHAR = 0, DRAG_WORD = 1, DRAG_LINE = 2
+ };
+
+ enum {
+ ATTR_NONE = 0,
+ ATTR_UNDERLINE = 1,
+ ATTR_HIDDEN = 2
+ };
+
+ struct StyleTableEntry {
+ Color color;
+ Font *font;
+ float size;
+ unsigned attr;
+ };
+
+ TextDisplay(int X, int Y, int W, int H, const char *l = 0);
+ ~TextDisplay();
+
+ // Emulation of Input widget:
+ int size() const { return buffer_->length(); }
+ const char* text() const { return buffer_->text(); }
+ void text( const char* v) { buffer_->text(v); }
+ void static_text( const char* v) { buffer_->text(v); }
+ char at(int i) const { return buffer_->character(i); }
+
+ virtual int handle(int e);
+ virtual void draw();
+ virtual void layout();
+
+ /** Associate 'buf' with display */
+ void buffer(TextBuffer* buf);
+ /** Associate 'buf' with display */
+ void buffer(TextBuffer& buf) { buffer(&buf); }
+
+ /** Return attached buffer */
+ TextBuffer* buffer() { return buffer_; }
+ /** Return attached buffer */
+ const TextBuffer* buffer() const { return buffer_; }
+
+ /** Append text to the end of the buffer */
+ void append(const char *text) { insert_position(buffer()->length()); insert(text); }
+ /** Insert text to current cursor position */
+ void insert(const char *text);
+ /** Overstrike text from current cursor position */
+ void overstrike(const char *text);
+
+ /** Set new cursor position */
+ void insert_position(int newPos);
+ /** Return current cursor position */
+ int insert_position() const { return cursor_pos_; }
+ /** Make cursor position visible in screen */
+ void show_insert_position();
+
+ /** Show cursor */
+ void show_cursor(bool b = true);
+ /** Hide cursor */
+ void hide_cursor() { show_cursor(false); }
+ /** Return cursor visibility state */
+ bool cursor_on() const { return cursor_on_; }
+ /** Set cursor style */
+ void cursor_style(int style);
+
+ /** Return cursor color */
+ Color cursor_color() const { return cursor_color_;}
+ /** Set cursor color */
+ void cursor_color(Color n) { cursor_color_ = n; }
+
+ /** Return begining of the word where 'pos' is located */
+ int word_start(int pos) { return buffer()->word_start(pos); }
+ /** Return end of the word where 'pos' is located */
+ int word_end(int pos) { return buffer()->word_end(pos); }
+ /** Go to next word */
+ void next_word(void);
+ /** Go to previous word */
+ void previous_word(void);
+
+ /** Set wrapping mode. wrap_margin is width to wrap at, zero means use w() */
+ void wrap_mode(bool wrap, int wrap_margin=0);
+
+ /** Set line number area width */
+ void linenumber_width(int width);
+ /** Return line number area width */
+ int linenumber_width() const { return linenumwidth_; }
+
+ /** Set new highlight data */
+ void highlight_data(TextBuffer *styleBuffer,
+ StyleTableEntry *styleTable,
+ int nStyles, char unfinishedStyle,
+ UnfinishedStyleCb unfinishedHighlightCB,
+ void *cbArg);
+
+ /** Move cursor right */
+ bool move_right();
+ /** Move cursor left */
+ bool move_left();
+ /** Move cursor down */
+ bool move_up();
+ /** Move cursor down */
+ bool move_down();
+
+ /** Redisplay text */
+ void redisplay_range(int start, int end);
+
+ /** Scroll to new position */
+ void scroll(int topLineNum, int horizOffset);
+
+ /** Returns true if position is inside selection */
+ bool in_selection(int x, int y);
+
+ /** Returns begining of the line where 'pos' is located */
+ int line_start(int pos);
+
+ /** Returns end of the line where 'pos' is located */
+ int line_end(int pos, bool start_pos_is_line_start = false);
+
+ /** Return number of visible lines */
+ int visible_lines() const { return visiblelines_cnt_; }
+
+ /** Return current visible topline */
+ int top_line() const { return topline_num_; }
+
+ /** Return current horizontal offset */
+ int hor_offset() const { return horiz_offset_; }
+
+ /** Find start of the next character, starting from 'pos'
+ * If 'pos' points to start of character already, it is returned.
+ * This is mainly used with UTF-8 strings
+ */
+ int find_next_char(int pos);
+
+ /** Find start of the previous character, starting from 'pos'
+ * If 'pos' points to start of character already, it is returned.
+ * This is mainly used with UTF-8 strings
+ */
+ int find_prev_char(int pos);
+
+ int xy_to_position(int X, int Y, int PosType = CHARACTER_POS);
+
+ void xy_to_rowcol(int X, int Y, int *row, int *column, int PosType = CHARACTER_POS);
+
+ bool position_to_xy(int pos, int *X, int *Y);
+
+ int total_lines() {return count_lines(0, buffer_->length(), true);}
+
+protected:
+ void draw_text(int X, int Y, int W, int H);
+ void draw_range(int start, int end);
+ void draw_cursor(int, int);
+
+ void draw_string(int style, int x, int y, int toX, const char *string,
+ int nChars);
+
+ void draw_vline(int visLineNum, int leftClip, int rightClip,
+ int leftCharIndex, int rightCharIndex);
+
+ void draw_line_numbers(bool clearAll);
+
+ void clear_rect(int style, int x, int y, int width, int height);
+ void display_insert();
+
+ int count_lines(int start, int end, bool start_pos_is_line_start);
+ int skip_lines(int startPos, int nLines, bool startPosIsLineStart);
+ int rewind_lines(int startPos, int nLines);
+ int position_style(int lineStartPos, int lineLen, int lineIndex, int dispIndex);
+
+ int wrapped_column(int row, int column);
+ int wrapped_row(int row);
+
+ void offset_line_starts(int newTopLineNum);
+
+ void calc_line_starts(int startLine, int endLine);
+
+ void update_line_starts(int pos, int charsInserted, int charsDeleted,
+ int linesInserted, int linesDeleted, bool *scrolled);
+
+ void calc_last_char();
+
+ bool position_to_line(int pos, int* lineNum);
+ int string_width(const char* string, int length, int style);
+
+ static void buffer_predelete_cb(int pos, int nDeleted, void* cbArg);
+ static void buffer_modified_cb(int pos, int nInserted, int nDeleted,
+ int nRestyled, const char* deletedText,
+ void* cbArg);
+
+ static void h_scrollbar_cb(Scrollbar* w, TextDisplay* d);
+ static void v_scrollbar_cb( Scrollbar* w, TextDisplay* d);
+ void update_v_scrollbar();
+ void update_h_scrollbar(int longestvline = 0);
+
+ void blank_cursor_protrusions();
+ int measure_vline(int visLineNum);
+ int longest_vline();
+ int empty_vlines();
+ int vline_length(int visLineNum);
+
+ void maintain_absolute_top_line_number(bool state);
+ int get_absolute_top_line_number();
+ void absolute_top_line_number(int oldFirstChar);
+ int maintaining_absolute_top_line_number();
+ void reset_absolute_top_line_number();
+ bool position_to_linecol(int pos, int *lineNum, int *column);
+ void scroll_(int topLineNum, int horizOffset);
+
+ void extend_range_for_styles(int* start, int* end);
+
+ void find_wrap_range(const char *deletedText, int pos, int nInserted,
+ int nDeleted, int *modRangeStart, int *modRangeEnd,
+ int *linesInserted, int *linesDeleted);
+ void measure_deleted_lines(int pos, int nDeleted);
+ void wrapped_line_counter(TextBuffer *buf, int startPos, int maxPos,
+ int maxLines, bool startPosIsLineStart,
+ int styleBufOffset, int *retPos, int *retLines,
+ int *retLineStart, int *retLineEnd,
+ bool countLastLineMissingNewLine = true);
+ void find_line_end(int pos, bool start_pos_is_line_start, int *lineEnd,
+ int *nextLineStart);
+ int measure_proportional_character(TextBuffer *buf, int bufpos, int colNum, int pos);
+ int wrap_uses_character(int lineEndPos);
+ int range_touches_selection(TextSelection *sel, int rangeStart, int rangeEnd);
+ void text_drag_me(int pos);
+
+ int damage_range1_start, damage_range1_end;
+ int damage_range2_start, damage_range2_end;
+
+ int cursor_pos_;
+ bool cursor_on_;
+ int cursor_oldx_; /* X pos. of cursor for blanking */
+ int cursor_oldy_; /* Y pos. of cursor for blanking */
+ int cursor_hint_; /* Tells the buffer modified callback
+ where to move the cursor, to reduce
+ the number of redraw calls */
+ int cursor_style_; /* One of enum cursorStyles above */
+ int cursor_preferred_col_; /* Column for vert. cursor movement */
+ int visiblelines_cnt_; /* # of visible (displayed) lines */
+ int bufferlines_cnt_; /* # of newlines in the buffer */
+ TextBuffer *buffer_; /* Contains text to be displayed */
+ TextBuffer *stylebuffer_; /* Optional parallel buffer containing
+ color and font information */
+ int firstchar_, lastchar_; /* Buffer positions of first and last
+ displayed character (lastChar points
+ either to a newline or one character
+ beyond the end of the buffer) */
+ bool own_buffer; /* True if buffer_ created by constructor */
+ bool continuous_wrap_; /* Wrap long lines when displaying */
+ int wrapmargin_; /* Margin in # of char positions for
+ wrapping in continuousWrap mode */
+ int *linestarts_;
+ int topline_num_; /* Line number of top displayed line
+ of file (first line of file is 1) */
+ int abs_topline_num_; /* In continuous wrap mode, the line
+ number of the top line if the text
+ were not wrapped (note that this is
+ only maintained as needed). */
+ bool need_abs_topline_num_; /* Externally settable flag to continue
+ maintaining absTopLineNum even if
+ it isn't needed for line # display */
+ int horiz_offset_; /* Horizontal scroll pos. in pixels */
+ int numstyles_; /* Number of entries in styleTable */
+ const StyleTableEntry *styletable_; /* Table of fonts and colors for
+ coloring/syntax-highlighting */
+ char unfinished_style_; /* Style buffer entry which triggers
+ on-the-fly reparsing of region */
+ UnfinishedStyleCb unfinished_highlight_cb_; /* Callback to parse "unfinished" */
+ /* regions */
+ void *highlight_cbarg_; /* Arg to unfinishedHighlightCB */
+ int fixed_fontwidth_; /* Font width if all current fonts are
+ fixed and match in width, else -1 */
+ bool suppressresync_; /* Suppress resynchronization of line
+ starts during buffer updates */
+ int nlinesdeleted_; /* Number of lines deleted during
+ buffer modification (only used
+ when resynchronization is suppressed) */
+
+ int stdfontwidth_;
+ int ascent_;
+ int descent_;
+ int maxsize_;
+
+ Color cursor_color_;
+
+ Scrollbar *hscrollbar;
+ Scrollbar *vscrollbar;
+
+ Rectangle text_area;
+
+ int dragpos_, dragtype_, dragging_;
+ int linenumleft_, linenumwidth_; /* Line number margin and width */
+};
+
+} /* namespace fltk */
+
+#endif
+
+//
+// End of "$Id: TextDisplay.h 5432 2006-09-16 02:03:04Z spitzak $".
+//
+
Added: branches/branch-3.0/fltk/TextEditor.h
===================================================================
--- branches/branch-3.0/fltk/TextEditor.h (rev 0)
+++ branches/branch-3.0/fltk/TextEditor.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,122 @@
+//
+// "$Id: TextEditor.h 4899 2006-04-04 13:53:37Z fabien $"
+//
+// Header file for TextEditor class.
+//
+// Copyright 2001-2006 by Bill Spitzak and others.
+// Original code Copyright Mark Edel. Permission to distribute under
+// the LGPL for the FLTK library granted by Mark Edel.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+
+#ifndef TEXT_EDITOR_H
+#define TEXT_EDITOR_H
+
+#include "TextDisplay.h"
+
+namespace fltk {
+
+// key will match in any state
+#define TEXT_EDITOR_ANY_STATE (-1L)
+
+/** TextEditor */
+class FL_API TextEditor : public TextDisplay {
+public:
+ typedef int (*Key_Func)(int key, TextEditor* editor);
+
+ struct Key_Binding {
+ int key;
+ int state;
+ Key_Func function;
+ Key_Binding* next;
+ };
+
+ static NamedStyle* default_style;
+
+ TextEditor(int X, int Y, int W, int H, const char* l = 0);
+ ~TextEditor();
+
+ virtual int handle(int e);
+
+ /** Set new insert mode. true=insert, false=overstrike */
+ void insert_mode(bool b) { insert_mode_ = b; }
+ /** Return current insert mode */
+ bool insert_mode() const { return insert_mode_; }
+
+ void add_key_binding(int key, int state, Key_Func f, Key_Binding** list);
+ void add_key_binding(int key, int state, Key_Func f)
+ { add_key_binding(key, state, f, &key_bindings); }
+ void remove_key_binding(int key, int state, Key_Binding** list);
+ void remove_key_binding(int key, int state)
+ { remove_key_binding(key, state, &key_bindings); }
+ void remove_all_key_bindings(Key_Binding** list);
+ void remove_all_key_bindings() { remove_all_key_bindings(&key_bindings); }
+ void add_default_key_bindings(Key_Binding** list);
+ Key_Func bound_key_function(int key, int state, Key_Binding* list);
+ Key_Func bound_key_function(int key, int state)
+ { return bound_key_function(key, state, key_bindings); }
+ void default_key_function(Key_Func f) { default_key_function_ = f; }
+
+ // functions for the built in default bindings
+ static int kf_default(int c, TextEditor* e);
+ static int kf_ignore(int c, TextEditor* e);
+ static int kf_backspace(int c, TextEditor* e);
+ static int kf_enter(int c, TextEditor* e);
+ static int kf_move(int c, TextEditor* e);
+ static int kf_shift_move(int c, TextEditor* e);
+ static int kf_ctrl_move(int c, TextEditor* e);
+ static int kf_c_s_move(int c, TextEditor* e);
+ static int kf_home(int, TextEditor* e);
+ static int kf_end(int c, TextEditor* e);
+ static int kf_left(int c, TextEditor* e);
+ static int kf_up(int c, TextEditor* e);
+ static int kf_right(int c, TextEditor* e);
+ static int kf_down(int c, TextEditor* e);
+ static int kf_page_up(int c, TextEditor* e);
+ static int kf_page_down(int c, TextEditor* e);
+ static int kf_insert(int c, TextEditor* e);
+ static int kf_delete(int c, TextEditor* e);
+ static int kf_copy(int c, TextEditor* e);
+ static int kf_cut(int c, TextEditor* e);
+ static int kf_paste(int c, TextEditor* e);
+ static int kf_select_all(int c, TextEditor* e);
+ static int kf_undo(int c, TextEditor* e);
+
+protected:
+ int handle_key();
+ void maybe_do_callback();
+
+ bool insert_mode_;
+ Key_Binding* key_bindings;
+ static Key_Binding* global_key_bindings;
+ Key_Func default_key_function_;
+};
+
+} /* namespace fltk */
+
+#endif
+
+//
+// End of "$Id: TextEditor.h 4899 2006-04-04 13:53:37Z fabien $".
+//
+
+
Added: branches/branch-3.0/fltk/Threads.h
===================================================================
--- branches/branch-3.0/fltk/Threads.h (rev 0)
+++ branches/branch-3.0/fltk/Threads.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,206 @@
+#ifndef fltk_Threads_h
+#define fltk_Threads_h
+#include <fltk/FL_API.h>
+
+#if !defined( _WIN32) || defined(__CYGWIN__)
+// pthreads:
+
+#include <pthread.h>
+
+namespace fltk {
+
+/// \name fltk/Threads.h
+//@{
+
+/** Hides whatever the system uses to identify a thread. Used so
+ the "toy" interface is portable. */
+typedef pthread_t Thread;
+
+/** Fork a new thread and make it run \a f(p). Returns negative number
+ on error, otherwise \a t is set to the new thread. */
+inline int create_thread(Thread& t, void *(*f) (void *), void* p) {
+ return pthread_create((pthread_t*)&t, 0, f, p);
+}
+
+/**
+ "Mutual-exclusion lock" for simple multithreaded programs. Calling
+ lock() will wait until nobody else has the lock and then will
+ return. <i>Calling lock() more than once will "deadlock"!</i>
+ To avoid this, use RecursiveMutex.
+*/
+class Mutex {
+ friend class SignalMutex;
+ pthread_mutex_t mutex;
+ Mutex(const Mutex&);
+ Mutex& operator=(const Mutex&);
+protected:
+ Mutex(const pthread_mutexattr_t* a) {pthread_mutex_init(&mutex, a);}
+public:
+ Mutex() {pthread_mutex_init(&mutex, 0);}
+ void lock() {pthread_mutex_lock(&mutex);}
+ void unlock() {pthread_mutex_unlock(&mutex);}
+ bool trylock() {return pthread_mutex_trylock(&mutex) == 0;}
+ ~Mutex() {pthread_mutex_destroy(&mutex);}
+};
+
+/**
+ A portable "semaphore". A thread that holds this lock() can call
+ wait(), which will unlock it, then wait for another thread to
+ call signal(), then lock() it again.
+
+ The other thread can call signal() at any time, though usually
+ it will have called lock() as well, as the lock can be used to
+ protect the data that is actually being shared between the threads.
+
+ If more than one thread is in wait(), then calling signal_one()
+ will only wake one of them up. This may be more efficient, and
+ can be done safely if all threads that call wait() also call
+ signal_one() just before calling unlock().
+
+ Warning: wait() can return even if signal() was not called. You
+ must then check other data (protected by the lock()) to see if
+ the condition really is fulfilled. In many cases this is the
+ best implementation, it is also necessary to work around design
+ errors in Windows, where always returns after 1/2 second to
+ avoid a deadlock due to the non-atomic nature of Windows calls.
+*/
+class SignalMutex : public Mutex {
+ pthread_cond_t cond;
+public:
+ SignalMutex() : Mutex() {pthread_cond_init(&cond, 0);}
+ void signal() {pthread_cond_broadcast(&cond);}
+ void signal_one() {pthread_cond_signal(&cond);}
+ void wait() {pthread_cond_wait(&cond, &mutex);}
+};
+
+// Linux supports recursive locks, use them directly, with some cheating:
+#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) || defined(PTHREAD_MUTEX_RECURSIVE)
+
+class RecursiveMutex : public Mutex {
+public:
+ RecursiveMutex();
+};
+
+#else // standard pthread mutexes need a bit of work to be recursive:
+
+/**
+ "Mutual exclusion lock" to protect data in multithreaded programs.
+ This is a "recursive lock". Calling lock() will wait until nobody
+ else has the lock and then will take it. Calling lock() multiple
+ times by the same thread is allowed, and unlock() must then be
+ called the same number of times before another thread can get the
+ lock.
+*/
+class RecursiveMutex : public Mutex {
+ pthread_t owner;
+ int counter;
+public:
+ RecursiveMutex() : Mutex(), counter(0) {}
+ void lock() {
+ if (!counter || owner != pthread_self()) {
+ Mutex::lock();
+ owner = pthread_self();
+ counter = 1;
+ } else {
+ ++counter;
+ }
+ }
+ bool trylock() {
+ if (!counter || owner != pthread_self()) {
+ if (!Mutex::trylock()) return false;
+ owner = pthread_self();
+ }
+ counter++;
+ return true;
+ }
+ void unlock() {if (!--counter) Mutex::unlock();}
+};
+
+#endif
+
+#else // _WIN32:
+
+# define _WIN32_WINNT 0x0500
+# include <windows.h>
+# include <process.h>
+// undefine some of the more annoying crap:
+# undef DELETE
+# undef ERROR
+# undef IN
+# undef OUT
+# undef POINT
+# undef far
+# undef max
+# undef min
+# undef near
+
+namespace fltk {
+
+typedef unsigned long Thread;
+
+inline int create_thread(Thread& t, void *(*f) (void *), void* p) {
+ return t = (Thread)_beginthread((void( __cdecl * )( void * ))f, 0, p);
+}
+
+class FL_API Mutex {
+ CRITICAL_SECTION cs;
+ Mutex(const Mutex&);
+ Mutex& operator=(const Mutex&);
+public:
+ Mutex() {InitializeCriticalSection(&cs);}
+ void lock() {while (!TryEnterCriticalSection(&cs)) SwitchToThread();}
+ void unlock() {LeaveCriticalSection(&cs);}
+ bool trylock() {return TryEnterCriticalSection(&cs);}
+ ~Mutex() {DeleteCriticalSection(&cs);}
+};
+
+// After many experiments we have determined that this very stupid
+// implementation has the lowest overhead:
+class FL_API SignalMutex : public Mutex {
+public:
+ SignalMutex() : Mutex() {}
+ void signal() {}
+ void signal_one() {}
+ void wait() {
+ // the following three calls should be atomic, sigh...
+ unlock();
+ SwitchToThread();
+ lock();
+ }
+};
+
+typedef Mutex RecursiveMutex;
+
+#endif
+
+/**
+ C++ convienence object for locking a Mutex.
+ Creating a local one of these will lock() the mutex and it means
+ unlock() will be called no matter how a function exits, because
+ the destructor ~Guard() does an unlock().
+
+\code
+ static fltk::Mutex mutex;
+ function() {
+ fltk::Guard guard(mutex);
+ do_stuff;
+ throw_exceptions;
+ if (test()) return;
+ etc;
+ }
+\endcode
+
+*/
+class FL_API Guard {
+ Mutex& lock;
+ public:
+ Guard(Mutex& m) : lock(m) {lock.lock();}
+ Guard(Mutex* m) : lock(*m) {lock.lock();}
+ ~Guard() {lock.unlock();}
+};
+
+//@}
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/ThumbWheel.h
===================================================================
--- branches/branch-3.0/fltk/ThumbWheel.h (rev 0)
+++ branches/branch-3.0/fltk/ThumbWheel.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,54 @@
+//
+// "$Id: ThumbWheel.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Inventor-style thumbwheel control for a single floating point value.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_ThumbWheel_h
+#define fltk_ThumbWheel_h
+
+#ifndef fltk_Valuator_h
+#include "Valuator.h"
+#endif
+
+namespace fltk {
+
+class FL_API ThumbWheel : public Valuator {
+public:
+#ifdef FLTK_1_SLIDER
+ // for back-compatability only
+ enum {HORIZONTAL = 1};
+#endif
+ int handle(int);
+ ThumbWheel(int X,int Y,int W,int H,const char* L=0);
+
+protected:
+ void draw();
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: ThumbWheel.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/TiledGroup.h
===================================================================
--- branches/branch-3.0/fltk/TiledGroup.h (rev 0)
+++ branches/branch-3.0/fltk/TiledGroup.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,50 @@
+//
+// "$Id: TiledGroup.h 5575 2007-01-02 17:31:40Z spitzak $"
+//
+// The child widgets are expected to be all laid out to touch each other
+// and fill this group. The user can then move the boundaries between
+// them by grabbing the junctions between the children.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_TiledGroup_h
+#define fltk_TiledGroup_h
+
+#include "Group.h"
+
+namespace fltk {
+
+class FL_API TiledGroup : public Group {
+protected:
+ void layout();
+public:
+ int handle(int);
+ TiledGroup(int x,int y,int w,int h, const char*l=0, bool begin=false) :
+ Group(x,y,w,h,l,begin) {}
+ void position(int, int, int, int);
+};
+
+}
+#endif
+
+//
+// End of "$Id: TiledGroup.h 5575 2007-01-02 17:31:40Z spitzak $".
+//
Added: branches/branch-3.0/fltk/TiledImage.h
===================================================================
--- branches/branch-3.0/fltk/TiledImage.h (rev 0)
+++ branches/branch-3.0/fltk/TiledImage.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,50 @@
+//
+// "$Id: TiledImage.h 5810 2007-05-11 22:44:12Z spitzak $"
+//
+// A tiled image completely fills the bounding box passed to it with
+// replications of the internal Image passed to it.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_TiledImage_h
+#define fltk_TiledImage_h
+
+#include "Symbol.h"
+
+namespace fltk {
+
+class FL_API TiledImage : public Symbol {
+protected:
+ const Symbol* image_;
+public:
+ TiledImage(Symbol *i) : Symbol(0), image_(i) {}
+ const Symbol* image() const {return image_;}
+ void image(const Symbol* i) {image_ = i;}
+ void _measure(int& w, int& h) const;
+ void _draw(const Rectangle&) const;
+};
+
+}
+#endif
+
+//
+// End of "$Id: TiledImage.h 5810 2007-05-11 22:44:12Z spitzak $"
+//
Added: branches/branch-3.0/fltk/ToggleButton.h
===================================================================
--- branches/branch-3.0/fltk/ToggleButton.h (rev 0)
+++ branches/branch-3.0/fltk/ToggleButton.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,44 @@
+//
+// "$Id: ToggleButton.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Button that clicks on and off. You get the state with value().
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_ToggleButton_h
+#define fltk_ToggleButton_h
+
+#include "Button.h"
+
+namespace fltk {
+
+class ToggleButton : public Button {
+public:
+ ToggleButton(int x,int y,int w,int h,const char *l=0)
+ : Button(x,y,w,h,l) {type(TOGGLE);}
+};
+
+}
+#endif
+
+//
+// End of "$Id: ToggleButton.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/ToggleItem.h
===================================================================
--- branches/branch-3.0/fltk/ToggleItem.h (rev 0)
+++ branches/branch-3.0/fltk/ToggleItem.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,41 @@
+// "$Id: ToggleItem.h 588 2003-06-24 21:10:19Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_ToggleItem_h
+#define fltk_ToggleItem_h
+
+#include "Item.h"
+
+namespace fltk {
+
+/** This widget makes a checkmark in a popup or pulldown Menu.
+ It's behavior in a Browser or MultiBrowser is that it changes its status on multiple clicks (e.g. double click). */
+class ToggleItem : public Item {
+public:
+ ToggleItem(const char* label = 0) : Item(label) {type(TOGGLE);}
+ ToggleItem(const char* label,int shortcut,Callback *callback=0,void *user_data=0, int flags=0)
+ : Item(label,shortcut,callback,user_data,flags) {type(TOGGLE);}
+};
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/Tooltip.h
===================================================================
--- branches/branch-3.0/fltk/Tooltip.h (rev 0)
+++ branches/branch-3.0/fltk/Tooltip.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,86 @@
+// "$Id: Tooltip.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Tooltip_h
+#define fltk_Tooltip_h
+
+#include "MenuWindow.h"
+
+namespace fltk {
+
+class FL_API Tooltip : public MenuWindow {
+public:
+ Tooltip();
+ void draw();
+ void layout();
+
+ static float delay() { return delay_; }
+ static void delay(float f) { delay_ = f; }
+ static bool enabled() { return enabled_; }
+ static void enable(bool b = true) { enabled_ = b; }
+ static void disable() { enabled_ = false; }
+
+ typedef const char* (*Generator)(Widget*, void*);
+ static void enter(Widget*, const Rectangle&, Generator, void* = 0);
+ static void enter(Widget*, const Rectangle&, const char* text);
+ static void enter(Widget*);
+ static void current(Widget*);
+ static void exit();
+
+ static Widget* current_widget() { return current_widget_; }
+ static const Rectangle& current_rectangle() { return current_rectangle_; }
+ static Generator current_generator() { return current_generator_; }
+ static void* current_data() { return current_data_; }
+ static Tooltip* instance() { return instance_; }
+
+ static NamedStyle* default_style;
+#ifdef FLTK_1_WIDGET // back-compatability section:
+ static Widget* current() { return current_widget_; }
+ static Font* font() { return default_style->textfont(); }
+ static void font(Font* i) { default_style->textfont(i); }
+ static float size() { return default_style->labelsize(); }
+ static void size(float s) { default_style->labelsize(s); }
+ static void textcolor(Color c){ default_style->labelcolor(c); }
+ static Color textcolor() { return default_style->labelcolor(); }
+ static void color(Color c) { default_style->color(c); }
+ static Color color() { return default_style->color(); }
+ static void box(Box* b) { default_style->box(b); }
+ static Box* box() { return default_style->box(); }
+#endif
+
+private:
+ static float delay_;
+ static bool enabled_;
+ static Widget* current_widget_;
+ static Rectangle current_rectangle_;
+ static Generator current_generator_;
+ static void* current_data_;
+ static Tooltip* instance_;
+ static void tooltip_timeout(void*);
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Tooltip.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/Valuator.h
===================================================================
--- branches/branch-3.0/fltk/Valuator.h (rev 0)
+++ branches/branch-3.0/fltk/Valuator.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,93 @@
+// "$Id: Valuator.h 6944 2009-11-27 12:18:37Z cwarrens $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Valuator_h
+#define fltk_Valuator_h
+
+#ifndef fltk_Widget_h
+#include "Widget.h"
+#endif
+
+namespace fltk {
+
+class FL_API Valuator : public Widget {
+
+public:
+
+ double value() const {return value_;}
+ bool value(double);
+
+ double minimum() const {return minimum_;}
+ void minimum(double a) {minimum_ = a;}
+
+ double maximum() const {return maximum_;}
+ void maximum(double a) {maximum_ = a;}
+
+ void range(double a, double b) {minimum_ = a; maximum_ = b;}
+
+ double step() const {return step_;}
+ void step(double a) {step_ = a;}
+
+ double linesize() const;
+ void linesize(double a) {linesize_ = a;}
+ double linesize_setting() const {return linesize_;}
+
+ virtual int format(char*);
+
+ int handle(int);
+
+#ifdef FLTK_1_SLIDER
+ void step(double a, int b) {step(a/b);}
+ void bounds(double a, double b) {minimum_=a; maximum_=b;}
+ void precision(int p) {
+ int B = 1;
+ for (int i=0; i<p; i++) B *= 10;
+ step_ = 1.0f/B;
+ }
+#endif
+
+//protected:
+
+ Valuator(int X, int Y, int W, int H, const char* L);
+ double previous_value() const {return previous_value_;}
+ void handle_push() {previous_value_ = value_;}
+ void handle_drag(double newvalue);
+ void handle_release();
+
+ virtual void value_damage(); // callback whenever value changes
+ void set_value(double v) {value_ = v;} // change w/o doing value_damage
+
+private:
+
+ double value_;
+ double previous_value_;
+ double minimum_;
+ double maximum_;
+ double step_;
+ double linesize_;
+
+};
+
+}
+
+#endif
+
+// End of "$Id: Valuator.h 6944 2009-11-27 12:18:37Z cwarrens $".
Added: branches/branch-3.0/fltk/ValueInput.h
===================================================================
--- branches/branch-3.0/fltk/ValueInput.h (rev 0)
+++ branches/branch-3.0/fltk/ValueInput.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,58 @@
+//
+// "$Id: ValueInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Text field for inputing a floating-point number
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_ValueInput_h
+#define fltk_ValueInput_h
+
+#include "Valuator.h"
+#include "FloatInput.h"
+
+namespace fltk {
+
+class FL_API ValueInput : public Valuator {
+public:
+ FloatInput input;
+
+ int handle(int);
+ void draw();
+ ValueInput(int x,int y,int w,int h,const char *l=0);
+ ~ValueInput();
+
+protected:
+ void layout();
+ virtual void value_damage(); // cause damage() due to value() changing
+
+private:
+ static void input_cb(Widget*,void*);
+ void increment_cb();
+ static void repeat_callback(void* v);
+};
+
+}
+#endif
+
+//
+// End of "$Id: ValueInput.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/ValueOutput.h
===================================================================
--- branches/branch-3.0/fltk/ValueOutput.h (rev 0)
+++ branches/branch-3.0/fltk/ValueOutput.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,45 @@
+//
+// "$Id: ValueOutput.h 5197 2006-06-14 07:43:46Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@easysw.com".
+//
+
+#ifndef fltk_ValueOutput_h
+#define fltk_ValueOutput_h
+
+#include "Valuator.h"
+
+namespace fltk {
+
+class FL_API ValueOutput : public Valuator {
+public:
+ void draw();
+ int handle(int);
+ ValueOutput(int x,int y,int w,int h,const char *l = 0)
+ : Valuator(x, y, w, h, l) {align(ALIGN_LEFT);}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: ValueOutput.h 5197 2006-06-14 07:43:46Z spitzak $".
+//
Added: branches/branch-3.0/fltk/ValueSlider.h
===================================================================
--- branches/branch-3.0/fltk/ValueSlider.h (rev 0)
+++ branches/branch-3.0/fltk/ValueSlider.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,52 @@
+//
+// "$Id: ValueSlider.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_Value_Slider_h
+#define fltk_Value_Slider_h
+
+#include "Slider.h"
+#include "FloatInput.h"
+
+namespace fltk {
+
+class FL_API ValueSlider : public Slider {
+public:
+ FloatInput input;
+ int handle(int);
+ void draw();
+ ValueSlider(int x,int y,int w,int h, const char *l = 0);
+ ~ValueSlider();
+ void layout();
+ virtual void value_damage(); // cause damage() due to value() changing
+
+private:
+ static void input_cb(Widget*,void*);
+ void slider_rect(Rectangle&);
+};
+
+}
+#endif
+
+//
+// End of "$Id: ValueSlider.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/Widget.h
===================================================================
--- branches/branch-3.0/fltk/Widget.h (rev 0)
+++ branches/branch-3.0/fltk/Widget.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,331 @@
+// "$Id: Widget.h 6518 2008-11-11 22:31:26Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Widget_h
+#define fltk_Widget_h
+
+#include "Style.h"
+#include "Rectangle.h"
+
+namespace fltk {
+
+class FL_API Widget;
+class FL_API Window;
+class FL_API Symbol;
+class FL_API Group;
+class FL_API AssociationType;
+class FL_API AssociationFunctor;
+struct Cursor;
+
+typedef void (Callback )(Widget*, void*);
+typedef Callback* Callback_p; // needed for BORLAND
+typedef void (Callback0)(Widget*);
+typedef void (Callback1)(Widget*, long);
+
+#ifdef FLTK_1_WIDGET // back-compatability section:
+FL_API Font* font(int);
+#endif
+
+class FL_API Widget : public Rectangle {
+ // disable the copy assignment/constructors:
+ Widget & operator=(const Widget &);
+ Widget(const Widget &);
+
+public:
+
+ Widget(int,int,int,int,const char* =0);
+ virtual ~Widget();
+
+ virtual void draw();
+ virtual int handle(int);
+ int send(int event);
+ virtual void layout();
+
+ const Style* style() const { return style_; }
+ void style(const Style* s) { style_ = s; }
+ void style(const Style& s) { style_ = &s; }
+ bool copy_style(const Style* s);
+ static NamedStyle* default_style;
+ static Symbol* default_glyph;
+
+ Group* parent() const { return parent_; }
+ void parent(Group* w) { parent_ = w; }
+ Window* window() const ;
+
+ enum WidgetVisualType {
+ // Values for type() shared by Button and menu Item, and for fake RTTI:
+ RESERVED_TYPE = 0x64,
+ TOGGLE = RESERVED_TYPE+1,
+ RADIO = RESERVED_TYPE+2,
+ GROUP_TYPE = 0xe0,
+ WINDOW_TYPE = 0xf0
+ };
+
+ uchar type() const { return type_; }
+ void type(uchar t) { type_ = t; }
+ bool is_group() const { return type_ >= GROUP_TYPE; }
+ bool is_window() const { return type_ >= WINDOW_TYPE; }
+
+ bool resize(int x,int y,int w,int h);
+ bool position(int x, int y) ;
+ bool resize(int w, int h) ;
+
+ void get_absolute_rect( Rectangle *rect ) const;
+
+ const char* label() const { return label_; }
+ void label(const char* a);
+ void copy_label(const char* a);
+
+ const Symbol* image() const { return image_; }
+ void image(const Symbol* a) { image_ = a; }
+ void image(const Symbol& a) { image_ = &a; }
+
+ const char *tooltip() const { return tooltip_; }
+ void tooltip(const char *t) { tooltip_ = t; }
+
+ unsigned shortcut() const ;
+ void shortcut(unsigned key) ;
+ bool add_shortcut(unsigned key);
+ bool remove_shortcut(unsigned key);
+ void remove_shortcuts() ;
+ unsigned label_shortcut() const;
+ bool test_label_shortcut() const;
+ bool test_shortcut() const ;
+ bool test_shortcut(bool) const;
+
+ Callback_p callback() const { return callback_; }
+ void callback(Callback* c, void* p) { callback_=c; user_data_=p; }
+ void callback(Callback* c) { callback_=c; }
+ void callback(Callback0*c) { callback_=(Callback*)c; }
+ void callback(Callback1*c, long p=0) { callback_=(Callback*)c; user_data_=(void*)p; }
+ void* user_data() const { return user_data_; }
+ void user_data(void* v) { user_data_ = v; }
+ long argument() const { return (long)user_data_; }
+ void argument(long v) { user_data_ = (void*)v; }
+ uchar when() const { return when_; }
+ void when(uchar i) { when_ = i; }
+
+ static void default_callback(Widget*, void*);
+ void do_callback() { callback_(this,user_data_); }
+ void do_callback(Widget* o,void* arg=0) { callback_(o,arg); }
+ void do_callback(Widget* o,long arg) { callback_(o,(void*)arg); }
+ bool contains(const Widget*) const;
+ bool inside(const Widget* o) const { return o && o->contains(this); }
+ bool pushed() const ;
+ bool focused() const ;
+ bool belowmouse() const ;
+
+ Flags flags() const { return flags_; }
+ void flags(Flags f) { flags_ = f; }
+ void set_flag(unsigned f) { flags_ |= f; }
+ void clear_flag(unsigned f) { flags_ &= ~f; }
+ void invert_flag(unsigned f) { flags_ ^= f; }
+ void set_flag(unsigned f,bool b) { flags_ = (flags_&~f)|(b?f:0); }
+ bool flag(unsigned f) const { return (flags_ & f) != 0; }
+ bool any_of(unsigned f) const{ return (flags_ & f) != 0; }
+ bool all_of(unsigned f) const{ return (flags_ & f) == f; }
+
+ bool state() const { return flag(STATE); }
+ bool state(bool);
+ bool set() { return state(true); }
+ bool clear() { return state(false); }
+ void setonly();
+
+ Flags align() const { return flags_&ALIGN_MASK; }
+ void align(unsigned a) { flags_ = (flags_ & (~ALIGN_MASK)) | a; }
+ bool visible() const { return !flag(INVISIBLE); }
+ bool visible_r() const ;
+ void show() ;
+ void hide() ;
+ void set_visible() { clear_flag(INVISIBLE); }
+ void clear_visible() { set_flag(INVISIBLE); }
+ bool active() const { return !flag(INACTIVE); }
+ bool active_r() const ;
+ void activate() ;
+ void activate(int b) { if (b) activate(); else deactivate(); }
+ void deactivate() ;
+ bool output() const { return flag(OUTPUT); }
+ void set_output() { set_flag(OUTPUT); }
+ void clear_output() { clear_flag(OUTPUT); }
+ bool takesevents() const { return !any_of(OUTPUT|INVISIBLE|INACTIVE); }
+ bool changed() const { return flag(CHANGED); }
+ void set_changed() { set_flag(CHANGED); }
+ void clear_changed() { clear_flag(CHANGED); }
+ bool selected() const { return flag(SELECTED); }
+ void set_selected() { set_flag(SELECTED); }
+ void clear_selected() { clear_flag(SELECTED); }
+ bool click_to_focus() { return flag(CLICK_TO_FOCUS); }
+ void set_click_to_focus() { set_flag(CLICK_TO_FOCUS); }
+ void clear_click_to_focus() { clear_flag(CLICK_TO_FOCUS); }
+ bool tab_to_focus() { return flag(TAB_TO_FOCUS); }
+ void set_tab_to_focus() { set_flag(TAB_TO_FOCUS); }
+ void clear_tab_to_focus() { clear_flag(TAB_TO_FOCUS|CLICK_TO_FOCUS); }
+ bool horizontal() const { return !flag(LAYOUT_VERTICAL);}
+ bool vertical() const { return flag(LAYOUT_VERTICAL);}
+ void set_horizontal() { clear_flag(LAYOUT_VERTICAL); }
+ void set_vertical() { set_flag(LAYOUT_VERTICAL); }
+
+ bool take_focus() ;
+ void throw_focus() ;
+
+ void redraw() ;
+ void redraw(uchar c) ;
+ void redraw_label() ;
+ void redraw_highlight() ;
+ void redraw(const Rectangle&);
+ uchar damage() const { return damage_; }
+ void set_damage(uchar c) { damage_ = c; } // should be called damage(c)
+
+ void relayout() ;
+ void relayout(uchar damage) ;
+ uchar layout_damage() const { return layout_damage_; }
+ void layout_damage(uchar c) { layout_damage_ = c; }
+
+ void add_timeout(float) ;
+ void repeat_timeout(float) ;
+ void remove_timeout() ;
+
+ void make_current() const ;
+ void draw_background() const ;
+ void draw_frame() const ;
+ void draw_box() const ;
+ void draw_box(const Rectangle& r) const ; // multiple boxes drawing for a single Widget
+ void draw_label() const ;
+ void draw_label(const Rectangle&, Flags) const ;
+ void draw_glyph(int, const Rectangle&) const ;
+ void cursor(Cursor*) const ;
+
+ void measure_label(int&, int&) const ;
+
+ Box* box() const;
+ Box* buttonbox() const;
+ Symbol* glyph() const;
+ Font* labelfont() const;
+ Font* textfont() const;
+ LabelType* labeltype() const;
+ Color color() const;
+ Color textcolor() const;
+ Color selection_color() const;
+ Color selection_textcolor() const;
+ Color buttoncolor() const;
+ Color labelcolor() const;
+ Color highlight_color() const;
+ Color highlight_textcolor() const;
+ float labelsize() const;
+ float textsize() const;
+ float leading() const;
+ unsigned char scrollbar_align() const;
+ unsigned char scrollbar_width() const;
+
+ void box(Box*) ;
+ void buttonbox(Box*) ;
+ void glyph(Symbol*) ;
+ void labelfont(Font*) ;
+ void textfont(Font*) ;
+ void labeltype(LabelType*) ;
+ void color(Color) ;
+ void textcolor(Color a) ;
+ void selection_color(Color) ;
+ void selection_textcolor(Color);
+ void buttoncolor(Color) ;
+ void labelcolor(Color) ;
+ void highlight_color(Color) ;
+ void highlight_textcolor(Color);
+ void labelsize(float a) ;
+ void textsize(float a) ;
+ void leading(float a) ;
+ void scrollbar_align(unsigned char);
+ void scrollbar_width(unsigned char);
+
+ void add(const AssociationType&, void* data);
+ void set(const AssociationType&, void* data);
+ void* get(const AssociationType&) const;
+ void* foreach(const AssociationType&, AssociationFunctor&) const;
+ bool remove(const AssociationType&, void* data);
+ bool find(const AssociationType&, void* data) const;
+
+#ifdef FLTK_1_WIDGET // back-compatability section:
+
+ Box* down_box() const { return box(); }
+ Box* slider() const { return buttonbox(); }
+ Box* box2() const { return box(); }
+ Box* fly_box() const { return box(); }
+ Color color2() const { return selection_color(); }
+ Color color3() const { return buttoncolor(); }
+ Color down_labelcolor() const { return selection_textcolor(); }
+ Color fly_color() const { return highlight_color(); }
+ Color selected_textcolor() const { return selection_textcolor(); }
+ Color cursor_color() const { return selection_color(); }
+ float text_size() const { return textsize(); }
+ float label_size() const { return labelsize(); }
+
+ void down_box(Box* a) { box(a); }
+ void slider(Box* a) { buttonbox(a); }
+ void fly_box(Box*) { }
+ void color(Color a, Color b) { color(a); selection_color(b); }
+ void color2(Color a) { selection_color(a); }
+ void color3(Color a) { buttoncolor(a); }
+ void down_labelcolor(Color a) { selection_textcolor(a); }
+ void labelfont(unsigned a) { labelfont(font(a)); }
+ void fly_color(Color a) { highlight_color(a); }
+ void textfont(unsigned a) { textfont(font(a)); }
+ void selected_textcolor(Color a) { selection_textcolor(a); }
+ void cursor_color(Color a) { selection_color(a); }
+ void text_size(float n) { textsize(n); }
+ void label_size(float n) { labelsize(n); }
+
+#endif
+
+private:
+
+ const char* label_;
+ const Symbol* image_;
+ unsigned flags_;
+ const Style* style_;
+ Callback* callback_;
+ void* user_data_;
+ const char* tooltip_; // make this into another widget?
+ Group* parent_;
+ uchar type_;
+ uchar damage_;
+ uchar layout_damage_;
+ uchar when_;
+
+};
+
+enum { // Widget::when() values
+ WHEN_NEVER = 0,
+ WHEN_CHANGED = 1,
+ WHEN_RELEASE = 4,
+ WHEN_RELEASE_ALWAYS = 6,
+ WHEN_ENTER_KEY = 8,
+ WHEN_ENTER_KEY_ALWAYS =10,
+ WHEN_ENTER_KEY_CHANGED=11,
+ WHEN_NOT_CHANGED = 2 // modifier bit to disable changed() test
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Widget.h 6518 2008-11-11 22:31:26Z spitzak $".
+//
Added: branches/branch-3.0/fltk/WidgetAssociation.h
===================================================================
--- branches/branch-3.0/fltk/WidgetAssociation.h (rev 0)
+++ branches/branch-3.0/fltk/WidgetAssociation.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,81 @@
+#ifndef fltk_WidgetAssociation_h
+#define fltk_WidgetAssociation_h
+
+#include <fltk/FL_API.h>
+
+namespace fltk {
+
+class FL_API Widget;
+class FL_API AssociationType;
+
+/*! \brief Class used by the foreach() functions.
+ *
+ * Base class for the association functor that is used in foreach(). If you want to supply
+ * your specific actions to do with the associated data found by the foreach() functions
+ * you need to derive from this class and provide a new handle function.
+ */
+class FL_API AssociationFunctor {
+ public:
+ /*!
+ * For each
+ * found association this function is called. If the function returns true the
+ * loop is aborted and the data pointer for the current association is returned
+ */
+ virtual bool handle(const AssociationType&, const Widget*, void* data) = 0;
+};
+
+/*! \relates AssociationType
+ * This function allows traversing all associations of a certain association type, a certain widget,
+ * both, or none of the constraints.
+ * For each found widget the handle function in the associaionFunctor class is called. If that
+ * function returns true the scan is aborted and the data for the current widget is returned
+ * A NULL pointer for the AssociationType or the Widget pointer means to call the functor for all
+ * AssociationTypes and/or all Widgets.
+ *
+ * The function either returns the first associated data for which the functor returns true, or NULL.
+ * See also Widget::foreach() and AssociationType::foreach().
+ */
+FL_API void* foreach(const AssociationType*, const Widget*, AssociationFunctor&);
+
+/*! \brief Base class for the association type.
+ *
+ * FLTK allows you to attach any kind of user data to a widget. This data is automatically freed when the
+ * widget to which it is attached is destroyed. Internally an association table is used to connect the
+ * widget pointer with the data pointer that is why all the functions concerned with this feature contain
+ * "association" in their name. The advantage of this is that no space is taken on widgets that do not
+ * contain the data (or that have the "default value"), and that the destructor code is not linked in
+ * if the association is not used.
+ *
+ * To be able to associate data and to be able to have a customized way of freeing the data you need
+ * to derive from this class and then create an instance of that class. With the pointer to that instance
+ * the type of the data is identified.
+ *
+ * possible uses:
+ * - assign key shortcuts to certain widgets
+ * - assign a tooltip to some widgets
+ * - assign a help-index to widgets
+ * - assign a unique identifier to widgets to remote controlling
+ * - assign additional layouting data for new container widgets
+ * - assign data needed by typesafe callback mechanisms
+ * - assign all kind of data not always required within a widget / each widget
+ */
+class FL_API AssociationType {
+
+ public:
+ /*! \brief This function is called when associated data is freed
+ * This function must be proveded when creating a data specific subclass. The function
+ * must do whatever is necessary to free associated data. Most of the time it will be a cast
+ * to the right datatype and a delete
+ */
+ virtual void destroy(void* data) const = 0;
+
+ /*! \brief Finds all data of this association type for a widget
+ * This function just calls fltk::foreach(this, wg, fkt). If \a wg
+ * is NULL this function will find all data for any widget.
+ */
+ void* foreach(const Widget* wg, AssociationFunctor& fkt) { return fltk::foreach(this, wg, fkt); }
+};
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/Window.h
===================================================================
--- branches/branch-3.0/fltk/Window.h (rev 0)
+++ branches/branch-3.0/fltk/Window.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,158 @@
+// "$Id: Window.h 6150 2008-08-04 22:53:30Z spitzak $"
+//
+// Window widget. This must be the outermost group. You can also put
+// them inside other widgets to use the system's window hierarchy.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_Window_h
+#define fltk_Window_h
+
+#include "Group.h"
+
+namespace fltk {
+
+// value for x,y to indicate window system places window
+const int USEDEFAULT = ((int)0x80000000); // same as Win32 value
+
+class CreatedWindow;
+class Monitor;
+
+// implementations of methods of Window are in different files in src/
+
+class FL_API Window : public Group {
+public:
+
+ Window(int,int,int,int, const char* = 0, bool begin = false);
+ Window(int,int, const char* = 0);
+ static NamedStyle* default_style;
+ virtual ~Window();
+
+ const char* label() const {return Widget::label();}
+ const char* iconlabel() const {return iconlabel_;}
+ void label(const char*);
+ void iconlabel(const char*);
+ void label(const char* label, const char* iconlabel);
+ void copy_label(const char* c) {Widget::copy_label(c); label(label());}
+ const void* icon() const {return icon_;}
+ void icon(const void * ic) {icon_ = ic;}
+ static const char* xclass() {return xclass_;}
+ static void xclass(const char* v) {xclass_ = v;}
+
+ void border(bool set) {set ? clear_flag(NOBORDER) : set_flag(NOBORDER);}
+ /*! \deprecated compat. api only, please use Window::border(bool)*/
+ void clear_border() {set_flag(NOBORDER);}
+ bool border() const {return !flag(NOBORDER);}
+ void set_override() {set_flag(NOBORDER|OVERRIDE);}
+ bool override() const {return flag(OVERRIDE); }
+ const Window* child_of() const {return child_of_;}
+ void child_of(const Window* w);
+ void set_modal() {set_flag(MODAL);} // back compatability only!
+ void set_non_modal() {set_flag(NON_MODAL);} // back compatability only!
+
+ bool double_buffer() const {return flag(DOUBLE);}
+ void set_double_buffer() {set_flag(DOUBLE);}
+ void clear_double_buffer() {clear_flag(DOUBLE);}
+ void free_backbuffer();
+
+ virtual void draw_overlay();
+ void redraw_overlay();
+ void erase_overlay();
+
+ void hotspot(int x, int y, bool offscreen = false);
+ void hotspot(const Widget*, bool offscreen = false);
+ void hotspot(const Widget& p, bool offscrn = false) {hotspot(&p,offscrn);}
+ void size_range(int a, int b, int c=0, int d=0, int e=0, int f=0)
+ { minw=(short)a; minh=(short)b; maxw=(short)c; maxh=(short)d; dw=(uchar)e; dh=(uchar)f; size_range_(); }
+ bool get_size_range( int *min_w, int *min_h, int *max_w, int *max_h );
+
+ bool shown() const {return i != 0;}
+ void show();
+ void show(int, char**);
+ void show(const Window* parent);
+ bool exec(const Window* parent = 0, bool grab = false);
+ void make_exec_return(bool);
+ void show_inside(const Window* parent);
+ virtual void destroy();
+
+ void iconize();
+ bool iconic() const;
+
+ void maximize();
+
+ void fullscreen();
+ void fullscreen(const Monitor&);
+ void fullscreen_off(int,int,int,int);
+
+ static void default_callback(Window*, void* v);
+
+ virtual int handle(int);
+ virtual void layout();
+ void system_layout();
+ virtual void flush();
+ virtual void draw();
+
+ static Window* first();
+ static void first(Window*);
+ Window* next();
+
+ void borders( Rectangle *r ) const;
+
+ static const Window* drawing_window() {return drawing_window_;}
+ static const Window* drawing_window_;
+
+ // fabien: used for my cairo experimentations,
+ // not sure i'll keep that opaque backbuffer access :
+ // at least it shouldn't stay public
+ void* backbuffer() const;
+
+protected:
+ virtual void create();
+
+private:
+
+ friend class CreatedWindow;
+ CreatedWindow *i; // points at the system-specific stuff
+ const Window* child_of_;
+ const char* iconlabel_;
+ const void* icon_;
+ // size_range stuff:
+ short minw, minh, maxw, maxh;
+ unsigned char dw, dh, size_range_set;
+ void size_range_();
+ // values for flags():
+ enum {
+ MODAL = 0x80000000,
+ NOBORDER = 0x40000000,
+ OVERRIDE = 0x20000000,
+ NON_MODAL = 0x10000000,
+ DOUBLE = 0x08000000
+ };
+ static const char* xclass_;
+ void _Window(); // constructor innards
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: Window.h 6150 2008-08-04 22:53:30Z spitzak $".
+//
Added: branches/branch-3.0/fltk/WizardGroup.h
===================================================================
--- branches/branch-3.0/fltk/WizardGroup.h (rev 0)
+++ branches/branch-3.0/fltk/WizardGroup.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,59 @@
+//
+// "$Id: WizardGroup.h 4288 2005-04-16 00:13:17Z mike $"
+//
+// WizardGroup widget definitions.
+//
+// Copyright 1999-2006 by Easy Software Products and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+//
+// Include necessary header files...
+//
+
+#ifndef _fltk_WizardGroup_h_
+#define _fltk_WizardGroup_h_
+
+#include "Group.h"
+
+namespace fltk {
+
+class FL_API WizardGroup : public Group {
+ Widget * value_;
+public:
+ WizardGroup(int x,int y,int w,int h, const char * l = 0, bool begin=false)
+ : Group(x,y,w,h,l,begin), value_(0) { box(THIN_UP_BOX);}
+
+ void draw();
+ void next();
+ void prev();
+ void value(Widget *);
+ //! return the current visible child.
+ Widget * value() const { return value_;}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: WizardGroup.h 4288 2005-04-16 00:13:17Z mike $".
+//
Added: branches/branch-3.0/fltk/WordwrapInput.h
===================================================================
--- branches/branch-3.0/fltk/WordwrapInput.h (rev 0)
+++ branches/branch-3.0/fltk/WordwrapInput.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,45 @@
+//
+// "$Id: WordwrapInput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Small text input field that word-wraps its contents.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_WordwrapInput_h
+#define fltk_WordwrapInput_h
+
+#include "Input.h"
+
+namespace fltk {
+
+// This class is entirely inline. If that changes, add FL_API to its declaration
+class WordwrapInput : public Input {
+public:
+ WordwrapInput(int x,int y,int w,int h,const char *l = 0)
+ : Input(x,y,w,h,l) {type(WORDWRAP);}
+};
+
+}
+#endif
+
+//
+// End of "$Id: WordwrapInput.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/WordwrapOutput.h
===================================================================
--- branches/branch-3.0/fltk/WordwrapOutput.h (rev 0)
+++ branches/branch-3.0/fltk/WordwrapOutput.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,45 @@
+//
+// "$Id: WordwrapOutput.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Small text output field that word-wraps its contents.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_WordwrapOutput_h
+#define fltk_WordwrapOutput_h
+
+#include "Output.h"
+
+namespace fltk {
+
+// This class is entirely inline. If that changes, add FL_API to its declaration
+class WordwrapOutput : public Output {
+public:
+ WordwrapOutput(int x,int y,int w,int h,const char *l = 0)
+ : Output(x,y,w,h,l) {type(WORDWRAP);}
+};
+
+}
+#endif
+
+//
+// End of "$Id: WordwrapOutput.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/ask.h
===================================================================
--- branches/branch-3.0/fltk/ask.h (rev 0)
+++ branches/branch-3.0/fltk/ask.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,80 @@
+//
+// "$Id: ask.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// Copyright 2008 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_ask_h
+#define fltk_ask_h
+
+#include "FL_API.h"
+#include "Style.h"
+
+namespace fltk {
+
+class Widget;
+
+/// \name fltk/ask.h
+//@{
+
+enum {
+ BEEP_DEFAULT = 0,
+ BEEP_MESSAGE,
+ BEEP_ERROR,
+ BEEP_QUESTION,
+ BEEP_PASSWORD,
+ BEEP_NOTIFICATION
+};
+
+FL_API void message(const char *, ...);
+FL_API void alert(const char *, ...);
+FL_API int ask(const char *, ...);
+FL_API int choice(const char *q,
+ const char *b0, const char *b1, const char *b2, ...);
+FL_API int choice_alert(const char *q,
+ const char *b0, const char *b1, const char *b2, ...);
+FL_API const char *input(const char *label, const char *deflt = 0, ...);
+FL_API const char *password(const char *label, const char *deflt = 0, ...);
+FL_API void beep(int type = BEEP_DEFAULT);
+FL_API void beep_on_dialog(bool);
+FL_API bool beep_on_dialog();
+
+extern FL_API NamedStyle* icon_style;
+extern FL_API NamedStyle* message_style;
+
+extern FL_API const char* message_window_label;
+extern FL_API float message_window_timeout;
+
+extern FL_API bool message_window_scrollable;
+
+// pointers you can use to change FLTK to a foreign language:
+extern FL_API const char* no;
+extern FL_API const char* yes;
+extern FL_API const char* ok;
+extern FL_API const char* cancel;
+
+}
+
+//@}
+
+#endif
+
+//
+// End of "$Id: ask.h 6233 2008-09-14 07:54:06Z spitzak $".
+//
Added: branches/branch-3.0/fltk/damage.h
===================================================================
--- branches/branch-3.0/fltk/damage.h (rev 0)
+++ branches/branch-3.0/fltk/damage.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,52 @@
+#ifndef fltk_damage_h
+#define fltk_damage_h
+
+namespace fltk {
+
+/*!
+ Values of the bits stored in Widget::damage().
+
+ When redrawing your widgets you should look at the damage bits to
+ see what parts of your widget need redrawing. The Widget::handle()
+ method can then set individual damage bits to limit the amount of
+ drawing that needs to be done, and the Widget::draw() method can
+ test these bits to decide what to draw:
+
+\code
+MyClass::handle(int event) {
+ ...
+ if (change_to_part1) damage(1);
+ if (change_to_part2) damage(2);
+ if (change_to_part3) damage(4);
+}
+
+MyClass::draw() {
+ if (damage() & fltk::DAMAGE_ALL) {
+ ... draw frame/box and other static stuff ...
+ }
+ if (damage() & (fltk::DAMAGE_ALL | 1)) draw_part1();
+ if (damage() & (fltk::DAMAGE_ALL | 2)) draw_part2();
+ if (damage() & (fltk::DAMAGE_ALL | 4)) draw_part3();
+}
+\endcode
+
+ Except for DAMAGE_ALL, each widget is allowed to assign any meaning
+ to any of the bits it wants. The enumerations are just to provide
+ suggested meanings.
+*/
+enum {
+ DAMAGE_VALUE = 0x01,
+ DAMAGE_PUSHED = 0x02,
+ DAMAGE_SCROLL = 0x04,
+ DAMAGE_OVERLAY = 0x04, // reused value
+ DAMAGE_HIGHLIGHT = 0x08,
+ DAMAGE_CHILD = 0x10,
+ DAMAGE_CHILD_LABEL = 0x20,
+ DAMAGE_EXPOSE = 0x40,
+ DAMAGE_CONTENTS = 0x40, // reused value
+ DAMAGE_ALL = 0x80
+};
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/dirent.h
===================================================================
--- branches/branch-3.0/fltk/dirent.h (rev 0)
+++ branches/branch-3.0/fltk/dirent.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,31 @@
+//
+// "$Id: dirent.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Directory header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+/* this file is for back-compatability only */
+#include "filename.h"
+
+//
+// End of "$Id: dirent.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/draw.h
===================================================================
--- branches/branch-3.0/fltk/draw.h (rev 0)
+++ branches/branch-3.0/fltk/draw.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,223 @@
+// "$Id: draw.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+/*
+ The FLTK drawing library, used by all widgets to draw themselves.
+
+ These functions can only be called when FLTK is setup to draw
+ things. This is only true:
+ - Inside the Widget::draw() virtual function.
+ - Inside the Symbol::draw() virtual function.
+ - After calling Widget::make_current(), before calling wait() or flush().
+ Calling the drawing functions at other times produces undefined results,
+ including crashing.
+*/
+
+#ifndef fltk_draw_h
+#define fltk_draw_h
+
+#include "Flags.h" // for alignment values
+#include "Color.h"
+#include "Rectangle.h"
+#include "PixelType.h"
+
+namespace fltk {
+
+/// \name fltk/draw.h
+//@{
+
+struct Font;
+class Style;
+
+class FL_API GSave {
+ void* data[4]; // hopefully big enough for everybody...
+ public:
+ GSave();
+ ~GSave();
+};
+
+// Transformation
+FL_API void push_matrix();
+FL_API void pop_matrix();
+FL_API void scale(float x, float y);
+FL_API void scale(float x);
+FL_API void translate(float x, float y);
+FL_API void translate(int x, int y);
+FL_API void rotate(float d);
+FL_API void concat(float, float, float, float, float, float);
+FL_API void load_identity();
+
+// get and use transformed positions:
+FL_API void transform(float& x, float& y);
+FL_API void transform_distance(float& x, float& y);
+FL_API void transform(int& x, int& y);
+FL_API void transform(const Rectangle& from, Rectangle& to);
+FL_API void transform(int& x, int& y, int& w, int& h);
+
+// Clipping
+FL_API void push_clip(const Rectangle&);
+//! Same as push_clip(Rectangle(x,y,w,h)) but faster:
+FL_API void push_clip(int X,int Y, int W, int H);
+FL_API void clipout(const Rectangle&);
+FL_API void pop_clip();
+FL_API void push_no_clip();
+FL_API bool not_clipped(const Rectangle&);
+FL_API int intersect_with_clip(Rectangle&);
+
+FL_API void setcolor(Color);
+FL_API void setcolor_alpha(Color, float alpha);
+extern FL_API Color current_color_;
+inline Color getcolor() {return current_color_;}
+
+extern FL_API Color current_bgcolor_;
+inline void setbgcolor(Color c) {current_bgcolor_ = c;}
+inline Color getbgcolor() {return current_bgcolor_;}
+
+extern FL_API const Style* drawstyle_;
+void FL_API drawstyle(const Style* s, Flags);
+inline const Style* drawstyle() {return drawstyle_;}
+
+extern FL_API Flags drawflags_;
+inline void setdrawflags(Flags f) {drawflags_ = f;}
+inline Flags drawflags() {return drawflags_;}
+inline Flags drawflags(Flags f) {return drawflags_ & f;}
+
+// line type:
+FL_API void line_style(int, float width=0, const char* dashes=0);
+enum {
+ SOLID = 0,
+ DASH = 1,
+ DOT = 2,
+ DASHDOT = 3,
+ DASHDOTDOT = 4,
+
+ CAP_FLAT = 0x100,
+ CAP_ROUND = 0x200,
+ CAP_SQUARE = 0x300,
+
+ JOIN_MITER = 0x1000,
+ JOIN_ROUND = 0x2000,
+ JOIN_BEVEL = 0x3000
+};
+extern FL_API int line_style_;
+inline FL_API int line_style() {return line_style_;}
+extern FL_API float line_width_;
+inline FL_API float line_width() {return line_width_;}
+extern FL_API const char* line_dashes_;
+inline FL_API const char* line_dashes() {return line_dashes_;}
+
+// Path construction
+FL_API void newpath();
+FL_API void addvertex(float x, float y);
+FL_API void addvertex(int x, int y);
+FL_API void addvertices(int n, const float v[][2]);
+FL_API void addvertices(int n, const int v[][2]);
+FL_API void addvertices_transformed(int n, const float v[][2]);
+FL_API void addcurve(float,float, float,float, float,float, float,float);
+FL_API void addarc(float x,float y,float w,float h, float a1, float a2);
+FL_API void addpie(const Rectangle& r, float a, float a2);
+FL_API void addchord(const Rectangle& r,float a,float a2);
+FL_API void closepath();
+
+// Shapes and lines
+FL_API void strokepath();
+FL_API void fillpath();
+FL_API void fillstrokepath(Color);
+
+FL_API void fillrect(int, int, int, int);
+inline void fillrect(const Rectangle& r) {fillrect(r.x(),r.y(),r.w(),r.h());}
+FL_API void strokerect(int, int, int, int);
+inline void strokerect(const Rectangle& r) {strokerect(r.x(),r.y(),r.w(),r.h());}
+FL_API void drawline(int x0, int y0, int x1, int y1);
+FL_API void drawline(float x0, float y0, float x1, float y1);
+FL_API void drawpoint(int x, int y);
+FL_API void drawpoint(float x, float y);
+
+// Text
+FL_API void setfont(Font*, float size);
+FL_API void setfont(const char*, float size);
+FL_API void setfont(const char*, int attributes, float size);
+
+// change the encoding used to draw bytes (depreciated)
+extern FL_API const char* encoding_;
+inline const char* get_encoding() {return encoding_;}
+FL_API void set_encoding(const char*);
+
+// information you can get about the current font+size+encoding:
+extern FL_API Font* current_font_;
+extern FL_API float current_size_; // should be 2x2 transformation matrix
+inline Font* getfont() {return current_font_;}
+inline float getsize() {return current_size_;}
+
+// measure things in the current font:
+FL_API float getwidth(const char*);
+FL_API float getwidth(const char*, int length);
+FL_API float getascent();
+FL_API float getdescent();
+
+// draw using current font:
+FL_API void drawtext_transformed(const char*, int n, float x, float y);
+FL_API void drawtext(const char*, float x, float y);
+FL_API void drawtext(const char*, int length, float x, float y);
+
+// the label text formatter:
+FL_API void measure(const char*, int& w, int& h, Flags = 0);
+FL_API void measure(float (*getwidth)(const char*, int),const char*, float& w, float& h, Flags = 0);
+FL_API void drawtext(const char*, const Rectangle&, Flags);
+FL_API void drawtext(void (*textfunction)(const char*,int,float,float),
+ float (*getwidth)(const char*, int),
+ const char* str, const Rectangle& r, Flags flags);
+
+// set where \t characters go in label text formatter:
+extern FL_API const int* column_widths_;
+inline const int* column_widths() {return column_widths_;}
+inline void column_widths(const int* i) {column_widths_ = i;}
+// see also Symbol.h for @-sign commands
+
+// Images
+FL_API void drawimage(const uchar*, PixelType, const Rectangle&);
+FL_API void drawimage(const uchar*, PixelType, const Rectangle&, int linedelta);
+
+typedef const uchar* (*DrawImageCallback)(void* data, int x, int y, int w, uchar* buffer);
+FL_API void drawimage(DrawImageCallback, void*, PixelType, const Rectangle&);
+
+FL_API uchar *readimage(uchar *p, PixelType, const Rectangle&);
+FL_API uchar *readimage(uchar *p, PixelType, const Rectangle&, int linedelta);
+
+FL_API void scrollrect(const Rectangle&, int dx, int dy,
+ void (*draw_area)(void*, const Rectangle&), void*);
+
+#ifndef DOXYGEN /* depreciated: */
+FL_API void drawframe(const char* s, int x, int y, int w, int h);
+FL_API void drawframe2(const char* s, int x, int y, int w, int h);
+FL_API void overlay_rect(int,int,int,int);
+FL_API void overlay_clear();
+#endif
+
+//@}
+
+}
+
+#endif
+
+//
+// End of "$Id: draw.h 6233 2008-09-14 07:54:06Z spitzak $".
+//
Added: branches/branch-3.0/fltk/error.h
===================================================================
--- branches/branch-3.0/fltk/error.h (rev 0)
+++ branches/branch-3.0/fltk/error.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,24 @@
+/*! \file
+ Functions to report errors and possibly kill the program.
+ You can change these pointers from their default values so that
+ fltk calls your code instead.
+*/
+
+#ifndef fltk_error_h
+#define fltk_error_h
+
+#include "FL_API.h"
+
+namespace fltk {
+
+/// \name fltk/error.h
+//@{
+
+extern FL_API void (*warning)(const char*, ...);
+extern FL_API void (*error)(const char*, ...);
+extern FL_API void (*fatal)(const char*, ...);
+
+//@}
+
+}
+#endif
Added: branches/branch-3.0/fltk/events.h
===================================================================
--- branches/branch-3.0/fltk/events.h (rev 0)
+++ branches/branch-3.0/fltk/events.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,330 @@
+//
+// "$Id: events.h 6514 2008-11-10 21:10:13Z spitzak $"
+//
+// Event types and data. A Widget::handle() method needs this.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_events_h
+#define fltk_events_h
+
+#include "FL_API.h"
+
+namespace fltk {
+
+/// \name fltk/events.h
+//@{
+
+/*! Numbers passed to Widget::handle() and returned by event(). */
+enum {
+ NO_EVENT = 0,
+ PUSH = 1,
+ RELEASE = 2,
+ ENTER = 3,
+ LEAVE = 4,
+ DRAG = 5,
+ FOCUS = 6,
+ UNFOCUS = 7,
+ KEY = 8,
+ KEYUP = 9,
+ FOCUS_CHANGE = 10,
+ MOVE = 11,
+ SHORTCUT = 12,
+ DEACTIVATE = 13,
+ ACTIVATE = 14,
+ HIDE = 15,
+ SHOW = 16,
+ PASTE = 17,
+ TIMEOUT = 18,
+ MOUSEWHEEL = 19,
+ DND_ENTER = 20,
+ DND_DRAG = 21,
+ DND_LEAVE = 22,
+ DND_RELEASE = 23,
+ TOOLTIP = 24
+};
+
+/*! Values returned by event_key(), passed to event_key_state() and
+ get_key_state(), and used for the low 16 bits of add_shortcut().
+
+ The actual values returned are based on X11 keysym values, though
+ fltk always returns "unshifted" values much like Windows does. A
+ given key always returns the same value no matter what shift keys
+ are held down. Use event_text() to see the results of any shift
+ keys.
+
+ The lowercase letters 'a' through 'z' and the ascii symbols
+ '`', '-', '=', '[', ']', '\\', ',', '.', '/', ';', '\'' and space
+ are used to identify the keys in the main keyboard.
+
+ On X systems unrecognized keys are returned unchanged as their
+ X keysym value. If they have no keysym it uses the scan code
+ or'd with 0x8000, this is what all those blue buttons on a
+ Microsoft keyboard will do. I don't know how to get those
+ buttons on Windows.
+*/
+enum {
+ LeftButton = 1, /*!< PUSH/RELEASE set event_key to this */
+ MiddleButton = 2, /*!< PUSH/RELEASE set event_key to this */
+ RightButton = 3, /*!< PUSH/RELEASE set event_key to this */
+ SpaceKey = 32, /*!< Same as ' ' or 32 */
+ // 'a'-'z', and all punctuation go here in numerical order
+ BackSpaceKey = 0xff08, /*!< Backspace */
+ TabKey = 0xff09, /*!< Tab */
+ ClearKey = 0xff0b, /*!< On some systems with NumLock off '5' produces this */
+ ReturnKey = 0xff0d, /*!< Main Enter key, Windows and X documentation calls this "Return" */
+ PauseKey = 0xff13, /*!< Pause + Break button */
+ ScrollLockKey = 0xff14, /*!< Scroll Lock button */
+ EscapeKey = 0xff1b, /*!< Esc */
+ HomeKey = 0xff50, /*!< Home */
+ LeftKey = 0xff51, /*!< Left */
+ UpKey = 0xff52, /*!< Up arrow */
+ RightKey = 0xff53, /*!< Right arrow */
+ DownKey = 0xff54, /*!< Down arrow */
+ PageUpKey = 0xff55, /*!< Page Up */
+ PageDownKey = 0xff56, /*!< Page Down */
+ EndKey = 0xff57, /*!< End */
+ PrintKey = 0xff61, /*!< Print Scrn key + SysRq key */
+ InsertKey = 0xff63, /*!< Insert */
+ MenuKey = 0xff67, /*!< Key in lower-right with picture of popup menu */
+ HelpKey = 0xff68, /*!< Help key on Macintosh keyboards */
+ NumLockKey = 0xff7f, /*!< NumLock key */
+ Keypad = 0xff80, /*!< Add ASCII to get keypad keys */
+ KeypadEnter = Keypad+'\r', /*!< Keypad+'\\r' */
+ MultiplyKey = Keypad+'*', /*!< Keypad+'*' */
+ AddKey = Keypad+'+', /*!< Keypad+'+' */
+ SubtractKey = Keypad+'-', /*!< Keypad+'-' */
+ DecimalKey = Keypad+'.', /*!< Keypad+'.' */
+ DivideKey = Keypad+'/', /*!< Keypad+'/' */
+ Keypad0 = Keypad+'0', /*!< Keypad+'0' */
+ Keypad1 = Keypad+'1', /*!< Keypad+'1' */
+ Keypad2 = Keypad+'2', /*!< Keypad+'2' */
+ Keypad3 = Keypad+'3', /*!< Keypad+'3' */
+ Keypad4 = Keypad+'4', /*!< Keypad+'4' */
+ Keypad5 = Keypad+'5', /*!< Keypad+'5' */
+ Keypad6 = Keypad+'6', /*!< Keypad+'6' */
+ Keypad7 = Keypad+'7', /*!< Keypad+'7' */
+ Keypad8 = Keypad+'8', /*!< Keypad+'8' */
+ Keypad9 = Keypad+'9', /*!< Keypad+'9' */
+ KeypadLast = 0xffbd, /*!< Keypad+'=', largest legal keypad key */
+ F0Key = 0xffbd, /*!< Add a number to get function key */
+ F1Key = F0Key+1, /*!< F0Key+1 */
+ F2Key = F0Key+2, /*!< F0Key+2 */
+ F3Key = F0Key+3, /*!< F0Key+3 */
+ F4Key = F0Key+4, /*!< F0Key+4 */
+ F5Key = F0Key+5, /*!< F0Key+5 */
+ F6Key = F0Key+6, /*!< F0Key+6 */
+ F7Key = F0Key+7, /*!< F0Key+7 */
+ F8Key = F0Key+8, /*!< F0Key+8 */
+ F9Key = F0Key+9, /*!< F0Key+9 */
+ F10Key = F0Key+10, /*!< F0Key+10 */
+ F11Key = F0Key+11, /*!< F0Key+11 */
+ F12Key = F0Key+12, /*!< F0Key+12 */
+ // use F0Key+n to get function key n
+ LastFunctionKey = F0Key+35, /*!< F0Key+35, largest legal function key */
+ LeftShiftKey = 0xffe1, /*!< Left-hand Shift */
+ RightShiftKey = 0xffe2, /*!< Right-hand Shift */
+ LeftCtrlKey = 0xffe3, /*!< Left-hand Ctrl */
+ RightCtrlKey = 0xffe4, /*!< Right-hand Ctrl */
+ CapsLockKey = 0xffe5, /*!< Caps Lock */
+ LeftMetaKey = 0xffe7, /*!< The left "Windows" or "Apple" key */
+ RightMetaKey = 0xffe8, /*!< The right "Windows" or "Apple" key */
+ LeftAltKey = 0xffe9, /*!< Left-hand Alt (option on Mac) */
+ RightAltKey = 0xffea, /*!< Right-hand Alt (option on Mac) */
+ DeleteKey = 0xffff, /*!< Delete */
+#if defined(__APPLE__)
+ LeftAccKey = LeftCtrlKey,
+ RightAccKey = RightCtrlKey,
+ LeftCmdKey = LeftMetaKey,
+ RightCmdKey = RightMetaKey
+#else
+ LeftAccKey = LeftAltKey,
+ RightAccKey = RightAltKey,
+ LeftCmdKey = LeftCtrlKey,
+ RightCmdKey = RightCtrlKey
+#endif
+};
+
+/*! Flags returned by event_state(), and used as the high 16 bits
+ of Widget::add_shortcut() values (the low 16 bits are all zero, so these
+ may be or'd with key values).
+
+ The inline function BUTTON(n) will turn n (1-8) into the flag for a
+ mouse button.
+*/
+enum {
+ SHIFT = 0x00010000, /*!< Either shift key held down */
+ CAPSLOCK = 0x00020000, /*!< Caps lock is toggled on */
+ CTRL = 0x00040000, /*!< Either ctrl key held down */
+ ALT = 0x00080000, /*!< Either alt key held down */
+ NUMLOCK = 0x00100000, /*!< Num Lock turned on */
+ META = 0x00400000, /*!< "Windows" or the "Apple" keys held down */
+ SCROLLLOCK = 0x00800000, /*!< Scroll Lock turned on */
+ BUTTON1 = 0x01000000, /*!< Left mouse button held down */
+ BUTTON2 = 0x02000000, /*!< Middle mouse button held down */
+ BUTTON3 = 0x04000000, /*!< Right mouse button held down */
+ ANY_BUTTON = 0x7f000000, /*!< Any mouse button (up to 8) */
+#if defined(__APPLE__)
+ ACCELERATOR = CTRL,
+ OPTION = ALT,
+ COMMAND = META
+#else
+ ACCELERATOR = ALT, //!< ALT on Windows/Linux, CTRL on OS/X, use for menu accelerators
+ COMMAND = CTRL, //!< CTRL on Windows/Linux, META on OS/X, use for menu shortcuts
+ OPTION = ALT|META //!< ALT|META on Windows/Linux, just ALT on OS/X, use as a drag modifier
+#endif
+};
+
+inline unsigned BUTTON(int n) {return 0x00800000 << n;}
+
+/*! Device identifier returned by event_device(). This enumeration
+ is useful to get the device type that caused a PUSH, RELEASE,
+ DRAG or MOVE event
+*/
+enum {
+ DEVICE_MOUSE = 0, /*!< Event triggered by the system mouse */
+ DEVICE_STYLUS = 1, /*!< Event triggered by a pen on a tablet, givin pressure and tilt information */
+ DEVICE_ERASER = 2, /*!< Event triggered by an eraser on a tablet, givin pressure and tilt information */
+ DEVICE_CURSOR = 3, /*!< Event triggered by a puck style device on a tablet */
+ DEVICE_AIRBRUSH = 4, /*!< Event triggered by an airbrush on a tablet, giving pressure and tilt information */
+ DEVICE_TOUCH = 5 /*!< Event triggered by touch a touch screen device */
+};
+
+class Rectangle;
+class Widget;
+class Window;
+
+#ifndef DOXYGEN
+
+////////////////////////////////////////////////////////////////
+// Do not use these variables, they may not exist in future versions:
+
+extern FL_API int e_type;
+extern FL_API int e_x;
+extern FL_API int e_y;
+extern FL_API int e_dx;
+extern FL_API int e_dy;
+extern FL_API int e_x_root;
+extern FL_API int e_y_root;
+extern FL_API unsigned e_state;
+extern FL_API int e_clicks;
+extern FL_API unsigned e_is_click;
+extern FL_API unsigned e_keysym;
+extern FL_API unsigned e_length;
+extern FL_API const char* e_text;
+extern FL_API unsigned e_key_repeated;
+extern FL_API float e_pressure;
+extern FL_API float e_x_tilt;
+extern FL_API float e_y_tilt;
+extern FL_API int e_device;
+extern FL_API int compose_state;
+extern FL_API Widget* belowmouse_;
+extern FL_API Widget* pushed_;
+extern FL_API Widget* focus_;
+extern FL_API Widget* modal_;
+extern FL_API bool grab_;
+extern FL_API bool exit_modal_;
+
+////////////////////////////////////////////////////////////////
+#endif
+
+inline int event() {return e_type;}
+inline int event_x() {return e_x;}
+inline int event_y() {return e_y;}
+inline int event_dx() {return e_dx;}
+inline int event_dy() {return e_dy;}
+inline int event_x_root() {return e_x_root;}
+inline int event_y_root() {return e_y_root;}
+inline int event_clicks() {return e_clicks;}
+inline void event_clicks(int i) {e_clicks = i;}
+inline bool event_is_click() {return e_is_click != 0;}
+inline void event_is_click(bool) {e_is_click = 0;} // only false works!
+inline unsigned event_state() {return e_state;}
+inline bool event_state(unsigned i) {return (e_state&i) != 0;}
+inline unsigned event_key() {return e_keysym;}
+inline unsigned event_button() {return e_keysym;}
+FL_API bool event_key_state(unsigned);
+inline const char* event_text() {return e_text;}
+inline unsigned event_length() {return e_length;}
+inline unsigned event_key_repeated() {return e_key_repeated;}
+inline float event_pressure() {return e_pressure;}
+inline float event_x_tilt() {return e_x_tilt;}
+inline float event_y_tilt() {return e_y_tilt;}
+inline int event_device() {return e_device;}
+
+// tests on current event:
+FL_API bool event_inside(const Rectangle&);
+FL_API bool compose(int &del);
+inline void compose_reset() {compose_state = 0;}
+
+// shortcuts:
+FL_API bool try_shortcut();
+FL_API const char* key_name(unsigned key);
+FL_API unsigned key(const char* name);
+
+class FL_API ShortcutFunctor {
+ public:
+ virtual bool handle(const Widget*, unsigned key) = 0;
+};
+FL_API unsigned foreachShortcut(const Widget*, ShortcutFunctor&);
+inline unsigned foreachShortcut(ShortcutFunctor& f) { return foreachShortcut(0,f); }
+
+// get current information, not info from last event:
+FL_API bool get_key_state(unsigned);
+FL_API void get_mouse(int &,int &);
+FL_API bool warp_mouse(int, int);
+
+// event destinations:
+FL_API bool handle(int, Window*);
+FL_API void add_event_handler(int (*h)(int, Window*));
+inline Widget* belowmouse() {return belowmouse_;}
+FL_API void belowmouse(Widget*);
+inline void belowmouse(Widget& w) {belowmouse(&w);}
+inline Widget* pushed() {return pushed_;}
+FL_API void pushed(Widget*);
+inline void pushed(Widget& w) {pushed(&w);}
+inline Widget* focus() {return focus_;}
+FL_API void focus(Widget*);
+inline void focus(Widget& w) {focus(&w);}
+
+// cut/paste/dnd:
+FL_API void copy(const char* stuff, int len, bool clipboard = false);
+FL_API void paste(Widget &receiver, bool clipboard = false);
+FL_API bool dnd();
+
+// Modal widgets (block events going to any other widgets):
+FL_API void modal(Widget*, bool grab = false);
+inline Widget* modal() {return modal_;}
+inline bool grab() {return grab_;}
+inline void exit_modal() {exit_modal_ = true;}
+inline bool exit_modal_flag() {return exit_modal_;}
+
+// for debugging purpose :
+const char *event_name(int event); /// see STR #508
+
+//@}
+
+}
+
+#endif
+
+//
+// $Id: events.h 6514 2008-11-10 21:10:13Z spitzak $
+//
Added: branches/branch-3.0/fltk/file_chooser.h
===================================================================
--- branches/branch-3.0/fltk/file_chooser.h (rev 0)
+++ branches/branch-3.0/fltk/file_chooser.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,47 @@
+// "$Id: file_chooser.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_file_chooser_h
+#define fltk_file_chooser_h
+
+#include "FL_API.h"
+
+namespace fltk {
+
+/// \name fltk/file_chooser.h
+//@{
+
+FL_API void use_system_file_chooser(bool = true);
+
+FL_API const char *dir_chooser(const char *message,const char *fname,int relative=0);
+FL_API const char *file_chooser(const char *message,const char *pattern,
+ const char *filename, int relative = 0);
+FL_API void file_chooser_callback(void (*cb)(const char *));
+
+//@}
+
+}
+
+#endif
+
+//
+// End of "$Id: file_chooser.h 6233 2008-09-14 07:54:06Z spitzak $".
+//
Added: branches/branch-3.0/fltk/filename.h
===================================================================
--- branches/branch-3.0/fltk/filename.h (rev 0)
+++ branches/branch-3.0/fltk/filename.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,131 @@
+// "$Id: filename.h 6483 2008-10-22 07:01:02Z spitzak $"
+
+/* Copyright 1998-2006 by Bill Spitzak and others.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Please report all bugs and problems to "fltk-bugs@fltk.org".
+ *
+ * These functions are not in the fltk namespace because they really
+ * should not be part of fltk. They are used by the file chooser.
+ * THESE FUNCTIONS MAY BE CHANGED OR DELETED IN FUTURE VERSIONS. DO
+ * NOT USE THEM, AS THEY ARE NOT AN OFFICIAL PART OF fltk!
+ */
+
+#ifndef fltk_filename_h
+#define fltk_filename_h
+
+#include "FL_API.h"
+
+////////////////////////////////////////////////////////////////
+#ifndef DOXYGEN
+// dirent (what a pain)...
+
+// FC: UNDER WIN32/VC6 long long is undefined, so use __int64 instead
+// for cross platform type compatibility though in fact VC6 uses
+// a 32 bit long to calculate size in the stat struct so don't expect
+// to handle >4GB files here...
+#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__MINGW32__) && (_MSC_VER==1200)
+typedef unsigned __int64 FL_FILESIZE_T;
+#else
+typedef unsigned long long FL_FILESIZE_T;
+#endif
+
+#if defined(__WATCOMC__)
+
+# include <sys/types.h>
+# include "direct.h"
+
+#elif defined(_WIN32) && !defined(__CYGWIN__) && !defined(__MINGW32__)
+// Dummy version used on win32 that just holds a name:
+
+struct dirent {char d_name[1];};
+
+#elif defined(__linux)
+// Newest Linux libc is broken when it emulates the 32-bit dirent, it
+// generates errors when the data like the inode number does not fit, even
+// though we are not going to look at anything other than the name. This
+// code seems to force the 64-bit version to be used:
+
+# ifndef _GNU_SOURCE
+# define _GNU_SOURCE
+# endif
+# include <features.h>
+# include <sys/types.h>
+# include <dirent.h>
+# if defined(__GLIBC_PREREQ)
+# if __GLIBC_PREREQ(2,3)
+# define dirent dirent64
+# define scandir scandir64
+# endif
+# endif
+
+#else
+// warning: on some systems (very few nowadays?) <dirent.h> may not exist.
+// The correct information is in one of these three files:
+// #include <sys/ndir.h>
+// #include <sys/dir.h>
+// #include <ndir.h>
+// plus you must do the following #define:
+// #define dirent direct
+// I recommend you create a /usr/include/dirent.h containing the correct info
+
+# include <sys/types.h>
+# include <dirent.h>
+
+#endif
+
+#ifndef PATH_MAX
+# ifdef _MAX_PATH
+# define PATH_MAX _MAX_PATH
+# else
+# define PATH_MAX 1024
+# endif
+#endif
+
+#endif
+////////////////////////////////////////////////////////////////
+
+namespace fltk {
+
+/// \name fltk/filename.h
+/// Some functions to manipulate filenames, to make portable programs.
+//@{
+
+FL_API int filename_absolute(char *to, int tolen, const char *from, const char* cwd=0);
+FL_API int filename_relative(char *to, int tolen, const char *from, const char* cwd=0);
+FL_API const char *filename_name(const char *);
+inline char* filename_name(char* a) {return (char*)(filename_name((const char*)a));}
+FL_API const char *filename_ext(const char *);
+inline char* filename_ext(char* a) {return (char*)(filename_ext((const char*)a));}
+FL_API bool filename_match(const char *, const char *pattern); // glob match
+FL_API bool filename_exist(const char*);
+FL_API bool filename_isdir(const char*);
+FL_API FL_FILESIZE_T filename_size(const char *); // return size of file
+FL_API long int filename_mtime(const char *); // return modification time
+
+typedef int (File_Sort_F)(const dirent*const*, const dirent*const*);
+FL_API int alphasort(const dirent*const*, const dirent*const*);
+FL_API int casealphasort(const dirent*const*, const dirent*const*);
+FL_API int casenumericsort(const dirent*const*, const dirent*const*);
+FL_API int numericsort(const dirent*const*, const dirent*const*);
+FL_API int filename_list(const char *d, dirent ***list, File_Sort_F *sort);
+FL_API int filename_list(const char *d, dirent ***list); // uses numericsort
+
+//@}
+
+}
+
+#endif
+
+// End of "$Id: filename.h 6483 2008-10-22 07:01:02Z spitzak $".
Added: branches/branch-3.0/fltk/fltk_cairo.h
===================================================================
--- branches/branch-3.0/fltk/fltk_cairo.h (rev 0)
+++ branches/branch-3.0/fltk/fltk_cairo.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,48 @@
+// fltk_cairo.h
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+/** \file
+ "Portably" include cairo common definitions for fltk. If fltk is
+ compiled correctly, you can create a cairo "surface" from an fltk
+ Window and then make your own cairo context to draw into it.
+
+ FLTK may also be compiled to use cairo for \e all it's drawing, by
+ adding --enable_cairo when running ./configure. In this case this
+ has already been done when draw() is called, and the cairo context
+ is in fltk::cc.
+*/
+
+#ifndef fltk_cairo_h
+#define fltk_cairo_h
+
+#include <fltk/FL_API.h>
+#include <cairo.h>
+
+namespace fltk {
+ extern FL_API cairo_t * cr;
+ class Window;
+ FL_API cairo_surface_t * cairo_create_surface(Window* w);
+}
+
+#endif
+
+// End of fltk_cairo.h
+
Added: branches/branch-3.0/fltk/forms.h
===================================================================
--- branches/branch-3.0/fltk/forms.h (rev 0)
+++ branches/branch-3.0/fltk/forms.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,854 @@
+//
+// "$Id: forms.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// Forms emulation header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef __FORMS_H__
+#define __FORMS_H__
+
+#include <fltk/Fl.h>
+#include <fltk/Fl_Group.h>
+#include <fltk/Fl_Window.h>
+#include <fltk/fl_draw.h>
+
+typedef Fl_Widget FL_OBJECT;
+typedef Fl_Window FL_FORM;
+
+////////////////////////////////////////////////////////////////
+// Random constants & symbols defined by forms.h file:
+
+#ifndef NULL
+#define NULL 0
+#endif
+#ifndef FALSE
+#define FALSE 0
+#define TRUE 1
+#endif
+
+#define FL_ON 1
+#define FL_OK 1
+#define FL_VALID 1
+#define FL_PREEMPT 1
+#define FL_AUTO 2
+#define FL_WHEN_NEEDED FL_AUTO
+#define FL_OFF 0
+#define FL_NONE 0
+#define FL_CANCEL 0
+#define FL_INVALID 0
+#define FL_IGNORE -1
+#define FL_CLOSE -2
+
+#define FL_LCOL FL_BLACK
+#define FL_COL1 FL_GRAY
+#define FL_MCOL FL_LIGHT1
+#define FL_LEFT_BCOL FL_LIGHT3 // 53 is better match
+#define FL_TOP_BCOL FL_LIGHT2 // 51
+#define FL_BOTTOM_BCOL FL_DARK2 // 40
+#define FL_RIGHT_BCOL FL_DARK3 // 36
+#define FL_INACTIVE FL_INACTIVE_COLOR
+#define FL_INACTIVE_COL FL_INACTIVE_COLOR
+#define FL_FREE_COL1 FL_FREE_COLOR
+#define FL_FREE_COL2 ((Fl_Color)(FL_FREE_COLOR+1))
+#define FL_FREE_COL3 ((Fl_Color)(FL_FREE_COLOR+2))
+#define FL_FREE_COL4 ((Fl_Color)(FL_FREE_COLOR+3))
+#define FL_FREE_COL5 ((Fl_Color)(FL_FREE_COLOR+4))
+#define FL_FREE_COL6 ((Fl_Color)(FL_FREE_COLOR+5))
+#define FL_FREE_COL7 ((Fl_Color)(FL_FREE_COLOR+6))
+#define FL_FREE_COL8 ((Fl_Color)(FL_FREE_COLOR+7))
+#define FL_FREE_COL9 ((Fl_Color)(FL_FREE_COLOR+8))
+#define FL_FREE_COL10 ((Fl_Color)(FL_FREE_COLOR+9))
+#define FL_FREE_COL11 ((Fl_Color)(FL_FREE_COLOR+10))
+#define FL_FREE_COL12 ((Fl_Color)(FL_FREE_COLOR+11))
+#define FL_FREE_COL13 ((Fl_Color)(FL_FREE_COLOR+12))
+#define FL_FREE_COL14 ((Fl_Color)(FL_FREE_COLOR+13))
+#define FL_FREE_COL15 ((Fl_Color)(FL_FREE_COLOR+14))
+#define FL_FREE_COL16 ((Fl_Color)(FL_FREE_COLOR+15))
+#define FL_TOMATO ((Fl_Color)(131))
+#define FL_INDIANRED ((Fl_Color)(164))
+#define FL_SLATEBLUE ((Fl_Color)(195))
+#define FL_DARKGOLD ((Fl_Color)(84))
+#define FL_PALEGREEN ((Fl_Color)(157))
+#define FL_ORCHID ((Fl_Color)(203))
+#define FL_DARKCYAN ((Fl_Color)(189))
+#define FL_DARKTOMATO ((Fl_Color)(113))
+#define FL_WHEAT ((Fl_Color)(174))
+
+#define FL_ALIGN_BESIDE FL_ALIGN_INSIDE
+
+#define FL_PUP_TOGGLE 2 // FL_MENU_TOGGLE
+#define FL_PUP_INACTIVE 1 // FL_MENU_INACTIVE
+#define FL_NO_FRAME FL_NO_BOX
+#define FL_ROUNDED3D_UPBOX FL_ROUND_UP_BOX
+#define FL_ROUNDED3D_DOWNBOX FL_ROUND_DOWN_BOX
+#define FL_OVAL3D_UPBOX FL_ROUND_UP_BOX
+#define FL_OVAL3D_DOWNBOX FL_ROUND_DOWN_BOX
+
+#define FL_MBUTTON1 1
+#define FL_LEFTMOUSE 1
+#define FL_MBUTTON2 2
+#define FL_MIDDLEMOUSE 2
+#define FL_MBUTTON3 3
+#define FL_RIGHTMOUSE 3
+#define FL_MBUTTON4 4
+#define FL_MBUTTON5 5
+
+#define FL_INVALID_STYLE 255
+#define FL_NORMAL_STYLE 0
+#define FL_BOLD_STYLE 1
+#define FL_ITALIC_STYLE 2
+#define FL_BOLDITALIC_STYLE 3
+#define FL_FIXED_STYLE 4
+#define FL_FIXEDBOLD_STYLE 5
+#define FL_FIXEDITALIC_STYLE 6
+#define FL_FIXEDBOLDITALIC_STYLE 7
+#define FL_TIMES_STYLE 8
+#define FL_TIMESBOLD_STYLE 9
+#define FL_TIMESITALIC_STYLE 10
+#define FL_TIMESBOLDITALIC_STYLE 11
+
+// hacks to change the labeltype() when passed to fl_set_object_lstyle():
+#define FL_SHADOW_STYLE 0x100
+#define FL_ENGRAVED_STYLE 0x200
+#define FL_EMBOSSED_STYLE 0x300
+
+// size values are different from XForms, match older Forms:
+#define FL_TINY_SIZE 8
+#define FL_SMALL_SIZE 11 // 10
+#undef FL_NORMAL_SIZE
+#define FL_NORMAL_SIZE 14 // 12
+#define FL_MEDIUM_SIZE 18 // 14
+#define FL_LARGE_SIZE 24 // 18
+#define FL_HUGE_SIZE 32 // 24
+#define FL_DEFAULT_SIZE FL_SMALL_SIZE
+#define FL_TINY_FONT FL_TINY_SIZE
+#define FL_SMALL_FONT FL_SMALL_SIZE
+#define FL_NORMAL_FONT FL_NORMAL_SIZE
+#define FL_MEDIUM_FONT FL_MEDIUM_SIZE
+#define FL_LARGE_FONT FL_LARGE_SIZE
+#define FL_HUGE_FONT FL_HUGE_SIZE
+#define FL_NORMAL_FONT1 FL_SMALL_FONT
+#define FL_NORMAL_FONT2 FL_NORMAL_FONT
+#define FL_DEFAULT_FONT FL_SMALL_FONT
+
+#define FL_RETURN_END_CHANGED FL_WHEN_RELEASE
+#define FL_RETURN_CHANGED FL_WHEN_CHANGED
+#define FL_RETURN_END FL_WHEN_RELEASE_ALWAYS
+#define FL_RETURN_ALWAYS (FL_WHEN_CHANGED|FL_WHEN_NOT_CHANGED)
+
+#define FL_BOUND_WIDTH 3
+
+typedef int FL_Coord;
+typedef int FL_COLOR;
+
+////////////////////////////////////////////////////////////////
+// fltk interaction:
+
+#define FL_CMD_OPT void
+extern FL_FORMS_API void fl_initialize(int*, char*[], const char*, FL_CMD_OPT*, int);
+inline void fl_finish() {}
+
+typedef void (*FL_IO_CALLBACK) (int, void*);
+inline void fl_add_io_callback(int fd, short w, FL_IO_CALLBACK cb, void* v) {
+ Fl::add_fd(fd,w,cb,v);}
+inline void fl_remove_io_callback(int fd, short, FL_IO_CALLBACK) {
+ Fl::remove_fd(fd);} // removes all the callbacks!
+
+// type of callback is different and no "id" number is returned:
+inline void fl_add_timeout(long msec, void (*cb)(void*), void* v) {
+ Fl::add_timeout(msec*.001, (Fl_Timeout_Handler)cb, v);}
+inline void fl_remove_timeout(int) {}
+
+// type of callback is different!
+inline void fl_set_idle_callback(void (*cb)()) {Fl::set_idle(cb);}
+
+FL_FORMS_API Fl_Widget* fl_do_forms(void);
+FL_FORMS_API Fl_Widget* fl_check_forms();
+inline Fl_Widget* fl_do_only_forms(void) {return fl_do_forms();}
+inline Fl_Widget* fl_check_only_forms(void) {return fl_check_forms();}
+
+// because of new redraw behavior, these are no-ops:
+inline void fl_freeze_object(Fl_Widget*) {}
+inline void fl_unfreeze_object(Fl_Widget*) {}
+inline void fl_freeze_form(Fl_Window*) {}
+inline void fl_unfreeze_form(Fl_Window*) {}
+inline void fl_freeze_all_forms() {}
+inline void fl_unfreeze_all_forms() {}
+
+inline void fl_set_focus_object(Fl_Window*, Fl_Widget* o) {Fl::focus(o);}
+inline void fl_reset_focus_object(Fl_Widget* o) {Fl::focus(o);}
+#define fl_set_object_focus fl_set_focus_object
+
+// void fl_set_form_atclose(Fl_Window*w,int (*cb)(Fl_Window*,void*),void* v)
+// void fl_set_atclose(int (*cb)(Fl_Window*,void*),void*)
+// fl_set_form_atactivate/atdeactivate not implemented!
+
+////////////////////////////////////////////////////////////////
+// Fl_Widget:
+
+inline void fl_set_object_boxtype(Fl_Widget* o, Fl_Boxtype a) {o->box(a);}
+inline void fl_set_object_lsize(Fl_Widget* o,int s) {o->label_size(s);}
+FL_FORMS_API void fl_set_object_lstyle(Fl_Widget* o,int a);
+inline void fl_set_object_lcol(Fl_Widget* o, unsigned a) {o->label_color((Fl_Color)a);}
+#define fl_set_object_lcolor fl_set_object_lcol
+inline void fl_set_object_lalign(Fl_Widget* o, Fl_Align a) { o->clear_flag(FL_ALIGN_MASK); o->set_flag(a);}
+#define fl_set_object_align fl_set_object_lalign
+inline void fl_set_object_color(Fl_Widget* o,unsigned a,unsigned b) {o->color((Fl_Color)a); o->selection_color((Fl_Color)b);}
+inline void fl_set_object_label(Fl_Widget* o, const char* a) {o->label(a); o->redraw();}
+inline void fl_set_object_position(Fl_Widget*o,int x,int y) {o->position(x,y);}
+inline void fl_set_object_size(Fl_Widget* o, int w, int h) {o->size(w,h);}
+inline void fl_set_object_geometry(Fl_Widget* o,int x,int y,int w,int h) {o->resize(x,y,w,h);}
+
+inline void fl_get_object_geometry(Fl_Widget* o,int*x,int*y,int*w,int*h) {
+ *x = o->x(); *y = o->y(); *w = o->w(); *h = o->h();}
+inline void fl_get_object_position(Fl_Widget* o,int*x,int*y) {
+ *x = o->x(); *y = o->y();}
+
+typedef void (*Forms_CB)(Fl_Widget*, long);
+inline void fl_set_object_callback(Fl_Widget*o,Forms_CB c,long a) {o->callback(c,a);}
+#define fl_set_call_back fl_set_object_callback
+inline void fl_call_object_callback(Fl_Widget* o) {o->do_callback();}
+inline void fl_trigger_object(Fl_Widget* o) {o->do_callback();}
+inline void fl_set_object_return(Fl_Widget* o, int v) {
+ o->when(v|FL_WHEN_RELEASE);}
+
+inline void fl_redraw_object(Fl_Widget* o) {o->redraw();}
+inline void fl_show_object(Fl_Widget* o) {o->show();}
+inline void fl_hide_object(Fl_Widget* o) {o->hide();}
+inline void fl_free_object(Fl_Widget* x) {delete x;}
+inline void fl_delete_object(Fl_Widget* o) {((Fl_Group*)(o->parent()))->remove(*o);}
+inline void fl_activate_object(Fl_Widget* o) {o->activate();}
+inline void fl_deactivate_object(Fl_Widget* o) {o->deactivate();}
+
+inline void fl_add_object(Fl_Window* f, Fl_Widget* x) {f->add(x);}
+inline void fl_insert_object(Fl_Widget* o, Fl_Widget* b) {
+ ((Fl_Group*)(b->parent()))->insert(*o,b);}
+
+inline Fl_Window* FL_ObjWin(Fl_Widget* o) {return o->window();}
+
+////////////////////////////////////////////////////////////////
+// things that appered in the demos a lot that I don't emulate, but
+// I did not want to edit out of all the demos...
+
+inline int fl_get_border_width() {return 3;}
+inline void fl_set_border_width(int) {}
+inline void fl_set_object_dblbuffer(Fl_Widget*, int) {}
+inline void fl_set_form_dblbuffer(Fl_Window*, int) {}
+
+////////////////////////////////////////////////////////////////
+// Fl_Window:
+
+inline void fl_free_form(Fl_Window* x) {delete x;}
+inline void fl_redraw_form(Fl_Window* f) {f->redraw();}
+
+inline Fl_Window* fl_bgn_form(Fl_Boxtype b,int w,int h) {
+ Fl_Window* g = new Fl_Window(w,h,0);
+ g->box(b);
+ return g;
+}
+inline void fl_addto_form(Fl_Window* f) {f->begin();}
+inline Fl_Group* fl_bgn_group() {return new Fl_Group(0,0,0,0,0);}
+inline void fl_addto_group(Fl_Widget* o) {((Fl_Group* )o)->begin();}
+FL_FORMS_API void fl_end_group();
+FL_FORMS_API void fl_end_form();
+#define resizebox _ddfdesign_kludge()
+
+inline void fl_scale_form(Fl_Window* f, double x, double y) {
+ f->resizable(f); f->size(int(f->w()*x),int(f->h()*y));}
+inline void fl_set_form_position(Fl_Window* f,int x,int y) {f->position(x,y);}
+inline void fl_set_form_size(Fl_Window* f, int w, int h) {f->size(w,h);}
+inline void fl_set_form_geometry(Fl_Window* f,int x,int y,int w,int h) {
+ f->resize(x,y,w,h);}
+#define fl_set_initial_placement fl_set_form_geometry
+inline void fl_adjust_form_size(Fl_Window*) {}
+
+FL_FORMS_API void fl_show_form(Fl_Window* f,int p,int b,const char* n);
+enum { // "p" argument values:
+ FL_PLACE_FREE = 0, // make resizable
+ FL_PLACE_MOUSE = 1, // mouse centered on form
+ FL_PLACE_CENTER = 2, // center of the screen
+ FL_PLACE_POSITION = 4,// fixed position, resizable
+ FL_PLACE_SIZE = 8, // fixed size, normal fltk behavior
+ FL_PLACE_GEOMETRY =16,// fixed size and position
+ FL_PLACE_ASPECT = 32, // keep aspect ratio (ignored)
+ FL_PLACE_FULLSCREEN=64,// fill screen
+ FL_PLACE_HOTSPOT = 128,// enables hotspot
+ FL_PLACE_ICONIC = 256,// iconic (ignored)
+ FL_FREE_SIZE=(1<<14), // force resizable
+ FL_FIX_SIZE =(1<<15) // force off resizable
+};
+#define FL_PLACE_FREE_CENTER (FL_PLACE_CENTER|FL_FREE_SIZE)
+#define FL_PLACE_CENTERFREE (FL_PLACE_CENTER|FL_FREE_SIZE)
+enum { // "b" arguement values:
+ FL_NOBORDER = 0,
+ FL_FULLBORDER,
+ FL_TRANSIENT
+//FL_MODAL = (1<<8) // not implemented yet in Forms
+};
+inline void fl_set_form_hotspot(Fl_Window* w,int x,int y) {w->hotspot(x,y);}
+inline void fl_set_form_hotobject(Fl_Window* w, Fl_Widget* o) {w->hotspot(o);}
+extern FL_FORMS_API char fl_flip; // in forms.C
+inline void fl_flip_yorigin() {fl_flip = 1;}
+
+#define fl_prepare_form_window fl_show_form
+inline void fl_show_form_window(Fl_Window*) {}
+
+inline void fl_raise_form(Fl_Window* f) {f->show();}
+
+inline void fl_hide_form(Fl_Window* f) {f->hide();}
+inline void fl_pop_form(Fl_Window* f) {f->show();}
+
+extern FL_FORMS_API char fl_modal_next; // in forms.C
+inline void fl_activate_all_forms() {}
+inline void fl_deactivate_all_forms() {fl_modal_next = 1;}
+inline void fl_deactivate_form(Fl_Window*w) {w->deactivate();}
+inline void fl_activate_form(Fl_Window*w) {w->activate();}
+
+inline void fl_set_form_title(Fl_Window* f, const char* s) {f->label(s);}
+inline void fl_title_form(Fl_Window* f, const char* s) {f->label(s);}
+
+typedef void (*Forms_FormCB)(Fl_Widget*);
+inline void fl_set_form_callback(Fl_Window* f,Forms_FormCB c) {f->callback(c);}
+#define fl_set_form_call_back fl_set_form_callback
+
+inline void fl_init() {}
+inline void fl_set_graphics_mode(int r, int /*d*/) {
+ Fl::visual(r ? FL_RGB : FL_INDEX);
+ // d should add FL_DOUBLE, but that always fails in fltk 2.0
+}
+
+inline int fl_form_is_visible(Fl_Window* f) {return f->visible();}
+
+inline int fl_mouse_button() {return Fl::event_button();}
+#define fl_mousebutton fl_mouse_button
+
+#define fl_free free
+#define fl_malloc malloc
+#define fl_calloc calloc
+#define fl_realloc realloc
+
+////////////////////////////////////////////////////////////////
+// Drawing functions. Only usable inside an Fl_Free object?
+
+#if 0
+inline void fl_drw_box(Fl_Boxtype b,int x,int y,int w,int h,Fl_Color bgc,int=3) {
+ b->draw(x,y,w,h,bgc);}
+inline void fl_drw_frame(Fl_Boxtype b,int x,int y,int w,int h,Fl_Color bgc,int=3) {
+ b->draw(x,y,w,h,bgc,FL_FRAME_ONLY);}
+#endif
+
+inline void fl_drw_text(Fl_Align align, int x, int y, int w, int h,
+ Fl_Color fgcolor, int size, Fl_Font style,
+ const char* s) {
+ fl_font(style,size);
+ fl_color(fgcolor);
+ fl_draw(s,x,y,w,h,align);
+}
+
+// this does not work except for CENTER...
+inline void fl_drw_text_beside(Fl_Align align, int x, int y, int w, int h,
+ Fl_Color fgcolor, int size, Fl_Font style,
+ const char* s) {
+ fl_font(style,size);
+ fl_color(fgcolor);
+ fl_draw(s,x,y,w,h,align);
+}
+
+//inline void fl_set_font_name(Fl_Font n,const char* s) {fl_set_font(n,s);}
+
+inline void fl_mapcolor(Fl_Color c, uchar r, uchar g, uchar b) {
+ fl_set_color(c,fl_rgb(r,g,b));}
+#define fl_set_clipping(x,y,w,h) fl_clip(x,y,w,h)
+#define fl_unset_clipping() fl_pop_clip()
+
+////////////////////////////////////////////////////////////////
+// Forms classes:
+
+inline Fl_Widget* fl_add_new(Fl_Widget* p) {return p;}
+inline Fl_Widget* fl_add_new(uchar t,Fl_Widget* p) {p->type(t); return p;}
+
+#define forms_constructor(type,name) \
+inline type* name(uchar t,int x,int y,int w,int h,const char* l) { \
+ return (type*)(fl_add_new(t, new type(x,y,w,h,l)));}
+#define forms_constructort(type,name) \
+inline type* name(uchar t,int x,int y,int w,int h,const char* l) { \
+ return (type*)(fl_add_new(new type(t,x,y,w,h,l)));}
+#define forms_constructorb(type,name) \
+inline type* name(Fl_Boxtype t,int x,int y,int w,int h,const char* l) { \
+ return (type*)(fl_add_new(new type(t,x,y,w,h,l)));}
+
+#include "Fl_FormsBitmap.h"
+#define FL_NORMAL_BITMAP FL_NO_BOX
+forms_constructorb(Fl_FormsBitmap, fl_add_bitmap)
+inline void fl_set_bitmap_data(Fl_Widget* o, int w, int h, const uchar* b) {
+ ((Fl_FormsBitmap*)o)->set(w,h,b);
+}
+
+#include "Fl_FormsPixmap.h"
+#define FL_NORMAL_PIXMAP FL_NO_BOX
+forms_constructorb(Fl_FormsPixmap, fl_add_pixmap)
+inline void fl_set_pixmap_data(Fl_Widget* o, char*const* b) {
+ ((Fl_FormsPixmap*)o)->set(b);
+}
+//inline void fl_set_pixmap_file(Fl_Widget*, const char*);
+inline void fl_set_pixmap_align(Fl_Widget* o,Fl_Align a,int,int) { o->clear_flag(FL_ALIGN_MASK); o->set_flag(a);}
+//inline void fl_set_pixmap_colorcloseness(int, int, int);
+
+#include <fltk/Fl_Box.h>
+forms_constructorb(Fl_Box, fl_add_box)
+
+#include <fltk/Fl_Browser.h>
+forms_constructor(Fl_Browser, fl_add_browser)
+
+inline void fl_clear_browser(Fl_Widget* o) {
+ ((Fl_Browser*)o)->clear();}
+inline void fl_add_browser_line(Fl_Widget* o, const char* s) {
+ ((Fl_Browser*)o)->add(s);}
+inline void fl_addto_browser(Fl_Widget* o, const char* s) {
+ ((Fl_Browser*)o)->add(s);} /* should also scroll to bottom */
+//inline void fl_addto_browser_chars(Fl_Widget*, const char*)
+//#define fl_append_browser fl_addto_browser_chars
+inline void fl_insert_browser_line(Fl_Widget* o, int n, const char* s) {
+ ((Fl_Browser*)o)->insert(n,s);}
+inline void fl_delete_browser_line(Fl_Widget* o, int n) {
+ ((Fl_Browser*)o)->remove(n);}
+inline void fl_replace_browser_line(Fl_Widget* o, int n, const char* s) {
+ ((Fl_Browser*)o)->replace(n,s);}
+inline char* fl_get_browser_line(Fl_Widget* o, int n) {
+ return (char*)(((Fl_Browser*)o)->text(n));}
+FL_FORMS_API int fl_load_browser(Fl_Widget* o, const char* f);
+inline void fl_select_browser_line(Fl_Widget* o, int n) {
+ ((Fl_Browser*)o)->select(n,1);}
+inline void fl_deselect_browser_line(Fl_Widget* o, int n) {
+ ((Fl_Browser*)o)->select(n,0);}
+inline void fl_deselect_browser(Fl_Widget* o) {
+ ((Fl_Browser*)o)->deselect();}
+inline int fl_isselected_browser_line(Fl_Widget* o, int n) {
+ return ((Fl_Browser*)o)->selected(n);}
+inline int fl_get_browser_topline(Fl_Widget* o) {
+ return ((Fl_Browser*)o)->topline();}
+inline int fl_get_browser(Fl_Widget* o) {
+ return ((Fl_Browser*)o)->value();}
+inline int fl_get_browser_maxline(Fl_Widget* o) {
+ return ((Fl_Browser*)o)->size();}
+//linline int fl_get_browser_screenlines(Fl_Widget*);
+inline void fl_set_browser_topline(Fl_Widget* o, int n) {
+ ((Fl_Browser*)o)->topline(n);}
+inline void fl_set_browser_fontsize(Fl_Widget* o, int s) {
+ ((Fl_Browser*)o)->text_size(s);}
+inline void fl_set_browser_fontstyle(Fl_Widget* o, int s) {
+ ((Fl_Browser*)o)->text_font(fl_fonts+s);}
+inline void fl_set_browser_specialkey(Fl_Widget* o, char c) {
+ ((Fl_Browser*)o)->format_char(c);}
+//inline void fl_set_browser_vscrollbar(Fl_Widget*, int);
+//inline void fl_set_browser_hscrollbar(Fl_Widget*, int);
+//inline void fl_set_browser_leftslider(Fl_Widget*, int);
+//#define fl_set_browser_leftscrollbar fl_set_browser_leftslider
+//inline void fl_set_browser_line_selectable(Fl_Widget*, int, int);
+//inline void fl_get_browser_dimension(Fl_Widget*,int*,int*,int*,int*);
+//inline void fl_set_browser_dblclick_callback(Fl_Widget*,FL_CALLBACKPTR,long);
+//inline void fl_set_browser_xoffset(Fl_Widget*, FL_Coord);
+//inline void fl_set_browser_scrollbarsize(Fl_Widget*, int, int);
+inline void fl_setdisplayed_browser_line(Fl_Widget* o, int n, int i) {
+ ((Fl_Browser*)o)->display(n,i);}
+inline int fl_isdisplayed_browser_line(Fl_Widget* o, int n) {
+ return ((Fl_Browser*)o)->displayed(n);}
+
+#include <fltk/Fl_Button.h>
+
+#define FL_NORMAL_BUTTON 0
+//#define FL_HIDDEN_BUTTON
+#define FL_TOUCH_BUTTON 4
+#define FL_INOUT_BUTTON 5
+#define FL_RETURN_BUTTON 6
+#define FL_HIDDEN_RET_BUTTON 7
+#define FL_PUSH_BUTTON FL_TOGGLE_BUTTON
+#define FL_MENU_BUTTON 9
+
+FL_FORMS_API Fl_Button* fl_add_button(uchar t,int x,int y,int w,int h,const char* l);
+inline int fl_get_button(Fl_Widget* b) {return ((Fl_Button*)b)->value();}
+inline void fl_set_button(Fl_Widget* b, int v) {((Fl_Button*)b)->value(v);}
+inline int fl_get_button_numb(Fl_Widget*) {return Fl::event_button();}
+inline void fl_set_object_shortcut(Fl_Widget* b, const char* s, int=0) {
+ b->shortcut(fltk::key(s));}
+#define fl_set_button_shortcut fl_set_object_shortcut
+
+#include <fltk/Fl_Light_Button.h>
+forms_constructor(Fl_Light_Button, fl_add_lightbutton)
+
+#include <fltk/Fl_Round_Button.h>
+forms_constructor(Fl_Round_Button, fl_add_roundbutton)
+forms_constructor(Fl_Round_Button, fl_add_round3dbutton)
+
+#include <fltk/Fl_Check_Button.h>
+forms_constructor(Fl_Check_Button, fl_add_checkbutton)
+
+inline Fl_Widget* fl_add_bitmapbutton(int t,int x,int y,int w,int h,const char* l) {Fl_Widget* o = fl_add_button(t,x,y,w,h,l); return o;}
+inline void fl_set_bitmapbutton_data(Fl_Widget* o,int a,int b,uchar* c) {
+ (new Fl_Bitmap(c,a,b))->label(o);} // does not delete old Fl_Bitmap!
+
+inline Fl_Widget* fl_add_pixmapbutton(int t,int x,int y,int w,int h,const char* l) {Fl_Widget* o = fl_add_button(t,x,y,w,h,l); return o;}
+inline void fl_set_pixmapbutton_data(Fl_Widget* o, const char*const* c) {
+ (new Fl_Pixmap(c))->label(o);} // does not delete old Fl_Pixmap!
+
+// Fl_Canvas object not yet implemented!
+
+#include "Fl_Chart.h"
+
+forms_constructor(Fl_Chart, fl_add_chart)
+inline void fl_clear_chart(Fl_Widget* o) {
+ ((Fl_Chart*)o)->clear();}
+inline void fl_add_chart_value(Fl_Widget* o,double v,const char* s,uchar c){
+ ((Fl_Chart*)o)->add(v,s,c);}
+inline void fl_insert_chart_value(Fl_Widget* o, int i, double v, const char* s, uchar c) {
+ ((Fl_Chart*)o)->insert(i,v,s,c);}
+inline void fl_replace_chart_value(Fl_Widget* o, int i, double v, const char* s, uchar c) {
+ ((Fl_Chart*)o)->replace(i,v,s,c);}
+inline void fl_set_chart_bounds(Fl_Widget* o, double a, double b) {
+ ((Fl_Chart*)o)->bounds(a,b);}
+inline void fl_set_chart_maxnumb(Fl_Widget* o, int v) {
+ ((Fl_Chart*)o)->maxsize(v);}
+inline void fl_set_chart_autosize(Fl_Widget* o, int v) {
+ ((Fl_Chart*)o)->autosize(v);}
+inline void fl_set_chart_lstyle(Fl_Widget* o, Fl_Font v) {
+ ((Fl_Chart*)o)->text_font(v);}
+inline void fl_set_chart_lsize(Fl_Widget* o, int v) {
+ ((Fl_Chart*)o)->text_size(v);}
+inline void fl_set_chart_lcolor(Fl_Widget* o, unsigned v) {
+ ((Fl_Chart*)o)->text_color((Fl_Color)v);}
+#define fl_set_chart_lcol fl_set_chart_lcolor
+
+#include <fltk/Fl_Choice.h>
+
+#define FL_NORMAL_CHOICE 0
+#define FL_NORMAL_CHOICE2 0
+#define FL_DROPLIST_CHOICE 0
+
+forms_constructor(Fl_Choice, fl_add_choice)
+inline void fl_clear_choice(Fl_Widget* o) {
+ ((Fl_Choice*)o)->clear();}
+inline void fl_addto_choice(Fl_Widget* o, const char* s) {
+ ((Fl_Choice*)o)->add(s);}
+inline void fl_replace_choice(Fl_Widget* o, int i, const char* s) {
+ ((Fl_Choice*)o)->replace(i-1,s);}
+inline void fl_delete_choice(Fl_Widget* o, int i) {
+ ((Fl_Choice*)o)->remove(i-1);}
+inline void fl_set_choice(Fl_Widget* o, int i) {
+ ((Fl_Choice*)o)->value(i-1);}
+// inline void fl_set_choice_text(Fl_Widget*, const char*);
+inline int fl_get_choice(Fl_Widget* o) {
+ return ((Fl_Choice*)o)->value()+1;}
+// inline const char* fl_get_choice_item_text(Fl_Widget*, int);
+// inline int fl_get_choice_maxitems(Fl_Widget*);
+inline const char* fl_get_choice_text(Fl_Widget* o) {
+ return ((Fl_Choice*)o)->text();}
+inline void fl_set_choice_fontsize(Fl_Widget* o, int x) {
+ ((Fl_Choice*)o)->text_size(x);}
+inline void fl_set_choice_fontstyle(Fl_Widget* o, Fl_Font x) {
+ ((Fl_Choice*)o)->text_font(x);}
+// inline void fl_set_choice_item_mode(Fl_Widget*, int, unsigned);
+// inline void fl_set_choice_item_shortcut(Fl_Widget*, int, const char*);
+
+#include <fltk/Fl_Clock.h>
+forms_constructor(Fl_Clock, fl_add_clock)
+inline void fl_get_clock(Fl_Widget* o, int* h, int* m, int* s) {
+ *h = ((Fl_Clock*)o)->hour();
+ *m = ((Fl_Clock*)o)->minute();
+ *s = ((Fl_Clock*)o)->second();
+}
+
+#include <fltk/Fl_Counter.h>
+forms_constructor(Fl_Counter, fl_add_counter)
+inline void fl_set_counter_value(Fl_Widget* o, double v) {
+ ((Fl_Counter*)o)->value(v);}
+inline void fl_set_counter_bounds(Fl_Widget* o, double a, double b) {
+ ((Fl_Counter*)o)->range(a,b);}
+inline void fl_set_counter_step(Fl_Widget* o, double a, double b) {
+ ((Fl_Counter*)o)->step(a / b);}
+inline void fl_set_counter_precision(Fl_Widget* o, int v) {
+// ((Fl_Counter*)o)->precision(v);}
+ ((Fl_Counter*)o)->step(1/(10^v));}
+inline void fl_set_counter_return(Fl_Widget* o, int v) {
+ ((Fl_Counter*)o)->when(v|FL_WHEN_RELEASE);}
+inline double fl_get_counter_value(Fl_Widget* o) {
+ return ((Fl_Counter*)o)->value();}
+inline void fl_get_counter_bounds(Fl_Widget* o, float* a, float* b) {
+ *a = float(((Fl_Counter*)o)->minimum());
+ *b = float(((Fl_Counter*)o)->maximum());
+}
+//inline void fl_set_counter_filter(Fl_Widget*,const char* (*)(Fl_Widget*,double,int));
+
+// Cursor stuff cannot be emulated because it uses X stuff
+inline void fl_set_cursor(Fl_Window* w, Fl_Cursor c) {w->cursor(c);}
+#define FL_INVISIBLE_CURSOR FL_CURSOR_NONE
+#define FL_DEFAULT_CURSOR FL_CURSOR_DEFAULT
+
+#include <fltk/Fl_Dial.h>
+
+#define FL_DIAL_COL1 FL_GRAY
+#define FL_DIAL_COL2 37
+
+forms_constructor(Fl_Dial, fl_add_dial)
+inline void fl_set_dial_value(Fl_Widget* o, double v) {
+ ((Fl_Dial*)o)->value(v);}
+inline double fl_get_dial_value(Fl_Widget* o) {
+ return ((Fl_Dial*)o)->value();}
+inline void fl_set_dial_bounds(Fl_Widget* o, double a, double b) {
+ ((Fl_Dial*)o)->range(a, b);}
+inline void fl_get_dial_bounds(Fl_Widget* o, float* a, float* b) {
+ *a = float(((Fl_Dial*)o)->minimum());
+ *b = float(((Fl_Dial*)o)->maximum());
+}
+inline void fl_set_dial_return(Fl_Widget* o, int i) {
+ ((Fl_Dial*)o)->when(i|FL_WHEN_RELEASE);}
+inline void fl_set_dial_angles(Fl_Widget* o, int a, int b) {
+ ((Fl_Dial*)o)->angles(a, b);}
+//inline void fl_set_dial_cross(Fl_Widget* o, int);
+// inline void fl_set_dial_direction(Fl_Widget* o, uchar d) {
+// ((Fl_Dial*)o)->direction(d);}
+inline void fl_set_dial_step(Fl_Widget* o, double v) {
+ ((Fl_Dial*)o)->step(v);}
+
+// Frames:
+
+inline Fl_Widget* fl_add_frame(Fl_Boxtype i,int x,int y,int w,int h,const char* l) {
+ return fl_add_box(i,x-3,y-3,w+6,h+6,l);}
+
+// labelframe nyi
+inline Fl_Widget* fl_add_labelframe(Fl_Boxtype i,int x,int y,int w,int h,const char* l) {
+ Fl_Widget* o = fl_add_box(i,x-3,y-3,w+6,h+6,l);
+ o->clear_flag(FL_ALIGN_MASK);
+ o->set_flag(FL_ALIGN_TOP | FL_ALIGN_LEFT);
+ return o;
+}
+
+#include "Fl_Free.h"
+inline Fl_Free*
+fl_add_free(int t,double x,double y,double w,double h,const char* l,
+ FL_HANDLEPTR hdl) {
+ return (Fl_Free*)(fl_add_new(
+ new Fl_Free(t,int(x),int(y),int(w),int(h),l,hdl)));
+}
+
+#include <fltk/fl_ask.h>
+#include <fltk/fl_show_colormap.h>
+
+inline int fl_show_question(const char* c, int = 0) {return fl_ask(c);}
+FL_FORMS_API void fl_show_message(const char *,const char *,const char *);
+FL_FORMS_API void fl_show_alert(const char *,const char *,const char *,int=0);
+FL_FORMS_API int fl_show_question(const char *,const char *,const char *);
+inline const char *fl_show_input(const char *l,const char*d=0) {return fl_input(l,d);}
+/*const*/ char *fl_show_simple_input(const char *label, const char *deflt = 0);
+int fl_show_choice(
+ const char *m1,
+ const char *m2,
+ const char *m3,
+ int numb,
+ const char *b0,
+ const char *b1,
+ const char *b2);
+
+inline void fl_set_goodies_font(int a, unsigned b) {
+ fl_message_style->label_font = fl_fonts+a;
+ fl_message_style->label_size = b;
+}
+#define fl_show_messages fl_message
+inline int fl_show_choices(const char* c,int n,const char* b1,const char* b2,
+ const char* b3, int) {
+ return fl_show_choice(0,c,0,n,b1,b2,b3);
+}
+
+#include <fltk/filename.h>
+#include <fltk/fl_file_chooser.h>
+inline int do_matching(char* a, const char* b) {return filename_match(a,b);}
+
+// Forms-compatable file chooser (implementation in fselect.C):
+FL_FORMS_API char* fl_show_file_selector(const char* message,const char* dir,
+ const char* pat,const char* fname);
+FL_FORMS_API char* fl_get_directory();
+FL_FORMS_API char* fl_get_pattern();
+FL_FORMS_API char* fl_get_filename();
+
+#include <fltk/Fl_Input.h>
+forms_constructor(Fl_Input, fl_add_input)
+inline void fl_set_input(Fl_Widget* o, const char* v) {
+ ((Fl_Input*)o)->text(v);}
+inline void fl_set_input_return(Fl_Widget* o, int x) {
+ ((Fl_Input*)o)->when(x | FL_WHEN_RELEASE);}
+inline void fl_set_input_color(Fl_Widget* o, unsigned a, unsigned /*b*/) {
+ ((Fl_Input*)o)->text_color((Fl_Color)a);
+// ((Fl_Input*)o)->cursor_color((Fl_Color)b);
+}
+// inline void fl_set_input_scroll(Fl_Widget*, int);
+inline void fl_set_input_cursorpos(Fl_Widget* o, int x, int /*y*/) {
+ ((Fl_Input*)o)->position(x);}
+// inline void fl_set_input_selected(Fl_Widget*, int);
+// inline void fl_set_input_selected_range(Fl_Widget*, int, int);
+// inline void fl_set_input_maxchars(Fl_Widget*, int);
+// inline void fl_set_input_format(Fl_Widget*, int, int);
+// inline void fl_set_input_hscrollbar(Fl_Widget*, int);
+// inline void fl_set_input_vscrollbar(Fl_Widget*, int);
+// inline void fl_set_input_xoffset(Fl_Widget*, int);
+// inline void fl_set_input_topline(Fl_Widget*, int);
+// inline void fl_set_input_scrollbarsize(Fl_Widget*, int, int);
+// inline int fl_get_input_topline(Fl_Widget*);
+// inline int fl_get_input_screenlines(Fl_Widget*);
+inline int fl_get_input_cursorpos(Fl_Widget* o, int*x, int*y) {
+ *x = ((Fl_Input*)o)->position(); *y = 0; return *x;}
+// inline int fl_get_input_numberoflines(Fl_Widget*);
+// inline void fl_get_input_format(Fl_Widget*, int*, int*);
+inline const char* fl_get_input(Fl_Widget* o) {return ((Fl_Input*)o)->text();}
+
+#include <fltk/Fl_Menu_Button.h>
+
+// types are not implemented, they all act like FL_PUSH_MENU:
+#define FL_TOUCH_MENU 0
+#define FL_PUSH_MENU 1
+#define FL_PULLDOWN_MENU 2
+forms_constructor(Fl_Menu_Button, fl_add_menu)
+
+inline void fl_clear_menu(Fl_Widget* o) {
+ ((Fl_Menu_Button*)o)->clear();}
+inline void fl_set_menu(Fl_Widget* o, const char* s) {
+ ((Fl_Menu_Button*)o)->clear(); ((Fl_Menu_Button*)o)->add(s);}
+inline void fl_addto_menu(Fl_Widget* o, const char* s) {
+ ((Fl_Menu_Button*)o)->add(s);}
+inline void fl_replace_menu_item(Fl_Widget* o, int i, const char* s) {
+ ((Fl_Menu_Button*)o)->replace(i-1,s);}
+inline void fl_delete_menu_item(Fl_Widget* o, int i) {
+ ((Fl_Menu_Button*)o)->remove(i-1);}
+inline void fl_set_menu_item_shortcut(Fl_Widget* o, int i, const char* s) {
+ ((Fl_Menu_Button*)o)->shortcut(i-1,fltk::key(s));}
+// inline void fl_set_menu_item_mode(Fl_Widget* o, int i, long x) {
+// ((Fl_Menu_Button*)o)->mode(i-1,x);}
+inline void fl_show_menu_symbol(Fl_Widget*, int ) {
+/* ((Fl_Menu_Button*)o)->show_menu_symbol(i); */}
+// inline void fl_set_menu_popup(Fl_Widget*, int);
+inline int fl_get_menu(Fl_Widget* o) {
+ return ((Fl_Menu_Button*)o)->value()+1;}
+inline const char* fl_get_menu_item_text(Fl_Widget* o, int i) {
+ return ((Fl_Menu_Button*)o)->text(i);}
+inline int fl_get_menu_maxitems(Fl_Widget* o) {
+ return ((Fl_Menu_Button*)o)->size();}
+inline int fl_get_menu_item_mode(Fl_Widget* o, int i) {
+ return ((Fl_Menu_Button*)o)->mode(i);}
+inline const char* fl_get_menu_text(Fl_Widget* o) {
+ return ((Fl_Menu_Button*)o)->text();}
+
+#include "Fl_Positioner.h"
+#define FL_NORMAL_POSITIONER 0
+forms_constructor(Fl_Positioner, fl_add_positioner)
+inline void fl_set_positioner_xvalue(Fl_Widget* o, double v) {
+ ((Fl_Positioner*)o)->xvalue(v);}
+inline double fl_get_positioner_xvalue(Fl_Widget* o) {
+ return ((Fl_Positioner*)o)->xvalue();}
+inline void fl_set_positioner_xbounds(Fl_Widget* o, double a, double b) {
+ ((Fl_Positioner*)o)->xbounds(a,b);}
+inline void fl_get_positioner_xbounds(Fl_Widget* o, float* a, float* b) {
+ *a = float(((Fl_Positioner*)o)->xminimum());
+ *b = float(((Fl_Positioner*)o)->xmaximum());
+}
+inline void fl_set_positioner_yvalue(Fl_Widget* o, double v) {
+ ((Fl_Positioner*)o)->yvalue(v);}
+inline double fl_get_positioner_yvalue(Fl_Widget* o) {
+ return ((Fl_Positioner*)o)->yvalue();}
+inline void fl_set_positioner_ybounds(Fl_Widget* o, double a, double b) {
+ ((Fl_Positioner*)o)->ybounds(a,b);}
+inline void fl_get_positioner_ybounds(Fl_Widget* o, float* a, float* b) {
+ *a = float(((Fl_Positioner*)o)->yminimum());
+ *b = float(((Fl_Positioner*)o)->ymaximum());
+}
+inline void fl_set_positioner_xstep(Fl_Widget* o, double v) {
+ ((Fl_Positioner*)o)->xstep(v);}
+inline void fl_set_positioner_ystep(Fl_Widget* o, double v) {
+ ((Fl_Positioner*)o)->ystep(v);}
+inline void fl_set_positioner_return(Fl_Widget* o, int v) {
+ ((Fl_Positioner*)o)->when(v|FL_WHEN_RELEASE);}
+
+#include <fltk/Fl_Slider.h>
+
+#define FL_HOR_BROWSER_SLIDER FL_HOR_SLIDER
+#define FL_VERT_BROWSER_SLIDER FL_VERT_SLIDER
+
+forms_constructor(Fl_Slider, fl_add_slider)
+#define FL_SLIDER_COL1 FL_GRAY
+inline void fl_set_slider_value(Fl_Widget* o, double v) {
+ ((Fl_Slider*)o)->value(v);}
+inline double fl_get_slider_value(Fl_Widget* o) {
+ return ((Fl_Slider*)o)->value();}
+inline void fl_set_slider_bounds(Fl_Widget* o, double a, double b) {
+ ((Fl_Slider*)o)->range(a, b);}
+inline void fl_get_slider_bounds(Fl_Widget* o, float* a, float* b) {
+ *a = float(((Fl_Slider*)o)->minimum());
+ *b = float(((Fl_Slider*)o)->maximum());
+}
+inline void fl_set_slider_return(Fl_Widget* o, int i) {
+ ((Fl_Slider*)o)->when(i|FL_WHEN_RELEASE);}
+inline void fl_set_slider_step(Fl_Widget* o, double v) {
+ ((Fl_Slider*)o)->step(v);}
+// inline void fl_set_slider_increment(Fl_Widget* o, double v, double);
+inline void fl_set_slider_size(Fl_Widget* o, double v) {
+ ((Fl_Slider*)o)->slider_size(v);}
+
+#include <fltk/Fl_Value_Slider.h>
+forms_constructor(Fl_Value_Slider, fl_add_valslider)
+
+inline void fl_set_slider_precision(Fl_Widget* o, int i) {
+ double v = 1.0;
+ while (i--) v /= 10.0;
+ ((Fl_Value_Slider*)o)->step(v);
+}
+
+// The forms text object was the same as an Fl_Box except it inverted the
+// meaning of FL_ALIGN_INSIDE. Implementation in forms.C
+class FL_FORMS_API Fl_FormsText : public Fl_Widget {
+protected:
+ void draw();
+public:
+ Fl_FormsText(Fl_Boxtype b, int x, int y, int w, int h, const char* l=0)
+ : Fl_Widget(x,y,w,h,l) {box(b); clear_flag(FL_ALIGN_MASK); set_flag(FL_ALIGN_LEFT);}
+};
+#define FL_NORMAL_TEXT FL_NO_BOX
+forms_constructorb(Fl_FormsText, fl_add_text)
+
+#include "Fl_Timer.h"
+forms_constructort(Fl_Timer, fl_add_timer)
+inline void fl_set_timer(Fl_Widget* o, double v) {((Fl_Timer*)o)->value(v);}
+inline double fl_get_timer(Fl_Widget* o) {return ((Fl_Timer*)o)->value();}
+inline void fl_suspend_timer(Fl_Widget* o) {((Fl_Timer*)o)->suspended(1);}
+inline void fl_resume_timer(Fl_Widget* o) {((Fl_Timer*)o)->suspended(0);}
+inline void fl_set_timer_countup(Fl_Widget* o,char d) {((Fl_Timer*)o)->direction(d);}
+FL_FORMS_API void fl_gettime(long* sec, long* usec);
+
+// Fl_XYPlot nyi
+
+
+// stuff from DDForms:
+
+inline int fl_double_click() {return Fl::event_clicks();}
+inline void fl_draw() {Fl::flush();}
+
+#endif /* define __FORMS_H__ */
+
+//
+// End of "$Id: forms.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/gl.h
===================================================================
--- branches/branch-3.0/fltk/gl.h (rev 0)
+++ branches/branch-3.0/fltk/gl.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,114 @@
+// "$Id: gl.h 6233 2008-09-14 07:54:06Z spitzak $"
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// You must include this instead of GL/gl.h to get the Microsoft
+// APIENTRY stuff included (from <windows.h>) prior to the OpenGL
+// header files.
+//
+// This file also provides "missing" OpenGL functions, and
+// gl_start() and gl_finish() to allow OpenGL to be used in any window
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+/*! \file
+ Portably include the OpenGL header files, and define a few OpenGL
+ drawing functions provided by fltk. You may want to use the
+ OpenGL Extension Wrangler (glew), which will make it much easier
+ to call modern OpenGL extensions. If so, include glew.h before
+ this file, or define USE_GLEW to 1 before including this.
+*/
+
+#ifndef gl_draw_H
+#define gl_draw_H
+
+#ifndef DOXYGEN
+#include "Color.h"
+#include "Flags.h"
+
+#if USE_GLEW
+# include <GL/glew.h>
+#elif defined(__GLEW_H__)
+ /* do nothing if they included glew.h */
+#else
+
+# define GL_GLEXT_PROTOTYPES 1
+# ifdef _WIN32
+# include <windows.h>
+# undef OPAQUE
+# undef DELETE
+# undef ERROR
+# undef IN
+# undef OUT
+# undef POINT
+# undef far
+# undef max
+# undef min
+# undef near
+# include <GL/gl.h>
+# elif defined(__APPLE__)
+# ifndef APIENTRY
+# define APIENTRY
+# endif
+# include <OpenGL/gl.h>
+# else
+# include <GL/gl.h>
+# endif
+
+# if !defined(GL_VERSION_1_4) || defined(DOXYGEN)
+FL_GL_API void glWindowPos2i(int x, int y);
+# endif
+
+#endif
+#endif
+
+namespace fltk {
+
+struct Font;
+
+/// \name fltk/gl.h
+//@{
+
+FL_GL_API void glstart();
+FL_GL_API void glfinish();
+
+FL_GL_API void glsetcolor(Color);
+
+FL_GL_API void glstrokerect(int x,int y,int w,int h);
+inline void glfillrect(int x,int y,int w,int h) {glRecti(x,y,x+w,y+h);}
+
+FL_GL_API void glsetfont(Font* f, float size);
+FL_GL_API float glgetascent();
+FL_GL_API float glgetdescent();
+FL_GL_API float glgetwidth(const char *);
+FL_GL_API float glgetwidth(const char *, int n);
+
+FL_GL_API void gldrawtext(const char*);
+FL_GL_API void gldrawtext(const char*, int n);
+FL_GL_API void gldrawtext(const char*, float x, float y, float z = 0);
+FL_GL_API void gldrawtext(const char*, int n, float x, float y, float z = 0);
+
+FL_GL_API void gldrawimage(const uchar *, int x,int y,int w,int h, int d=3, int ld=0);
+
+//@}
+
+}
+#endif
+
+//
+// End of "$Id: gl.h 6233 2008-09-14 07:54:06Z spitzak $".
+//
Added: branches/branch-3.0/fltk/gl2opengl.h
===================================================================
--- branches/branch-3.0/fltk/gl2opengl.h (rev 0)
+++ branches/branch-3.0/fltk/gl2opengl.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,35 @@
+/* gl.h
+
+ GL to OpenGL translator.
+ If you include this, you might be able to port old GL programs.
+ There are also much better emulators available on the net.
+
+*/
+
+#include <fltk/gl.h>
+#include "gl_draw.h"
+
+inline void clear() {glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);}
+#define RGBcolor(r,g,b) glColor3ub(r,g,b)
+#define bgnline() glBegin(GL_LINE_STRIP)
+#define bgnpolygon() glBegin(GL_POLYGON)
+#define bgnclosedline() glBegin(GL_LINE_LOOP)
+#define endline() glEnd()
+#define endpolygon() glEnd()
+#define endclosedline() glEnd()
+#define v2f(v) glVertex2fv(v)
+#define v2s(v) glVertex2sv(v)
+#define cmov(x,y,z) glRasterPos3f(x,y,z)
+#define charstr(s) gl_draw(s)
+#define fmprstr(s) gl_draw(s)
+typedef float Matrix[4][4];
+inline void pushmatrix() {glPushMatrix();}
+inline void popmatrix() {glPopMatrix();}
+inline void multmatrix(Matrix m) {glMultMatrixf((float *)m);}
+inline void color(int n) {glIndexi(n);}
+inline void rect(int x,int y,int r,int t) {gl_rect(x,y,r-x,t-y);}
+inline void rectf(int x,int y,int r,int t) {glRectf(x,y,r+1,t+1);}
+inline void recti(int x,int y,int r,int t) {gl_rect(x,y,r-x,t-y);}
+inline void rectfi(int x,int y,int r,int t) {glRecti(x,y,r+1,t+1);}
+inline void rects(int x,int y,int r,int t) {gl_rect(x,y,r-x,t-y);}
+inline void rectfs(int x,int y,int r,int t) {glRects(x,y,r+1,t+1);}
Added: branches/branch-3.0/fltk/glut.h
===================================================================
--- branches/branch-3.0/fltk/glut.h (rev 0)
+++ branches/branch-3.0/fltk/glut.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,490 @@
+//
+// "$Id: glut.h 6521 2008-11-12 20:49:58Z spitzak $"
+//
+// GLUT emulation header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+// Emulation of GLUT using fltk.
+
+// GLUT is Copyright (c) Mark J. Kilgard, 1994, 1995, 1996:
+// "This program is freely distributable without licensing fees and is
+// provided without guarantee or warrantee expressed or implied. This
+// program is -not- in the public domain."
+
+// Although I have copied the GLUT API, none of my code is based on
+// any GLUT implementation details and is therefore covered by the LGPL.
+
+// FLTK does not include the GLUT drawing functions (such as
+// glutWireTeapot()) or the stroke fonts but the declarations for the
+// drawing functions are included here because otherwise there is no
+// way to get them along with this. To use them you will have to
+// link in the original GLUT library, put -lglut *after* -lfltk2.
+
+// Commented out lines indicate parts of GLUT that are not emulated.
+
+#ifndef __glut_h__
+# define __glut_h__
+
+# include "gl.h"
+
+////////////////////////////////////////////////////////////////
+// GLUT is emulated using this window class and these static variables
+// (plus several more static variables hidden in glut.C):
+
+# include <fltk/run.h>
+# include <fltk/events.h>
+# include <fltk/GlWindow.h>
+# include <fltk/Cursor.h>
+# include <fltk/visual.h>
+
+namespace fltk {
+
+ class FL_GLUT_API GlutWindow : public fltk::GlWindow {
+ void _init();
+ int mouse_down;
+ protected:
+ void draw();
+ void draw_overlay();
+ int handle(int);
+ public: // so the inline functions work
+ int number;
+ int menu[3];
+ void make_current();
+ void (*display)();
+ void (*overlaydisplay)();
+ void (*reshape)(int w, int h);
+ void (*keyboard)(uchar, int x, int y);
+ void (*mouse)(int b, int state, int x, int y);
+ void (*motion)(int x, int y);
+ void (*passivemotion)(int x, int y);
+ void (*entry)(int);
+ void (*visibility)(int);
+ void (*special)(int, int x, int y);
+ GlutWindow(int w, int h, const char *);
+ GlutWindow(int x, int y, int w, int h, const char *);
+ ~GlutWindow();
+ };
+}
+
+extern FL_GLUT_API fltk::GlutWindow *glut_window; // the current window
+extern FL_GLUT_API int glut_menu; // the current menu
+
+// function pointers that are not per-window:
+extern FL_GLUT_API void (*glut_idle_function)();
+extern FL_GLUT_API void (*glut_menustate_function)(int);
+extern FL_GLUT_API void (*glut_menustatus_function)(int,int,int);
+
+////////////////////////////////////////////////////////////////
+
+//# define GLUT_API_VERSION This does not match any version of GLUT exactly...
+
+FL_GLUT_API void glutInit(int *argcp, char **argv); // creates first window
+
+FL_GLUT_API void glutInitDisplayMode(unsigned int mode);
+enum {
+ GLUT_RGB = fltk::RGB_COLOR,
+ GLUT_RGBA = fltk::RGB_COLOR,
+ GLUT_INDEX = fltk::INDEXED_COLOR,
+ GLUT_SINGLE = fltk::SINGLE_BUFFER,
+ GLUT_DOUBLE = fltk::DOUBLE_BUFFER,
+ GLUT_ACCUM = fltk::ACCUM_BUFFER,
+ GLUT_ALPHA = fltk::ALPHA_BUFFER,
+ GLUT_DEPTH = fltk::DEPTH_BUFFER,
+ GLUT_STENCIL = fltk::STENCIL_BUFFER,
+ GLUT_MULTISAMPLE = fltk::MULTISAMPLE,
+ GLUT_STEREO = fltk::STEREO
+//GLUT_LUMINANCE = 512
+};
+
+FL_GLUT_API void glutInitWindowPosition(int x, int y);
+
+FL_GLUT_API void glutInitWindowSize(int w, int h);
+
+FL_GLUT_API void glutMainLoop();
+
+FL_GLUT_API int glutCreateWindow(const char *title);
+
+FL_GLUT_API int glutCreateSubWindow(int win, int x, int y, int width, int height);
+
+FL_GLUT_API void glutDestroyWindow(int win);
+
+inline void glutPostRedisplay() {glut_window->redraw();}
+
+FL_GLUT_API void glutPostWindowRedisplay(int win);
+
+FL_GLUT_API void glutSwapBuffers();
+
+inline int glutGetWindow() {return glut_window->number;}
+
+FL_GLUT_API void glutSetWindow(int win);
+
+inline void glutSetWindowTitle(const char *t) {glut_window->label(t);}
+
+inline void glutSetIconTitle(const char *t) {glut_window->iconlabel(t);}
+
+inline void glutPositionWindow(int x, int y) {glut_window->position(x,y);}
+
+inline void glutReshapeWindow(int w, int h) {glut_window->resize(w,h);}
+
+inline void glutPopWindow() {glut_window->show();}
+
+//inline void glutPushWindow();
+
+inline void glutIconifyWindow() {glut_window->iconize();}
+
+inline void glutShowWindow() {glut_window->show();}
+
+inline void glutHideWindow() {glut_window->hide();}
+
+inline void glutFullScreen() {glut_window->fullscreen();}
+
+inline void glutSetCursor(fltk::Cursor* cursor) {glut_window->cursor(cursor);}
+// notice that the numeric values are different than glut:
+
+//#define GLUT_CURSOR_RIGHT_ARROW
+//#define GLUT_CURSOR_LEFT_ARROW
+#define GLUT_CURSOR_INFO fltk::CURSOR_HAND
+//#define GLUT_CURSOR_DESTROY
+#define GLUT_CURSOR_HELP fltk::CURSOR_HELP
+//#define GLUT_CURSOR_CYCLE
+//#define GLUT_CURSOR_SPRAY
+#define GLUT_CURSOR_WAIT fltk::CURSOR_WAIT
+#define GLUT_CURSOR_TEXT fltk::CURSOR_INSERT
+#define GLUT_CURSOR_CROSSHAIR fltk::CURSOR_CROSS
+#define GLUT_CURSOR_UP_DOWN fltk::CURSOR_NS
+#define GLUT_CURSOR_TOP_SIDE fltk::CURSOR_NS
+#define GLUT_CURSOR_BOTTOM_SIDE fltk::CURSOR_NS
+#define GLUT_CURSOR_LEFT_RIGHT fltk::CURSOR_WE
+#define GLUT_CURSOR_LEFT_SIDE fltk::CURSOR_WE
+#define GLUT_CURSOR_RIGHT_SIDE fltk::CURSOR_WE
+#define GLUT_CURSOR_TOP_LEFT_CORNER fltk::CURSOR_NWSE
+#define GLUT_CURSOR_TOP_RIGHT_CORNER fltk::CURSOR_NESW
+#define GLUT_CURSOR_BOTTOM_RIGHT_CORNER fltk::CURSOR_NWSE
+#define GLUT_CURSOR_BOTTOM_LEFT_CORNER fltk::CURSOR_NESW
+#define GLUT_CURSOR_INHERIT fltk::CURSOR_DEFAULT
+#define GLUT_CURSOR_NONE fltk::CURSOR_NONE
+#define GLUT_CURSOR_FULL_CROSSHAIR fltk::CURSOR_CROSS
+//inline void glutWarpPointer(int x, int y);
+
+inline void glutEstablishOverlay() {glut_window->make_overlay_current();}
+
+inline void glutRemoveOverlay() {glut_window->hide_overlay();}
+
+inline void glutUseLayer(GLenum layer) {
+ layer ? glut_window->make_overlay_current() : glut_window->make_current();}
+enum {GLUT_NORMAL, GLUT_OVERLAY};
+
+inline void glutPostOverlayRedisplay() {glut_window->redraw_overlay();}
+
+inline void glutShowOverlay() {glut_window->redraw_overlay();}
+
+inline void glutHideOverlay() {glut_window->hide_overlay();}
+
+FL_GLUT_API int glutCreateMenu(void (*)(int));
+
+FL_GLUT_API void glutDestroyMenu(int menu);
+
+inline int glutGetMenu() {return glut_menu;}
+
+inline void glutSetMenu(int m) {glut_menu = m;}
+
+FL_GLUT_API void glutAddMenuEntry(const char *label, int value);
+
+FL_GLUT_API void glutAddSubMenu(const char *label, int submenu);
+
+FL_GLUT_API void glutChangeToMenuEntry(int item, const char *label, int value);
+
+FL_GLUT_API void glutChangeToSubMenu(int item, const char *label, int submenu);
+
+FL_GLUT_API void glutRemoveMenuItem(int item);
+
+inline void glutAttachMenu(int b) {glut_window->menu[b] = glut_menu;}
+
+inline void glutDetachMenu(int b) {glut_window->menu[b] = 0;}
+
+inline void glutDisplayFunc(void (*f)()) {glut_window->display = f;}
+
+inline void glutReshapeFunc(void (*f)(int w, int h)) {glut_window->reshape=f;}
+
+inline void glutKeyboardFunc(void (*f)(uchar key, int x, int y)) {
+ glut_window->keyboard = f;}
+
+inline void glutMouseFunc(void (*f)(int b, int state, int x, int y)) {
+ glut_window->mouse = f;}
+enum {
+ GLUT_LEFT_BUTTON = 0,
+ GLUT_MIDDLE_BUTTON = 1,
+ GLUT_RIGHT_BUTTON = 2,
+ GLUT_DOWN = 0,
+ GLUT_UP = 1
+};
+
+inline void glutMotionFunc(void (*f)(int x, int y)) {glut_window->motion= f;}
+
+inline void glutPassiveMotionFunc(void (*f)(int x, int y)) {
+ glut_window->passivemotion= f;}
+
+inline void glutEntryFunc(void (*f)(int s)) {glut_window->entry = f;}
+enum {GLUT_LEFT, GLUT_ENTERED};
+
+inline void glutVisibilityFunc(void (*f)(int s)) {glut_window->visibility=f;}
+enum {GLUT_NOT_VISIBLE, GLUT_VISIBLE};
+
+FL_GLUT_API void glutIdleFunc(void (*f)());
+
+// Warning: this cast may not work on all machines:
+inline void glutTimerFunc(unsigned int msec, void (*f)(int), int value) {
+ fltk::add_timeout(msec*.001f, (fltk::TimeoutHandler)f, (void *)value);
+}
+
+inline void glutMenuStateFunc(void (*f)(int state)) {
+ glut_menustate_function = f;}
+
+inline void glutMenuStatusFunc(void (*f)(int status, int x, int y)) {
+ glut_menustatus_function = f;}
+enum {GLUT_MENU_NOT_IN_USE, GLUT_MENU_IN_USE};
+
+inline void glutSpecialFunc(void (*f)(int key, int x, int y)) {
+ glut_window->special = f;}
+enum {
+ GLUT_KEY_F1 = 1,
+ GLUT_KEY_F2 = 2,
+ GLUT_KEY_F3 = 3,
+ GLUT_KEY_F4 = 4,
+ GLUT_KEY_F5 = 5,
+ GLUT_KEY_F6 = 6,
+ GLUT_KEY_F7 = 7,
+ GLUT_KEY_F8 = 8,
+ GLUT_KEY_F9 = 9,
+ GLUT_KEY_F10 = 10,
+ GLUT_KEY_F11 = 11,
+ GLUT_KEY_F12 = 12,
+// WARNING: Different values than Glut uses:
+ GLUT_KEY_LEFT = fltk::LeftKey,
+ GLUT_KEY_UP = fltk::UpKey,
+ GLUT_KEY_RIGHT = fltk::RightKey,
+ GLUT_KEY_DOWN = fltk::DownKey,
+ GLUT_KEY_PAGE_UP = fltk::PageUpKey,
+ GLUT_KEY_PAGE_DOWN = fltk::PageDownKey,
+ GLUT_KEY_HOME = fltk::HomeKey,
+ GLUT_KEY_END = fltk::EndKey,
+ GLUT_KEY_INSERT = fltk::InsertKey
+};
+//inline void glutSpaceballMotionFunc(void (*)(int x, int y, int z));
+
+//inline void glutSpaceballRotateFunc(void (*)(int x, int y, int z));
+
+//inline void glutSpaceballButtonFunc(void (*)(int button, int state));
+
+//inline void glutButtonBoxFunc(void (*)(int button, int state));
+
+//inline void glutDialsFunc(void (*)(int dial, int value));
+
+//inline void glutTabletMotionFunc(void (*)(int x, int y));
+
+//inline void glutTabletButtonFunc(void (*)(int button, int state, int x, int y));
+
+inline void glutOverlayDisplayFunc(void (*f)()) {
+ glut_window->overlaydisplay = f;}
+
+//inline void glutWindowStatusFunc(void (*)(int state));
+//enum {GLUT_HIDDEN, GLUT_FULLY_RETAINED, GLUT_PARTIALLY_RETAINED,
+// GLUT_FULLY_COVERED};
+
+//inline void glutSetColor(int, GLfloat red, GLfloat green, GLfloat blue);
+
+//inline GLfloat glutGetColor(int ndx, int component);
+//#define GLUT_RED 0
+//#define GLUT_GREEN 1
+//#define GLUT_BLUE 2
+
+//inline void glutCopyColormap(int win);
+
+// Warning: values are changed from GLUT!
+// Also relies on the GL_ symbols having values greater than 100
+int glutGet(GLenum type);
+enum {
+ GLUT_RETURN_ZERO = 0,
+ GLUT_WINDOW_X,
+ GLUT_WINDOW_Y,
+ GLUT_WINDOW_WIDTH,
+ GLUT_WINDOW_HEIGHT,
+ GLUT_WINDOW_PARENT,
+//GLUT_WINDOW_NUM_CHILDREN,
+//GLUT_WINDOW_CURSOR,
+ GLUT_SCREEN_WIDTH,
+ GLUT_SCREEN_HEIGHT,
+//GLUT_SCREEN_WIDTH_MM,
+//GLUT_SCREEN_HEIGHT_MM,
+ GLUT_MENU_NUM_ITEMS,
+ GLUT_DISPLAY_MODE_POSSIBLE,
+ GLUT_INIT_WINDOW_X,
+ GLUT_INIT_WINDOW_Y,
+ GLUT_INIT_WINDOW_WIDTH,
+ GLUT_INIT_WINDOW_HEIGHT,
+ GLUT_INIT_DISPLAY_MODE,
+//GLUT_ELAPSED_TIME,
+ GLUT_WINDOW_BUFFER_SIZE
+};
+
+# define GLUT_WINDOW_STENCIL_SIZE GL_STENCIL_BITS
+# define GLUT_WINDOW_DEPTH_SIZE GL_DEPTH_BITS
+# define GLUT_WINDOW_RED_SIZE GL_RED_BITS
+# define GLUT_WINDOW_GREEN_SIZE GL_GREEN_BITS
+# define GLUT_WINDOW_BLUE_SIZE GL_BLUE_BITS
+# define GLUT_WINDOW_ALPHA_SIZE GL_ALPHA_BITS
+# define GLUT_WINDOW_ACCUM_RED_SIZE GL_ACCUM_RED_BITS
+# define GLUT_WINDOW_ACCUM_GREEN_SIZE GL_ACCUM_GREEN_BITS
+# define GLUT_WINDOW_ACCUM_BLUE_SIZE GL_ACCUM_BLUE_BITS
+# define GLUT_WINDOW_ACCUM_ALPHA_SIZE GL_ACCUM_ALPHA_BITS
+# define GLUT_WINDOW_DOUBLEBUFFER GL_DOUBLEBUFFER
+# define GLUT_WINDOW_RGBA GL_RGBA
+# define GLUT_WINDOW_COLORMAP_SIZE GL_INDEX_BITS
+# ifdef GL_SAMPLES_SGIS
+# define GLUT_WINDOW_NUM_SAMPLES GL_SAMPLES_SGIS
+# else
+# define GLUT_WINDOW_NUM_SAMPLES GLUT_RETURN_ZERO
+# endif
+# define GLUT_WINDOW_STEREO GL_STEREO
+
+//int glutDeviceGet(GLenum type);
+//#define GLUT_HAS_KEYBOARD 600
+//#define GLUT_HAS_MOUSE 601
+//#define GLUT_HAS_SPACEBALL 602
+//#define GLUT_HAS_DIAL_AND_BUTTON_BOX 603
+//#define GLUT_HAS_TABLET 604
+//#define GLUT_NUM_MOUSE_BUTTONS 605
+//#define GLUT_NUM_SPACEBALL_BUTTONS 606
+//#define GLUT_NUM_BUTTON_BOX_BUTTONS 607
+//#define GLUT_NUM_DIALS 608
+//#define GLUT_NUM_TABLET_BUTTONS 609
+
+// WARNING: these values are different than Glut uses:
+enum {
+ GLUT_ACTIVE_SHIFT = fltk::SHIFT,
+ GLUT_ACTIVE_CTRL = fltk::CTRL,
+ GLUT_ACTIVE_ALT = fltk::ALT
+};
+inline int glutGetModifiers() {return fltk::event_state() & (GLUT_ACTIVE_SHIFT | GLUT_ACTIVE_CTRL | GLUT_ACTIVE_ALT);}
+
+int glutLayerGet(GLenum);
+# define GLUT_OVERLAY_POSSIBLE 800
+//#define GLUT_LAYER_IN_USE 801
+//#define GLUT_HAS_OVERLAY 802
+# define GLUT_TRANSPARENT_INDEX 803
+# define GLUT_NORMAL_DAMAGED 804
+# define GLUT_OVERLAY_DAMAGED 805
+
+//inline int glutVideoResizeGet(GLenum param);
+//#define GLUT_VIDEO_RESIZE_POSSIBLE 900
+//#define GLUT_VIDEO_RESIZE_IN_USE 901
+//#define GLUT_VIDEO_RESIZE_X_DELTA 902
+//#define GLUT_VIDEO_RESIZE_Y_DELTA 903
+//#define GLUT_VIDEO_RESIZE_WIDTH_DELTA 904
+//#define GLUT_VIDEO_RESIZE_HEIGHT_DELTA 905
+//#define GLUT_VIDEO_RESIZE_X 906
+//#define GLUT_VIDEO_RESIZE_Y 907
+//#define GLUT_VIDEO_RESIZE_WIDTH 908
+//#define GLUT_VIDEO_RESIZE_HEIGHT 909
+
+//inline void glutSetupVideoResizing();
+
+//inline void glutStopVideoResizing();
+
+//inline void glutVideoResize(int x, int y, int width, int height);
+
+//inline void glutVideoPan(int x, int y, int width, int height);
+
+////////////////////////////////////////////////////////////////
+// Emulated GLUT drawing functions:
+
+// Font argument must be a void* for compatability, so...
+extern FL_GLUT_API struct Glut_Bitmap_Font {fltk::Font* font; int size;}
+ glutBitmap9By15, glutBitmap8By13, glutBitmapTimesRoman10,
+ glutBitmapTimesRoman24, glutBitmapHelvetica10, glutBitmapHelvetica12,
+ glutBitmapHelvetica18;
+# define GLUT_BITMAP_9_BY_15 (&glutBitmap9By15)
+# define GLUT_BITMAP_8_BY_13 (&glutBitmap8By13)
+# define GLUT_BITMAP_TIMES_ROMAN_10 (&glutBitmapTimesRoman10)
+# define GLUT_BITMAP_TIMES_ROMAN_24 (&glutBitmapTimesRoman24)
+# define GLUT_BITMAP_HELVETICA_10 (&glutBitmapHelvetica10)
+# define GLUT_BITMAP_HELVETICA_12 (&glutBitmapHelvetica12)
+# define GLUT_BITMAP_HELVETICA_18 (&glutBitmapHelvetica18)
+
+FL_GLUT_API void glutBitmapCharacter(void *font, int character);
+FL_GLUT_API int glutBitmapWidth(void *font, int character);
+FL_GLUT_API int glutBitmapLength(void *font, const unsigned char* string);
+
+////////////////////////////////////////////////////////////////
+// GLUT drawing functions. These are NOT emulated but you can
+// link in the glut library to get them. This assumes the object
+// files in GLUT remain as they currently are so that there are
+// not symbol conflicts with the above.
+
+extern "C" {
+
+extern int APIENTRY glutExtensionSupported(char *name);
+
+/* Stroke font constants (use these in GLUT program). */
+# ifdef WIN32
+# define GLUT_STROKE_ROMAN ((void*)0)
+# define GLUT_STROKE_MONO_ROMAN ((void*)1)
+# else
+extern void *glutStrokeRoman;
+# define GLUT_STROKE_ROMAN (&glutStrokeRoman)
+extern void *glutStrokeMonoRoman;
+# define GLUT_STROKE_MONO_ROMAN (&glutStrokeMonoRoman)
+# endif
+
+/* GLUT font sub-API */
+extern void APIENTRY glutStrokeCharacter(void *font, int character);
+extern int APIENTRY glutStrokeWidth(void *font, int character);
+
+/* GLUT pre-built models sub-API */
+extern void APIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks);
+extern void APIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);
+extern void APIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
+extern void APIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
+extern void APIENTRY glutWireCube(GLdouble size);
+extern void APIENTRY glutSolidCube(GLdouble size);
+extern void APIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
+extern void APIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
+extern void APIENTRY glutWireDodecahedron();
+extern void APIENTRY glutSolidDodecahedron();
+extern void APIENTRY glutWireTeapot(GLdouble size);
+extern void APIENTRY glutSolidTeapot(GLdouble size);
+extern void APIENTRY glutWireOctahedron();
+extern void APIENTRY glutSolidOctahedron();
+extern void APIENTRY glutWireTetrahedron();
+extern void APIENTRY glutSolidTetrahedron();
+extern void APIENTRY glutWireIcosahedron();
+extern void APIENTRY glutSolidIcosahedron();
+
+}
+
+#endif /* !__glut_h__ */
+
+//
+// End of "$Id: glut.h 6521 2008-11-12 20:49:58Z spitzak $".
+//
Added: branches/branch-3.0/fltk/layout.h
===================================================================
--- branches/branch-3.0/fltk/layout.h (rev 0)
+++ branches/branch-3.0/fltk/layout.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,41 @@
+#ifndef fltk_layout_h
+#define fltk_layout_h
+
+namespace fltk {
+
+/*!
+ Values of the bits stored in Widget::layout_damage().
+
+ When a widget resized or moved (or when it is initially created),
+ flags are set in Widget::layout_damage() to indicate the layout is
+ damaged. This will cause the virtual function Widget::layout() to be
+ called just before fltk attempts to draw the windows on the screen.
+ This is useful because often calculating the new layout is quite
+ expensive, this expense is now deferred until the user will actually
+ see the new size.
+
+ Some Group widgets such as fltk::PackedGroup will also use the
+ virtual Widget::layout() function to find out how big a widget
+ should be. A Widget is allowed to change it's own dimensions in
+ layout() (except it is not allowed to change it if called a second
+ time with no changes other than it's x/y position). This allows
+ widgets to resize to fit their contents.
+
+ The layout bits are turned on by calling Widget::relayout().
+*/
+enum {
+ LAYOUT_X = 0x01, /*!< Widget::x() changed by resize() */
+ LAYOUT_Y = 0x02, /*!< Widget::y() changed by resize() */
+ LAYOUT_XY = 0x03, /*!< Same as LAYOUT_X|LAYOUT_Y */
+ LAYOUT_W = 0x04, /*!< Widget::w() changed by resize() */
+ LAYOUT_H = 0x08, /*!< Widget::h() changed by resize() */
+ LAYOUT_WH = 0x0C, /*!< Same as LAYOUT_W|LAYOUT_H */
+ LAYOUT_XYWH = 0x0F, /*!< Same as LAYOUT_XY|LAYOUT_WH */
+ LAYOUT_CHILD = 0x10, /*!< Widget::layout() needs to be called on a child of this group widget. */
+ LAYOUT_USER = 0x20, /*!< The moving/resizing is being caused by the user and not internal code. */
+ LAYOUT_DAMAGE = 0x80 /*!< Widget::relayout() was called. */
+};
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/load_plugin.h
===================================================================
--- branches/branch-3.0/fltk/load_plugin.h (rev 0)
+++ branches/branch-3.0/fltk/load_plugin.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,14 @@
+/*! \file
+ This is a convienence function for portable loading of a plugin
+ and possibly returing a symbol in that plugin. The function is
+ \e not in the fltk namespace!
+*/
+
+#ifndef fl_load_plugin_h
+#define fl_load_plugin_h
+
+#include "FL_API.h"
+
+FL_API void* load_plugin(const char* name, const char* symbol);
+
+#endif
Added: branches/branch-3.0/fltk/mac.r
===================================================================
--- branches/branch-3.0/fltk/mac.r (rev 0)
+++ branches/branch-3.0/fltk/mac.r 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,13 @@
+data 'MBAR' (128) {
+ $"0001 0080" /* ...x */
+};
+
+data 'MENU' (128, "Apple") {
+ $"0080 0000 0000 0000 0000 FFFF FFFB 0114" /* .x........xxxx.. */
+ $"0A41 626F 7574 2046 4C54 4B00 0000 0001" /* xAbout FLTK..... */
+ $"2D00 0000 0000" /* -..... */
+};
+
+data 'carb' (0) {
+};
+
Added: branches/branch-3.0/fltk/math.h
===================================================================
--- branches/branch-3.0/fltk/math.h (rev 0)
+++ branches/branch-3.0/fltk/math.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,92 @@
+//
+// "$Id: math.h 4886 2006-03-30 09:55:32Z fabien $"
+//
+// The purpose of this header file is to make math.h look the same as
+// Unix on other operating systems.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fl_math_h
+#define fl_math_h
+
+#include <math.h>
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+/* things missing from <math.h> on Windows: */
+# include <float.h>
+
+# ifndef M_PI
+# define M_PI 3.14159265358979323846
+# define M_PI_2 1.57079632679489661923
+# define M_PI_4 0.78539816339744830962
+# define M_1_PI 0.31830988618379067154
+# define M_2_PI 0.63661977236758134308
+# define M_SQRT2 1.41421356237309504880
+# define M_SQRT1_2 0.70710678118654752440
+# endif
+
+# define rint(v) floor((v)+.5)
+# define copysign _copysign
+# define drand48() ((double)rand()/RAND_MAX)
+# define srand48(n) srand((n));
+
+#endif
+
+#ifdef __EMX__
+# include <float.h>
+#endif
+
+// define missing 'f' versions of functions:
+#if 1 // All systems seem to be missing rintf:
+# define rintf(v) floorf((v)+.5f)
+#endif
+#if defined(__APPLE__) || defined(__sun__) || defined(__BORLANDC__)
+# define floorf(a) ((float)floor(a))
+# define ceilf(a) ((float)ceil(a))
+# define fmodf(a,b) ((float)fmod(a,b))
+# undef fabsf
+# define fabsf(a) ((float)fabs(a))
+# define sinf(a) ((float)sin(a))
+# define cosf(a) ((float)cos(a))
+# define tanf(a) ((float)tan(a))
+# define asinf(a) ((float)asin(a))
+# define acosf(a) ((float)acos(a))
+# define atanf(a) ((float)atan(a))
+# define atan2f(a,b) ((float)atan2(a,b))
+# define expf(a) ((float)exp(a))
+# define logf(a) ((float)log(a))
+# define log10f(a) ((float)log10(a))
+# undef sqrtf
+# define sqrtf(a) ((float)sqrt(a))
+#endif
+#ifdef __alpha // powf is broken on alphas, at least in gcc
+# define powf(a,b) ((float)pow(a,b))
+#endif
+#ifdef _WIN32
+# define expm1f(a) ((float)expm1(a))
+# define log1pf(a) ((float)log1p(a))
+#endif
+
+#endif
+
+//
+// End of "$Id: math.h 4886 2006-03-30 09:55:32Z fabien $".
+//
Added: branches/branch-3.0/fltk/osx.h
===================================================================
--- branches/branch-3.0/fltk/osx.h (rev 0)
+++ branches/branch-3.0/fltk/osx.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,147 @@
+// "$Id: osx.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+/** \file
+
+Declarations of FLTK symbols and interfaces that only exist if FLTK is
+compiled on Windows. It is recommended you avoid using this header
+file, and that you segregate code requiring it to it's own source
+file.
+
+FLTK is currently using the Carbon interface, and this includes
+the <Carbon/Carbon.h> header file. A macro is used to rename the
+Carbon "Style" as "XStyle" to avoid conflicts with FLTK. (all
+drawing is using Quartz, however!)
+
+Many of the functions have the same name and purpose as ones defined
+in x11.h, just with different return types. Due to how Doxygen works,
+the X version of these is described here.
+*/
+
+#ifndef fltk_osx_h
+#define fltk_osx_h
+
+# ifndef DOXYGEN
+// Standard MacOS Carbon API includes...
+# define Style XStyle
+# include <Carbon/Carbon.h>
+# undef Style
+
+// Now make some fixes to the headers...
+# undef check // Dunno where this comes from...
+# endif
+
+# include "draw.h"
+
+////////////////////////////////////////////////////////////////
+
+namespace fltk {
+
+/// \name fltk/osx.h
+//@{
+
+////////////////////////////////////////////////////////////////
+// constant information about the display:
+
+//extern FL_API void *qdisplay;
+extern FL_API void open_display();
+extern FL_API void close_display();
+extern FL_API WindowPtr quartz_window;
+extern FL_API CGContextRef quartz_gc;
+extern FL_API Handle system_menu;
+extern FL_API class SystemMenuBar *system_menu_bar;
+
+////////////////////////////////////////////////////////////////
+// event handling:
+
+// we want some way to access last message from system
+
+// Register a function to call when user opens a file in finder:
+extern void open_callback(void (*cb)(const char* name));
+
+////////////////////////////////////////////////////////////////
+// drawing functions:
+
+extern FL_API void clip_region(RgnHandle);
+extern FL_API RgnHandle clip_region();
+extern FL_API void draw_into(CGContextRef xid, int w, int h);
+extern FL_API void stop_drawing(CGImageRef xid);
+# define HFONT const char* // points at name of font!
+extern FL_API HFONT xfont();
+
+extern FL_API void clear_quartz_clipping();
+extern FL_API void begin_quartz_image(CGRect&, const Rectangle&);
+extern FL_API void end_quartz_image();
+
+////////////////////////////////////////////////////////////////
+# ifdef fltk_Window_h // only include this if <fltk/Window.h> was included
+
+// When fltk tells X about a window, one of these objects is created.
+// Warning: this object is highly subject to change! It's definition
+// is only here so that fltk::xid(Window) can be declared inline:
+
+class FL_API CreatedWindow {
+public:
+ WindowPtr xid; // used by main windows
+ Window* window;
+ RgnHandle region; // damage region
+ void expose(const Rectangle&);
+ CreatedWindow* next;
+ RgnHandle subRegion; // region which clips out children
+ CreatedWindow *children, *brother;
+ bool wait_for_expose;
+ bool need_new_subRegion;
+ bool overlay;
+ static CreatedWindow* first;
+ static CreatedWindow* find(const Window* window) {return window->i;}
+ static int borders(const Window* w, int& dx, int& dy, int& dw, int& dh);
+ // Quartz additions:
+ CGContextRef gc;
+};
+
+extern FL_API void fill_quartz_context();
+extern FL_API void release_quartz_context(CreatedWindow *x=0);
+
+// convert xid <-> Window:
+//inline WindowPtr xid(const Window*w) {return CreatedWindow::find(w)->xid;}
+WindowPtr xid(const Window*);
+Window* find(WindowPtr xid);
+
+extern CursPtr default_cursor;
+extern CursPtr current_cursor;
+extern const Widget* cursor_for;
+
+# endif //Fl_Window_H
+
+//@}
+
+}
+
+# if USE_CAIRO
+# include <fltk/fltk_cairo.h>
+# include <cairo-quartz.h>
+# else
+ typedef struct _cairo cairo_t;
+# endif
+
+#endif
+
+// End of "$Id: osx.h 6233 2008-09-14 07:54:06Z spitzak $".
Added: branches/branch-3.0/fltk/pnmImage.h
===================================================================
--- branches/branch-3.0/fltk/pnmImage.h (rev 0)
+++ branches/branch-3.0/fltk/pnmImage.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,45 @@
+// "$Id: pnmImage.h 4288 2005-04-16 00:13:17Z mike $"
+//
+// PNM image header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2005 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+#ifndef fltk_pnm_Image_h
+#define fltk_pnm_Image_h
+
+#include "SharedImage.h"
+
+namespace fltk {
+
+class FL_IMAGES_API pnmImage : public SharedImage {
+public:
+ pnmImage(const char* filename);
+ // virtual function overrides
+ bool fetch();
+};
+
+}
+
+#endif
+
+// End of "$Id: pnmImage.h 4288 2005-04-16 00:13:17Z mike $".
Added: branches/branch-3.0/fltk/rgbImage.h
===================================================================
--- branches/branch-3.0/fltk/rgbImage.h (rev 0)
+++ branches/branch-3.0/fltk/rgbImage.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,50 @@
+//
+// "$Id: rgbImage.h 5568 2006-12-30 07:54:24Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+// This is an obsolete class from fltk2 development. All functionality
+// has been moved to the base Image class.
+
+#ifndef fltk_rgbImage_h
+#define fltk_rgbImage_h
+
+#include "Image.h"
+
+namespace fltk {
+
+class FL_API rgbImage : public Image {
+public:
+ //bool write_jpeg(const char *filename, int quality=75, int dpi=150);
+ rgbImage(const char* name=0) : Image(name) {}
+ rgbImage(const uchar* d, PixelType p, int W, int H) :
+ Image(d,p,W,H,fltk::depth(p)*W) {}
+ rgbImage(const uchar* d, PixelType p, int W, int H, int linedelta) :
+ Image(d,p,W,H,linedelta) {}
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: rgbImage.h 5568 2006-12-30 07:54:24Z spitzak $".
+//
Added: branches/branch-3.0/fltk/run.h
===================================================================
--- branches/branch-3.0/fltk/run.h (rev 0)
+++ branches/branch-3.0/fltk/run.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,93 @@
+// "$Id: run.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// The basic fltk runtime. Every program needs to call this somewhere.
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_run_h
+#define fltk_run_h
+
+#include "FL_API.h"
+#ifdef check
+# undef check
+#endif
+
+namespace fltk {
+
+/// \name fltk/run.h
+//@{
+
+FL_API void display(const char*);
+FL_API int arg(int, char**, int&);
+FL_API int args(int, char**, int&, int (*)(int,char**,int&) = 0);
+extern FL_API const char* const help;
+FL_API void args(int, char**);
+FL_API bool enable_tablet_events();
+
+FL_API int wait();
+FL_API int wait(float time);
+FL_API int check();
+FL_API int ready();
+FL_API int run();
+FL_API void flush();
+FL_API void redraw();
+extern FL_API int damage_;
+inline void damage(int d) {damage_ = d;}
+inline int damage() {return damage_;}
+
+/*! Type of function passed to add_timeout(), add_check(), and add_idle() */
+typedef void (*TimeoutHandler)(void*);
+
+FL_API double get_time_secs();
+
+FL_API void add_timeout(float t, TimeoutHandler, void* v = 0);
+FL_API void repeat_timeout(float t, TimeoutHandler,void* = 0);
+FL_API bool has_timeout(TimeoutHandler, void* = 0);
+FL_API void remove_timeout(TimeoutHandler, void* = 0);
+
+FL_API void add_check(TimeoutHandler, void* = 0);
+FL_API bool has_check(TimeoutHandler, void* = 0);
+FL_API void remove_check(TimeoutHandler, void* = 0);
+
+FL_API void add_idle(TimeoutHandler, void* = 0);
+FL_API bool has_idle(TimeoutHandler, void* = 0);
+FL_API void remove_idle(TimeoutHandler, void* = 0);
+
+// For back-compatability only:
+extern FL_API void (*idle)();
+inline void set_idle(void (*cb)()) {idle = cb;}
+
+/*! Type of function passed to add_fd() */
+typedef void (*FileHandler)(int fd, void*);
+enum {READ = 1, WRITE = 4, EXCEPT = 8};
+FL_API void add_fd(int fd, int when, FileHandler, void* =0);
+FL_API void add_fd(int fd, FileHandler, void* = 0);
+FL_API void remove_fd(int, int when = -1);
+
+FL_API void lock();
+FL_API void unlock();
+FL_API void awake(void* message = 0);
+FL_API void* thread_message();
+FL_API bool in_main_thread();
+
+//@}
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/show_colormap.h
===================================================================
--- branches/branch-3.0/fltk/show_colormap.h (rev 0)
+++ branches/branch-3.0/fltk/show_colormap.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,36 @@
+// "$Id: show_colormap.h 6233 2008-09-14 07:54:06Z spitzak $"
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_show_colormap_h
+#define fltk_show_colormap_h
+
+#include "FL_API.h"
+#include "Color.h"
+
+namespace fltk {
+FL_API Color show_colormap(Color oldcol);
+}
+
+#endif
+
+//
+// End of "$Id: show_colormap.h 6233 2008-09-14 07:54:06Z spitzak $".
+//
Added: branches/branch-3.0/fltk/string.h
===================================================================
--- branches/branch-3.0/fltk/string.h (rev 0)
+++ branches/branch-3.0/fltk/string.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,89 @@
+/* "$Id: string.h 5961 2007-10-17 20:54:58Z spitzak $"
+ *
+ * Copyright 1998-2006 by Bill Spitzak and others.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Please report all bugs and problems to "fltk-bugs@fltk.org".
+ */
+
+/*! \file
+
+ Provides definitions for C string manipulation functions so that
+ portable programs may be written. None of these functions are in
+ the fltk namespace.
+
+ In most cases the functions are provided by your operation system,
+ or are simple renames of operating system functions.
+
+ This file is designed to work on Windows, Linux, and BSD systems.
+ It may need to be edited to work on other systems. Please try
+ to do this by adding #if statements so this file remains portable.
+
+ Some versions of fltk wrote this file using autoconf. I never liked
+ this because I could not share the header file between systems, so
+ I have reverted to a constant version.
+*/
+
+#ifndef fltk_string_h
+#define fltk_string_h
+
+#ifndef DOXYGEN
+
+# include <string.h>
+# include <stdarg.h> /* for va_list */
+# include <stdio.h> /* for sprintf, vsprintf, snprintf and vsnprintf */
+
+/* Windows has equivalent functions, but being Microsoft they added
+ gratuitoius changes to the names to stop code from being portable: */
+#if (defined(_WIN32) && !defined(__CYGWIN__)) || defined(__EMX__)
+# define strcasecmp(s,t) _stricmp(s, t)
+# define strncasecmp(s,t,n) _strnicmp(s, t, n)
+# define vsnprintf _vsnprintf
+# define snprintf _snprintf
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#endif
+
+#include "FL_API.h"
+
+FL_API extern char* newstring(const char *);
+
+#if defined(DOXYGEN) || defined(__MWERKS__)
+FL_API extern int strcasecmp(const char *, const char *);
+FL_API extern int strncasecmp(const char *, const char *, size_t);
+#endif
+
+#if defined(DOXYGEN) || !defined(__linux) && !defined(_WIN32) && !defined(__FreeBSD__) && !defined(__APPLE__)
+FL_API extern int snprintf(char *, size_t, const char *, ...);
+FL_API extern int vsnprintf(char *, size_t, const char *, va_list ap);
+#endif
+
+#if defined(DOXYGEN) || !defined(__FreeBSD__) && !defined(__APPLE__)
+FL_API extern size_t strlcat(char *, const char *, size_t);
+FL_API extern size_t strlcpy(char *, const char *, size_t);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/*
+ * End of "$Id: string.h 5961 2007-10-17 20:54:58Z spitzak $".
+ */
Added: branches/branch-3.0/fltk/string.h.in
===================================================================
--- branches/branch-3.0/fltk/string.h.in (rev 0)
+++ branches/branch-3.0/fltk/string.h.in 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,130 @@
+/* "$Id: string.h.in 4115 2005-03-14 04:48:51Z spitzak $"
+ *
+ * Copyright 1998-2005 by Bill Spitzak and others.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Please report all bugs and problems to "fltk-bugs@fltk.org".
+ */
+
+/* This file was produced by the fltk configure script, and is thus
+ platform-specific. You may be able to use the unmodified string.h
+ included in the fltk source instead, it has different #if statements
+ to make it portable to the most popular platforms.
+*/
+
+#ifndef fltk_string_h
+#define fltk_string_h
+
+#undef HAVE_STRING_H
+#undef HAVE_STRINGS_H
+
+#undef HAVE_VSNPRINTF
+#undef HAVE_SNPRINTF
+#undef HAVE_STRCASECMP
+#undef HAVE_STRLCAT
+#undef HAVE_STRLCPY
+#undef HAVE_STRNCASECMP
+
+#include "FL_API.h"
+
+#ifdef HAVE_STRING_H
+# include <string.h>
+#elif defined(HAVE_STRINGS_H)
+# include <strings.h>
+#endif
+
+#if 1 /* for va_list */
+# include <stdarg.h>
+#endif
+
+#if 1 /* for sprintf, vsprintf, snprintf and vsnprintf */
+# include <stdio.h>
+#endif
+
+#if 0
+# include <stdlib.h>
+#endif
+
+#if 0
+# include <ctype.h>
+/* Unixware defines these macros in above header for the obsolete BSD
+ functions, get rid of them as it prevents you making a variable
+ named "index"! */
+# ifdef index
+# undef index
+# endif
+# ifdef rindex
+# undef rindex
+# endif
+#endif
+
+#if 0 /*defined(__MWERKS__)*/
+/* MetroWerks' CodeWarrior put some functions in <extras.h> but that
+ file does not play well with others, so we don't include it. */
+# include <extras.h>
+#endif
+
+/* Windows has equivalent functions, but being Microsoft they added
+ gratuitoius changes to the names to stop code from being portable: */
+#if (defined(_WIN32) && !defined(__CYGWIN__)) || defined(__EMX__)
+# define strcasecmp(s,t) stricmp(s, t)
+# define strncasecmp(s,t,n) strnicmp(s, t, n)
+# define vsnprintf _vsnprintf
+# define snprintf _snprintf
+#endif
+
+/*! \addtogroup utilities
+ \{ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+FL_API extern const char* newstring(const char *);
+
+#if defined(DOXYGEN) || !defined(HAVE_STRCASECMP)
+FL_API extern int strcasecmp(const char *, const char *);
+#endif
+
+#if defined(DOXYGEN) || !defined(HAVE_STRNCASECMP)
+FL_API extern int strncasecmp(const char *, const char *, size_t);
+#endif
+
+#if defined(DOXYGEN) || !defined(HAVE_SNPRINTF)
+FL_API extern int snprintf(char *, size_t, const char *, ...);
+#endif
+
+#if defined(DOXYGEN) || !defined(HAVE_VSNPRINTF)
+FL_API extern int vsnprintf(char *, size_t, const char *, va_list ap);
+#endif
+
+#if defined(DOXYGEN) || !defined(HAVE_STRLCAT)
+FL_API extern size_t strlcat(char *, const char *, size_t);
+#endif
+
+#if defined(DOXYGEN) || !defined(HAVE_STRLCPY)
+FL_API extern size_t strlcpy(char *, const char *, size_t);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+/*! \} */
+
+#endif
+
+/*
+ * End of "$Id: string.h.in 4115 2005-03-14 04:48:51Z spitzak $".
+ */
Added: branches/branch-3.0/fltk/utf.h
===================================================================
--- branches/branch-3.0/fltk/utf.h (rev 0)
+++ branches/branch-3.0/fltk/utf.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,54 @@
+/* "$Id: utf.h 5197 2006-06-14 07:43:46Z spitzak $"
+ *
+ * Copyright 1998-2006 by Bill Spitzak and others.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Please report all bugs and problems to "fltk-bugs@fltk.org".
+ */
+/*! \file
+ Functions to manipulate UTF-8 strings and convert from/to legacy
+ encodings. These functions are \e not in the fltk namespace.
+*/
+
+#ifndef fltk_utf_h
+#define fltk_utf_h
+
+#include "FL_API.h"
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+FL_API int utf8bytes(unsigned ucs);
+
+FL_API unsigned utf8decode(const char*, const char* end, int* len);
+FL_API int utf8encode(unsigned, char*);
+FL_API const char* utf8fwd(const char*, const char* start, const char* end);
+FL_API const char* utf8back(const char*, const char* start, const char* end);
+
+FL_API unsigned utf8towc(const char*, unsigned, wchar_t*, unsigned);
+FL_API unsigned utf8tomb(const char*, unsigned, char*, unsigned);
+FL_API unsigned utf8toa (const char*, unsigned, char*, unsigned);
+FL_API unsigned utf8fromwc(char*, unsigned, const wchar_t*, unsigned);
+FL_API unsigned utf8frommb(char*, unsigned, const char*, unsigned);
+FL_API unsigned utf8froma (char*, unsigned, const char*, unsigned);
+FL_API int utf8locale();
+FL_API int utf8test(const char*, unsigned);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
Added: branches/branch-3.0/fltk/visual.h
===================================================================
--- branches/branch-3.0/fltk/visual.h (rev 0)
+++ branches/branch-3.0/fltk/visual.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,56 @@
+// "$Id: visual.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+#ifndef fltk_visual_h
+#define fltk_visual_h
+
+#include "FL_API.h"
+
+namespace fltk {
+
+/// \name fltk/visual.h
+//@{
+
+enum {
+ RGB_COLOR = 0,
+ INDEXED_COLOR = 1,
+ SINGLE_BUFFER = 0,
+ DOUBLE_BUFFER = 2,
+ ACCUM_BUFFER = 4,
+ ALPHA_BUFFER = 8,
+ DEPTH_BUFFER = 16,
+ STENCIL_BUFFER= 32,
+ RGB24_COLOR = 64,
+ MULTISAMPLE = 128,
+ STEREO = 256
+};
+
+extern FL_API bool visual(int);
+
+extern FL_GL_API bool glVisual(int);
+
+extern FL_API void own_colormap();
+
+//@}
+
+}
+
+#endif
Added: branches/branch-3.0/fltk/win32.h
===================================================================
--- branches/branch-3.0/fltk/win32.h (rev 0)
+++ branches/branch-3.0/fltk/win32.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,195 @@
+// "$Id: win32.h 6233 2008-09-14 07:54:06Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+/** \file
+
+Declarations of FLTK symbols and interfaces that only exist if FLTK is
+compiled on Windows. It is recommended you avoid using this header
+file, and that you segregate code requiring it to it's own source
+file.
+
+This header includes the horrible <windows.h> header file, followed
+by a large list of undef's to get rid of name conflicts. It is recommended
+you use this if you need any windows functions rather than including
+that file directly.
+
+You can probably combine FLTK with other libraries that make their own
+WIN32 window classes. The easiest way is to call fltk::wait(), it
+will call DispatchMessage() for all messages to the other windows. If
+your other library insists on reading all the events, it will still
+work (as long as it calls DispatchMessage()), but you will
+have to arrange for the function fltk::flush() to be called regularily
+so that widgets are updated. Timeouts, the idle function, and file
+descriptor callbacks will not work in this case.
+
+Many of the functions have the same name and purpose as ones defined
+in x11.h, just with different return types. Due to how Doxygen works,
+the X version of these is described here.
+*/
+
+#if defined(_MSC_VER)
+# pragma once /* speeds up compilation */
+#endif
+
+#ifndef fltk_win32_h
+#define fltk_win32_h
+
+#ifndef DOXYGEN
+
+#ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN
+#endif
+
+# include <windows.h>
+# include <winuser.h>
+# undef DELETE
+# undef ERROR
+# undef IN
+# undef OPAQUE
+# undef OUT
+# undef POINT
+//#undef far
+# undef max
+# undef min
+//#undef near
+
+#if USE_CAIRO
+# include <fltk/fltk_cairo.h>
+# include <cairo-win32.h>
+#endif
+
+extern "C" {
+
+// Function pointer declarations
+// WAS: I suspect these can be put into win32/run.cxx!
+
+typedef HWND (WINAPI *pfCreateWindowExW)(DWORD dwExStyle, LPCWSTR lpClassName, LPCWSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam);
+typedef HMODULE (WINAPI *pfLoadLibraryW)(LPCWSTR lpFileName);
+typedef BOOL (WINAPI *pfPeekMessage)(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg);
+typedef BOOL (WINAPI *pfGetMessage)(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax);
+typedef LRESULT (WINAPI *pfDispatchMessage)(const MSG *lpmsg);
+typedef BOOL (WINAPI *pfSetWindowTextW)(HWND hWnd, LPCWSTR lpString);
+typedef LRESULT (WINAPI *pfDefWindowProc)(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
+typedef BOOL (WINAPI *pfPostMessage)(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
+typedef int (WINAPI *pfMessageBoxW)(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType);
+
+typedef HFONT (WINAPI *pfCreateFontIndirectW)(CONST LOGFONTW *);
+typedef BOOL (WINAPI *pfGetTextMetricsW)(HDC, LPTEXTMETRICW);
+
+extern pfCreateWindowExW __CreateWindowExW;
+extern pfLoadLibraryW __LoadLibraryW;
+extern pfPeekMessage __PeekMessage;
+extern pfGetMessage __GetMessage;
+extern pfDispatchMessage __DispatchMessage;
+extern pfSetWindowTextW __SetWindowTextW;
+extern pfDefWindowProc __DefWindowProc;
+extern pfPostMessage __PostMessage;
+extern pfMessageBoxW __MessageBoxW;
+
+extern pfCreateFontIndirectW __CreateFontIndirectW;
+extern pfGetTextMetricsW __GetTextMetricsW;
+
+}; /* extern "C" */
+#endif // !DOXYGEN
+
+#include "draw.h"
+
+namespace fltk {
+
+/// \name fltk/win32.h
+//@{
+
+////////////////////////////////////////////////////////////////
+// constant information about the display:
+
+extern FL_API void open_display();
+extern FL_API void close_display();
+extern FL_API HINSTANCE xdisplay;
+extern FL_API HPALETTE xpalette; // non-zero only on 8-bit displays!
+
+////////////////////////////////////////////////////////////////
+// event handling:
+
+extern FL_API MSG msg;
+
+////////////////////////////////////////////////////////////////
+// drawing functions:
+
+extern FL_API HDC dc;
+extern FL_API HDC getDC();
+extern FL_API HFONT xfont();
+extern FL_API TEXTMETRICW* textmetric();
+extern FL_API COLORREF current_xpixel;
+extern FL_API COLORREF xpixel(Color i);
+extern FL_API HPEN setpen();
+extern FL_API HBRUSH setbrush();
+extern FL_API void clip_region(HRGN);
+extern FL_API HRGN clip_region();
+
+extern FL_API void draw_into(HBITMAP, int w, int h);
+extern FL_API void stop_drawing(HBITMAP);
+extern FL_API void stop_drawing(HWND);
+
+////////////////////////////////////////////////////////////////
+#ifdef fltk_Window_h // only include this if <fltk/Fl_Window.h> was included
+
+// When fltk tells X about a window, one of these objects is created.
+// Warning: this object is highly subject to change! It's definition
+// is only here so that fl_xid can be declared inline:
+
+class FL_API CreatedWindow {
+public:
+ HWND xid;
+ HDC dc;
+ HBITMAP backbuffer;
+ HDC bdc;
+ Window* window;
+ HRGN region;
+ void expose(const Rectangle&);
+ CreatedWindow* next;
+ bool wait_for_expose;
+ bool backbuffer_bad; // used for XDBE
+ bool overlay; // true if redraw_overlay was called
+ HCURSOR cursor;
+ const Widget* cursor_for;
+ static CreatedWindow* first;
+ static CreatedWindow* find(const Window* window) {return window->i;}
+ void set_minmax(LPMINMAXINFO minmax);
+ static void create(Window*);
+};
+
+// convert xid <-> Window:
+inline HWND xid(const Window*w) {return CreatedWindow::find(w)->xid;}
+Window* find(HWND xid);
+
+extern FL_API HCURSOR default_cursor;
+
+#endif // Fl_Window_H
+
+//@}
+
+}
+
+#endif
+
+//
+// End of "$Id: win32.h 6233 2008-09-14 07:54:06Z spitzak $".
+//
Added: branches/branch-3.0/fltk/x.h
===================================================================
--- branches/branch-3.0/fltk/x.h (rev 0)
+++ branches/branch-3.0/fltk/x.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,47 @@
+// "$Id: x.h 5586 2007-01-07 07:23:21Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+/** \file
+ "Portably" include either x11.h, win32.h, or osx.h header files,
+ depending on your system. Since the system-specific interfaces
+ resemble each other somewhat, use of this header and some macros
+ may allow you to merge system-specific code for different systems
+ together.
+*/
+
+#ifndef fltk_x_h
+# define fltk_x_h
+# if defined(_WIN32) && !USE_X11
+# include "win32.h"
+# elif defined(__APPLE__) && !USE_X11
+# include "osx.h"
+# else
+# define USE_X11 1
+# include "x11.h"
+# endif
+#endif
+
+#if USE_CAIRO
+# include "fltk_cairo.h"
+#endif
+//
+// End of "$Id: x.h 5586 2007-01-07 07:23:21Z spitzak $".
+//
Added: branches/branch-3.0/fltk/x11.h
===================================================================
--- branches/branch-3.0/fltk/x11.h (rev 0)
+++ branches/branch-3.0/fltk/x11.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,185 @@
+// "$Id: x.h 5140 2006-05-22 04:46:07Z spitzak $"
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+
+/** \file
+
+Declarations of FLTK symbols and interfaces that only exist if FLTK
+is compiled to use X11, as it is by default on Unix. It is recommended
+you avoid using this header file, and that you segregate code requiring
+it to it's own source file.
+
+This header includes the Xlib.h, Xutil.h, Xatom.h, XInput.h, and XI.h
+header files, with sufficent wrappers to avoid conflicts with FLTK.
+In particular a macro is used so that "Window" is replaced by "XWindow"
+in these headers. You should use this rather than including the X
+header files directly.
+
+*/
+
+#ifndef fltk_x11_h
+# define fltk_x11_h
+
+////////////////////////////////////////////////////////////////
+// Try to get the parts of Xlib.h included while avoiding warnings:
+
+# ifndef DOXYGEN
+# define Window XWindow
+
+// pragmas are to fix the broken SGI Irix Xlib header files:
+# if !defined(__GNUC__) && (defined(_ABIN32) || defined(_ABI64))
+# pragma set woff 3322
+# endif
+# include <X11/Xlib.h>
+# include <X11/Xutil.h>
+# if !defined(__GNUC__) && (defined(_ABIN32) || defined(_ABI64))
+# pragma reset woff 3322
+# endif
+
+# include <X11/Xatom.h>
+
+# if USE_XFT && !MAKEDEPEND
+# include <X11/Xft/Xft.h>
+# else
+ typedef struct _XftDraw XftDraw;
+ typedef struct _XftFont XftFont;
+# endif
+
+# include <X11/extensions/XInput.h>
+# include <X11/extensions/XI.h>
+
+# undef Window
+
+# if defined(__FreeBSD__) || defined(__APPLE__) || defined(__CYGWIN__)
+ typedef unsigned long ulong;
+ typedef unsigned int uint;
+ typedef unsigned char uchar;
+# endif
+
+# endif // !DOXYGEN
+
+#include "draw.h"
+
+extern FL_API Region XRectangleRegion(int x, int y, int w, int h);
+
+namespace fltk {
+
+/// \name fltk/x11.h
+//@{
+
+////////////////////////////////////////////////////////////////
+// constant info about the X server connection:
+
+extern FL_API void open_display();
+extern FL_API void open_display(Display*);
+extern FL_API void close_display();
+
+extern FL_API Display* xdisplay;
+extern FL_API XWindow message_window;
+extern FL_API int xscreen;
+extern FL_API XVisualInfo* xvisual;
+extern FL_API Colormap xcolormap;
+
+////////////////////////////////////////////////////////////////
+// event handling:
+
+// feed events into fltk by setting xevent and calling handle:
+extern FL_API XEvent xevent;
+extern FL_API bool handle();
+
+// set by last xevent with a timestamp:
+extern FL_API ulong event_time;
+
+////////////////////////////////////////////////////////////////
+// DnD:
+
+extern FL_API XWindow dnd_source_window;
+extern FL_API Atom *dnd_source_types;
+extern FL_API Atom dnd_type;
+extern FL_API Atom dnd_source_action;
+extern FL_API Atom dnd_action;
+
+////////////////////////////////////////////////////////////////
+// drawing functions:
+
+extern FL_API XftDraw* xftc;
+extern FL_API GC gc;
+extern FL_API XWindow xwindow;
+extern FL_API ulong current_xpixel;
+extern FL_API ulong xpixel(Color i);
+extern FL_API void clip_region(Region);
+extern FL_API Region clip_region();
+
+extern FL_API void draw_into(XWindow, int w, int h);
+extern FL_API void stop_drawing(XWindow);
+
+extern FL_API XFontStruct* xfont();
+extern FL_API XftFont* xftfont();
+
+////////////////////////////////////////////////////////////////
+// only include this if <fltk/Window.h> was included:
+# if defined(fltk_Window_h) || defined(DOXYGEN)
+
+/**
+ When fltk tells X about a window, one of these objects is created.
+ Warning: this object is highly subject to change! It's definition
+ is only here so that xid(Window) can be declared inline:
+*/
+class FL_API CreatedWindow {
+public:
+ XWindow xid;
+ XWindow backbuffer;
+ XWindow frontbuffer;
+ Window *window;
+ Region region;
+ void expose(const Rectangle&);
+ CreatedWindow *next;
+ bool wait_for_expose;
+ bool backbuffer_bad; // used for XDBE
+ bool overlay; // true if redraw_overlay was called
+ ::Cursor cursor;
+ const Widget* cursor_for;
+ static CreatedWindow* first;
+ static CreatedWindow* find(const Window* window) {return window->i;}
+ void sendxjunk();
+ static void create(Window*,
+ XVisualInfo*, Colormap,
+ int background = -1);
+ static CreatedWindow* set_xid(Window*, XWindow);
+ Rectangle current_size;
+};
+
+// convert xid <-> Window:
+inline XWindow xid(const Window*w) {return CreatedWindow::find(w)->xid;}
+Window* find(XWindow xid);
+
+# endif // Window_h
+
+//@}
+
+} // namespace fltk
+
+# if USE_CAIRO
+# include <fltk/fltk_cairo.h>
+# include <cairo-xlib.h>
+# else
+ typedef struct _cairo cairo_t;
+# endif
+#endif
Added: branches/branch-3.0/fltk/xbmImage.h
===================================================================
--- branches/branch-3.0/fltk/xbmImage.h (rev 0)
+++ branches/branch-3.0/fltk/xbmImage.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,50 @@
+//
+// "$Id: xbmImage.h 5581 2007-01-05 03:04:04Z spitzak $"
+//
+// Image subclass for in-memory xbm data (you #include the .xbm file
+// and then construct this).
+//
+// Copyright 2002 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_xbmImage_h
+#define fltk_xbmImage_h
+
+#include "Image.h"
+
+namespace fltk {
+
+class FL_API xbmImage : public Image {
+public:
+ const unsigned char *array;
+ xbmImage(const unsigned char *bits, int w,int h) :
+ Image(fltk::MASK,w,h), array(bits) {}
+ xbmImage(const char *bits, int w, int h) :
+ Image(fltk::MASK,w,h), array((const unsigned char *)bits) {}
+ bool fetch();
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: xbmImage.h 5581 2007-01-05 03:04:04Z spitzak $".
+//
Added: branches/branch-3.0/fltk/xpmImage.h
===================================================================
--- branches/branch-3.0/fltk/xpmImage.h (rev 0)
+++ branches/branch-3.0/fltk/xpmImage.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,59 @@
+//
+// "$Id: xpmImage.h 5568 2006-12-30 07:54:24Z spitzak $"
+//
+// Image subclass that draws the data from an xpm format file.
+// XPM is a file format designed for small icons in X, it can
+// be convienently #include'd to inline the image into a program.
+// Just pass the pointer defined by the file to the constructor.
+//
+// Copyright 1998-2006 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems to "fltk-bugs@fltk.org".
+//
+
+#ifndef fltk_xpmImage_h
+#define fltk_xpmImage_h
+
+#include "Image.h"
+
+namespace fltk {
+
+class FL_API xpmImage : public Image {
+public:
+ const char * const * data;
+ // XPM files define the data all kinds of ways, so the constructor
+ // is overloaded to accept all the ones we have seen:
+ xpmImage(const char * const * d, const char* name = 0) :
+ Image(name), data(d) {}
+ xpmImage(const unsigned char* const * d, const char* name = 0) :
+ Image(name), data((char**)d) {}
+ xpmImage(char ** d, const char* name = 0) :
+ Image(name), data(d) {}
+ bool fetch();
+
+ //! For xpmFileImage to reuse fetch() code.
+ static bool fetch(Image&, const char* const* data);
+};
+
+}
+
+#endif
+
+//
+// End of "$Id: xpmImage.h 5568 2006-12-30 07:54:24Z spitzak $".
+//
Deleted: branches/branch-3.0/fltk3/Fl.H
Modified: branches/branch-3.0/fltk3/Fl_Box.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Box.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Box.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
#define Fl_Box_H
#ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
#endif
/**
Modified: branches/branch-3.0/fltk3/Fl_Browser_.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Browser_.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Browser_.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,10 +34,10 @@
#define Fl_Browser__H
#ifndef Fl_Group_H
-#include "Fl_Group.H"
+#include "Group.h"
#endif
#include "Fl_Scrollbar.H"
-#include <fltk3/Fl.H> // Fl::scrollbar_size()
+#include <fltk3/run.h> // Fl::scrollbar_size()
#define FL_NORMAL_BROWSER 0 /**< type() of Fl_Browser */
#define FL_SELECT_BROWSER 1 /**< type() of FL_Select_Browser */
Modified: branches/branch-3.0/fltk3/Fl_Button.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Button.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Button.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
#define Fl_Button_H
#ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
#endif
// values for type()
Modified: branches/branch-3.0/fltk3/Fl_Cairo_Window.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Cairo_Window.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Cairo_Window.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
// Cairo is currently supported for the following platforms:
// Win32, Apple Quartz, X11
-# include <fltk3/Fl.H>
+# include <fltk3/run.h>
# include <fltk3/Fl_Double_Window.H>
/**
Modified: branches/branch-3.0/fltk3/Fl_Chart.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Chart.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Chart.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
#define Fl_Chart_H
#ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
#endif
// values for type()
Modified: branches/branch-3.0/fltk3/Fl_Check_Browser.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Check_Browser.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Check_Browser.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
#ifndef Fl_Check_Browser_H
#define Fl_Check_Browser_H
-#include "Fl.H"
+#include "run.h"
#include "Fl_Browser_.H"
/**
Modified: branches/branch-3.0/fltk3/Fl_Clock.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Clock.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Clock.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
#define Fl_Clock_H
#ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
#endif
// values for type:
Modified: branches/branch-3.0/fltk3/Fl_Color_Chooser.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Color_Chooser.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Color_Chooser.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
#ifndef Fl_Color_Chooser_H
#define Fl_Color_Chooser_H
-#include <fltk3/Fl_Group.H>
+#include <fltk3/Group.h>
#include <fltk3/Fl_Box.H>
#include <fltk3/Fl_Return_Button.H>
#include <fltk3/Fl_Choice.H>
Modified: branches/branch-3.0/fltk3/Fl_Double_Window.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Double_Window.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Double_Window.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
#ifndef Fl_Double_Window_H
#define Fl_Double_Window_H
-#include "Fl_Window.H"
+#include "Window.h"
/**
The Fl_Double_Window provides a double-buffered window.
Modified: branches/branch-3.0/fltk3/Fl_File_Chooser.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_File_Chooser.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_File_Chooser.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,12 +29,12 @@
#ifndef Fl_File_Chooser_H
#define Fl_File_Chooser_H
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Double_Window.H>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/Group.h>
#include <fltk3/Fl_Choice.H>
#include <fltk3/Fl_Menu_Button.H>
#include <fltk3/Fl_Button.H>
Modified: branches/branch-3.0/fltk3/Fl_File_Icon.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_File_Icon.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_File_Icon.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
#ifndef _Fl_Fl_File_Icon_H_
# define _Fl_Fl_File_Icon_H_
-# include "Fl.H"
+# include "run.h"
//
Modified: branches/branch-3.0/fltk3/Fl_Free.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Free.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Free.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
#define Fl_Free_H
#ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
#endif
#define FL_NORMAL_FREE 1 /**< normal event handling */
Modified: branches/branch-3.0/fltk3/Fl_Gl_Window.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Gl_Window.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Gl_Window.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
#ifndef Fl_Gl_Window_H
#define Fl_Gl_Window_H
-#include "Fl_Window.H"
+#include "Window.h"
#ifndef GLContext
/**
Deleted: branches/branch-3.0/fltk3/Fl_Group.H
Modified: branches/branch-3.0/fltk3/Fl_Help_Dialog.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Help_Dialog.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Help_Dialog.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,9 +32,9 @@
#ifndef Fl_Help_Dialog_H
#define Fl_Help_Dialog_H
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Double_Window.H>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/Group.h>
#include <fltk3/Fl_Button.H>
#include <fltk3/Fl_Input.H>
#include <fltk3/Fl_Box.H>
Modified: branches/branch-3.0/fltk3/Fl_Help_View.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Help_View.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Help_View.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -37,8 +37,8 @@
//
# include <stdio.h>
-# include "Fl.H"
-# include "Fl_Group.H"
+# include "run.h"
+# include "Group.h"
# include "Fl_Scrollbar.H"
# include "fl_draw.H"
# include "Fl_Shared_Image.H"
Modified: branches/branch-3.0/fltk3/Fl_Input_.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Input_.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Input_.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
#define Fl_Input__H
#ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
#endif
#define FL_NORMAL_INPUT 0
Modified: branches/branch-3.0/fltk3/Fl_Input_Choice.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Input_Choice.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Input_Choice.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -38,8 +38,8 @@
#ifndef Fl_Input_Choice_H
#define Fl_Input_Choice_H
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/run.h>
+#include <fltk3/Group.h>
#include <fltk3/Fl_Input.H>
#include <fltk3/Fl_Menu_Button.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/fltk3/Fl_Menu_.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Menu_.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Menu_.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
#define Fl_Menu__H
#ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
#endif
#include "Fl_Menu_Item.H"
Modified: branches/branch-3.0/fltk3/Fl_Menu_Item.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Menu_Item.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Menu_Item.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
#ifndef Fl_Menu_Item_H
#define Fl_Menu_Item_H
-# include "Fl_Widget.H"
+# include "Widget.h"
# include "Fl_Image.H"
# if defined(__APPLE__) && defined(check)
Modified: branches/branch-3.0/fltk3/Fl_Object.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Object.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Object.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
#ifndef Fl_Object
#define Fl_Object fltk3::Widget
#endif
-#include "Fl_Widget.H"
+#include "Widget.h"
//
// End of "$Id: Fl_Object.H 7365 2010-03-30 15:18:29Z matt $".
Modified: branches/branch-3.0/fltk3/Fl_Pack.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Pack.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Pack.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
#ifndef Fl_Pack_H
#define Fl_Pack_H
-#include <FL/Fl_Group.H>
+#include <fltk3/Group.h>
/**
This widget was designed to add the functionality of compressing and
Modified: branches/branch-3.0/fltk3/Fl_Positioner.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Positioner.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Positioner.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
#define Fl_Positioner_H
#ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
#endif
/**
Modified: branches/branch-3.0/fltk3/Fl_Progress.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Progress.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Progress.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
// Include necessary headers.
//
-#include "Fl_Widget.H"
+#include "Widget.h"
//
Modified: branches/branch-3.0/fltk3/Fl_Repeat_Button.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Repeat_Button.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Repeat_Button.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,7 +30,7 @@
#ifndef Fl_Repeat_Button_H
#define Fl_Repeat_Button_H
-#include "Fl.H"
+#include "run.h"
#include "Fl_Button.H"
/**
Modified: branches/branch-3.0/fltk3/Fl_Scroll.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Scroll.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Scroll.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
#ifndef Fl_Scroll_H
#define Fl_Scroll_H
-#include "Fl_Group.H"
+#include "Group.h"
#include "Fl_Scrollbar.H"
/**
Modified: branches/branch-3.0/fltk3/Fl_Single_Window.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Single_Window.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Single_Window.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
#ifndef Fl_Single_Window_H
#define Fl_Single_Window_H
-#include "Fl_Window.H"
+#include "Window.h"
/**
This is the same as fltk3::Window. However, it is possible that
Modified: branches/branch-3.0/fltk3/Fl_Spinner.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Spinner.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Spinner.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -36,7 +36,7 @@
//
# include <fltk3/Enumerations.H>
-# include <fltk3/Fl_Group.H>
+# include <fltk3/Group.h>
# include <fltk3/Fl_Input.H>
# include <fltk3/Fl_Repeat_Button.H>
# include <stdio.h>
Modified: branches/branch-3.0/fltk3/Fl_Table.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Table.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Table.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -39,8 +39,8 @@
#include <stdlib.h> // UNIX: malloc/realloc
#endif /*WIN32*/
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/run.h>
+#include <fltk3/Group.h>
#include <fltk3/Fl_Scroll.H>
#include <fltk3/Fl_Box.H>
#include <fltk3/Fl_Scrollbar.H>
Modified: branches/branch-3.0/fltk3/Fl_Tabs.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Tabs.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Tabs.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
#ifndef Fl_Tabs_H
#define Fl_Tabs_H
-#include "Fl_Group.H"
+#include "Group.h"
/**
The Fl_Tabs widget is the "file card tabs"
Modified: branches/branch-3.0/fltk3/Fl_Text_Display.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Text_Display.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Text_Display.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,8 +34,8 @@
#define FL_TEXT_DISPLAY_H
#include "fl_draw.H"
-#include "Fl_Group.H"
-#include "Fl_Widget.H"
+#include "Group.h"
+#include "Widget.h"
#include "Fl_Scrollbar.H"
#include "Fl_Text_Buffer.H"
Modified: branches/branch-3.0/fltk3/Fl_Tile.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Tile.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Tile.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
#ifndef Fl_Tile_H
#define Fl_Tile_H
-#include "Fl_Group.H"
+#include "Group.h"
/**
The Fl_Tile class lets you resize the children by dragging
Modified: branches/branch-3.0/fltk3/Fl_Timer.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Timer.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Timer.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
#define Fl_Timer_H
#ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
#endif
// values for type():
Modified: branches/branch-3.0/fltk3/Fl_Tooltip.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Tooltip.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Tooltip.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,8 +31,8 @@
#ifndef Fl_Tooltip_H
#define Fl_Tooltip_H
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
/**
The Fl_Tooltip class provides tooltip support for
Modified: branches/branch-3.0/fltk3/Fl_Tree.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Tree.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Tree.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -5,8 +5,8 @@
#ifndef FL_TREE_H
#define FL_TREE_H
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/run.h>
+#include <fltk3/Group.h>
#include <fltk3/Fl_Scrollbar.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/fltk3/Fl_Tree_Item.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Tree_Item.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Tree_Item.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -5,8 +5,8 @@
#ifndef FL_TREE_ITEM_H
#define FL_TREE_ITEM_H
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
#include <fltk3/Fl_Image.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/fltk3/Fl_Valuator.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Valuator.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Valuator.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
#define Fl_Valuator_H
#ifndef Fl_Widget_H
-#include "Fl_Widget.H"
+#include "Widget.h"
#endif
// shared type() values for classes that work in both directions:
Deleted: branches/branch-3.0/fltk3/Fl_Widget.H
Deleted: branches/branch-3.0/fltk3/Fl_Window.H
Modified: branches/branch-3.0/fltk3/Fl_Wizard.H
===================================================================
--- branches/branch-3.0/fltk3/Fl_Wizard.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/Fl_Wizard.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
#ifndef _Fl_Wizard_H_
# define _Fl_Wizard_H_
-# include <fltk3/Fl_Group.H>
+# include <fltk3/Group.h>
/**
Copied: branches/branch-3.0/fltk3/Group.h (from rev 7366, branches/branch-3.0/fltk3/Fl_Group.H)
===================================================================
--- branches/branch-3.0/fltk3/Group.h (rev 0)
+++ branches/branch-3.0/fltk3/Group.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,234 @@
+//
+// "$Id: Group.h 7365 2010-03-30 15:18:29Z matt $"
+//
+// Group header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2009 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+/* \file
+ fltk3::Group, Fl_End classes . */
+
+#ifndef Fl_Group_H
+#define Fl_Group_H
+
+#ifndef Fl_Widget_H
+#include "Widget.h"
+#endif
+
+/**
+ The fltk3::Group class is the FLTK container widget. It maintains
+ an array of child widgets. These children can themselves be any widget
+ including fltk3::Group. The most important subclass of fltk3::Group
+ is fltk3::Window, however groups can also be used to control radio buttons
+ or to enforce resize behavior.
+*/
+class FL_EXPORT fltk3::Group : public fltk3::Widget {
+
+ fltk3::Widget** array_;
+ fltk3::Widget* savedfocus_;
+ fltk3::Widget* resizable_;
+ int children_;
+ int *sizes_; // remembered initial sizes of children
+
+ int navigation(int);
+ static fltk3::Group *current_;
+
+ // unimplemented copy ctor and assignment operator
+ Group(const fltk3::Group&);
+ fltk3::Group& operator=(const fltk3::Group&);
+
+protected:
+ void draw();
+ void draw_child(fltk3::Widget& widget) const;
+ void draw_children();
+ void draw_outside_label(const fltk3::Widget& widget) const ;
+ void update_child(fltk3::Widget& widget) const;
+ int *sizes();
+
+public:
+
+ int handle(int);
+ void begin();
+ void end();
+ static fltk3::Group *current();
+ static void current(fltk3::Group *g);
+
+ /**
+ Returns how many child widgets the group has.
+ */
+ int children() const {return children_;}
+ /**
+ Returns array()[n]. <i>No range checking is done!</i>
+ */
+ fltk3::Widget* child(int n) const {return array()[n];}
+ int find(const fltk3::Widget*) const;
+ /**
+ See int fltk3::Group::find(const fltk3::Widget *w) const
+ */
+ int find(const fltk3::Widget& o) const {return find(&o);}
+ fltk3::Widget* const* array() const;
+
+ void resize(int,int,int,int);
+ /**
+ Creates a new fltk3::Group widget using the given position, size,
+ and label string. The default boxtype is FL_NO_BOX.
+ */
+ Group(int,int,int,int, const char * = 0);
+ virtual ~Group();
+ void add(fltk3::Widget&);
+ /**
+ See void fltk3::Group::add(fltk3::Widget &w)
+ */
+ void add(fltk3::Widget* o) {add(*o);}
+ void insert(fltk3::Widget&, int i);
+ /**
+ This does insert(w, find(before)). This will append the
+ widget if \p before is not in the group.
+ */
+ void insert(fltk3::Widget& o, fltk3::Widget* before) {insert(o,find(before));}
+ void remove(fltk3::Widget&);
+ /**
+ Removes the widget \p o from the group.
+ \sa void remove(fltk3::Widget&)
+ */
+ void remove(fltk3::Widget* o) {remove(*o);}
+ void clear();
+
+ /**
+ See void fltk3::Group::resizable(fltk3::Widget *box)
+ */
+ void resizable(fltk3::Widget& o) {resizable_ = &o;}
+ /**
+ The resizable widget defines the resizing box for the group. When the
+ group is resized it calculates a new size and position for all of its
+ children. Widgets that are horizontally or vertically inside the
+ dimensions of the box are scaled to the new size. Widgets outside the
+ box are moved.
+
+ In these examples the gray area is the resizable:
+
+ \image html resizebox1.gif
+
+ \image html resizebox2.gif
+
+ \image latex resizebox1.eps "before resize" width=4cm
+
+ \image latex resizebox2.eps "after resize" width=4cm
+
+ The resizable may be set to the group itself, in which case all the
+ contents are resized. This is the default value for fltk3::Group,
+ although NULL is the default for fltk3::Window and Fl_Pack.
+
+ If the resizable is NULL then all widgets remain a fixed size
+ and distance from the top-left corner.
+
+ It is possible to achieve any type of resize behavior by using an
+ invisible Fl_Box as the resizable and/or by using a hierarchy
+ of child fltk3::Group's.
+ */
+ void resizable(fltk3::Widget* o) {resizable_ = o;}
+ /**
+ See void fltk3::Group::resizable(fltk3::Widget *box)
+ */
+ fltk3::Widget* resizable() const {return resizable_;}
+ /**
+ Adds a widget to the group and makes it the resizable widget.
+ */
+ void add_resizable(fltk3::Widget& o) {resizable_ = &o; add(o);}
+ void init_sizes();
+
+ /**
+ Controls whether the group widget clips the drawing of
+ child widgets to its bounding box.
+
+ Set \p c to 1 if you want to clip the child widgets to the
+ bounding box.
+
+ The default is to not clip (0) the drawing of child widgets.
+ */
+ void clip_children(int c) { if (c) set_flag(CLIP_CHILDREN); else clear_flag(CLIP_CHILDREN); }
+ /**
+ Returns the current clipping mode.
+
+ \return true, if clipping is enabled, false otherwise.
+
+ \see void fltk3::Group::clip_children(int c)
+ */
+ unsigned int clip_children() { return (flags() & CLIP_CHILDREN) != 0; }
+
+ /** Returns an fltk3::Group pointer if this widget is an fltk3::Group.
+
+ \retval NULL if this widget is not derived from fltk3::Group.
+ \note This method is provided to avoid dynamic_cast.
+ \todo More documentation ...
+ */
+ virtual fltk3::Group* as_group() { return this; }
+
+ // back compatibility functions:
+
+ /**
+ \deprecated This is for backwards compatibility only. You should use
+ \e W->%take_focus() instead.
+ \sa fltk3::Widget::take_focus();
+ */
+ void focus(fltk3::Widget* W) {W->take_focus();}
+
+ /** This is for forms compatibility only */
+ fltk3::Widget* & _ddfdesign_kludge() {return resizable_;}
+
+ /** This is for forms compatibility only */
+ void forms_end();
+};
+
+// dummy class used to end child groups in constructors for complex
+// subclasses of fltk3::Group:
+/**
+ This is a dummy class that allows you to end a fltk3::Group in a constructor list of a
+ class:
+ \code
+ class MyClass {
+ fltk3::Group group;
+ Fl_Button button_in_group;
+ Fl_End end;
+ Fl_Button button_outside_group;
+ MyClass();
+ };
+ MyClass::MyClass() :
+ group(10,10,100,100),
+ button_in_group(20,20,60,30),
+ end(),
+ button_outside_group(10,120,60,30)
+ {}
+ \endcode
+*/
+class FL_EXPORT Fl_End {
+public:
+ /** All it does is calling fltk3::Group::current()->end() */
+ Fl_End() {fltk3::Group::current()->end();}
+};
+
+#endif
+
+//
+// End of "$Id: Group.h 7365 2010-03-30 15:18:29Z matt $".
+//
Copied: branches/branch-3.0/fltk3/Widget.h (from rev 7366, branches/branch-3.0/fltk3/Fl_Widget.H)
===================================================================
--- branches/branch-3.0/fltk3/Widget.h (rev 0)
+++ branches/branch-3.0/fltk3/Widget.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,978 @@
+//
+// "$Id: Widget.h 7365 2010-03-30 15:18:29Z matt $"
+//
+// Widget header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2009 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+/* \file
+ fltk3::Widget, Fl_Label classes . */
+
+#ifndef Fl_Widget_H
+#define Fl_Widget_H
+
+#include "Enumerations.H"
+
+namespace fltk3 {
+ class Window;
+ class Widget;
+ class Group;
+}
+
+class Fl_Image;
+
+/** Default callback type definition for all fltk widgets (by far the most used) */
+typedef void (Fl_Callback )(fltk3::Widget*, void*);
+/** Default callback type pointer definition for all fltk widgets */
+typedef Fl_Callback* Fl_Callback_p; // needed for BORLAND
+/** One parameter callback type definition passing only the widget */
+typedef void (Fl_Callback0)(fltk3::Widget*);
+/** Callback type definition passing the widget and a long data value */
+typedef void (Fl_Callback1)(fltk3::Widget*, long);
+
+/** This struct stores all information for a text or mixed graphics label.
+
+ \todo For FLTK 1.3, the Fl_Label type will become a widget by itself. That way
+ we will be avoiding a lot of code duplication by handling labels in
+ a similar fashion to widgets containing text. We also provide an easy
+ interface for very complex labels, containing html or vector graphics.
+ */
+struct FL_EXPORT Fl_Label {
+ /** label text */
+ const char* value;
+ /** optional image for an active label */
+ Fl_Image* image;
+ /** optional image for a deactivated label */
+ Fl_Image* deimage;
+ /** label font used in text */
+ Fl_Font font;
+ /** size of label font */
+ Fl_Fontsize size;
+ /** text color */
+ Fl_Color color;
+ /** alignment of label */
+ Fl_Align align_;
+ /** type of label. \see Fl_Labeltype */
+ uchar type;
+
+ /** Draws the label aligned to the given box */
+ void draw(int,int,int,int, Fl_Align) const ;
+ void measure(int &w, int &h) const ;
+};
+
+
+/** fltk3::Widget is the base class for all widgets in FLTK.
+
+ You can't create one of these because the constructor is not public.
+ However you can subclass it.
+
+ All "property" accessing methods, such as color(), parent(), or argument()
+ are implemented as trivial inline functions and thus are as fast and small
+ as accessing fields in a structure. Unless otherwise noted, the property
+ setting methods such as color(n) or label(s) are also trivial inline
+ functions, even if they change the widget's appearance. It is up to the
+ user code to call redraw() after these.
+ */
+class FL_EXPORT fltk3::Widget {
+ friend class Group;
+
+ fltk3::Group* parent_;
+ Fl_Callback* callback_;
+ void* user_data_;
+ int x_,y_,w_,h_;
+ Fl_Label label_;
+ unsigned int flags_;
+ Fl_Color color_;
+ Fl_Color color2_;
+ uchar type_;
+ uchar damage_;
+ uchar box_;
+ uchar when_;
+
+ const char *tooltip_;
+
+ /** unimplemented copy ctor */
+ Widget(const fltk3::Widget &);
+ /** unimplemented assignment operator */
+ Widget& operator=(const fltk3::Widget &);
+
+protected:
+
+ /** Internal use only. Use position(int,int), size(int,int) or resize(int,int,int,int) instead. */
+ void x(int v) {x_ = v;}
+ /** Internal use only. Use position(int,int), size(int,int) or resize(int,int,int,int) instead. */
+ void y(int v) {y_ = v;}
+ /** Internal use only. Use position(int,int), size(int,int) or resize(int,int,int,int) instead. */
+ void w(int v) {w_ = v;}
+ /** Internal use only. Use position(int,int), size(int,int) or resize(int,int,int,int) instead. */
+ void h(int v) {h_ = v;}
+ /** Gets the widget flags mask */
+ unsigned int flags() const {return flags_;}
+ /** Sets a flag in the flags mask */
+ void set_flag(unsigned int c) {flags_ |= c;}
+ /** Clears a flag in the flags mask */
+ void clear_flag(unsigned int c) {flags_ &= ~c;}
+ /** flags possible values enumeration.
+ See activate(), output(), visible(), changed(), set_visible_focus()
+ */
+ enum {
+ INACTIVE = 1<<0, ///< the widget can't receive focus, and is disabled but potentially visible
+ INVISIBLE = 1<<1, ///< the widget is not drawn but can receive events
+ OUTPUT = 1<<2, ///< for output only
+ NOBORDER = 1<<3, ///< don't draw a decoration (fltk3::Window)
+ FORCE_POSITION = 1<<4, ///< don't let the window manager position the window (fltk3::Window)
+ NON_MODAL = 1<<5, ///< thisis a hovering toolbar window (fltk3::Window)
+ SHORTCUT_LABEL = 1<<6, ///< the label contains a shortcut we need to draw
+ CHANGED = 1<<7, ///< the widget value changed
+ OVERRIDE = 1<<8, ///< position window on top (fltk3::Window)
+ VISIBLE_FOCUS = 1<<9, ///< accepts keyboard focus navigation if the widget can have the focus
+ COPIED_LABEL = 1<<10, ///< the widget label is internally copied, its destruction is handled by the widget
+ CLIP_CHILDREN = 1<<11, ///< all drawing within this widget will be clipped (fltk3::Group)
+ MENU_WINDOW = 1<<12, ///< a temporary popup window, dismissed by clicking outside (fltk3::Window)
+ TOOLTIP_WINDOW = 1<<13, ///< a temporary popup, transparent to events, and dismissed easily (fltk3::Window)
+ MODAL = 1<<14, ///< a window blocking input to all other winows (fltk3::Window)
+ NO_OVERLAY = 1<<15, ///< window not using a hardware overlay plane (Fl_Menu_Window)
+ GROUP_RELATIVE = 1<<16, ///< position this idget relative to the parent group, not to the window
+ // (space for more flags)
+ USERFLAG3 = 1<<29, ///< reserved for 3rd party extensions
+ USERFLAG2 = 1<<30, ///< reserved for 3rd party extensions
+ USERFLAG1 = 1<<31 ///< reserved for 3rd party extensions
+ };
+ void draw_box() const;
+ void draw_box(Fl_Boxtype t, Fl_Color c) const;
+ void draw_box(Fl_Boxtype t, int x,int y,int w,int h, Fl_Color c) const;
+ /** draws a focus rectangle around the widget */
+ void draw_focus() {draw_focus(box(),x(),y(),w(),h());}
+ void draw_focus(Fl_Boxtype t, int x,int y,int w,int h) const;
+ void draw_label() const;
+ void draw_label(int, int, int, int) const;
+
+public:
+
+ /** Creates a widget at the given position and size.
+
+ The fltk3::Widget is a protected constructor, but all derived widgets have a
+ matching public constructor. It takes a value for x(), y(), w(), h(), and
+ an optional value for label().
+
+ \param[in] x, y the position of the widget relative to the enclosing window
+ \param[in] w, h size of the widget in pixels
+ \param[in] label optional text for the widget label
+ */
+ Widget(int x, int y, int w, int h, const char *label=0L);
+
+ /** Destroys the widget.
+ Destroying single widgets is not very common. You almost always want to
+ destroy the parent group instead, which will destroy all of the child widgets
+ and groups in that group.
+
+ \since FLTK 1.3, the widget's destructor removes the widget from its parent
+ group, if it is member of a group.
+ */
+ virtual ~Widget();
+
+ /** Draws the widget.
+ Never call this function directly. FLTK will schedule redrawing whenever
+ needed. If your widget must be redrawn as soon as possible, call redraw()
+ instead.
+
+ Override this function to draw your own widgets.
+
+ If you ever need to call another widget's draw method <I>from within your
+ own draw() method</I>, e.g. for an embedded scrollbar, you can do it
+ (because draw() is virtual) like this:
+
+ \code
+ fltk3::Widget *s = &scroll; // scroll is an embedded Fl_Scrollbar
+ s->draw(); // calls Fl_Scrollbar::draw()
+ \endcode
+ */
+ virtual void draw() {
+ draw_box();
+ draw_label();
+ }
+
+ /** Handles the specified event.
+ You normally don't call this method directly, but instead let FLTK do
+ it when the user interacts with the widget.
+
+ When implemented in a widget, this function must return 0 if the
+ widget does not use the event or 1 otherwise.
+
+ Most of the time, you want to call the inherited handle() method in
+ your overridden method so that you don't short-circuit events that you
+ don't handle. In this last case you should return the callee retval.
+
+ \param[in] event the kind of event received
+ \retval 0 if the event was not used or understood
+ \retval 1 if the event was used and can be deleted
+ \see Fl_Event
+ */
+ virtual int handle(int event);
+
+ /** Returns a pointer to the parent widget.
+ Usually this is a fltk3::Group or fltk3::Window.
+ \retval NULL if the widget has no parent
+ \see fltk3::Group::add(fltk3::Widget*)
+ */
+ fltk3::Group* parent() const {return parent_;}
+
+ /** Internal use only - "for hacks only".
+
+ It is \em \b STRONGLY recommended not to use this method, because it
+ short-circuits fltk3::Group's normal widget adding and removing methods,
+ if the widget is already a child widget of another fltk3::Group.
+
+ Use fltk3::Group::add(fltk3::Widget*) and/or fltk3::Group::remove(fltk3::Widget*) instead.
+ */
+ void parent(fltk3::Group* p) {parent_ = p;} // for hacks only, use fltk3::Group::add()
+
+ /** Gets the widget type.
+ Returns the widget type value, which is used for Forms compatibility
+ and to simulate RTTI.
+
+ \todo Explain "simulate RTTI" (currently only used to decide if a widget
+ is a window, i.e. type()>=FL_WINDOW ?). Is type() really used in a way
+ that ensures "Forms compatibility" ?
+ */
+ uchar type() const {return type_;}
+
+ /** Sets the widget type.
+ This is used for Forms compatibility.
+ */
+ void type(uchar t) {type_ = t;}
+
+ /** Gets the widget position in its window.
+ \return the x position relative to the window
+ */
+ int x() const {return x_;}
+
+ /** Gets the widget position in its window.
+ \return the y position relative to the window
+ */
+ int y() const {return y_;}
+
+ /** Gets the widget width.
+ \return the width of the widget in pixels.
+ */
+ int w() const {return w_;}
+
+ /** Gets the widget height.
+ \return the height of the widget in pixels.
+ */
+ int h() const {return h_;}
+
+ /** Changes the size or position of the widget.
+
+ This is a virtual function so that the widget may implement its
+ own handling of resizing. The default version does \e not
+ call the redraw() method, but instead relies on the parent widget
+ to do so because the parent may know a faster way to update the
+ display, such as scrolling from the old position.
+
+ Some window managers under X11 call resize() a lot more often
+ than needed. Please verify that the position or size of a widget
+ did actually change before doing any extensive calculations.
+
+ position(X, Y) is a shortcut for resize(X, Y, w(), h()),
+ and size(W, H) is a shortcut for resize(x(), y(), W, H).
+
+ \param[in] x, y new position relative to the parent window
+ \param[in] w, h new size
+ \see position(int,int), size(int,int)
+ */
+ virtual void resize(int x, int y, int w, int h);
+
+ /** Internal use only. */
+ int damage_resize(int,int,int,int);
+
+ /** Repositions the window or widget.
+
+ position(X, Y) is a shortcut for resize(X, Y, w(), h()).
+
+ \param[in] X, Y new position relative to the parent window
+ \see resize(int,int,int,int), size(int,int)
+ */
+ void position(int X,int Y) {resize(X,Y,w_,h_);}
+
+ /** Changes the size of the widget.
+
+ size(W, H) is a shortcut for resize(x(), y(), W, H).
+
+ \param[in] W, H new size
+ \see position(int,int), resize(int,int,int,int)
+ */
+ void size(int W,int H) {resize(x_,y_,W,H);}
+
+ /** Gets the label alignment.
+
+ \return label alignment
+ \see label(), align(Fl_Align), Fl_Align
+ \todo This function should not take uchar as an argument.
+ Apart from the fact that uchar is too short with only 8 bits,
+ it does not provide type safety (in which case we don't need
+ to declare Fl_Align an enum to begin with).
+ *NOTE* The current (FLTK 1.3) implementation (Dec 2008) is such that
+ Fl_Align is (typedef'd to be) "unsigned" (int), but fltk3::Widget's
+ "align_" member variable is a bit field of 8 bits only !
+ */
+ Fl_Align align() const {return label_.align_;}
+
+ /** Sets the label alignment.
+ This controls how the label is displayed next to or inside the widget.
+ The default value is FL_ALIGN_CENTER, which centers the label inside
+ the widget.
+ \param[in] alignment new label alignment
+ \see align(), Fl_Align
+ */
+ void align(Fl_Align alignment) {label_.align_ = alignment;}
+
+ /** Gets the box type of the widget.
+ \return the current box type
+ \see box(Fl_Boxtype), Fl_Boxtype
+ */
+ Fl_Boxtype box() const {return (Fl_Boxtype)box_;}
+
+ /** Sets the box type for the widget.
+ This identifies a routine that draws the background of the widget.
+ See Fl_Boxtype for the available types. The default depends on the
+ widget, but is usually FL_NO_BOX or FL_UP_BOX.
+ \param[in] new_box the new box type
+ \see box(), Fl_Boxtype
+ */
+ void box(Fl_Boxtype new_box) {box_ = new_box;}
+
+ /** Gets the background color of the widget.
+ \return current background color
+ \see color(Fl_Color), color(Fl_Color, Fl_Color)
+ */
+ Fl_Color color() const {return color_;}
+
+ /** Sets the background color of the widget.
+ The color is passed to the box routine. The color is either an index into
+ an internal table of RGB colors or an RGB color value generated using
+ fl_rgb_color().
+
+ The default for most widgets is FL_BACKGROUND_COLOR. Use fltk3::set_color()
+ to redefine colors in the color map.
+ \param[in] bg background color
+ \see color(), color(Fl_Color, Fl_Color), selection_color(Fl_Color)
+ */
+ void color(Fl_Color bg) {color_ = bg;}
+
+ /** Gets the selection color.
+ \return the current selection color
+ \see selection_color(Fl_Color), color(Fl_Color, Fl_Color)
+ */
+ Fl_Color selection_color() const {return color2_;}
+
+ /** Sets the selection color.
+ The selection color is defined for Forms compatibility and is usually
+ used to color the widget when it is selected, although some widgets
+ use this color for other purposes. You can set both colors at once
+ with color(Fl_Color bg, Fl_Color sel).
+ \param[in] a the new selection color
+ \see selection_color(), color(Fl_Color, Fl_Color)
+ */
+ void selection_color(Fl_Color a) {color2_ = a;}
+
+ /** Sets the background and selection color of the widget.
+
+ The two color form sets both the background and selection colors.
+ \param[in] bg background color
+ \param[in] sel selection color
+ \see color(unsigned), selection_color(unsigned)
+ */
+ void color(Fl_Color bg, Fl_Color sel) {color_=bg; color2_=sel;}
+
+ /** Gets the current label text.
+ \return a pointer to the current label text
+ \see label(const char *), copy_label(const char *)
+ */
+ const char* label() const {return label_.value;}
+
+ /** Sets the current label pointer.
+
+ The label is shown somewhere on or next to the widget. The passed pointer
+ is stored unchanged in the widget (the string is \em not copied), so if
+ you need to set the label to a formatted value, make sure the buffer is
+ static, global, or allocated. The copy_label() method can be used
+ to make a copy of the label string automatically.
+ \param[in] text pointer to new label text
+ \see copy_label()
+ */
+ void label(const char* text);
+
+ /** Sets the current label.
+ Unlike label(), this method allocates a copy of the label
+ string instead of using the original string pointer.
+
+ The internal copy will automatically be freed whenever you assign
+ a new label or when the widget is destroyed.
+
+ \param[in] new_label the new label text
+ \see label()
+ */
+ void copy_label(const char *new_label);
+
+ /** Shortcut to set the label text and type in one call.
+ \see label(const char *), labeltype(Fl_Labeltype)
+ */
+ void label(Fl_Labeltype a, const char* b) {label_.type = a; label_.value = b;}
+
+ /** Gets the label type.
+ \return the current label type.
+ \see Fl_Labeltype
+ */
+ Fl_Labeltype labeltype() const {return (Fl_Labeltype)label_.type;}
+
+ /** Sets the label type.
+ The label type identifies the function that draws the label of the widget.
+ This is generally used for special effects such as embossing or for using
+ the label() pointer as another form of data such as an icon. The value
+ FL_NORMAL_LABEL prints the label as plain text.
+ \param[in] a new label type
+ \see Fl_Labeltype
+ */
+ void labeltype(Fl_Labeltype a) {label_.type = a;}
+
+ /** Gets the label color.
+ The default color is FL_FOREGROUND_COLOR.
+ \return the current label color
+ */
+ Fl_Color labelcolor() const {return label_.color;}
+
+ /** Sets the label color.
+ The default color is FL_FOREGROUND_COLOR.
+ \param[in] c the new label color
+ */
+ void labelcolor(Fl_Color c) {label_.color=c;}
+
+ /** Gets the font to use.
+ Fonts are identified by indexes into a table. The default value
+ uses a Helvetica typeface (Arial for Microsoft® Windows®).
+ The function fltk3::set_font() can define new typefaces.
+ \return current font used by the label
+ \see Fl_Font
+ */
+ Fl_Font labelfont() const {return label_.font;}
+
+ /** Sets the font to use.
+ Fonts are identified by indexes into a table. The default value
+ uses a Helvetica typeface (Arial for Microsoft® Windows®).
+ The function fltk3::set_font() can define new typefaces.
+ \param[in] f the new font for the label
+ \see Fl_Font
+ */
+ void labelfont(Fl_Font f) {label_.font=f;}
+
+ /** Gets the font size in pixels.
+ The default size is 14 pixels.
+ \return the current font size
+ */
+ Fl_Fontsize labelsize() const {return label_.size;}
+
+ /** Sets the font size in pixels.
+ \param[in] pix the new font size
+ \see Fl_Fontsize labelsize()
+ */
+ void labelsize(Fl_Fontsize pix) {label_.size=pix;}
+
+ /** Gets the image that is used as part of the widget label.
+ This image is used when drawing the widget in the active state.
+ \return the current image
+ */
+ Fl_Image* image() {return label_.image;}
+
+ /** Sets the image to use as part of the widget label.
+ This image is used when drawing the widget in the active state.
+ \param[in] img the new image for the label
+ */
+ void image(Fl_Image* img) {label_.image=img;}
+
+ /** Sets the image to use as part of the widget label.
+ This image is used when drawing the widget in the active state.
+ \param[in] img the new image for the label
+ */
+ void image(Fl_Image& img) {label_.image=&img;}
+
+ /** Gets the image that is used as part of the widget label.
+ This image is used when drawing the widget in the inactive state.
+ \return the current image for the deactivated widget
+ */
+ Fl_Image* deimage() {return label_.deimage;}
+
+ /** Sets the image to use as part of the widget label.
+ This image is used when drawing the widget in the inactive state.
+ \param[in] img the new image for the deactivated widget
+ */
+ void deimage(Fl_Image* img) {label_.deimage=img;}
+
+ /** Sets the image to use as part of the widget label.
+ This image is used when drawing the widget in the inactive state.
+ \param[in] img the new image for the deactivated widget
+ */
+ void deimage(Fl_Image& img) {label_.deimage=&img;}
+
+ /** Gets the current tooltip text.
+ \return a pointer to the tooltip text or NULL
+ */
+ const char *tooltip() const {return tooltip_;}
+
+ /** Sets the current tooltip text.
+ Sets a string of text to display in a popup tooltip window when the user
+ hovers the mouse over the widget. The string is <I>not</I> copied, so
+ make sure any formatted string is stored in a static, global,
+ or allocated buffer.
+
+ If no tooltip is set, the tooltip of the parent is inherited. Setting a
+ tooltip for a group and setting no tooltip for a child will show the
+ group's tooltip instead. To avoid this behavior, you can set the child's
+ tooltip to an empty string ("").
+ \param[in] t new tooltip
+ */
+ void tooltip(const char *t);
+
+ /** Gets the current callback function for the widget.
+ Each widget has a single callback.
+ \return current callback
+ */
+ Fl_Callback_p callback() const {return callback_;}
+
+ /** Sets the current callback function for the widget.
+ Each widget has a single callback.
+ \param[in] cb new callback
+ \param[in] p user data
+ */
+ void callback(Fl_Callback* cb, void* p) {callback_=cb; user_data_=p;}
+
+ /** Sets the current callback function for the widget.
+ Each widget has a single callback.
+ \param[in] cb new callback
+ */
+ void callback(Fl_Callback* cb) {callback_=cb;}
+
+ /** Sets the current callback function for the widget.
+ Each widget has a single callback.
+ \param[in] cb new callback
+ */
+ void callback(Fl_Callback0*cb) {callback_=(Fl_Callback*)cb;}
+
+ /** Sets the current callback function for the widget.
+ Each widget has a single callback.
+ \param[in] cb new callback
+ \param[in] p user data
+ */
+ void callback(Fl_Callback1*cb, long p=0) {callback_=(Fl_Callback*)cb; user_data_=(void*)p;}
+
+ /** Gets the user data for this widget.
+ Gets the current user data (void *) argument that is passed to the callback function.
+ \return user data as a pointer
+ */
+ void* user_data() const {return user_data_;}
+
+ /** Sets the user data for this widget.
+ Sets the new user data (void *) argument that is passed to the callback function.
+ \param[in] v new user data
+ */
+ void user_data(void* v) {user_data_ = v;}
+
+ /** Gets the current user data (long) argument that is passed to the callback function.
+ */
+ long argument() const {return (long)user_data_;}
+
+ /** Sets the current user data (long) argument that is passed to the callback function.
+ \todo The user data value must be implemented using a \em union to avoid
+ 64 bit machine incompatibilities.
+ */
+ void argument(long v) {user_data_ = (void*)v;}
+
+ /** Returns the conditions under which the callback is called.
+
+ You can set the flags with when(uchar), the default value is
+ FL_WHEN_RELEASE.
+
+ \return set of flags
+ \see when(uchar)
+ */
+ Fl_When when() const {return (Fl_When)when_;}
+
+ /** Sets the flags used to decide when a callback is called.
+
+ This controls when callbacks are done. The following values are useful,
+ the default value is FL_WHEN_RELEASE:
+
+ \li 0: The callback is not done, but changed() is turned on.
+ \li FL_WHEN_CHANGED: The callback is done each time the text is
+ changed by the user.
+ \li FL_WHEN_RELEASE: The callback will be done when this widget loses
+ the focus, including when the window is unmapped. This is a useful
+ value for text fields in a panel where doing the callback on every
+ change is wasteful. However the callback will also happen if the
+ mouse is moved out of the window, which means it should not do
+ anything visible (like pop up an error message).
+ You might do better setting this to zero, and scanning all the
+ items for changed() when the OK button on a panel is pressed.
+ \li FL_WHEN_ENTER_KEY: If the user types the Enter key, the entire
+ text is selected, and the callback is done if the text has changed.
+ Normally the Enter key will navigate to the next field (or insert
+ a newline for a Fl_Multiline_Input) - this changes the behavior.
+ \li FL_WHEN_ENTER_KEY|FL_WHEN_NOT_CHANGED: The Enter key will do the
+ callback even if the text has not changed. Useful for command fields.
+ fltk3::Widget::when() is a set of bitflags used by subclasses of
+ fltk3::Widget to decide when to do the callback.
+
+ If the value is zero then the callback is never done. Other values
+ are described in the individual widgets. This field is in the base
+ class so that you can scan a panel and do_callback() on all the ones
+ that don't do their own callbacks in response to an "OK" button.
+ \param[in] i set of flags
+ */
+ void when(uchar i) {when_ = i;}
+
+ /** Returns whether a widget is visible.
+ \retval 0 if the widget is not drawn and hence invisible.
+ \see show(), hide(), visible_r()
+ */
+ unsigned int visible() const {return !(flags_&INVISIBLE);}
+
+ /** Returns whether a widget and all its parents are visible.
+ \retval 0 if the widget or any of its parents are invisible.
+ \see show(), hide(), visible()
+ */
+ int visible_r() const;
+
+ /** Makes a widget visible.
+ An invisible widget never gets redrawn and does not get events.
+ The visible() method returns true if the widget is set to be
+ visible. The visible_r() method returns true if the widget and
+ all of its parents are visible. A widget is only visible if
+ visible() is true on it <I>and all of its parents</I>.
+
+ Changing it will send FL_SHOW or FL_HIDE events to
+ the widget. <I>Do not change it if the parent is not visible, as this
+ will send false FL_SHOW or FL_HIDE events to the widget</I>.
+ redraw() is called if necessary on this or the parent.
+
+ \see hide(), visible(), visible_r()
+ */
+ virtual void show();
+
+ /** Makes a widget invisible.
+ \see show(), visible(), visible_r()
+ */
+ virtual void hide();
+
+ /** Makes the widget visible.
+ You must still redraw the parent widget to see a change in the
+ window. Normally you want to use the show() method instead.
+ */
+ void set_visible() {flags_ &= ~INVISIBLE;}
+
+ /** Hides the widget.
+ You must still redraw the parent to see a change in the window.
+ Normally you want to use the hide() method instead.
+ */
+ void clear_visible() {flags_ |= INVISIBLE;}
+
+ /** Returns whether the widget is active.
+ \retval 0 if the widget is inactive
+ \see active_r(), activate(), deactivate()
+ */
+ unsigned int active() const {return !(flags_&INACTIVE);}
+
+ /** Returns whether the widget and all of its parents are active.
+ \retval 0 if this or any of the parent widgets are inactive
+ \see active(), activate(), deactivate()
+ */
+ int active_r() const;
+
+ /** Activates the widget.
+ Changing this value will send FL_ACTIVATE to the widget if
+ active_r() is true.
+ \see active(), active_r(), deactivate()
+ */
+ void activate();
+
+ /** Deactivates the widget.
+ Inactive widgets will be drawn "grayed out", e.g. with less contrast
+ than the active widget. Inactive widgets will not receive any keyboard
+ or mouse button events. Other events (including FL_ENTER, FL_MOVE,
+ FL_LEAVE, FL_SHORTCUT, and others) will still be sent. A widget is
+ only active if active() is true on it <I>and all of its parents</I>.
+
+ Changing this value will send FL_DEACTIVATE to the widget if
+ active_r() is true.
+
+ Currently you cannot deactivate fltk3::Window widgets.
+
+ \see activate(), active(), active_r()
+ */
+ void deactivate();
+
+ /** Returns if a widget is used for output only.
+ output() means the same as !active() except it does not change how the
+ widget is drawn. The widget will not receive any events. This is useful
+ for making scrollbars or buttons that work as displays rather than input
+ devices.
+ \retval 0 if the widget is used for input and output
+ \see set_output(), clear_output()
+ */
+ unsigned int output() const {return (flags_&OUTPUT);}
+
+ /** Sets a widget to output only.
+ \see output(), clear_output()
+ */
+ void set_output() {flags_ |= OUTPUT;}
+
+ /** Sets a widget to accept input.
+ \see set_output(), output()
+ */
+ void clear_output() {flags_ &= ~OUTPUT;}
+
+ /** Returns if the widget is able to take events.
+ This is the same as (active() && !output()
+ && visible()) but is faster.
+ \retval 0 if the widget takes no events
+ */
+ unsigned int takesevents() const {return !(flags_&(INACTIVE|INVISIBLE|OUTPUT));}
+
+ /**
+ Checks if the widget value changed since the last callback.
+
+ "Changed" is a flag that is turned on when the user changes the value
+ stored in the widget. This is only used by subclasses of fltk3::Widget that
+ store values, but is in the base class so it is easier to scan all the
+ widgets in a panel and do_callback() on the changed ones in response
+ to an "OK" button.
+
+ Most widgets turn this flag off when they do the callback, and when
+ the program sets the stored value.
+
+ \retval 0 if the value did not change
+ \see set_changed(), clear_changed()
+ */
+ unsigned int changed() const {return flags_&CHANGED;}
+
+ /** Marks the value of the widget as changed.
+ \see changed(), clear_changed()
+ */
+ void set_changed() {flags_ |= CHANGED;}
+
+ /** Marks the value of the widget as unchanged.
+ \see changed(), set_changed()
+ */
+ void clear_changed() {flags_ &= ~CHANGED;}
+
+ /** Gives the widget the keyboard focus.
+ Tries to make this widget be the fltk3::focus() widget, by first sending
+ it an FL_FOCUS event, and if it returns non-zero, setting
+ fltk3::focus() to this widget. You should use this method to
+ assign the focus to a widget.
+ \return true if the widget accepted the focus.
+ */
+ int take_focus();
+
+ /** Enables keyboard focus navigation with this widget.
+ Note, however, that this will not necessarily mean that the widget
+ will accept focus, but for widgets that can accept focus, this method
+ enables it if it has been disabled.
+ \see visible_focus(), clear_visible_focus(), visible_focus(int)
+ */
+ void set_visible_focus() { flags_ |= VISIBLE_FOCUS; }
+
+ /** Disables keyboard focus navigation with this widget.
+ Normally, all widgets participate in keyboard focus navigation.
+ \see set_visible_focus(), visible_focus(), visible_focus(int)
+ */
+ void clear_visible_focus() { flags_ &= ~VISIBLE_FOCUS; }
+
+ /** Modifies keyboard focus navigation.
+ \param[in] v set or clear visible focus
+ \see set_visible_focus(), clear_visible_focus(), visible_focus()
+ */
+ void visible_focus(int v) { if (v) set_visible_focus(); else clear_visible_focus(); }
+
+ /** Checks whether this widget has a visible focus.
+ \retval 0 if this widget has no visible focus.
+ \see visible_focus(int), set_visible_focus(), clear_visible_focus()
+ */
+ unsigned int visible_focus() { return flags_ & VISIBLE_FOCUS; }
+
+ /** Sets the default callback for all widgets.
+ Sets the default callback, which puts a pointer to the widget on the queue
+ returned by fltk3::readqueue(). You may want to call this from your own callback.
+ \param[in] cb the new callback
+ \param[in] d user data associated with that callback
+ \see callback(), do_callback(), fltk3::readqueue()
+ */
+ static void default_callback(fltk3::Widget *cb, void *d);
+
+ /** Calls the widget callback.
+ Causes a widget to invoke its callback function with default arguments.
+ \see callback()
+ */
+ void do_callback() {do_callback(this,user_data_);}
+
+ /** Calls the widget callback.
+ Causes a widget to invoke its callback function with arbitrary arguments.
+ \param[in] o call the callback with \p o as the widget argument
+ \param[in] arg call the callback with \p arg as the user data argument
+ \see callback()
+ */
+ void do_callback(fltk3::Widget* o,long arg) {do_callback(o,(void*)arg);}
+
+ // Causes a widget to invoke its callback function with arbitrary arguments.
+ // Documentation and implementation in fltk3::Widget.cxx
+ void do_callback(fltk3::Widget* o,void* arg=0);
+
+ /** Internal use only. */
+ int test_shortcut();
+ /** Internal use only. */
+ static unsigned int label_shortcut(const char *t);
+ /** Internal use only. */
+ static int test_shortcut(const char*);
+
+ /** Checks if w is a child of this widget.
+ \param[in] w potential child widget
+ \return Returns 1 if \p w is a child of this widget, or is
+ equal to this widget. Returns 0 if \p w is NULL.
+ */
+ int contains(const fltk3::Widget *w) const ;
+
+ /** Checks if this widget is a child of w.
+ Returns 1 if this widget is a child of \p w, or is
+ equal to \p w. Returns 0 if \p w is NULL.
+ \param[in] w the possible parent widget.
+ \see contains()
+ */
+ int inside(const fltk3::Widget* w) const {return w ? w->contains(this) : 0;}
+
+ /** Schedules the drawing of the widget.
+ Marks the widget as needing its draw() routine called.
+ */
+ void redraw();
+
+ /** Schedules the drawing of the label.
+ Marks the widget or the parent as needing a redraw for the label area
+ of a widget.
+ */
+ void redraw_label();
+
+ /** Returns non-zero if draw() needs to be called.
+ The damage value is actually a bit field that the widget
+ subclass can use to figure out what parts to draw.
+ \return a bitmap of flags describing the kind of damage to the widget
+ \see damage(uchar), clear_damage(uchar)
+ */
+ uchar damage() const {return damage_;}
+
+ /** Clears or sets the damage flags.
+ Damage flags are cleared when parts of the widget drawing is repaired.
+
+ The optional argument \p c specifies the bits that <b>are set</b>
+ after the call (default: 0) and \b not the bits that are cleared!
+
+ \note Therefore it is possible to set damage bits with this method, but
+ this should be avoided. Use damage(uchar) instead.
+
+ \param[in] c new bitmask of damage flags (default: 0)
+ \see damage(uchar), damage()
+ */
+ void clear_damage(uchar c = 0) {damage_ = c;}
+
+ /** Sets the damage bits for the widget.
+ Setting damage bits will schedule the widget for the next redraw.
+ \param[in] c bitmask of flags to set
+ \see damage(), clear_damage(uchar)
+ */
+ void damage(uchar c);
+
+ /** Sets the damage bits for an area inside the widget.
+ Setting damage bits will schedule the widget for the next redraw.
+ \param[in] c bitmask of flags to set
+ \param[in] x, y, w, h size of damaged area
+ \see damage(), clear_damage(uchar)
+ */
+ void damage(uchar c, int x, int y, int w, int h);
+
+ void draw_label(int, int, int, int, Fl_Align) const;
+
+ /** Sets width ww and height hh accordingly with the label size.
+ Labels with images will return w() and h() of the image.
+ */
+ void measure_label(int& ww, int& hh) {label_.measure(ww, hh);}
+
+ /** Returns a pointer to the primary fltk3::Window widget.
+ \retval NULL if no window is associated with this widget.
+ \note for an fltk3::Window widget, this returns its <I>parent</I> window
+ (if any), not <I>this</I> window.
+ */
+ fltk3::Window* window() const ;
+
+ /** Returns an fltk3::Group pointer if this widget is an fltk3::Group.
+
+ \retval NULL if this widget is not derived from fltk3::Group.
+ \note This method is provided to avoid dynamic_cast.
+ \todo More documentation ...
+ */
+ virtual fltk3::Group* as_group() {return 0;}
+
+ /** Returns an fltk3::Window pointer if this widget is an fltk3::Window.
+
+ \retval NULL if this widget is not derived from fltk3::Window.
+ \note This method is provided to avoid dynamic_cast.
+ \todo More documentation ...
+ */
+ virtual fltk3::Window* as_window() {return 0;}
+
+ /** Returns an Fl_Gl_Window pointer if this widget is an Fl_Gl_Window.
+ \retval NULL if this widget is not derived from Fl_Gl_Window.
+ \note This method is provided to avoid dynamic_cast.
+ \todo More documentation ...
+ */
+ virtual class Fl_Gl_Window* as_gl_window() {return 0;}
+
+ /** For back compatibility only.
+ \deprecated Use selection_color() instead.
+ */
+ Fl_Color color2() const {return (Fl_Color)color2_;}
+
+ /** For back compatibility only.
+ \deprecated Use selection_color(unsigned) instead.
+ */
+ void color2(unsigned a) {color2_ = a;}
+};
+
+/**
+ Reserved type numbers (necessary for my cheapo RTTI) start here.
+ Grep the header files for "RESERVED_TYPE" to find the next available
+ number.
+*/
+#define FL_RESERVED_TYPE 100
+
+#endif
+
+//
+// End of "$Id: Widget.h 7365 2010-03-30 15:18:29Z matt $".
+//
Copied: branches/branch-3.0/fltk3/Window.h (from rev 7366, branches/branch-3.0/fltk3/Fl_Window.H)
===================================================================
--- branches/branch-3.0/fltk3/Window.h (rev 0)
+++ branches/branch-3.0/fltk3/Window.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,450 @@
+//
+// "$Id: Window.h 7365 2010-03-30 15:18:29Z matt $"
+//
+// Window header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2009 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+/* \file
+ fltk3::Window widget . */
+
+#ifndef Fl_Window_H
+#define Fl_Window_H
+
+#include "Group.h"
+
+#define FL_WINDOW 0xF0 ///< window type id all subclasses have type() >= this
+#define FL_DOUBLE_WINDOW 0xF1 ///< double window type id
+
+class Fl_X;
+
+/**
+ This widget produces an actual window. This can either be a main
+ window, with a border and title and all the window management controls,
+ or a "subwindow" inside a window. This is controlled by whether or not
+ the window has a parent().
+
+ Once you create a window, you usually add children fltk3::Widget
+ 's to it by using window->add(child) for each new widget.
+ See fltk3::Group for more information on how to add and remove children.
+
+ There are several subclasses of fltk3::Window that provide
+ double-buffering, overlay, menu, and OpenGL support.
+
+ The window's callback is done if the user tries to close a window
+ using the window manager and fltk3::modal() is zero or equal to the
+ window. fltk3::Window has a default callback that calls fltk3::Window::hide().
+*/
+class FL_EXPORT fltk3::Window : public fltk3::Group {
+
+ friend class ::Fl_X;
+ Fl_X *i; // points at the system-specific stuff
+
+ const char* iconlabel_;
+ const char* xclass_;
+ const void* icon_;
+ // size_range stuff:
+ int minw, minh, maxw, maxh;
+ int dw, dh, aspect;
+ uchar size_range_set;
+ // cursor stuff
+ Fl_Cursor cursor_default;
+ Fl_Color cursor_fg, cursor_bg;
+ void size_range_();
+ void _Fl_Window(); // constructor innards
+
+ // unimplemented copy ctor and assignment operator
+ Window(const fltk3::Window&);
+ Window& operator=(const fltk3::Window&);
+
+protected:
+
+ /** Stores the last window that was made current. See current() const */
+ static fltk3::Window *current_;
+ virtual void draw();
+ /** Forces the window to be drawn, this window is also made current and calls draw(). */
+ virtual void flush();
+
+ /**
+ Sets an internal flag that tells FLTK and the window manager to
+ honor position requests.
+
+ This is used internally and should not be needed by user code.
+
+ \param[in] force 1 to set the FORCE_POSITION flag, 0 to clear it
+ */
+ void force_position(int force) {
+ if (force) set_flag(FORCE_POSITION);
+ else clear_flag(FORCE_POSITION);
+ }
+ /**
+ Returns the internal state of the window's FORCE_POSITION flag.
+
+ \retval 1 if flag is set
+ \retval 0 otherwise
+
+ \see force_position(int)
+ */
+ int force_position() const { return ((flags() & FORCE_POSITION)?1:0); }
+
+public:
+
+ /**
+ Creates a window from the given size and title.
+ If fltk3::Group::current() is not NULL, the window is created as a
+ subwindow of the parent window.
+
+ The first form of the constructor creates a top-level window
+ and asks the window manager to position the window. The second
+ form of the constructor either creates a subwindow or a
+ top-level window at the specified location (x,y) , subject to window
+ manager configuration. If you do not specify the position of the
+ window, the window manager will pick a place to show the window
+ or allow the user to pick a location. Use position(x,y)
+ or hotspot() before calling show() to request a
+ position on the screen. See fltk3::Window::resize()
+ for some more details on positioning windows.
+
+ Top-level windows initially have visible() set to 0
+ and parent() set to NULL. Subwindows initially
+ have visible() set to 1 and parent() set to
+ the parent window pointer.
+
+ fltk3::Widget::box() defaults to FL_FLAT_BOX. If you plan to
+ completely fill the window with children widgets you should
+ change this to FL_NO_BOX. If you turn the window border off
+ you may want to change this to FL_UP_BOX.
+
+ \see fltk3::Window(int x, int y, int w, int h, const char* title = 0)
+ */
+ Window(int w, int h, const char* title= 0);
+ /** Creates a window from the given position, size and title.
+
+ \see fltk3::Window::Window(int w, int h, const char *title = 0)
+ */
+ Window(int x, int y, int w, int h, const char* title = 0);
+ /**
+ The destructor <I>also deletes all the children</I>. This allows a
+ whole tree to be deleted at once, without having to keep a pointer to
+ all the children in the user code. A kludge has been done so the
+ fltk3::Window and all of its children can be automatic (local)
+ variables, but you must declare the fltk3::Window <I>first</I> so
+ that it is destroyed last.
+ */
+ virtual ~Window();
+
+ virtual int handle(int);
+
+ /**
+ Changes the size and position of the window. If shown() is true,
+ these changes are communicated to the window server (which may
+ refuse that size and cause a further resize). If shown() is
+ false, the size and position are used when show() is called.
+ See fltk3::Group for the effect of resizing on the child widgets.
+
+ You can also call the fltk3::Widget methods size(x,y) and position(w,h),
+ which are inline wrappers for this virtual function.
+
+ A top-level window can not force, but merely suggest a position and
+ size to the operating system. The window manager may not be willing or
+ able to display a window at the desired position or with the given
+ dimensions. It is up to the application developer to verify window
+ parameters after the resize request.
+ */
+ virtual void resize(int,int,int,int);
+ /**
+ Sets whether or not the window manager border is around the
+ window. The default value is true. void border(int) can be
+ used to turn the border on and off. <I>Under most X window
+ managers this does not work after show() has been called,
+ although SGI's 4DWM does work.</I>
+ */
+ void border(int b);
+ /**
+ Fast inline function to turn the window manager border
+ off. It only works before show() is called.
+ */
+ void clear_border() {set_flag(NOBORDER);}
+ /** See void fltk3::Window::border(int) */
+ unsigned int border() const {return !(flags() & NOBORDER);}
+ /** Activates the flags NOBORDER|FL_OVERRIDE */
+ void set_override() {set_flag(NOBORDER|OVERRIDE);}
+ /** Returns non zero if FL_OVERRIDE flag is set, 0 otherwise. */
+ unsigned int override() const { return flags()&OVERRIDE; }
+ /**
+ A "modal" window, when shown(), will prevent any events from
+ being delivered to other windows in the same program, and will also
+ remain on top of the other windows (if the X window manager supports
+ the "transient for" property). Several modal windows may be shown at
+ once, in which case only the last one shown gets events. You can see
+ which window (if any) is modal by calling fltk3::modal().
+ */
+ void set_modal() {set_flag(MODAL);}
+ /** Returns true if this window is modal. */
+ unsigned int modal() const {return flags() & MODAL;}
+ /**
+ A "non-modal" window (terminology borrowed from Microsoft Windows)
+ acts like a modal() one in that it remains on top, but it has
+ no effect on event delivery. There are <I>three</I> states for a
+ window: modal, non-modal, and normal.
+ */
+ void set_non_modal() {set_flag(NON_MODAL);}
+ /** Returns true if this window is modal or non-modal. */
+ unsigned int non_modal() const {return flags() & (NON_MODAL|MODAL);}
+
+ /**
+ Marks the window as a menu window.
+
+ This is intended for internal use, but it can also be used if you
+ write your own menu handling. However, this is not recommended.
+
+ This flag is used for correct "parenting" of windows in communication
+ with the windowing system. Modern X window managers can use different
+ flags to distinguish menu and tooltip windows from normal windows.
+
+ This must be called before the window is shown and cannot be changed
+ later.
+ */
+ void set_menu_window() {set_flag(MENU_WINDOW);}
+
+ /** Returns true if this window is a menu window. */
+ unsigned int menu_window() const {return flags() & MENU_WINDOW;}
+
+ /**
+ Marks the window as a tooltip window.
+
+ This is intended for internal use, but it can also be used if you
+ write your own tooltip handling. However, this is not recommended.
+
+ This flag is used for correct "parenting" of windows in communication
+ with the windowing system. Modern X window managers can use different
+ flags to distinguish menu and tooltip windows from normal windows.
+
+ This must be called before the window is shown and cannot be changed
+ later.
+
+ \note Since Fl_Tooltip_Window is derived from Fl_Menu_Window, this
+ also \b clears the menu_window() state.
+ */
+ void set_tooltip_window() { set_flag(TOOLTIP_WINDOW);
+ clear_flag(MENU_WINDOW); }
+ /** Returns true if this window is a tooltip window. */
+ unsigned int tooltip_window() const {return flags() & TOOLTIP_WINDOW;}
+
+ /**
+ Positions the window so that the mouse is pointing at the given
+ position, or at the center of the given widget, which may be the
+ window itself. If the optional offscreen parameter is
+ non-zero, then the window is allowed to extend off the screen (this
+ does not work with some X window managers). \see position()
+ */
+ void hotspot(int x, int y, int offscreen = 0);
+ /** See void fltk3::Window::hotspot(int x, int y, int offscreen = 0) */
+ void hotspot(const fltk3::Widget*, int offscreen = 0);
+ /** See void fltk3::Window::hotspot(int x, int y, int offscreen = 0) */
+ void hotspot(const fltk3::Widget& p, int offscreen = 0) {hotspot(&p,offscreen);}
+
+ /**
+ Undoes the effect of a previous resize() or show() so that the next time
+ show() is called the window manager is free to position the window.
+
+ This is for Forms compatibility only.
+
+ \deprecated please use force_position(0) instead
+ */
+ void free_position() {clear_flag(FORCE_POSITION);}
+ /**
+ Sets the allowable range the user can resize this window to.
+ This only works for top-level windows.
+ <UL>
+ <LI>minw and minh are the smallest the window can be.
+ Either value must be greater than 0.</LI>
+ <LI>maxw and maxh are the largest the window can be. If either is
+ <I>equal</I> to the minimum then you cannot resize in that direction.
+ If either is zero then FLTK picks a maximum size in that direction
+ such that the window will fill the screen.</LI>
+ <LI>dw and dh are size increments. The window will be constrained
+ to widths of minw + N * dw, where N is any non-negative integer.
+ If these are less or equal to 1 they are ignored (this is ignored
+ on WIN32).</LI>
+ <LI>aspect is a flag that indicates that the window should preserve its
+ aspect ratio. This only works if both the maximum and minimum have
+ the same aspect ratio (ignored on WIN32 and by many X window managers).
+ </LI>
+ </UL>
+
+ If this function is not called, FLTK tries to figure out the range
+ from the setting of resizable():
+ <UL>
+ <LI>If resizable() is NULL (this is the default) then the window cannot
+ be resized and the resize border and max-size control will not be
+ displayed for the window.</LI>
+ <LI>If either dimension of resizable() is less than 100, then that is
+ considered the minimum size. Otherwise the resizable() has a minimum
+ size of 100.</LI>
+ <LI>If either dimension of resizable() is zero, then that is also the
+ maximum size (so the window cannot resize in that direction).</LI>
+ </UL>
+
+ It is undefined what happens if the current size does not fit in the
+ constraints passed to size_range().
+ */
+ void size_range(int a, int b, int c=0, int d=0, int e=0, int f=0, int g=0) {
+ minw=a; minh=b; maxw=c; maxh=d; dw=e; dh=f; aspect=g; size_range_();}
+
+ /** See void fltk3::Window::label(const char*) */
+ const char* label() const {return fltk3::Widget::label();}
+ /** See void fltk3::Window::iconlabel(const char*) */
+ const char* iconlabel() const {return iconlabel_;}
+ /** Sets the window title bar label. */
+ void label(const char*);
+ /** Sets the icon label. */
+ void iconlabel(const char*);
+ /** Sets the icon label. */
+ void label(const char* label, const char* iconlabel); // platform dependent
+ void copy_label(const char* a);
+ /** See void fltk3::Window::xclass(const char*) */
+ const char* xclass() const {return xclass_;}
+ /**
+ A string used to tell the system what type of window this is. Mostly
+ this identifies the picture to draw in the icon. <I>Under X, this is
+ turned into a XA_WM_CLASS pair by truncating at the first
+ non-alphanumeric character and capitalizing the first character, and
+ the second one if the first is 'x'. Thus "foo" turns into "foo, Foo",
+ and "xprog.1" turns into "xprog, XProg".</I> This only works if called <I>
+ before</I> calling show().
+
+ Under Microsoft Windows this string is used as the name of the
+ WNDCLASS structure, though it is not clear if this can have any
+ visible effect. The passed pointer is stored unchanged. The string
+ is not copied.
+ */
+ void xclass(const char* c) {xclass_ = c;}
+ /** Gets the current icon window target dependent data. */
+ const void* icon() const {return icon_;}
+ /** Sets the current icon window target dependent data. */
+ void icon(const void * ic) {icon_ = ic;}
+
+ /**
+ Returns non-zero if show() has been called (but not hide()
+ ). You can tell if a window is iconified with (w->shown()
+ && !w->visible()).
+ */
+ int shown() {return i != 0;}
+ /**
+ Puts the window on the screen. Usually (on X) this has the side
+ effect of opening the display. The second form is used for top-level
+ windows and allows standard arguments to be parsed from the
+ command-line.
+
+ If the window is already shown then it is restored and raised to the
+ top. This is really convenient because your program can call show()
+ at any time, even if the window is already up. It also means that
+ show() serves the purpose of raise() in other toolkits.
+ */
+ virtual void show();
+ /**
+ Removes the window from the screen. If the window is already hidden or
+ has not been shown then this does nothing and is harmless.
+ */
+ virtual void hide();
+ /**
+ See virtual void fltk3::Window::show()
+ */
+ void show(int, char**);
+ /**
+ Makes the window completely fill the screen, without any window
+ manager border visible. You must use fullscreen_off() to undo
+ this. This may not work with all window managers.
+ */
+ void fullscreen();
+ /**
+ Turns off any side effects of fullscreen() and does
+ resize(x,y,w,h).
+ */
+ void fullscreen_off(int,int,int,int);
+ /**
+ Iconifies the window. If you call this when shown() is false
+ it will show() it as an icon. If the window is already
+ iconified this does nothing.
+
+ Call show() to restore the window.
+
+ When a window is iconified/restored (either by these calls or by the
+ user) the handle() method is called with FL_HIDE and
+ FL_SHOW events and visible() is turned on and off.
+
+ There is no way to control what is drawn in the icon except with the
+ string passed to fltk3::Window::xclass(). You should not rely on
+ window managers displaying the icons.
+ */
+ void iconize();
+
+ int x_root() const ;
+ int y_root() const ;
+
+ static fltk3::Window *current();
+ /**
+ Sets things up so that the drawing functions in <fltk3/fl_draw.H> will go
+ into this window. This is useful for incremental update of windows, such
+ as in an idle callback, which will make your program behave much better
+ if it draws a slow graphic. <B>Danger: incremental update is very hard to
+ debug and maintain!</B>
+
+ This method only works for the fltk3::Window and Fl_Gl_Window derived classes.
+ */
+ void make_current();
+
+ /** Returns an fltk3::Window pointer if this widget is an fltk3::Window.
+
+ \retval NULL if this widget is not derived from fltk3::Window.
+ \note This method is provided to avoid dynamic_cast.
+ \todo More documentation ...
+ */
+ virtual fltk3::Window* as_window() { return this; }
+
+ // for back-compatibility only:
+ /**
+ Changes the cursor for this window. This always calls the system, if
+ you are changing the cursor a lot you may want to keep track of how
+ you set it in a static variable and call this only if the new cursor
+ is different.
+
+ The type Fl_Cursor is an enumeration defined in <fltk3/Enumerations.H>.
+ (Under X you can get any XC_cursor value by passing
+ Fl_Cursor((XC_foo/2)+1)). The colors only work on X, they are
+ not implemented on WIN32.
+
+ For back compatibility only.
+ */
+ void cursor(Fl_Cursor, Fl_Color=FL_BLACK, Fl_Color=FL_WHITE); // platform dependent
+ void default_cursor(Fl_Cursor, Fl_Color=FL_BLACK, Fl_Color=FL_WHITE);
+ static void default_callback(fltk3::Window*, void* v);
+
+};
+
+#endif
+
+//
+// End of "$Id: Window.h 7365 2010-03-30 15:18:29Z matt $".
+//
Modified: branches/branch-3.0/fltk3/fl_draw.H
===================================================================
--- branches/branch-3.0/fltk3/fl_draw.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/fl_draw.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,7 +34,7 @@
#define fl_draw_H
#include "Enumerations.H" // for the color names
-#include "Fl_Window.H" // for fl_set_spot()
+#include "Window.h" // for fl_set_spot()
#include "Fl_Device.H"
// Image class...
Modified: branches/branch-3.0/fltk3/forms.H
===================================================================
--- branches/branch-3.0/fltk3/forms.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/forms.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,9 +28,9 @@
#ifndef __FORMS_H__
#define __FORMS_H__
-#include "Fl.H"
-#include "Fl_Group.H"
-#include "Fl_Window.H"
+#include "run.h"
+#include "Group.h"
+#include "Window.h"
#include "fl_draw.H"
typedef fltk3::Widget FL_OBJECT;
Modified: branches/branch-3.0/fltk3/glut.H
===================================================================
--- branches/branch-3.0/fltk3/glut.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/glut.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -43,7 +43,7 @@
# include "gl.h"
-# include "Fl.H"
+# include "run.h"
# include "Fl_Gl_Window.H"
/**
Modified: branches/branch-3.0/fltk3/mac.H
===================================================================
--- branches/branch-3.0/fltk3/mac.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/mac.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -97,7 +97,7 @@
void fl_clip_region(Fl_Region);
-# include "Fl_Window.H"
+# include "Window.h"
// This object contains all mac-specific stuff about a window:
// WARNING: this object is highly subject to change!
Copied: branches/branch-3.0/fltk3/run.h (from rev 7366, branches/branch-3.0/fltk3/Fl.H)
===================================================================
--- branches/branch-3.0/fltk3/run.h (rev 0)
+++ branches/branch-3.0/fltk3/run.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,1087 @@
+//
+// "$Id: run.h 7365 2010-03-30 15:18:29Z matt $"
+//
+// Main header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2009 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+/* \file
+ Fl static class.
+ */
+
+#ifndef Fl_H
+# define Fl_H
+
+#ifdef HAVE_CAIRO
+# include <fltk3/Fl_Cairo.H>
+#endif
+
+# include "fl_utf8.h"
+# include "Enumerations.H"
+# ifndef Fl_Object
+# define Fl_Object fltk3::Widget /**< for back compatibility - use fltk3::Widget! */
+# endif
+
+# ifdef check
+# undef check
+# endif
+
+namespace fltk3 {
+ class Window;
+ class Widget;
+}
+
+class Fl_Image;
+struct Fl_Label;
+
+
+/** \defgroup callback_functions Callback function typedefs
+ \brief Typedefs for callback or handler functions passed as function parameters.
+
+ FLTK uses callback functions as parameters for some function calls, e.g. to
+ set up global event handlers (fltk3::add_handler()), to add a timeout handler
+ (fltk3::add_timeout()), and many more.
+
+ The typedefs defined in this group describe the function parameters used to set
+ up or clear the callback functions and should also be referenced to define the
+ callback function to handle such events in the user's code.
+
+ \see fltk3::add_handler(), fltk3::add_timeout(), fltk3::repeat_timeout(),
+ fltk3::remove_timeout() and others
+ @{ */
+
+/** signature of some label drawing functions passed as parameters */
+typedef void (Fl_Label_Draw_F)(const Fl_Label *label, int x, int y, int w, int h, Fl_Align align);
+
+/** signature of some label measurement functions passed as parameters */
+typedef void (Fl_Label_Measure_F)(const Fl_Label *label, int &width, int &height);
+
+/** signature of some box drawing functions passed as parameters */
+typedef void (Fl_Box_Draw_F)(int x, int y, int w, int h, Fl_Color color);
+
+/** signature of some timeout callback functions passed as parameters */
+typedef void (*Fl_Timeout_Handler)(void *data);
+
+/** signature of some wakeup callback functions passed as parameters */
+typedef void (*Fl_Awake_Handler)(void *data);
+
+/** signature of add_idle callback functions passed as parameters */
+typedef void (*Fl_Idle_Handler)(void *data);
+
+/** signature of set_idle callback functions passed as parameters */
+typedef void (*Fl_Old_Idle_Handler)();
+
+/** signature of add_fd functions passed as parameters */
+typedef void (*Fl_FD_Handler)(int fd, void *data);
+
+/** signature of add_handler functions passed as parameters */
+typedef int (*Fl_Event_Handler)(int event);
+
+/** signature of set_abort functions passed as parameters */
+typedef void (*Fl_Abort_Handler)(const char *format,...);
+
+/** signature of set_atclose functions passed as parameters */
+typedef void (*Fl_Atclose_Handler)(fltk3::Window *window, void *data);
+
+/** signature of args functions passed as parameters */
+typedef int (*Fl_Args_Handler)(int argc, char **argv, int &i);
+
+/** @} */ /* group callback_functions */
+
+/**
+ The fltk3 is the FLTK global (static) containing
+ state information and global methods for the current application.
+*/
+namespace fltk3 {
+
+#ifndef FL_DOXYGEN
+ extern int e_number;
+ extern int e_x;
+ extern int e_y;
+ extern int e_x_root;
+ extern int e_y_root;
+ extern int e_dx;
+ extern int e_dy;
+ extern int e_state;
+ extern int e_clicks;
+ extern int e_is_click;
+ extern int e_keysym;
+ extern char* e_text;
+ extern int e_length;
+ extern fltk3::Widget* belowmouse_;
+ extern fltk3::Widget* pushed_;
+ extern fltk3::Widget* focus_;
+ extern int damage_;
+ extern fltk3::Widget* selection_owner_;
+ extern fltk3::Window* modal_;
+ extern fltk3::Window* grab_;
+ extern int compose_state;
+ extern int visible_focus_;
+ extern int dnd_text_ops_;
+#endif
+ /**
+ If true then flush() will do something.
+ */
+ inline void damage(int d) {damage_ = d;}
+
+ /**
+ The currently executing idle callback function: DO NOT USE THIS DIRECTLY!
+
+ This is now used as part of a higher level system allowing multiple
+ idle callback functions to be called.
+ \see add_idle(), remove_idle()
+ */
+ extern void (*idle)();
+
+#ifndef FL_DOXYGEN
+ extern Fl_Awake_Handler *awake_ring_;
+ extern void **awake_data_;
+ extern int awake_ring_size_;
+ extern int awake_ring_head_;
+ extern int awake_ring_tail_;
+ extern const char* scheme_;
+ extern Fl_Image* scheme_bg_;
+
+ extern int e_original_keysym; // late addition
+ extern int scrollbar_size_;
+#endif
+
+
+ extern int add_awake_handler_(Fl_Awake_Handler, void*);
+ extern int get_awake_handler_(Fl_Awake_Handler&, void*&);
+
+/* public: */
+
+ // API version number
+ extern double version();
+
+ // argument parsers:
+ extern int arg(int, char**, int&);
+ extern int args(int, char**, int&, Fl_Args_Handler ah = 0);
+ extern void args(int, char**);
+ /**
+ Usage string displayed if fltk3::args() detects an invalid argument.
+ This may be changed to point to customized text at run-time.
+ */
+ extern const char* const help;
+
+ // things called by initialization:
+ extern void display(const char*);
+ extern int visual(int);
+ /**
+ This does the same thing as fltk3::visual(int) but also requires OpenGL
+ drawing to work. This <I>must</I> be done if you want to draw in
+ normal windows with OpenGL with gl_start() and gl_end().
+ It may be useful to call this so your X windows use the same visual
+ as an Fl_Gl_Window, which on some servers will reduce colormap flashing.
+
+ See Fl_Gl_Window for a list of additional values for the argument.
+ */
+ extern int gl_visual(int, int *alist=0); // platform dependent
+ extern void own_colormap();
+ extern void get_system_colors();
+ extern void foreground(uchar, uchar, uchar);
+ extern void background(uchar, uchar, uchar);
+ extern void background2(uchar, uchar, uchar);
+
+ // schemes:
+ extern int scheme(const char*);
+ /** See void scheme(const char *name) */
+ inline const char* scheme() {return scheme_;}
+ /**
+ Called by scheme according to scheme name.
+ Loads or reloads the current scheme selection.
+ See void scheme(const char *name)
+ */
+ extern int reload_scheme(); // platform dependent
+ extern int scrollbar_size();
+ extern void scrollbar_size(int W);
+
+ // execution:
+ extern int wait();
+ extern double wait(double time);
+ extern int check();
+ extern int ready();
+ extern int run();
+ extern fltk3::Widget* readqueue();
+ /**
+ Adds a one-shot timeout callback. The function will be called by
+ fltk3::wait() at <i>t</i> seconds after this function is called.
+ The optional void* argument is passed to the callback.
+
+ You can have multiple timeout callbacks. To remove a timeout
+ callback use fltk3::remove_timeout().
+
+ If you need more accurate, repeated timeouts, use fltk3::repeat_timeout() to
+ reschedule the subsequent timeouts.
+
+ The following code will print "TICK" each second on
+ stdout with a fair degree of accuracy:
+
+ \code
+ void callback(void*) {
+ puts("TICK");
+ fltk3::repeat_timeout(1.0, callback);
+ }
+
+ int main() {
+ fltk3::add_timeout(1.0, callback);
+ return fltk3::run();
+ }
+ \endcode
+ */
+ extern void add_timeout(double t, Fl_Timeout_Handler,void* = 0); // platform dependent
+ /**
+ Repeats a timeout callback from the expiration of the
+ previous timeout, allowing for more accurate timing. You may only call
+ this method inside a timeout callback.
+
+ The following code will print "TICK" each second on
+ stdout with a fair degree of accuracy:
+
+ \code
+ void callback(void*) {
+ puts("TICK");
+ fltk3::repeat_timeout(1.0, callback);
+ }
+
+ int main() {
+ fltk3::add_timeout(1.0, callback);
+ return fltk3::run();
+ }
+ \endcode
+ */
+ extern void repeat_timeout(double t, Fl_Timeout_Handler, void* = 0); // platform dependent
+ extern int has_timeout(Fl_Timeout_Handler, void* = 0);
+ extern void remove_timeout(Fl_Timeout_Handler, void* = 0);
+ extern void add_check(Fl_Timeout_Handler, void* = 0);
+ extern int has_check(Fl_Timeout_Handler, void* = 0);
+ extern void remove_check(Fl_Timeout_Handler, void* = 0);
+ /**
+ Adds file descriptor fd to listen to.
+
+ When the fd becomes ready for reading fltk3::wait() will call the
+ callback and then return. The callback is passed the fd and the
+ arbitrary void* argument.
+
+ The second version takes a when bitfield, with the bits
+ FL_READ, FL_WRITE, and FL_EXCEPT defined,
+ to indicate when the callback should be done.
+
+ There can only be one callback of each type for a file descriptor.
+ fltk3::remove_fd() gets rid of <I>all</I> the callbacks for a given
+ file descriptor.
+
+ Under UNIX <I>any</I> file descriptor can be monitored (files,
+ devices, pipes, sockets, etc.). Due to limitations in Microsoft Windows,
+ WIN32 applications can only monitor sockets.
+ */
+ extern void add_fd(int fd, int when, Fl_FD_Handler cb, void* = 0); // platform dependent
+ /** See void add_fd(int fd, int when, Fl_FD_Handler cb, void* = 0) */
+ extern void add_fd(int fd, Fl_FD_Handler cb, void* = 0); // platform dependent
+ /** Removes a file descriptor handler. */
+ extern void remove_fd(int, int when); // platform dependent
+ /** Removes a file descriptor handler. */
+ extern void remove_fd(int); // platform dependent
+
+ extern void add_idle(Fl_Idle_Handler cb, void* data = 0);
+ extern int has_idle(Fl_Idle_Handler cb, void* data = 0);
+ extern void remove_idle(Fl_Idle_Handler cb, void* data = 0);
+ /** If true then flush() will do something. */
+ inline int damage() {return damage_;}
+ extern void redraw();
+ extern void flush();
+ /** \addtogroup group_comdlg
+ @{ */
+ /**
+ FLTK calls fltk3::warning() to output a warning message.
+
+ The default version on Windows returns \e without printing a warning
+ message, because Windows programs normally don't have stderr (a console
+ window) enabled.
+
+ The default version on all other platforms prints the warning message to stderr.
+
+ You can override the behavior by setting the function pointer to your
+ own routine.
+
+ fltk3::warning() means that there was a recoverable problem, the display may
+ be messed up, but the user can probably keep working - all X protocol
+ errors call this, for example. The default implementation returns after
+ displaying the message.
+ */
+ extern void (*warning)(const char*, ...);
+ /**
+ FLTK calls fltk3::error() to output a normal error message.
+
+ The default version on Windows displays the error message in a MessageBox window.
+
+ The default version on all other platforms prints the error message to stderr.
+
+ You can override the behavior by setting the function pointer to your
+ own routine.
+
+ fltk3::error() means there is a recoverable error such as the inability to read
+ an image file. The default implementation returns after displaying the message.
+ */
+ extern void (*error)(const char*, ...);
+ /**
+ FLTK calls fltk3::fatal() to output a fatal error message.
+
+ The default version on Windows displays the error message in a MessageBox window.
+
+ The default version on all other platforms prints the error message to stderr.
+
+ You can override the behavior by setting the function pointer to your
+ own routine.
+
+ fltk3::fatal() must not return, as FLTK is in an unusable state, however your
+ version may be able to use longjmp or an exception to continue, as long as
+ it does not call FLTK again. The default implementation exits with status 1
+ after displaying the message.
+ */
+ extern void (*fatal)(const char*, ...);
+ /** @} */
+
+ /** \defgroup fl_windows Windows handling functions
+ Windows and standard dialogs handling
+ @{ */
+ extern fltk3::Window* first_window();
+ extern void first_window(fltk3::Window*);
+ extern fltk3::Window* next_window(const fltk3::Window*);
+
+ /**
+ Returns the top-most modal() window currently shown.
+
+ This is the most recently shown() window with modal() true, or NULL
+ if there are no modal() windows shown().
+ The modal() window has its handle() method called
+ for all events, and no other windows will have handle()
+ called (grab() overrides this).
+ */
+ inline fltk3::Window* modal() {return modal_;}
+ /**
+ This is used when pop-up menu systems are active.
+
+ Send all events to the passed window no matter where the pointer or
+ focus is (including in other programs). The window <I>does not have
+ to be shown()</I> , this lets the handle() method of a
+ "dummy" window override all event handling and allows you to
+ map and unmap a complex set of windows (under both X and WIN32
+ <I>some</I> window must be mapped because the system interface needs a
+ window id).
+
+ If grab() is on it will also affect show() of windows by doing
+ system-specific operations (on X it turns on override-redirect).
+ These are designed to make menus popup reliably
+ and faster on the system.
+
+ To turn off grabbing do fltk3::grab(0).
+
+ <I>Be careful that your program does not enter an infinite loop
+ while grab() is on. On X this will lock up your screen!</I>
+ To avoid this potential lockup, all newer operating systems seem to
+ limit mouse pointer grabbing to the time during which a mouse button
+ is held down. Some OS's may not support grabbing at all.
+ */
+ inline fltk3::Window* grab() {return grab_;}
+ /** Selects the window to grab. See fltk3::Window* fltk3::grab() */
+ extern void grab(fltk3::Window*); // platform dependent
+ /** @} */
+
+ /** \defgroup fl_events Events handling functions
+ fltk3 class events handling API
+ @{
+ */
+ // event information:
+ /**
+ Returns the last event that was processed. This can be used
+ to determine if a callback is being done in response to a
+ keypress, mouse click, etc.
+ */
+ inline int event() {return e_number;}
+ /**
+ Returns the mouse position of the event relative to the fltk3::Window
+ it was passed to.
+ */
+ inline int event_x() {return e_x;}
+ /**
+ Returns the mouse position of the event relative to the fltk3::Window
+ it was passed to.
+ */
+ inline int event_y() {return e_y;}
+ /**
+ Returns the mouse position on the screen of the event. To find the
+ absolute position of an fltk3::Window on the screen, use the
+ difference between event_x_root(),event_y_root() and
+ event_x(),event_y().
+ */
+ inline int event_x_root() {return e_x_root;}
+ /**
+ Returns the mouse position on the screen of the event. To find the
+ absolute position of an fltk3::Window on the screen, use the
+ difference between event_x_root(),event_y_root() and
+ event_x(),event_y().
+ */
+ inline int event_y_root() {return e_y_root;}
+ /**
+ Returns the current horizontal mouse scrolling associated with the
+ FL_MOUSEWHEEL event. Right is positive.
+ */
+ inline int event_dx() {return e_dx;}
+ /**
+ Returns the current vertical mouse scrolling associated with the
+ FL_MOUSEWHEEL event. Down is positive.
+ */
+ inline int event_dy() {return e_dy;}
+ /**
+ Return where the mouse is on the screen by doing a round-trip query to
+ the server. You should use fltk3::event_x_root() and
+ fltk3::event_y_root() if possible, but this is necessary if you are
+ not sure if a mouse event has been processed recently (such as to
+ position your first window). If the display is not open, this will
+ open it.
+ */
+ extern void get_mouse(int &,int &); // platform dependent
+ /**
+ Returns non zero if we had a double click event.
+ \retval Non-zero if the most recent FL_PUSH or FL_KEYBOARD was a "double click".
+ \retval N-1 for N clicks.
+ A double click is counted if the same button is pressed
+ again while event_is_click() is true.
+
+ */
+ inline int event_clicks() {return e_clicks;}
+ /**
+ Manually sets the number returned by fltk3::event_clicks().
+ This can be used to set it to zero so that
+ later code does not think an item was double-clicked.
+ \param[in] i corresponds to no double-click if 0, i+1 mouse clicks otherwise
+ \see int event_clicks()
+ */
+ inline void event_clicks(int i) {e_clicks = i;}
+ /**
+ The first form returns non-zero if the mouse has not moved far enough
+ and not enough time has passed since the last FL_PUSH or
+ FL_KEYBOARD event for it to be considered a "drag" rather than a
+ "click". You can test this on FL_DRAG, FL_RELEASE,
+ and FL_MOVE events. The second form clears the value returned
+ by fltk3::event_is_click(). Useful to prevent the <I>next</I>
+ click from being counted as a double-click or to make a popup menu
+ pick an item with a single click. Don't pass non-zero to this.
+ */
+ inline int event_is_click() {return e_is_click;}
+ /**
+ Only i=0 works! See int event_is_click().
+ */
+ inline void event_is_click(int i) {e_is_click = i;}
+ /**
+ Gets which particular mouse button caused the current event.
+ This returns garbage if the most recent event was not a FL_PUSH or FL_RELEASE event.
+ \retval FL_LEFT_MOUSE \retval FL_MIDDLE_MOUSE \retval FL_RIGHT_MOUSE.
+ \see fltk3::event_buttons()
+ */
+ inline int event_button() {return e_keysym-FL_Button;}
+ /**
+ This is a bitfield of what shift states were on and what mouse buttons
+ were held down during the most recent event. The second version
+ returns non-zero if any of the passed bits are turned on.
+ The legal bits are:
+
+ \li FL_SHIFT
+ \li FL_CAPS_LOCK
+ \li FL_CTRL
+ \li FL_ALT
+ \li FL_NUM_LOCK
+ \li FL_META
+ \li FL_SCROLL_LOCK
+ \li FL_BUTTON1
+ \li FL_BUTTON2
+ \li FL_BUTTON3
+
+ X servers do not agree on shift states, and FL_NUM_LOCK, FL_META, and
+ FL_SCROLL_LOCK may not work. The values were selected to match the
+ XFree86 server on Linux. In addition there is a bug in the way X works
+ so that the shift state is not correctly reported until the first event
+ <I>after</I> the shift key is pressed or released.
+ */
+ inline int event_state() {return e_state;}
+ /** See int event_state() */
+ inline int event_state(int i) {return e_state&i;}
+ /**
+ Gets which key on the keyboard was last pushed.
+
+ The returned integer 'key code' is not necessarily a text
+ equivalent for the keystroke. For instance: if someone presses '5' on the
+ numeric keypad with numlock on, fltk3::event_key() may return the 'key code'
+ for this key, and NOT the character '5'. To always get the '5', use fltk3::event_text() instead.
+
+ \returns an integer 'key code', or 0 if the last event was not a key press or release.
+ \see int event_key(int), event_text(), compose(int&).
+ */
+ inline int event_key() {return e_keysym;}
+ /**
+ Returns the keycode of the last key event, regardless of the NumLock state.
+
+ If NumLock is deactivated, FLTK translates events from the
+ numeric keypad into the corresponding arrow key events.
+ event_key() returns the translated key code, whereas
+ event_original_key() returns the keycode before NumLock translation.
+ */
+ inline int event_original_key(){return e_original_keysym;}
+ /**
+ Returns true if the given \p key was held
+ down (or pressed) <I>during</I> the last event. This is constant until
+ the next event is read from the server.
+
+ fltk3::get_key(int) returns true if the given key is held down <I>now</I>.
+ Under X this requires a round-trip to the server and is <I>much</I>
+ slower than fltk3::event_key(int).
+
+ Keys are identified by the <I>unshifted</I> values. FLTK defines a
+ set of symbols that should work on most modern machines for every key
+ on the keyboard:
+
+ \li All keys on the main keyboard producing a printable ASCII
+ character use the value of that ASCII character (as though shift,
+ ctrl, and caps lock were not on). The space bar is 32.
+ \li All keys on the numeric keypad producing a printable ASCII
+ character use the value of that ASCII character plus FL_KP.
+ The highest possible value is FL_KP_Last so you can
+ range-check to see if something is on the keypad.
+ \li All numbered function keys use the number on the function key plus
+ FL_F. The highest possible number is FL_F_Last, so you
+ can range-check a value.
+ \li Buttons on the mouse are considered keys, and use the button
+ number (where the left button is 1) plus FL_Button.
+ \li All other keys on the keypad have a symbol: FL_Escape,
+ FL_BackSpace, FL_Tab, FL_Enter, FL_Print, FL_Scroll_Lock, FL_Pause,
+ FL_Insert, FL_Home, FL_Page_Up, FL_Delete, FL_End, FL_Page_Down,
+ FL_Left, FL_Up, FL_Right, FL_Down, FL_Shift_L, FL_Shift_R,
+ FL_Control_L, FL_Control_R, FL_Caps_Lock, FL_Alt_L, FL_Alt_R,
+ FL_Meta_L, FL_Meta_R, FL_Menu, FL_Num_Lock, FL_KP_Enter. Be
+ careful not to confuse these with the very similar, but all-caps,
+ symbols used by fltk3::event_state().
+
+ On X fltk3::get_key(FL_Button+n) does not work.
+
+ On WIN32 fltk3::get_key(FL_KP_Enter) and fltk3::event_key(FL_KP_Enter) do not work.
+ */
+ extern int event_key(int key);
+ /**
+ Returns true if the given \p key is held down <I>now</I>.
+ Under X this requires a round-trip to the server and is <I>much</I>
+ slower than fltk3::event_key(int). \see event_key(int)
+ */
+ extern int get_key(int key); // platform dependent
+ /**
+ Returns the text associated with the current event, including FL_PASTE or FL_DND_RELEASE events.
+ This can be used in response to FL_KEYUP, FL_KEYDOWN, FL_PASTE, FL_DND_RELEASE.
+
+ When responding to FL_KEYUP/FL_KEYDOWN, use this function instead of fltk3::event_key()
+ to get the text equivalent of keystrokes suitable for inserting into strings
+ and text widgets.
+
+ The returned string is guaranteed to be be NULL terminated.
+ However, see fltk3::event_length() for the actual length of the string,
+ in case the string itself contains NULLs that are part of the text data.
+
+ \returns A NULL terminated text string equivalent of the last keystroke.
+ */
+ inline const char* event_text() {return e_text;}
+ /**
+ Returns the length of the text in fltk3::event_text(). There
+ will always be a nul at this position in the text. However there may
+ be a nul before that if the keystroke translates to a nul character or
+ you paste a nul character.
+ */
+ inline int event_length() {return e_length;}
+
+ extern int compose(int &del);
+ /**
+ If the user moves the cursor, be sure to call fltk3::compose_reset().
+ The next call to fltk3::compose() will start out in an initial state. In
+ particular it will not set "del" to non-zero. This call is very fast
+ so it is ok to call it many times and in many places.
+ */
+ inline void compose_reset() {compose_state = 0;}
+ extern int event_inside(int,int,int,int);
+ extern int event_inside(const fltk3::Widget*);
+ extern int test_shortcut(Fl_Shortcut);
+
+ // event destinations:
+ extern int handle(int, fltk3::Window*);
+ /** Gets the widget that is below the mouse.
+ \see belowmouse(fltk3::Widget*) */
+ inline fltk3::Widget* belowmouse() {return belowmouse_;}
+ extern void belowmouse(fltk3::Widget*);
+ /** Gets the widget that is being pushed.
+ \see void pushed(fltk3::Widget*) */
+ inline fltk3::Widget* pushed() {return pushed_;}
+ extern void pushed(fltk3::Widget*);
+ /** Gets the current fltk3::focus() widget. \sa fltk3::focus(fltk3::Widget*) */
+ inline fltk3::Widget* focus() {return focus_;}
+ extern void focus(fltk3::Widget*);
+ extern void add_handler(Fl_Event_Handler h);
+ extern void remove_handler(Fl_Event_Handler h);
+ /** @} */
+
+ /** \defgroup fl_clipboard Selection & Clipboard functions
+ fl global copy/cut/paste functions
+ @{ */
+ // cut/paste:
+ /**
+ Copies the data pointed to by \p stuff to the selection (0) or
+ primary (1) clipboard. The selection clipboard is used for
+ middle-mouse pastes and for drag-and-drop selections. The primary
+ clipboard is used for traditional copy/cut/paste operations.
+ */
+ extern void copy(const char* stuff, int len, int clipboard = 0); // platform dependent
+ /**
+ Pastes the data from the selection (0) or primary (1) clipboard into receiver.
+ The selection clipboard is used for middle-mouse pastes and for
+ drag-and-drop selections. The primary clipboard is used for
+ traditional copy/cut/paste operations.
+ */
+ extern void paste(fltk3::Widget &receiver, int clipboard /*=0*/); // platform dependent
+ /**
+ Initiate a Drag And Drop operation. The clipboard should be
+ filled with relevant data before calling this method. FLTK will
+ then initiate the system wide drag and drop handling. Dropped data
+ will be marked as <i>text</i>.
+ */
+ extern int dnd(); // platform dependent
+
+ // These are for back-compatibility only:
+ /** back-compatibility only: Gets the widget owning the current selection
+ \see fltk3::Widget* selection_owner(fltk3::Widget*) */
+ inline fltk3::Widget* selection_owner() {return selection_owner_;}
+ extern void selection_owner(fltk3::Widget*);
+ extern void selection(fltk3::Widget &owner, const char*, int len);
+ extern void paste(fltk3::Widget &receiver);
+/** @} */
+/** \defgroup fl_screen Screen functions
+ fl global screen functions
+ @{ */
+ // screen size:
+ /** Returns the origin of the current screen, where 0 indicates the left side of the screen. */
+ extern int x(); // platform dependent
+ /** Returns the origin of the current screen, where 0 indicates the top edge of the screen. */
+ extern int y(); // platform dependent
+ /** Returns the width of the screen in pixels. */
+ extern int w(); // platform dependent
+ /** Returns the height of the screen in pixels. */
+ extern int h(); // platform dependent
+
+ // multi-head support:
+ extern int screen_count();
+ /**
+ Gets the bounding box of a screen that contains the mouse pointer.
+ \param[out] X,Y,W,H the corresponding screen bounding box
+ \see void screen_xywh(int &x, int &y, int &w, int &h, int mx, int my)
+ */
+ extern void screen_xywh(int &X, int &Y, int &W, int &H, int mx, int my);
+ extern void screen_xywh(int &X, int &Y, int &W, int &H, int n);
+ inline void screen_xywh(int &X, int &Y, int &W, int &H) {
+ screen_xywh(X, Y, W, H, e_x_root, e_y_root);
+ }
+
+ /** @} */
+
+ /** \defgroup fl_attributes Color & Font functions
+ fl global color, font functions
+ @{ */
+
+ // color map:
+ extern void set_color(Fl_Color, uchar, uchar, uchar);
+ /**
+ Sets an entry in the fl_color index table. You can set it to any
+ 8-bit RGB color. The color is not allocated until fl_color(i) is used.
+ */
+ extern void set_color(Fl_Color, unsigned); // platform dependent
+ extern Fl_Color get_color(Fl_Color);
+ extern void get_color(Fl_Color, uchar&, uchar&, uchar&);
+ /**
+ Frees the specified color from the colormap, if applicable.
+ If overlay is non-zero then the color is freed from the
+ overlay colormap.
+ */
+ extern void free_color(Fl_Color, int overlay = 0); // platform dependent
+
+ // fonts:
+ extern const char* get_font(Fl_Font);
+ /**
+ Get a human-readable string describing the family of this face. This
+ is useful if you are presenting a choice to the user. There is no
+ guarantee that each face has a different name. The return value points
+ to a static buffer that is overwritten each call.
+
+ The integer pointed to by \p attributes (if the pointer is not
+ zero) is set to zero, FL_BOLD or FL_ITALIC or
+ FL_BOLD | FL_ITALIC. To locate a "family" of fonts, search
+ forward and back for a set with non-zero attributes, these faces along
+ with the face with a zero attribute before them constitute a family.
+ */
+ extern const char* get_font_name(Fl_Font, int* attributes = 0);
+ /**
+ Return an array of sizes in \p sizep. The return value is the
+ length of this array. The sizes are sorted from smallest to largest
+ and indicate what sizes can be given to fl_font() that will
+ be matched exactly (fl_font() will pick the closest size for
+ other sizes). A zero in the first location of the array indicates a
+ scalable font, where any size works, although the array may list sizes
+ that work "better" than others. Warning: the returned array
+ points at a static buffer that is overwritten each call. Under X this
+ will open the display.
+ */
+ extern int get_font_sizes(Fl_Font, int*& sizep);
+ extern void set_font(Fl_Font, const char*);
+ extern void set_font(Fl_Font, Fl_Font);
+ /**
+ FLTK will open the display, and add every fonts on the server to the
+ face table. It will attempt to put "families" of faces together, so
+ that the normal one is first, followed by bold, italic, and bold
+ italic.
+
+ The optional argument is a string to describe the set of fonts to
+ add. Passing NULL will select only fonts that have the
+ ISO8859-1 character set (and are thus usable by normal text). Passing
+ "-*" will select all fonts with any encoding as long as they have
+ normal X font names with dashes in them. Passing "*" will list every
+ font that exists (on X this may produce some strange output). Other
+ values may be useful but are system dependent. With WIN32 NULL
+ selects fonts with ISO8859-1 encoding and non-NULL selects
+ all fonts.
+
+ The return value is how many faces are in the table after this is done.
+ */
+ extern Fl_Font set_fonts(const char* = 0); // platform dependent
+
+ /** @} */
+ /** \defgroup fl_drawings Drawing functions
+ fl global graphics and gui drawing functions
+ @{ */
+ // <Hack to re-order the 'Drawing functions' group>
+ /** @} */
+
+ // labeltypes:
+ extern void set_labeltype(Fl_Labeltype,Fl_Label_Draw_F*,Fl_Label_Measure_F*);
+ /** Sets the functions to call to draw and measure a specific labeltype. */
+ extern void set_labeltype(Fl_Labeltype, Fl_Labeltype from); // is it defined ?
+
+ // boxtypes:
+ extern Fl_Box_Draw_F *get_boxtype(Fl_Boxtype);
+ extern void set_boxtype(Fl_Boxtype, Fl_Box_Draw_F*,uchar,uchar,uchar,uchar);
+ extern void set_boxtype(Fl_Boxtype, Fl_Boxtype from);
+ extern int box_dx(Fl_Boxtype);
+ extern int box_dy(Fl_Boxtype);
+ extern int box_dw(Fl_Boxtype);
+ extern int box_dh(Fl_Boxtype);
+ extern int draw_box_active();
+
+ // back compatibility:
+ /** \addtogroup fl_windows
+ @{ */
+ /** For back compatibility, sets the void fltk3::fatal handler callback */
+ inline void set_abort(Fl_Abort_Handler f) {fatal = f;}
+ extern void (*atclose)(fltk3::Window*,void*);
+ extern void default_atclose(fltk3::Window*,void*);
+ /** For back compatibility, sets the fltk3::atclose handler callback. You
+ can now simply change the callback for the window instead.
+ \see fltk3::Window::callback(Fl_Callback*) */
+ inline void set_atclose(Fl_Atclose_Handler f) {atclose = f;}
+ /** @} */
+
+ /** \addtogroup fl_events
+ @{ */
+ /** Returns non-zero if the Shift key is pressed. */
+ inline int event_shift() {return e_state&FL_SHIFT;}
+ /** Returns non-zero if the Control key is pressed. */
+ inline int event_ctrl() {return e_state&FL_CTRL;}
+ /** Returns non-zero if the FL_COMMAND key is pressed, either FL_CTRL or on OSX FL_META. */
+ inline int event_command() {return e_state&FL_COMMAND;}
+ /** Returns non-zero if the Alt key is pressed. */
+ inline int event_alt() {return e_state&FL_ALT;}
+ /**
+ Returns the mouse buttons state bits; if non-zero, then at least one
+ button is pressed now. This function returns the button state at the
+ time of the event. During an FL_RELEASE event, the state
+ of the released button will be 0. To find out, which button
+ caused an FL_RELEASE event, you can use fltk3::event_button() instead.
+ \return a bit mask value like { [FL_BUTTON1] | [FL_BUTTON2] | [FL_BUTTON3] }
+ */
+ inline int event_buttons() {return e_state&0x7f000000;}
+ /**
+ Returns non-zero if mouse button 1 is currently held down.
+ For more details, see fltk3::event_buttons().
+ */
+ inline int event_button1() {return e_state&FL_BUTTON1;}
+ /**
+ Returns non-zero if button 2 is currently held down.
+ For more details, see fltk3::event_buttons().
+ */
+ inline int event_button2() {return e_state&FL_BUTTON2;}
+ /**
+ Returns non-zero if button 3 is currently held down.
+ For more details, see fltk3::event_buttons().
+ */
+ inline int event_button3() {return e_state&FL_BUTTON3;}
+ /** @} */
+
+ /**
+ Sets an idle callback.
+
+ \deprecated This method is obsolete - use the add_idle() method instead.
+ */
+ inline void set_idle(Fl_Old_Idle_Handler cb) {idle = cb;}
+ /** See fltk3::Window* grab() */
+ inline void grab(fltk3::Window&win) {grab(&win);}
+ /** Releases the current grabbed window, equals grab(0).
+ \deprecated Use fltk3::grab(0) instead.
+ \see fltk3::Window* grab() */
+ inline void release() {grab(0);}
+
+ // Visible focus methods...
+ /**
+ Gets or sets the visible keyboard focus on buttons and other
+ non-text widgets. The default mode is to enable keyboard focus
+ for all widgets.
+ */
+ inline void visible_focus(int v) { visible_focus_ = v; }
+ /**
+ Gets or sets the visible keyboard focus on buttons and other
+ non-text widgets. The default mode is to enable keyboard focus
+ for all widgets.
+ */
+ inline int visible_focus() { return visible_focus_; }
+
+ // Drag-n-drop text operation methods...
+ /**
+ Gets or sets whether drag and drop text operations are supported.
+ This specifically affects whether selected text can
+ be dragged from text fields or dragged within a text field as a
+ cut/paste shortcut.
+ */
+ inline void dnd_text_ops(int v) { dnd_text_ops_ = v; }
+ /**
+ Gets or sets whether drag and drop text operations are
+ supported. This specifically affects whether selected text can
+ be dragged from text fields or dragged within a text field as a
+ cut/paste shortcut.
+ */
+ inline int dnd_text_ops() { return dnd_text_ops_; }
+ /** \defgroup fl_multithread Multithreading support functions
+ fl multithreading support functions
+ @{ */
+
+ // Multithreading support:
+ extern void lock();
+ extern void unlock();
+ extern void awake(void* message = 0);
+ /** See void awake(void* message=0). */
+ extern int awake(Fl_Awake_Handler cb, void* message = 0);
+ /**
+ The thread_message() method returns the last message
+ that was sent from a child by the awake() method.
+
+ See also: multithreading
+ */
+ extern void* thread_message(); // platform dependent
+ /** @} */
+
+ /** \defgroup fl_del_widget Safe widget deletion support functions
+
+ These functions support deletion of widgets inside callbacks.
+
+ fltk3::delete_widget() should be called when deleting widgets
+ or complete widget trees (fltk3::Group, fltk3::Window, ...) inside
+ callbacks.
+
+ The other functions are intended for internal use. The preferred
+ way to use them is by using the helper class Fl_Widget_Tracker.
+
+ The following is to show how it works ...
+
+ There are three groups of related methods:
+
+ -# scheduled widget deletion
+ - fltk3::delete_widget() schedules widgets for deletion
+ - fltk3::do_widget_deletion() deletes all scheduled widgets
+ -# widget watch list ("smart pointers")
+ - fltk3::watch_widget_pointer() adds a widget pointer to the watch list
+ - fltk3::release_widget_pointer() removes a widget pointer from the watch list
+ - fltk3::clear_widget_pointer() clears a widget pointer \e in the watch list
+ -# the class Fl_Widget_Tracker:
+ - the constructor calls fltk3::watch_widget_pointer()
+ - the destructor calls fltk3::release_widget_pointer()
+ - the access methods can be used to test, if a widget has been deleted
+ \see Fl_Widget_Tracker.
+
+ @{ */
+ // Widget deletion:
+ extern void delete_widget(fltk3::Widget *w);
+ extern void do_widget_deletion();
+ extern void watch_widget_pointer(fltk3::Widget *&w);
+ extern void release_widget_pointer(fltk3::Widget *&w);
+ extern void clear_widget_pointer(fltk3::Widget const *w);
+ /** @} */
+
+#ifdef HAVE_CAIRO
+ /** \defgroup group_cairo Cairo support functions and classes
+ @{
+ */
+/* public: */
+ // Cairo support API
+ extern cairo_t * cairo_make_current(fltk3::Window* w);
+ /** when HAVE_CAIRO is defined and cairo_autolink_context() is true,
+ any current window dc is linked to a current context.
+ This is not the default, because it may not be necessary
+ to add cairo support to all fltk supported windows.
+ When you wish to associate a cairo context in this mode,
+ you need to call explicitly in your draw() overridden method,
+ FL::cairo_make_current(fltk3::Window*). This will create a cairo context
+ but only for this Window.
+ Still in custom cairo application it is possible to handle
+ completely this process automatically by setting \p alink to true.
+ In this last case, you don't need anymore to call fltk3::cairo_make_current().
+ You can use fltk3::cairo_cc() to get the current cairo context anytime.
+ \note Only available when configure has the --enable-cairo option
+ */
+ inline void cairo_autolink_context(bool alink) {cairo_state_.autolink(alink);}
+ /**
+ Gets the current autolink mode for cairo support.
+ \retval false if no cairo context autolink is made for each window.
+ \retval true if any fltk window is attached a cairo context when it
+ is current. \see void cairo_autolink_context(bool alink)
+ \note Only available when configure has the --enable-cairo option
+ */
+ inline bool cairo_autolink_context() {return cairo_state_.autolink();}
+ /** Gets the current cairo context linked with a fltk window. */
+ inline cairo_t * cairo_cc() { return cairo_state_.cc(); }
+ /** Sets the current cairo context to \p c.
+ Set \p own to true if you want fltk to handle this cc deletion.
+ \note Only available when configure has the --enable-cairo option
+*/
+ inline void cairo_cc(cairo_t * c, bool own=false){ cairo_state_.cc(c, own); }
+
+/* private: */
+ extern cairo_t * cairo_make_current(void* gc);
+ extern cairo_t * cairo_make_current(void* gc, int W, int H);
+ extern Fl_Cairo_State cairo_state_;
+/* public: */
+ /** @} */
+
+#endif // HAVE_CAIRO
+
+};
+
+/**
+ This class should be used to control safe widget deletion.
+
+ You can use an Fl_Widget_Tracker object to watch another widget, if you
+ need to know, if this widget has been deleted during a callback.
+
+ This simplifies the use of the "safe widget deletion" methods
+ fltk3::watch_widget_pointer() and fltk3::release_widget_pointer() and
+ makes their use more reliable, because the destructor autmatically
+ releases the widget pointer from the widget watch list.
+
+ It is intended to be used as an automatic (local/stack) variable,
+ such that the automatic destructor is called when the object's
+ scope is left. This ensures that no stale widget pointers are
+ left in the widget watch list (see example below).
+
+ You can also create Fl_Widget_Tracker objects with \c new, but then it
+ is your responsibility to delete the object (and thus remove the
+ widget pointer from the watch list) when it is not needed any more.
+
+ Example:
+
+ \code
+ int MyClass::handle (int event) {
+
+ if (...) {
+ Fl_Widget_Tracker wp(this); // watch myself
+ do_callback(); // call the callback
+
+ if (wp.deleted()) return 1; // exit, if deleted
+
+ // Now we are sure that the widget has not been deleted.
+ // It is safe to access the widget
+
+ clear_changed(); // access the widget
+ }
+ }
+ \endcode
+
+*/
+class FL_EXPORT Fl_Widget_Tracker {
+
+ fltk3::Widget* wp_;
+
+public:
+
+ Fl_Widget_Tracker(fltk3::Widget *wi);
+ ~Fl_Widget_Tracker();
+
+ /**
+ Returns a pointer to the watched widget.
+
+ This pointer is \c NULL, if the widget has been deleted.
+ */
+ fltk3::Widget *widget() {return wp_;}
+
+ /**
+ Returns 1, if the watched widget has been deleted.
+
+ This is a convenience method. You can also use something like
+
+ <tt> if (wp.widget() == 0) // ...</tt>
+
+ where \p wp is an Fl_Widget_Tracker object.
+ */
+ int deleted() {return wp_ == 0;}
+
+ /**
+ Returns 1, if the watched widget exists (has not been deleted).
+
+ This is a convenience method. You can also use something like
+
+ <tt> if (wp.widget() != 0) // ...</tt>
+
+ where \p wp is an Fl_Widget_Tracker object.
+ */
+ int exists() {return wp_ != 0;}
+
+};
+
+ /** \defgroup fl_unicode Unicode and UTF-8 functions
+ fl global Unicode and UTF-8 handling functions
+ @{ */
+ /** @} */
+
+#endif // !Fl_H
+
+//
+// End of "$Id: run.h 7365 2010-03-30 15:18:29Z matt $".
+//
Modified: branches/branch-3.0/fltk3/win32.H
===================================================================
--- branches/branch-3.0/fltk3/win32.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/win32.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -66,7 +66,7 @@
#define XMapWindow(a,b) ShowWindow(b, SW_RESTORE)
#define XUnmapWindow(a,b) ShowWindow(b, SW_HIDE)
-#include "Fl_Window.H"
+#include "Window.h"
// this object contains all win32-specific stuff about a window:
// Warning: this object is highly subject to change!
class FL_EXPORT Fl_X {
Modified: branches/branch-3.0/fltk3/x.H
===================================================================
--- branches/branch-3.0/fltk3/x.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/fltk3/x.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -49,7 +49,7 @@
# pragma reset woff 3322
# endif
# include <X11/Xatom.h>
-# include "Fl_Window.H"
+# include "Window.h"
# include "Xutf8.h"
// Mirror X definition of Region to Fl_Region, for portability...
typedef Region Fl_Region;
Modified: branches/branch-3.0/ide/Xcode3/FLTK.xcodeproj/project.pbxproj
===================================================================
--- branches/branch-3.0/ide/Xcode3/FLTK.xcodeproj/project.pbxproj 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/ide/Xcode3/FLTK.xcodeproj/project.pbxproj 2010-03-30 19:10:49 UTC (rev 7368)
@@ -459,12 +459,12 @@
C9039A6D472AFBDB4D5D3581 /* fltkgl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4AED96DAF2EDB1950E04795 /* fltkgl.framework */; };
C9603E2EF91824FAFDAB4652 /* device.cxx in Sources */ = {isa = PBXBuildFile; fileRef = AE541F73BF89F614E5BCC604 /* device.cxx */; };
C9C84B2983DC793B141DDC70 /* ide_maketools.cxx in Sources */ = {isa = PBXBuildFile; fileRef = B65FCD2B8489E2BBAA3F695A /* ide_maketools.cxx */; };
- C9C9078F11626697006C5014 /* hello.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 388A5267639C2CEEDD762C41 /* hello.cxx */; };
C9C9079111626697006C5014 /* fltk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F459EEE32AC6EE0087583065 /* fltk.framework */; };
C9C9079311626697006C5014 /* fltk.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = F459EEE32AC6EE0087583065 /* fltk.framework */; };
- C9C907A9116266AA006C5014 /* hello.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 388A5267639C2CEEDD762C41 /* hello.cxx */; };
C9C907AB116266AA006C5014 /* fltk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F459EEE32AC6EE0087583065 /* fltk.framework */; };
C9C907AD116266AA006C5014 /* fltk.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = F459EEE32AC6EE0087583065 /* fltk.framework */; };
+ C9C90822116270B8006C5014 /* hello2.cxx in Sources */ = {isa = PBXBuildFile; fileRef = C9C9081E116270B8006C5014 /* hello2.cxx */; };
+ C9C90823116270B8006C5014 /* hello1.cxx in Sources */ = {isa = PBXBuildFile; fileRef = C9C9081D116270B8006C5014 /* hello1.cxx */; };
CA0BD11A864DD8E6018DDC43 /* Fl_File_Input.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 19E46DC28A1945E3BB3FA0EC /* Fl_File_Input.cxx */; };
CA29F412020993F3D156CA64 /* jdinput.c in Sources */ = {isa = PBXBuildFile; fileRef = E28D295E888C8D18A99E45DB /* jdinput.c */; };
CAE74E0204978B1EE0CB2685 /* fltkimages.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 23AEAC354D12FE5A50BF85B5 /* fltkimages.framework */; };
@@ -4019,6 +4019,8 @@
C9C907A011626698006C5014 /* hello-Info copy.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "hello-Info copy.plist"; path = "plists/hello-Info copy.plist"; sourceTree = "<group>"; };
C9C907B2116266AA006C5014 /* hello.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = hello.app; sourceTree = BUILT_PRODUCTS_DIR; };
C9C907BA116266AB006C5014 /* hello-Info copy 2.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "hello-Info copy 2.plist"; path = "plists/hello-Info copy 2.plist"; sourceTree = "<group>"; };
+ C9C9081D116270B8006C5014 /* hello1.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = hello1.cxx; path = ../../test/hello1.cxx; sourceTree = SOURCE_ROOT; };
+ C9C9081E116270B8006C5014 /* hello2.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = hello2.cxx; path = ../../test/hello2.cxx; sourceTree = SOURCE_ROOT; };
C9F70AA7DF730564A9DD1BFD /* pngwtran.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngwtran.c; path = ../../png/pngwtran.c; sourceTree = SOURCE_ROOT; };
CA38333A14E4BA43F4E01CAA /* fl_show_colormap.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_show_colormap.cxx; path = ../../src/fl_show_colormap.cxx; sourceTree = SOURCE_ROOT; };
CA39566FD1F25D47C83DE042 /* glut_font.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = glut_font.cxx; path = ../../src/glut_font.cxx; sourceTree = SOURCE_ROOT; };
@@ -5223,6 +5225,8 @@
isa = PBXGroup;
children = (
388A5267639C2CEEDD762C41 /* hello.cxx */,
+ C9C9081D116270B8006C5014 /* hello1.cxx */,
+ C9C9081E116270B8006C5014 /* hello2.cxx */,
);
name = hello;
sourceTree = "<group>";
@@ -9020,7 +9024,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- C9C9078F11626697006C5014 /* hello.cxx in Sources */,
+ C9C90823116270B8006C5014 /* hello1.cxx in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -9028,7 +9032,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- C9C907A9116266AA006C5014 /* hello.cxx in Sources */,
+ C9C90822116270B8006C5014 /* hello2.cxx in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Modified: branches/branch-3.0/src/Fl.cxx
===================================================================
--- branches/branch-3.0/src/Fl.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,8 +31,8 @@
// to implement clipping. This should be changed into pure
// Quartz calls in the near future.
#include "config.h"
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/run.h>
+#include <fltk3/Window.h>
#include <fltk3/x.H>
#include <fltk3/Fl_Tooltip.H>
#include <ctype.h>
Modified: branches/branch-3.0/src/Fl_Abstract_Printer.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Abstract_Printer.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Abstract_Printer.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
\brief implementation of class Fl_Abstract_Printer.
*/
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Printer.H>
/**
Modified: branches/branch-3.0/src/Fl_Adjuster.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Adjuster.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Adjuster.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Adjuster.H>
#include <fltk3/Fl_Bitmap.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/Fl_Bitmap.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Bitmap.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Bitmap.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,10 +31,10 @@
/** \fn Fl_Bitmap::Fl_Bitmap(const unsigned char *array, int W, int H)
The constructors create a new bitmap from the specified bitmap data.*/
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
#include <fltk3/fl_draw.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/Widget.h>
#include <fltk3/Fl_Menu_Item.H>
#include <fltk3/Fl_Bitmap.H>
#include "flstring.h"
Modified: branches/branch-3.0/src/Fl_Box.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Box.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Box.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/Widget.h>
#include <fltk3/Fl_Box.H>
void Fl_Box::draw() {
Modified: branches/branch-3.0/src/Fl_Browser.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Browser.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Browser.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Browser.H>
#include <fltk3/fl_draw.H>
#include "flstring.h"
Modified: branches/branch-3.0/src/Fl_Browser_.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Browser_.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Browser_.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,8 +28,8 @@
#define DISPLAY_SEARCH_BOTH_WAYS_AT_ONCE
#include <stdio.h>
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
#include <fltk3/Fl_Browser_.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/Fl_Browser_load.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Browser_load.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Browser_load.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Browser.H>
#include <stdio.h>
#include <fltk3/fl_utf8.h>
Modified: branches/branch-3.0/src/Fl_Button.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Button.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Button.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,10 +25,10 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Button.H>
-#include <fltk3/Fl_Group.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Group.h>
+#include <fltk3/Window.h>
// There are a lot of subclasses, named Fl_*_Button. Some of
// them are implemented by setting the type() value and testing it
Modified: branches/branch-3.0/src/Fl_Chart.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Chart.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Chart.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
//
#include <fltk3/math.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Chart.H>
#include <fltk3/fl_draw.H>
#include "flstring.h"
Modified: branches/branch-3.0/src/Fl_Check_Button.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Check_Button.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Check_Button.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Check_Button.H>
// TODO Correct incorrect Fl_Check_Button comments.
Modified: branches/branch-3.0/src/Fl_Choice.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Choice.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Choice.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Choice.H>
#include <fltk3/fl_draw.H>
#include "flstring.h"
Modified: branches/branch-3.0/src/Fl_Clock.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Clock.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Clock.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Clock.H>
#include <fltk3/fl_draw.H>
#include <math.h>
Modified: branches/branch-3.0/src/Fl_Color_Chooser.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Color_Chooser.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Color_Chooser.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,9 +25,9 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Color_Chooser.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
#include <fltk3/Fl_Box.H>
#include <fltk3/Fl_Return_Button.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/Fl_Counter.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Counter.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Counter.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Counter.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/Fl_Device.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Device.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Device.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Device.H>
//#include <fltk3/fl_draw.H>
#include <fltk3/Fl_Image.H>
Modified: branches/branch-3.0/src/Fl_Dial.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Dial.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Dial.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Dial.H>
#include <fltk3/fl_draw.H>
#include <stdlib.h>
Modified: branches/branch-3.0/src/Fl_Double_Window.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Double_Window.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Double_Window.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
//
#include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Double_Window.H>
#include <fltk3/x.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/Fl_File_Icon.cxx
===================================================================
--- branches/branch-3.0/src/Fl_File_Icon.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_File_Icon.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -56,7 +56,7 @@
#endif /* WIN32 || __EMX__ */
#include <fltk3/Fl_File_Icon.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/Widget.h>
#include <fltk3/fl_draw.H>
#include <fltk3/filename.H>
Modified: branches/branch-3.0/src/Fl_File_Icon2.cxx
===================================================================
--- branches/branch-3.0/src/Fl_File_Icon2.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_File_Icon2.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -63,7 +63,7 @@
#include <fltk3/Fl_File_Icon.H>
#include <fltk3/Fl_Shared_Image.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/Widget.h>
#include <fltk3/fl_draw.H>
#include <fltk3/filename.H>
Modified: branches/branch-3.0/src/Fl_File_Input.cxx
===================================================================
--- branches/branch-3.0/src/Fl_File_Input.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_File_Input.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,9 +26,9 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_File_Input.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
#include <fltk3/fl_draw.H>
#include <stdio.h>
#include "flstring.h"
Modified: branches/branch-3.0/src/Fl_Font.H
===================================================================
--- branches/branch-3.0/src/Fl_Font.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Font.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -38,7 +38,7 @@
# if USE_XFT
typedef struct _XftFont XftFont;
# elif !defined(WIN32) && !defined(__APPLE__)
-# include <FL/Xutf8.h>
+# include <fltk3/Xutf8.h>
# endif // USE_XFT
/**
Modified: branches/branch-3.0/src/Fl_GDI_Printer.cxx
===================================================================
--- branches/branch-3.0/src/Fl_GDI_Printer.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_GDI_Printer.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,11 +26,11 @@
//
#ifdef WIN32
-#include <FL/Fl_Printer.H>
+#include <fltk3/Fl_Printer.H>
-#include <FL/fl_ask.H>
-#include <FL/math.h>
+#include <fltk3/fl_ask.H>
+#include <fltk3/math.h>
extern HWND fl_window;
Modified: branches/branch-3.0/src/Fl_GIF_Image.cxx
===================================================================
--- branches/branch-3.0/src/Fl_GIF_Image.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_GIF_Image.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
// Include necessary header files...
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_GIF_Image.H>
#include <stdio.h>
#include <stdlib.h>
Modified: branches/branch-3.0/src/Fl_Gl_Choice.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Gl_Choice.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Gl_Choice.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
#include <config.h>
#if HAVE_GL
-# include <fltk3/Fl.H>
+# include <fltk3/run.h>
# include <fltk3/x.H>
# include <stdlib.h>
# include "Fl_Gl_Choice.H"
@@ -37,7 +37,7 @@
# include <fltk3/fl_utf8.h>
# ifdef __APPLE__
-# include <fltk3/Fl_Window.H>
+# include <fltk3/Window.h>
# include <Carbon/Carbon.h>
# endif
Modified: branches/branch-3.0/src/Fl_Gl_Device_Plugin.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Gl_Device_Plugin.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Gl_Device_Plugin.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
#include <fltk3/Fl_Printer.H>
#include <fltk3/Fl_Gl_Window.H>
#include "Fl_Gl_Choice.H"
-#include "fltk3/Fl.H"
+#include "fltk3/run.h"
#ifndef __APPLE__
#include "fltk3/fl_draw.H"
#endif
Modified: branches/branch-3.0/src/Fl_Gl_Overlay.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Gl_Overlay.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Gl_Overlay.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
#include <config.h>
#if HAVE_GL
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
#include "Fl_Gl_Choice.H"
#include <fltk3/Fl_Gl_Window.H>
Modified: branches/branch-3.0/src/Fl_Gl_Window.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Gl_Window.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Gl_Window.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
static int temp = fl_gl_load_plugin;
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
#include "Fl_Gl_Choice.H"
#include <fltk3/Fl_Gl_Window.H>
Modified: branches/branch-3.0/src/Fl_Group.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Group.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Group.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,9 +31,9 @@
// handling is designed so windows themselves work correctly.
#include <stdio.h>
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Group.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/run.h>
+#include <fltk3/Group.h>
+#include <fltk3/Window.h>
#include <fltk3/fl_draw.H>
#include <stdlib.h>
Modified: branches/branch-3.0/src/Fl_Help_View.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Help_View.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Help_View.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -56,7 +56,7 @@
//
#include <fltk3/Fl_Help_View.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
#include <fltk3/Fl_Pixmap.H>
#include <fltk3/x.H>
#include <stdio.h>
Modified: branches/branch-3.0/src/Fl_Image.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Image.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Image.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,10 +25,10 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_draw.H>
#include <fltk3/x.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/Widget.h>
#include <fltk3/Fl_Menu_Item.H>
#include <fltk3/Fl_Image.H>
#include "flstring.h"
Modified: branches/branch-3.0/src/Fl_Input.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Input.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Input.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -33,8 +33,8 @@
#include <stdio.h>
#include <stdlib.h>
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/run.h>
+#include <fltk3/Window.h>
#include <fltk3/Fl_Input.H>
#include <fltk3/fl_draw.H>
#include <fltk3/fl_ask.H>
Modified: branches/branch-3.0/src/Fl_Input_.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Input_.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Input_.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,9 +25,9 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Input_.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
#include <fltk3/fl_draw.H>
#include <fltk3/fl_ask.H>
#include <math.h>
Modified: branches/branch-3.0/src/Fl_Light_Button.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Light_Button.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Light_Button.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
// The default down_box of zero draws a rectangle designed to look
// just like Flame's buttons.
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Light_Button.H>
#include <fltk3/fl_draw.H>
#include "flstring.h"
Modified: branches/branch-3.0/src/Fl_Menu.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Menu.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Menu.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
// methods for bringing up popup menu hierarchies without using the
// Fl_Menu_ widget.
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Menu_Window.H>
#include <fltk3/Fl_Menu_.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/Fl_Menu_.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Menu_.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Menu_.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
// More code in Fl_Menu_add.cxx
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Menu_.H>
#include "flstring.h"
#include <stdio.h>
Modified: branches/branch-3.0/src/Fl_Menu_Bar.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Menu_Bar.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Menu_Bar.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Menu_Bar.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/Fl_Menu_Button.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Menu_Button.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Menu_Button.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Menu_Button.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/Fl_Menu_Window.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Menu_Window.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Menu_Window.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -33,7 +33,7 @@
// can be used to dismiss the menus.
#include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
#include <fltk3/fl_draw.H>
#include <fltk3/Fl_Menu_Window.H>
Modified: branches/branch-3.0/src/Fl_Menu_global.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Menu_global.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Menu_global.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
// Currently only one menu at a time and you cannot destruct the menu,
// is this sufficient?
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Menu_.H>
static Fl_Menu_* the_widget;
Modified: branches/branch-3.0/src/Fl_Multi_Label.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Multi_Label.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Multi_Label.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,8 +28,8 @@
// Allows two labels to be used on a widget (by having one of them
// be one of these it allows an infinte number!)
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
#include <fltk3/Fl_Menu_Item.H>
#include <fltk3/Fl_Multi_Label.H>
Modified: branches/branch-3.0/src/Fl_Native_File_Chooser_MAC.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Native_File_Chooser_MAC.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Native_File_Chooser_MAC.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -38,7 +38,7 @@
#include <sys/stat.h> // stat(2)
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Native_File_Chooser.H>
#include <fltk3/filename.H>
Modified: branches/branch-3.0/src/Fl_Native_File_Chooser_WIN32.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Native_File_Chooser_WIN32.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Native_File_Chooser_WIN32.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -39,7 +39,7 @@
LPCWSTR utf8towchar(const char *in); //MG
char *wchartoutf8(LPCWSTR in); //MG
-#include <FL/Fl_Native_File_Chooser.H>
+#include <fltk3/Fl_Native_File_Chooser.H>
#define LCURLY_CHR '{'
#define RCURLY_CHR '}'
Modified: branches/branch-3.0/src/Fl_Native_File_Chooser_common.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Native_File_Chooser_common.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Native_File_Chooser_common.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
//
#include <string.h>
-#include <FL/Enumerations.H>
+#include <fltk3/Enumerations.H>
// COPY A STRING WITH 'new'
// Value can be NULL
Modified: branches/branch-3.0/src/Fl_Overlay_Window.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Overlay_Window.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Overlay_Window.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -37,7 +37,7 @@
// possible, otherwise it just draws in the front buffer.
#include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Overlay_Window.H>
#include <fltk3/fl_draw.H>
#include <fltk3/x.H>
Modified: branches/branch-3.0/src/Fl_PNG_Image.cxx
===================================================================
--- branches/branch-3.0/src/Fl_PNG_Image.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_PNG_Image.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
// Include necessary header files...
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_PNG_Image.H>
#include <config.h>
#include <stdio.h>
Modified: branches/branch-3.0/src/Fl_PNM_Image.cxx
===================================================================
--- branches/branch-3.0/src/Fl_PNM_Image.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_PNM_Image.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,7 +34,7 @@
// Include necessary header files...
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_PNM_Image.H>
#include <stdio.h>
#include <stdlib.h>
Modified: branches/branch-3.0/src/Fl_PS_Printer.cxx
===================================================================
--- branches/branch-3.0/src/Fl_PS_Printer.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_PS_Printer.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_ask.H>
#include <fltk3/fl_draw.H>
#include <stdio.h>
Modified: branches/branch-3.0/src/Fl_Pack.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Pack.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Pack.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,7 +30,7 @@
// them on each redraw (only if box() is zero)
// Bugs: ?
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Pack.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/Fl_Pixmap.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Pixmap.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Pixmap.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -41,10 +41,10 @@
// Implemented without using the xpm library (which I can't use because
// it interferes with the color cube used by fl_draw_image).
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_draw.H>
#include <fltk3/x.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/Widget.h>
#include <fltk3/Fl_Menu_Item.H>
#include <fltk3/Fl_Pixmap.H>
Modified: branches/branch-3.0/src/Fl_Positioner.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Positioner.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Positioner.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
// The positioner widget from Forms, gives 2D input
// Written by: Mark Overmars
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Positioner.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/Fl_Preferences.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Preferences.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Preferences.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Preferences.H>
#include <fltk3/Fl_Plugin.H>
#include <fltk3/Fl_Tree.H>
Modified: branches/branch-3.0/src/Fl_Progress.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Progress.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Progress.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
// Include necessary header files...
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Progress.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/Fl_Quartz_Printer.mm
===================================================================
--- branches/branch-3.0/src/Fl_Quartz_Printer.mm 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Quartz_Printer.mm 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
#ifdef __APPLE__
#include <fltk3/Fl_Printer.H>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_ask.H>
#include <fltk3/fl_draw.H>
#import <Cocoa/Cocoa.h>
Modified: branches/branch-3.0/src/Fl_Repeat_Button.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Repeat_Button.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Repeat_Button.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Repeat_Button.H>
#define INITIALREPEAT .5
Modified: branches/branch-3.0/src/Fl_Return_Button.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Return_Button.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Return_Button.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Return_Button.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/Fl_Roller.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Roller.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Roller.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -27,7 +27,7 @@
// Rapid-App style knob
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Roller.H>
#include <fltk3/fl_draw.H>
#include <math.h>
Modified: branches/branch-3.0/src/Fl_Round_Button.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Round_Button.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Round_Button.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
// circle is smaller than the widget size and can be surrounded by
// another box type, for compatibility with Forms.
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Round_Button.H>
/**
Modified: branches/branch-3.0/src/Fl_Scroll.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Scroll.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Scroll.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Tiled_Image.H>
#include <fltk3/Fl_Scroll.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/Fl_Scrollbar.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Scrollbar.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Scrollbar.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Scrollbar.H>
#include <fltk3/fl_draw.H>
#include <math.h>
Modified: branches/branch-3.0/src/Fl_Shared_Image.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Shared_Image.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Shared_Image.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,7 +30,7 @@
#include <fltk3/fl_utf8.h>
#include "flstring.h"
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Shared_Image.H>
#include <fltk3/Fl_XBM_Image.H>
#include <fltk3/Fl_XPM_Image.H>
Modified: branches/branch-3.0/src/Fl_Slider.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Slider.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Slider.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Slider.H>
#include <fltk3/fl_draw.H>
#include <math.h>
Modified: branches/branch-3.0/src/Fl_Sys_Menu_Bar.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Sys_Menu_Bar.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Sys_Menu_Bar.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -55,7 +55,7 @@
#if defined(__APPLE__) || defined(FL_DOXYGEN)
#include <fltk3/x.H>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Sys_Menu_Bar.H>
#include "flstring.h"
Modified: branches/branch-3.0/src/Fl_Table_Row.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Table_Row.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Table_Row.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
//
#include <stdio.h> // for debugging
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_draw.H>
#include <fltk3/Fl_Table_Row.H>
Modified: branches/branch-3.0/src/Fl_Tabs.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Tabs.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Tabs.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -33,7 +33,7 @@
// Clicking the tab makes that card visible.
#include <stdio.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Tabs.H>
#include <fltk3/fl_draw.H>
#include <fltk3/Fl_Tooltip.H>
Modified: branches/branch-3.0/src/Fl_Text_Buffer.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Text_Buffer.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Text_Buffer.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,7 +30,7 @@
#include <fltk3/fl_utf8.h>
#include "flstring.h"
#include <ctype.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Text_Buffer.H>
Modified: branches/branch-3.0/src/Fl_Text_Display.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Text_Display.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Text_Display.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,10 +31,10 @@
#include "flstring.h"
#include <limits.h>
#include <ctype.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Text_Buffer.H>
#include <fltk3/Fl_Text_Display.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
#undef min
#undef max
Modified: branches/branch-3.0/src/Fl_Text_Editor.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Text_Editor.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Text_Editor.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,8 +29,8 @@
#include <stdlib.h>
#include "flstring.h"
#include <ctype.h>
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/run.h>
+#include <fltk3/Window.h>
#include <fltk3/Fl_Text_Editor.H>
#include <fltk3/fl_ask.H>
Modified: branches/branch-3.0/src/Fl_Tile.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Tile.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Tile.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,9 +30,9 @@
// The size of the first child determines where the resize border is.
// The resizebox is used to limit where the border can be dragged to.
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Tile.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
#include <stdlib.h>
// Drag the edges that were initially at oldx,oldy to newx,newy:
Modified: branches/branch-3.0/src/Fl_Tiled_Image.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Tiled_Image.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Tiled_Image.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Tiled_Image.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/Fl_Tree_Item.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Tree_Item.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Tree_Item.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -5,7 +5,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/Widget.h>
#include <fltk3/Fl_Tree_Item.H>
#include <fltk3/Fl_Tree_Prefs.H>
Modified: branches/branch-3.0/src/Fl_Tree_Prefs.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Tree_Prefs.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Tree_Prefs.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -2,7 +2,7 @@
// "$Id$"
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Pixmap.H>
#include <fltk3/Fl_Tree_Prefs.H>
#include <string.h>
Modified: branches/branch-3.0/src/Fl_Valuator.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Valuator.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Valuator.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
// Base class for sliders and all other one-value "knobs"
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Valuator.H>
#include <fltk3/math.h>
#include <stdio.h>
Modified: branches/branch-3.0/src/Fl_Value_Input.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Value_Input.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Value_Input.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,9 +29,9 @@
// Warning: this works by making a child Fl_Input object, even
// though this object is *not* an fltk3::Group. May be a kludge?
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Value_Input.H>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/Group.h>
#include <stdlib.h>
#include <fltk3/math.h>
Modified: branches/branch-3.0/src/Fl_Value_Output.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Value_Output.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Value_Output.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
// This is much lighter than Fl_Value_Input because it has no text editor
// If step() is zero then it can be used to display a floating-point value
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Value_Output.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/Fl_Value_Slider.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Value_Slider.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Value_Slider.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Value_Slider.H>
#include <fltk3/fl_draw.H>
#include <math.h>
Modified: branches/branch-3.0/src/Fl_Widget.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Widget.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Widget.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,9 +25,9 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
+#include <fltk3/Group.h>
#include <fltk3/Fl_Tooltip.H>
#include <fltk3/fl_draw.H>
#include <stdlib.h>
Modified: branches/branch-3.0/src/Fl_Window.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Window.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Window.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,9 +30,9 @@
// crap you need to do to communicate with X is in Fl_x.cxx, the
// equivalent (but totally different) crap for MSWindows is in Fl_win32.cxx
#include "config.h"
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
#include <stdlib.h>
#include "flstring.h"
Modified: branches/branch-3.0/src/Fl_Window_fullscreen.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Window_fullscreen.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Window_fullscreen.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
// the window full screen will lose the size of the border off the
// bottom and right.
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
#include <config.h>
Modified: branches/branch-3.0/src/Fl_Window_hotspot.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Window_hotspot.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Window_hotspot.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,8 +25,8 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/run.h>
+#include <fltk3/Window.h>
#include <fltk3/x.H>
#include <stdio.h>
Modified: branches/branch-3.0/src/Fl_Wizard.cxx
===================================================================
--- branches/branch-3.0/src/Fl_Wizard.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_Wizard.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -40,7 +40,7 @@
//
#include <fltk3/Fl_Wizard.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/Fl_XBM_Image.cxx
===================================================================
--- branches/branch-3.0/src/Fl_XBM_Image.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_XBM_Image.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -33,7 +33,7 @@
// Include necessary header files...
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_XBM_Image.H>
#include <stdio.h>
#include <stdlib.h>
Modified: branches/branch-3.0/src/Fl_XColor.H
===================================================================
--- branches/branch-3.0/src/Fl_XColor.H 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_XColor.H 2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
//
#include <config.h>
-#include <FL/Enumerations.H>
+#include <fltk3/Enumerations.H>
// one of these for each color in fltk's "colormap":
// if overlays are enabled, another one for the overlay
Modified: branches/branch-3.0/src/Fl_XPM_Image.cxx
===================================================================
--- branches/branch-3.0/src/Fl_XPM_Image.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_XPM_Image.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
// Include necessary header files...
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_XPM_Image.H>
#include <stdio.h>
#include <stdlib.h>
Modified: branches/branch-3.0/src/Fl_abort.cxx
===================================================================
--- branches/branch-3.0/src/Fl_abort.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_abort.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
// do not need to be included in Fl.cxx:
// You can also override this by redefining all of these.
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
Modified: branches/branch-3.0/src/Fl_add_idle.cxx
===================================================================
--- branches/branch-3.0/src/Fl_add_idle.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_add_idle.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
// Allows you to manage an arbitrary set of idle() callbacks.
// Replaces the older set_idle() call (which is used to implement this)
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
struct idle_cb {
void (*cb)(void*);
Modified: branches/branch-3.0/src/Fl_arg.cxx
===================================================================
--- branches/branch-3.0/src/Fl_arg.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_arg.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,9 +28,9 @@
// OPTIONAL initialization code for a program using fltk.
// You do not need to call this! Feel free to make up your own switches.
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
#include <fltk3/Fl_Tooltip.H>
#include <fltk3/filename.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/Fl_cocoa.mm
===================================================================
--- branches/branch-3.0/src/Fl_cocoa.mm 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_cocoa.mm 2010-03-30 19:10:49 UTC (rev 7368)
@@ -77,9 +77,9 @@
}
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
#include <fltk3/Fl_Tooltip.H>
#include <fltk3/Fl_Sys_Menu_Bar.H>
#include <fltk3/Fl_Printer.H>
Modified: branches/branch-3.0/src/Fl_compose.cxx
===================================================================
--- branches/branch-3.0/src/Fl_compose.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_compose.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
//
Modified: branches/branch-3.0/src/Fl_display.cxx
===================================================================
--- branches/branch-3.0/src/Fl_display.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_display.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
// Startup method to set what display to use.
// Using setenv makes programs that are exec'd use the same display.
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <stdlib.h>
#include "flstring.h"
Modified: branches/branch-3.0/src/Fl_get_key.cxx
===================================================================
--- branches/branch-3.0/src/Fl_get_key.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_get_key.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
// keys (mostly) by the X keysym. So this turns the keysym into a keycode
// and looks it up in the X key bit vector, which Fl_x.cxx keeps track of.
-# include <fltk3/Fl.H>
+# include <fltk3/run.h>
# include <fltk3/x.H>
extern char fl_key_vector[32]; // in Fl_x.cxx
Modified: branches/branch-3.0/src/Fl_get_key_mac.cxx
===================================================================
--- branches/branch-3.0/src/Fl_get_key_mac.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_get_key_mac.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
// which are actually X keysyms. So this has to translate to macOS
// symbols.
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
#include <config.h>
Modified: branches/branch-3.0/src/Fl_get_system_colors.cxx
===================================================================
--- branches/branch-3.0/src/Fl_get_system_colors.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_get_system_colors.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_draw.H>
#include <fltk3/x.H>
#include <fltk3/math.h>
Modified: branches/branch-3.0/src/Fl_grab.cxx
===================================================================
--- branches/branch-3.0/src/Fl_grab.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_grab.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
//
#include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
////////////////////////////////////////////////////////////////
Modified: branches/branch-3.0/src/Fl_lock.cxx
===================================================================
--- branches/branch-3.0/src/Fl_lock.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_lock.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <config.h>
#include <stdlib.h>
Modified: branches/branch-3.0/src/Fl_mac.cxx
===================================================================
--- branches/branch-3.0/src/Fl_mac.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_mac.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -59,9 +59,9 @@
}
#include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
#include <fltk3/Fl_Tooltip.H>
#include <fltk3/Fl_Sys_Menu_Bar.H>
#include <stdio.h>
Modified: branches/branch-3.0/src/Fl_own_colormap.cxx
===================================================================
--- branches/branch-3.0/src/Fl_own_colormap.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_own_colormap.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,7 +34,7 @@
// get huge color changes when switching windows.
#include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
/** \fn fltk3::own_colormap()
Modified: branches/branch-3.0/src/Fl_visual.cxx
===================================================================
--- branches/branch-3.0/src/Fl_visual.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_visual.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
// Set the default visual according to passed switches:
#include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
/** \fn fltk3::visual(int flags)
Modified: branches/branch-3.0/src/Fl_win32.cxx
===================================================================
--- branches/branch-3.0/src/Fl_win32.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_win32.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,10 +30,10 @@
// for other system-specific code.
#ifndef FL_DOXYGEN
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
#include <fltk3/fl_utf8.h>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
#include <fltk3/fl_draw.H>
#include <fltk3/Enumerations.H>
#include <fltk3/Fl_Tooltip.H>
Modified: branches/branch-3.0/src/Fl_x.cxx
===================================================================
--- branches/branch-3.0/src/Fl_x.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/Fl_x.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -36,9 +36,9 @@
/* #define BACKSPACE_HACK 1 */
# include <config.h>
-# include <fltk3/Fl.H>
+# include <fltk3/run.h>
# include <fltk3/x.H>
-# include <fltk3/Fl_Window.H>
+# include <fltk3/Window.h>
# include <fltk3/fl_utf8.h>
# include <fltk3/Fl_Tooltip.H>
# include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/fl_ask.cxx
===================================================================
--- branches/branch-3.0/src/fl_ask.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_ask.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,14 +34,14 @@
#include <stdarg.h>
#include "flstring.h"
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_ask.H>
#include <fltk3/Fl_Box.H>
#include <fltk3/Fl_Button.H>
#include <fltk3/Fl_Return_Button.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
#include <fltk3/Fl_Input.H>
#include <fltk3/Fl_Secret_Input.H>
#include <fltk3/x.H>
Modified: branches/branch-3.0/src/fl_boxtype.cxx
===================================================================
--- branches/branch-3.0/src/fl_boxtype.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_boxtype.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,8 +34,8 @@
// boxtypes. Other box types are in separate files so they are not
// linked in if not used.
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
#include <fltk3/fl_draw.H>
#include <config.h>
Modified: branches/branch-3.0/src/fl_color.cxx
===================================================================
--- branches/branch-3.0/src/fl_color.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_color.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -46,7 +46,7 @@
// before use.
# include "Fl_XColor.H"
-# include <fltk3/Fl.H>
+# include <fltk3/run.h>
# include <fltk3/x.H>
# include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/fl_color_mac.cxx
===================================================================
--- branches/branch-3.0/src/fl_color_mac.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_color_mac.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,7 +34,7 @@
// matt: Quartz support done
#include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/fl_color_win32.cxx
===================================================================
--- branches/branch-3.0/src/fl_color_win32.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_color_win32.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
// before use.
#include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/fl_cursor.cxx
===================================================================
--- branches/branch-3.0/src/fl_cursor.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_cursor.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,8 +31,8 @@
// This avoids a field in the fltk3::Window, and I suspect is more
// portable to other systems.
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/run.h>
+#include <fltk3/Window.h>
#include <fltk3/x.H>
#if !defined(WIN32) && !defined(__APPLE__)
# include <X11/cursorfont.h>
Modified: branches/branch-3.0/src/fl_diamond_box.cxx
===================================================================
--- branches/branch-3.0/src/fl_diamond_box.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_diamond_box.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
// The diamond box draws best if the area is square!
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_draw.H>
extern uchar* fl_gray_ramp();
Modified: branches/branch-3.0/src/fl_dnd_mac.cxx
===================================================================
--- branches/branch-3.0/src/fl_dnd_mac.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_dnd_mac.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -27,9 +27,9 @@
// for other system-specific code.
#include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
// warning: this function is only implemented in Quickdraw. The function
// below may not work if FLTK is compiled with Quartz enabled
Modified: branches/branch-3.0/src/fl_dnd_win32.cxx
===================================================================
--- branches/branch-3.0/src/fl_dnd_win32.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_dnd_win32.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,9 +26,9 @@
// in. Search other files for "WIN32" or filenames ending in _win32.cxx
// for other system-specific code.
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/Window.h>
#include <fltk3/fl_utf8.h>
#include "flstring.h"
#include <stdio.h>
Modified: branches/branch-3.0/src/fl_dnd_x.cxx
===================================================================
--- branches/branch-3.0/src/fl_dnd_x.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_dnd_x.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,8 +25,8 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/run.h>
+#include <fltk3/Window.h>
#include <fltk3/x.H>
#include "flstring.h"
Modified: branches/branch-3.0/src/fl_draw.cxx
===================================================================
--- branches/branch-3.0/src/fl_draw.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_draw.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,7 +34,7 @@
#define min(a,b) ((a)<(b)?(a):(b))
#include <fltk3/fl_utf8.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_draw.H>
#include <fltk3/Fl_Image.H>
Modified: branches/branch-3.0/src/fl_draw_image.cxx
===================================================================
--- branches/branch-3.0/src/fl_draw_image.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_draw_image.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -59,7 +59,7 @@
////////////////////////////////////////////////////////////////
-# include <fltk3/Fl.H>
+# include <fltk3/run.h>
# include <fltk3/fl_draw.H>
# include <fltk3/x.H>
# include "Fl_XColor.H"
Modified: branches/branch-3.0/src/fl_draw_image_mac.cxx
===================================================================
--- branches/branch-3.0/src/fl_draw_image_mac.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_draw_image_mac.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,9 +28,9 @@
////////////////////////////////////////////////////////////////
#include <config.h>
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
-#include <FL/x.H>
+#include <fltk3/run.h>
+#include <fltk3/fl_draw.H>
+#include <fltk3/x.H>
#define MAXBUFFER 0x40000 // 256k
Modified: branches/branch-3.0/src/fl_draw_image_win32.cxx
===================================================================
--- branches/branch-3.0/src/fl_draw_image_win32.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_draw_image_win32.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -45,9 +45,9 @@
////////////////////////////////////////////////////////////////
#include <config.h>
-#include <FL/Fl.H>
-#include <FL/fl_draw.H>
-#include <FL/x.H>
+#include <fltk3/run.h>
+#include <fltk3/fl_draw.H>
+#include <fltk3/x.H>
#define MAXBUFFER 0x40000 // 256k
Modified: branches/branch-3.0/src/fl_draw_pixmap.cxx
===================================================================
--- branches/branch-3.0/src/fl_draw_pixmap.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_draw_pixmap.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -35,7 +35,7 @@
// as I want to discourage programs that require support files to work.
// All data needed by a program ui should be compiled in!!!
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_draw.H>
#include <fltk3/x.H>
#include <stdio.h>
Modified: branches/branch-3.0/src/fl_engraved_label.cxx
===================================================================
--- branches/branch-3.0/src/fl_engraved_label.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_engraved_label.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -27,8 +27,8 @@
// Drawing code for XForms style engraved & embossed labels
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
#include <fltk3/fl_draw.H>
// data[] is dx, dy, color triples
Modified: branches/branch-3.0/src/fl_font.cxx
===================================================================
--- branches/branch-3.0/src/fl_font.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_font.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -40,7 +40,7 @@
// Select fonts from the FLTK font table.
#include "flstring.h"
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_draw.H>
#include <fltk3/x.H>
#include "Fl_Font.H"
Modified: branches/branch-3.0/src/fl_gtk.cxx
===================================================================
--- branches/branch-3.0/src/fl_gtk.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_gtk.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
// These box types are in separate files so they are not linked
// in if not used.
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_draw.H>
extern void fl_internal_boxtype(Fl_Boxtype, Fl_Box_Draw_F*);
Modified: branches/branch-3.0/src/fl_labeltype.cxx
===================================================================
--- branches/branch-3.0/src/fl_labeltype.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_labeltype.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,9 +29,9 @@
// Other label types (symbols) are in their own source files
// to avoid linking if not used.
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
+#include <fltk3/Group.h>
#include <fltk3/fl_draw.H>
#include <fltk3/Fl_Image.H>
Modified: branches/branch-3.0/src/fl_line_style.cxx
===================================================================
--- branches/branch-3.0/src/fl_line_style.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_line_style.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,7 +30,7 @@
\brief Line style drawing utility hiding different platforms.
*/
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_draw.H>
#include <fltk3/x.H>
#include "flstring.h"
Modified: branches/branch-3.0/src/fl_oval_box.cxx
===================================================================
--- branches/branch-3.0/src/fl_oval_box.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_oval_box.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
// Less-used box types are in separate files so they are not linked
// in if not used.
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_draw.H>
static void fl_oval_flat_box(int x, int y, int w, int h, Fl_Color c) {
Modified: branches/branch-3.0/src/fl_overlay_visual.cxx
===================================================================
--- branches/branch-3.0/src/fl_overlay_visual.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_overlay_visual.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
#include <config.h>
#if HAVE_OVERLAY
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
// SERVER_OVERLAY_VISUALS property element:
Modified: branches/branch-3.0/src/fl_plastic.cxx
===================================================================
--- branches/branch-3.0/src/fl_plastic.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_plastic.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,7 +32,7 @@
// These box types are in separate files so they are not linked
// in if not used.
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_draw.H>
#include "flstring.h"
Modified: branches/branch-3.0/src/fl_read_image.cxx
===================================================================
--- branches/branch-3.0/src/fl_read_image.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_read_image.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
//
#include <fltk3/x.H>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_draw.H>
#include "flstring.h"
Modified: branches/branch-3.0/src/fl_rect.cxx
===================================================================
--- branches/branch-3.0/src/fl_rect.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_rect.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -36,8 +36,8 @@
// that minimal update works.
#include <config.h>
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
#include <fltk3/fl_draw.H>
#include <fltk3/x.H>
Modified: branches/branch-3.0/src/fl_round_box.cxx
===================================================================
--- branches/branch-3.0/src/fl_round_box.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_round_box.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
// These box types are in separate files so they are not linked
// in if not used.
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_draw.H>
// A compiler from a certain very large software company will not compile
Modified: branches/branch-3.0/src/fl_rounded_box.cxx
===================================================================
--- branches/branch-3.0/src/fl_rounded_box.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_rounded_box.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_draw.H>
#define RN 5
Modified: branches/branch-3.0/src/fl_scroll_area.cxx
===================================================================
--- branches/branch-3.0/src/fl_scroll_area.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_scroll_area.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,7 +30,7 @@
// into the drawing area.
#include <config.h>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/fl_set_font.cxx
===================================================================
--- branches/branch-3.0/src/fl_set_font.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_set_font.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
// Add a font to the internal table.
// Also see fl_set_fonts.cxx which adds all possible fonts.
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
#include <fltk3/fl_draw.H>
#include "flstring.h"
Modified: branches/branch-3.0/src/fl_set_fonts.cxx
===================================================================
--- branches/branch-3.0/src/fl_set_fonts.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_set_fonts.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
#include "Fl_Font.H"
#include "flstring.h"
Modified: branches/branch-3.0/src/fl_shadow_box.cxx
===================================================================
--- branches/branch-3.0/src/fl_shadow_box.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_shadow_box.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_draw.H>
#define BW 3
Modified: branches/branch-3.0/src/fl_shortcut.cxx
===================================================================
--- branches/branch-3.0/src/fl_shortcut.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_shortcut.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -41,8 +41,8 @@
// This allows punctuation shortcuts like "#" to work (rather than
// calling it "shift+3" on a US keyboard)
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Widget.H>
+#include <fltk3/run.h>
+#include <fltk3/Widget.h>
#include <fltk3/Fl_Button.H>
#include <fltk3/fl_draw.H>
#include <ctype.h>
Modified: branches/branch-3.0/src/fl_show_colormap.cxx
===================================================================
--- branches/branch-3.0/src/fl_show_colormap.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_show_colormap.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -25,7 +25,7 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Single_Window.H>
#include <fltk3/fl_draw.H>
#include <fltk3/fl_show_colormap.H>
Modified: branches/branch-3.0/src/fl_symbols.cxx
===================================================================
--- branches/branch-3.0/src/fl_symbols.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_symbols.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -34,7 +34,7 @@
// Version 2.1 a
// Date: Oct 2, 1992
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/fl_draw.H>
#include <fltk3/math.h>
#include "flstring.h"
Modified: branches/branch-3.0/src/fl_vertex.cxx
===================================================================
--- branches/branch-3.0/src/fl_vertex.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/fl_vertex.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -40,7 +40,7 @@
#include <config.h>
#include <fltk3/fl_draw.H>
#include <fltk3/x.H>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/math.h>
#include <stdlib.h>
Modified: branches/branch-3.0/src/flstring.h
===================================================================
--- branches/branch-3.0/src/flstring.h 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/flstring.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
#ifndef flstring_h
# define flstring_h
-# include <FL/Fl_Export.H>
+# include <fltk3/Fl_Export.H>
# include <config.h>
# include <stdio.h>
# include <stdarg.h>
Modified: branches/branch-3.0/src/forms_free.cxx
===================================================================
--- branches/branch-3.0/src/forms_free.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/forms_free.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,7 +30,7 @@
// me to port several other programs, but it is in no way
// complete.
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Free.H>
void Fl_Free::step(void *v) {
Modified: branches/branch-3.0/src/forms_timer.cxx
===================================================================
--- branches/branch-3.0/src/forms_timer.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/forms_timer.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
// You don't want to use this if you just want a timeout, call
// fltk3::add_timeout directly!
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Timer.H>
#include <fltk3/fl_draw.H>
#ifdef WIN32
Modified: branches/branch-3.0/src/gl_draw.cxx
===================================================================
--- branches/branch-3.0/src/gl_draw.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/gl_draw.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -31,7 +31,7 @@
#include "flstring.h"
#if HAVE_GL
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/gl.h>
#include <fltk3/x.H>
#include <fltk3/fl_draw.H>
Modified: branches/branch-3.0/src/gl_start.cxx
===================================================================
--- branches/branch-3.0/src/gl_start.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/gl_start.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -40,8 +40,8 @@
#include <config.h>
#if HAVE_GL
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Window.H>
+#include <fltk3/run.h>
+#include <fltk3/Window.h>
#include <fltk3/x.H>
#include <fltk3/fl_draw.H>
#include "Fl_Gl_Choice.H"
Modified: branches/branch-3.0/src/print_panel.h
===================================================================
--- branches/branch-3.0/src/print_panel.h 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/print_panel.h 2010-03-30 19:10:49 UTC (rev 7368)
@@ -32,9 +32,9 @@
#ifndef print_panel_h
#define print_panel_h
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Double_Window.H>
-#include <fltk3/Fl_Group.H>
+#include <fltk3/Group.h>
#include <fltk3/Fl_Choice.H>
#include <fltk3/Fl_Button.H>
#include <fltk3/Fl_Box.H>
Modified: branches/branch-3.0/src/ps_image.cxx
===================================================================
--- branches/branch-3.0/src/ps_image.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/ps_image.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -30,7 +30,7 @@
#include <string.h>
#include <fltk3/Fl_PSfile_Device.H>
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/Fl_Pixmap.H>
#include <fltk3/Fl_Bitmap.H>
Modified: branches/branch-3.0/src/scandir_win32.c
===================================================================
--- branches/branch-3.0/src/scandir_win32.c 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/scandir_win32.c 2010-03-30 19:10:49 UTC (rev 7368)
@@ -27,8 +27,8 @@
#ifndef __CYGWIN__
/* Emulation of posix scandir() call */
-#include <FL/fl_utf8.h>
-#include <FL/filename.H>
+#include <fltk3/fl_utf8.h>
+#include <fltk3/filename.H>
#include "flstring.h"
#include <windows.h>
#include <stdlib.h>
Modified: branches/branch-3.0/src/screen_xywh.cxx
===================================================================
--- branches/branch-3.0/src/screen_xywh.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/screen_xywh.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
//
-#include <fltk3/Fl.H>
+#include <fltk3/run.h>
#include <fltk3/x.H>
#include <config.h>
Modified: branches/branch-3.0/src/xutf8/keysym2Ucs.c
===================================================================
--- branches/branch-3.0/src/xutf8/keysym2Ucs.c 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/xutf8/keysym2Ucs.c 2010-03-30 19:10:49 UTC (rev 7368)
@@ -27,7 +27,7 @@
#if !defined(WIN32) && !defined(__APPLE__)
-#include "../../FL/Xutf8.h"
+#include "../../fltk3/Xutf8.h"
#include "imKStoUCS.c"
long XKeysymToUcs(KeySym keysym) {
Modified: branches/branch-3.0/src/xutf8/utf8Input.c
===================================================================
--- branches/branch-3.0/src/xutf8/utf8Input.c 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/xutf8/utf8Input.c 2010-03-30 19:10:49 UTC (rev 7368)
@@ -26,7 +26,7 @@
#if !defined(WIN32) && !defined(__APPLE__)
#include "config.h"
-#include "../../FL/Xutf8.h"
+#include "../../fltk3/Xutf8.h"
#include <X11/X.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
Modified: branches/branch-3.0/src/xutf8/utf8Utils.c
===================================================================
--- branches/branch-3.0/src/xutf8/utf8Utils.c 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/xutf8/utf8Utils.c 2010-03-30 19:10:49 UTC (rev 7368)
@@ -29,7 +29,7 @@
#if !defined(WIN32) && !defined(__APPLE__)
-#include "../../FL/Xutf8.h"
+#include "../../fltk3/Xutf8.h"
/*** NOTE : all functions are LIMITED to 24 bits Unicode values !!! ***/
Modified: branches/branch-3.0/src/xutf8/utf8Wrap.c
===================================================================
--- branches/branch-3.0/src/xutf8/utf8Wrap.c 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/src/xutf8/utf8Wrap.c 2010-03-30 19:10:49 UTC (rev 7368)
@@ -28,7 +28,7 @@
*/
#if !defined(WIN32) && !defined(__APPLE__)
-#include "../../FL/Xutf8.h"
+#include "../../fltk3/Xutf8.h"
#include <X11/Xlib.h>
#include <ctype.h>
#include <stdlib.h>
Modified: branches/branch-3.0/test/hello.cxx
===================================================================
--- branches/branch-3.0/test/hello.cxx 2010-03-30 18:14:57 UTC (rev 7367)
+++ branches/branch-3.0/test/hello.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -3,7 +3,7 @@
//
// Hello, World! program for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2009 by Bill Spitzak and others.
+// Copyright 1998-2010 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@@ -25,9 +25,9 @@
// http://www.fltk.org/str.php
//
-#include <fltk3/Fl.H>
-#include <fltk3/Fl_Window.H>
-#include <fltk3/Fl_Box.H>
+#include <fltk3/run.h>
+#include <fltk3/Window.h>
+#include <fltk3/Widget.h>
using namespace fltk3;
Added: branches/branch-3.0/test/hello1.cxx
===================================================================
--- branches/branch-3.0/test/hello1.cxx (rev 0)
+++ branches/branch-3.0/test/hello1.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,46 @@
+//
+// "$Id: hello.cxx 6615 2009-01-01 16:35:13Z matt $"
+//
+// Hello, World! program for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2010 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+#include <FL/Fl.H>
+#include <FL/Fl_Window.H>
+#include <FL/Fl_Box.H>
+
+int main(int argc, char **argv) {
+ Fl_Window *window = new Fl_Window(300,180);
+ Fl_Box *box = new Fl_Box(FL_UP_BOX,20,40,260,100,"Hello, World!");
+ box->labelfont(FL_BOLD+FL_ITALIC);
+ box->labelsize(36);
+ box->labeltype(FL_SHADOW_LABEL);
+ window->end();
+ window->show(argc, argv);
+ return Fl::run();
+}
+
+//
+// End of "$Id: hello.cxx 6615 2009-01-01 16:35:13Z matt $".
+//
+
Added: branches/branch-3.0/test/hello2.cxx
===================================================================
--- branches/branch-3.0/test/hello2.cxx (rev 0)
+++ branches/branch-3.0/test/hello2.cxx 2010-03-30 19:10:49 UTC (rev 7368)
@@ -0,0 +1,19 @@
+// hello.cxx (example1)
+
+#include <fltk/Window.h>
+#include <fltk/Widget.h>
+#include <fltk/run.h>
+using namespace fltk;
+
+int main(int argc, char **argv) {
+ Window *window = new Window(300, 180);
+ window->begin();
+ Widget *box = new Widget(20, 40, 260, 100, "Hello, World!");
+ box->box(UP_BOX);
+ box->labelfont(HELVETICA_BOLD_ITALIC);
+ box->labelsize(36);
+ box->labeltype(SHADOW_LABEL);
+ window->end();
+ window->show(argc, argv);
+ return run();
+}
[ Direct Link to Message ] | |