* Change Color type to be f32 internally but no other changes
* Add missing clamp
* Add round function as we're not on MSRV 1.90+
* Prepare for being able to switch between u8s and f32s
* [autofix.ci] apply automated fixes
* Fix Display impl
* Add feature flag for 8-bit color values. Name to be bikeshed
* Fix brighter-darker test
* Update test screenshot
* Remove unused Float trait import
* Add cfg thing for not(cbindgen)
* Change Channel to float in cbindgen
* Change the cpp color type for uint8_t for now
* Opt cpp into 8-bit-color
* Switch feature around
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Add an open-url function
* Add cpp implementation
* Add workspace dep
* Add core::open_url function
* Remove pub use webbrowser
* Put open_url behind a flag
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
No extra safety constraints that is not expressed in the type system
(eg, if they don't take any raw pointers)
Fix UB in slint_interpreter_value_to_array (The vector was already constructed in C++)
Changelog: Added four new properties to the Window element for exposing the safe area to Slint and implement it for iOS.
Changelog: Adjust Android implementation of the window safe area to match the iOS implementation. This is a breaking change!
Fixes#9755
* Add is_markdown property
* Add builtins.slint line
* Add parse_markdown function
* Formatting
* Add strikethrough
* Assume that end tags always match and don't contain any additional info
* Layout rich text
* Formatting
* Handle code blocks, hackily do indentation and list points
* Remove dbg!
* Apply a few suggestions
* Write unit tests
* Do a 3rd layer of bullet point indentation
* Test nested lists
* Add markdown text component
* Add a paragraph_from_text function
* Remove MarkdownText if SLINT_ENABLE_EXPERIMENTAL_FEATURES is not set
* Mark as experimental
* [autofix.ci] apply automated fixes
* Add cfg flag to test
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* Add scale method to backends
* Rename Rotate to Transform
* Add scaling to Transform
* Fix tests
* Insert Transform if any of scale-x, scale-y or rotation-angle are set
* Add scaling to child_transform and handle events as a result
* Cargo fmt
* Femtovg clipping
* Fix femotovg clipping
* Add newline to actual_render.scale
* Cargo fmt tools/lsp changes
* Modify docs
* Change type to a float instead of percent and fix defaults
* Add note about software renderer
* Add basic event scaling test
Set up the underlying graphics API with WGPU, render into the queue with
skia, present with WGPU. Opens path to importing wgpu textures, provided
that we synchronize them (i.e. pipeline barriers/transitions if needed).
For the implementation of BuiltinFunction::GetWindowDefaultFontSize, instead of going to the window adapter's window item rc (which will be the outermost window item), start at the first item of the current component and work the way up from there.
Fixes#4298
After commit e04f028c91, the
default-font-size property on WindowItem isn't set anymore by default,
so BuiltinFunction::GetWindowDefaultFontSize, which reads it, would
return zero.
Instead, delegate to a run-time function where we can fall back to the
default from the renderer.
This patch changes rem.slint to use the newer syntax. The main change to
the test case though is to removal of the explicit default-font-size
property setting, so that we fall back to the value provided by the
renderer. This test relies on being run with the testing backend.
Fixes#8961
Quoting from the BufWriter docs:
>It is critical to call flush before BufWriter<W> is dropped. Though
>dropping will attempt to flush the contents of the buffer, any errors
>that happen in the process of dropping will be ignored. Calling flush
>ensures that the buffer is empty and thus dropping will not even
>attempt file operations.
The second constructor of `Slice` causes the Slice to be passed
differently (in different register) as a return value.
So remove that constructor and use a helper function to
construct a Slice
Previously there were two kinds of Menu:
1. "Simple" menu that don't have any `if` or `for`
2. "Complex" menu that have `if` and `for`
For the first kind, we were generating in the compiler the `entries` and
`sub-menu` callback. This lead to more efficient and simple code at
runtime.
For the second kind, we generate an item tree so we can dynamically
produce them at runtime.
The issue is that as we added feature, the code became complex to
handle, even in the simple case as we need to create a `VRc<MenuVTable>`
also for the context menu so we can have native context menu.
We still need the "Simple" case for the internal though.
So for that I added a ShowPopupMenuInternal builtin function although it
only differ from ShowPopupMenu by the type of its second argument.
Since the generated code has lots in common, they are still handled
together.
The proof that the two different codepath were harmful is that removing
it showed a bug with contextmenu within repeated element.
the `contextmenu_delete.slint` started failling. It worked before
because it was only a problem with "Complex" menu and the test used a
"Simple" menu.
The change in the interpreter should also solve the issue #9031 which
were using the wrong item tree as the menu.
With EspPlatform, we need to initialize the FreeRTOS task used for
posting events before calling invoke_from_event_loop(). This is now done
basically in `slint_esp_init()` (well, the platform ctor).
The assumption preserved here is that the task that sets the Slint
platform is also the same task that ends up spinning the event loop.
This should fix the following (pseudo-code):
```cpp
void main()
{
slint_esp_init(...);
...
// used to crash because EspPlatform::task is only initialized in run_event_loop()
slint::invoke_from_event_loop(some_functor);
...
slint::run_event_loop();
}
```
- Implement @conic-gradient(color angle, ...) syntax
- Center is always at rectangle center (no center_x/center_y parameters)
- 0 degrees starts at north (12 o'clock position)
- Support Slint angle units: deg, rad, turn
- Software renderer: Full native implementation
- Qt backend: Native support with angle offset correction
- Skia backend: Native support with angle offset correction
- FemtoVG backend: Fallback to solid color (first gradient stop)
ChangeLog: Added support for `@conic-gradient`
Fixes#3957
clang++.exe doesn't understand the `/bigjob` flag.
So use generator expression to only pass the flag with MSVC and pass the
correct flag with other compiler (I did mingw as well just in case)
Fixes#8981
Just like with Rust.
This Fixes the C++ opengl_texture example. Also improve advice for C++ OpenGL examples to explicitly select the FemtoVG GL renderer
Fixes#8901
This is more intuitive that the C++ default, especially in light of additional output languages in the future.
To be on the safe side, this also passes the explicit -f cpp on the CMake side.
- Use a version of FemtoVG that uses WGPU 25
- Rename the unstable-wgpu-24 feature and wgpu_24 module
- Fetch bevy from a revision on master branch that switches to WGPU 25
- Move the bevy example out of the common workspace: That way users of the repo don't get bevy pulled from git, unless they want to build the bevy example.
Missing feature:
- conversion between Value and enums
- conversion from value to Model
- Compatibility with the testing framework (get the `VRc<ItemTreeTable>` from an instance)