From 6c79e3c802cb982e99fd07e2a0a1d8ba4b185003 Mon Sep 17 00:00:00 2001 From: widberg Date: Mon, 27 Nov 2023 15:40:43 -0500 Subject: [PATCH] Closer to wasm32 bff-gui --- Cargo.lock | 234 +++++++++++++++++++++++-------------- bff-gui/.cargo/config.toml | 4 +- bff-gui/Cargo.toml | 11 +- bff-gui/src/main.rs | 1 + justfile | 3 + 5 files changed, 159 insertions(+), 94 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 70b4c94..ab9160c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -290,12 +290,6 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d62b7694a562cdf5a74227903507c56ab2cc8bdd1f781ed5cb4cf9c9f810bfc" -[[package]] -name = "arrayref" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" - [[package]] name = "arrayvec" version = "0.7.4" @@ -459,6 +453,12 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +[[package]] +name = "atomic_refcell" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41e67cd8309bbd06cd603a9e693a784ac2e5d1e955f11286e355089fcab3047c" + [[package]] name = "atspi" version = "0.10.1" @@ -507,6 +507,12 @@ dependencies = [ "rustc-demangle", ] +[[package]] +name = "base64" +version = "0.21.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" + [[package]] name = "bff" version = "0.1.0" @@ -561,7 +567,7 @@ dependencies = [ "bff", "derive_more", "eframe", - "egui", + "egui 0.23.0", "egui_extras", "hound", "image", @@ -658,6 +664,9 @@ name = "bitflags" version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +dependencies = [ + "serde", +] [[package]] name = "block" @@ -1239,6 +1248,27 @@ dependencies = [ "crypto-common", ] +[[package]] +name = "directories-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + [[package]] name = "dispatch" version = "0.2.0" @@ -1260,6 +1290,15 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +[[package]] +name = "ecolor" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e479a7fa3f23d4e794f8b2f8b3568dd4e47886ad1b12c9c095e141cb591eb63" +dependencies = [ + "bytemuck", +] + [[package]] name = "ecolor" version = "0.23.0" @@ -1278,9 +1317,10 @@ checksum = "26d9efede6c8905d3fc51a5ec9a506d4da4011bbcae0253d0304580fe40af3f5" dependencies = [ "bytemuck", "cocoa", - "egui", + "directories-next", + "egui 0.23.0", "egui-winit", - "egui_glow", + "egui_glow 0.23.0", "glow", "glutin", "glutin-winit", @@ -1291,6 +1331,8 @@ dependencies = [ "parking_lot", "percent-encoding", "raw-window-handle", + "ron", + "serde", "static_assertions", "thiserror", "wasm-bindgen", @@ -1300,6 +1342,17 @@ dependencies = [ "winit", ] +[[package]] +name = "egui" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3aef8ec3ae1b772f340170c65bf27d5b8c28f543a0116c844d2ac08d01123e7" +dependencies = [ + "ahash", + "epaint 0.22.0", + "nohash-hasher", +] + [[package]] name = "egui" version = "0.23.0" @@ -1308,9 +1361,10 @@ checksum = "8bd69fed5fcf4fbb8225b24e80ea6193b61e17a625db105ef0c4d71dde6eb8b7" dependencies = [ "accesskit", "ahash", - "epaint", + "epaint 0.23.0", "log", "nohash-hasher", + "ron", "serde", ] @@ -1322,9 +1376,10 @@ checksum = "c15479a96d9fadccf5dac690bdc6373b97b8e1c0dd28367058f25a5298da0195" dependencies = [ "accesskit_winit", "arboard", - "egui", + "egui 0.23.0", "log", "raw-window-handle", + "serde", "smithay-clipboard", "web-time", "webbrowser", @@ -1337,13 +1392,28 @@ version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68ffe3fe5c00295f91c2a61a74ee271c32f74049c94ba0b1cea8f26eb478bc07" dependencies = [ - "egui", + "egui 0.23.0", "enum-map", "image", "log", "serde", ] +[[package]] +name = "egui_glow" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f8c2752cdf1b0ef5fcda59a898cacabad974d4f5880e92a420b2c917022da64" +dependencies = [ + "bytemuck", + "egui 0.22.0", + "glow", + "log", + "memoffset 0.6.5", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "egui_glow" version = "0.23.0" @@ -1351,7 +1421,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce6726c08798822280038bbad2e32f4fc3cbed800cd51c6e34e99cd2d60cc1bc" dependencies = [ "bytemuck", - "egui", + "egui 0.23.0", "glow", "log", "memoffset 0.6.5", @@ -1365,6 +1435,15 @@ version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +[[package]] +name = "emath" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3857d743a6e0741cdd60b622a74c7a36ea75f5f8f11b793b41d905d2c9721a4b" +dependencies = [ + "bytemuck", +] + [[package]] name = "emath" version = "0.23.0" @@ -1437,6 +1516,22 @@ dependencies = [ "syn 2.0.38", ] +[[package]] +name = "epaint" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09333964d4d57f40a85338ba3ca5ed4716070ab184dcfed966b35491c5c64f3b" +dependencies = [ + "ab_glyph", + "ahash", + "atomic_refcell", + "bytemuck", + "ecolor 0.22.0", + "emath 0.22.0", + "nohash-hasher", + "parking_lot", +] + [[package]] name = "epaint" version = "0.23.0" @@ -1446,8 +1541,8 @@ dependencies = [ "ab_glyph", "ahash", "bytemuck", - "ecolor", - "emath", + "ecolor 0.23.0", + "emath 0.23.0", "log", "nohash-hasher", "parking_lot", @@ -2136,6 +2231,17 @@ version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +[[package]] +name = "libredox" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.1", + "libc", + "redox_syscall 0.4.1", +] + [[package]] name = "libz-ng-sys" version = "1.1.12" @@ -2424,16 +2530,6 @@ dependencies = [ "libm", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "num_enum" version = "0.5.11" @@ -2872,6 +2968,17 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_users" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + [[package]] name = "regex" version = "1.10.2" @@ -2934,6 +3041,18 @@ dependencies = [ "hound", ] +[[package]] +name = "ron" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +dependencies = [ + "base64", + "bitflags 2.4.1", + "serde", + "serde_derive", +] + [[package]] name = "rustc-demangle" version = "0.1.23" @@ -3018,19 +3137,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "sctk-adwaita" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda4e97be1fd174ccc2aae81c8b694e803fa99b34e8fd0f057a9d70698e3ed09" -dependencies = [ - "ab_glyph", - "log", - "memmap2", - "smithay-client-toolkit", - "tiny-skia", -] - [[package]] name = "semver" version = "1.0.20" @@ -3055,17 +3161,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde-wasm-bindgen" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" -dependencies = [ - "js-sys", - "serde", - "wasm-bindgen", -] - [[package]] name = "serde_derive" version = "1.0.189" @@ -3241,12 +3336,6 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" -[[package]] -name = "strict-num" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" - [[package]] name = "strsim" version = "0.10.0" @@ -3334,17 +3423,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f6f7211aef1fce558525f552917f6edfabea873ae02f1bc402b40f2a1dfe4d0" dependencies = [ "cgmath", + "egui_glow 0.22.0", "glow", - "glutin", "instant", - "raw-window-handle", - "serde", - "serde-wasm-bindgen", "thiserror", "three-d-asset", - "wasm-bindgen", - "web-sys", - "winit", ] [[package]] @@ -3390,31 +3473,6 @@ dependencies = [ "time-core", ] -[[package]] -name = "tiny-skia" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8493a203431061e901613751931f047d1971337153f96d0e5e363d6dbf6a67" -dependencies = [ - "arrayref", - "arrayvec", - "bytemuck", - "cfg-if", - "png", - "tiny-skia-path", -] - -[[package]] -name = "tiny-skia-path" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adbfb5d3f3dd57a0e11d12f4f13d4ebbbc1b5c15b7ab0a156d030b21da5f677c" -dependencies = [ - "arrayref", - "bytemuck", - "strict-num", -] - [[package]] name = "tinyvec" version = "1.6.0" @@ -3437,7 +3495,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" dependencies = [ "backtrace", - "num_cpus", "pin-project-lite", ] @@ -4088,7 +4145,6 @@ dependencies = [ "percent-encoding", "raw-window-handle", "redox_syscall 0.3.5", - "sctk-adwaita", "smithay-client-toolkit", "wasm-bindgen", "wayland-client", diff --git a/bff-gui/.cargo/config.toml b/bff-gui/.cargo/config.toml index bac83fe..4c0b812 100644 --- a/bff-gui/.cargo/config.toml +++ b/bff-gui/.cargo/config.toml @@ -2,5 +2,5 @@ # 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"] \ No newline at end of file +[target.wasm32-wasi] +rustflags = ["--cfg=web_sys_unstable_apis"] diff --git a/bff-gui/Cargo.toml b/bff-gui/Cargo.toml index 9b0137f..f325d43 100644 --- a/bff-gui/Cargo.toml +++ b/bff-gui/Cargo.toml @@ -8,7 +8,12 @@ rust-version = "1.72.1" [dependencies] bff = { path = "../bff" } derive_more = "0.99.17" -eframe = "0.23.0" +eframe = { version = "0.23.0", default-features = false, features = [ + "accesskit", # Make egui comptaible with screen readers. NOTE: adds a lot of dependencies. + "default_fonts", # Embed the default egui fonts. + "glow", # Use the glow rendering backend. + "persistence", # Enable restoring app state when restarting the app. +] } egui = "0.23.0" egui_extras = { version = "0.23.0", features = ["image"], default-features = false } hound = "3.5.1" @@ -18,9 +23,9 @@ rfd = "0.12.0" rodio = { version = "0.17.1", features = ["wav"], default-features = false } serde = "1.0.188" serde_json = "1.0.107" -three-d = "0.16.1" +three-d = { version = "0.16.1", default-features = false, features = [ "egui_glow" ] } three-d-asset = "0.6.0" -tokio = { version = "1.33.0", features = ["rt-multi-thread", "time"] } +tokio = { version = "1.33.0", features = ["rt", "time"] } # web: [target.'cfg(target_arch = "wasm32")'.dependencies] diff --git a/bff-gui/src/main.rs b/bff-gui/src/main.rs index 184ffbe..9e6fd89 100644 --- a/bff-gui/src/main.rs +++ b/bff-gui/src/main.rs @@ -128,6 +128,7 @@ impl eframe::App for Gui { fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) { if let Ok(res) = self.rx.try_recv() { if let Some((bf, path)) = res { + #[cfg(not(target_arch = "wasm32"))] frame.set_window_title(format!("{} - {}", TITLE, path.to_string_lossy()).as_str()); self.bigfile = Some(bf); self.bigfile_path = Some(path); diff --git a/justfile b/justfile index aa7cdaf..eb6de3a 100644 --- a/justfile +++ b/justfile @@ -20,6 +20,9 @@ test *TEST: build: cargo build --release +build-wasm: + cmake -E env CC="$WASI_SDK_PATH/bin/clang --sysroot=$WASI_SDK_PATH/share/wasi-sysroot" cargo build --target wasm32-wasi --bin bff-gui + doc: cargo doc