diff options
Diffstat (limited to 'FL/Fl.H')
| -rw-r--r-- | FL/Fl.H | 371 |
1 files changed, 199 insertions, 172 deletions
@@ -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 |
