Commit Graph

127 Commits

Author SHA1 Message Date
Manolo Gouy
12a2fc2a4d X11+pango: correct y position of text in line that was bad for some non-latin scripts and some pango versions.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12639 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-01-18 13:45:45 +00:00
Manolo Gouy
32676b5f56 Some cleaning in comments
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12621 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2018-01-05 08:16:42 +00:00
Manolo Gouy
f24ee501b9 STR#3320 continued: make sure there's no undrawn space between nested rectangles and images.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12595 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-12-18 12:13:33 +00:00
Manolo Gouy
3f9f4debbb STR#3444: Add MacOS support for application rescaling (not quite complete)
With this, most MacOS FLTK app can be scaled with command/+/-/0/ keystrokes.
A scaling problem remains, visible in test/cube, where the "Test" string is not positioned correctly.

GLUT apps can also be scaled (across platforms).

SVG images are re-rasterized after app scaling for optimal drawing.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12594 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-12-18 08:52:55 +00:00
Manolo Gouy
ab7c915bf0 Fix for STR#3397: find adequate X font to use it with GL.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12404 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-27 07:58:38 +00:00
Manolo Gouy
a57381e804 Fl_Scalable_Graphics_Driver::draw(Fl_RGB_Image *,...) : change how the current scaling factor is taken into account.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12400 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-25 18:04:56 +00:00
Manolo Gouy
86e60e9068 X11 and WIN32: slightly change Fl_XXX_Graphics_Driver::cache(Fl_Pixmap*) to use the Fl_Image_Surface object.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12399 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-25 17:42:46 +00:00
Manolo Gouy
9eeac9c737 X11+xft-pango: have Fl::set_fonts() show fonts with black, light, medium, demi bold, oblique styles.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12398 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-25 15:33:05 +00:00
Manolo Gouy
c7405a22a8 X11 platform: cleaner implementation of changing the active drawing surface and maintaining clip regions.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12396 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-24 12:40:29 +00:00
Manolo Gouy
c2d5cf4067 Simplify using Fl_XXX_Graphics_Driver::copy_offscreen() instead of Fl_Scalable_Graphics_Driver::copy_offscreen_unscaled()
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12395 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-20 20:18:15 +00:00
Manolo Gouy
6bcadf536f Fl_XXX_Surface_Driver::set_current() : call Fl_Surface_Device::set_current() first to get fl_window right.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12383 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-15 14:30:48 +00:00
Albrecht Schlosser
ec951ce695 Remove unnecessary #include statements and compilation guards.
Currently src/drivers/OpenGL/Fl_OpenGL_Graphics_Driver.cxx wouldn't
contribute any code to the lib, but it is kept for future extensions.
This file is no longer compiled (see src/CMakeLists.txt and src/Makefile).

Tested (only) under Windows and Linux.


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12381 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-14 17:10:26 +00:00
Albrecht Schlosser
4198caa780 Make 'driver' header include guards more standard.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12380 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-14 15:44:41 +00:00
Manolo Gouy
01a885f911 Fl_Xlib_Graphics_Driver::set_fonts() with Pango: handle case when 'Regular' is not alone in face name.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12378 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-13 13:51:14 +00:00
Manolo Gouy
67a63d40e0 Fl_Xlib_Graphics_Driver::set_fonts() with Pango: account better for variety of possible font styles.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12377 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-13 11:50:47 +00:00
Manolo Gouy
44a3f9fce9 Fix error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12376 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-12 15:28:44 +00:00
Manolo Gouy
7a6124bda6 Improve Fl_Xlib_Graphics_Driver::set_fonts() when using Pango to build standard FLTK font names prefixed with I,B, or P.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12375 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-08-12 15:16:35 +00:00
Manolo Gouy
7fbf318c53 Exact computation of scaled clipping region for X11 platform.
Each rectangular component of the clipping region is transformed exactly as by Fl_Xlib_Graphics_Driver::rectf_unscaled()

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12272 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-06-27 07:39:58 +00:00
Manolo Gouy
93a99431ed Move line_width_ protected member variable from Fl_Xlib_Graphics_Driver to Fl_Scalable_Graphics_Driver
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12269 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-06-21 16:08:32 +00:00
Manolo Gouy
6b2c5fcd09 X11 platform: Accurate box graphics at wide range of scaling factor values.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12254 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-06-06 19:09:02 +00:00
Manolo Gouy
0960d07315 Additional check in Fl_Xlib_Graphics_Driver::font_unscaled(Fl_Font, Fl_Fontsize) to recognize if current font is unchanged.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12246 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-06-01 15:23:26 +00:00
Manolo Gouy
3a390bfb5f X11 + Pango platform: improve text drawing with angle.
Make sure that text length computed without angle is equal to text length drawn with angle.
This property is essential so that rotated text appears at controlled location at both ends.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12244 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-05-22 14:42:06 +00:00
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
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
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
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
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
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
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
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