Commit Graph

439 Commits

Author SHA1 Message Date
Manolo Gouy
0489d79085 Fix warnings: 'Fl_Xlib_Graphics_Driver::scale' hides overloaded virtual function [-Woverloaded-virtual]
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12242 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-05-22 13:59:22 +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
39b2976f88 De-duplicate code to load pointer to the TransparentBlt() system function at run-time.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12234 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-05-06 07:36:40 +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
Manolo Gouy
18a84d073d Remove Fl_Translated_GDI_Graphics_Driver and have its functions performed by Fl_GDI_Graphics_Driver.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12227 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-04-25 17:05:17 +00:00
Manolo Gouy
2ddc89fb61 Add an argument to the private, virtual member function void Fl_Surface_Device::end_current_().
The X11 platform uses this argument to restore the correct clipping state after
drawing to an Fl_Image_Surface object.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12226 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-04-25 12:42:22 +00:00
Albrecht Schlosser
f15f477243 Remove unused variable from class Fl_Xlib_Image_Surface_Driver.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12225 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-04-24 21:19:20 +00:00
Manolo Gouy
05b9f2bc98 Undo change at r.12221 because it's done at r.12222 in a cross-platform fashion.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12223 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-04-24 10:43:24 +00:00
Albrecht Schlosser
da31ffd952 Fix Fl_Image_Surface::image() as discussed in fltk.general
See thread "fl_pop_clip: clip stack underflow! warning on X11"
started on Thu, 20 Apr 2017.


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12221 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-04-23 10:43:48 +00:00
Manolo Gouy
ed807788ff Fix for STR#3374: Crash with pango enabled when changing default font
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12218 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-04-12 12:41:47 +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
1c0b4d9b60 Fixed typo in warning message.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12215 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-04-07 16:42:23 +00:00
Manolo Gouy
eb2df7e3b9 Account for translation also in non-Pango code section.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12211 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-03-17 21:06:55 +00:00
Manolo Gouy
b2afa612bf Create Fl_Xlib_Graphics_Driver::scale_and_render_pixmap() to draw depth-4 or scaled RGB images using Xrender.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12210 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-03-17 20:16:54 +00:00
Manolo Gouy
878cd0b0b3 The new Fl_Xlib_Graphics_Driver::draw_scaled() member function must also account for possible translation.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12206 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-03-17 16:56:06 +00:00
Manolo Gouy
367e567b7b Remove class Fl_Translated_Xlib_Graphics_Driver and move its processing to Fl_Xlib_Graphics_Driver.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12205 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-03-17 16:33:14 +00:00
Manolo Gouy
0648489b9a Fix the projective transformation matrix used for Xrender-based scaled image drawing.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12201 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-03-17 08:58:17 +00:00
Manolo Gouy
bbbf91a4b5 Add scaled image drawing to the X11 platform using Xrender.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12200 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-03-16 21:26:12 +00:00
Albrecht Schlosser
0ae21376f1 Fix include file case (patch from Haiku port, thanks).
Ref.: https://github.com/mmuman/fltk-test-only.git,
commit 59c3cfbdf0412fb30f8312ed9ddd96f5affd2f0a by François Revol.


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12195 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-03-13 23:06:08 +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
Albrecht Schlosser
2d18660f5c Fix typo (case) in include file name.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12180 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-02-25 19:31:36 +00:00
Manolo Gouy
aa917d709c Avoid potential crash occurring after calling win->show(0,0)
See [fltk.general] Drawing to Fl_Offscreen received signal SIGSEGV, Segmentation fault.
that is unrelated to Fl_Offscreen but caused by calling win->show(0,0).

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12179 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-02-22 11:33:12 +00:00
Manolo Gouy
393e481756 Mac OS: remove unused members variables from platform-specific struct Fl_Window_Driver::shape_data_type
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12178 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-02-20 12:57:40 +00:00
Manolo Gouy
ebae29222d Fl_OpenGL_Graphics_Driver : use gl_font()/gl_draw() to draw text in a GL window - continued.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12163 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-01-10 17:21:14 +00:00
Manolo Gouy
723012c2bd Fl_OpenGL_Graphics_Driver : use gl_font()/gl_draw() to draw text in a GL window.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12162 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-01-10 15:33:14 +00:00
Albrecht Schlosser
3145e06585 Fix CMake config.h and compiler warnings.
Fixed warnings: -Wsign-compare, -Wunused-but-set-variable.


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12155 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-12-23 15:40:25 +00:00
Manolo Gouy
461750c38e X11 platform: Add optional use of the pango library to draw text, gaining the possibility to draw text in any script supported by Unicode.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12153 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-12-21 15:05:02 +00:00
Manolo Gouy
00ebcd23aa Fix Fl_Xlib_Graphics_Driver::delete_bitmask() : the pixmap argument is to be deleted by XFreePixmap().
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12152 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-12-21 14:52:16 +00:00
Manolo Gouy
d0f6ef5d32 Improve Fl_Graphics_Driver::copy_offscreen() so it accepts an Fl_Offscreen argument even if not created by fl_create_offscreen().
With this, fl_copy_offscreen() can be used with any drawing surface (e.g., PostScript) and any Fl_Offscreen
argument (e.g., returned by Fl_image_Surface::offscreen()).

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12148 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-12-16 16:06:07 +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
40f977ccce Simpler code path for a member function calling another member function of same class.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12141 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-12-09 09:48:56 +00:00
Manolo Gouy
43935dffeb Add static void Fl_Surface_Device::push_current(Fl_Surface_Device *new_current) and pop_current() to set/unset the current drawing surface.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12140 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-12-07 15:09:52 +00:00
Matthias Melcher
0a1eed150a Fixed OS X SDL double buffering issue and mouse dragging.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12139 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-12-06 23:21:52 +00:00
Manolo Gouy
21781c3fe9 Add --enable-print option to configure to allow building without print support on X11 platforms.
Also, the NO_PRINT_SUPPORT preprocessor variable is renamed FL_NO_PRINT_SUPPORT.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12131 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-12-01 17:31:29 +00:00
Manolo Gouy
5bb4e853c7 Remove Fl_Image_Surface::end_current() to be called after usage of the drawing surface.
This ensures API compatibility with FLTK 1.3 where Fl_Surface_Device->set_current()
is used to change the current drawing surface.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12125 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-30 07:09:48 +00:00
Manolo Gouy
4755ace9e9 X11 platform: fix STR#3353 and correct drawing of depth-2 RGB images when XRender extension is present.
Fl_RGB_Image's of depth-2, that is, monocolor and transparent, were not drawn using the XRender extension,
when present, as are depth-4 images. With this change they are.
A by-product of this change is that it fixes an erroneous drawing (STR#3353) that occurred when
the image expands outside the window.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12124 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-28 11:32:59 +00:00
Manolo Gouy
e24409e3ed Remove change at r.12120 because STR#3353 note #6 shows it is not OK.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12122 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-19 08:01:06 +00:00
Manolo Gouy
18d478055e Fix for STR#3353: bad depth-2 image drawing when the window is resized smaller than the image.
The problem is specific to the X11 platform. The cause is that depth-2 images were not considered
in a previous change (r.10628) that introduced transparent image drawing with alpha blending.
Depth-2 images can be processed just as depth-4 images with alpha-blending.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12120 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-18 15:32:33 +00:00
Manolo Gouy
5cf12d94cb X11 platform: Fl_RGB_Image::mask_ is always 0, so remove code to process mask_ in Fl_Xlib_Graphics_Driver.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12119 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-18 15:02:34 +00:00
Manolo Gouy
d2378be968 Remove commented out code for what used to be : static int start_rgb()
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12118 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-18 14:41:20 +00:00
Manolo Gouy
4b6dfbfb4c WIN32 platform: Fix drawing of depth-4 scaled image when can_do_alpha_blending() is false.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12116 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-17 13:52:16 +00:00
Manolo Gouy
2baeda448b Replace global fl_line_width_ used only by X11 platform by Fl_Xlib_Graphics_Driver::line_width_
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12114 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-16 19:56:22 +00:00
Manolo Gouy
3b7d9185ef Remove compilation warning apparent with -Wnull-conversion
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12108 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-14 15:00:37 +00:00
Manolo Gouy
2fd5752b89 Fl_Quartz_Graphics_Driver::uncache() should also reset mask_.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@12095 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-10 19:58:20 +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
f08c414485 Reuse the same "data provider release callback" several times.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@12087 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-09 07:00:16 +00:00
Manolo Gouy
a5b584f8f6 MacOS: use less temporary copies of image data for image printing.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@12086 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-08 21:59:26 +00:00
Manolo Gouy
6eea76e187 Slightly improve the parameter list of member function int Fl_Graphics_Driver::start_image(...)
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@12079 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-05 06:00:52 +00:00
Manolo Gouy
0c31411df9 Rename Fl_Bitmap::start() to Fl_Bitmap::prepare().
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@12078 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-03 21:28:09 +00:00
Manolo Gouy
95a9edcb55 Factorize repeated code across platform-specific graphics drivers and image types
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@12077 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-03 16:34:13 +00:00