summaryrefslogtreecommitdiff
path: root/FL/Fl.H
diff options
context:
space:
mode:
Diffstat (limited to 'FL/Fl.H')
-rw-r--r--FL/Fl.H371
1 files changed, 199 insertions, 172 deletions
diff --git a/FL/Fl.H b/FL/Fl.H
index 3a9b4bc1d..2f449e8f7 100644
--- a/FL/Fl.H
+++ b/FL/Fl.H
@@ -15,7 +15,7 @@
//
/** \file FL/Fl.H
- \brief Fl namespace.
+ \brief Fl class.
*/
#ifndef Fl_H
@@ -26,10 +26,8 @@
#include <FL/platform_types.h> // for FL_SOCKET
#include <FL/fl_casts.H> // type casting
#include <FL/core/function_types.H> // widget callbacks and services
-#include <FL/core/events.H> // global event handling
-#include <FL/core/options.H> // system and application setting
#include <FL/core/pen_events.H> // pen and tablet events
-#include <FL/Fl_Widget_Tracker.H> // historically included here
+#include <FL/Fl_Widget_Tracker.H> // widget deletion tracking
#if FLTK_HAVE_CAIRO
# include <FL/Fl_Cairo.H>
@@ -68,53 +66,60 @@ extern FL_EXPORT const char* fl_local_shift; ///< string pointer used in shortcu
/**
- Fl is the FLTK global namespace containing state information and global
+ Fl is the FLTK global class containing state information and global
methods for the current application.
*/
-namespace Fl {
+class FL_EXPORT Fl {
+public:
-FL_EXPORT extern Fl_Screen_Driver *screen_driver();
-FL_EXPORT extern Fl_System_Driver *system_driver();
+// Event handling (from FL/core/events.H)
+#include <FL/core/events.H>
-FL_EXPORT extern int box_shadow_width();
-FL_EXPORT extern void box_shadow_width(int W);
+// Options (from FL/core/options.H)
+#include <FL/core/options.H>
-FL_EXPORT extern int box_border_radius_max();
-FL_EXPORT extern void box_border_radius_max(int R);
+static FL_EXPORT Fl_Screen_Driver *screen_driver();
+static FL_EXPORT Fl_System_Driver *system_driver();
+
+static FL_EXPORT int box_shadow_width();
+static FL_EXPORT void box_shadow_width(int W);
+
+static FL_EXPORT int box_border_radius_max();
+static FL_EXPORT void box_border_radius_max(int R);
// should be private:
#ifndef FL_DOXYGEN
-FL_EXPORT extern int damage_;
-FL_EXPORT extern Fl_Widget* selection_owner_;
-FL_EXPORT extern Fl_Window* modal_;
-FL_EXPORT extern Fl_Window* grab_;
-FL_EXPORT extern int compose_state; // used for dead keys (Windows) or marked text (MacOS)
-FL_EXPORT extern void call_screen_init(); // recompute screen number and dimensions
+static FL_EXPORT int damage_;
+static FL_EXPORT Fl_Widget* selection_owner_;
+static FL_EXPORT Fl_Window* modal_;
+static FL_EXPORT Fl_Window* grab_;
+static FL_EXPORT int compose_state; // used for dead keys (Windows) or marked text (MacOS)
+static FL_EXPORT void call_screen_init(); // recompute screen number and dimensions
#endif // FL_DOXYGEN
/**
If true then flush() will do something.
*/
-FL_EXPORT inline void damage(int d) {damage_ = d;}
+static FL_EXPORT inline void damage(int d) {damage_ = d;}
-FL_EXPORT extern bool idle();
+static FL_EXPORT bool idle();
#ifndef FL_DOXYGEN
-FL_EXPORT extern const char* scheme_;
-FL_EXPORT extern Fl_Image* scheme_bg_;
+static FL_EXPORT const char* scheme_;
+static FL_EXPORT Fl_Image* scheme_bg_;
-FL_EXPORT extern int scrollbar_size_;
-FL_EXPORT extern int menu_linespacing_; // STR #2927
+static FL_EXPORT int scrollbar_size_;
+static FL_EXPORT int menu_linespacing_; // STR #2927
#endif
// API version number
-FL_EXPORT extern double version();
-FL_EXPORT extern int api_version();
+static FL_EXPORT double version();
+static FL_EXPORT int api_version();
// ABI version number
-FL_EXPORT extern int abi_version();
+static FL_EXPORT int abi_version();
/**
Returns whether the runtime library ABI version is correct.
@@ -138,24 +143,24 @@ FL_EXPORT extern int abi_version();
\see Fl::abi_version()
*/
-FL_EXPORT inline int abi_check(const int val = FL_ABI_VERSION) {
+static FL_EXPORT inline int abi_check(const int val = FL_ABI_VERSION) {
return val == abi_version();
}
// argument parsers:
-FL_EXPORT extern int arg(int argc, char **argv, int& i);
-FL_EXPORT extern int args(int argc, char **argv, int& i, Fl_Args_Handler cb = 0);
-FL_EXPORT extern void args(int argc, char **argv);
+static FL_EXPORT int arg(int argc, char **argv, int& i);
+static FL_EXPORT int args(int argc, char **argv, int& i, Fl_Args_Handler cb = 0);
+static FL_EXPORT void args(int argc, char **argv);
/**
Usage string displayed if Fl::args() detects an invalid argument.
This may be changed to point to customized text at run-time.
*/
-FL_EXPORT extern const char* const help;
+static FL_EXPORT const char* const help;
// things called by initialization:
-FL_EXPORT extern void display(const char*);
-FL_EXPORT extern int visual(int);
+static FL_EXPORT void display(const char*);
+static FL_EXPORT int visual(int);
/**
This does the same thing as Fl::visual(int) but also requires OpenGL
@@ -166,17 +171,17 @@ FL_EXPORT extern int visual(int);
See Fl_Gl_Window for a list of additional values for the argument.
*/
-FL_EXPORT extern int gl_visual(int, int *alist=0); // platform dependent
-FL_EXPORT extern void own_colormap();
-FL_EXPORT extern void get_system_colors();
-FL_EXPORT extern void foreground(uchar, uchar, uchar);
-FL_EXPORT extern void background(uchar, uchar, uchar);
-FL_EXPORT extern void background2(uchar, uchar, uchar);
+static FL_EXPORT int gl_visual(int, int *alist=0); // platform dependent
+static FL_EXPORT void own_colormap();
+static FL_EXPORT void get_system_colors();
+static FL_EXPORT void foreground(uchar, uchar, uchar);
+static FL_EXPORT void background(uchar, uchar, uchar);
+static FL_EXPORT void background2(uchar, uchar, uchar);
// schemes:
-FL_EXPORT extern int scheme(const char *name);
+static FL_EXPORT int scheme(const char *name);
/** See void scheme(const char *name) */
-FL_EXPORT inline const char* scheme() {return scheme_;}
+static FL_EXPORT inline const char* scheme() {return scheme_;}
/** Returns whether the current scheme is the given name.
@@ -205,64 +210,64 @@ FL_EXPORT inline const char* scheme() {return scheme_;}
\see Fl::scheme(const char *name)
*/
-FL_EXPORT inline int is_scheme(const char *name) {
+static FL_EXPORT inline int is_scheme(const char *name) {
return (scheme_ && name && !strcmp(name,scheme_));
}
-FL_EXPORT extern int reload_scheme(); // defined in 'src/Fl_get_system_colors.cxx'
+static FL_EXPORT int reload_scheme(); // defined in 'src/Fl_get_system_colors.cxx'
-FL_EXPORT extern int scrollbar_size();
-FL_EXPORT extern void scrollbar_size(int W);
-FL_EXPORT extern int menu_linespacing();
-FL_EXPORT extern void menu_linespacing(int H);
+static FL_EXPORT int scrollbar_size();
+static FL_EXPORT void scrollbar_size(int W);
+static FL_EXPORT int menu_linespacing();
+static FL_EXPORT void menu_linespacing(int H);
// execution:
-FL_EXPORT extern int wait();
-FL_EXPORT extern double wait(double time);
-FL_EXPORT extern int check();
-FL_EXPORT extern int ready();
-FL_EXPORT extern int run();
-FL_EXPORT extern int program_should_quit();
-FL_EXPORT extern void program_should_quit(int should_i);
-FL_EXPORT extern void hide_all_windows();
+static FL_EXPORT int wait();
+static FL_EXPORT double wait(double time);
+static FL_EXPORT int check();
+static FL_EXPORT int ready();
+static FL_EXPORT int run();
+static FL_EXPORT int program_should_quit();
+static FL_EXPORT void program_should_quit(int should_i);
+static FL_EXPORT void hide_all_windows();
-FL_EXPORT extern Fl_Widget* readqueue();
+static FL_EXPORT Fl_Widget* readqueue();
//
// cross-platform timer support
//
-FL_EXPORT extern void add_timeout(double t, Fl_Timeout_Handler cb, void *data = 0);
-FL_EXPORT extern void repeat_timeout(double t, Fl_Timeout_Handler cb, void *data = 0);
-FL_EXPORT extern int has_timeout(Fl_Timeout_Handler cb, void *data = 0);
-FL_EXPORT extern void remove_timeout(Fl_Timeout_Handler cb, void *data = 0);
-FL_EXPORT extern int remove_next_timeout(Fl_Timeout_Handler cb, void *data = 0, void **data_return = 0);
+static FL_EXPORT void add_timeout(double t, Fl_Timeout_Handler cb, void *data = 0);
+static FL_EXPORT void repeat_timeout(double t, Fl_Timeout_Handler cb, void *data = 0);
+static FL_EXPORT int has_timeout(Fl_Timeout_Handler cb, void *data = 0);
+static FL_EXPORT void remove_timeout(Fl_Timeout_Handler cb, void *data = 0);
+static FL_EXPORT int remove_next_timeout(Fl_Timeout_Handler cb, void *data = 0, void **data_return = 0);
-FL_EXPORT extern void add_check(Fl_Timeout_Handler, void* = 0);
-FL_EXPORT extern int has_check(Fl_Timeout_Handler, void* = 0);
-FL_EXPORT extern void remove_check(Fl_Timeout_Handler, void* = 0);
+static FL_EXPORT void add_check(Fl_Timeout_Handler, void* = 0);
+static FL_EXPORT int has_check(Fl_Timeout_Handler, void* = 0);
+static FL_EXPORT void remove_check(Fl_Timeout_Handler, void* = 0);
-FL_EXPORT extern Fl_Timestamp now(double offset = 0);
-FL_EXPORT extern double seconds_since(Fl_Timestamp& then);
-FL_EXPORT extern double seconds_between(Fl_Timestamp& back, Fl_Timestamp& further_back);
-FL_EXPORT extern long ticks_since(Fl_Timestamp& then);
-FL_EXPORT extern long ticks_between(Fl_Timestamp& back, Fl_Timestamp& further_back);
+static FL_EXPORT Fl_Timestamp now(double offset = 0);
+static FL_EXPORT double seconds_since(Fl_Timestamp& then);
+static FL_EXPORT double seconds_between(Fl_Timestamp& back, Fl_Timestamp& further_back);
+static FL_EXPORT long ticks_since(Fl_Timestamp& then);
+static FL_EXPORT long ticks_between(Fl_Timestamp& back, Fl_Timestamp& further_back);
-FL_EXPORT extern void add_fd(int fd, int when, Fl_FD_Handler cb, void* = 0); // platform dependent
-FL_EXPORT extern void add_fd(int fd, Fl_FD_Handler cb, void* = 0); // platform dependent
+static FL_EXPORT void add_fd(int fd, int when, Fl_FD_Handler cb, void* = 0); // platform dependent
+static FL_EXPORT void add_fd(int fd, Fl_FD_Handler cb, void* = 0); // platform dependent
/** Removes a file descriptor handler. */
-FL_EXPORT extern void remove_fd(int, int when); // platform dependent
+static FL_EXPORT void remove_fd(int, int when); // platform dependent
/** Removes a file descriptor handler. */
-FL_EXPORT extern void remove_fd(int); // platform dependent
+static FL_EXPORT void remove_fd(int); // platform dependent
-FL_EXPORT extern void add_idle(Fl_Idle_Handler cb, void* data = 0);
-FL_EXPORT extern int has_idle(Fl_Idle_Handler cb, void* data = 0);
-FL_EXPORT extern void remove_idle(Fl_Idle_Handler cb, void* data = 0);
-FL_EXPORT extern void add_idle(Fl_Old_Idle_Handler cb);
+static FL_EXPORT void add_idle(Fl_Idle_Handler cb, void* data = 0);
+static FL_EXPORT int has_idle(Fl_Idle_Handler cb, void* data = 0);
+static FL_EXPORT void remove_idle(Fl_Idle_Handler cb, void* data = 0);
+static FL_EXPORT void add_idle(Fl_Old_Idle_Handler cb);
/** If true then flush() will do something. */
-FL_EXPORT inline int damage() {return damage_;}
-FL_EXPORT extern void redraw();
-FL_EXPORT extern void flush();
+static FL_EXPORT inline int damage() {return damage_;}
+static FL_EXPORT void redraw();
+static FL_EXPORT void flush();
/** \addtogroup group_comdlg
@{ */
@@ -285,7 +290,7 @@ FL_EXPORT extern void flush();
displaying the message.
\note \#include <FL/Fl.H>
*/
-FL_EXPORT extern void (*warning)(const char*, ...);
+static FL_EXPORT void (*warning)(const char*, ...);
/**
FLTK calls Fl::error() to output a normal error message.
@@ -301,7 +306,7 @@ FL_EXPORT extern void (*warning)(const char*, ...);
an image file. The default implementation returns after displaying the message.
\note \#include <FL/Fl.H>
*/
-FL_EXPORT extern void (*error)(const char*, ...);
+static FL_EXPORT void (*error)(const char*, ...);
/**
FLTK calls Fl::fatal() to output a fatal error message.
@@ -319,7 +324,7 @@ FL_EXPORT extern void (*error)(const char*, ...);
after displaying the message.
\note \#include <FL/Fl.H>
*/
-FL_EXPORT extern void (*fatal)(const char*, ...);
+static FL_EXPORT void (*fatal)(const char*, ...);
/** @} */
@@ -327,9 +332,9 @@ FL_EXPORT extern void (*fatal)(const char*, ...);
\brief Windows and standard dialogs handling declared in <FL/Fl.H>
@{ */
-FL_EXPORT extern Fl_Window* first_window();
-FL_EXPORT extern void first_window(Fl_Window*);
-FL_EXPORT extern Fl_Window* next_window(const Fl_Window*);
+static FL_EXPORT Fl_Window* first_window();
+static FL_EXPORT void first_window(Fl_Window*);
+static FL_EXPORT Fl_Window* next_window(const Fl_Window*);
/**
Returns the top-most modal() window currently shown.
@@ -340,14 +345,14 @@ FL_EXPORT extern Fl_Window* next_window(const Fl_Window*);
for all events, and no other windows will have handle()
called (grab() s this).
*/
-FL_EXPORT inline Fl_Window* modal() {return modal_;}
+static FL_EXPORT inline Fl_Window* modal() {return modal_;}
/** Returns the window that currently receives all events.
\return The window that currently receives all events,
or NULL if event grabbing is currently OFF.
*/
-FL_EXPORT inline Fl_Window* grab() {return grab_;}
+static FL_EXPORT inline Fl_Window* grab() {return grab_;}
/** Selects the window to grab.
This is used when pop-up menu systems are active.
@@ -373,7 +378,7 @@ FL_EXPORT inline Fl_Window* grab() {return grab_;}
limit mouse pointer grabbing to the time during which a mouse button
is held down. Some OS's may not support grabbing at all.
*/
-FL_EXPORT extern void grab(Fl_Window*); // platform dependent
+static FL_EXPORT void grab(Fl_Window*); // platform dependent
/** @} */
@@ -420,11 +425,11 @@ FL_EXPORT extern void grab(Fl_Window*); // platform dependent
Fl::screen_driver()->copy(stuff, len, clipboard, type);
\endcode
*/
-FL_EXPORT extern void copy(const char *stuff, int len, int destination = 0,
+static FL_EXPORT void copy(const char *stuff, int len, int destination = 0,
const char *type = Fl::clipboard_plain_text);
-FL_EXPORT extern void selection_to_clipboard(int mode);
-FL_EXPORT extern int selection_to_clipboard();
+static FL_EXPORT void selection_to_clipboard(int mode);
+static FL_EXPORT int selection_to_clipboard();
/**
Pastes the data from the selection buffer (\p source is 0) or the clipboard
@@ -468,7 +473,7 @@ FL_EXPORT extern int selection_to_clipboard();
\li Mac OS X platform: Both bitmap (TIFF) and vectorial (PDF) data from clipboard
can be pasted as image data.
*/
-FL_EXPORT extern void paste(Fl_Widget &receiver, int source, const char *type = Fl::clipboard_plain_text);
+static FL_EXPORT void paste(Fl_Widget &receiver, int source, const char *type = Fl::clipboard_plain_text);
/**
FLTK will call the registered callback whenever there is a change to the
@@ -491,13 +496,13 @@ FL_EXPORT extern void paste(Fl_Widget &receiver, int source, const char *type =
\note Some systems require polling to monitor the clipboard and may
therefore have some delay in detecting changes.
*/
-FL_EXPORT extern void add_clipboard_notify(Fl_Clipboard_Notify_Handler h, void *data = 0);
+static FL_EXPORT void add_clipboard_notify(Fl_Clipboard_Notify_Handler h, void *data = 0);
/**
Stop calling the specified callback when there are changes to the selection
buffer or the clipboard.
*/
-FL_EXPORT extern void remove_clipboard_notify(Fl_Clipboard_Notify_Handler h);
+static FL_EXPORT void remove_clipboard_notify(Fl_Clipboard_Notify_Handler h);
/** Returns non 0 if the clipboard contains data matching \p type.
The clipboard can contain both text and image data; in that situation this function
@@ -507,7 +512,7 @@ FL_EXPORT extern void remove_clipboard_notify(Fl_Clipboard_Notify_Handler h);
allows to copy/paste non-textual data only from/to the clipboard.
\param type can be Fl::clipboard_plain_text or Fl::clipboard_image.
*/
-FL_EXPORT extern int clipboard_contains(const char *type);
+static FL_EXPORT int clipboard_contains(const char *type);
/**
Initiate a Drag And Drop operation. The selection buffer should be
@@ -518,15 +523,15 @@ FL_EXPORT extern int clipboard_contains(const char *type);
Create a selection first using:
Fl::copy(const char *stuff, int len, 0)
*/
-FL_EXPORT extern int dnd(); // platform dependent
+static FL_EXPORT int dnd(); // platform dependent
// These are for back-compatibility only:
/** back-compatibility only: Gets the widget owning the current selection
\see Fl_Widget* selection_owner(Fl_Widget*) */
-FL_EXPORT inline Fl_Widget* selection_owner() {return selection_owner_;}
-FL_EXPORT extern void selection_owner(Fl_Widget*);
-FL_EXPORT extern void selection(Fl_Widget &owner, const char*, int len);
-FL_EXPORT extern void paste(Fl_Widget &receiver);
+static FL_EXPORT inline Fl_Widget* selection_owner() {return selection_owner_;}
+static FL_EXPORT void selection_owner(Fl_Widget*);
+static FL_EXPORT void selection(Fl_Widget &owner, const char*, int len);
+static FL_EXPORT void paste(Fl_Widget &receiver);
/** @} */
@@ -545,27 +550,27 @@ FL_EXPORT extern void paste(Fl_Widget &receiver);
See \ref events_fl_shortcut for more details about these shortcuts.
@{ */
-FL_EXPORT extern int x(); // via screen driver
-FL_EXPORT extern int y(); // via screen driver
-FL_EXPORT extern int w(); // via screen driver
-FL_EXPORT extern int h(); // via screen driver
+static FL_EXPORT int x(); // via screen driver
+static FL_EXPORT int y(); // via screen driver
+static FL_EXPORT int w(); // via screen driver
+static FL_EXPORT int h(); // via screen driver
// multi-head support:
-FL_EXPORT extern int screen_count(); // via screen driver
-FL_EXPORT extern void screen_xywh(int &X, int &Y, int &W, int &H); // via screen driver
-FL_EXPORT extern void screen_xywh(int &X, int &Y, int &W, int &H, int mx, int my); // via screen driver
-FL_EXPORT extern void screen_xywh(int &X, int &Y, int &W, int &H, int n); // via screen driver
-FL_EXPORT extern void screen_xywh(int &X, int &Y, int &W, int &H, int mx, int my, int mw, int mh); // via screen driver
-FL_EXPORT extern int screen_num(int x, int y); // via screen driver
-FL_EXPORT extern int screen_num(int x, int y, int w, int h); // via screen driver
-FL_EXPORT extern void screen_dpi(float &h, float &v, int n=0); // via screen driver
-FL_EXPORT extern void screen_work_area(int &X, int &Y, int &W, int &H, int mx, int my); // via screen driver
-FL_EXPORT extern void screen_work_area(int &X, int &Y, int &W, int &H, int n); // via screen driver
-FL_EXPORT extern void screen_work_area(int &X, int &Y, int &W, int &H); // via screen driver
-FL_EXPORT extern float screen_scale(int n); // via screen driver
-FL_EXPORT extern void screen_scale(int n, float factor); // via screen driver
-FL_EXPORT extern int screen_scaling_supported();
-FL_EXPORT extern void keyboard_screen_scaling(int value);
+static FL_EXPORT int screen_count(); // via screen driver
+static FL_EXPORT void screen_xywh(int &X, int &Y, int &W, int &H); // via screen driver
+static FL_EXPORT void screen_xywh(int &X, int &Y, int &W, int &H, int mx, int my); // via screen driver
+static FL_EXPORT void screen_xywh(int &X, int &Y, int &W, int &H, int n); // via screen driver
+static FL_EXPORT void screen_xywh(int &X, int &Y, int &W, int &H, int mx, int my, int mw, int mh); // via screen driver
+static FL_EXPORT int screen_num(int x, int y); // via screen driver
+static FL_EXPORT int screen_num(int x, int y, int w, int h); // via screen driver
+static FL_EXPORT void screen_dpi(float &h, float &v, int n=0); // via screen driver
+static FL_EXPORT void screen_work_area(int &X, int &Y, int &W, int &H, int mx, int my); // via screen driver
+static FL_EXPORT void screen_work_area(int &X, int &Y, int &W, int &H, int n); // via screen driver
+static FL_EXPORT void screen_work_area(int &X, int &Y, int &W, int &H); // via screen driver
+static FL_EXPORT float screen_scale(int n); // via screen driver
+static FL_EXPORT void screen_scale(int n, float factor); // via screen driver
+static FL_EXPORT int screen_scaling_supported();
+static FL_EXPORT void keyboard_screen_scaling(int value);
/** @} */
@@ -575,27 +580,27 @@ FL_EXPORT extern void keyboard_screen_scaling(int value);
@{ */
// color map:
-FL_EXPORT extern void set_color(Fl_Color, uchar, uchar, uchar);
-FL_EXPORT extern void set_color(Fl_Color, uchar, uchar, uchar, uchar);
+static FL_EXPORT void set_color(Fl_Color, uchar, uchar, uchar);
+static FL_EXPORT void set_color(Fl_Color, uchar, 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.
*/
-FL_EXPORT extern void set_color(Fl_Color i, unsigned c); // platform dependent
-FL_EXPORT extern unsigned get_color(Fl_Color i);
-FL_EXPORT extern void get_color(Fl_Color i, uchar &red, uchar &green, uchar &blue);
-FL_EXPORT extern void get_color(Fl_Color i, uchar &red, uchar &green, uchar &blue, uchar &alpha);
+static FL_EXPORT void set_color(Fl_Color i, unsigned c); // platform dependent
+static FL_EXPORT unsigned get_color(Fl_Color i);
+static FL_EXPORT void get_color(Fl_Color i, uchar &red, uchar &green, uchar &blue);
+static FL_EXPORT void get_color(Fl_Color i, uchar &red, uchar &green, uchar &blue, uchar &alpha);
/**
Frees the specified color from the colormap, if applicable.
If overlay is non-zero then the color is freed from the
overlay colormap.
*/
-FL_EXPORT extern void free_color(Fl_Color i, int overlay = 0); // platform dependent
+static FL_EXPORT void free_color(Fl_Color i, int overlay = 0); // platform dependent
// fonts:
-FL_EXPORT extern const char* get_font(Fl_Font);
+static FL_EXPORT const char* get_font(Fl_Font);
/**
Get a human-readable string describing the family of this face. This
@@ -609,7 +614,7 @@ FL_EXPORT extern const char* get_font(Fl_Font);
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.
*/
-FL_EXPORT extern const char* get_font_name(Fl_Font, int* attributes = 0);
+static FL_EXPORT const char* get_font_name(Fl_Font, int* attributes = 0);
/**
Return an array of sizes in \p sizep. The return value is the
@@ -622,9 +627,9 @@ FL_EXPORT extern const char* get_font_name(Fl_Font, int* attributes = 0);
points at a static buffer that is overwritten each call. Under X this
will open the display.
*/
-FL_EXPORT extern int get_font_sizes(Fl_Font, int*& sizep);
-FL_EXPORT extern void set_font(Fl_Font, const char*);
-FL_EXPORT extern void set_font(Fl_Font, Fl_Font);
+static FL_EXPORT int get_font_sizes(Fl_Font, int*& sizep);
+static FL_EXPORT void set_font(Fl_Font, const char*);
+static FL_EXPORT void set_font(Fl_Font, Fl_Font);
/**
FLTK will open the display, and add every fonts on the server to the
@@ -653,7 +658,7 @@ FL_EXPORT extern void set_font(Fl_Font, Fl_Font);
The return value is how many faces are in the table after this is done.
*/
-FL_EXPORT extern Fl_Font set_fonts(const char* = 0); // platform dependent
+static FL_EXPORT Fl_Font set_fonts(const char* = 0); // platform dependent
/** @} */
@@ -666,26 +671,26 @@ FL_EXPORT extern Fl_Font set_fonts(const char* = 0); // platform dependent
/** @} */
// labeltypes:
-FL_EXPORT extern void set_labeltype(Fl_Labeltype,Fl_Label_Draw_F*,Fl_Label_Measure_F*);
+static FL_EXPORT 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. */
-FL_EXPORT extern void set_labeltype(Fl_Labeltype, Fl_Labeltype from); // is it defined ?
+static FL_EXPORT void set_labeltype(Fl_Labeltype, Fl_Labeltype from); // is it defined ?
// boxtypes:
-FL_EXPORT extern Fl_Box_Draw_F *get_boxtype(Fl_Boxtype);
-FL_EXPORT extern void set_boxtype(Fl_Boxtype, Fl_Box_Draw_F*,
+static FL_EXPORT Fl_Box_Draw_F *get_boxtype(Fl_Boxtype);
+static FL_EXPORT void set_boxtype(Fl_Boxtype, Fl_Box_Draw_F*,
uchar, uchar, uchar, uchar,
Fl_Box_Draw_Focus_F* =NULL);
-FL_EXPORT extern void set_boxtype(Fl_Boxtype, Fl_Boxtype from);
-FL_EXPORT extern int box_dx(Fl_Boxtype);
-FL_EXPORT extern int box_dy(Fl_Boxtype);
-FL_EXPORT extern int box_dw(Fl_Boxtype);
-FL_EXPORT extern int box_dh(Fl_Boxtype);
+static FL_EXPORT void set_boxtype(Fl_Boxtype, Fl_Boxtype from);
+static FL_EXPORT int box_dx(Fl_Boxtype);
+static FL_EXPORT int box_dy(Fl_Boxtype);
+static FL_EXPORT int box_dw(Fl_Boxtype);
+static FL_EXPORT int box_dh(Fl_Boxtype);
-FL_EXPORT extern bool box_bg(Fl_Boxtype);
+static FL_EXPORT bool box_bg(Fl_Boxtype);
-FL_EXPORT extern int draw_box_active();
-FL_EXPORT extern Fl_Color box_color(Fl_Color);
-FL_EXPORT extern void set_box_color(Fl_Color);
+static FL_EXPORT int draw_box_active();
+static FL_EXPORT Fl_Color box_color(Fl_Color);
+static FL_EXPORT void set_box_color(Fl_Color);
// back compatibility:
@@ -693,19 +698,19 @@ FL_EXPORT extern void set_box_color(Fl_Color);
@{ */
/** For back compatibility, sets the void Fl::fatal handler callback */
-FL_EXPORT inline void set_abort(Fl_Abort_Handler f) {fatal = f;}
-FL_EXPORT extern void (*atclose)(Fl_Window*,void*);
-FL_EXPORT extern void default_atclose(Fl_Window*,void*);
+static FL_EXPORT inline void set_abort(Fl_Abort_Handler f) {fatal = f;}
+static FL_EXPORT void (*atclose)(Fl_Window*,void*);
+static FL_EXPORT void default_atclose(Fl_Window*,void*);
/** For back compatibility, sets the Fl::atclose handler callback. You
can now simply change the callback for the window instead.
\see Fl_Window::callback(Fl_Callback*) */
-FL_EXPORT inline void set_atclose(Fl_Atclose_Handler f) {atclose = f;}
+static FL_EXPORT inline void set_atclose(Fl_Atclose_Handler f) {atclose = f;}
/** @} */
/** See grab(Fl_Window*) */
-FL_EXPORT inline void grab(Fl_Window& win) {grab(&win);}
+static FL_EXPORT inline void grab(Fl_Window& win) {grab(&win);}
// --- FLTK Multithreading support functions ---
@@ -714,29 +719,29 @@ FL_EXPORT inline void grab(Fl_Window& win) {grab(&win);}
@{ */
// Thread locking:
-FL_EXPORT extern int lock();
-FL_EXPORT extern void unlock();
+static FL_EXPORT int lock();
+static FL_EXPORT void unlock();
// Thread wakup and defered calls:
-FL_EXPORT extern void awake();
+static FL_EXPORT void awake();
FL_DEPRECATED("since 1.5.0 - use Fl::awake() or Fl::awake(handler, user_data) instead",
-FL_EXPORT extern void awake(void* message));
-FL_EXPORT extern int awake(Fl_Awake_Handler handler, void* user_data=0);
-FL_EXPORT extern int awake_once(Fl_Awake_Handler handler, void* user_data=0);
+static FL_EXPORT void awake(void* message));
+static FL_EXPORT int awake(Fl_Awake_Handler handler, void* user_data=0);
+static FL_EXPORT int awake_once(Fl_Awake_Handler handler, void* user_data=0);
FL_DEPRECATED("since 1.5.0 - use Fl::awake() or Fl::awake(handler, user_data) instead",
-FL_EXPORT extern void* thread_message()); // platform dependent
+static FL_EXPORT void* thread_message()); // platform dependent
/** @} */
-FL_EXPORT extern void use_high_res_GL(int val);
-FL_EXPORT extern int use_high_res_GL();
+static FL_EXPORT void use_high_res_GL(int val);
+static FL_EXPORT int use_high_res_GL();
-FL_EXPORT extern void draw_GL_text_with_textures(int val);
-FL_EXPORT extern int draw_GL_text_with_textures();
+static FL_EXPORT void draw_GL_text_with_textures(int val);
+static FL_EXPORT int draw_GL_text_with_textures();
-FL_EXPORT extern int system(const char *command);
+static FL_EXPORT int system(const char *command);
// Convert Windows commandline arguments to UTF-8 (documented in src/Fl.cxx)
-FL_EXPORT extern int args_to_utf8(int argc, char ** &argv);
+static FL_EXPORT int args_to_utf8(int argc, char ** &argv);
#if FLTK_HAVE_CAIRO
/** \defgroup group_cairo Cairo Support Functions and Classes
@@ -745,18 +750,40 @@ FL_EXPORT extern int args_to_utf8(int argc, char ** &argv);
// Cairo support API
-FL_EXPORT extern cairo_t *cairo_make_current(Fl_Window *w);
-FL_EXPORT extern void cairo_autolink_context(bool alink);
-FL_EXPORT extern bool cairo_autolink_context();
-FL_EXPORT extern cairo_t *cairo_cc();
-FL_EXPORT extern void cairo_cc(cairo_t *c, bool own=false);
-FL_EXPORT extern void cairo_flush(cairo_t *c);
+static FL_EXPORT cairo_t *cairo_make_current(Fl_Window *w);
+static FL_EXPORT void cairo_autolink_context(bool alink);
+static FL_EXPORT bool cairo_autolink_context();
+static FL_EXPORT cairo_t *cairo_cc();
+static FL_EXPORT void cairo_cc(cairo_t *c, bool own=false);
+static FL_EXPORT void cairo_flush(cairo_t *c);
/** @} */
#endif // FLTK_HAVE_CAIRO
-} // namespace Fl
+/** \defgroup fl_del_widget Safe widget deletion support functions
+
+ These functions, declared in <FL/Fl.H>, support deletion of widgets inside callbacks.
+
+ Fl::delete_widget() should be called when deleting widgets
+ or complete widget trees (Fl_Group, Fl_Window, ...) inside
+ callbacks.
+
+ The other functions are intended for internal use. The preferred
+ way to use them is by using the helper class Fl_Widget_Tracker.
+
+ @{ */
+
+// Widget deletion:
+static FL_EXPORT void delete_widget(Fl_Widget *w);
+static FL_EXPORT void do_widget_deletion();
+static FL_EXPORT void watch_widget_pointer(Fl_Widget *&w);
+static FL_EXPORT void release_widget_pointer(Fl_Widget *&w);
+static FL_EXPORT void clear_widget_pointer(Fl_Widget const *w);
+
+/** @} */
+
+};
/** \defgroup fl_unicode Unicode and UTF-8 functions