24#include <FL/fl_config.h>
25#include <FL/Fl_Export.H>
27#include <FL/fl_casts.H>
36# define Fl_Object Fl_Widget
53class Fl_Screen_Driver;
54class Fl_System_Driver;
148 friend class Fl_System_Driver;
153 static int use_high_res_GL_;
154 static int draw_GL_text_with_textures_;
155 static int box_shadow_width_;
156 static int box_border_radius_max_;
157 static int selection_to_clipboard_;
161 static Fl_Screen_Driver *screen_driver();
162 static Fl_System_Driver *system_driver();
164 static void reset_marked_text();
165 static void insertion_point_location(
int x,
int y,
int height);
209 static int e_is_click;
213 static void *e_clipboard_data;
214 static const char *e_clipboard_type;
224 static int compose_state;
225 static void call_screen_init();
251 OPTION_ARROW_FOCUS = 0,
306 static unsigned char options_[OPTION_LAST];
307 static unsigned char options_read_;
308 static int program_should_quit_;
315 static bool option(Fl_Option opt);
320 static void option(Fl_Option opt,
bool val);
331 static void (*idle_)();
346 static bool idle() {
return (idle_ !=
nullptr); }
350 static const char* scheme_;
353 static int e_original_keysym;
354 static int scrollbar_size_;
355 static int menu_linespacing_;
361 static double version();
362 static int api_version();
365 static int abi_version();
390 return val == abi_version();
394 static int arg(
int argc,
char **argv,
int& i);
395 static int args(
int argc,
char **argv,
int& i,
Fl_Args_Handler cb = 0);
396 static void args(
int argc,
char **argv);
404 static void display(
const char*);
405 static int visual(
int);
416 static void own_colormap();
417 static void get_system_colors();
423 static int scheme(
const char *name);
425 static const char*
scheme() {
return scheme_;}
455 return (scheme_ && name && !strcmp(name,scheme_));
458 static int reload_scheme();
460 static int scrollbar_size();
461 static void scrollbar_size(
int W);
462 static int menu_linespacing();
463 static void menu_linespacing(
int H);
467 static double wait(
double time);
484 static void hide_all_windows();
496 static int remove_next_timeout(
Fl_Timeout_Handler cb,
void *data = 0,
void **data_return = 0);
509 static void run_idle();
510 static void run_checks();
512 static void add_fd(
int fd,
int when,
Fl_FD_Handler cb,
void* = 0);
515 static void remove_fd(
int,
int when);
517 static void remove_fd(
int);
525 static void redraw();
547 static void (*warning)(
const char*, ...);
562 static void (*error)(
const char*, ...);
579 static void (*fatal)(
const char*, ...);
642 static int event() {
return e_number;}
685 static void get_mouse(
int &,
int &);
838 static int event_key(
int key);
844 static int get_key(
int key);
878 static int compose(
int &del);
879 static void compose_reset();
880 static int event_inside(
int,
int,
int,
int);
881 static int event_inside(
const Fl_Widget*);
884 static void enable_im();
885 static void disable_im();
955 static void copy(
const char *stuff,
int len,
int destination = 0,
986 selection_to_clipboard_ = mode ? 1 : 0;
1075 static int clipboard_contains(
const char *type);
1098 static void selection_owner(
Fl_Widget*);
1099 static void selection(
Fl_Widget &owner,
const char*,
int len);
1123 static int screen_count();
1124 static void screen_xywh(
int &X,
int &Y,
int &W,
int &H);
1125 static void screen_xywh(
int &X,
int &Y,
int &W,
int &H,
int mx,
int my);
1126 static void screen_xywh(
int &X,
int &Y,
int &W,
int &H,
int n);
1127 static void screen_xywh(
int &X,
int &Y,
int &W,
int &H,
int mx,
int my,
int mw,
int mh);
1128 static int screen_num(
int x,
int y);
1129 static int screen_num(
int x,
int y,
int w,
int h);
1130 static void screen_dpi(
float &h,
float &v,
int n=0);
1131 static void screen_work_area(
int &X,
int &Y,
int &W,
int &H,
int mx,
int my);
1132 static void screen_work_area(
int &X,
int &Y,
int &W,
int &H,
int n);
1133 static void screen_work_area(
int &X,
int &Y,
int &W,
int &H);
1134 static float screen_scale(
int n);
1135 static void screen_scale(
int n,
float factor);
1136 static int screen_scaling_supported();
1137 static void keyboard_screen_scaling(
int value);
1154 static void set_color(
Fl_Color i,
unsigned c);
1155 static unsigned get_color(
Fl_Color i);
1163 static void free_color(
Fl_Color i,
int overlay = 0);
1166 static const char* get_font(
Fl_Font);
1179 static const char* get_font_name(
Fl_Font,
int* attributes = 0);
1191 static int get_font_sizes(
Fl_Font,
int*& sizep);
1192 static void set_font(
Fl_Font,
const char*);
1221 static Fl_Font set_fonts(
const char* = 0);
1248 static int draw_box_active();
1250 static void set_box_color(
Fl_Color);
1258 static void default_atclose(
Fl_Window*,
void*);
1362 static void unlock();
1364 static void awake();
1365 FL_DEPRECATED(
"since 1.5.0 - use Fl::awake() or Fl::awake(handler, user_data) instead",
1366 static void awake(
void* message));
1369 FL_DEPRECATED(
"since 1.5.0 - use Fl::awake() or Fl::awake(handler, user_data) instead",
1370 static void* thread_message());
1403 static void delete_widget(
Fl_Widget *w);
1404 static void do_widget_deletion();
1405 static void watch_widget_pointer(
Fl_Widget *&w);
1406 static void release_widget_pointer(
Fl_Widget *&w);
1407 static void clear_widget_pointer(
Fl_Widget const *w);
1442 static int system(
const char *command);
1445 static int args_to_utf8(
int argc,
char ** &argv);
1447#ifdef FLTK_HAVE_CAIRO
1454 static cairo_t *cairo_make_current(
Fl_Window *w);
1472 cairo_state_.autolink(alink);
1484 return cairo_state_.autolink();
1489 return cairo_state_.cc();
1498 cairo_state_.cc(c, own);
1536 cairo_surface_t *s = cairo_get_target(c);
1537 cairo_surface_flush(s);
1541 static cairo_t *cairo_make_current(
void *gc);
1542 static cairo_t *cairo_make_current(
void *gc,
int W,
int H);
This file contains type definitions and general enumerations.
#define FL_BUTTON2
Mouse button 2 is pushed (M)
Definition Enumerations.H:510
#define FL_Button
A mouse button; use FL_Button + n for mouse button n.
Definition Enumerations.H:404
#define FL_CTRL
One of the ctrl keys is down.
Definition Enumerations.H:499
int Fl_Font
A font number is an index into the internal font table.
Definition Enumerations.H:981
unsigned Fl_Align
FLTK type for alignment control.
Definition Enumerations.H:904
#define FL_ALT
One of the alt keys is down.
Definition Enumerations.H:500
#define FL_BUTTONS
Bitmask: any mouse button (1-5) is pushed.
Definition Enumerations.H:514
unsigned int Fl_Color
An FLTK color value; see also Colors
Definition Enumerations.H:1038
#define FL_BUTTON5
Mouse button 5 is pushed (FORWARD)
Definition Enumerations.H:513
#define FL_BUTTON3
Mouse button 3 is pushed (R)
Definition Enumerations.H:511
#define FL_SHIFT
One of the shift keys is down.
Definition Enumerations.H:497
#define FL_BUTTON4
Mouse button 4 is pushed (BACK)
Definition Enumerations.H:512
Fl_Labeltype
The labeltype() method sets the type of the label.
Definition Enumerations.H:753
Fl_Boxtype
FLTK standard box types.
Definition Enumerations.H:562
Fl_Callback_Reason
These constants describe why a callback is performed.
Definition Enumerations.H:373
#define FL_BUTTON1
Mouse button 1 is pushed (L)
Definition Enumerations.H:509
const char * fl_local_shift
string pointer used in shortcuts, you can change it to another language
Definition Fl.cxx:2440
const char * fl_local_ctrl
string pointer used in shortcuts, you can change it to another language
Definition Fl.cxx:2443
const char * fl_local_meta
string pointer used in shortcuts, you can change it to another language
Definition Fl.cxx:2441
const char * fl_local_alt
string pointer used in shortcuts, you can change it to another language
Definition Fl.cxx:2442
Cairo is currently supported for the following platforms: Windows, macOS, Unix/Linux (X11 + Wayland).
Contains all the necessary info on the current cairo context.
Definition Fl_Cairo.H:55
Base class for image caching, scaling and drawing.
Definition Fl_Image.H:60
This widget produces an actual window.
Definition Fl_Window.H:55
The Fl is the FLTK global (static) class containing state information and global methods for the curr...
Definition Fl.H:147
static bool idle()
Returns whether at least one idle callback is currently set.
Definition Fl.H:346
static int is_scheme(const char *name)
Returns whether the current scheme is the given name.
Definition Fl.H:454
static const char * scheme()
See void scheme(const char *name)
Definition Fl.H:425
static int draw_GL_text_with_textures()
returns whether whether OpenGL uses textures to draw all text.
Definition Fl.H:1440
static int program_should_quit()
Returns non-zero when a request for program termination was received and accepted.
Definition Fl.H:477
static void use_high_res_GL(int val)
sets whether GL windows should be drawn at high resolution on Apple computers with retina displays
Definition Fl.H:1414
static int box_border_radius_max()
Get the maximum border radius of all "rounded" boxtypes in pixels.
Definition Fl.H:182
@ OPTION_FNFC_USES_GTK
When switched on (default), Fl_Native_File_Chooser runs GTK file dialogs if the GTK library is availa...
Definition Fl.H:278
@ OPTION_SIMPLE_ZOOM_SHORTCUT
When switched on and when the keyboard in use has '+' in the shifted position of its key,...
Definition Fl.H:299
@ OPTION_FNFC_USES_ZENITY
Meaningful for the Wayland/X11 platform only.
Definition Fl.H:281
@ OPTION_DND_TEXT
If text drag-and-drop is enabled (default), the user can select and drag text from any text widget.
Definition Fl.H:270
@ OPTION_FNFC_USES_KDIALOG
Meaningful for the Wayland/X11 platform only.
Definition Fl.H:285
@ OPTION_PRINTER_USES_GTK
When switched on (default), Fl_Printer runs the GTK printer dialog if the GTK library is available on...
Definition Fl.H:289
@ OPTION_SHOW_SCALING
When switched on (default), the library shows in a transient yellow window the zoom factor value.
Definition Fl.H:293
@ OPTION_VISIBLE_FOCUS
If visible focus is switched on (default), FLTK will draw a dotted rectangle inside the widget that w...
Definition Fl.H:266
@ OPTION_SHOW_TOOLTIPS
If tooltips are enabled (default), hovering the mouse over a widget with a tooltip text will open a l...
Definition Fl.H:274
static void damage(int d)
If true then flush() will do something.
Definition Fl.H:232
static int box_shadow_width()
Get the box shadow width of all "shadow" boxtypes in pixels.
Definition Fl.H:172
static void dnd_text_ops(int v)
Sets whether drag and drop text operations are supported.
Definition Fl.H:1347
static const char *const help
Usage string displayed if Fl::args() detects an invalid argument.
Definition Fl.H:401
static void box_border_radius_max(int R)
Set the maximum border radius of all "rounded" boxtypes in pixels.
Definition Fl.H:195
static int abi_check(const int val=99999)
Returns whether the runtime library ABI version is correct.
Definition Fl.H:389
static int gl_visual(int, int *alist=0)
This does the same thing as Fl::visual(int) but also requires OpenGL drawing to work.
static void program_should_quit(int should_i)
Indicate to the FLTK library whether a program termination request was received and accepted.
Definition Fl.H:483
static int use_high_res_GL()
returns whether GL windows should be drawn at high resolution on Apple computers with retina displays...
Definition Fl.H:1420
static void draw_GL_text_with_textures(int val)
sets whether OpenGL uses textures to draw all text.
Definition Fl.H:1433
static int dnd_text_ops()
Gets whether drag and drop text operations are supported.
Definition Fl.H:1354
static void grab(Fl_Window &win)
See grab(Fl_Window*)
Definition Fl.H:1324
static int damage()
If true then flush() will do something.
Definition Fl.H:524
static void box_shadow_width(int W)
Set the box shadow width of all "shadow" boxtypes in pixels.
Definition Fl.H:177
static void set_labeltype(Fl_Labeltype, Fl_Labeltype from)
Sets the functions to call to draw and measure a specific labeltype.
static void visible_focus(int v)
Gets or sets the visible keyboard focus on buttons and other non-text widgets.
Definition Fl.H:1332
static int visible_focus()
Gets or sets the visible keyboard focus on buttons and other non-text widgets.
Definition Fl.H:1338
#define FL_DEPRECATED(msg, func)
Enclosing a function or method in FL_DEPRECATED marks it as no longer recommended.
Definition fl_attr.h:67
unsigned int Fl_Shortcut
16-bit Unicode character + 8-bit indicator for keyboard flags.
Definition fl_types.h:55
unsigned char uchar
unsigned char
Definition fl_types.h:30
header for Unicode and UTF-8 character handling
int(* Fl_System_Handler)(void *event, void *data)
Signature of add_system_handler functions passed as parameters.
Definition Fl.H:122
void(* Fl_Timeout_Handler)(void *data)
Signature of timeout callback functions passed as parameters.
Definition Fl.H:97
int(* Fl_Event_Handler)(int event)
Signature of add_handler functions passed as parameters.
Definition Fl.H:119
void(* Fl_Old_Idle_Handler)()
Signature of add_idle callback function passed as parameter.
Definition Fl.H:113
void(* Fl_Awake_Handler)(void *data)
Signature of some wakeup callback functions passed as parameters.
Definition Fl.H:100
void(* Fl_FD_Handler)(FL_SOCKET fd, void *data)
Signature of add_fd functions passed as parameters.
Definition Fl.H:116
int(* Fl_Event_Dispatch)(int event, Fl_Window *w)
Signature of event_dispatch functions passed as parameters.
Definition Fl.H:135
void() Fl_Label_Draw_F(const Fl_Label *label, int x, int y, int w, int h, Fl_Align align)
Signature of some label drawing functions passed as parameters.
Definition Fl.H:83
int(* Fl_Args_Handler)(int argc, char **argv, int &i)
Signature of args functions passed as parameters.
Definition Fl.H:131
void() Fl_Box_Draw_Focus_F(Fl_Boxtype bt, int x, int y, int w, int h, Fl_Color fg, Fl_Color bg)
Signature of box focus frame drawing functions.
Definition Fl.H:92
void() Fl_Label_Measure_F(const Fl_Label *label, int &width, int &height)
Signature of some label measurement functions passed as parameters.
Definition Fl.H:86
void(* Fl_Abort_Handler)(const char *format,...)
Signature of set_abort functions passed as parameters.
Definition Fl.H:125
void(* Fl_Atclose_Handler)(Fl_Window *window, void *data)
Signature of set_atclose functions passed as parameters.
Definition Fl.H:128
void(* Fl_Idle_Handler)(void *data)
Signature of add_idle callback function passed as parameter.
Definition Fl.H:106
void() Fl_Box_Draw_F(int x, int y, int w, int h, Fl_Color color)
Signature of some box drawing functions passed as parameters.
Definition Fl.H:89
void(* Fl_Clipboard_Notify_Handler)(int source, void *data)
Signature of add_clipboard_notify functions passed as parameters.
Definition Fl.H:138
static char const *const clipboard_image
Denotes image data.
Definition Fl.H:1081
static Fl_Widget * selection_owner()
back-compatibility only: Gets the widget owning the current selection
Definition Fl.H:1097
static int selection_to_clipboard()
Returns the current selection_to_clipboard mode.
Definition Fl.H:994
static char const *const clipboard_plain_text
Denotes plain textual data.
Definition Fl.H:1078
static void selection_to_clipboard(int mode)
Copies selections on X11 directly to the clipboard if enabled.
Definition Fl.H:985
static void event_clicks(int i)
Manually sets the number returned by Fl::event_clicks().
Definition Fl.H:702
static void event_is_click(int i)
Clears the value returned by Fl::event_is_click().
Definition Fl.H:717
static int event_button4()
Returns non-zero if mouse button 4 is currently held down.
Definition Fl.H:1303
static int event_y()
Returns the mouse position of the event relative to the Fl_Window it was passed to.
Definition Fl.H:652
static int event_key()
Gets which key on the keyboard was last pushed.
Definition Fl.H:789
static int event_alt()
Returns non-zero if the Alt key is pressed.
Definition Fl.H:1274
static Fl_Widget * focus()
Gets the current Fl::focus() widget.
Definition Fl.H:899
static int event_length()
Returns the length of the text in Fl::event_text().
Definition Fl.H:866
static int event_state(int mask)
Returns non-zero if any of the passed event state bits are turned on.
Definition Fl.H:777
static int event_button5()
Returns non-zero if mouse button 5 is currently held down.
Definition Fl.H:1308
static int event_dy()
Returns the current vertical mouse scrolling associated with the FL_MOUSEWHEEL event.
Definition Fl.H:676
static int event_x_root()
Returns the mouse position on the screen of the event.
Definition Fl.H:659
static Fl_Widget * pushed()
Gets the widget that is being pushed.
Definition Fl.H:896
static const char * event_clipboard_type()
Returns the type of the pasted data during an FL_PASTE event.
Definition Fl.H:875
static int event_button1()
Returns non-zero if mouse button 1 is currently held down.
Definition Fl.H:1288
static int event_button3()
Returns non-zero if mouse button 3 is currently held down.
Definition Fl.H:1298
static int event_command()
Returns non-zero if the FL_COMMAND key is pressed, either FL_CTRL or on OSX FL_META.
Definition Fl.H:1272
static int event_button()
Gets which particular mouse button caused the current event.
Definition Fl.H:729
static int event_x()
Returns the mouse position of the event relative to the Fl_Window it was passed to.
Definition Fl.H:647
static int event_y_root()
Returns the mouse position on the screen of the event.
Definition Fl.H:666
static void * event_clipboard()
During an FL_PASTE event of non-textual data, returns a pointer to the pasted data.
Definition Fl.H:871
static int event_shift()
Returns non-zero if the Shift key is pressed.
Definition Fl.H:1268
static int event()
Returns the last event that was processed.
Definition Fl.H:642
static int event_ctrl()
Returns non-zero if the Control key is pressed.
Definition Fl.H:1270
static Fl_Widget * belowmouse()
Gets the widget that is below the mouse.
Definition Fl.H:892
static int event_button2()
Returns non-zero if mouse button 2 is currently held down.
Definition Fl.H:1293
static int event_dx()
Returns the current horizontal mouse scrolling associated with the FL_MOUSEWHEEL event.
Definition Fl.H:671
static int event_original_key()
Returns the keycode of the last key event, regardless of the NumLock state.
Definition Fl.H:798
static int event_is_click()
Returns non-zero if the mouse has not moved far enough and not enough time has passed since the last ...
Definition Fl.H:710
static const char * event_text()
Returns the text associated with the current event, including FL_PASTE or FL_DND_RELEASE events.
Definition Fl.H:859
static int event_buttons()
Returns the mouse buttons state bits; if non-zero, then at least one button is pressed now.
Definition Fl.H:1283
static int event_state()
Returns the keyboard and mouse button states of the last event.
Definition Fl.H:770
static int event_clicks()
Returns non zero if we had a double click event.
Definition Fl.H:694
static Fl_Window * modal()
Returns the top-most modal() window currently shown.
Definition Fl.H:598
static void set_abort(Fl_Abort_Handler f)
For back compatibility, sets the void Fl::fatal handler callback.
Definition Fl.H:1256
static Fl_Window * grab()
Returns the window that currently receives all events.
Definition Fl.H:604
static void set_atclose(Fl_Atclose_Handler f)
For back compatibility, sets the Fl::atclose handler callback.
Definition Fl.H:1262
static cairo_t * cairo_cc()
Gets the current Cairo context linked with a fltk window.
Definition Fl.H:1488
static void cairo_cc(cairo_t *c, bool own=false)
Sets the current Cairo context to c.
Definition Fl.H:1497
static bool cairo_autolink_context()
Gets the current autolink mode for Cairo support.
Definition Fl.H:1483
static void cairo_flush(cairo_t *c)
Flush Cairo drawings on Cairo context c.
Definition Fl.H:1534
static void cairo_autolink_context(bool alink)
When FLTK_HAVE_CAIRO is defined and cairo_autolink_context() is true, any current window dc is linked...
Definition Fl.H:1471
#define FL_ABI_VERSION
The FLTK ABI (Application Binary Interface) version number as an int.
Definition fl_config.h:87
This struct stores all information for a text or mixed graphics label.
Definition Fl_Widget.H:49