slint/api/sixtyfps-rs
Simon Hausmann fa95064363 Fix resource embedding across component boundaries
When referencing an image a repeated element and were targeting a
configuration that requires resource embedding, then that image would
not embedded.

This was due to the fact that we didn't recurse into sub-components in
the resource collection phase and the generators made a per-component
embedding decision. The field responsible for that was also not
propagated to sub-components.

This patch addresses these two bugs by cleaning up the entire mechanism:

The compiler first generates the new ResourceReference::AbsolutePath for
all img!"foo.png" expressions. If the compiler is configured to embed
resources, then the embed_resources pass will traverse all
sub-components and expressions in them to change them to
ResourceReference::EmbeddedData with a unique integer id. Simultaenously
all the resources to be embedded get also collected in the root
component, so that the build script as well as the generator can take
care of dependency handling and actual resource embedding.
2020-11-23 13:47:16 +01:00
..
sixtyfps-build Fix resource embedding across component boundaries 2020-11-23 13:47:16 +01:00
sixtyfps-macros Recompile if a dependencies changes 2020-11-18 13:23:59 +01:00
build.rs Update license header to mention that commertial option are available 2020-08-26 13:23:42 +02:00
Cargo.toml Use VRc<ComponentVTable> in the rust generated code 2020-11-09 14:58:37 +01:00
compile_fail_tests.rs Update license header to mention that commertial option are available 2020-08-26 13:23:42 +02:00
docs Remove trailing slash from docs symlink 2020-09-07 11:22:55 +02:00
docs.rs Make the extra documentation page a bit more visible 2020-11-23 10:55:05 +01:00
lib.rs Run cargo fmt 2020-11-23 12:08:23 +01:00
README.md Add semi colon on the docs. 2020-11-23 10:31:34 +01:00
sixtyfps-docs-integration.html Prepare the compiler to be async 2020-10-30 15:00:04 +01:00

SixtyFPS-rs

Crates.io Docs.rs

A Rust UI toolkit

SixtyFPS is a UI toolkit that supports different programming languages. SixtyFPS-rs is the Rust API to interact with a SixtyFPS UI design from Rust.

The complete Rust documentation can be viewed online at https://sixtyfps.io/docs/rust/sixtyfps/.

Getting Started

The crate documentation shows how to use this crate.

Hello World

The most basic "Hello world" application can be achieved with a few lines of code:

In your Cargo.toml add:

[dependencies]
sixtyfps = "0.0.2"

And in your main.rs:

sixtyfps::sixtyfps!{
    HelloWorld := Window {
        Text {
            text: "hello world";
            color: green;
        }
    }
}
fn main() {
    HelloWorld::new().run();
}

The sixtyfps crate documentation contains more advanced examples and alternative ways to use this crate.

More examples

You can quickly try out the examples by cloning this repo and running them with cargo run

# Runs the "printerdemo" example
cargo run --release --bin printerdemo