For details please see description in the source code in
test/checkers.cxx lines 620++
This commit also disables unused code: function dumpnode() which is
used only in VT100 mode.
* Add classes for application and project
* Removed all globals from Fluid.h
* Extracting args and project history into their own classes
* Moving globals into Application class
* Initialize values inside headers for some classes.
* Undo functionality wrapped in a class inside Project.
* File reader and writer are now linked to a project.
* Avoid global project access
* Nodes (former Types) will be managed by a new Tree class.
* Removed static members (hidden globals) form Node/Fl_Type.
* Adding Tree iterator.
* Use nullptr instead of 0, NULL, or 0L
* Renamed Fl_..._Type to ..._Node, FL_OVERRIDE -> override
* Renaming ..._type to ...::prototype
* Splitting Widget Panel into multiple files.
* Moved callback code into widget panel file.
* Cleaning up Fluid_Image -> Image_asset
* Moving Fd_Snap_Action into new namespace fld::app::Snap_Action etc.
* Moved mergeback into proj folder.
* `enum ID` is now `enum class Type`.
All files: remove autoconf/configure related stuff, update links.
- README.txt: describe prerequisites, provide generic instructions
on how to use CMake to build FLTK
- test/demo.cxx: remove code used for configure/make build
- test/CMakeLists.txt: remove obsolete 'target_compile_definitions()'
Note: this is only a hidden implementation detail: all concerned
variables are private, and the code is simplified (less error prone).
Size of Fl_Group on 64-bit Linux: 168 -> 176 Bytes (+8 Bytes).
test/group.cxx: test for Fl_Group::{add, insert, remove} etc.
The Windows doc at https://learn.microsoft.com/en-us/typography/font-list/arial-unicode-ms
of the "Arial Unicode MS" font reads
"The font was included with Office but not Windows. …
We stopped servicing and updating Arial Unicode and no longer install it as part of Office."
Using that font is therefore not the best choice.
This commmit uses "Microsoft Sans Serif" instead available in all Windows versions
since Windows 2000.
The old version was "synchronized" by calling Fl::check() in a loop
which resulted in the highest speed possible on any platform.
It turned out that this was way too fast on the Wayland platform as
`valerius` posted on IRC/Matrix on Nov 30, 2024. Citation:
"anyone else notice the cube demo on Wayland is mega ultra hyper speed?".
I took the opportunity to change the demo to use a timer with a given
frame rate (see constant 'FPS') to synchronize drawing.
Note: the 'speed' slider is independent of the drawing frequency.
Finally this commit adds statistics output when the 'Stats / Exit' button
is pressed like
Iterations = 304, runtime = 12.167 sec, fps = 24.99, requested: 25
with the requested frame rate (default = 25) and allows the user to
continue to see more statistics.
To do (very likely not in 1.4.x):
1. integrate running statistics in the display
2. make the desired frame rate variable at runtime (new slider)
This allows to build the CubeView demo from the unmodified FLTK sources
w/o having to provide a 'config.h' file by defining HAVE_GL=1 on the
compiler commandline. See also comment in test/CubeView.h.
test/CubeMain.cxx: don't include <config.h> at all (not needed)
test/CubeView.h: #include <config.h> only if HAVE_GL is not defined
1) Improve and clarify documentation:
- update, reformat, and reorder parts of CREDITS.txt
- make sure that documentation appears in doxygen docs
- add '\since 1.4.0' to documentation of new methods and functions
- remove doxygen's '\brief' where not required (we're using
JAVADOC_AUTOBRIEF = YES)
- clarify screen scaling, scaling factor, and related stuff
- add more info about backwards compatibility for X11 specific code
2) Update dependencies
- add code to get the platform and backend
- display platform and backend on screen
- improve and simplify layout (using Fl_Grid)
- add version check indicator
Note: it is *unusual* (not FLTK style) that Fl_Window::border()
returns 'unsigned int' instead of 'int'.
This should be investigated in FLTK 1.5 but maybe we can't change it:
it's been so already in FLTK 1.3 and maybe earlier.
Note: one goal is to have to edit fewer version numbers in source
files for each release.
We may be able to generate some files by the build procedure (CMake)
to avoid editing them in the future (1.5.0 or later).
Note: if enabled, then the usual global scaling shortcuts don't work
and scaling by shortcuts is disabled.
This is intended for testing and not for normal usage.
- May need a better method name.
- This makes the gap between the image in a label and
the label text user settable.
- Can be tested using test/label app
... w/o editing a file. The default font is "Liberation Mono".
Just set environment variable FLTK_USING_WINE=1 to enable this feature.
Rationale: on /my/ current test system the font chosen by `wine` for
FL_COURIER is a proportional font whereas the display in Fl_Terminal
requires a fixed font for correct output. Font "Liberation Mono"
solves this long standing issue for me w/o having to change source code
but other Linux systems may require a different font.
Resize the window to see the effect: line sizes increase with the box
size and become wider depending on the box size. Minimal line width
of the "wide" lines has been changed from 4 to 5, maximal width is
now 9. Distinct widths are { 5, 7, 8, 9 }.
Note: the default (thin) line width is now 1 rather than 0 since the
default 0 may render badly.
Screenshot in documentation has been updated.