Commit graph

422 commits

Author SHA1 Message Date
Simon Hausmann
ea94089b05 Provide an error enum for the error case of slint::platform::set_platform
cc #1502
2022-09-06 15:42:16 +02:00
Olivier Goffart
24244e3c7c janitor: Rename a variable 2022-09-06 13:43:52 +02:00
ogoffart
05a49da906 Bump version number to 0.3.0 2022-09-06 13:00:22 +02:00
Olivier Goffart
2760d96b79 Make VecModel::remove() return the removed value like Vec
Fixes #1221
2022-09-06 05:42:56 +02:00
Simon Hausmann
90ba9ffa17 Fix "glyph box" in AboutSlint when rendered on MCU
The AboutSlint text has a forced linebreak in it, which becomes a box
glyph on MCUs when the font on the host system doesn't use an empty
glyph but a box glyph for \n.

This patch explicitly excludes glyph clusters from text fragments that
feed into lines that originate from one of the three valid separators:
ascii newline, unicode paragraph and unicode line separators.
2022-09-05 21:42:26 +02:00
Olivier Goffart
f715a0c214 Try to fix the way the window is resized
- We must first set change the constraints before changing the size
   otherwise the new size might not be in the old constraint and the
   change might not take effect.

 - We must update the WindowItem's size even if the size of the window
   doesn't change. This happens when a component is set on a window that
   that doesn't change it size (eg, preview) but for which we need to
   set the geometry on the window
2022-09-05 16:19:27 +02:00
Olivier Goffart
0085145d10 MCU documentation 2022-09-04 18:31:26 +02:00
Olivier Goffart
9a2b1c7b6b Don't export PLATFORM_INSTANCE in the public API
Use a hidden internal helper function instead
2022-09-03 11:45:54 +02:00
Olivier Goffart
ec19ef77f1 platform: don't re-export types that are no longer needed 2022-09-03 11:11:43 +02:00
Simon Hausmann
f648f152f9 Improve debug_log interface in the Platform
Pass Arguments and let the caller decide how/when to convert to a string.
2022-09-02 20:13:41 +02:00
Simon Hausmann
cde6cc2110 Simplify debug_log macro 2022-09-02 20:13:41 +02:00
Simon Hausmann
437218db70 Replace the built-in defmt debug logging to the platform trait
This way we don't have to add defmt, esp32-println and others as features to corelib and the slint api crate
(which would also expose them as public dependencies),
but instead this can be simply delegated to the Platform trait.
2022-09-02 20:13:41 +02:00
Olivier Goffart
3f1324cc61 Allow to run the software backend without the femtovg backend 2022-09-02 16:38:35 +02:00
Simon Hausmann
7e5de3d5d3 Remove use of euclid types and tags for logical/physical position and size in the public API
Instead provide our own types.
2022-09-02 11:05:53 +02:00
Simon Hausmann
85461d380d Remove euclid from the public re-export of the Slint crate 2022-09-02 11:05:53 +02:00
Olivier Goffart
e0f1fdf298 Rgb565Pixel: remove color accessor, add conversion to Rgb8Pixel
Closes #1540

(Went or Rgb8Pixel instead of color, because color can have alpha)
2022-09-01 13:58:38 +02:00
Olivier Goffart
a647fe2d74 Rgb656Pixel: Mask the shifted value to prevent overflow in the addition 2022-09-01 13:58:38 +02:00
Olivier Goffart
1237285fef Fixup some documentaion links
And add a test in the CI that checks for warnings in the internal
crates

(Also changed --exlcude in the test to be matching the one from build,
since c++ test are tested separately)
2022-09-01 12:16:24 +02:00
Olivier Goffart
fcca38e0f6 Rename set_event_loop_quit_on_last_window_closed to remove EventLoopQuitBehavior
For the winit backend, also make the function work after a call to run()
2022-09-01 12:08:05 +02:00
Simon Hausmann
581bd04253 Fix build without std and no additional debug output support
Do nothing then
2022-09-01 09:19:22 +02:00
Simon Hausmann
d57a26276f
Fix typo
Spotted by @BartBM
2022-08-31 21:21:27 +02:00
Simon Hausmann
9338d31535 Remove the use of euclid types from the software renderer public API
Closes #1538
2022-08-31 09:23:38 +02:00
Olivier Goffart
b9c2dec922 API: seal the WindowAdaptor trait
And hide most of its functions in the sealed trait.
2022-08-30 22:21:24 +02:00
Olivier Goffart
383f86712d Fix test for the SoftwareRenderer::render_by_line
was not updated to new api
2022-08-30 22:21:03 +02:00
Tobias Hunger
0daa2513af API cleanup: Rename PointerEvent to WindowEvent
Also rename members and related functions as specified in #1543.

Fixes: #1543
2022-08-30 16:47:55 +02:00
Tobias Hunger
09e685ef51 Fix typos 2022-08-30 08:34:45 +02:00
Tobias Hunger
3430a13bf8 API cleanup: Remove quit behavior parameter from run_event_loop 2022-08-30 08:34:45 +02:00
Olivier Goffart
cb8a59683f Fix formating 2022-08-29 19:45:29 +02:00
Olivier Goffart
9952f7e6b9 impl Deref for the SimpleSoftwareWindow 2022-08-29 19:45:29 +02:00
Olivier Goffart
3ed8ca6fc8 Introduce MinimalSoftwareWindow
This simplifies the implementation of the pico and STM, as they both
have the same PlatformWindow implementation, and is likely to be the
same for every MCU
2022-08-29 19:45:29 +02:00
Simon Hausmann
41affeb68f Fix element rotation when the element is translated
For example

    Image {
        x: 150px;
        y: 50px;
        rotation-angle: 45deg;
    }

will end up rendering as if x and y are zero. This is because during
the injection we "move" x and y to the Rotate
element as bindings, but due to the lack of built-in
x/y properties, dummy properties are materialized
and they are not applied for the regular per-item translation.

Add x/y to the Rotate element and then it works.
2022-08-29 17:52:37 +02:00
Olivier Goffart
396a2c5ecb Implement std::fmt::Write for SharedString and add a format! macro 2022-08-29 17:25:24 +02:00
Tobias Hunger
38350db9a0 Fixes pointed out by Olivier and CI 2022-08-29 16:53:47 +02:00
Tobias Hunger
10c3c9d16d Api cleanup: Rename some remaining platform abstractions to platform 2022-08-29 16:53:47 +02:00
Tobias Hunger
107e3ed2e2 janitor: Fix some typos 2022-08-29 16:53:47 +02:00
Tobias Hunger
88cf874d03 API cleanup: Rename create_window to create_window_adapter 2022-08-29 16:53:47 +02:00
Tobias Hunger
1e6ffeaa0f API cleanup: Rename PlatformWindow to WindowAdapter 2022-08-29 16:53:47 +02:00
Olivier Goffart
344f5c437b swrenderer: Move the DirtyTracking enum into a const generic
Closes: 1541
2022-08-29 14:13:55 +02:00
Tobias Hunger
53053683a1 API cleanup: Rename PlatformAbstraction to Platform 2022-08-29 13:26:36 +02:00
Tobias Hunger
3557e92a84 API cleanup: Fix typos in comments/documentation 2022-08-29 13:26:36 +02:00
Tobias Hunger
259457eff8 API cleanup: Fix typo in variable name 2022-08-29 13:26:36 +02:00
Tobias Hunger
13701b4b3f API cleanup: Rename set_paltrom_abstraction to set_platform 2022-08-29 13:26:36 +02:00
Olivier Goffart
4f0e2608d2 Sofware renderer: keep a Weak of the Window
Closes #1545

Not that `SoftwareRenderer::new()`  takes the Weak by value instead of
by reference, because coercing a reference to a `Weak` to a `&Weak<dyn>`
is not possible, while converting a Weak to a `Weak<dyn>` just works.
2022-08-29 11:07:05 +02:00
Olivier Goffart
4105bafc2f Fix the doc example of SoftwareRenderer::render_line_by_line
If we don't make it compile, it will have so many typo it's useless :-)
2022-08-27 15:05:06 +02:00
Olivier Goffart
d1e3ce4acf Tests for the timers
Tests that timer fires, but also that stopping them within a timer event work
(Test for #1532 and #1533)
2022-08-26 10:16:18 +02:00
tay64
0b1be0316e Fix #1532: Timer::{start,stop} in the timer's own callback
Before the change:

- calling the_timer.start(...) in the_timer's callback resulted in the_timer
keeping the old callback;

- calling the_timer.stop() in the_timer's callback was ignored.
2022-08-26 09:19:10 +02:00
Olivier Goffart
8fba65a282 Rename and expose the unsafe-single-threaded feature 2022-08-25 16:47:53 +02:00
Simon Hausmann
4864bda404 swrenderer: group pub use together 2022-08-25 12:54:52 +02:00
Simon Hausmann
f239f810c8 Remove the use of i_slint_core in the pico and stm32 bsp modules 2022-08-25 12:54:52 +02:00
Olivier Goffart
2ad648ac66 swrenderer: Do not draw the inside of rounder rectangle if it is transparent
No need to blend a slice of transparent color
2022-08-25 12:37:05 +02:00