fltk/FL
Manolo Gouy f48750b0f4 Introduce HiDPI + rescaling support for the X11 platform (+ partial support for WIN32)
Corresponds to STR #3320
1) HiDPI support consists in detecting the adequate scaling factor for the screen on which
FLTK maps a window, and scaling all FLTK units by this factor. FLTK tries to detect the correct
value of this factor at startup (see more details below). Environment variable
FLTK_SCALING_FACTOR can also be used to set this value.
2) Rescaling support consists in changing the scaling factor of all FLTK windows
in reply to ctrl/+/-/0/ keystrokes.

More details for the various platforms :

- X11: Support is very advanced. Some details need still to be improved.
Automatic detection of the correct starting value of the scaling factor works well
with the gnome desktop. The present code contains no support for this on
other desktops.  FLTK_SCALING_FACTOR provides a workaround.

-WIN32: Support is incomplete at this point, although many test
applications have partial or complete HiDPI and scaling support.
The current value of the system's scaling factor is correctly detected
at application startup. Apps respond to changes of this value in real time.
Support needs to define the FLTK_HIDPI_SUPPORT preprocessor variable
at compile time. This way, standard builds produce a code with the
default WIN32 HiDPI support, that is, where all graphics goes to an internal
buffer that gets enlarged by the system and then mapped to the HiDPI
display. To experiment with (or develop) the new HiDPI support requires
a modified build procedure in which  FLTK_HIDPI_SUPPORT is defined
at compile time. When the support will be complete, the requirement for the
definition of this preprocessor variable will be removed. The present commit
contains support for a single scaling factor. Eventually, per-screen scaling
factors should be implemented, as done for X11.

- MacOS: this commit does not give new HiDPI for this platform.
Eventually, window rescaling in reply to command/+/-/0/ is desirable.
Per-screen scaling factor makes no sense on this platform because
the OS itself takes care of the difference between the resolutions of
traditional and retina displays.


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12239 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-05-17 11:54:18 +00:00
..
Enumerations.H Label alignment documentation clarifications. 2017-03-05 11:27:30 +00:00
filename.H Rewrite filename_isdir.cxx for the driver model. 2016-04-08 15:48:28 +00:00
Fl_Adjuster.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
fl_ask.H Avoid the expression "foreign language" in comments. 2016-04-20 07:19:19 +00:00
Fl_Bitmap.H Introduce HiDPI + rescaling support for the X11 platform (+ partial support for WIN32) 2017-05-17 11:54:18 +00:00
Fl_BMP_Image.H STR #2873: new function Fl_Image::fail() that returns 0, ERR_NO_IMAGE, ERR_FORMAT, or ERR_FILE_ACCESS to make life easier when loading images. 2015-05-23 23:42:26 +00:00
Fl_Box.H Corrected typo in doc. 2012-08-17 09:18:06 +00:00
Fl_Browser_.H Fix Fl_Browser::textsize(int) to adjust the scrollbars (STR #3057). 2016-03-29 11:54:44 +00:00
Fl_Browser.H Fix Fl_Browser::textsize(int) to adjust the scrollbars (STR #3057). 2016-03-29 11:54:44 +00:00
Fl_Button.H Update docs related to buttons and update Fl_Check_Button.png. 2014-10-19 20:17:17 +00:00
Fl_Cairo_Window.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Cairo.H [Cairo] Remove part of the dependency of FL/Fl.H on config.h. 2016-02-13 18:02:17 +00:00
Fl_Chart.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Check_Browser.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Check_Button.H Update docs related to buttons and update Fl_Check_Button.png. 2014-10-19 20:17:17 +00:00
Fl_Choice.H Documentation clarification for all menu oriented widgets 2015-01-10 22:05:15 +00:00
Fl_Clock.H Fix typo. 2017-05-15 15:35:30 +00:00
Fl_Color_Chooser.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Copy_Surface.H Remove Fl_Image_Surface::end_current() to be called after usage of the drawing surface. 2016-11-30 07:09:48 +00:00
Fl_Counter.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Device.H Add an argument to the private, virtual member function void Fl_Surface_Device::end_current_(). 2017-04-25 12:42:22 +00:00
Fl_Dial.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Double_Window.H Fixed 'flush()' code for single, double, and overlay buffering 2016-03-13 22:16:37 +00:00
fl_draw.H Introduce HiDPI + rescaling support for the X11 platform (+ partial support for WIN32) 2017-05-17 11:54:18 +00:00
Fl_Export.H Enable symbol visibility on Linux, bringing a shared libfltk on par with Windows. 2014-08-21 12:29:48 +00:00
Fl_File_Browser.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_File_Chooser.H Update dependencies. 2016-09-20 13:35:44 +00:00
Fl_File_Icon.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_File_Input.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Fill_Dial.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_Fill_Slider.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_Float_Input.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_FormsBitmap.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_FormsPixmap.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Free.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_GIF_Image.H STR #2873: new function Fl_Image::fail() that returns 0, ERR_NO_IMAGE, ERR_FORMAT, or ERR_FILE_ACCESS to make life easier when loading images. 2015-05-23 23:42:26 +00:00
Fl_Gl_Window_Driver.H Introduce HiDPI + rescaling support for the X11 platform (+ partial support for WIN32) 2017-05-17 11:54:18 +00:00
Fl_Gl_Window.H Make Fl_Gl_Window::pixels_per_unit() return a float (rather than int) value. 2016-06-22 07:45:53 +00:00
Fl_Graphics_Driver.H Introduce HiDPI + rescaling support for the X11 platform (+ partial support for WIN32) 2017-05-17 11:54:18 +00:00
Fl_Group.H Documentation: fix resizable images that were not displayed correctly. 2014-11-10 22:09:11 +00:00
Fl_Help_Dialog.H Bump version numbers for next minor release: FLTK 1.4.0. 2016-01-30 00:56:42 +00:00
Fl_Help_View.H Fix handing of html entities in copied text by Fl_Help_View widget. 2016-05-19 16:50:09 +00:00
Fl_Hold_Browser.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_Hor_Fill_Slider.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_Hor_Nice_Slider.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_Hor_Slider.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_Hor_Value_Slider.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_Image_Surface.H Remove Fl_Image_Surface::end_current() to be called after usage of the drawing surface. 2016-11-30 07:09:48 +00:00
Fl_Image.H Introduce HiDPI + rescaling support for the X11 platform (+ partial support for WIN32) 2017-05-17 11:54:18 +00:00
Fl_Input_.H Documentation updates (part of STR #2751). 2015-07-21 13:55:13 +00:00
Fl_Input_Choice.H Separated Fl_Input_Choice.H and Fl_Input_Choice.cxx (STR #2750). 2017-03-11 23:26:32 +00:00
Fl_Input.H Rewrite Fl_Input.cxx under the driver model. 2016-04-06 19:39:15 +00:00
Fl_Int_Input.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_JPEG_Image.H STR #2873: new function Fl_Image::fail() that returns 0, ERR_NO_IMAGE, ERR_FORMAT, or ERR_FILE_ACCESS to make life easier when loading images. 2015-05-23 23:42:26 +00:00
Fl_Light_Button.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Line_Dial.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_Menu_.H Documentation fixes and clarifications. 2016-07-09 17:14:22 +00:00
Fl_Menu_Bar.H Introduce virtual void Fl_Menu_Bar::update() with a platform-specific reimplementation to support Fl_Sys_Menu_Bar. 2016-10-06 16:42:59 +00:00
Fl_Menu_Button.H Documentation clarification for all menu oriented widgets 2015-01-10 22:05:15 +00:00
Fl_Menu_Item.H Bringing over fix [r11786] from 1.3 current to the porting branch. 2016-07-19 23:50:09 +00:00
Fl_Menu_Window.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_Menu.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
fl_message.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Multi_Browser.H Changed Fl_Multi_Browser behaviour on the Mac OS platform so multiple selection 2015-11-05 17:54:16 +00:00
Fl_Multi_Label.H Add some doxygen descriptions for the (previously undocumented) Fl_Multi_Label struct, and make some minor related adjustments to the docs for Fl_Label and Fl_Labeltype. 2015-02-04 13:12:43 +00:00
Fl_Multiline_Input.H Escape '\n' ('\\n') in doxygen comment. 2014-10-09 11:45:02 +00:00
Fl_Multiline_Output.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_Native_File_Chooser.H Add Doxygen definitions to the new Fl_XXX_Driver classes. 2016-04-23 06:27:31 +00:00
Fl_Nice_Slider.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_Object.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Output.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_Overlay_Window.H Rewrite Fl_Overlay_Window class under the driver model. 2016-03-27 06:58:54 +00:00
Fl_Pack.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Paged_Device.H Beginning of Albrecht's plan for Fl_Window and Fl_Window_Driver classes. 2016-03-18 18:20:11 +00:00
Fl_Pixmap.H Introduce HiDPI + rescaling support for the X11 platform (+ partial support for WIN32) 2017-05-17 11:54:18 +00:00
Fl_Plugin.H Set missing svn properties. 2017-03-13 23:31:38 +00:00
Fl_PNG_Image.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_PNM_Image.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Positioner.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_PostScript.H Complete DOxygen documentation of the Fl_Graphics_Driver class. 2016-04-24 16:22:38 +00:00
Fl_Preferences.H STR# #2973: applied patch str_2973_r9958_sun-fix-errors-5.patch verbatim. 2013-09-16 20:25:14 +00:00
Fl_Printer.H Beginning of Albrecht's plan for Fl_Window and Fl_Window_Driver classes. 2016-03-18 18:20:11 +00:00
Fl_Progress.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Radio_Button.H Update docs related to buttons and update Fl_Check_Button.png. 2014-10-19 20:17:17 +00:00
Fl_Radio_Light_Button.H Update docs related to buttons and update Fl_Check_Button.png. 2014-10-19 20:17:17 +00:00
Fl_Radio_Round_Button.H Update docs related to buttons and update Fl_Check_Button.png. 2014-10-19 20:17:17 +00:00
Fl_Repeat_Button.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_Return_Button.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_RGB_Image.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Roller.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Round_Button.H Update docs related to buttons and update Fl_Check_Button.png. 2014-10-19 20:17:17 +00:00
Fl_Round_Clock.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_Screen_Driver.H Introduce HiDPI + rescaling support for the X11 platform (+ partial support for WIN32) 2017-05-17 11:54:18 +00:00
Fl_Scroll.H Remove FL_ABI_VERSION directives 2016-04-24 19:39:27 +00:00
Fl_Scrollbar.H STR 2714: remove lint (variables that have the same name as a function in the same scope). 2011-10-02 06:25:13 +00:00
Fl_Secret_Input.H Mac OS text input: defined a small API that user-defined text editing widgets can use to signal marked text. 2012-12-24 11:45:07 +00:00
Fl_Select_Browser.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_Shared_Image.H Documentation: drawing a scaled shared image no longer involves resizing the source image under MSWindows. 2017-01-02 09:48:23 +00:00
fl_show_colormap.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
fl_show_input.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Simple_Counter.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_Single_Window.H Fixed 'flush()' code for single, double, and overlay buffering 2016-03-13 22:16:37 +00:00
Fl_Slider.H Fixed doc typo 2012-05-28 15:39:12 +00:00
Fl_Spinner.H Enable Up/Down keys in Fl_Spinner if input has focus (STR #2989). 2017-03-10 21:47:08 +00:00
Fl_Sys_Menu_Bar.H Introduce virtual void Fl_Menu_Bar::update() with a platform-specific reimplementation to support Fl_Sys_Menu_Bar. 2016-10-06 16:42:59 +00:00
Fl_System_Driver.H Give platform-independent default implementation to Fl_System_Driver::gettime() 2017-03-14 17:51:20 +00:00
Fl_Table_Row.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Table.H Document Fl_Table's protected member variables. 2017-04-27 16:29:30 +00:00
Fl_Tabs.H Fl_Tabs: improve tab label drawing (STR #3075, STR #3076). 2017-03-06 16:54:33 +00:00
Fl_Text_Buffer.H Handle non-ASCII characters when selecting a word or moving the cursor by one word. 2016-12-17 07:42:54 +00:00
Fl_Text_Display.H Fl_Text_Display documentation updates. 2017-02-01 18:36:23 +00:00
Fl_Text_Editor.H Removed ABI guards that snuck in with r11819. 2016-07-19 23:19:16 +00:00
Fl_Tile.H Fix documentation of Fl_Tile (STR #3303). 2016-05-09 11:29:59 +00:00
Fl_Tiled_Image.H Improve Fl_Tiled_Image drawing, scheme background setup, and documentation. 2015-03-01 20:16:56 +00:00
Fl_Timer.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Toggle_Button.H STR 2705: moved all inline constructors (that I could find) from header files into source files. Even though this breaks downward compatibility, it does make dynamic linking possible for all classes. 2012-07-24 04:37:22 +00:00
Fl_Toggle_Light_Button.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Toggle_Round_Button.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Tooltip.H Details on PORTME items. Move fl_parse_color() to screen drivers. 2016-02-13 12:57:00 +00:00
Fl_Tree_Item_Array.H Remove #if FLTK_ABI_VERSION >= xxx directives. 2016-04-23 04:30:39 +00:00
Fl_Tree_Item.H Add non-const version of Fl_Tree_Item::tree(). 2016-10-17 12:51:05 +00:00
Fl_Tree_Prefs.H Remove #if FLTK_ABI_VERSION >= xxx directives. 2016-04-23 04:30:39 +00:00
Fl_Tree.H Fl_Tree documentation fixes and two missing statements. 2016-09-24 23:15:48 +00:00
fl_types.h Fix spelling errors and improve documentation. 2015-06-15 20:24:41 +00:00
fl_utf8.h Fix typos. 2016-04-09 10:42:17 +00:00
Fl_Valuator.H Improve documentation of Fl_Valuator class. 2016-03-08 13:51:01 +00:00
Fl_Value_Input.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Value_Output.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Value_Slider.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_Widget_Surface.H Set missing svn properties. 2017-03-13 23:31:38 +00:00
Fl_Widget.H Move typedef fl_(u)intptr_t to FL/platform_types.h. 2016-04-23 15:08:26 +00:00
Fl_Window_Driver.H Introduce HiDPI + rescaling support for the X11 platform (+ partial support for WIN32) 2017-05-17 11:54:18 +00:00
Fl_Window.H Continue removing non window-related member-functions from class Fl_X. 2016-04-16 12:28:50 +00:00
Fl_Wizard.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_XBM_Image.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl_XPM_Image.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
Fl.H Documentation: restructure the description of function Fl::paste(). 2016-09-16 09:27:32 +00:00
forms.H Export fl_gettime forms function 2014-10-29 20:17:38 +00:00
gl2opengl.h Initial revision 1998-10-06 18:21:25 +00:00
gl_draw.H Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
gl.h Mark places that need to be refactored with // PORTME: 2016-02-11 12:02:36 +00:00
glu.h Mark places that need to be refactored with // PORTME: 2016-02-11 12:02:36 +00:00
glut.H Fix for Brain Davis' bug report in fltk.general on 12/20/16. 2016-12-20 23:27:29 +00:00
mac.H Add MAC_OS_X_VERSION_10_12 preprocessor variable 2016-09-24 06:27:18 +00:00
Makefile.in Modifications to all LGPL headers for STR #2685. 2011-07-19 04:49:30 +00:00
math.h Remove obsolete EMX (DOS, OS/2 extender) support. 2016-04-12 17:53:18 +00:00
names.h Finally remove FLTK_ABI_VERSION preprocessor macro from code. 2016-11-19 01:20:53 +00:00
platform_types.h Set missing svn properties. 2017-03-13 23:31:38 +00:00
porting.H Change FL/porting.H after having rewritten x.H and platform_types.h under the driver model. 2016-09-11 14:24:36 +00:00
README.Xcode Added and removed silly files 2010-10-24 20:54:08 +00:00
win32.H [CMake] Fix Windows dll build with Visual Studio generator. 2016-08-09 14:11:42 +00:00
x.H Fix shared library build. 2016-11-16 14:04:57 +00:00

All FLTK header files are in the FL subdirectory of the fltk.framework.
Image header files are located in "fltk.framework/Headers/FL/images/".