summaryrefslogtreecommitdiff
path: root/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx
AgeCommit message (Collapse)Author
2017-05-17Introduce HiDPI + rescaling support for the X11 platform (+ partial support ↵Manolo Gouy
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-03-17Create Fl_Xlib_Graphics_Driver::scale_and_render_pixmap() to draw depth-4 or ↵Manolo Gouy
scaled RGB images using Xrender. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12210 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-03-17The new Fl_Xlib_Graphics_Driver::draw_scaled() member function must also ↵Manolo Gouy
account for possible translation. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12206 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-03-17Remove class Fl_Translated_Xlib_Graphics_Driver and move its processing to ↵Manolo Gouy
Fl_Xlib_Graphics_Driver. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12205 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-03-17Fix the projective transformation matrix used for Xrender-based scaled image ↵Manolo Gouy
drawing. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12201 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-03-16Add scaled image drawing to the X11 platform using Xrender.Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12200 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-12-21Fix Fl_Xlib_Graphics_Driver::delete_bitmask() : the pixmap argument is to be ↵Manolo Gouy
deleted by XFreePixmap(). git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12152 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-12-07Add static void Fl_Surface_Device::push_current(Fl_Surface_Device ↵Manolo Gouy
*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-11-30Remove Fl_Image_Surface::end_current() to be called after usage of the ↵Manolo Gouy
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-28X11 platform: fix STR#3353 and correct drawing of depth-2 RGB images when ↵Manolo Gouy
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-19Remove change at r.12120 because STR#3353 note #6 shows it is not OK.Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12122 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-18Fix for STR#3353: bad depth-2 image drawing when the window is resized ↵Manolo Gouy
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-18X11 platform: Fl_RGB_Image::mask_ is always 0, so remove code to process ↵Manolo Gouy
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-18Remove commented out code for what used to be : static int start_rgb()Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12118 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-05Slightly improve the parameter list of member function int ↵Manolo Gouy
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-03Rename Fl_Bitmap::start() to Fl_Bitmap::prepare().Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@12078 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-03Factorize repeated code across platform-specific graphics drivers and image ↵Manolo Gouy
types git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@12077 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-11-02Replace declarations such as "friend class Fl_Xlib_Graphics_Driver;" by ↵Manolo Gouy
platform-independent declarations. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@12076 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-09-11Put the code that defines the layout of struct _XRegion in FL/x.HManolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11930 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-22Add necessary test of HAVE_X11_XREGION_H when the content of struct _XRegion ↵Manolo Gouy
is needed. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11677 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-03-26Remove a few uses of the fl_graphics_driver global variableManolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11439 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-03-23Fix Linux build: one include file and missing #include <config.h>.Albrecht Schlosser
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11405 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-03-19(hopefully) Final driver-based rewriting of the Fl_Image_Surface class.Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11371 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-03-04Fix Fl_Xlib_Graphics_Driver::draw(Fl_RGB_Image *,...) that was incompletely ↵Manolo Gouy
changed in earlier commit. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11280 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-03-03A hopefully clearer implementation of the fl_XXX_offscreen() functions.Manolo Gouy
The Xlib driver is tricky because it uses two kinds of offscreen buffers. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11277 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-03-02Fix negative 'd' and 'ld' args in fl_draw_image() (X11 + Windows).Albrecht Schlosser
This commit fixes a regression in FLTK 1.3.x, where negative values of 'd' (pixel delta) and 'ld' (line delta) didn't work anymore under Unix/Linux (X11) and Windows. With this commit the regression is fixed on all supported platforms. Equivalent of branch-1.3, svn r11270. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11272 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-02-27Rewrite all fl_XXX_offscreen() functions so they use an Fl_Image_Surface object.Manolo Gouy
These functions become therefore platform-independent. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11241 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-02-26Rename Fl_Xlib_Graphics_Driver.h to Fl_Xlib_Graphics_Driver.HManolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11224 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-02-25Remove the global variable fl_mask_bitmap - put it in the graphics driver's ↵Manolo Gouy
virtual API. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11216 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-02-23Fix Fl_RGB_Image::uncache() and Fl_Bitmap::uncache().Manolo Gouy
It is not possible to use fl_graphics_driver in these functions because when they are called *fl_graphics_driver may have been deleted. A solution is to use Fl_Display_Device::display_device()->driver() instead which is always valid. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11212 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-02-19Rename Fl_Graphics_Driver::set_gc(void*) to gc(void*) and ↵Manolo Gouy
Fl_Graphics_Driver::get_gc() to gc(). git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11191 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-02-18Remove all uses of the fl_gc global variable. Towards a clean driver model.Manolo Gouy
fl_gc remains usable by the application as a hook into the system. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11189 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-02-09Fix typos for Linux from previous check-in.Matthias Melcher
- The previous check-in for OS X moved a few files and symbols around - Fixing for Linux what I broke in my previous commit - Fixing stuff for MSWindows next - CodeBlocks IDE file generation via CMake works git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11140 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-02-09Move ifdef's in RGB_Image into driver system.Matthias Melcher
- change image caching variable types to uintptr_t - added driver function to uncache image data - cleaning up (Xlib and GDI will likely throw syntax errors. Trying to fix ASAP) git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11138 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-01-31Moved fl_create_bitmask and fl_delete_bitmask functions into driver ↵Matthias Melcher
structure. Tested on OS X. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11100 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-01-26Further fudged up the Makefile dependencies.Matthias Melcher
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11061 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-01-26Moving image drawing code into the driver systemMatthias Melcher
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11060 ea41ed52-d2ee-0310-a9c1-e6b18d33e121