Commit Graph

123 Commits

Author SHA1 Message Date
Manolo Gouy
90efebb97e Divide virtual Fl_Screen_Driver::open_display() in a platform-specific part followed by a platform-independent part.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12245 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-06-01 14:05:47 +00:00
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
Manolo Gouy
0794cc0ceb Fix erroneously cased include file names
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12233 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-05-05 16:27:59 +00:00
Albrecht Schlosser
cd10796251 Fix Windows CreateDC/DeleteDC mismatch (STR #3373).
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12217 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-04-11 21:53:50 +00:00
Manolo Gouy
c37744cde9 Add to Fl_System_Driver support for measuring time with split second resolution.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12187 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-03-07 16:58:13 +00:00
Manolo Gouy
1fc01c7cbb Implement a platform-independent version of Fl_Graphics_Driver::copy_offscreen() usable when drawing to PostScript.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12147 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-12-14 18:54:12 +00:00
Manolo Gouy
c530cdeda6 Use Fl_Graphics_Driver::default_driver() when convenient.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@12088 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-09 09:49:48 +00:00
Manolo Gouy
da276e6efa Add one more argument to virtual Fl_System_Driver::file_browser_load_filesystem() giving length of the filename argument
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@12050 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-10-19 08:40:41 +00:00
Manolo Gouy
eabbc41ef1 Avoid compilation warnings with -Wmaybe-uninitialized
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11993 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-09-29 13:28:40 +00:00
Manolo Gouy
0250c5a98a Move font-related member functions from Fl_Screen_Driver to Fl_Graphics_Driver.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11968 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-09-23 13:56:07 +00:00
Manolo Gouy
0e33655853 Fl_Screen_Driver class: its platform dependent member functions should not be static.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11966 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-09-22 13:22:03 +00:00
Manolo Gouy
02535d1222 Rewrite Fl::set_fonts(), Fl::get_font_sizes(), Fl::get_font_name() under the driver model.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11965 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-09-22 07:44:34 +00:00
Manolo Gouy
827fa250f3 Remove fl_wait() that is not part of the public API.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11953 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-09-20 12:58:51 +00:00
Manolo Gouy
c06374378f Remove fl_ready() not in public API and mostly same as Fl_XXX_Screen_Driver::ready()
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11951 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-09-19 16:59:59 +00:00
Manolo Gouy
fd2da982b6 Fix Fl_Copy_Surface under Windows 10 when the desktop scaling factor value is > 100 %
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11899 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-08-27 15:54:51 +00:00
Manolo Gouy
0e7ad720d1 Fix Fl_WinAPI_Window_Driver::border_width_title_bar_height() for displays where true DPI is not 96.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11895 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-08-27 06:59:54 +00:00
Manolo Gouy
5dbfe413ae Fix computation of Fl_Window::decorated_w() and decorated_h() when apps are resized through display setting.
Under Windows 10:
when the user sets the value of "Change the size of text, apps and other items" in display settings
to above 100 %, the computation of Fl_Window::decorated_w() and decorated_h() has to
take the scaling factor into account.
This factor is also necessary to draw correctly window title bars.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11893 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-08-25 12:42:50 +00:00
Manolo Gouy
b823bb0d45 Change comment describing return type of Fl_WinAPI_Screen_Driver::read_win_rectangle()
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11887 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-08-23 12:39:27 +00:00
Manolo Gouy
0267781cec Change return type of Fl_Screen_Driver::read_win_rectangle() to Fl_RGB_Image*
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11884 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-08-23 09:38:46 +00:00
Manolo Gouy
54dcf145fe Fix Fl_X11_System_Driver::utf8locale() that did not work when no locale is set.
Also, minor simplification of Fl_WinAPI_System_Driver::utf8locale().

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11846 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-07-23 04:48:40 +00:00
Albrecht Schlosser
77f607224c Fix compiler warnings.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11765 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-05-31 12:09:52 +00:00
Manolo Gouy
f428d0077d Set svn file properties.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11700 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-26 07:25:53 +00:00
Matthias Melcher
769d151a12 Virtualized add_fd and remove_fd into System Driver
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11668 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-19 22:45:22 +00:00
Manolo Gouy
1e8a53ecc4 Move private_dc from Fl_X for WIN32 platform to Fl_WinAPI_Window_Driver.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11664 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-19 19:37:49 +00:00
Manolo Gouy
4aa388d4ff Add static Fl_XXX_Window_Driver *driver(Fl_Window*) to get the platform-specific driver of a window.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11663 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-19 17:34:15 +00:00
Manolo Gouy
24487a719f Move Fl_X::make_fullscreen() for WIN32 platform to Fl_WinAPI_Window_Driver:: make_fullscreen().
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11660 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-19 15:47:23 +00:00
Manolo Gouy
1e060f6408 Transform Fl_X::make(Fl_Window*) for WIN32 platform into virtual Fl_X* Fl_Window_Driver::makeWindow().
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11659 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-19 15:33:58 +00:00
Manolo Gouy
c0f14ca2f0 Move other_xid member variable from class Fl_X to class F_Window_Driver.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11654 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-18 17:02:44 +00:00
Manolo Gouy
e790ac9653 Move wait_for_expose member variable from class Fl_X to class Fl_Window_Driver.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11653 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-18 16:11:15 +00:00
Manolo Gouy
0629b40afd Move set_cursor() member functions from class Fl_X to classes Fl_Window_Driver and derived.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11652 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-18 14:31:07 +00:00
Matthias Melcher
e2495a760a MSWindows fixes for previous commits.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11644 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-17 17:45:44 +00:00
Manolo Gouy
c6c92e4037 Remove set_icons() from the virtual API of class Fl_Window_Driver because it is internal to some drivers.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11636 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-17 05:41:05 +00:00
Manolo Gouy
c4953935b0 Continue removing non window-related member-functions from class Fl_X.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11633 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-16 13:15:49 +00:00
Manolo Gouy
b0ce80f56b Continue removing non window-related member-functions from class Fl_X.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11632 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-16 12:28:50 +00:00
Manolo Gouy
2fcb4f4192 Move platform-dependent implementations of fl_open/close_display() to the Fl_Screen_Driver class
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11619 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-15 15:36:10 +00:00
Manolo Gouy
15715cd898 Move platform-dependent implementations of Fl::en/dis/able_im() to the Fl_Screen_Driver class
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11618 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-15 15:12:22 +00:00
Manolo Gouy
397a3b83bf Move platform-dependent implementations of fl_clipboard_notify_changes() to the Fl_System_Driver class
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11617 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-15 15:01:27 +00:00
Manolo Gouy
b1f8f3e2aa Move platform-dependent implementations of Fl::clipboard_contains() to the Fl_System_Driver class
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11616 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-15 14:49:46 +00:00
Manolo Gouy
d683841f9f Move the platform-dependent implementations of Fl::paste() to the Fl_System_Driver class.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11615 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-15 14:32:13 +00:00
Manolo Gouy
7508a033c5 Continue moving to Fl_System_Driver the platform_dependent implementations of member functions of the Fl class.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11614 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-15 14:18:37 +00:00
Manolo Gouy
e74f213704 Finish rewrite of Fl_File_Chooser2.cxx for the driver model.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11591 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-12 21:32:55 +00:00
Manolo Gouy
4ebdf97b70 Begin to rewrite Fl_File_Chooser2.cxx for the driver model.
The parts with case-insensitive filename comparisons for WIN32
and for WIN32 but not CYGWIN still have to be rewritten.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11588 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-12 17:06:20 +00:00
Manolo Gouy
fce1483eb8 Rewrite fl_draw_pixmap.cxx under the driver model.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11587 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-12 13:47:38 +00:00
Manolo Gouy
3d4ce29bd9 Add and correct a few Doxygen comments.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11586 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-12 07:07:21 +00:00
Manolo Gouy
1411c11905 Improve use of struct stat for WIN32 platform.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11582 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-11 13:50:41 +00:00
Manolo Gouy
5b44fe3bff Remove compilation errors in Fl_File_Icon.cxx with MSVC compiler with new method Fl_System_Driver::file_type().
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11581 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-11 13:07:08 +00:00
Albrecht Schlosser
aafd8b6031 Fix VisualC++ build (Visual Studio 2015).
IDE generated with CMake, still many warnings, but compiles and runs.

Note: we *must* get rid of all VisualStudio-specific #define's like:

 #define unlink _unlink

This one led to a compilation error (not a warning).

src/Fl_File_Icon.cxx: I had to add _MSC_VER (WIN32) distinction as in
  previous code (FLTK 1.3). Obviously MinGW is more Unixy than MS VC++
  since MinGW compiled and linked the code. Needs a better fix ...


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11580 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-11 00:46:11 +00:00
Manolo Gouy
6879d54fc4 Rewrite Fl_lock.cxx under the driver model.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11578 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-10 20:38:04 +00:00
Manolo Gouy
95fa60b71d Rewrite Fl_get_system_colors.cxx under the driver model.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11577 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-10 19:37:18 +00:00
Manolo Gouy
99b3c6813a Rewrite Fl_File_Input.cxx under the driver model.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11575 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-10 18:36:47 +00:00