This week in SixtyFPS

6th of December 2021 to 12th of December 2021

Posted on December 13, 2021

SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications. We support multiple programming languages, such as Rust, C++, and JavaScript. Find more information at https://sixtyfps.io/ or go straight to github at https://github.com/sixtyfpsui/sixtyfps

SixtyFPS UI Library

New Features

  • Add mouse-cursor property to TouchArea (f0a47f)

    Thanks go out to @lukas-jung for contributing this important functionality.

  • Handle more non printable keys (733d4e)

    Share the code that defines the key with a macro over all the backends using a symlink.

    This is a symlink rather than exposing the macro directly since we add this module in every backend, and each backend re-declares the macro to handle the part that it needs. This needs to be a symlink because it will also be shared with the compiler that does not depends on sixtyfps-corelib

  • GL backend: allow to override scale factor with an env variable (181c8a)

    SIXTYFPS_SCALE_FACTOR override the scale factor at runtime

Changes to the .60 language

  • Add a Keys namespace in the .60 language with all the string constant for special keys (f7c921)
  • Put the global functions in the Math namespace ( 963c44)

    So they can be accessible even if there is a property of the same name

  • Allow to access color names from the Colors namespace (0436ce)

Documentation

  • Update Flickable and ScrollView docs (a3c077, 0e5295, 63fd20)

    Thanks to @jrmoulton for the work.

  • Improve timer docs (774be9)

    Use the term interval instead of duration to emphasize that it's not a single shot.

    (The single-shot docs still use duration)

Fixes

  • Fix SVGs not being re-rendered when the scale factor changes (d1ae10)

    This issue was caused by two bugs:

    • The scale factor was not a property dependency of the Image cache entry's property tracker
    • The texture cache key for SVGs should include the target size that's scaled to.

    Fixes #734

  • Fix clipping optimization for box rectangles (0a60cb)

    The geometry of the box shadow element does not include the offset and the blur. So our clipping may ignore the shadow when it shouldn't. This could be changed by making geometry() return bounds that include the blur and offset, but that in turn will add a visual offset when a repeated rectangle has a shadow, because the shadow because the root of the repeated element and the previous rectangle a child.

    Fixes #713

  • C++: add version macro (537754)

    Fixes #705

  • Attempt to properly detect if the native style is available when cross compiling ( 8b9be1)

    ... and using the sixtyfps! macro

    The problem is that the OUT_DIR in the build script of the macro crate is reporting a target directory for the host (since the macro itself is built for the host), but we need to get the OUT_DIR of the crate, so query it in the macro. Unfortunately, that env variable is only set when the crate (using the macro) has a build script. So use a fallback to find the target directory

    Fixes #462

  • Fix issues related to alias to globals (f27a2b)

    two problems - For the interpreter, properly handle the case of an alias to a global - For the rust generator, we can't return a reference to a property held in a global, so we must 'inline' the get_xx function on sub-components

  • Timer: allow FnMut Callback (#741)

    Thanks to @Be-ing for the work.

Janitor work

  • Bump winit version (c96469)
  • Don't use deprecated itertools functions (7ecbf4)

    A replacement is available in the std library

Company

We're continuing to set up our business and have published our initial commercial pricing at https://sixtyfps.io/pricing.html.

Statistics

44 patches were committed by 4 authors.