From 7b70e082959b69479870495047d57935e6a60be6 Mon Sep 17 00:00:00 2001 From: TimJentzsch Date: Sun, 28 Jul 2024 12:51:11 +0200 Subject: [PATCH] Release v0.2.0 (#13) * Bump version to 0.2.0 * Add a changelog --- CHANGELOG.md | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- README.md | 2 +- 4 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..8f97ffb --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,88 @@ +# Changelog + +## v0.2.0 + +This release simplifies font handling, adds named colors and adds support for efficiently changing text dynamically. + +### Simplified Font Handling + +In the past, you needed to pass around multiple `Handle`s for each variant of a font (e.g. bold, italic, bold and italic, etc.). + +Instead, we now use a `FontRegistry` which automatically tracks which `Font`s are loaded and allows to query them by font weight, style and other factors. +You can now simply specify an asset path where your fonts are stored and they will all be loaded and used inside of BBCode! + +```rs +// Load the fonts inside of assets/fonts +BbcodePlugin::new().with_fonts("fonts") +``` + +Then inside of `BbcodeSettings`, you just specify the font family, size and color of the text to use by default: + +```rs +BbcodeSettings::new("Fira Sans", 40., Color::WHITE) +``` + +Additionally, the new `font` tag allows you to change the font family for parts of the text: + +```txt +[font="JetBrains Mono"]new font family[/font] +``` + +### Named Colors + +The `color`/`c` tag now also supports named colors, e.g. `[c=primary]text[/c]`. +The color values are specified in the new `ColorMap` resource. + +Changing a value in the color map resource will dynamically update all occurrences of this color in your app! + +### Dynamic Text Editing + +Until this point, you could dynamically change the text in your app by changing `Bbcode.content`. +However, this adds a performance overhead as the entire markup needs to be parsed again and the UI hierarchy reconstructed. + +Instead, you can now register marker components: + +```rs +#[derive(Component, Clone)] +struct TimeMarker; + +BbcodeSettings::new("Fira Sans", 40., Color::WHITE) + // Register the marker component + .with_marker("time", TimeMarker) +``` + +And then use it with the new `m` tag: + +```txt +Time passed: [m=time]0.0[/m] +``` + +Finally, you can use queries to efficiently update the text: + +```rs +fn update_text(time: Res