bevy/examples/ui
Eero Lehtinen 47c4e3084a
Add custom cursors (#14284)
# Objective

- Add custom images as cursors
- Fixes #9557 

## Solution

- Change cursor type to accommodate both native and image cursors
- I don't really like this solution because I couldn't use
`Handle<Image>` directly. I would need to import `bevy_assets` and that
causes a circular dependency. Alternatively we could use winit's
`CustomCursor` smart pointers, but that seems hard because the event
loop is needed to create those and is not easily accessable for users.
So now I need to copy around rgba buffers which is sad.
- I use a cache because especially on the web creating cursor images is
really slow
- Sorry to #14196 for yoinking, I just wanted to make a quick solution
for myself and thought that I should probably share it too.

Update:
- Now uses `Handle<Image>`, reads rgba data in `bevy_render` and uses
resources to send the data to `bevy_winit`, where the final cursors are
created.

## Testing

- Added example which works fine at least on Linux Wayland (winit side
has been tested with all platforms).
- I haven't tested if the url cursor works.

## Migration Guide

- `CursorIcon` is no longer a field in `Window`, but a separate
component can be inserted to a window entity. It has been changed to an
enum that can hold custom images in addition to system icons.
- `Cursor` is renamed to `CursorOptions` and `cursor` field of `Window`
is renamed to `cursor_options`
- `CursorIcon` is renamed to `SystemCursorIcon`

---------

Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
Co-authored-by: Jan Hohenheim <jan@hohenheim.ch>
2024-08-12 15:49:03 +00:00
..
borders.rs remove rounded_borders and merge with borders example (#14317) 2024-07-15 16:54:05 +00:00
button.rs Add with_child to simplify spawning when there will only be one child (#14594) 2024-08-02 15:37:15 +00:00
display_and_visibility.rs fix remaining issues with background color in examples (#14115) 2024-07-03 01:13:55 +00:00
flex_layout.rs Omit font size where it closely matches the default in examples (#13952) 2024-06-20 21:01:28 +00:00
font_atlas_debug.rs Adding explanation to seeded rng used in examples (#12593) 2024-03-26 19:40:18 +00:00
grid.rs Omit font size where it closely matches the default in examples (#13952) 2024-06-20 21:01:28 +00:00
overflow.rs Updates default Text font size to 24px (#13603) 2024-05-31 16:41:27 +00:00
overflow_debug.rs Updates default Text font size to 24px (#13603) 2024-05-31 16:41:27 +00:00
relative_cursor_position.rs Migrate from LegacyColor to bevy_color::Color (#12163) 2024-02-29 19:35:12 +00:00
render_ui_to_texture.rs Migrate from LegacyColor to bevy_color::Color (#12163) 2024-02-29 19:35:12 +00:00
size_constraints.rs fix remaining issues with background color in examples (#14115) 2024-07-03 01:13:55 +00:00
text.rs Cosmic text (#10193) 2024-07-04 20:41:08 +00:00
text_debug.rs Cosmic text (#10193) 2024-07-04 20:41:08 +00:00
text_wrap_debug.rs Cosmic text (#10193) 2024-07-04 20:41:08 +00:00
transparency_ui.rs Make default behavior for BackgroundColor and BorderColor more intuitive (#14017) 2024-06-25 21:50:41 +00:00
ui.rs Updates default Text font size to 24px (#13603) 2024-05-31 16:41:27 +00:00
ui_material.rs Update ui_material example to be a slider instead (#14031) 2024-06-27 21:23:04 +00:00
ui_scaling.rs Cosmic text (#10193) 2024-07-04 20:41:08 +00:00
ui_texture_atlas.rs Make default behavior for BackgroundColor and BorderColor more intuitive (#14017) 2024-06-25 21:50:41 +00:00
ui_texture_atlas_slice.rs Fix UI texture atlas with offset (#13620) 2024-07-30 15:31:58 +00:00
ui_texture_slice.rs Fix border color in ui_texture_slice and ui_texture_atlas_slice examples. (#14121) 2024-07-03 13:51:44 +00:00
viewport_debug.rs Fix green colors becoming darker in various examples (#12328) 2024-03-05 23:42:03 +00:00
window_fallthrough.rs Add custom cursors (#14284) 2024-08-12 15:49:03 +00:00
z_index.rs Fix green colors becoming darker in various examples (#12328) 2024-03-05 23:42:03 +00:00