"extra tests" are defined in test/CMakeLists.txt for FLTK devs to allow
quickly building test programs with minimal edits. The new feature
can be used to set a higher C++ standard for these test programs.
See instructions in test/CMakeLists.txt.
Note: this is only intended to be used for quick tests and *must* not
be committed and pushed to the main repository for obvious reasons.
The original code can not scale well below 50%. To improve
filtering in a fast way, huge images are scaled by powers of
two before fine scaling using the original bilinear scale.
- Replace Fl_Browser with Fl_Terminal which uses a constant buffer size
- Don't lock the GUI for every single prime. Collect primes for at
least 0.25 seconds before calling Fl::awake(handler, buffer)
- Use (two) alternate buffers for collecting prime data.
- Use Fl::lock() *only* to protect thread data at initialization time.
Observation on Debian 12, CPU: 12-core, 12th Gen Intel Core i7-1260P:
speedup > factor 4, using multiple cores,
GUI fully functional: scrolling the display, resizing, ...
Tested natively (X11 + Wayland) and cross-compiled for Windows,
using `wine`.
- allocate a new struct 'load_stat' on the heap
- use struct load_stat to open image file (fp) and for error counters
The previous fix of #1207 unfortunately decremented volatile variables
which caused (plausible) compiler warnings by clang.
- Do not change or remove the cache variable FLTK_BACKEND_WAYLAND:
this is an option set (and must only be changed) by the user.
- CMake/options.cmake: check Wayland availability if option
FLTK_BACKEND_WAYLAND is ON and set the result variable
FLTK_USE_WAYLAND accordingly.
- Replace FLTK_BACKEND_WAYLAND with FLTK_USE_WAYLAND everywhere
else, except as noted above: in options.cmake.
- remove conversion of fltk.spec.in to fltk.spec
- improve code related to working directory (variables)
- remove old (disabled) debug code
- create a standard MD5SUM file for verification of packages
- improve comments and output of instructions
This minimal implementation works and enables basic (mostly default)
CPack support to build binary packages of FLTK (RPM, TGZ, NSIS, ...).
Users need the required tools like `rpmbuild` to build a particular
type of package or installer.
Using EPM or rpmbuild directly with a provided "list" file has
been discontinued: fltk.list.in (EPM) and fltk.spec.in (RPM) have
consequently been deleted.
README.CPack.txt: basic documentation
The added if() statement's condition is always false in FLTK before addition to it
of class Fl_Native_Input. Therefore, the present modification is effectless unless
this new class is added to the library, either in its core or as an addon.
This method was erroneously declared 'deprecated' in previous versions.
However, this method is public and calls the *protected* method
Fl_Window::force_position(). Therefore it is kept as a regular
public method.
1. src/Fl_add_idle.cxx: add missing parameter docs
2. FL/fl_draw.H: rename 1st parameter of fl_draw_pixmap(...) from
'data' to 'cdata'.
The 2nd warning appears to be caused by a 'friend' declaration in
FL/Fl_Graphics_Driver.H, line 98:
'friend FL_EXPORT int fl_draw_pixmap(const char*const* cdata, ...)'
This 'friend' declaration seems to "confuse" some (newer?) doxygen
versions, definitely doxygen 1.13.2.
This turned out to be more complicated than just to delete a function
because it was used internally, and the callback signatures were a bit
flaky. I also added a lot of documentation to clarify matters.
FL/Fl.H: document idle callback signatures, make some internal
functions of class Fl private, add public Fl::idle() accessor (read-
only), add Fl::add_idle(Fl_Old_Idle_Handler cb) to enable using
old-style idle callbacks w/o 'data' argument.
FL/forms.H: replace Fl::set_idle() with Fl::add_idle().
src/Fl.cxx: rename private Fl::idle_ with trailing underscore.
src/Fl_System_Driver.cxx: use new public accessor Fl::idle() to access
Fl::idle_ which is now private.
src/Fl_add_idle.cxx: improve documentation, clarify idle callback
matching, add example code in docs, rename methods, add overloaded
Fl::add_idle(Fl_Old_Idle_Handler cb).
src/Fl_win32.cxx: use public Fl::idle() rather than private member.
src/drivers/Unix/Fl_Unix_System_Driver.cxx: same as above.
src/Fl_cocoa.mm: same as above.
misc/abi-check: This new script can be used (on Linux) to check ABI
compatibility between patch releases. It does everything required
in one execution (after installing the prerequisites once).
Documentation is included in the script. It may be modified for
other platforms, or ABI checking can be done manually.
README.abi-version.txt: add a chapter regarding ABI checks
misc/abi-compliance-checker.txt: update documentation on how to run
misc/abi-check. In previous versions (1.4) building was done using
configure/make. Thus this file was almost completely rewritten.
documentation/src/migration_1_4.dox: an unrelated but tiny correction.
The `memcmp` call would crash in Adress sanitizer if the memory compare
would run into an undefined buffer. `memcmp` is not guaranteed to stop
reading a buffer if a difference is found.
Define platform specific library names as CMake variables so they can
be used to build demo programs w/o platform specific instructions.
This includes optional components (e.g. OpenGL) and the MSVC specific
extra object library (call_main) and the fact that we build only one
"monolithic" shared library with MSVC.
Also, enable building FLTK Forms library in CI builds.
The goal is to change the version number for a new release only in
CMakeLists.txt. This is the second step.
This commit also adds a chapter "Migrating Code from FLTK 1.4 to 1.5".
Details:
- documentation/CMakeLists.txt: configure 'version.dox'
- fluid/documentation/CMakeLists.txt: same as above
- documentation/Doxyfile.in: add "Migrating Code from FLTK 1.4 to 1.5"
- documentation/src/index.dox: include 'version.dox' and 'migrating...'
- fluid/documentation/src/index.dox: same as above
- documentation/src/preface.dox: include 'version.dox'
- documentation/version.dox.in: input to CMake configure 'version.dox'
- fluid/documentation/version.dox.in: same as above
- documentation/src/migration_1_4.dox: update links
- documentation/src/migration_1_5.dox: new documentation chapter
The goal is to change the version number for a new release only in
CMakeLists.txt. This is the first step.
Details:
- CMake/gen_config.cmake: this new file is included to generate the
header files config.h (private, root directory), and FL/fl_config.h
(public, can be installed). This file implements also ABI version
checks (removed from FL/Enumerations.H and with more checks).
Warnings are issued if the chosen ABI version is invalid.
- CMake/export.cmake: code to generate 'config.h' was moved to
CMake/gen_config.cmake.
- CMake/options.cmake: set default of FLTK_BUILD_FORMS=OFF + comments
- CMakeLists.txt: move generation of FL/fl_config.h to gen_config.cmake,
add API and ABI versions to CMake summary,
- FL/Enumerations.H: remove most of the version number details which
are now included in FL/fl_config.h. This needed also some doxygen
related changes.
- README.CMake.txt: improve docs of FL_ABI_VERSION and some more.
Reflect the new default of CMake option FLTK_BUILD_FORMS (OFF).
- documentation/Doxyfile.in: add FL/fl_config.h to file list. This
file is created in the build tree (and may be "installed").
- fl_config.h.in: add version number details that have been moved here
from Enumerations.H (used to generate FL/fl_config.h).
Up to FLTK 1.4 we had two distinct input files for each header file:
one for configure and one for CMake. Since 1.5 we have only one input
file for each header which can now have a more appropriate name.
1) configh.cmake.in -> config.h.in
2) fl_config.cmake.in -> fl_config.h.in
Remove references to "current" version numbers, use 1.2.3 as example
for clarity and to simplify version number updates.
Also: minor textual fixes (typos), unwrap lines, etc..
Todo: Documentation states:
"This file is not actively maintained any more, but is left here
as a reference, until the doxygen documentation is completed."
Check if the documentation generated by doxygen from source files
contains everything needed so this file can be removed.