23#ifndef FL_SCREEN_DRIVER_H
24#define FL_SCREEN_DRIVER_H
28#include <FL/Fl_Text_Editor.H>
46class Fl_System_Driver;
55class Fl_Screen_Driver {
59 virtual ~Fl_Screen_Driver();
61 static const int MAX_SCREENS = 16;
64 static float fl_intersection(
int x1,
int y1,
int w1,
int h1,
65 int x2,
int y2,
int w2,
int h2);
68 static int keyboard_screen_scaling;
72 static Fl_System_Driver *system_driver;
75 static const int fl_NoValue;
76 static const int fl_WidthValue;
77 static const int fl_HeightValue;
78 static const int fl_XValue;
79 static const int fl_YValue;
80 static const int fl_XNegative;
81 static const int fl_YNegative;
84 static void del_transient_window(
void *);
92 virtual float scale(
int) {
return 1; }
93 virtual void scale(
int ,
float ) {}
94 static Fl_Screen_Driver *newScreenDriver();
96 virtual void display(
const char *) { }
98 virtual int XParseGeometry(
const char*
string,
int* x,
int* y,
unsigned int* width,
unsigned int* height);
100 virtual void own_colormap() {}
102 virtual const char *shortcut_add_key_name(
unsigned key,
char *p,
char *buf,
const char **);
104 virtual int need_menu_handle_part1_extra() {
return 0;}
106 virtual int need_menu_handle_part2() {
return 0;}
108 virtual int event_key(
int) {
return 0;}
109 virtual int get_key(
int) {
return 0;}
110 virtual int visual(
int flags);
112 virtual void init() {}
113 virtual int x() {
return 0; }
114 virtual int y() {
return 0; }
115 virtual int w() {
return 800; }
116 virtual int h() {
return 600; }
117 virtual int screen_count();
118 void screen_xywh(
int &X,
int &Y,
int &W,
int &H,
int mx,
int my);
119 virtual void screen_xywh(
int &X,
int &Y,
int &W,
int &H,
int ) {
125 void screen_xywh(
int &X,
int &Y,
int &W,
int &H,
int mx,
int my,
int mw,
int mh);
126 virtual bool screen_boundaries_known() {
return true; }
127 virtual int screen_num(
int x,
int y);
128 virtual int screen_num(
int x,
int y,
int w,
int h);
129 virtual void screen_dpi(
float &h,
float &v,
int n = 0) {
134 void screen_work_area(
int &X,
int &Y,
int &W,
int &H,
int mx,
int my);
135 virtual void screen_work_area(
int &X,
int &Y,
int &W,
int &H,
int n) {
136 screen_xywh(X, Y, W, H, n);
139 virtual void beep(
int) {}
141 virtual void flush() {}
146 virtual void get_system_colors();
148 virtual const char *get_system_scheme();
150 static int secret_input_character;
154 virtual int has_marked_text()
const {
return 0; }
156 virtual int compose(
int &del) {
161 virtual void compose_reset();
164 virtual int dnd(
int use_selection = 0) { (void)use_selection;
return 0; }
168 virtual int text_display_can_leak()
const {
return 0; }
172 virtual void request_keyboard() {}
174 virtual void release_keyboard() {}
195 bool may_capture_subwins =
false,
196 bool *did_capture_subwins = NULL) {
197 (void)may_capture_subwins;
198 (void)did_capture_subwins;
204 static size_t convert_crlf(
char *s,
size_t len);
207 virtual int input_widget_handle_key(
int key,
unsigned mods,
unsigned shift,
Fl_Input *input);
209 virtual int get_mouse(
int &,
int &) {
return 0; }
211 virtual void enable_im() {}
212 virtual void disable_im() {}
216 virtual void open_display_platform() {}
218 virtual void close_display() {}
220 virtual void offscreen_size(
Fl_Offscreen,
int &,
int &) {}
222 void rescale_all_windows_from_screen(
int screen,
float f,
float old_f);
223 static void transient_scale_display(
float f,
int nscreen);
225 static FL_EXPORT
int scale_handler(
int event);
226 virtual void desktop_scale_factor() {}
227 void use_startup_scale_factor();
228 enum APP_SCALING_CAPABILITY {
230 SYSTEMWIDE_APP_SCALING,
231 PER_SCREEN_APP_SCALING
235 virtual APP_SCALING_CAPABILITY rescalable() {
return NO_APP_SCALING; }
237 virtual void default_icons(
const Fl_RGB_Image *icons[],
int count);
239 virtual void copy(
const char * ,
int ,
int ,
const char * ) {}
241 virtual void paste(
Fl_Widget &,
int ,
const char * ) {}
243 virtual int clipboard_contains(
const char * ) {
return 0;}
245 virtual void clipboard_notify_change() {}
247 virtual void set_spot(
int font,
int size,
int X,
int Y,
int W,
int H,
Fl_Window *win);
248 virtual void reset_spot();
249 virtual void set_status(
int X,
int Y,
int W,
int H);
250 virtual float base_scale(
int numscreen);
The Fl_Group class is the main FLTK container widget.
Definition Fl_Group.H:56
The Fl_RGB_Image class supports caching and drawing of full-color images with 1 to 4 channels of colo...
Definition Fl_Image.H:339
This widget produces an actual window.
Definition Fl_Window.H:55
This file contains simple "C"-style type definitions.
unsigned char uchar
unsigned char
Definition fl_types.h:30
Simple linked list item associating a key/state to a function.
Definition Fl_Text_Editor.H:44