22nd of August 2022 to 28th of August 2022

Slint UI Library

Tooling

  • LSP support for the online editor (#1506)

    Add support for the Slint LSP (compiled to WASM) to the online editor. This makes it much nicer to work with :-)

  • LSP: display the Element tree in the Outline (#1531)

Micro controller support

  • Add a feature to use the software renderer with the winit backend (#1513)

    This replaces the previous "MCU simulator" backend. Currently, you still need to pass some env variable at build time so it embeds the font.

  • Rename and expose the unsafe-single-threaded feature (#1528)

    We use `thread_local` internally, which is only available in std environments. We have a workaround for MCUs, but that is generally unsafe and only works when Slint is used and accessed from one thread/core. This is now exposed as a opt-in feature on the Slint crate (unsafe-single-threaded).

  • Introduce Rgb565Pixel (#1526)

    RGB 565 is a common pixel format on displays attached to MCUs, so we provide a type in our public API for which we implement the necessary traits so that it can be used with the software renderer out of the box.

  • Move the mcu backend to become a board support helper crate for examples (#1525)

    We decided not to have a public and generic "slint-mcu" crate. Instead we are going to offer API as "LEGO" pieces, so that anyone can integrate Slint into their highly custom MCU setup. For our own examples we centralize all the boards that we support in a helper crate that is not public.

  • Add API to slint-build to chose how to embed the images (#1524)

    Without a generic "mcu" crate the choice of whether and how to embed images and fonts in the binary is up to the user. This adds the necessary API to the slint-build crate.

  • Port the stm32h7 backend to the PlatformAbstraction and remove the old MCU backend Devices (#1523)
  • Re-export the platform module as public api in slint::platform (#1520)

    Tweak some documentation

  • Make the PlatformAbstraction not Send using a EventLoopProxy trait (#1519)

    This changes the way the platform abstraction is initialized

  • Rename backend module to platform (#1518)

    and the Backend trait into PlatformAbstraction trait

  • Backend API: timer functions (#1512)

    See individual commits

    • backend API: polish and move the timer functions to the backend module (5828c7)
    • Move the has_active_animation to the window (2839cd)
    • Use new timer api in winit backend (b9fe75)
    • Janitor: Some code reformating (223d0c)

Skia and FemtoVG renderer

  • Skia/FemtoVG: re-use box shadow textures (#1514)

    When using box shadows in repeaters, multiple distinct textures of the drop shadow are created. That's a waste of precious texture memory if they have the same properties.

    Instead, when creating box shadows in a frame, see if they can be re-used across images. The texture still persistent in the image_cache, via the explicitly shared skia_safe::Image and Rc<Texture>.

    This works well when rendering repeated elements new top-down, but it's not perfect. For example repeated elements in a flickable are not all visible. When the view is scroll up, then the top-down rendering will not find a cache hit for the newly visible element with drop shadows. Reuse is possible here.

Fixes

  • Fix #1532: Timer::{start,stop} in the timer's own callback (#1533)

    The change of CallbackVariant::invoke (from consuming to mutating) isn't really necessary. I made it during my search for a working fix. Please feel free to kill it, or let me know and I'll do it and update the PR.

    Fixes #1532

    Thank you to tay64 for this pull request!

  • swrenderer text layout: fix panic when max_width is 0 (#1515)

    Because a single glyph wouldn't fit on a line, it would loop forever

Janitor work

PRs: #1516, #1459

Statistics

51 patches committed in 22 pull requests by 4 authors.

← Next : 29th of August 2022 to 4th of September 2022 | Previous : 15th of August 2022 to 21st of August 2022


Slint is a declarative GUI toolkit to build native user interfaces for desktop and embedded applications written in Rust, C++, or JavaScript. Find more information at https://slint.dev/ or check out the source code at https://github.com/slint-ui/slint