Olivier Goffart
347b2d0fbf
C++: Don't use optional::value
...
It is not available when targetting older macOs since it can throw an
exception that needs library support
2023-10-11 07:57:57 +02:00
Olivier Goffart
b88a3caacd
swrenderer: Put the rotation feature behind a freature gate
...
We're not ready to make the API public as we want to have the API as
part of the Window rather than part of the renderer
2023-10-09 18:07:23 +02:00
Olivier Goffart
414a9e85e7
Expose swrenderer screen rotation to C++ and esp-idf
2023-10-09 18:07:23 +02:00
Olivier Goffart
091dd0a7b9
Rename dynamic_component to dynamic_item_tree
2023-10-09 11:01:56 +02:00
Olivier Goffart
a5488d6285
Rename RepeatedComponent -> RepeatedItemTree
...
And some more cleanups
2023-10-09 11:01:56 +02:00
Olivier Goffart
852b4d906d
Rename ComponentVTable to ItemTreeVTable
...
and their related name.
Also move the component module in the item_Tree module
register_component -> register_item_tree
ComponentItemTree -> ItemTreeNodeArray
For #3323
Rationale from that issue:
Right now, we use the term `component` in the Slint language and in the compiler to be a a tree of elements that can be used as an element in a .slint file.
The term is also currently used in the runtime as a tree of runtime Items that are allocated together. (declared in ComponentVTable)
But there are no 1 to 1 mapping between a `component` in the slint language, and a runtime Component.
(for example, the items behind a `if` or `for` or `PopupMenu` are in a different runtime component. And `component` declared in Slint are often inlined)
So we should rename the internal runtime `Component` to `ItemTree`
The currently public `slint::ComponentHandle` wraps the "root" of the ItemTree, but that's ok because it is generated from a .slint `component`, so it doesn't change name
2023-10-09 11:01:56 +02:00
Olivier Goffart
4c0a435196
Implement TouchArea::scroll-event
...
Closes #1280
2023-10-07 07:59:53 +02:00
Olivier Goffart
e0fd9a6105
WIP: Add item_geometry to the ComponentVTable
...
(unused yet)
2023-09-13 16:08:37 +02:00
Simon Hausmann
3652f58a3f
Change item indices from usize to u32
...
So that the compiler and run-time can never disagree on the
number of bytes the item index can use.
2023-09-12 08:53:58 +02:00
Olivier Goffart
cf19749943
Make a pass to remove the Expression::Return instruction
...
So it doesn't appear in the LLR and the C++ codegen can be simplified.
In particular, this removes the need to throw/catch exception to handle return
across generated lambdas
2023-09-06 14:10:26 +02:00
Olivier Goffart
73ff86cf5a
C++: Move the PhysicalRegion in the SofwtareRenderer
2023-08-30 14:59:41 +02:00
Olivier Goffart
932db7ac38
C++: make Platform::duration_since_start non-const and pure
...
When SLINT_FEATURE_FREESTANDING is set, it must be re-implemented
otherwise the time doesn't pass
2023-08-30 14:59:41 +02:00
Olivier Goffart
c47e6cd029
C++: Api changes in the WindowAdapter
...
- s/physical_size/size/ (consistant with the slint::Window API)
- remove const of virtual function (they don't need to be const and
make implementation potentially easier)
- Move the WindowProperties in it
2023-08-30 14:59:41 +02:00
Simon Hausmann
040019c7b6
doc: Fix link to set_physical_size
2023-08-29 07:02:31 +02:00
Simon Hausmann
d160eb7a31
Add support for set_position(), position(), and set_physical_size() to the C++ WindowAdapter ( #3367 )
...
Closes #3349
2023-08-28 18:43:04 +02:00
Olivier Goffart
ded66231d1
C++: polish the clipboard patch
...
- make sure the Platform::Clipboard type is properly documented
- Use the actual enum in the interface (even though it is
#[non_exhaustive] so we need to slience a warning)
CC: #3265
2023-08-28 14:34:23 +02:00
Simon Hausmann
67423b288f
Add documentation to the WindowAdapters to explain the basic message passing protocol
...
... and provide hints in there about implementing window close requests.
Note: The links to set_size() and set_position() are not resolved, as
these virtual functions are still missing from the WindowAdapter base
class.
2023-08-28 13:45:28 +02:00
Simon Hausmann
11128b3b7f
Document show()/hide()'s behavior of the additional strong component reference
2023-08-28 13:45:28 +02:00
Ian McFarlane
1de7b1512c
Expose clipboard_text accessors to C++ ( #3265 )
2023-08-28 12:26:40 +02:00
Olivier Goffart
d23ba885ca
C++: add WindowAdaptor::update_window_properties
2023-08-25 13:58:55 +02:00
Olivier Goffart
7904493e1c
C++: dispatch close request and activation change
2023-08-24 17:27:04 +02:00
Olivier Goffart
725a259e3a
C++: move the window related stuff in its own header ( #3339 )
...
slint.h starts to be quite big, and lots of it is because of Window, so
move Window to its own header
2023-08-24 15:51:50 +02:00
Olivier Goffart
541e7137c6
Backends: don't resize the WindowItem in set_visible
...
We already query the size right after the call to set_visible in the
WindowInner::show()
2023-08-24 13:15:28 +02:00
Olivier Goffart
f611091470
C++ docs: don't use backtick for Class or method name
...
because otherwise doxygen don't make links
(also implements the `renderer()` funciton in the doc example)
2023-08-22 11:29:57 +02:00
Olivier Goffart
3e46680c16
C++: improve slint::platform docs ( #3319 )
2023-08-22 11:24:30 +02:00
Olivier Goffart
146ed520e8
C++: rename SLINT_FEATURE_STD in SLINT_FEATURE_FREESTANDING with the opposite meaning
2023-08-21 16:52:30 +02:00
Olivier Goffart
1288bb6848
C++ Rgb565Pixel: Invert red and blue
2023-08-15 14:45:33 +02:00
darknight
37488f015d
Refactoring: define macro rules to group builtin structs
...
apply new macro for struct declaration, type register,
doc generation, cpp header generation, struct-value conversion.
2023-08-03 11:01:18 +02:00
Simon Hausmann
0c9199b17f
Add support for flipping borrowed OpenGL textures vertically ( #3205 )
...
Closes #2986
Co-authored-by: Olivier Goffart <olivier.goffart@slint-ui.com>
2023-08-02 13:11:13 +02:00
Olivier Goffart
0a8f9c585a
C++: expose special key codes constants
2023-07-31 15:11:57 +02:00
Simon Hausmann
d681864a3b
c++: Fix missing platform API Docs
...
- Fix pre-processor include search path setup so that pre-processing
slint.h finds slint_internal.h and (most importantly)
slint_generated_public.h for the feature defines.
- Add missing documentation that caused doxygen errors.
2023-07-31 11:45:01 +02:00
Simon Hausmann
8c289fe3cc
Fix doxygen formatting for slint::interpreter::Value::operator==
2023-07-31 11:45:01 +02:00
Olivier Goffart
f3b2b5d457
Improve documentation of AbstractRenderer
2023-07-28 12:18:34 +02:00
Olivier Goffart
fd7fc5ab9b
C++, remove the experimental flag
...
The platform namespace is now always enabled.
2023-07-28 10:36:08 +02:00
Olivier Goffart
3a807e46c1
Renderer feature refactor
2023-07-27 19:11:24 +02:00
Olivier Goffart
c3bec089fe
C++: Rename slint_platform.h -> slint-platform.h
2023-07-27 15:42:11 +02:00
Olivier Goffart
643512f60a
C++: rename slint_intepreter.h to slint-interpreter.h
2023-07-27 15:42:11 +02:00
Olivier Goffart
116648ffcf
C++ Platform: remove the experimental namespace
2023-07-27 13:22:22 +02:00
Tobias Hunger
d47d52bf52
ItemVTable::init(...): Take an ItemRc so that the itan can know where in the Item Tree it is located
2023-07-27 12:04:16 +02:00
Olivier Goffart
3054ecfb71
C++ platform API: move the dispatch_* function on the Window like in rust
2023-07-26 16:03:05 +02:00
Simon Hausmann
af97435463
Replace show()/hide() in the WindowAdapter with set_visible(bool)
...
This makes for a smaller interface.
2023-07-26 13:53:45 +02:00
Simon Hausmann
835510c7f6
C++ platform API: Remove const qualified from request_redraw()
2023-07-26 13:25:36 +02:00
Olivier Goffart
51d8a15164
C++ platform: make the max_buffer_age an enum
...
Copying the Rust enum instead of using cbindgen because we would need to
create a new header just for it for bublic types generated in the
platform namespace. I've also put it in the SoftwareRenderer class since
the equivalent enum is in the software_renderer module in Rust.
2023-07-26 11:28:45 +02:00
Simon Hausmann
f15bc6147e
Simplify FemtoVG and Skia renderer APIs: remove resize()
...
We can convey the new physical window size from the run-time
through the private renderer API
when a window resize event is dispatched.
2023-07-25 19:33:26 +02:00
Simon Hausmann
68a255b1d2
C++: Make the SkiaRenderer constructor explicit
...
As discussed in API review
2023-07-25 19:16:44 +02:00
Olivier Goffart
69a11f7dbc
C++: Platform::register_platform -> platform::set_platform
2023-07-25 17:38:20 +02:00
Olivier Goffart
42bb2bf705
C++: some changes to the Platform API
2023-07-25 17:38:20 +02:00
Simon Hausmann
7d136b6568
Remove the window parameter from the render() function of all the renderers
...
This makes for a slimmer API and instead we can create the renderer <-> window association
behind the scenes ourselves,
in set_component.
2023-07-25 17:28:08 +02:00
Simon Hausmann
507428b03e
Simplify FemtoVG and Skia renderer API ( #3153 )
...
Fold show() into the first time render() is invoked,
and hide() into the Drop implementation.
2023-07-25 17:17:40 +02:00
Olivier Goffart
2a56e25788
C++: rename PlatformEvent to Platform::Task
2023-07-25 16:15:35 +02:00