summaryrefslogtreecommitdiff
path: root/src/drivers
AgeCommit message (Collapse)Author
2022-02-06OpenGL implementation of all `fl_` "Drawing Fast Shapes" graphics calls (#385)Matthias Melcher
* Fix build system for unites, * Updated unittest to check OpenGL drawing. Making sure that OpenGL drawing is exactly the same as native drawing to make FLTK widget rendering look the same in GL windows. * Make OpenGL optional. * Implemented clipping in OpenGL * unites drawing fast shapes * Fixed CMake * Updating unittest. Added tests for fl_pi and fl_arc (int) Renamed tab to render complex shapes. * Improved OpenGL FLTK drawing emulation. * Fixed GTK ROUND DOWN BOX * Fixing Makefile for unittest * Correctly aligning OpenGL text. * Fixed text alignment in GL windows. Explained the "FLTK over GL " example in Cube. * Overlapping test. * Better GL graphics alignment. * Drawing the focus rect. * Adding Alpha Channel support for GL. * Added FLTK-on-GL documentation.
2022-02-03Fl_Preferences (X11): Fix detection of preferences directoryAlbrecht Schlosser
- Fix compiler warning [-Wmaybe-uninitialized] for variable home - Reformat enum 'Root' for better readability - Add new enum values CORE_SYSTEM_L and CORE_USER_L - Improve documentation (deprecated and new enums) - Initialize internal static variable 'filename' which could be used uninitialized and thus return any previous value (type == MEMORY)
2022-02-03Reorganize classes Fl_System_Driver and Fl_Screen_DriverManoloFLTK
These virtual members are moved from Fl_Screen_Driver to Fl_System_Driver - wait(double) - ready() These virtual members are moved from Fl_System_Driver to Fl_Screen_Driver - copy(const char *stuff, int len, int clipboard, const char *type) - void paste(Fl_Widget &widget, int clipboard, const char *type) - clipboard_contains(const char *type) - clipboard_notify_change() These members are moved from Fl_X11_Screen_Driver to Fl_X11_System_Driver - poll_or_select_with_delay(double time_to_wait) - poll_or_select() and are made virtual in preparation for the introduction of class Fl_Unix_System_Driver.
2022-01-31Consolidate timeout handling across platforms (#379)Albrecht Schlosser
Add Fl_Timeout class Move platform independent code of Fl::wait() to main part - basic timeout handling - Fl::run_checks() - Fl::run_idle() - Fl::idle() - waiting time calculation (next timeout) - remove platform dependent "screen driver" stuff
2022-01-23Preferences XDG path (#377)Matthias Melcher
* Preferences: remove CamelCase from public interface. * Prefs: documentation. * Prefs: updating Doxygen comments * XDG conforming preferences path
2022-01-23Remove experimental platforms Android, Pico, SDL (PR #376)Albrecht Schlosser
... as discussed in fltk.coredev: "FLTK 1.4.0 release schedule" https://groups.google.com/g/fltkcoredev/c/PDbHTRpXVh0/m/JqboexZ_AwAJ
2022-01-21Fix compiler warnings [-Wunused-variable]Albrecht Schlosser
... and missing return value [-Wreturn-type]
2022-01-19Fixing and upgrading Fl_Preferences (#374)Matthias Melcher
* Added filename function to Fl_Preferences Static function to get filename before opening. Member to get filename after opening. Bug fixes for memory mapped preferences. * ERROR is a macro on Windows, don't use it * Added Fl_Preferences::dirty(). User can now check if the database will be written when flushed or destroyed. Flush returns a crude error code. * Fl_Preferences::get binary data returns # of bytes read. * Verified group deletion code * Fl_Preferences ignores locale. This will make .prefs files interchangeable between different computers. * Updating the Preferences Mode to ignore locale. * Fixes in docs.
2022-01-16Rename FL/fl_string.h to FL/fl_string_functions.hAlbrecht Schlosser
This is part 1 of the final fix for a previous name clash on case insensitive file systems (fl_string.h vs. Fl_String.H).
2022-01-16Improve Fl_GTK_Native_File_Chooser_Driver in relation to FLTK windows.ManoloFLTK
Implement a new way to make the GTK file-chooser window modal-like by preventing any event processing by other FLTK windows. The new way is also no longer X11-specific.
2022-01-14Move make_transient() to Fl_Posix_System_Driver from Fl_Screen_DriverManoloFLTK
2022-01-07Re-organize cross-platform support for text input methods.ManoloFLTK
FLTK 1.3 supports complex text input methods (TIMs) for the 3 platforms (X11, Windows, macOS). This support has an interface with FLTK that is common for X11 and Windows, via (undocumented) functions fl_set_spot(), fl_set_status() and fl_reset_spot(). In contrast, and because it's been developed independently, the interface between the macOS TIM and FLTK 1.3 is completely different : static functions FL::insertion_point_location() and Fl::reset_marked_text(). The present change implements a single TIM/FLTK interface used by all platforms based on functions fl_set_spot() and fl_reset_spot(). The previous macOS-specific functions FL::insertion_point_location() and Fl::reset_marked_text() are maintained only for compatibility with 1.3 and deprecated.
2022-01-07Add virtual void Fl_Graphics_Driver::set_status() and implement for X11 ↵ManoloFLTK
platform.
2022-01-02Text input method for X11: fix for case when text widget is inside subwindow.ManoloFLTK
2021-12-19Add check against NULL pointer (fix for issue #338).ManoloFLTK
2021-12-18Generate FL/fl_config.h rather than FL/abi-version.hAlbrecht Schlosser
... as discussed in fltk.coredev in thread "RFC: introduce public config header <FL/fl_config.h>", see: https://groups.google.com/g/fltkcoredev/c/xLCs1AIXMVo/m/MHZpQggzAQAJ - Rename abi-version.h to fl_config.h, rename input files, update dependencies, .gitignore, CMake, configure and Makefiles. - Include Cairo options in FL/fl_config.h - Rename FLTK_USE_CAIRO to FLTK_HAVE_CAIROEXT for consistency. - Include <FL/fl_config.h> in config.h and wherever necessary, fix include order (move FL/Fl.H to the top) and more. - Move USE_X11 to fl_config.h and rename to FLTK_USE_X11 - Do not include <config.h> in Cairo demo program which is no longer required in Cairo programs since FLTK 1.4.0
2021-12-14Fix trailing whitespace and a MSVC compiler warningAlbrecht Schlosser
No code changes
2021-12-14Windows platform and Input Methods: improve GUI scaling support.ManoloFLTK
2021-12-13Windows platform: account for GUI scaling when using input method.ManoloFLTK
2021-12-12X11 platform: account for GUI scaling in location of input method aux window.ManoloFLTK
2021-12-09Remove compiler warnings about unused parameters (issue #307) - cont'dManoloFLTK
2021-12-07Fix for fltk.coredev "reentrant calls with Fl_Window::resize" - cont'dManoloFLTK
2021-12-06Fix whitespace errors (no code changes)Albrecht Schlosser
(1) convert tabs to spaces (2) remove trailing whitespace
2021-12-06macOS platform: compute the screen number where a top window is mapped.ManoloFLTK
2021-12-02PostScript output: initialise member variables in Fl_Cairo_Graphics_Driver ↵ManoloFLTK
constructor. Also, remove inadequate Fl_Surface_Device::push_current(this) call in Fl_Posix_Printer_Driver::begin_job().
2021-11-26 Fix for issue #254: remove hardware overlay support - cont'd.ManoloFLTK
2021-11-26Fix for issue #254: remove hardware overlay support .ManoloFLTK
2021-11-26Fix for issue #253: Remove xdbe supportManoloFLTK
2021-11-25X11+XRender platform: more accurate drawing of RGB images when GUI is scaled.ManoloFLTK
RGB images are now drawn to a size that exactly fit discretised rectangles when non integral GUI scaling values are used.
2021-11-25Fix X11 platform bug when drawing transparent RGB image without XRender.ManoloFLTK
The bug would appear with test/device and when scaling up to 133% or above: the background of the Porsche pixmap would be truncated. The bug requires to set OPTION_XRENDERER=0 to appear.
2021-11-24Fix for [fltk.coredev] reentrant calls with Fl_Window::resizeManoloFLTK
2021-11-17Fix Fl_Window::decorated_w() in some X11 situations.ManoloFLTK
2021-11-14Fix "failed to build with pango libarary" (issue #291)Albrecht Schlosser
The error was reported for "centos 6 with devtoolset-6 installed which contains gcc (GCC) 6.3.1 20170216 (Red Hat 6.3.1-3)". The fix includes the missing header files *and* makes sure that the correct conversions (to size_t) take place as in src/drivers/PostScript/Fl_PostScript_image.cxx.
2021-10-31Consistently make Fl_Paged_Device::begin_page call ↵ManoloFLTK
Fl_Surface_Device::push_current.
2021-10-27Fix focus box drawing on X11 (partial fix for issue #156)Albrecht Schlosser
This fixes focus box drawing on X11 for some broken graphics drivers with line width zero as discussed on issue #156 titled "Incorrect rendering on Alpine Linux". This title is not entirely correct. The issue has been observed on other Linux distros as well if the "modesetting" driver is in effect. This does not fix rectangle drawing (missing pixels) in general which is obviously caused by a similar or the same driver issue.
2021-10-27Fix indenting, whitespace errors and dependenciesAlbrecht Schlosser
(no code changes)
2021-09-12Fix malloc/delete mismatch (X11 only)Albrecht Schlosser
2021-08-27Remove compiler warnings '-Wextra-semi' (see also PR #266)Albrecht Schlosser
I compiled with `-Wextra-semi -Werror=extra-semi` on Linux and Windows (cross-compiled on Linux) and removed all "extra semicolon" warnings I could find. I didn't check on macOS (yet). Note: Linux configured with and w/o Pango but not w/o Xft. Compilation with other options (e.g. Cairo) might still emit such warnings.
2021-08-05Have Fl_Quartz_Copy_Surface_Driver account for current display scaling factor.ManoloFLTK
2021-07-24Remove useless friend declaration.ManoloFLTK
2021-07-21Call pthread's recursive mutex on Linux (Issue #245)Albrecht Schlosser
Add CMake test for PTHREAD_MUTEX_RECURSIVE Add autoconf/configure compile test for PTHREAD_MUTEX_RECURSIVE Replace "#ifdef PTHREAD_MUTEX_RECURSIVE" with "#ifdef HAVE_PTHREAD_MUTEX_RECURSIVE" and define HAVE_PTHREAD_MUTEX_RECURSIVE in config.h
2021-07-08Harmonize and document syntax of config.h source filesAlbrecht Schlosser
- configh.in: add and improve comments, reorder statements - configh.cmake.in: add comments, fix whitespace - src/drivers/GDI/Fl_GDI_Graphics_Driver_line_style.cxx: fix trailing whitespace
2021-07-08macOS: Fl::add_timeout() must always create a new timer (#248)Albrecht Schlosser
The old version would reschedule an existing timer if a matching timer existed already which was unique to macOS. The new behavior is consistent on all platforms and allows to create multiple timer entries with the same callback and userdata.
2021-07-07macOS: Fix a timer inconsistency and prevent a crashAlbrecht Schlosser
Calling Fl::repeat_timeout() instead of Fl::add_timeout() to create a timer would crash on macOS but fall back to Fl::add_timeout() on Windows and Unix/Linux. Although this is documented as "undefined behavior" a crash should always be avoided and the fallback is now consistent on all major platforms. In the future this may be documented as the standard behavior.
2021-06-26Fix a potential memory leak (PR #241)Albrecht Schlosser
This is a hypothetical fix, since the condition `count == 0` may not be true although `doit` has been allocated. In practice this should not be possible since the same loop is executed twice in lines 463++ and 471++. But anyway, here it is...
2021-06-26Fix potential memory leak (#241)fire-eggs
Signed-off-by: Albrecht Schlosser <albrechts.fltk@online.de>
2021-06-18Revert parts of and fix other 'constness' changes (#239, #181)Albrecht Schlosser
Some of the previous constness changes turned out to be incomplete, others had to be reverted because some other driver methods could not be made 'const' - particularly those calling open_display() to get the requested information.
2021-05-31Windows platform: use GDI+ to antialias oblique lines and curves.ManoloFLTK
2021-05-28New virtual member function Fl_Graphics_Driver::colored_rectf().ManoloFLTK
2021-05-26Fix trailing whitespace and formattingAlbrecht Schlosser