More extension work.

This commit is contained in:
Samuel Guerra 2023-06-05 19:48:44 -03:00
parent 3e4aafb239
commit 740f7700c3
2 changed files with 22 additions and 9 deletions

View File

@ -1,11 +1,3 @@
# zero-ui-view
* Implement renderer extension.
- Allow registering in view-process.
- Test it.
- Custom render item.
- Custom render update.
# TextInput
* Fix emoji segmenting, example: "🙎🏻‍♀️"
@ -56,4 +48,13 @@
- Implement `FallbackConfig::is_fallback(&ConfigKey) -> ReadOnlyArcVar<bool>`.
- It uses the new modify tags to map from the key var to a bool?
- Implement `FallbackConfigRef`, to work like the `EditableUiNodeList`.
- Implement `FallbackConfigRef::reset(ConfigKey)`.
- Implement `FallbackConfigRef::reset(ConfigKey)`.
# zero-ui-view
* Implement window extension.
- Access to raw handle and ability to spawn data that lives for the duration of the window.
* Implement renderer extension.
- Affect renderer creation.
- Integrate with display item extensions.
- Implement use case, webrender blob renderer.

View File

@ -1353,6 +1353,18 @@ impl FrameBuilder {
.push_radial_gradient(PxRect::new(offset, bounds), gradient, &stops, bounds, PxSize::zero());
}
/// Push a custom display extension context, call `render` and pop the item.
pub fn push_extension_context(&mut self, extension_key: usize, payload: ExtensionPayload, render: impl FnOnce(&mut Self)) {
self.display_list.push_extension(extension_key, payload);
render(self);
self.display_list.pop_extension(extension_key);
}
/// Push a custom display extension item.
pub fn push_extension_item(&mut self, extension_key: usize, payload: ExtensionPayload) {
self.display_list.push_extension(extension_key, payload);
}
/// Create a new display list builder that can be built in parallel and merged back onto this list using [`parallel_fold`].
///
/// Note that split list must be folded before any open reference frames, stacking contexts or clips are closed in this list.