20th of September to 26th of September 2021
SixtyFPS UI Library
- Font handling
As a follow-up to last week's improvements to the font handling in the GL backend, this week we did some cleanups and bug fixes.
- GL backend: minor speed up for font fallback handling (
1214e4
)
Avoid the dance of using font-kit to re-discover the same .ttf file and read it all into memory every time we need to render text where the primary font provides insufficient coverage.
- GL backend: minor speed up in text rendering (
b5de61
)
Only query fallback fonts from the system if we really need to.
- Simplify font resolution in the GL backend (
ac0cc8
)
The font resolution function querying
fontdb
is fast now, so we can always call it when rendering text. That way we don't need all the indirection in thetext_size()
, etc. functions, we don't need an entry in the item graphics cache for the font and we can avoid a lot of property dependencies. - GL backend: Speed up glyph coverage checking (
2f1db3
)
Instead of always mapping the face (from disk), first fan out existing cached coverage information. Any unchecked scripts are then checked in the slow code path with
with_face_data
later. - GL backend: Fix missing glyphs in the slide puzzle demo (
8fea1b
)
The checkmark and reload have always been missing in some circumstances. The recent fixes with glyph coverage check helped, but they do not account for the fact that characters like the check mark map to the same script (Common). So for these scripts we need to perform an exact glyph coverage check.
- GL backend: minor speed up for font fallback handling (
1214e4
)
- Build Configuration
- Make it possible to disable x11 support (
043c19
)
The GL backend defaults to enabling X11. The default crate depends on the GL backend but it doesn't specify default-features = false, therefore x11 is basically always enabled.
In line with commit 1fd8c7, this change makes sure that the defaults are defined in the tree entry points: The Rust API crate, the interpreter crate and the CMake project define the defaults. The latter already enabled X11 by default, but the first two did not.
- Make it possible to use the C++ build with Qt 6 (
45aa93
)
Since we require Qt 5.15, we can use the version-less CMake targets and also find Qt 6 first.
- Bug Fixes
- Hide the cursor of the disabled TextEdit (
3f13c6
)
Fixes #513
- Fix panic in LSP when declaring animation on layout controlled property (
5ee005
)
When an animate foo {} declaration ends up creating an synthetic, invalid BindingExpression, we still need to give it a span, to ensure that the diagnostics produced later have *some* location set.
Fixes #515
- Interpreter: add type checking for declared properties (
730cbf
)
Fixes #512
- Fix background color of window when viewing non-window elements (
fa8975
)
The synthetic window we "inject" in the ensure_window() pass did not have the window-background from the style applied. This is visible for example when viewing something like
Rectangle { background: blue; border-radius: height / 2 }
- Hide the cursor of the disabled TextEdit (
3f13c6
)
Making SixtyFPS adapt to the needs of a wide range of projects is important to us.
Tools
Extras
- Created template repositories that you can clone to get started with sixtyfps:
- https://github.com/sixtyfpsui/sixtyfps-cpp-template: A template for a C++ app using SixtyFPS
- https://github.com/sixtyfpsui/sixtyfps-rust-template: A template for a Rust app using SixtyFPS that can be cloned with cargo generate
- Another video tutorial was made: Getting Started with SixtyFPS and C++
Statistics
17 patches were committed by 2 authors.
← Next : 27th of September to 3rd of October 2021 | Previous : 13th of September to 19th of September 2021 →
Slint is a declarative GUI toolkit to build native user interfaces for desktop and embedded applications written in Rust, C++, JavaScript, and Python. Find more information at https://slint.dev/ or check out the source code at https://github.com/slint-ui/slint