From 550b1644cb62b18bcaf14accc9820ba39d2ab533 Mon Sep 17 00:00:00 2001 From: nils <48135649+Nilstrieb@users.noreply.github.com> Date: Tue, 18 Apr 2023 15:38:14 +0200 Subject: [PATCH] vendor --- Cargo.lock | 8 - Cargo.toml | 5 +- egui/.cargo/config.toml | 6 + egui/.github/ISSUE_TEMPLATE/bug_report.md | 50 + .../.github/ISSUE_TEMPLATE/feature_request.md | 25 + egui/.github/ISSUE_TEMPLATE/other.md | 10 + egui/.github/pull_request_template.md | 15 + egui/.github/workflows/rust.yml | 237 + egui/.github/workflows/typos.yml | 17 + egui/.gitignore | 7 + egui/ARCHITECTURE.md | 53 + egui/CHANGELOG.md | 850 +++ egui/CODE_OF_CONDUCT.md | 133 + egui/CONTRIBUTING.md | 102 + egui/Cargo.lock | 4662 +++++++++++++++++ egui/Cargo.toml | 35 + egui/Cranky.toml | 124 + egui/LICENSE-APACHE | 201 + egui/LICENSE-MIT | 25 + egui/README.md | 423 ++ egui/_typos.toml | 10 + egui/bacon.toml | 46 + egui/clippy.toml | 1 + egui/crates/ecolor/CHANGELOG.md | 13 + egui/crates/ecolor/Cargo.toml | 50 + egui/crates/ecolor/README.md | 11 + egui/crates/ecolor/src/cint_impl.rs | 161 + egui/crates/ecolor/src/color32.rs | 216 + egui/crates/ecolor/src/hex_color_macro.rs | 39 + egui/crates/ecolor/src/hsva.rs | 231 + egui/crates/ecolor/src/hsva_gamma.rs | 66 + egui/crates/ecolor/src/lib.rs | 173 + egui/crates/ecolor/src/rgba.rs | 266 + egui/crates/eframe/CHANGELOG.md | 235 + egui/crates/eframe/Cargo.toml | 182 + egui/crates/eframe/README.md | 63 + egui/crates/eframe/src/epi.rs | 1157 ++++ egui/crates/eframe/src/lib.rs | 323 ++ .../eframe/src/native/epi_integration.rs | 595 +++ egui/crates/eframe/src/native/file_storage.rs | 117 + egui/crates/eframe/src/native/mod.rs | 6 + egui/crates/eframe/src/native/run.rs | 1462 ++++++ egui/crates/eframe/src/web/backend.rs | 598 +++ egui/crates/eframe/src/web/events.rs | 597 +++ egui/crates/eframe/src/web/input.rs | 217 + egui/crates/eframe/src/web/mod.rs | 271 + egui/crates/eframe/src/web/screen_reader.rs | 49 + egui/crates/eframe/src/web/storage.rs | 43 + egui/crates/eframe/src/web/text_agent.rs | 225 + egui/crates/eframe/src/web/web_painter.rs | 29 + .../crates/eframe/src/web/web_painter_glow.rs | 184 + .../crates/eframe/src/web/web_painter_wgpu.rs | 282 + egui/crates/egui-wgpu/CHANGELOG.md | 40 + egui/crates/egui-wgpu/Cargo.toml | 56 + egui/crates/egui-wgpu/README.md | 10 + egui/crates/egui-wgpu/src/egui.wgsl | 91 + egui/crates/egui-wgpu/src/lib.rs | 155 + egui/crates/egui-wgpu/src/renderer.rs | 979 ++++ egui/crates/egui-wgpu/src/winit.rs | 630 +++ egui/crates/egui-winit/CHANGELOG.md | 64 + egui/crates/egui-winit/Cargo.toml | 88 + egui/crates/egui-winit/README.md | 10 + egui/crates/egui-winit/src/clipboard.rs | 163 + egui/crates/egui-winit/src/lib.rs | 917 ++++ egui/crates/egui-winit/src/window_settings.rs | 144 + egui/crates/egui/Cargo.toml | 84 + egui/crates/egui/README.md | 2 + egui/crates/egui/examples/README.md | 7 + egui/crates/egui/src/animation_manager.rs | 114 + egui/crates/egui/src/containers/area.rs | 514 ++ .../egui/src/containers/collapsing_header.rs | 681 +++ egui/crates/egui/src/containers/combo_box.rs | 429 ++ egui/crates/egui/src/containers/frame.rs | 288 + egui/crates/egui/src/containers/mod.rs | 25 + egui/crates/egui/src/containers/panel.rs | 1064 ++++ egui/crates/egui/src/containers/popup.rs | 378 ++ egui/crates/egui/src/containers/resize.rs | 351 ++ .../crates/egui/src/containers/scroll_area.rs | 924 ++++ egui/crates/egui/src/containers/window.rs | 982 ++++ egui/crates/egui/src/context.rs | 1799 +++++++ egui/crates/egui/src/data/input.rs | 940 ++++ egui/crates/egui/src/data/mod.rs | 4 + egui/crates/egui/src/data/output.rs | 629 +++ egui/crates/egui/src/frame_state.rs | 173 + egui/crates/egui/src/grid.rs | 439 ++ egui/crates/egui/src/gui_zoom.rs | 117 + egui/crates/egui/src/id.rs | 175 + egui/crates/egui/src/input_state.rs | 1018 ++++ .../egui/src/input_state/touch_state.rs | 339 ++ egui/crates/egui/src/introspection.rs | 198 + egui/crates/egui/src/layers.rs | 201 + egui/crates/egui/src/layout.rs | 841 +++ egui/crates/egui/src/lib.rs | 574 ++ egui/crates/egui/src/memory.rs | 647 +++ egui/crates/egui/src/menu.rs | 690 +++ egui/crates/egui/src/os.rs | 76 + egui/crates/egui/src/painter.rs | 455 ++ egui/crates/egui/src/placer.rs | 279 + egui/crates/egui/src/response.rs | 820 +++ egui/crates/egui/src/sense.rs | 79 + egui/crates/egui/src/style.rs | 1507 ++++++ egui/crates/egui/src/ui.rs | 2233 ++++++++ egui/crates/egui/src/util/cache.rs | 164 + egui/crates/egui/src/util/fixed_cache.rs | 41 + egui/crates/egui/src/util/id_type_map.rs | 729 +++ egui/crates/egui/src/util/mod.rs | 11 + egui/crates/egui/src/util/undoer.rs | 172 + egui/crates/egui/src/widget_text.rs | 725 +++ egui/crates/egui/src/widgets/button.rs | 571 ++ egui/crates/egui/src/widgets/color_picker.rs | 446 ++ egui/crates/egui/src/widgets/drag_value.rs | 662 +++ egui/crates/egui/src/widgets/hyperlink.rs | 131 + egui/crates/egui/src/widgets/image.rs | 141 + egui/crates/egui/src/widgets/label.rs | 199 + egui/crates/egui/src/widgets/mod.rs | 155 + .../crates/egui/src/widgets/plot/items/bar.rs | 195 + .../egui/src/widgets/plot/items/box_elem.rs | 293 ++ .../crates/egui/src/widgets/plot/items/mod.rs | 1749 +++++++ .../egui/src/widgets/plot/items/rect_elem.rs | 63 + .../egui/src/widgets/plot/items/values.rs | 432 ++ egui/crates/egui/src/widgets/plot/legend.rs | 258 + egui/crates/egui/src/widgets/plot/mod.rs | 1627 ++++++ .../crates/egui/src/widgets/plot/transform.rs | 383 ++ egui/crates/egui/src/widgets/progress_bar.rs | 159 + .../crates/egui/src/widgets/selected_label.rs | 80 + egui/crates/egui/src/widgets/separator.rs | 124 + egui/crates/egui/src/widgets/slider.rs | 1012 ++++ egui/crates/egui/src/widgets/spinner.rs | 67 + .../egui/src/widgets/text_edit/builder.rs | 1643 ++++++ .../src/widgets/text_edit/cursor_range.rs | 150 + egui/crates/egui/src/widgets/text_edit/mod.rs | 10 + .../egui/src/widgets/text_edit/output.rs | 24 + .../egui/src/widgets/text_edit/state.rs | 85 + .../egui/src/widgets/text_edit/text_buffer.rs | 127 + egui/crates/egui_demo_app/Cargo.toml | 67 + egui/crates/egui_demo_app/README.md | 19 + .../egui_demo_app/src/apps/custom3d_glow.rs | 201 + .../egui_demo_app/src/apps/custom3d_wgpu.rs | 187 + .../src/apps/custom3d_wgpu_shader.wgsl | 39 + .../egui_demo_app/src/apps/fractal_clock.rs | 205 + .../crates/egui_demo_app/src/apps/http_app.rs | 266 + egui/crates/egui_demo_app/src/apps/mod.rs | 21 + .../crates/egui_demo_app/src/backend_panel.rs | 396 ++ .../crates/egui_demo_app/src/frame_history.rs | 132 + egui/crates/egui_demo_app/src/lib.rs | 80 + egui/crates/egui_demo_app/src/main.rs | 36 + egui/crates/egui_demo_app/src/wrap_app.rs | 457 ++ egui/crates/egui_demo_lib/Cargo.toml | 55 + egui/crates/egui_demo_lib/README.md | 16 + .../crates/egui_demo_lib/benches/benchmark.rs | 146 + egui/crates/egui_demo_lib/src/color_test.rs | 559 ++ egui/crates/egui_demo_lib/src/demo/about.rs | 94 + .../egui_demo_lib/src/demo/code_editor.rs | 97 + .../egui_demo_lib/src/demo/code_example.rs | 161 + .../egui_demo_lib/src/demo/context_menu.rs | 182 + .../egui_demo_lib/src/demo/dancing_strings.rs | 67 + .../src/demo/demo_app_windows.rs | 355 ++ .../egui_demo_lib/src/demo/drag_and_drop.rs | 177 + .../egui_demo_lib/src/demo/font_book.rs | 262 + .../egui_demo_lib/src/demo/highlighting.rs | 37 + .../egui_demo_lib/src/demo/layout_test.rs | 180 + .../src/demo/misc_demo_window.rs | 663 +++ egui/crates/egui_demo_lib/src/demo/mod.rs | 53 + .../egui_demo_lib/src/demo/multi_touch.rs | 145 + .../egui_demo_lib/src/demo/paint_bezier.rs | 171 + .../crates/egui_demo_lib/src/demo/painting.rs | 100 + .../crates/egui_demo_lib/src/demo/password.rs | 66 + .../egui_demo_lib/src/demo/plot_demo.rs | 978 ++++ .../egui_demo_lib/src/demo/scrolling.rs | 299 ++ egui/crates/egui_demo_lib/src/demo/sliders.rs | 194 + .../egui_demo_lib/src/demo/strip_demo.rs | 119 + .../egui_demo_lib/src/demo/table_demo.rs | 252 + egui/crates/egui_demo_lib/src/demo/tests.rs | 480 ++ .../egui_demo_lib/src/demo/text_edit.rs | 108 + .../egui_demo_lib/src/demo/toggle_switch.rs | 111 + .../egui_demo_lib/src/demo/widget_gallery.rs | 290 + .../egui_demo_lib/src/demo/window_options.rs | 141 + .../src/demo/window_with_panels.rs | 92 + .../src/easy_mark/easy_mark_editor.rs | 281 + .../src/easy_mark/easy_mark_highlighter.rs | 192 + .../src/easy_mark/easy_mark_parser.rs | 356 ++ .../src/easy_mark/easy_mark_viewer.rs | 174 + .../crates/egui_demo_lib/src/easy_mark/mod.rs | 11 + egui/crates/egui_demo_lib/src/lib.rs | 109 + .../egui_demo_lib/src/syntax_highlighting.rs | 506 ++ egui/crates/egui_extras/CHANGELOG.md | 44 + egui/crates/egui_extras/Cargo.toml | 68 + egui/crates/egui_extras/README.md | 9 + .../egui_extras/src/datepicker/button.rs | 153 + egui/crates/egui_extras/src/datepicker/mod.rs | 34 + .../egui_extras/src/datepicker/popup.rs | 433 ++ egui/crates/egui_extras/src/image.rs | 265 + egui/crates/egui_extras/src/layout.rs | 171 + egui/crates/egui_extras/src/lib.rs | 55 + egui/crates/egui_extras/src/sizing.rs | 177 + egui/crates/egui_extras/src/strip.rs | 197 + egui/crates/egui_extras/src/table.rs | 1063 ++++ egui/crates/egui_glium/CHANGELOG.md | 122 + egui/crates/egui_glium/Cargo.toml | 58 + egui/crates/egui_glium/README.md | 21 + .../egui_glium/examples/native_texture.rs | 139 + egui/crates/egui_glium/examples/pure_glium.rs | 108 + egui/crates/egui_glium/src/lib.rs | 100 + egui/crates/egui_glium/src/painter.rs | 381 ++ .../egui_glium/src/shader/fragment_100es.glsl | 38 + .../egui_glium/src/shader/fragment_120.glsl | 31 + .../egui_glium/src/shader/fragment_140.glsl | 32 + .../egui_glium/src/shader/fragment_300es.glsl | 32 + .../egui_glium/src/shader/vertex_100es.glsl | 19 + .../egui_glium/src/shader/vertex_120.glsl | 18 + .../egui_glium/src/shader/vertex_140.glsl | 18 + .../egui_glium/src/shader/vertex_300es.glsl | 19 + egui/crates/egui_glow/CHANGELOG.md | 64 + egui/crates/egui_glow/Cargo.toml | 79 + egui/crates/egui_glow/README.md | 26 + egui/crates/egui_glow/examples/pure_glow.rs | 255 + egui/crates/egui_glow/src/lib.rs | 133 + egui/crates/egui_glow/src/misc_util.rs | 40 + egui/crates/egui_glow/src/painter.rs | 755 +++ .../crates/egui_glow/src/shader/fragment.glsl | 41 + egui/crates/egui_glow/src/shader/vertex.glsl | 30 + egui/crates/egui_glow/src/shader_version.rs | 104 + egui/crates/egui_glow/src/vao.rs | 157 + egui/crates/egui_glow/src/winit.rs | 92 + egui/crates/egui_web/CHANGELOG.md | 120 + egui/crates/egui_web/README.md | 1 + egui/crates/emath/Cargo.toml | 44 + egui/crates/emath/README.md | 11 + egui/crates/emath/src/align.rs | 265 + egui/crates/emath/src/history.rs | 229 + egui/crates/emath/src/lib.rs | 392 ++ egui/crates/emath/src/numeric.rs | 74 + egui/crates/emath/src/pos2.rs | 279 + egui/crates/emath/src/rect.rs | 537 ++ egui/crates/emath/src/rect_transform.rs | 83 + egui/crates/emath/src/rot2.rs | 198 + egui/crates/emath/src/smart_aim.rs | 157 + egui/crates/emath/src/vec2.rs | 463 ++ egui/crates/epaint/CHANGELOG.md | 81 + egui/crates/epaint/Cargo.toml | 105 + egui/crates/epaint/README.md | 11 + egui/crates/epaint/benches/benchmark.rs | 81 + egui/crates/epaint/fonts/Hack-Regular.ttf | Bin 0 -> 309408 bytes egui/crates/epaint/fonts/Hack-Regular.txt | 31 + .../crates/epaint/fonts/NotoEmoji-Regular.ttf | Bin 0 -> 418804 bytes egui/crates/epaint/fonts/OFL.txt | 92 + egui/crates/epaint/fonts/UFL.txt | 96 + egui/crates/epaint/fonts/Ubuntu-Light.ttf | Bin 0 -> 361676 bytes .../fonts/emoji-icon-font-mit-license.txt | 9 + egui/crates/epaint/fonts/emoji-icon-font.ttf | Bin 0 -> 317864 bytes egui/crates/epaint/fonts/list_fonts.py | 32 + egui/crates/epaint/src/bezier.rs | 1124 ++++ egui/crates/epaint/src/image.rs | 376 ++ egui/crates/epaint/src/lib.rs | 161 + egui/crates/epaint/src/mesh.rs | 316 ++ egui/crates/epaint/src/mutex.rs | 579 ++ egui/crates/epaint/src/shadow.rs | 87 + egui/crates/epaint/src/shape.rs | 846 +++ egui/crates/epaint/src/shape_transform.rs | 58 + egui/crates/epaint/src/stats.rs | 245 + egui/crates/epaint/src/stroke.rs | 60 + egui/crates/epaint/src/tessellator.rs | 1657 ++++++ egui/crates/epaint/src/text/cursor.rs | 122 + egui/crates/epaint/src/text/font.rs | 512 ++ egui/crates/epaint/src/text/fonts.rs | 793 +++ egui/crates/epaint/src/text/mod.rs | 19 + egui/crates/epaint/src/text/text_layout.rs | 873 +++ .../epaint/src/text/text_layout_types.rs | 914 ++++ egui/crates/epaint/src/texture_atlas.rs | 252 + egui/crates/epaint/src/texture_handle.rs | 122 + egui/crates/epaint/src/textures.rs | 257 + egui/crates/epaint/src/util/mod.rs | 16 + egui/crates/epaint/src/util/ordered_float.rs | 130 + egui/deny.toml | 89 + egui/docs/CNAME | 1 + egui/docs/README.md | 3 + egui/docs/egui_demo_app.js | 1724 ++++++ egui/docs/egui_demo_app_bg.wasm | Bin 0 -> 4928204 bytes egui/docs/example.html | 12 + egui/docs/favicon.ico | Bin 0 -> 15406 bytes egui/docs/index.html | 164 + egui/docs/multiple_apps.html | 200 + egui/examples/README.md | 10 + egui/examples/confirm_exit/Cargo.toml | 14 + egui/examples/confirm_exit/README.md | 7 + egui/examples/confirm_exit/screenshot.png | Bin 0 -> 3109 bytes egui/examples/confirm_exit/src/main.rs | 53 + egui/examples/custom_3d_glow/Cargo.toml | 16 + egui/examples/custom_3d_glow/README.md | 17 + egui/examples/custom_3d_glow/screenshot.png | Bin 0 -> 34270 bytes egui/examples/custom_3d_glow/src/main.rs | 199 + egui/examples/custom_font/Cargo.toml | 14 + egui/examples/custom_font/README.md | 7 + egui/examples/custom_font/screenshot.png | Bin 0 -> 5591 bytes egui/examples/custom_font/src/main.rs | 68 + egui/examples/custom_font_style/Cargo.toml | 14 + egui/examples/custom_font_style/README.md | 7 + .../examples/custom_font_style/screenshot.png | Bin 0 -> 60383 bytes egui/examples/custom_font_style/src/main.rs | 71 + egui/examples/custom_window_frame/Cargo.toml | 14 + egui/examples/custom_window_frame/README.md | 7 + .../custom_window_frame/screenshot.png | Bin 0 -> 10989 bytes egui/examples/custom_window_frame/src/main.rs | 164 + egui/examples/download_image/Cargo.toml | 18 + egui/examples/download_image/README.md | 7 + egui/examples/download_image/screenshot.png | Bin 0 -> 361536 bytes egui/examples/download_image/src/main.rs | 64 + egui/examples/file_dialog/Cargo.toml | 15 + egui/examples/file_dialog/README.md | 7 + egui/examples/file_dialog/screenshot.png | Bin 0 -> 3884 bytes egui/examples/file_dialog/src/main.rs | 109 + egui/examples/hello_world/Cargo.toml | 15 + egui/examples/hello_world/README.md | 7 + egui/examples/hello_world/screenshot.png | Bin 0 -> 9960 bytes egui/examples/hello_world/src/main.rs | 50 + egui/examples/hello_world_par/Cargo.toml | 16 + egui/examples/hello_world_par/README.md | 5 + egui/examples/hello_world_par/src/main.rs | 132 + egui/examples/hello_world_simple/Cargo.toml | 15 + egui/examples/hello_world_simple/README.md | 7 + .../hello_world_simple/screenshot.png | Bin 0 -> 7671 bytes egui/examples/hello_world_simple/src/main.rs | 33 + egui/examples/keyboard_events/Cargo.toml | 15 + egui/examples/keyboard_events/README.md | 5 + egui/examples/keyboard_events/screenshot.png | Bin 0 -> 7505 bytes egui/examples/keyboard_events/src/main.rs | 49 + egui/examples/puffin_profiler/Cargo.toml | 17 + egui/examples/puffin_profiler/README.md | 11 + egui/examples/puffin_profiler/screenshot.png | Bin 0 -> 20791 bytes egui/examples/puffin_profiler/src/main.rs | 68 + egui/examples/retained_image/Cargo.toml | 16 + egui/examples/retained_image/README.md | 7 + egui/examples/retained_image/screenshot.png | Bin 0 -> 151711 bytes egui/examples/retained_image/src/main.rs | 66 + .../retained_image/src/rust-logo-256x256.png | Bin 0 -> 33647 bytes .../retained_image/src/rust-logo-license.txt | 1 + egui/examples/screenshot/Cargo.toml | 20 + egui/examples/screenshot/README.md | 7 + egui/examples/screenshot/screenshot.png | Bin 0 -> 6645 bytes egui/examples/screenshot/src/main.rs | 94 + egui/examples/serial_windows/Cargo.toml | 14 + egui/examples/serial_windows/README.md | 17 + egui/examples/serial_windows/screenshot.png | Bin 0 -> 7453 bytes egui/examples/serial_windows/src/main.rs | 61 + egui/examples/svg/Cargo.toml | 15 + egui/examples/svg/README.md | 7 + egui/examples/svg/screenshot.png | Bin 0 -> 60851 bytes egui/examples/svg/src/main.rs | 50 + egui/examples/svg/src/rust-logo-license.txt | 1 + .../examples/svg/src/rustacean-flat-happy.svg | 33 + egui/rust-toolchain | 10 + egui/scripts/build_demo_web.sh | 98 + egui/scripts/cargo-deny.sh | 19 + egui/scripts/check.sh | 76 + egui/scripts/docs.sh | 9 + egui/scripts/find_bloat.sh | 8 + egui/scripts/generate_example_screenshots.sh | 13 + egui/scripts/setup_web.sh | 8 + egui/scripts/start_server.sh | 18 + egui/scripts/wasm_bindgen_check.sh | 45 + egui/scripts/wasm_size.sh | 6 + egui_inspect/Cargo.toml | 2 +- src/main.rs | 3 - 363 files changed, 84081 insertions(+), 16 deletions(-) create mode 100644 egui/.cargo/config.toml create mode 100644 egui/.github/ISSUE_TEMPLATE/bug_report.md create mode 100644 egui/.github/ISSUE_TEMPLATE/feature_request.md create mode 100644 egui/.github/ISSUE_TEMPLATE/other.md create mode 100644 egui/.github/pull_request_template.md create mode 100644 egui/.github/workflows/rust.yml create mode 100644 egui/.github/workflows/typos.yml create mode 100644 egui/.gitignore create mode 100644 egui/ARCHITECTURE.md create mode 100644 egui/CHANGELOG.md create mode 100644 egui/CODE_OF_CONDUCT.md create mode 100644 egui/CONTRIBUTING.md create mode 100644 egui/Cargo.lock create mode 100644 egui/Cargo.toml create mode 100644 egui/Cranky.toml create mode 100644 egui/LICENSE-APACHE create mode 100644 egui/LICENSE-MIT create mode 100644 egui/README.md create mode 100644 egui/_typos.toml create mode 100644 egui/bacon.toml create mode 100644 egui/clippy.toml create mode 100644 egui/crates/ecolor/CHANGELOG.md create mode 100644 egui/crates/ecolor/Cargo.toml create mode 100644 egui/crates/ecolor/README.md create mode 100644 egui/crates/ecolor/src/cint_impl.rs create mode 100644 egui/crates/ecolor/src/color32.rs create mode 100644 egui/crates/ecolor/src/hex_color_macro.rs create mode 100644 egui/crates/ecolor/src/hsva.rs create mode 100644 egui/crates/ecolor/src/hsva_gamma.rs create mode 100644 egui/crates/ecolor/src/lib.rs create mode 100644 egui/crates/ecolor/src/rgba.rs create mode 100644 egui/crates/eframe/CHANGELOG.md create mode 100644 egui/crates/eframe/Cargo.toml create mode 100644 egui/crates/eframe/README.md create mode 100644 egui/crates/eframe/src/epi.rs create mode 100644 egui/crates/eframe/src/lib.rs create mode 100644 egui/crates/eframe/src/native/epi_integration.rs create mode 100644 egui/crates/eframe/src/native/file_storage.rs create mode 100644 egui/crates/eframe/src/native/mod.rs create mode 100644 egui/crates/eframe/src/native/run.rs create mode 100644 egui/crates/eframe/src/web/backend.rs create mode 100644 egui/crates/eframe/src/web/events.rs create mode 100644 egui/crates/eframe/src/web/input.rs create mode 100644 egui/crates/eframe/src/web/mod.rs create mode 100644 egui/crates/eframe/src/web/screen_reader.rs create mode 100644 egui/crates/eframe/src/web/storage.rs create mode 100644 egui/crates/eframe/src/web/text_agent.rs create mode 100644 egui/crates/eframe/src/web/web_painter.rs create mode 100644 egui/crates/eframe/src/web/web_painter_glow.rs create mode 100644 egui/crates/eframe/src/web/web_painter_wgpu.rs create mode 100644 egui/crates/egui-wgpu/CHANGELOG.md create mode 100644 egui/crates/egui-wgpu/Cargo.toml create mode 100644 egui/crates/egui-wgpu/README.md create mode 100644 egui/crates/egui-wgpu/src/egui.wgsl create mode 100644 egui/crates/egui-wgpu/src/lib.rs create mode 100644 egui/crates/egui-wgpu/src/renderer.rs create mode 100644 egui/crates/egui-wgpu/src/winit.rs create mode 100644 egui/crates/egui-winit/CHANGELOG.md create mode 100644 egui/crates/egui-winit/Cargo.toml create mode 100644 egui/crates/egui-winit/README.md create mode 100644 egui/crates/egui-winit/src/clipboard.rs create mode 100644 egui/crates/egui-winit/src/lib.rs create mode 100644 egui/crates/egui-winit/src/window_settings.rs create mode 100644 egui/crates/egui/Cargo.toml create mode 100644 egui/crates/egui/README.md create mode 100644 egui/crates/egui/examples/README.md create mode 100644 egui/crates/egui/src/animation_manager.rs create mode 100644 egui/crates/egui/src/containers/area.rs create mode 100644 egui/crates/egui/src/containers/collapsing_header.rs create mode 100644 egui/crates/egui/src/containers/combo_box.rs create mode 100644 egui/crates/egui/src/containers/frame.rs create mode 100644 egui/crates/egui/src/containers/mod.rs create mode 100644 egui/crates/egui/src/containers/panel.rs create mode 100644 egui/crates/egui/src/containers/popup.rs create mode 100644 egui/crates/egui/src/containers/resize.rs create mode 100644 egui/crates/egui/src/containers/scroll_area.rs create mode 100644 egui/crates/egui/src/containers/window.rs create mode 100644 egui/crates/egui/src/context.rs create mode 100644 egui/crates/egui/src/data/input.rs create mode 100644 egui/crates/egui/src/data/mod.rs create mode 100644 egui/crates/egui/src/data/output.rs create mode 100644 egui/crates/egui/src/frame_state.rs create mode 100644 egui/crates/egui/src/grid.rs create mode 100644 egui/crates/egui/src/gui_zoom.rs create mode 100644 egui/crates/egui/src/id.rs create mode 100644 egui/crates/egui/src/input_state.rs create mode 100644 egui/crates/egui/src/input_state/touch_state.rs create mode 100644 egui/crates/egui/src/introspection.rs create mode 100644 egui/crates/egui/src/layers.rs create mode 100644 egui/crates/egui/src/layout.rs create mode 100644 egui/crates/egui/src/lib.rs create mode 100644 egui/crates/egui/src/memory.rs create mode 100644 egui/crates/egui/src/menu.rs create mode 100644 egui/crates/egui/src/os.rs create mode 100644 egui/crates/egui/src/painter.rs create mode 100644 egui/crates/egui/src/placer.rs create mode 100644 egui/crates/egui/src/response.rs create mode 100644 egui/crates/egui/src/sense.rs create mode 100644 egui/crates/egui/src/style.rs create mode 100644 egui/crates/egui/src/ui.rs create mode 100644 egui/crates/egui/src/util/cache.rs create mode 100644 egui/crates/egui/src/util/fixed_cache.rs create mode 100644 egui/crates/egui/src/util/id_type_map.rs create mode 100644 egui/crates/egui/src/util/mod.rs create mode 100644 egui/crates/egui/src/util/undoer.rs create mode 100644 egui/crates/egui/src/widget_text.rs create mode 100644 egui/crates/egui/src/widgets/button.rs create mode 100644 egui/crates/egui/src/widgets/color_picker.rs create mode 100644 egui/crates/egui/src/widgets/drag_value.rs create mode 100644 egui/crates/egui/src/widgets/hyperlink.rs create mode 100644 egui/crates/egui/src/widgets/image.rs create mode 100644 egui/crates/egui/src/widgets/label.rs create mode 100644 egui/crates/egui/src/widgets/mod.rs create mode 100644 egui/crates/egui/src/widgets/plot/items/bar.rs create mode 100644 egui/crates/egui/src/widgets/plot/items/box_elem.rs create mode 100644 egui/crates/egui/src/widgets/plot/items/mod.rs create mode 100644 egui/crates/egui/src/widgets/plot/items/rect_elem.rs create mode 100644 egui/crates/egui/src/widgets/plot/items/values.rs create mode 100644 egui/crates/egui/src/widgets/plot/legend.rs create mode 100644 egui/crates/egui/src/widgets/plot/mod.rs create mode 100644 egui/crates/egui/src/widgets/plot/transform.rs create mode 100644 egui/crates/egui/src/widgets/progress_bar.rs create mode 100644 egui/crates/egui/src/widgets/selected_label.rs create mode 100644 egui/crates/egui/src/widgets/separator.rs create mode 100644 egui/crates/egui/src/widgets/slider.rs create mode 100644 egui/crates/egui/src/widgets/spinner.rs create mode 100644 egui/crates/egui/src/widgets/text_edit/builder.rs create mode 100644 egui/crates/egui/src/widgets/text_edit/cursor_range.rs create mode 100644 egui/crates/egui/src/widgets/text_edit/mod.rs create mode 100644 egui/crates/egui/src/widgets/text_edit/output.rs create mode 100644 egui/crates/egui/src/widgets/text_edit/state.rs create mode 100644 egui/crates/egui/src/widgets/text_edit/text_buffer.rs create mode 100644 egui/crates/egui_demo_app/Cargo.toml create mode 100644 egui/crates/egui_demo_app/README.md create mode 100644 egui/crates/egui_demo_app/src/apps/custom3d_glow.rs create mode 100644 egui/crates/egui_demo_app/src/apps/custom3d_wgpu.rs create mode 100644 egui/crates/egui_demo_app/src/apps/custom3d_wgpu_shader.wgsl create mode 100644 egui/crates/egui_demo_app/src/apps/fractal_clock.rs create mode 100644 egui/crates/egui_demo_app/src/apps/http_app.rs create mode 100644 egui/crates/egui_demo_app/src/apps/mod.rs create mode 100644 egui/crates/egui_demo_app/src/backend_panel.rs create mode 100644 egui/crates/egui_demo_app/src/frame_history.rs create mode 100644 egui/crates/egui_demo_app/src/lib.rs create mode 100644 egui/crates/egui_demo_app/src/main.rs create mode 100644 egui/crates/egui_demo_app/src/wrap_app.rs create mode 100644 egui/crates/egui_demo_lib/Cargo.toml create mode 100644 egui/crates/egui_demo_lib/README.md create mode 100644 egui/crates/egui_demo_lib/benches/benchmark.rs create mode 100644 egui/crates/egui_demo_lib/src/color_test.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/about.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/code_editor.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/code_example.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/context_menu.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/dancing_strings.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/demo_app_windows.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/drag_and_drop.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/font_book.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/highlighting.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/layout_test.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/misc_demo_window.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/mod.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/multi_touch.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/paint_bezier.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/painting.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/password.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/plot_demo.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/scrolling.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/sliders.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/strip_demo.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/table_demo.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/tests.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/text_edit.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/toggle_switch.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/widget_gallery.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/window_options.rs create mode 100644 egui/crates/egui_demo_lib/src/demo/window_with_panels.rs create mode 100644 egui/crates/egui_demo_lib/src/easy_mark/easy_mark_editor.rs create mode 100644 egui/crates/egui_demo_lib/src/easy_mark/easy_mark_highlighter.rs create mode 100644 egui/crates/egui_demo_lib/src/easy_mark/easy_mark_parser.rs create mode 100644 egui/crates/egui_demo_lib/src/easy_mark/easy_mark_viewer.rs create mode 100644 egui/crates/egui_demo_lib/src/easy_mark/mod.rs create mode 100644 egui/crates/egui_demo_lib/src/lib.rs create mode 100644 egui/crates/egui_demo_lib/src/syntax_highlighting.rs create mode 100644 egui/crates/egui_extras/CHANGELOG.md create mode 100644 egui/crates/egui_extras/Cargo.toml create mode 100644 egui/crates/egui_extras/README.md create mode 100644 egui/crates/egui_extras/src/datepicker/button.rs create mode 100644 egui/crates/egui_extras/src/datepicker/mod.rs create mode 100644 egui/crates/egui_extras/src/datepicker/popup.rs create mode 100644 egui/crates/egui_extras/src/image.rs create mode 100644 egui/crates/egui_extras/src/layout.rs create mode 100644 egui/crates/egui_extras/src/lib.rs create mode 100644 egui/crates/egui_extras/src/sizing.rs create mode 100644 egui/crates/egui_extras/src/strip.rs create mode 100644 egui/crates/egui_extras/src/table.rs create mode 100644 egui/crates/egui_glium/CHANGELOG.md create mode 100644 egui/crates/egui_glium/Cargo.toml create mode 100644 egui/crates/egui_glium/README.md create mode 100644 egui/crates/egui_glium/examples/native_texture.rs create mode 100644 egui/crates/egui_glium/examples/pure_glium.rs create mode 100644 egui/crates/egui_glium/src/lib.rs create mode 100644 egui/crates/egui_glium/src/painter.rs create mode 100644 egui/crates/egui_glium/src/shader/fragment_100es.glsl create mode 100644 egui/crates/egui_glium/src/shader/fragment_120.glsl create mode 100644 egui/crates/egui_glium/src/shader/fragment_140.glsl create mode 100644 egui/crates/egui_glium/src/shader/fragment_300es.glsl create mode 100644 egui/crates/egui_glium/src/shader/vertex_100es.glsl create mode 100644 egui/crates/egui_glium/src/shader/vertex_120.glsl create mode 100644 egui/crates/egui_glium/src/shader/vertex_140.glsl create mode 100644 egui/crates/egui_glium/src/shader/vertex_300es.glsl create mode 100644 egui/crates/egui_glow/CHANGELOG.md create mode 100644 egui/crates/egui_glow/Cargo.toml create mode 100644 egui/crates/egui_glow/README.md create mode 100644 egui/crates/egui_glow/examples/pure_glow.rs create mode 100644 egui/crates/egui_glow/src/lib.rs create mode 100644 egui/crates/egui_glow/src/misc_util.rs create mode 100644 egui/crates/egui_glow/src/painter.rs create mode 100644 egui/crates/egui_glow/src/shader/fragment.glsl create mode 100644 egui/crates/egui_glow/src/shader/vertex.glsl create mode 100644 egui/crates/egui_glow/src/shader_version.rs create mode 100644 egui/crates/egui_glow/src/vao.rs create mode 100644 egui/crates/egui_glow/src/winit.rs create mode 100644 egui/crates/egui_web/CHANGELOG.md create mode 100644 egui/crates/egui_web/README.md create mode 100644 egui/crates/emath/Cargo.toml create mode 100644 egui/crates/emath/README.md create mode 100644 egui/crates/emath/src/align.rs create mode 100644 egui/crates/emath/src/history.rs create mode 100644 egui/crates/emath/src/lib.rs create mode 100644 egui/crates/emath/src/numeric.rs create mode 100644 egui/crates/emath/src/pos2.rs create mode 100644 egui/crates/emath/src/rect.rs create mode 100644 egui/crates/emath/src/rect_transform.rs create mode 100644 egui/crates/emath/src/rot2.rs create mode 100644 egui/crates/emath/src/smart_aim.rs create mode 100644 egui/crates/emath/src/vec2.rs create mode 100644 egui/crates/epaint/CHANGELOG.md create mode 100644 egui/crates/epaint/Cargo.toml create mode 100644 egui/crates/epaint/README.md create mode 100644 egui/crates/epaint/benches/benchmark.rs create mode 100644 egui/crates/epaint/fonts/Hack-Regular.ttf create mode 100644 egui/crates/epaint/fonts/Hack-Regular.txt create mode 100644 egui/crates/epaint/fonts/NotoEmoji-Regular.ttf create mode 100644 egui/crates/epaint/fonts/OFL.txt create mode 100755 egui/crates/epaint/fonts/UFL.txt create mode 100755 egui/crates/epaint/fonts/Ubuntu-Light.ttf create mode 100644 egui/crates/epaint/fonts/emoji-icon-font-mit-license.txt create mode 100644 egui/crates/epaint/fonts/emoji-icon-font.ttf create mode 100644 egui/crates/epaint/fonts/list_fonts.py create mode 100644 egui/crates/epaint/src/bezier.rs create mode 100644 egui/crates/epaint/src/image.rs create mode 100644 egui/crates/epaint/src/lib.rs create mode 100644 egui/crates/epaint/src/mesh.rs create mode 100644 egui/crates/epaint/src/mutex.rs create mode 100644 egui/crates/epaint/src/shadow.rs create mode 100644 egui/crates/epaint/src/shape.rs create mode 100644 egui/crates/epaint/src/shape_transform.rs create mode 100644 egui/crates/epaint/src/stats.rs create mode 100644 egui/crates/epaint/src/stroke.rs create mode 100644 egui/crates/epaint/src/tessellator.rs create mode 100644 egui/crates/epaint/src/text/cursor.rs create mode 100644 egui/crates/epaint/src/text/font.rs create mode 100644 egui/crates/epaint/src/text/fonts.rs create mode 100644 egui/crates/epaint/src/text/mod.rs create mode 100644 egui/crates/epaint/src/text/text_layout.rs create mode 100644 egui/crates/epaint/src/text/text_layout_types.rs create mode 100644 egui/crates/epaint/src/texture_atlas.rs create mode 100644 egui/crates/epaint/src/texture_handle.rs create mode 100644 egui/crates/epaint/src/textures.rs create mode 100644 egui/crates/epaint/src/util/mod.rs create mode 100644 egui/crates/epaint/src/util/ordered_float.rs create mode 100644 egui/deny.toml create mode 100644 egui/docs/CNAME create mode 100644 egui/docs/README.md create mode 100644 egui/docs/egui_demo_app.js create mode 100644 egui/docs/egui_demo_app_bg.wasm create mode 100644 egui/docs/example.html create mode 100755 egui/docs/favicon.ico create mode 100644 egui/docs/index.html create mode 100644 egui/docs/multiple_apps.html create mode 100644 egui/examples/README.md create mode 100644 egui/examples/confirm_exit/Cargo.toml create mode 100644 egui/examples/confirm_exit/README.md create mode 100644 egui/examples/confirm_exit/screenshot.png create mode 100644 egui/examples/confirm_exit/src/main.rs create mode 100644 egui/examples/custom_3d_glow/Cargo.toml create mode 100644 egui/examples/custom_3d_glow/README.md create mode 100644 egui/examples/custom_3d_glow/screenshot.png create mode 100644 egui/examples/custom_3d_glow/src/main.rs create mode 100644 egui/examples/custom_font/Cargo.toml create mode 100644 egui/examples/custom_font/README.md create mode 100644 egui/examples/custom_font/screenshot.png create mode 100644 egui/examples/custom_font/src/main.rs create mode 100644 egui/examples/custom_font_style/Cargo.toml create mode 100644 egui/examples/custom_font_style/README.md create mode 100644 egui/examples/custom_font_style/screenshot.png create mode 100644 egui/examples/custom_font_style/src/main.rs create mode 100644 egui/examples/custom_window_frame/Cargo.toml create mode 100644 egui/examples/custom_window_frame/README.md create mode 100644 egui/examples/custom_window_frame/screenshot.png create mode 100644 egui/examples/custom_window_frame/src/main.rs create mode 100644 egui/examples/download_image/Cargo.toml create mode 100644 egui/examples/download_image/README.md create mode 100644 egui/examples/download_image/screenshot.png create mode 100644 egui/examples/download_image/src/main.rs create mode 100644 egui/examples/file_dialog/Cargo.toml create mode 100644 egui/examples/file_dialog/README.md create mode 100644 egui/examples/file_dialog/screenshot.png create mode 100644 egui/examples/file_dialog/src/main.rs create mode 100644 egui/examples/hello_world/Cargo.toml create mode 100644 egui/examples/hello_world/README.md create mode 100644 egui/examples/hello_world/screenshot.png create mode 100644 egui/examples/hello_world/src/main.rs create mode 100644 egui/examples/hello_world_par/Cargo.toml create mode 100644 egui/examples/hello_world_par/README.md create mode 100644 egui/examples/hello_world_par/src/main.rs create mode 100644 egui/examples/hello_world_simple/Cargo.toml create mode 100644 egui/examples/hello_world_simple/README.md create mode 100644 egui/examples/hello_world_simple/screenshot.png create mode 100644 egui/examples/hello_world_simple/src/main.rs create mode 100644 egui/examples/keyboard_events/Cargo.toml create mode 100644 egui/examples/keyboard_events/README.md create mode 100644 egui/examples/keyboard_events/screenshot.png create mode 100644 egui/examples/keyboard_events/src/main.rs create mode 100644 egui/examples/puffin_profiler/Cargo.toml create mode 100644 egui/examples/puffin_profiler/README.md create mode 100644 egui/examples/puffin_profiler/screenshot.png create mode 100644 egui/examples/puffin_profiler/src/main.rs create mode 100644 egui/examples/retained_image/Cargo.toml create mode 100644 egui/examples/retained_image/README.md create mode 100644 egui/examples/retained_image/screenshot.png create mode 100644 egui/examples/retained_image/src/main.rs create mode 100644 egui/examples/retained_image/src/rust-logo-256x256.png create mode 100644 egui/examples/retained_image/src/rust-logo-license.txt create mode 100644 egui/examples/screenshot/Cargo.toml create mode 100644 egui/examples/screenshot/README.md create mode 100644 egui/examples/screenshot/screenshot.png create mode 100644 egui/examples/screenshot/src/main.rs create mode 100644 egui/examples/serial_windows/Cargo.toml create mode 100644 egui/examples/serial_windows/README.md create mode 100644 egui/examples/serial_windows/screenshot.png create mode 100644 egui/examples/serial_windows/src/main.rs create mode 100644 egui/examples/svg/Cargo.toml create mode 100644 egui/examples/svg/README.md create mode 100644 egui/examples/svg/screenshot.png create mode 100644 egui/examples/svg/src/main.rs create mode 100644 egui/examples/svg/src/rust-logo-license.txt create mode 100644 egui/examples/svg/src/rustacean-flat-happy.svg create mode 100644 egui/rust-toolchain create mode 100755 egui/scripts/build_demo_web.sh create mode 100755 egui/scripts/cargo-deny.sh create mode 100755 egui/scripts/check.sh create mode 100755 egui/scripts/docs.sh create mode 100755 egui/scripts/find_bloat.sh create mode 100755 egui/scripts/generate_example_screenshots.sh create mode 100755 egui/scripts/setup_web.sh create mode 100755 egui/scripts/start_server.sh create mode 100755 egui/scripts/wasm_bindgen_check.sh create mode 100755 egui/scripts/wasm_size.sh diff --git a/Cargo.lock b/Cargo.lock index 64e9815..aabf7f5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -56,14 +56,10 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "ecolor" version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f99fe3cac305af9d6d92971af60d0f7ea4d783201ef1673571567b6699964d9" [[package]] name = "egui" version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6412a21e0bde7c0918f7fb44bbbb86b5e1f88e63c026a4e747cc7af02f76dfbe" dependencies = [ "ahash", "epaint", @@ -89,14 +85,10 @@ dependencies = [ [[package]] name = "emath" version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8ecd80612937e0267909d5351770fe150004e24dab93954f69ca62eecd3f77e" [[package]] name = "epaint" version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12e78b5c58a1f7f621f9d546add2adce20636422c9b251e29f749e8a2f713c95" dependencies = [ "ab_glyph", "ahash", diff --git a/Cargo.toml b/Cargo.toml index c25b2e6..c49bf11 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,13 +6,10 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -egui = "0.21.0" +egui = { path = "./egui/crates/egui" } [dependencies.egui-inspect] path = "./egui_inspect" #[profile.dev] #incremental = false # Buggy on latest rustc nightly, keeps ICEing - -[profile.dev.package."*"] -opt-level = 2 diff --git a/egui/.cargo/config.toml b/egui/.cargo/config.toml new file mode 100644 index 0000000..be614b0 --- /dev/null +++ b/egui/.cargo/config.toml @@ -0,0 +1,6 @@ +# clipboard api is still unstable, so web-sys requires the below flag to be passed for copy (ctrl + c) to work +# https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html +# check status at https://developer.mozilla.org/en-US/docs/Web/API/Clipboard#browser_compatibility +# we don't use `[build]` because of rust analyzer's build cache invalidation https://github.com/emilk/eframe_template/issues/93 +[target.wasm32-unknown-unknown] +rustflags = ["--cfg=web_sys_unstable_apis"] diff --git a/egui/.github/ISSUE_TEMPLATE/bug_report.md b/egui/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..66c1786 --- /dev/null +++ b/egui/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,50 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug +assignees: '' + +--- + + + +**Describe the bug** + + +**To Reproduce** +Steps to reproduce the behavior: +1. +2. +3. +4. + +**Expected behavior** + + +**Screenshots** + + +**Desktop (please complete the following information):** + - OS: + - Browser + - Version + +**Smartphone (please complete the following information):** + - Device: + - OS: + - Browser + - Version + +**Additional context** + diff --git a/egui/.github/ISSUE_TEMPLATE/feature_request.md b/egui/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..b1c0901 --- /dev/null +++ b/egui/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,25 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: feature-request +assignees: '' + +--- + + + + +**Is your feature request related to a problem? Please describe.** + + +**Describe the solution you'd like** + + +**Describe alternatives you've considered** + + +**Additional context** + diff --git a/egui/.github/ISSUE_TEMPLATE/other.md b/egui/.github/ISSUE_TEMPLATE/other.md new file mode 100644 index 0000000..db031d1 --- /dev/null +++ b/egui/.github/ISSUE_TEMPLATE/other.md @@ -0,0 +1,10 @@ +--- +name: Other +about: For issues that are neither bugs or feature requests +title: '' +labels: '' +assignees: '' + +--- + +If you are asking a question, use [the egui discussions forum](https://github.com/emilk/egui/discussions/categories/q-a) instead! diff --git a/egui/.github/pull_request_template.md b/egui/.github/pull_request_template.md new file mode 100644 index 0000000..c442e13 --- /dev/null +++ b/egui/.github/pull_request_template.md @@ -0,0 +1,15 @@ + + +Closes . diff --git a/egui/.github/workflows/rust.yml b/egui/.github/workflows/rust.yml new file mode 100644 index 0000000..3ca1d3e --- /dev/null +++ b/egui/.github/workflows/rust.yml @@ -0,0 +1,237 @@ +on: [push, pull_request] + +name: CI + +env: + # web_sys_unstable_apis is required to enable the web_sys clipboard API which eframe web uses, + # as well as by the wasm32-backend of the wgpu crate. + # https://rustwasm.github.io/wasm-bindgen/api/web_sys/struct.Clipboard.html + # https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html + RUSTFLAGS: --cfg=web_sys_unstable_apis -D warnings + RUSTDOCFLAGS: -D warnings + +jobs: + fmt-crank-check-test: + name: Format + check + test + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v2 + + - uses: actions-rs/toolchain@v1 + with: + profile: default + toolchain: 1.65.0 + override: true + + - name: Install packages (Linux) + if: runner.os == 'Linux' + #uses: awalsh128/cache-apt-pkgs-action@v1.2.2 + #TODO(emilk) use upstream when https://github.com/awalsh128/cache-apt-pkgs-action/pull/90 is merged + uses: rerun-io/cache-apt-pkgs-action@59534850182063abf1b2c11bb3686722a12a8397 + with: + packages: libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev libgtk-3-dev # libgtk-3-dev is used by rfd + version: 1.0 + execute_install_scripts: true + + - name: Set up cargo cache + uses: Swatinem/rust-cache@v2 + + - name: Rustfmt + uses: actions-rs/cargo@v1 + with: + command: fmt + args: --all -- --check + + - name: Install cargo-cranky + uses: baptiste0928/cargo-install@v1 + with: + crate: cargo-cranky + + - name: check --all-features + uses: actions-rs/cargo@v1 + with: + command: check + args: --locked --all-features --all-targets + + - name: check default features + uses: actions-rs/cargo@v1 + with: + command: check + args: --locked --all-targets + + - name: check --no-default-features + uses: actions-rs/cargo@v1 + with: + command: check + args: --locked --no-default-features --lib --all-targets + + - name: check epaint --no-default-features + uses: actions-rs/cargo@v1 + with: + command: check + args: --locked --no-default-features --lib --all-targets -p epaint + + - name: check eframe --no-default-features + uses: actions-rs/cargo@v1 + with: + command: check + args: --locked --no-default-features --lib --all-targets -p eframe + + - name: Test doc-tests + uses: actions-rs/cargo@v1 + with: + command: test + args: --doc --all-features + + - name: cargo doc --lib + uses: actions-rs/cargo@v1 + with: + command: doc + args: --lib --no-deps --all-features + + - name: cargo doc --document-private-items + uses: actions-rs/cargo@v1 + with: + command: doc + args: --document-private-items --no-deps --all-features + + - name: Test + uses: actions-rs/cargo@v1 + with: + command: test + args: --all-features + + - name: Cranky + uses: actions-rs/cargo@v1 + with: + command: cranky + args: --all-targets --all-features -- -D warnings + + # --------------------------------------------------------------------------- + + check_wasm: + name: Check wasm32 + wasm-bindgen + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: 1.65.0 + target: wasm32-unknown-unknown + override: true + + - run: sudo apt-get update && sudo apt-get install libgtk-3-dev + + - name: Set up cargo cache + uses: Swatinem/rust-cache@v2 + + - name: Install cargo-cranky + uses: baptiste0928/cargo-install@v1 + with: + crate: cargo-cranky + + - name: Check wasm32 egui_demo_app + uses: actions-rs/cargo@v1 + with: + command: check + args: -p egui_demo_app --lib --target wasm32-unknown-unknown + + - name: Check wasm32 egui_demo_app --all-features + uses: actions-rs/cargo@v1 + with: + command: check + args: -p egui_demo_app --lib --target wasm32-unknown-unknown --all-features + + - name: Check wasm32 eframe + uses: actions-rs/cargo@v1 + with: + command: check + args: -p eframe --lib --no-default-features --features glow,persistence --target wasm32-unknown-unknown + + - name: wasm-bindgen + uses: jetli/wasm-bindgen-action@v0.1.0 + with: + version: "0.2.84" + + - run: ./scripts/wasm_bindgen_check.sh --skip-setup + + - name: Cranky wasm32 + uses: actions-rs/cargo@v1 + with: + command: cranky + args: --target wasm32-unknown-unknown --all-features -p egui_demo_app --lib -- -D warnings + + # --------------------------------------------------------------------------- + + cargo-deny: + strategy: + fail-fast: false + matrix: + include: + - target: aarch64-apple-darwin + - target: aarch64-linux-android + - target: i686-pc-windows-gnu + - target: i686-pc-windows-msvc + - target: i686-unknown-linux-gnu + - target: wasm32-unknown-unknown + - target: x86_64-apple-darwin + - target: x86_64-pc-windows-gnu + - target: x86_64-pc-windows-msvc + - target: x86_64-unknown-linux-gnu + - target: x86_64-unknown-linux-musl + - target: x86_64-unknown-redox + + name: cargo-deny ${{ matrix.target }} + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v2 + - uses: EmbarkStudios/cargo-deny-action@v1 + with: + rust-version: "1.65.0" + log-level: error + command: check + arguments: ${{ matrix.flags }} --target ${{ matrix.target }} + + # --------------------------------------------------------------------------- + + android: + name: android + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v2 + + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: 1.65.0 + target: aarch64-linux-android + override: true + + - name: Set up cargo cache + uses: Swatinem/rust-cache@v2 + + - run: cargo check --features wgpu,android-native-activity --target aarch64-linux-android + working-directory: crates/eframe + + # --------------------------------------------------------------------------- + + windows: + name: Check Windows + runs-on: windows-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: 1.65.0 + override: true + + - name: Set up cargo cache + uses: Swatinem/rust-cache@v2 + + - name: Check + uses: actions-rs/cargo@v1 + with: + command: check + args: --all-targets --all-features diff --git a/egui/.github/workflows/typos.yml b/egui/.github/workflows/typos.yml new file mode 100644 index 0000000..c3bc841 --- /dev/null +++ b/egui/.github/workflows/typos.yml @@ -0,0 +1,17 @@ +# https://github.com/crate-ci/typos +# Add exceptions to _typos.toml +# install and run locally: cargo install typos-cli && typos + +name: Spell Check +on: [pull_request] + +jobs: + run: + name: Spell Check + runs-on: ubuntu-latest + steps: + - name: Checkout Actions Repository + uses: actions/checkout@v2 + + - name: Check spelling of entire workspace + uses: crate-ci/typos@master diff --git a/egui/.gitignore b/egui/.gitignore new file mode 100644 index 0000000..c43b955 --- /dev/null +++ b/egui/.gitignore @@ -0,0 +1,7 @@ +.DS_Store +**/target +**/target_ra +**/target_wasm +/.*.json +/.vscode +/media/* diff --git a/egui/ARCHITECTURE.md b/egui/ARCHITECTURE.md new file mode 100644 index 0000000..00386a9 --- /dev/null +++ b/egui/ARCHITECTURE.md @@ -0,0 +1,53 @@ +# Architecture +This document describes how the crates that make up egui are all connected. + +Also see [`CONTRIBUTING.md`](https://github.com/emilk/egui/blob/master/CONTRIBUTING.md) for what to do before opening a PR. + + +## Crate overview +The crates in this repository are: `egui, emath, epaint, egui_extras, egui-winit, egui_glium, egui_glow, egui_demo_lib, egui_demo_app`. + +### `egui`: The main GUI library. +Example code: `if ui.button("Click me").clicked() { … }` +This is the crate where the bulk of the code is at. `egui` depends only on `emath` and `epaint`. + +### `emath`: minimal 2D math library +Examples: `Vec2, Pos2, Rect, lerp, remap` + +### `epaint` +2d shapes and text that can be turned into textured triangles. + +Example: `Shape::Circle { center, radius, fill, stroke }` + +Depends on `emath`. + +### `egui_extras` +This adds additional features on top of `egui`. + +### `egui-winit` +This crates provides bindings between [`egui`](https://github.com/emilk/egui) and [winit](https://crates.io/crates/winit). + +The library translates winit events to egui, handled copy/paste, updates the cursor, open links clicked in egui, etc. + +### `egui_glium` +Puts an egui app inside a native window on your laptop. Paints the triangles that egui outputs using [glium](https://github.com/glium/glium). + +### `egui_glow` +Puts an egui app inside a native window on your laptop. Paints the triangles that egui outputs using [glow](https://github.com/grovesNL/glow). + +### `eframe` +`eframe` is the official `egui` framework, built so you can compile the same app for either web or native. + +The demo that you can see at is using `eframe` to host the `egui`. The demo code is found in: + +### `egui_demo_lib` +Depends on `egui`. +This contains a bunch of uses of `egui` and looks like the ui code you would write for an `egui` app. + +### `egui_demo_app` +Thin wrapper around `egui_demo_lib` so we can compile it to a web site or a native app executable. +Depends on `egui_demo_lib` + `eframe`. + +### Other integrations + +There are also many great integrations for game engines such as `bevy` and `miniquad` which you can find at . diff --git a/egui/CHANGELOG.md b/egui/CHANGELOG.md new file mode 100644 index 0000000..41b0bf9 --- /dev/null +++ b/egui/CHANGELOG.md @@ -0,0 +1,850 @@ +# egui changelog +All notable changes to the `egui` crate will be documented in this file. + +NOTE: [`epaint`](crates/epaint/CHANGELOG.md), [`eframe`](crates/eframe/CHANGELOG.md), [`egui-winit`](crates/egui-winit/CHANGELOG.md), [`egui_glium`](crates/egui_glium/CHANGELOG.md), [`egui_glow`](crates/egui_glow/CHANGELOG.md) and [`egui-wgpu`](crates/egui-wgpu/CHANGELOG.md) have their own changelogs! + + +## Unreleased +* Add `char_limit` to `TextEdit` singleline mode to limit the amount of characters +* ⚠️ BREAKING: `Plot::link_axis` and `Plot::link_cursor` now take the name of the group ([#2410](https://github.com/emilk/egui/pull/2410)). + + +## 0.21.0 - 2023-02-08 - Deadlock fix and style customizability +* ⚠️ BREAKING: `egui::Context` now use closures for locking ([#2625](https://github.com/emilk/egui/pull/2625)): + * `ctx.input().key_pressed(Key::A)` -> `ctx.input(|i| i.key_pressed(Key::A))` + * `ui.memory().toggle_popup(popup_id)` -> `ui.memory_mut(|mem| mem.toggle_popup(popup_id))` + +### Added ⭐ +* Add `Response::drag_started_by` and `Response::drag_released_by` for convenience, similar to `dragged` and `dragged_by` ([#2507](https://github.com/emilk/egui/pull/2507)). +* Add `PointerState::*_pressed` to check if the given button was pressed in this frame ([#2507](https://github.com/emilk/egui/pull/2507)). +* `Event::Key` now has a `repeat` field that is set to `true` if the event was the result of a key-repeat ([#2435](https://github.com/emilk/egui/pull/2435)). +* Add `Slider::drag_value_speed`, which lets you ask for finer precision when dragging the slider value rather than the actual slider. +* Add `Memory::any_popup_open`, which returns true if any popup is currently open ([#2464](https://github.com/emilk/egui/pull/2464)). +* Add `Plot::clamp_grid` to only show grid where there is data ([#2480](https://github.com/emilk/egui/pull/2480)). +* Add `ScrollArea::drag_to_scroll` if you want to turn off that feature. +* Add `Response::on_hover_and_drag_cursor`. +* Add `Window::default_open` ([#2539](https://github.com/emilk/egui/pull/2539)). +* Add `ProgressBar::fill` if you want to set the fill color manually. ([#2618](https://github.com/emilk/egui/pull/2618)). +* Add `Button::rounding` to enable round buttons ([#2616](https://github.com/emilk/egui/pull/2616)). +* Add `WidgetVisuals::optional_bg_color` - set it to `Color32::TRANSPARENT` to hide button backgrounds ([#2621](https://github.com/emilk/egui/pull/2621)). +* Add `Context::screen_rect` and `Context::set_cursor_icon` ([#2625](https://github.com/emilk/egui/pull/2625)). +* You can turn off the vertical line left of indented regions with `Visuals::indent_has_left_vline` ([#2636](https://github.com/emilk/egui/pull/2636)). +* Add `Response.highlight` to highlight a widget ([#2632](https://github.com/emilk/egui/pull/2632)). +* Add `Separator::grow` and `Separator::shrink` ([#2665](https://github.com/emilk/egui/pull/2665)). +* Add `Slider::trailing_fill` for trailing color behind the circle like a `ProgressBar` ([#2660](https://github.com/emilk/egui/pull/2660)). + +### Changed 🔧 +* Improved plot grid appearance ([#2412](https://github.com/emilk/egui/pull/2412)). +* Improved the algorithm for picking the number of decimals to show when hovering values in the `Plot`. +* Default `ComboBox` is now controlled with `Spacing::combo_width` ([#2621](https://github.com/emilk/egui/pull/2621)). +* `DragValue` and `Slider` now use the proportional font ([#2638](https://github.com/emilk/egui/pull/2638)). +* `ScrollArea` is less aggressive about clipping its contents ([#2665](https://github.com/emilk/egui/pull/2665)). +* Updated to be compatible with a major breaking change in AccessKit that drastically reduces memory usage when accessibility is enabled ([#2678](https://github.com/emilk/egui/pull/2678)). +* Improve `DragValue` behavior ([#2649](https://github.com/emilk/egui/pull/2649), [#2650](https://github.com/emilk/egui/pull/2650), [#2688](https://github.com/emilk/egui/pull/2688), [#2638](https://github.com/emilk/egui/pull/2638)). + +### Fixed 🐛 +* Trigger `PointerEvent::Released` for drags ([#2507](https://github.com/emilk/egui/pull/2507)). +* Expose `TextEdit`'s multiline flag to AccessKit ([#2448](https://github.com/emilk/egui/pull/2448)). +* Don't render `\r` (Carriage Return) ([#2452](https://github.com/emilk/egui/pull/2452)). +* The `button_padding` style option works closer as expected with image+text buttons now ([#2510](https://github.com/emilk/egui/pull/2510)). +* Menus are now moved to fit on the screen. +* Fix `Window::pivot` causing windows to move around ([#2694](https://github.com/emilk/egui/pull/2694)). + + +## 0.20.1 - 2022-12-11 - Fix key-repeat +### Changed 🔧 +* `InputState`: all press functions again include key repeats (like in egui 0.19) ([#2429](https://github.com/emilk/egui/pull/2429)). +* Improve the look of thin white lines ([#2437](https://github.com/emilk/egui/pull/2437)). + +### Fixed 🐛 +* Fix key-repeats for `TextEdit`, `Slider`s, etc ([#2429](https://github.com/emilk/egui/pull/2429)). + + +## 0.20.0 - 2022-12-08 - AccessKit, prettier text, overlapping widgets +* MSRV (Minimum Supported Rust Version) is now `1.65.0` ([#2314](https://github.com/emilk/egui/pull/2314)). +* ⚠️ BREAKING: egui now expects integrations to do all color blending in gamma space ([#2071](https://github.com/emilk/egui/pull/2071)). +* ⚠️ BREAKING: if you have overlapping interactive widgets, only the top widget (last added) will be interactive ([#2244](https://github.com/emilk/egui/pull/2244)). + +### Added ⭐ +* Added helper functions for animating panels that collapse/expand ([#2190](https://github.com/emilk/egui/pull/2190)). +* Added `Context::os/Context::set_os` to query/set what operating system egui believes it is running on ([#2202](https://github.com/emilk/egui/pull/2202)). +* Added `Button::shortcut_text` for showing keyboard shortcuts in menu buttons ([#2202](https://github.com/emilk/egui/pull/2202)). +* Added `egui::KeyboardShortcut` for showing keyboard shortcuts in menu buttons ([#2202](https://github.com/emilk/egui/pull/2202)). +* Texture loading now takes a `TexureOptions` with minification and magnification filters ([#2224](https://github.com/emilk/egui/pull/2224)). +* Added `Key::Minus` and `Key::Equals` ([#2239](https://github.com/emilk/egui/pull/2239)). +* Added `egui::gui_zoom` module with helpers for scaling the whole GUI of an app ([#2239](https://github.com/emilk/egui/pull/2239)). +* You can now put one interactive widget on top of another, and only one will get interaction at a time ([#2244](https://github.com/emilk/egui/pull/2244)). +* Added `spacing.menu_margin` for customizing menu spacing ([#2036](https://github.com/emilk/egui/pull/2036)) +* Added possibility to enable text wrap for the selected text of `egui::ComboBox` ([#2272](https://github.com/emilk/egui/pull/2272)) +* Added `Area::constrain` and `Window::constrain` which constrains area to the screen bounds ([#2270](https://github.com/emilk/egui/pull/2270)). +* Added `Area::pivot` and `Window::pivot` which controls what part of the window to position ([#2303](https://github.com/emilk/egui/pull/2303)). +* Added support for [thin space](https://en.wikipedia.org/wiki/Thin_space). +* Added optional integration with [AccessKit](https://accesskit.dev/) for implementing platform accessibility APIs ([#2294](https://github.com/emilk/egui/pull/2294)). +* Added `panel_fill`, `window_fill` and `window_stroke` to `Visuals` for your theming pleasure ([#2406](https://github.com/emilk/egui/pull/2406)). +* Plots: + * Allow linking plot cursors ([#1722](https://github.com/emilk/egui/pull/1722)). + * Added `Plot::auto_bounds_x/y` and `Plot::reset` ([#2029](https://github.com/emilk/egui/pull/2029)). + * Added `PlotUi::translate_bounds` ([#2145](https://github.com/emilk/egui/pull/2145)). + * Added `PlotUi::set_plot_bounds` ([#2320](https://github.com/emilk/egui/pull/2320)). + * Added `PlotUi::plot_secondary_clicked` ([#2318](https://github.com/emilk/egui/pull/2318)). + +### Changed 🔧 +* Panels always have a separator line, but no stroke on other sides. Their spacing has also changed slightly ([#2261](https://github.com/emilk/egui/pull/2261)). +* Tooltips are only shown when mouse pointer is still ([#2263](https://github.com/emilk/egui/pull/2263)). +* Make it slightly easier to click buttons ([#2304](https://github.com/emilk/egui/pull/2304)). +* `egui::color` has been renamed `egui::ecolor` ([#2399](https://github.com/emilk/egui/pull/2399)). + +### Fixed 🐛 +* ⚠️ BREAKING: Fix text being too small ([#2069](https://github.com/emilk/egui/pull/2069)). +* Improve mixed CJK/Latin line-breaking ([#1986](https://github.com/emilk/egui/pull/1986)). +* Improved text rendering ([#2071](https://github.com/emilk/egui/pull/2071)). +* Constrain menu popups to the screen ([#2191](https://github.com/emilk/egui/pull/2191)). +* Less jitter when calling `Context::set_pixels_per_point` ([#2239](https://github.com/emilk/egui/pull/2239)). +* Fixed popups and color edit going outside the screen. +* Fixed keyboard support in `DragValue` ([#2342](https://github.com/emilk/egui/pull/2342)). +* If you nest `ScrollAreas` inside each other, the inner area will now move its scroll bar so it is always visible ([#2371](https://github.com/emilk/egui/pull/2371)). +* Ignore key-repeats for `input.key_pressed` ([#2334](https://github.com/emilk/egui/pull/2334), [#2389](https://github.com/emilk/egui/pull/2389)). +* Fixed issue with calling `set_pixels_per_point` each frame ([#2352](https://github.com/emilk/egui/pull/2352)). +* Fix bug in `ScrollArea::show_rows` ([#2258](https://github.com/emilk/egui/pull/2258)). +* Fix bug in `plot::Line::fill` ([#2275](https://github.com/emilk/egui/pull/2275)). +* Only emit `changed` events in `radio_value` and `selectable_value` if the value actually changed ([#2343](https://github.com/emilk/egui/pull/2343)). +* Fixed sizing bug in `Grid` ([#2384](https://github.com/emilk/egui/pull/2384)). +* `ComboBox::width` now correctly sets the outer width ([#2406](https://github.com/emilk/egui/pull/2406)). + + +## 0.19.0 - 2022-08-20 +### Added ⭐ +* Added `*_released` & `*_clicked` methods for `PointerState` ([#1582](https://github.com/emilk/egui/pull/1582)). +* Added `PointerButton::Extra1` and `PointerButton::Extra2` ([#1592](https://github.com/emilk/egui/pull/1592)). +* Added `egui::hex_color!` to create `Color32`'s from hex strings under the `color-hex` feature ([#1596](https://github.com/emilk/egui/pull/1596)). +* Optimized painting of filled circles (e.g. for scatter plots) by 10x or more ([#1616](https://github.com/emilk/egui/pull/1616)). +* Added opt-in feature `deadlock_detection` to detect double-lock of mutexes on the same thread ([#1619](https://github.com/emilk/egui/pull/1619)). +* Added `InputState::stable_dt`: a more stable estimate for the delta-time in reactive mode ([#1625](https://github.com/emilk/egui/pull/1625)). +* You can now specify a texture filter for your textures ([#1636](https://github.com/emilk/egui/pull/1636)). +* Added functions keys in `egui::Key` ([#1665](https://github.com/emilk/egui/pull/1665)). +* Added support for using `PaintCallback` shapes with the WGPU backend ([#1684](https://github.com/emilk/egui/pull/1684)). +* Added `Context::request_repaint_after` ([#1694](https://github.com/emilk/egui/pull/1694)). +* `ctrl-h` now acts like backspace in `TextEdit` ([#1812](https://github.com/emilk/egui/pull/1812)). +* Added `custom_formatter` method for `Slider` and `DragValue` ([#1851](https://github.com/emilk/egui/issues/1851)). +* Added `RawInput::has_focus` which backends can set to indicate whether the UI as a whole has the keyboard focus ([#1859](https://github.com/emilk/egui/pull/1859)). +* Added `PointerState::button_double_clicked()` and `PointerState::button_triple_clicked()` ([#1906](https://github.com/emilk/egui/issues/1906)). +* Added `custom_formatter`, `binary`, `octal`, and `hexadecimal` to `DragValue` and `Slider` ([#1953](https://github.com/emilk/egui/issues/1953)) + +### Changed 🔧 +* MSRV (Minimum Supported Rust Version) is now `1.61.0` ([#1846](https://github.com/emilk/egui/pull/1846)). +* `PaintCallback` shapes now require the whole callback to be put in an `Arc` with the value being a backend-specific callback type ([#1684](https://github.com/emilk/egui/pull/1684)). +* Replaced `needs_repaint` in `FullOutput` with `repaint_after`. Used to force repaint after the set duration in reactive mode ([#1694](https://github.com/emilk/egui/pull/1694)). +* `Layout::left_to_right` and `Layout::right_to_left` now takes the vertical align as an argument. Previous default was `Align::Center`. +* Improved ergonomics of adding plot items. All plot items that take a series of 2D coordinates can now be created directly from `Vec<[f64; 2]>`. The `Value` and `Values` types were removed in favor of `PlotPoint` and `PlotPoints` respectively ([#1816](https://github.com/emilk/egui/pull/1816)). +* `TextBuffer` no longer needs to implement `AsRef` ([#1824](https://github.com/emilk/egui/pull/1824)). + +### Fixed 🐛 +* Fixed `Response::changed` for `ui.toggle_value` ([#1573](https://github.com/emilk/egui/pull/1573)). +* Fixed `ImageButton`'s changing background padding on hover ([#1595](https://github.com/emilk/egui/pull/1595)). +* Fixed `Plot` auto-bounds bug ([#1599](https://github.com/emilk/egui/pull/1599)). +* Fixed dead-lock when alt-tabbing while also showing a tooltip ([#1618](https://github.com/emilk/egui/pull/1618)). +* Fixed `ScrollArea` scrolling when editing an unrelated `TextEdit` ([#1779](https://github.com/emilk/egui/pull/1779)). +* Fixed `Slider` not always generating events on change ([#1854](https://github.com/emilk/egui/pull/1854)). +* Fixed jitter of anchored windows for the first frame ([#1856](https://github.com/emilk/egui/pull/1856)). +* Fixed focus behavior when pressing Tab in a UI with no focused widget ([#1861](https://github.com/emilk/egui/pull/1861)). +* Fixed automatic plot bounds ([#1865](https://github.com/emilk/egui/pull/1865)). + + +## 0.18.1 - 2022-05-01 +* Change `Shape::Callback` from `&dyn Any` to `&mut dyn Any` to support more backends. + + +## 0.18.0 - 2022-04-30 + +### Added ⭐ +* Added `Shape::Callback` for backend-specific painting, [with an example](https://github.com/emilk/egui/tree/master/examples/custom_3d_glow) ([#1351](https://github.com/emilk/egui/pull/1351)). +* Added `Frame::canvas` ([#1362](https://github.com/emilk/egui/pull/1362)). +* `Context::request_repaint` will now wake up UI thread, if integrations has called `Context::set_request_repaint_callback` ([#1366](https://github.com/emilk/egui/pull/1366)). +* Added `Plot::allow_scroll`, `Plot::allow_zoom` no longer affects scrolling ([#1382](https://github.com/emilk/egui/pull/1382)). +* Added `Ui::push_id` to resolve id clashes ([#1374](https://github.com/emilk/egui/pull/1374)). +* Added `ComboBox::icon` ([#1405](https://github.com/emilk/egui/pull/1405)). +* Added `Ui::scroll_with_delta`. +* Added `Frame::outer_margin`. +* Added `Painter::hline` and `Painter::vline`. +* Added `Link` and `ui.link` ([#1506](https://github.com/emilk/egui/pull/1506)). +* Added triple-click support; triple-clicking a TextEdit field will select the whole paragraph ([#1512](https://github.com/emilk/egui/pull/1512)). +* Added `Plot::x_grid_spacer` and `Plot::y_grid_spacer` for custom grid spacing ([#1180](https://github.com/emilk/egui/pull/1180)). +* Added `Ui::spinner()` shortcut method ([#1494](https://github.com/emilk/egui/pull/1494)). +* Added `CursorIcon`s for resizing columns, rows, and the eight cardinal directions. +* Added `Ui::toggle_value`. +* Added ability to add any widgets to the header of a collapsing region ([#1538](https://github.com/emilk/egui/pull/1538)). + +### Changed 🔧 +* MSRV (Minimum Supported Rust Version) is now `1.60.0` ([#1467](https://github.com/emilk/egui/pull/1467)). +* `ClippedMesh` has been replaced with `ClippedPrimitive` ([#1351](https://github.com/emilk/egui/pull/1351)). +* Renamed `Frame::margin` to `Frame::inner_margin`. +* Renamed `AlphaImage` to `FontImage` to discourage any other use for it ([#1412](https://github.com/emilk/egui/pull/1412)). +* Warnings will be painted on screen when there is an `Id` clash for `Grid`, `Plot` or `ScrollArea` ([#1452](https://github.com/emilk/egui/pull/1452)). +* `Checkbox` and `RadioButton` with an empty label (`""`) will now take up much less space ([#1456](https://github.com/emilk/egui/pull/1456)). +* Replaced `Memory::top_most_layer` with more flexible `Memory::layer_ids`. +* Renamed the feature `convert_bytemuck` to `bytemuck` ([#1467](https://github.com/emilk/egui/pull/1467)). +* Renamed the feature `serialize` to `serde` ([#1467](https://github.com/emilk/egui/pull/1467)). +* Renamed `Painter::sub_region` to `Painter::with_clip_rect`. + +### Fixed 🐛 +* Fixed `ComboBox`es always being rendered left-aligned ([#1304](https://github.com/emilk/egui/pull/1304)). +* Fixed ui code that could lead to a deadlock ([#1380](https://github.com/emilk/egui/pull/1380)). +* Text is darker and more readable in bright mode ([#1412](https://github.com/emilk/egui/pull/1412)). +* Fixed a lot of broken/missing doclinks ([#1419](https://github.com/emilk/egui/pull/1419)). +* Fixed `Ui::add_visible` sometimes leaving the `Ui` in a disabled state ([#1436](https://github.com/emilk/egui/issues/1436)). +* Added line breaking rules for Japanese text ([#1498](https://github.com/emilk/egui/pull/1498)). + +### Deprecated ☢️ +* Deprecated `CollapsingHeader::selectable` ([#1538](https://github.com/emilk/egui/pull/1538)). + +### Removed 🔥 +* Removed the `single_threaded/multi_threaded` flags - egui is now always thread-safe ([#1390](https://github.com/emilk/egui/pull/1390)). + +### Contributors 🙏 +* [4JX](https://github.com/4JX) +* [AlexxxRu](https://github.com/AlexxxRu) +* [ascclemens](https://github.com/ascclemens) +* [awaken1ng](https://github.com/awaken1ng) +* [bigfarts](https://github.com/bigfarts) +* [bobyclaws](https://github.com/bobyclaws) +* [Bromeon](https://github.com/Bromeon) +* [cloudhead](https://github.com/cloudhead) +* [collin-kemper](https://github.com/collin-kemper) +* [cpterry](https://github.com/cpterry) +* [dbuch](https://github.com/dbuch) +* [DusterTheFirst](https://github.com/DusterTheFirst) +* [Edgeworth ](https://github.com/Edgeworth ) +* [elwerene](https://github.com/elwerene) +* [follower](https://github.com/follower) +* [Friz64](https://github.com/Friz64) +* [Hunter522 ](https://github.com/Hunter522 ) +* [Jake-Shadle](https://github.com/Jake-Shadle) +* [jean-airoldie ](https://github.com/jean-airoldie ) +* [JelNiSlaw](https://github.com/JelNiSlaw) +* [juancampa](https://github.com/juancampa) +* [LU15W1R7H](https://github.com/LU15W1R7H) +* [mbillingr](https://github.com/mbillingr) +* [nicklasmoeller](https://github.com/nicklasmoeller) +* [rukai](https://github.com/rukai) +* [tami5](https://github.com/tami5) +* [Titaniumtown](https://github.com/Titaniumtown) +* [trevyn](https://github.com/trevyn) +* [waynr](https://github.com/waynr) +* [zam-5 ](https://github.com/zam-5 ) + + +## 0.17.0 - 2022-02-22 - Improved font selection and image handling + +### Added ⭐ +* Much improved font selection ([#1154](https://github.com/emilk/egui/pull/1154)): + * You can now select any font size and family using `RichText::size` amd `RichText::family` and the new `FontId`. + * Easily change text styles with `Style::text_styles`. + * Added `Ui::text_style_height`. + * Added `TextStyle::resolve`. + * Made the v-align and scale of user fonts tweakable ([#1241](https://github.com/emilk/egui/pull/1027)). +* Plot: + * Added `Plot::x_axis_formatter` and `Plot::y_axis_formatter` for custom axis labels ([#1130](https://github.com/emilk/egui/pull/1130)). + * Added `Plot::allow_boxed_zoom()`, `Plot::boxed_zoom_pointer()` for boxed zooming on plots ([#1188](https://github.com/emilk/egui/pull/1188)). + * Added plot pointer coordinates with `Plot::coordinates_formatter` ([#1235](https://github.com/emilk/egui/pull/1235)). + * Added linked axis support for plots via `plot::LinkedAxisGroup` ([#1184](https://github.com/emilk/egui/pull/1184)). +* `Context::load_texture` to convert an image into a texture which can be displayed using e.g. `ui.image(texture, size)` ([#1110](https://github.com/emilk/egui/pull/1110)). +* `Ui::input_mut` to modify how subsequent widgets see the `InputState` and a convenience method `InputState::consume_key` for shortcuts or hotkeys ([#1212](https://github.com/emilk/egui/pull/1212)). +* Added `Ui::add_visible` and `Ui::add_visible_ui`. +* Added `CollapsingHeader::icon` to override the default open/close icon using a custom function. ([1147](https://github.com/emilk/egui/pull/1147)). +* Added `ui.data()`, `ctx.data()`, `ctx.options()` and `ctx.tessellation_options()` ([#1175](https://github.com/emilk/egui/pull/1175)). +* Added `Response::on_hover_text_at_pointer` as a convenience akin to `Response::on_hover_text` ([1179](https://github.com/emilk/egui/pull/1179)). +* Opt-in dependency on `tracing` crate for logging warnings ([#1192](https://github.com/emilk/egui/pull/1192)). +* Added `ui.weak(text)`. +* Added `Slider::step_by` ([1225](https://github.com/emilk/egui/pull/1225)). +* Added `Context::move_to_top` and `Context::top_most_layer` for managing the layer on the top ([#1242](https://github.com/emilk/egui/pull/1242)). +* Support a subset of macOS' emacs input field keybindings in `TextEdit` ([#1243](https://github.com/emilk/egui/pull/1243)). +* Added ability to scroll an UI into view without specifying an alignment ([1247](https://github.com/emilk/egui/pull/1247)). +* Added `Ui::scroll_to_rect` ([1252](https://github.com/emilk/egui/pull/1252)). + +### Changed 🔧 +* ⚠️ `Context::input` and `Ui::input` now locks a mutex. This can lead to a dead-lock is used in an `if let` binding! + * `if let Some(pos) = ui.input().pointer.latest_pos()` and similar must now be rewritten on two lines. + * Search for this problem in your code using the regex `if let .*input`. +* Better contrast in the default light mode style ([#1238](https://github.com/emilk/egui/pull/1238)). +* Renamed `CtxRef` to `Context` ([#1050](https://github.com/emilk/egui/pull/1050)). +* `Context` can now be cloned and stored between frames ([#1050](https://github.com/emilk/egui/pull/1050)). +* Renamed `Ui::visible` to `Ui::is_visible`. +* Split `Event::Text` into `Event::Text` and `Event::Paste` ([#1058](https://github.com/emilk/egui/pull/1058)). +* Replaced `Style::body_text_style` with more generic `Style::text_styles` ([#1154](https://github.com/emilk/egui/pull/1154)). +* `TextStyle` is no longer `Copy` ([#1154](https://github.com/emilk/egui/pull/1154)). +* Replaced `TextEdit::text_style` with `TextEdit::font` ([#1154](https://github.com/emilk/egui/pull/1154)). +* `Plot::highlight` now takes a `bool` argument ([#1159](https://github.com/emilk/egui/pull/1159)). +* `ScrollArea::show` now returns a `ScrollAreaOutput`, so you might need to add `.inner` after the call to it ([#1166](https://github.com/emilk/egui/pull/1166)). +* Replaced `corner_radius: f32` with `rounding: Rounding`, allowing per-corner rounding settings ([#1206](https://github.com/emilk/egui/pull/1206)). +* Replaced Frame's `margin: Vec2` with `margin: Margin`, allowing for different margins on opposing sides ([#1219](https://github.com/emilk/egui/pull/1219)). +* Renamed `Plot::custom_label_func` to `Plot::label_formatter` ([#1235](https://github.com/emilk/egui/pull/1235)). +* `Areas::layer_id_at` ignores non-interatable layers (i.e. Tooltips) ([#1240](https://github.com/emilk/egui/pull/1240)). +* `ScrollArea`s will not shrink below a certain minimum size, set by `min_scrolled_width/min_scrolled_height` ([1255](https://github.com/emilk/egui/pull/1255)). +* For integrations: + * `Output` has now been renamed `PlatformOutput` and `Context::run` now returns the new `FullOutput` ([#1292](https://github.com/emilk/egui/pull/1292)). + * `FontImage` has been replaced by `TexturesDelta` (found in `FullOutput`), describing what textures were loaded and freed each frame ([#1110](https://github.com/emilk/egui/pull/1110)). + * The painter must support partial texture updates ([#1149](https://github.com/emilk/egui/pull/1149)). + * Added `RawInput::max_texture_side` which should be filled in with e.g. `GL_MAX_TEXTURE_SIZE` ([#1154](https://github.com/emilk/egui/pull/1154)). + +### Fixed 🐛 +* Plot `Orientation` was not public, although fields using this type were ([#1130](https://github.com/emilk/egui/pull/1130)). +* Context menus now respects the theme ([#1043](https://github.com/emilk/egui/pull/1043)). +* Calling `Context::set_pixels_per_point` before the first frame will now work. +* Tooltips that don't fit the window don't flicker anymore ([#1240](https://github.com/emilk/egui/pull/1240)). +* Scroll areas now follow text cursor ([#1252](https://github.com/emilk/egui/pull/1252)). +* Slider: correctly respond with drag and focus events when interacting with the value directly ([1270](https://github.com/emilk/egui/pull/1270)). + +### Contributors 🙏 +* [4JX](https://github.com/4JX) +* [55nknown](https://github.com/55nknown) +* [AlanRace](https://github.com/AlanRace) +* [AlexxxRu](https://github.com/AlexxxRu) +* [awaken1ng](https://github.com/awaken1ng) +* [BctfN0HUK7Yg](https://github.com/BctfN0HUK7Yg) +* [Bromeon](https://github.com/Bromeon) +* [cat-state](https://github.com/cat) +* [danielkeller](https://github.com/danielkeller) +* [dvec](https://github.com/dvec) +* [Friz64](https://github.com/Friz64) +* [Gordon01](https://github.com/Gordon01) +* [HackerFoo](https://github.com/HackerFoo) +* [juancampa](https://github.com/juancampa) +* [justinj](https://github.com/justinj) +* [lampsitter](https://github.com/lampsitter) +* [LordMZTE](https://github.com/LordMZTE) +* [manuel-i](https://github.com/manuel) +* [Mingun](https://github.com/Mingun) +* [niklaskorz](https://github.com/niklaskorz) +* [nongiach](https://github.com/nongiach) +* [parasyte](https://github.com/parasyte) +* [psiphi75](https://github.com/psiphi75) +* [s-nie](https://github.com/s) +* [t18b219k](https://github.com/t18b219k) +* [terhechte](https://github.com/terhechte) +* [xudesheng](https://github.com/xudesheng) +* [yusdacra](https://github.com/yusdacra) + + +## 0.16.1 - 2021-12-31 - Add back `CtxRef::begin_frame,end_frame` + +### Added ⭐ +* Added back `CtxRef::begin_frame,end_frame` as an alternative to `CtxRef::run`. + + +## 0.16.0 - 2021-12-29 - Context menus and rich text + +### Added ⭐ +* Added context menus: See `Ui::menu_button` and `Response::context_menu` ([#543](https://github.com/emilk/egui/pull/543)). +* Most widgets containing text (`Label`, `Button` etc) now supports rich text ([#855](https://github.com/emilk/egui/pull/855)). +* Plots: + * Added bar charts and box plots ([#863](https://github.com/emilk/egui/pull/863)). + * You can now query information about the plot (e.g. get the mouse position in plot coordinates, or the plot + bounds) while adding items. `Plot` ([#766](https://github.com/emilk/egui/pull/766) and + [#892](https://github.com/emilk/egui/pull/892)). +* You can now read and write the cursor of a `TextEdit` ([#848](https://github.com/emilk/egui/pull/848)). +* When using a custom font you can now specify a font index ([#873](https://github.com/emilk/egui/pull/873)). +* Added vertical sliders with `Slider::new(…).vertical()` ([#875](https://github.com/emilk/egui/pull/875)). +* Added `Button::image_and_text` ([#832](https://github.com/emilk/egui/pull/832)). +* Added `CollapsingHeader::open` to control if it is open or collapsed ([#1006](https://github.com/emilk/egui/pull/1006)). +* Added `egui::widgets::color_picker::color_picker_color32` to show the color picker. + +### Changed 🔧 +* MSRV (Minimum Supported Rust Version) is now `1.56.0`. +* `ui.add(Button::new("…").text_color(…))` is now `ui.button(RichText::new("…").color(…))` (same for `Label` )([#855](https://github.com/emilk/egui/pull/855)). +* Plots now provide a `show` method that has to be used to add items to and show the plot ([#766](https://github.com/emilk/egui/pull/766)). +* `menu::menu(ui, ...)` is now `ui.menu_button(...)` ([#543](https://github.com/emilk/egui/pull/543)) +* Replaced `CtxRef::begin_frame` and `end_frame` with `CtxRef::run` ([#872](https://github.com/emilk/egui/pull/872)). +* Replaced `scroll_delta` and `zoom_delta` in `RawInput` with `Event::Scroll` and `Event::Zoom`. +* Unified the four `Memory` data buckets (`data`, `data_temp`, `id_data` and `id_data_temp`) into a single `Memory::data`, with a new interface ([#836](https://github.com/emilk/egui/pull/836)). +* Replaced `Ui::__test` with `egui::__run_test_ui` ([#872](https://github.com/emilk/egui/pull/872)). + +### Fixed 🐛 +* Fixed `ComboBox` and other popups getting clipped to parent window ([#885](https://github.com/emilk/egui/pull/885)). +* The color picker is now better at keeping the same hue even when saturation goes to zero ([#886](https://github.com/emilk/egui/pull/886)). + +### Removed 🔥 +* Removed `egui::math` (use `egui::emath` instead). +* Removed `egui::paint` (use `egui::epaint` instead). + +### Contributors 🙏 +* [5225225](https://github.com/5225225): [#849](https://github.com/emilk/egui/pull/849). +* [aevyrie](https://github.com/aevyrie): [#966](https://github.com/emilk/egui/pull/966). +* [B-Reif](https://github.com/B-Reif): [#875](https://github.com/emilk/egui/pull/875). +* [Bromeon](https://github.com/Bromeon): [#863](https://github.com/emilk/egui/pull/863), [#918](https://github.com/emilk/egui/pull/918). +* [d10sfan](https://github.com/d10sfan): [#832](https://github.com/emilk/egui/pull/832). +* [EmbersArc](https://github.com/EmbersArc): [#766](https://github.com/emilk/egui/pull/766), [#892](https://github.com/emilk/egui/pull/892). +* [Hperigo](https://github.com/Hperigo): [#905](https://github.com/emilk/egui/pull/905). +* [isegal](https://github.com/isegal): [#934](https://github.com/emilk/egui/pull/934). +* [mankinskin](https://github.com/mankinskin): [#543](https://github.com/emilk/egui/pull/543). +* [niladic](https://github.com/niladic): [#499](https://github.com/emilk/egui/pull/499), [#863](https://github.com/emilk/egui/pull/863). +* [singalen](https://github.com/singalen): [#973](https://github.com/emilk/egui/pull/973). +* [sumibi-yakitori](https://github.com/sumibi-yakitori): [#830](https://github.com/emilk/egui/pull/830), [#870](https://github.com/emilk/egui/pull/870). +* [t18b219k](https://github.com/t18b219k): [#868](https://github.com/emilk/egui/pull/868), [#888](https://github.com/emilk/egui/pull/888). + + +## 0.15.0 - 2021-10-24 - Syntax highlighting and hscroll + + + +### Added ⭐ +* Added horizontal scrolling support to `ScrollArea` and `Window` (opt-in). +* `TextEdit::layouter`: Add custom text layout for e.g. syntax highlighting or WYSIWYG. +* `Fonts::layout_job`: New text layout engine allowing mixing fonts, colors and styles, with underlining and strikethrough. +* Added `ui.add_enabled(bool, widget)` to easily add a possibly disabled widget. +* Added `ui.add_enabled_ui(bool, |ui| …)` to create a possibly disabled UI section. +* Added feature `"serialize"` separately from `"persistence"`. +* Added `egui::widgets::global_dark_light_mode_buttons` to easily add buttons for switching the egui theme. +* `TextEdit` can now be used to show text which can be selected and copied, but not edited. +* Added `Memory::caches` for caching things from one frame to the next. + +### Changed 🔧 +* Change the default monospace font to [Hack](https://github.com/source-foundry/Hack). +* Label text will now be centered, right-aligned and/or justified based on the layout of the `Ui` it is in. +* `Hyperlink` will now word-wrap just like a `Label`. +* All `Ui`s must now have a finite `max_rect`. + * Deprecated: `max_rect_finite`, `available_size_before_wrap_finite` and `available_rect_before_wrap_finite`. +* `Painter`/`Fonts`: text layout now expect a color when creating a `Galley`. You may override that color with `Painter::galley_with_color`. +* MSRV (Minimum Supported Rust Version) is now `1.54.0`. +* By default, `DragValue`s no longer show a tooltip when hovered. Change with `Style::explanation_tooltips`. +* Smaller and nicer color picker. +* `ScrollArea` will auto-shrink to content size unless told otherwise using `ScrollArea::auto_shrink`. +* By default, `Slider`'s `clamp_to_range` is set to true. +* Renamed `TextEdit::enabled` to `TextEdit::interactive`. +* `ui.label` (and friends) now take `impl ToString` as argument instead of `impl Into