From 10e957beec95f5182d874e1ccd3841436c723646 Mon Sep 17 00:00:00 2001 From: Asteroth Date: Wed, 6 Mar 2024 18:27:00 -0500 Subject: [PATCH] Lots of dependency updates and suppress egui undo (#161) * lots of dependency updates and suppress egui undo * use egui glium's master * bump msrv too * bump again... * >.> * ... * update msrv --- .github/workflows/ci.yml | 2 +- Cargo.lock | 2742 ++++++++++++++++++++++++++++-------- Cargo.toml | 12 +- pof/src/parse.rs | 4 +- pof/src/types.rs | 14 +- pof/src/write.rs | 2 +- src/main.rs | 293 ++-- src/ui.rs | 49 +- src/ui_import.rs | 6 +- src/ui_properties_panel.rs | 151 +- 10 files changed, 2468 insertions(+), 807 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e40c7bb..11cfcb9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: msrv: strategy: matrix: - rust-version: [1.61.0] + rust-version: [1.72.0] runs-on: ubuntu-latest steps: - name: Clone Git repository diff --git a/Cargo.lock b/Cargo.lock index 15bed11..3d8681f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,6 +18,77 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" +[[package]] +name = "accesskit" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cb10ed32c63247e4e39a8f42e8e30fb9442fbf7878c8e4a9849e7e381619bea" + +[[package]] +name = "accesskit_consumer" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c17cca53c09fbd7288667b22a201274b9becaa27f0b91bf52a526db95de45e6" +dependencies = [ + "accesskit", +] + +[[package]] +name = "accesskit_macos" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd3b6ae1eabbfbced10e840fd3fce8a93ae84f174b3e4ba892ab7bcb42e477a7" +dependencies = [ + "accesskit", + "accesskit_consumer", + "objc2 0.3.0-beta.3.patch-leaks.3", + "once_cell", +] + +[[package]] +name = "accesskit_unix" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f46c18d99ba61ad7123dd13eeb0c104436ab6af1df6a1cd8c11054ed394a08" +dependencies = [ + "accesskit", + "accesskit_consumer", + "async-channel", + "async-once-cell", + "atspi", + "futures-lite 1.13.0", + "once_cell", + "serde", + "zbus", +] + +[[package]] +name = "accesskit_windows" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afcae27ec0974fc7c3b0b318783be89fd1b2e66dd702179fe600166a38ff4a0b" +dependencies = [ + "accesskit", + "accesskit_consumer", + "once_cell", + "paste", + "static_assertions", + "windows 0.48.0", +] + +[[package]] +name = "accesskit_winit" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5284218aca17d9e150164428a0ebc7b955f70e3a9a78b4c20894513aabf98a67" +dependencies = [ + "accesskit", + "accesskit_macos", + "accesskit_unix", + "accesskit_windows", + "winit", +] + [[package]] name = "addr2line" version = "0.19.0" @@ -35,16 +106,59 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "8b79b82693f705137f8fb9b37871d99e4f9a7df12b917eed79c3d3954830a60b" dependencies = [ "cfg-if", "getrandom", "once_cell", "version_check", + "zerocopy", ] +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] +name = "android-activity" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289" +dependencies = [ + "android-properties", + "bitflags 2.4.2", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "num_enum", + "thiserror", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -65,9 +179,9 @@ dependencies = [ [[package]] name = "arboard" -version = "2.1.1" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc120354d1b5ec6d7aaf4876b602def75595937b5e15d356eb554ab5177e08bb" +checksum = "1faa3c733d9a3dd6fbaf85da5d162a2e03b2e0033a90dceb0e2a90fdd1e5380a" dependencies = [ "clipboard-win", "log", @@ -76,7 +190,6 @@ dependencies = [ "objc_id", "parking_lot", "thiserror", - "winapi", "x11rb", ] @@ -88,21 +201,255 @@ checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" [[package]] name = "arrayvec" -version = "0.5.2" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] -name = "arrayvec" -version = "0.7.2" +name = "as-raw-xcb-connection" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" [[package]] -name = "atomic_refcell" -version = "0.1.9" +name = "ash" +version = "0.37.3+1.3.251" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "857253367827bd9d0fd973f0ef15506a96e79e41b0ad7aa691203a4e3214f6c8" +checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" +dependencies = [ + "libloading 0.7.4", +] + +[[package]] +name = "async-broadcast" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" +dependencies = [ + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" +dependencies = [ + "concurrent-queue", + "event-listener 5.2.0", + "event-listener-strategy 0.5.0", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" +dependencies = [ + "async-lock 3.3.0", + "async-task", + "concurrent-queue", + "fastrand 2.0.1", + "futures-lite 2.2.0", + "slab", +] + +[[package]] +name = "async-fs" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" +dependencies = [ + "async-lock 2.8.0", + "autocfg", + "blocking", + "futures-lite 1.13.0", +] + +[[package]] +name = "async-io" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +dependencies = [ + "async-lock 2.8.0", + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-lite 1.13.0", + "log", + "parking", + "polling 2.8.0", + "rustix 0.37.27", + "slab", + "socket2", + "waker-fn", +] + +[[package]] +name = "async-io" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f97ab0c5b00a7cdbe5a371b9a782ee7be1316095885c8a4ea1daf490eb0ef65" +dependencies = [ + "async-lock 3.3.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.2.0", + "parking", + "polling 3.5.0", + "rustix 0.38.31", + "slab", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +dependencies = [ + "event-listener 4.0.3", + "event-listener-strategy 0.4.0", + "pin-project-lite", +] + +[[package]] +name = "async-once-cell" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9338790e78aa95a416786ec8389546c4b6a1dfc3dc36071ed9518a9413a542eb" + +[[package]] +name = "async-process" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" +dependencies = [ + "async-io 1.13.0", + "async-lock 2.8.0", + "async-signal", + "blocking", + "cfg-if", + "event-listener 3.1.0", + "futures-lite 1.13.0", + "rustix 0.38.31", + "windows-sys 0.48.0", +] + +[[package]] +name = "async-recursion" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", +] + +[[package]] +name = "async-signal" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" +dependencies = [ + "async-io 2.3.1", + "async-lock 2.8.0", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 0.38.31", + "signal-hook-registry", + "slab", + "windows-sys 0.48.0", +] + +[[package]] +name = "async-task" +version = "4.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" + +[[package]] +name = "async-trait" +version = "0.1.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "atspi" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6059f350ab6f593ea00727b334265c4dfc7fd442ee32d264794bd9bdc68e87ca" +dependencies = [ + "atspi-common", + "atspi-connection", + "atspi-proxies", +] + +[[package]] +name = "atspi-common" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92af95f966d2431f962bc632c2e68eda7777330158bf640c4af4249349b2cdf5" +dependencies = [ + "enumflags2", + "serde", + "static_assertions", + "zbus", + "zbus_names", + "zvariant", +] + +[[package]] +name = "atspi-connection" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c65e7d70f86d4c0e3b2d585d9bf3f979f0b19d635a336725a88d279f76b939" +dependencies = [ + "atspi-common", + "atspi-proxies", + "futures-lite 1.13.0", + "zbus", +] + +[[package]] +name = "atspi-proxies" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6495661273703e7a229356dcbe8c8f38223d697aacfaf0e13590a9ac9977bb52" +dependencies = [ + "atspi-common", + "serde", + "zbus", +] [[package]] name = "autocfg" @@ -131,6 +478,21 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + [[package]] name = "bit_field" version = "0.10.1" @@ -143,12 +505,81 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" + [[package]] name = "block" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-sys" +version = "0.1.0-beta.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" +dependencies = [ + "objc-sys 0.2.0-beta.2", +] + +[[package]] +name = "block-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7" +dependencies = [ + "objc-sys 0.3.2", +] + +[[package]] +name = "block2" +version = "0.2.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" +dependencies = [ + "block-sys 0.1.0-beta.1", + "objc2-encode 2.0.0-pre.2", +] + +[[package]] +name = "block2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" +dependencies = [ + "block-sys 0.2.1", + "objc2 0.4.1", +] + +[[package]] +name = "blocking" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +dependencies = [ + "async-channel", + "async-lock 3.3.0", + "async-task", + "fastrand 2.0.1", + "futures-io", + "futures-lite 2.2.0", + "piper", + "tracing", +] + [[package]] name = "bumpalo" version = "3.12.0" @@ -157,9 +588,9 @@ checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" [[package]] name = "bytemuck" -version = "1.13.0" +version = "1.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c041d3eab048880cb0b86b256447da3f18859a163c3b8d8893f4e6368abe6393" +checksum = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f" dependencies = [ "bytemuck_derive", ] @@ -189,15 +620,28 @@ checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" [[package]] name = "calloop" -version = "0.10.5" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a59225be45a478d772ce015d9743e49e92798ece9e34eda9a6aa2a6a7f40192" +checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" dependencies = [ + "bitflags 2.4.2", "log", - "nix 0.25.1", - "slotmap", + "polling 3.5.0", + "rustix 0.38.31", + "slab", "thiserror", - "vec_map", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" +dependencies = [ + "calloop", + "rustix 0.38.31", + "wayland-backend", + "wayland-client", ] [[package]] @@ -205,6 +649,9 @@ name = "cc" version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +dependencies = [ + "jobserver", +] [[package]] name = "cesu8" @@ -218,6 +665,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + [[package]] name = "cgl" version = "0.3.2" @@ -237,43 +690,48 @@ dependencies = [ "js-sys", "num-integer", "num-traits", - "time", + "time 0.1.45", "wasm-bindgen", "winapi", ] [[package]] name = "clipboard-win" -version = "4.5.0" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362" +checksum = "12f9a0700e0127ba15d1d52dd742097f821cd9c65939303a44d970465040a297" dependencies = [ "error-code", - "str-buf", - "winapi", ] [[package]] -name = "cmake" -version = "0.1.49" +name = "cocoa" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db34956e100b30725f2eb215f90d4871051239535632f84fea3bc92722c66b7c" +checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" dependencies = [ - "cc", + "bitflags 1.3.2", + "block", + "cocoa-foundation", + "core-foundation", + "core-graphics 0.22.3", + "foreign-types 0.3.2", + "libc", + "objc", ] [[package]] name = "cocoa" -version = "0.24.1" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" +checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" dependencies = [ - "bitflags", + "bitflags 1.3.2", "block", "cocoa-foundation", "core-foundation", - "core-graphics", - "foreign-types 0.3.2", + "core-graphics 0.23.1", + "foreign-types 0.5.0", "libc", "objc", ] @@ -284,7 +742,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" dependencies = [ - "bitflags", + "bitflags 1.3.2", "block", "core-foundation", "core-graphics-types", @@ -309,6 +767,37 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" +[[package]] +name = "com" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" +dependencies = [ + "com_macros", +] + +[[package]] +name = "com_macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" +dependencies = [ + "com_macros_support", + "proc-macro2", + "syn 1.0.107", +] + +[[package]] +name = "com_macros_support" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.107", +] + [[package]] name = "combine" version = "4.6.6" @@ -319,6 +808,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "concurrent-queue" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "core-foundation" version = "0.9.3" @@ -341,34 +839,44 @@ version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation", "core-graphics-types", "foreign-types 0.3.2", "libc", ] +[[package]] +name = "core-graphics" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-graphics-types", + "foreign-types 0.5.0", + "libc", +] + [[package]] name = "core-graphics-types" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation", "foreign-types 0.3.2", "libc", ] [[package]] -name = "core-text" -version = "19.2.0" +name = "cpufeatures" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d74ada66e07c1cefa18f8abfba765b486f250de2e4a999e5727fc0dd4b4a25" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ - "core-foundation", - "core-graphics", - "foreign-types 0.3.2", "libc", ] @@ -448,41 +956,34 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "crossfont" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21fd3add36ea31aba1520aa5288714dd63be506106753226d0eb387a93bc9c45" -dependencies = [ - "cocoa", - "core-foundation", - "core-foundation-sys", - "core-graphics", - "core-text", - "dwrote", - "foreign-types 0.5.0", - "freetype-rs", - "libc", - "log", - "objc", - "once_cell", - "pkg-config", - "servo-fontconfig", - "winapi", -] - [[package]] name = "crunchy" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + [[package]] name = "cty" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" +[[package]] +name = "cursor-icon" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" + [[package]] name = "cxx" version = "1.0.90" @@ -541,38 +1042,33 @@ dependencies = [ ] [[package]] -name = "darling" -version = "0.13.4" +name = "deranged" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ - "darling_core", - "darling_macro", + "powerfmt", ] [[package]] -name = "darling_core" -version = "0.13.4" +name = "derivative" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "fnv", - "ident_case", "proc-macro2", "quote", - "strsim", "syn 1.0.107", ] [[package]] -name = "darling_macro" -version = "0.13.4" +name = "digest" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "darling_core", - "quote", - "syn 1.0.107", + "block-buffer", + "crypto-common", ] [[package]] @@ -604,11 +1100,20 @@ checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" [[package]] name = "dlib" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading", + "libloading 0.7.4", +] + +[[package]] +name = "document-features" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef5282ad69563b5fc40319526ba27e0e7363d552a896f0297d54f767717f9b95" +dependencies = [ + "litrs", ] [[package]] @@ -618,94 +1123,124 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" [[package]] -name = "dwrote" -version = "0.11.0" +name = "ecolor" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439a1c2ba5611ad3ed731280541d36d2e9c4ac5e7fb818a27b604bdc5a6aa65b" +checksum = "03cfe80b1890e1a8cdbffc6044d6872e814aaf6011835a2a5e2db0e5c5c4ef4e" dependencies = [ - "lazy_static", - "libc", - "serde", - "serde_derive", - "winapi", - "wio", + "bytemuck", ] [[package]] name = "eframe" -version = "0.19.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0d49426c3e72a6728b0c790d22db8bf7bbcff10d83b8b6f3a01295be982302e" +checksum = "c456c1bb6d13bf68b780257484703d750c70a23ff891ba35f4d6e23a4dbdf26f" dependencies = [ "bytemuck", + "cocoa 0.25.0", + "document-features", "egui", + "egui-wgpu", "egui-winit", "egui_glow", - "getrandom", "glow", "glutin", + "glutin-winit", + "image", "js-sys", + "log", + "objc", + "parking_lot", "percent-encoding", - "tracing", + "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", + "static_assertions", + "thiserror", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", + "web-time", + "winapi", "winit", ] [[package]] name = "egui" -version = "0.19.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc9fcd393c3daaaf5909008a1d948319d538b79c51871e4df0993260260a94e4" +checksum = "180f595432a5b615fc6b74afef3955249b86cfea72607b40740a4cd60d5297d0" dependencies = [ + "accesskit", "ahash", "epaint", + "log", "nohash-hasher", - "tracing", +] + +[[package]] +name = "egui-wgpu" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86f2d75e1e70228e7126f828bac05f9fe0e7ea88e9660c8cebe609bb114c61d4" +dependencies = [ + "bytemuck", + "document-features", + "egui", + "epaint", + "log", + "thiserror", + "type-map", + "web-time", + "wgpu", + "winit", ] [[package]] name = "egui-winit" -version = "0.19.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07ddc525334c416e11580123e147b970f738507f427c9fb1cd09ea2dd7416a3a" +checksum = "aa4d44f8d89f70d4480545eb2346b76ea88c3022e9f4706cebc799dbe8b004a2" dependencies = [ + "accesskit_winit", "arboard", "egui", - "instant", + "log", + "raw-window-handle 0.6.0", "smithay-clipboard", - "tracing", + "web-time", "webbrowser", "winit", ] [[package]] name = "egui_glium" -version = "0.19.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8421e614daed50ef61100fbad8456eb630d099c47c5bbcbacc46485e1e664732" +checksum = "e8dd1e855ebea948a312369feb857b88d48aa84b29f1612d34b91a37a771f098" dependencies = [ "ahash", "bytemuck", "egui", "egui-winit", "glium", + "winit", ] [[package]] name = "egui_glow" -version = "0.19.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad77d4a00402bae9658ee64be148f4b2a0b38e4fc7874970575ca01ed1c5b75d" +checksum = "a08e3be8728b4c59493dbfec041c657e6725bdeafdbd49aef3f1dbb9e551fa01" dependencies = [ "bytemuck", "egui", "glow", - "memoffset 0.6.5", - "tracing", + "log", + "memoffset 0.9.0", "wasm-bindgen", "web-sys", + "winit", ] [[package]] @@ -716,46 +1251,129 @@ checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" [[package]] name = "emath" -version = "0.19.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9542a40106fdba943a055f418d1746a050e1a903a049b030c2b097d4686a33cf" +checksum = "6916301ecf80448f786cdf3eb51d9dbdd831538732229d49119e2d4312eaaf09" dependencies = [ "bytemuck", ] +[[package]] +name = "enumflags2" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", +] + [[package]] name = "epaint" -version = "0.19.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ba04741be7f6602b1a1b28f1082cce45948a7032961c52814f8946b28493300" +checksum = "77b9fdf617dd7f58b0c8e6e9e4a1281f730cde0831d40547da446b2bb76a47af" dependencies = [ "ab_glyph", "ahash", - "atomic_refcell", "bytemuck", + "ecolor", "emath", + "log", "nohash-hasher", "parking_lot", ] [[package]] -name = "error-code" -version = "2.3.1" +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ "libc", - "str-buf", + "windows-sys 0.52.0", ] [[package]] -name = "expat-sys" -version = "2.1.6" +name = "error-code" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b" + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658f19728920138342f68408b7cf7644d90d4784353d8ebc32e7e8663dbe45fa" +checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" dependencies = [ - "cmake", - "pkg-config", + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.3", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291" +dependencies = [ + "event-listener 5.2.0", + "pin-project-lite", ] [[package]] @@ -774,6 +1392,21 @@ dependencies = [ "zune-inflate", ] +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + [[package]] name = "flate2" version = "1.0.25" @@ -855,47 +1488,91 @@ dependencies = [ ] [[package]] -name = "freetype-rs" -version = "0.26.0" +name = "futures-core" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608" + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-lite" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74eadec9d0a5c28c54bb9882e54787275152a4e36ce206b45d7451384e5bf5fb" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" dependencies = [ - "bitflags", - "freetype-sys", - "libc", + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", ] [[package]] -name = "freetype-sys" -version = "0.13.1" +name = "futures-lite" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a37d4011c0cc628dfa766fcc195454f4b068d7afdc2adfd28861191d866e731a" +checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba" dependencies = [ - "cmake", - "libc", - "pkg-config", + "fastrand 2.0.1", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", ] [[package]] -name = "futures-core" +name = "futures-sink" version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608" +checksum = "f310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364" [[package]] -name = "futures-sink" +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364" +checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1" +dependencies = [ + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] [[package]] name = "gethostname" -version = "0.2.3" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" dependencies = [ "libc", - "winapi", + "windows-targets 0.48.5", ] [[package]] @@ -940,25 +1617,28 @@ dependencies = [ [[package]] name = "glium" -version = "0.32.1" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2766728ecb86014b91d3d687614b32d65aacbbdc887f424a7b03cba3ab593bf" +checksum = "94d5813c960a54b76e20fe4ef7e54fbeb12545776a11ecf14f42a946a1c65964" dependencies = [ "backtrace", "fnv", "gl_generator", "glutin", + "glutin-winit", "lazy_static", - "memoffset 0.6.5", + "memoffset 0.9.0", + "raw-window-handle 0.5.2", "smallvec", "takeable-option", + "winit", ] [[package]] name = "glow" -version = "0.11.2" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8bd5877156a19b8ac83a29b2306fe20537429d318f3ff0a1a2119f8d9c61919" +checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" dependencies = [ "js-sys", "slotmap", @@ -989,7 +1669,7 @@ dependencies = [ "inflections", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.52", ] [[package]] @@ -1006,55 +1686,55 @@ dependencies = [ [[package]] name = "glutin" -version = "0.29.1" +version = "0.31.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444c9ad294fdcaf20ccf6726b78f380b5450275540c9b68ab62f49726ad1c713" +checksum = "18fcd4ae4e86d991ad1300b8f57166e5be0c95ef1f63f3f5b827f8a164548746" dependencies = [ + "bitflags 2.4.2", + "cfg_aliases", "cgl", - "cocoa", "core-foundation", + "dispatch", "glutin_egl_sys", - "glutin_gles2_sys", "glutin_glx_sys", "glutin_wgl_sys", - "libloading", - "log", - "objc", + "icrate", + "libloading 0.8.2", + "objc2 0.4.1", "once_cell", - "osmesa-sys", - "parking_lot", - "raw-window-handle 0.5.0", - "wayland-client", - "wayland-egl", - "winapi", - "winit", + "raw-window-handle 0.5.2", + "wayland-sys", + "windows-sys 0.48.0", + "x11-dl", ] [[package]] -name = "glutin_egl_sys" -version = "0.1.6" +name = "glutin-winit" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68900f84b471f31ea1d1355567eb865a2cf446294f06cef8d653ed7bcf5f013d" +checksum = "1ebcdfba24f73b8412c5181e56f092b5eff16671c514ce896b258a0a64bd7735" dependencies = [ - "gl_generator", - "winapi", + "cfg_aliases", + "glutin", + "raw-window-handle 0.5.2", + "winit", ] [[package]] -name = "glutin_gles2_sys" -version = "0.1.5" +name = "glutin_egl_sys" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8094e708b730a7c8a1954f4f8a31880af00eb8a1c5b5bf85d28a0a3c6d69103" +checksum = "77cc5623f5309ef433c3dd4ca1223195347fe62c413da8e2fdd0eb76db2d9bcd" dependencies = [ "gl_generator", - "objc", + "windows-sys 0.48.0", ] [[package]] name = "glutin_glx_sys" -version = "0.1.8" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93d0575865098580c5b3a423188cd959419912ea60b1e48e8b3b526f6d02468" +checksum = "a165fd686c10dcc2d45380b35796e577eacfd43d4660ee741ec8ebe2201b3b4f" dependencies = [ "gl_generator", "x11-dl", @@ -1062,13 +1742,65 @@ dependencies = [ [[package]] name = "glutin_wgl_sys" -version = "0.1.5" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da5951a1569dbab865c6f2a863efafff193a93caf05538d193e9e3816d21696" +checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" dependencies = [ "gl_generator", ] +[[package]] +name = "gpu-alloc" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" +dependencies = [ + "bitflags 2.4.2", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" +dependencies = [ + "bitflags 2.4.2", +] + +[[package]] +name = "gpu-allocator" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" +dependencies = [ + "log", + "presser", + "thiserror", + "winapi", + "windows 0.52.0", +] + +[[package]] +name = "gpu-descriptor" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" +dependencies = [ + "bitflags 2.4.2", + "gpu-descriptor-types", + "hashbrown 0.14.3", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" +dependencies = [ + "bitflags 2.4.2", +] + [[package]] name = "half" version = "2.2.1" @@ -1084,6 +1816,31 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "hassle-rs" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" +dependencies = [ + "bitflags 2.4.2", + "com", + "libc", + "libloading 0.7.4", + "thiserror", + "widestring", + "winapi", +] + [[package]] name = "hermit-abi" version = "0.2.6" @@ -1093,6 +1850,33 @@ dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + [[package]] name = "iana-time-zone" version = "0.1.53" @@ -1118,10 +1902,15 @@ dependencies = [ ] [[package]] -name = "ident_case" -version = "1.0.1" +name = "icrate" +version = "0.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319" +dependencies = [ + "block2 0.3.0", + "dispatch", + "objc2 0.4.1", +] [[package]] name = "idna" @@ -1159,7 +1948,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" dependencies = [ "autocfg", - "hashbrown", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" +dependencies = [ + "equivalent", + "hashbrown 0.14.3", ] [[package]] @@ -1175,9 +1974,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "windows-sys 0.48.0", ] [[package]] @@ -1197,16 +2004,18 @@ checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" [[package]] name = "jni" -version = "0.19.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ "cesu8", + "cfg-if", "combine", "jni-sys", "log", "thiserror", "walkdir", + "windows-sys 0.45.0", ] [[package]] @@ -1215,6 +2024,15 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +[[package]] +name = "jobserver" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" +dependencies = [ + "libc", +] + [[package]] name = "jpeg-decoder" version = "0.3.0" @@ -1226,13 +2044,24 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.61" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" dependencies = [ "wasm-bindgen", ] +[[package]] +name = "khronos-egl" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" +dependencies = [ + "libc", + "libloading 0.8.2", + "pkg-config", +] + [[package]] name = "khronos_api" version = "3.1.0" @@ -1253,18 +2082,39 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "libc" -version = "0.2.139" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libloading" version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libloading" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2caa5afb8bf9f3a2652760ce7d4f62d21c4d5a423e68466fca30df82f2330164" +dependencies = [ + "cfg-if", + "windows-targets 0.52.4", +] + +[[package]] +name = "libredox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" dependencies = [ - "cfg-if", - "winapi", + "bitflags 2.4.2", + "libc", + "redox_syscall 0.4.1", ] [[package]] @@ -1276,6 +2126,24 @@ dependencies = [ "cc", ] +[[package]] +name = "linux-raw-sys" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" + [[package]] name = "lock_api" version = "0.4.9" @@ -1321,38 +2189,53 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memmap2" -version = "0.5.8" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b182332558b18d807c4ce1ca8ca983b34c3ee32765e47b3f0f69b90355cc1dc" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" dependencies = [ "libc", ] [[package]] name = "memoffset" -version = "0.6.5" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" dependencies = [ "autocfg", ] [[package]] name = "memoffset" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] +[[package]] +name = "metal" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" +dependencies = [ + "bitflags 2.4.2", + "block", + "core-graphics-types", + "foreign-types 0.5.0", + "log", + "objc", + "paste", +] + [[package]] name = "minidom-14" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e67a08d73c16689840c58e84dda92a30c83c9848915e1c05aaa79f8cb4c23a0" dependencies = [ - "quick-xml", + "quick-xml 0.28.1", ] [[package]] @@ -1371,15 +2254,23 @@ dependencies = [ ] [[package]] -name = "mio" -version = "0.8.6" +name = "naga" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" dependencies = [ - "libc", + "bit-set", + "bitflags 2.4.2", + "codespan-reporting", + "hexf-parse", + "indexmap 2.2.5", "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.45.0", + "num-traits", + "rustc-hash", + "spirv", + "termcolor", + "thiserror", + "unicode-xid", ] [[package]] @@ -1437,7 +2328,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ab637f328b31bd0855c43bd38a4a4455e74324d9e74e0aac6a803422f43abc6" dependencies = [ "block", - "cocoa", + "cocoa 0.24.1", "dirs-next", "objc", "objc-foundation", @@ -1452,28 +2343,17 @@ dependencies = [ [[package]] name = "ndk" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" -dependencies = [ - "bitflags", - "jni-sys", - "ndk-sys 0.3.0", - "num_enum", - "thiserror", -] - -[[package]] -name = "ndk" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" +checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" dependencies = [ - "bitflags", + "bitflags 2.4.2", "jni-sys", - "ndk-sys 0.4.1+23.1.7779620", + "log", + "ndk-sys", "num_enum", - "raw-window-handle 0.5.0", + "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "thiserror", ] @@ -1483,104 +2363,25 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" -[[package]] -name = "ndk-glue" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d0c4a7b83860226e6b4183edac21851f05d5a51756e97a1144b7f5a6b63e65f" -dependencies = [ - "lazy_static", - "libc", - "log", - "ndk 0.6.0", - "ndk-context", - "ndk-macro", - "ndk-sys 0.3.0", -] - -[[package]] -name = "ndk-glue" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0434fabdd2c15e0aab768ca31d5b7b333717f03cf02037d5a0a3ff3c278ed67f" -dependencies = [ - "libc", - "log", - "ndk 0.7.0", - "ndk-context", - "ndk-macro", - "ndk-sys 0.4.1+23.1.7779620", - "once_cell", - "parking_lot", -] - -[[package]] -name = "ndk-macro" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" -dependencies = [ - "darling", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 1.0.107", -] - -[[package]] -name = "ndk-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" -dependencies = [ - "jni-sys", -] - [[package]] name = "ndk-sys" -version = "0.4.1+23.1.7779620" +version = "0.5.0+25.2.9519653" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" dependencies = [ "jni-sys", ] [[package]] name = "nix" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" -dependencies = [ - "bitflags", - "cc", - "cfg-if", - "libc", - "memoffset 0.6.5", -] - -[[package]] -name = "nix" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" -dependencies = [ - "bitflags", - "cfg-if", - "libc", - "memoffset 0.6.5", -] - -[[package]] -name = "nix" -version = "0.25.1" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ - "autocfg", - "bitflags", + "bitflags 1.3.2", "cfg-if", "libc", - "memoffset 0.6.5", + "memoffset 0.7.1", ] [[package]] @@ -1617,6 +2418,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-integer" version = "0.1.45" @@ -1653,29 +2460,29 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" dependencies = [ - "hermit-abi", + "hermit-abi 0.2.6", "libc", ] [[package]] name = "num_enum" -version = "0.5.9" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d829733185c1ca374f17e52b762f24f535ec625d2cc1f070e34c8a9068f341b" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.9" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2be1598bf1c313dcdd12092e3f1920f463462525a21b7b4e11b4168353d0123e" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.52", ] [[package]] @@ -1685,6 +2492,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" dependencies = [ "malloc_buf", + "objc_exception", ] [[package]] @@ -1698,6 +2506,63 @@ dependencies = [ "objc_id", ] +[[package]] +name = "objc-sys" +version = "0.2.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" + +[[package]] +name = "objc-sys" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c71324e4180d0899963fc83d9d241ac39e699609fc1025a850aadac8257459" + +[[package]] +name = "objc2" +version = "0.3.0-beta.3.patch-leaks.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" +dependencies = [ + "block2 0.2.0-alpha.6", + "objc-sys 0.2.0-beta.2", + "objc2-encode 2.0.0-pre.2", +] + +[[package]] +name = "objc2" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" +dependencies = [ + "objc-sys 0.3.2", + "objc2-encode 3.0.0", +] + +[[package]] +name = "objc2-encode" +version = "2.0.0-pre.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" +dependencies = [ + "objc-sys 0.2.0-beta.2", +] + +[[package]] +name = "objc2-encode" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + [[package]] name = "objc_id" version = "0.1.1" @@ -1718,17 +2583,27 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.17.1" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] -name = "osmesa-sys" -version = "0.1.2" +name = "orbclient" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166" +dependencies = [ + "libredox", +] + +[[package]] +name = "ordered-stream" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88cfece6e95d2e717e0872a7f53a8684712ad13822a7979bc760b9c77ec0013b" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" dependencies = [ - "shared_library", + "futures-core", + "pin-project-lite", ] [[package]] @@ -1740,6 +2615,12 @@ dependencies = [ "ttf-parser", ] +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + [[package]] name = "parking_lot" version = "0.12.1" @@ -1758,7 +2639,7 @@ checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.2.16", "smallvec", "windows-sys 0.45.0", ] @@ -1797,9 +2678,26 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand 2.0.1", + "futures-io", +] [[package]] name = "pkg-config" @@ -1813,7 +2711,7 @@ version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638" dependencies = [ - "bitflags", + "bitflags 1.3.2", "crc32fast", "flate2", "miniz_oxide", @@ -1856,8 +2754,57 @@ dependencies = [ "pof", "simplelog", "undo", + "winit", +] + +[[package]] +name = "polling" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys 0.48.0", +] + +[[package]] +name = "polling" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9" +dependencies = [ + "cfg-if", + "concurrent-queue", + "pin-project-lite", + "rustix 0.38.31", + "tracing", + "windows-sys 0.52.0", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "presser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" + [[package]] name = "proc-macro-crate" version = "1.3.0" @@ -1870,13 +2817,19 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.67" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] +[[package]] +name = "profiling" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" + [[package]] name = "quick-xml" version = "0.28.1" @@ -1886,15 +2839,54 @@ dependencies = [ "memchr", ] +[[package]] +name = "quick-xml" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +dependencies = [ + "memchr", +] + [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + [[package]] name = "raw-window-handle" version = "0.4.3" @@ -1906,12 +2898,15 @@ dependencies = [ [[package]] name = "raw-window-handle" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a" -dependencies = [ - "cty", -] +checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" + +[[package]] +name = "raw-window-handle" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544" [[package]] name = "rawpointer" @@ -1943,11 +2938,29 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.16" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] @@ -1957,7 +2970,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ "getrandom", - "redox_syscall", + "redox_syscall 0.2.16", "thiserror", ] @@ -1981,6 +2994,41 @@ dependencies = [ "syn 1.0.107", ] +[[package]] +name = "regex" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12de2eff854e5fa4b1295edd650e227e9d8fb0c9e90b12e7f36d6a6811791a29" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49530408a136e16e5b486e883fbb6ba058e8e4e8ae6621a77b048b314336e629" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" + +[[package]] +name = "renderdoc-sys" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216080ab382b992234dda86873c18d4c48358f5cfcb70fd693d7f6f2131b628b" + [[package]] name = "rustc-demangle" version = "0.1.21" @@ -1988,20 +3036,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" [[package]] -name = "ryu" -version = "1.0.12" +name = "rustc-hash" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] -name = "safe_arch" -version = "0.5.2" +name = "rustix" +version = "0.37.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ff3d6d9696af502cc3110dacce942840fb06ff4514cad92236ecc455f2ce05" +checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" dependencies = [ - "bytemuck", + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustix" +version = "0.38.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +dependencies = [ + "bitflags 2.4.2", + "errno", + "libc", + "linux-raw-sys 0.4.13", + "windows-sys 0.52.0", ] +[[package]] +name = "ryu" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" + [[package]] name = "safe_arch" version = "0.6.0" @@ -2046,34 +3118,35 @@ checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2" [[package]] name = "sctk-adwaita" -version = "0.4.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61270629cc6b4d77ec1907db1033d5c2e1a404c412743621981a871dc9c12339" +checksum = "82b2eaf3a5b264a521b988b2e73042e742df700c4f962cde845d1541adb46550" dependencies = [ - "crossfont", + "ab_glyph", "log", + "memmap2", "smithay-client-toolkit", "tiny-skia", ] [[package]] name = "serde" -version = "1.0.152" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.152" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.52", ] [[package]] @@ -2088,33 +3161,33 @@ dependencies = [ ] [[package]] -name = "servo-fontconfig" -version = "0.5.1" +name = "serde_repr" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e3e22fe5fd73d04ebf0daa049d3efe3eae55369ce38ab16d07ddd9ac5c217c" +checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" dependencies = [ - "libc", - "servo-fontconfig-sys", + "proc-macro2", + "quote", + "syn 2.0.52", ] [[package]] -name = "servo-fontconfig-sys" -version = "5.1.0" +name = "sha1" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36b879db9892dfa40f95da1c38a835d41634b825fbd8c4c418093d53c24b388" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ - "expat-sys", - "freetype-sys", - "pkg-config", + "cfg-if", + "cpufeatures", + "digest", ] [[package]] -name = "shared_library" -version = "0.1.9" +name = "signal-hook-registry" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9e7e0f2bfae24d8a5b5a66c5b257a83c7412304311512a0c054cd5e619da11" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" dependencies = [ - "lazy_static", "libc", ] @@ -2139,13 +3212,21 @@ checksum = "14a5df39617d7c8558154693a1bb8157a4aab8179209540cc0b10e5dc24e0b18" [[package]] name = "simplelog" -version = "0.11.2" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1348164456f72ca0116e4538bdaabb0ddb622c7d9f16387c725af3e96d6001c" +checksum = "acee08041c5de3d5048c8b3f6f13fafb3026b24ba43c6a695a0c76179b844369" dependencies = [ - "chrono", "log", - "termcolor", + "time 0.3.34", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", ] [[package]] @@ -2165,31 +3246,57 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "smithay-client-toolkit" -version = "0.16.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f307c47d32d2715eb2e0ece5589057820e0e5e70d07c247d1063e844e107f454" +checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" dependencies = [ - "bitflags", + "bitflags 2.4.2", "calloop", - "dlib", - "lazy_static", + "calloop-wayland-source", + "cursor-icon", + "libc", "log", "memmap2", - "nix 0.24.3", - "pkg-config", + "rustix 0.38.31", + "thiserror", + "wayland-backend", "wayland-client", + "wayland-csd-frame", "wayland-cursor", "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", ] [[package]] name = "smithay-clipboard" -version = "0.6.6" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a345c870a1fae0b1b779085e81b51e614767c239e93503588e54c5b17f4b0e8" +checksum = "c091e7354ea8059d6ad99eace06dd13ddeedbb0ac72d40a9a6e7ff790525882d" dependencies = [ + "libc", "smithay-client-toolkit", - "wayland-client", + "wayland-backend", +] + +[[package]] +name = "smol_str" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +dependencies = [ + "libc", + "winapi", ] [[package]] @@ -2202,16 +3309,25 @@ dependencies = [ ] [[package]] -name = "str-buf" -version = "1.0.6" +name = "spirv" +version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +dependencies = [ + "bitflags 2.4.2", +] [[package]] -name = "strsim" -version = "0.10.0" +name = "static_assertions" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" [[package]] name = "syn" @@ -2226,9 +3342,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.37" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -2241,33 +3357,45 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36ae8932fcfea38b7d3883ae2ab357b0d57a02caaa18ebb4f5ece08beaec4aa0" +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand 2.0.1", + "rustix 0.38.31", + "windows-sys 0.52.0", +] + [[package]] name = "termcolor" -version = "1.1.3" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] [[package]] name = "thiserror" -version = "1.0.38" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.38" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.52", ] [[package]] @@ -2301,29 +3429,60 @@ dependencies = [ "winapi", ] +[[package]] +name = "time" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +dependencies = [ + "num-conv", + "time-core", +] + [[package]] name = "tiny-skia" -version = "0.7.0" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642680569bb895b16e4b9d181c60be1ed136fa0c9c7f11d004daf053ba89bf82" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" dependencies = [ "arrayref", - "arrayvec 0.5.2", + "arrayvec", "bytemuck", "cfg-if", - "png", - "safe_arch 0.5.2", + "log", "tiny-skia-path", ] [[package]] name = "tiny-skia-path" -version = "0.7.0" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c114d32f0c2ee43d585367cb013dfaba967ab9f62b90d9af0d696e955e70fa6c" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" dependencies = [ "arrayref", "bytemuck", + "strict-num", ] [[package]] @@ -2353,7 +3512,7 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56c59d8dd7d0dcbc6428bf7aa2f0e823e26e43b3c9aca15bbc9475d23e5fa12b" dependencies = [ - "indexmap", + "indexmap 1.9.2", "nom8", "toml_datetime", ] @@ -2366,9 +3525,21 @@ checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if", "pin-project-lite", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", +] + [[package]] name = "tracing-core" version = "0.1.30" @@ -2384,19 +3555,39 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0609f771ad9c6155384897e1df4d948e692667cc0588548b68eb44d052b27633" +[[package]] +name = "type-map" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb68604048ff8fa93347f02441e4487594adc20bb8a084f9e564d2b827a0a9f" +dependencies = [ + "rustc-hash", +] + [[package]] name = "typenum" version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset 0.9.0", + "tempfile", + "winapi", +] + [[package]] name = "undo" version = "0.47.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9db1d262f3ac35028550ddcb8a0145bd15bc2356f62626a1f6ac84d51c4c57c2" dependencies = [ - "arrayvec 0.7.2", + "arrayvec", "serde", ] @@ -2421,12 +3612,24 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + [[package]] name = "unicode-width" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + [[package]] name = "url" version = "2.3.1" @@ -2444,18 +3647,18 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9" -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "waker-fn" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" + [[package]] name = "walkdir" version = "2.3.2" @@ -2481,9 +3684,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.84" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -2491,24 +3694,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.52", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.34" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" +checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" dependencies = [ "cfg-if", "js-sys", @@ -2518,9 +3721,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2528,144 +3731,284 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" dependencies = [ "proc-macro2", "quote", - "syn 1.0.107", + "syn 2.0.52", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" [[package]] -name = "wayland-client" -version = "0.29.5" +name = "wayland-backend" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715" +checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" dependencies = [ - "bitflags", + "cc", "downcast-rs", - "libc", - "nix 0.24.3", + "rustix 0.38.31", "scoped-tls", - "wayland-commons", - "wayland-scanner", + "smallvec", "wayland-sys", ] [[package]] -name = "wayland-commons" -version = "0.29.5" +name = "wayland-client" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902" +checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" dependencies = [ - "nix 0.24.3", - "once_cell", - "smallvec", - "wayland-sys", + "bitflags 2.4.2", + "rustix 0.38.31", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.4.2", + "cursor-icon", + "wayland-backend", ] [[package]] name = "wayland-cursor" -version = "0.29.5" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" +checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba" dependencies = [ - "nix 0.24.3", + "rustix 0.38.31", "wayland-client", "xcursor", ] [[package]] -name = "wayland-egl" -version = "0.29.5" +name = "wayland-protocols" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402de949f81a012926d821a2d659f930694257e76dd92b6e0042ceb27be4107d" +checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" dependencies = [ + "bitflags 2.4.2", + "wayland-backend", "wayland-client", - "wayland-sys", + "wayland-scanner", ] [[package]] -name = "wayland-protocols" -version = "0.29.5" +name = "wayland-protocols-plasma" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" +dependencies = [ + "bitflags 2.4.2", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" +checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" dependencies = [ - "bitflags", + "bitflags 2.4.2", + "wayland-backend", "wayland-client", - "wayland-commons", + "wayland-protocols", "wayland-scanner", ] [[package]] name = "wayland-scanner" -version = "0.29.5" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53" +checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" dependencies = [ "proc-macro2", + "quick-xml 0.31.0", "quote", - "xml-rs", ] [[package]] name = "wayland-sys" -version = "0.29.5" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be12ce1a3c39ec7dba25594b97b42cb3195d54953ddb9d3d95a7c3902bc6e9d4" +checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" dependencies = [ "dlib", - "lazy_static", + "log", + "once_cell", "pkg-config", ] [[package]] -name = "web-sys" -version = "0.3.61" +name = "web-sys" +version = "0.3.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webbrowser" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b2391658b02c27719fc5a0a73d6e696285138e8b12fba9d4baa70451023c71" +dependencies = [ + "core-foundation", + "home", + "jni", + "log", + "ndk-context", + "objc", + "raw-window-handle 0.5.2", + "url", + "web-sys", +] + +[[package]] +name = "weezl" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" + +[[package]] +name = "wfd" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e713040b67aae5bf1a0ae3e1ebba8cc29ab2b90da9aa1bff6e09031a8a41d7a8" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "wgpu" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9274d073bfb0cad6c53c575d3f4815617c9ccc134cba3ead1fa5fa51e71595c" +dependencies = [ + "arrayvec", + "cfg-if", + "cfg_aliases", + "js-sys", + "log", + "parking_lot", + "profiling", + "raw-window-handle 0.6.0", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +checksum = "0c8bb6a5c62ad78bd683609d525cde6efb6e7cf39e008ea0b8e42518ce18ea81" dependencies = [ - "js-sys", - "wasm-bindgen", + "arrayvec", + "bit-vec", + "bitflags 2.4.2", + "cfg_aliases", + "codespan-reporting", + "indexmap 2.2.5", + "log", + "naga", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle 0.6.0", + "rustc-hash", + "smallvec", + "thiserror", + "web-sys", + "wgpu-hal", + "wgpu-types", ] [[package]] -name = "webbrowser" -version = "0.7.1" +name = "wgpu-hal" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6a3cffdb686fbb24d9fb8f03a213803277ed2300f11026a3afe1f108dc021b" +checksum = "cb7b9a56d44851cc0f51bf2f8b5ed8af5cf6e4bdb178fd5786ea2b4771e2edf0" dependencies = [ - "jni", - "ndk-glue 0.6.2", - "url", + "android_system_properties", + "arrayvec", + "ash", + "bitflags 2.4.2", + "cfg_aliases", + "core-graphics-types", + "glow", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-allocator", + "gpu-descriptor", + "hassle-rs", + "js-sys", + "khronos-egl", + "libc", + "libloading 0.7.4", + "log", + "metal", + "naga", + "objc", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle 0.6.0", + "renderdoc-sys", + "rustc-hash", + "smallvec", + "thiserror", + "wasm-bindgen", "web-sys", - "widestring", + "wgpu-types", "winapi", ] [[package]] -name = "weezl" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" - -[[package]] -name = "wfd" -version = "0.1.7" +name = "wgpu-types" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e713040b67aae5bf1a0ae3e1ebba8cc29ab2b90da9aa1bff6e09031a8a41d7a8" +checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" dependencies = [ - "libc", - "winapi", + "bitflags 2.4.2", + "js-sys", + "web-sys", ] [[package]] @@ -2686,14 +4029,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "feff0a412894d67223777b6cc8d68c0dab06d52d95e9890d5f2d47f10dd9366c" dependencies = [ "bytemuck", - "safe_arch 0.6.0", + "safe_arch", ] [[package]] name = "widestring" -version = "0.5.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" +checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" [[package]] name = "winapi" @@ -2721,31 +4064,61 @@ dependencies = [ ] [[package]] -name = "winapi-wsapoll" -version = "0.1.1" +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "winapi", + "windows-implement", + "windows-interface", + "windows-targets 0.48.5", ] [[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" +name = "windows" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core", + "windows-targets 0.52.4", +] [[package]] -name = "windows-sys" -version = "0.36.1" +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-implement" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +checksum = "5e2ee588991b9e7e6c8338edf3333fbe4da35dc72092643958ebb43f0ab2c49c" dependencies = [ - "windows_aarch64_msvc 0.36.1", - "windows_i686_gnu 0.36.1", - "windows_i686_msvc 0.36.1", - "windows_x86_64_gnu 0.36.1", - "windows_x86_64_msvc 0.36.1", + "proc-macro2", + "quote", + "syn 1.0.107", +] + +[[package]] +name = "windows-interface" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6fb8df20c9bcaa8ad6ab513f7b40104840c8867d5751126e4df3b08388d0cc7" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.107", ] [[package]] @@ -2754,7 +4127,25 @@ version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows-targets", + "windows-targets 0.42.1", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.4", ] [[package]] @@ -2763,15 +4154,45 @@ version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" dependencies = [ - "windows_aarch64_gnullvm", + "windows_aarch64_gnullvm 0.42.1", "windows_aarch64_msvc 0.42.1", "windows_i686_gnu 0.42.1", "windows_i686_msvc 0.42.1", "windows_x86_64_gnu 0.42.1", - "windows_x86_64_gnullvm", + "windows_x86_64_gnullvm 0.42.1", "windows_x86_64_msvc 0.42.1", ] +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +dependencies = [ + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.1" @@ -2779,10 +4200,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" [[package]] -name = "windows_aarch64_msvc" -version = "0.36.1" +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" [[package]] name = "windows_aarch64_msvc" @@ -2791,10 +4218,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" [[package]] -name = "windows_i686_gnu" -version = "0.36.1" +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" [[package]] name = "windows_i686_gnu" @@ -2803,10 +4236,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" [[package]] -name = "windows_i686_msvc" -version = "0.36.1" +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" [[package]] name = "windows_i686_msvc" @@ -2815,10 +4254,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" [[package]] -name = "windows_x86_64_gnu" -version = "0.36.1" +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" [[package]] name = "windows_x86_64_gnu" @@ -2826,6 +4271,18 @@ version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.1" @@ -2833,10 +4290,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" [[package]] -name = "windows_x86_64_msvc" -version = "0.36.1" +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" [[package]] name = "windows_x86_64_msvc" @@ -2844,46 +4307,65 @@ version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" + [[package]] name = "winit" -version = "0.27.5" +version = "0.29.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb796d6fbd86b2fd896c9471e6f04d39d750076ebe5680a3958f00f5ab97657c" +checksum = "b042fd2f023ddd9713f02f8f89c62f5a32c18d104ac182b480a0e3e6cb8d37f7" dependencies = [ - "bitflags", - "cocoa", + "ahash", + "android-activity", + "atomic-waker", + "bitflags 2.4.2", + "bytemuck", + "calloop", + "cfg_aliases", "core-foundation", - "core-graphics", - "dispatch", - "instant", + "core-graphics 0.23.1", + "cursor-icon", + "icrate", + "js-sys", "libc", "log", - "mio", - "ndk 0.7.0", - "ndk-glue 0.7.0", - "objc", + "memmap2", + "ndk", + "ndk-sys", + "objc2 0.4.1", "once_cell", - "parking_lot", + "orbclient", "percent-encoding", - "raw-window-handle 0.4.3", - "raw-window-handle 0.5.0", + "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", + "redox_syscall 0.3.5", + "rustix 0.38.31", "sctk-adwaita", "smithay-client-toolkit", + "smol_str", + "unicode-segmentation", "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", "wayland-client", "wayland-protocols", + "wayland-protocols-plasma", "web-sys", - "windows-sys 0.36.1", + "web-time", + "windows-sys 0.48.0", "x11-dl", -] - -[[package]] -name = "wio" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" -dependencies = [ - "winapi", + "x11rb", + "xkbcommon-dl", ] [[package]] @@ -2899,16 +4381,25 @@ dependencies = [ [[package]] name = "x11rb" -version = "0.9.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e99be55648b3ae2a52342f9a870c0e138709a3493261ce9b469afe6e4df6d8a" +checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a" dependencies = [ + "as-raw-xcb-connection", "gethostname", - "nix 0.22.3", - "winapi", - "winapi-wsapoll", + "libc", + "libloading 0.8.2", + "once_cell", + "rustix 0.38.31", + "x11rb-protocol", ] +[[package]] +name = "x11rb-protocol" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34" + [[package]] name = "xcursor" version = "0.3.4" @@ -2918,12 +4409,127 @@ dependencies = [ "nom", ] +[[package]] +name = "xdg-home" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.4.2", + "dlib", + "log", + "once_cell", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621" + [[package]] name = "xml-rs" version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" +[[package]] +name = "zbus" +version = "3.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "675d170b632a6ad49804c8cf2105d7c31eddd3312555cffd4b740e08e97c25e6" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io 1.13.0", + "async-lock 2.8.0", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "byteorder", + "derivative", + "enumflags2", + "event-listener 2.5.3", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix", + "once_cell", + "ordered-stream", + "rand", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tracing", + "uds_windows", + "winapi", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "3.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "regex", + "syn 1.0.107", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d" +dependencies = [ + "serde", + "static_assertions", + "zvariant", +] + +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", +] + [[package]] name = "zune-inflate" version = "0.2.50" @@ -2932,3 +4538,41 @@ checksum = "589245df6230839c305984dcc0a8385cc72af1fd223f360ffd5d65efa4216d40" dependencies = [ "simd-adler32", ] + +[[package]] +name = "zvariant" +version = "3.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eef2be88ba09b358d3b58aca6e41cd853631d44787f319a1383ca83424fb2db" +dependencies = [ + "byteorder", + "enumflags2", + "libc", + "serde", + "static_assertions", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "3.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.107", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.107", +] diff --git a/Cargo.toml b/Cargo.toml index 2beec23..87483ef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,17 +6,19 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -eframe = "0.19.0" -egui = "0.19.0" -glium = "0.32" -egui_glium = "0.19.0" +winit = "0.29" +eframe = "0.26.2" +egui = "0.26.2" +glium = "0.34" +# egui_glium = "0.23.0" +egui_glium = "0.26" pof = { path = "pof" } nalgebra-glm = "0.18.0" native-dialog = "0.6.3" crossbeam = "0.8.1" image = "0.24.1" # for logging -simplelog = "0.11.2" +simplelog = { version = "0.12.1", default-features = false } log = "0.4.14" # for panic handling backtrace = "0.3.64" diff --git a/pof/src/parse.rs b/pof/src/parse.rs index abe2fc7..9b30927 100644 --- a/pof/src/parse.rs +++ b/pof/src/parse.rs @@ -344,7 +344,7 @@ impl Parser { glows: this.read_list_n(num_glows as usize, |this| { Ok(ThrusterGlow { position: this.read_vec3d()?, - normal: this.read_vec3d()?, + normal: this.read_vec3d()?.try_into().unwrap_or_default(), // TODO document this at https://wiki.hard-light.net/index.php/POF_data_structure radius: if this.version > Version::V20_04 { this.read_f32()? } else { 1.0 }, }) @@ -1180,7 +1180,7 @@ trait ParseCtx<'a> { let (pos, norm, rad) = node.parse_point(&transform, up); new_point.position = pos; - new_point.normal = norm; + new_point.normal = norm.try_into().unwrap_or_default(); new_point.radius = rad; new_bank.glows.push(new_point); diff --git a/pof/src/types.rs b/pof/src/types.rs index 0606f29..13b1f20 100644 --- a/pof/src/types.rs +++ b/pof/src/types.rs @@ -441,7 +441,6 @@ impl Default for NormalVec3 { Self(Vec3d { x: 0.0, y: 0.0, z: 1.0 }) } } - impl TryFrom for NormalVec3 { type Error = (); @@ -449,7 +448,6 @@ impl TryFrom for NormalVec3 { Ok(Self(Vec3::from(value).try_normalize(1e-6).ok_or(())?.into())) } } - impl TryFrom for NormalVec3 { type Error = (); @@ -457,13 +455,17 @@ impl TryFrom for NormalVec3 { Vec3d::from(value).try_into() } } - impl FromStr for NormalVec3 { type Err = (); fn from_str(s: &str) -> Result { s.parse::()?.try_into() } } +impl Display for NormalVec3 { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + std::fmt::Display::fmt(&self.0, f) + } +} impl Mat3d { pub const IDENTITY: Mat3d = Mat3d { @@ -817,14 +819,14 @@ impl WeaponHardpoint { #[derive(Debug, Clone)] pub struct ThrusterGlow { pub position: Vec3d, - pub normal: Vec3d, + pub normal: NormalVec3, pub radius: f32, } impl Default for ThrusterGlow { fn default() -> Self { Self { position: Default::default(), - normal: Vec3d { x: 0.0, y: 0.0, z: -1.0 }, + normal: NormalVec3(Vec3d { x: 0.0, y: 0.0, z: -1.0 }), radius: 1.0, } } @@ -847,7 +849,7 @@ impl ThrusterGlow { self.radius *= scalar; let matrix = mat4_rotation_only(&matrix); - self.normal = (&matrix * self.normal).normalize(); + self.normal = (&matrix * self.normal.0).try_into().unwrap(); } } diff --git a/pof/src/write.rs b/pof/src/write.rs index 65505b2..bd26d3a 100644 --- a/pof/src/write.rs +++ b/pof/src/write.rs @@ -556,7 +556,7 @@ fn make_thrusters_node(ctx: &mut N::Ctx, thruster_banks: &[ThrusterBank let radius = point.radius; let pos = point.position.to_coord(up); point_node.translate(pos.into()); - point_node.rotate(vec_to_rotation(&point.normal, up)); + point_node.rotate(vec_to_rotation(&point.normal.0, up)); point_node.scale([radius, radius, radius]); bank_node.children().push(point_node.build(ctx)); diff --git a/src/main.rs b/src/main.rs index 1d63a45..0d4bee6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,12 +17,8 @@ use crate::{ }, }; use eframe::egui::PointerButton; -use egui::{Color32, RichText, TextEdit}; -use glium::{ - glutin::{self, event::WindowEvent, window::Icon}, - texture::SrgbTexture2d, - BlendingFunction, Display, IndexBuffer, LinearBlendingFactor, VertexBuffer, -}; +use egui::{Color32, RichText, TextEdit, ViewportId}; +use glium::{glutin::surface::WindowSurface, texture::SrgbTexture2d, BlendingFunction, Display, IndexBuffer, LinearBlendingFactor, VertexBuffer}; use glm::Mat4x4; use native_dialog::FileDialog; use pof::{ @@ -37,31 +33,27 @@ use std::{ io::{Cursor, Read}, ops::{Deref, DerefMut}, path::PathBuf, - sync::mpsc::Receiver, - sync::mpsc::TryRecvError, + sync::mpsc::{Receiver, TryRecvError}, + time::Duration, }; use ui::{PofToolsGui, TreeValue}; +use winit::window::Window; mod primitives; mod ui; mod ui_import; mod ui_properties_panel; -fn create_display(event_loop: &glutin::event_loop::EventLoop<()>) -> glium::Display { - let window_builder = glutin::window::WindowBuilder::new() +fn create_window_display(event_loop: &winit::event_loop::EventLoop<()>) -> (winit::window::Window, glium::Display) { + let window_builder = winit::window::WindowBuilder::new() .with_resizable(true) - .with_inner_size(glutin::dpi::LogicalSize { width: 800.0f32, height: 600.0f32 }) + .with_inner_size(winit::dpi::LogicalSize { width: 800.0f32, height: 600.0f32 }) .with_title(format!("Pof Tools v{}", POF_TOOLS_VERSION)) - .with_window_icon(Some(Icon::from_rgba(include_bytes!("icon.raw").to_vec(), 32, 32).unwrap())); - - let context_builder = glutin::ContextBuilder::new() - .with_depth_buffer(0) - .with_srgb(true) - .with_stencil_buffer(0) - .with_vsync(true) - .with_depth_buffer(24); + .with_window_icon(Some(winit::window::Icon::from_rgba(include_bytes!("icon.raw").to_vec(), 32, 32).unwrap())); - glium::Display::new(window_builder, context_builder, event_loop).unwrap() + glium::backend::glutin::SimpleWindowBuilder::new() + .set_window_builder(window_builder) + .build(event_loop) } const ADDITIVE_BLEND: glium::draw_parameters::Blend = glium::draw_parameters::Blend { @@ -108,7 +100,7 @@ impl GlLollipopsBuilder { .push(Vertex { position: (vertex + normal).to_tuple(), uv: (0.0, 0.0) }); } - fn finish(&self, display: &Display) -> GlLollipops { + fn finish(&self, display: &Display) -> GlLollipops { GlLollipops { color: self.color, lolly_vertices: glium::VertexBuffer::new(display, &self.lolly_vertices).unwrap(), @@ -118,7 +110,9 @@ impl GlLollipopsBuilder { } } -fn build_lollipops(colors: &[[f32; 4]], display: &Display, iter: impl Iterator) -> Vec { +fn build_lollipops( + colors: &[[f32; 4]], display: &Display, iter: impl Iterator, +) -> Vec { let mut builders: Vec<_> = colors.iter().map(|c| GlLollipopsBuilder::new(*c)).collect(); for (vertex, normal, radius, selection) in iter { builders[selection].push(vertex, normal, radius) @@ -131,7 +125,7 @@ struct GlBufferedShield { indices: IndexBuffer, } impl GlBufferedShield { - fn new(display: &Display, shield_data: &ShieldData) -> GlBufferedShield { + fn new(display: &Display, shield_data: &ShieldData) -> GlBufferedShield { info!("Building buffer for the shield"); let mut vertices = vec![]; let mut normals = vec![]; @@ -174,7 +168,7 @@ struct GlBufferedInsignia { indices: IndexBuffer, } impl GlBufferedInsignia { - fn new(display: &Display, insignia: &Insignia) -> GlBufferedInsignia { + fn new(display: &Display, insignia: &Insignia) -> GlBufferedInsignia { info!("Building buffer for a LOD {} insignia ", insignia.detail_level); let mut vertices = vec![]; let mut normals = vec![]; @@ -292,7 +286,7 @@ impl GlObjectsBuilder { } } - fn finish(self, display: &Display, object: &SubObject, texture_id: Option, out: &mut Vec) { + fn finish(self, display: &Display, object: &SubObject, texture_id: Option, out: &mut Vec) { if !self.indices.is_empty() { info!("Built buffer for subobj {}", object.name); out.push(GlObjectBuffer { @@ -326,7 +320,7 @@ struct GlObjectBuffers { } impl GlObjectBuffers { - fn new(display: &Display, object: &SubObject, num_textures: usize) -> Self { + fn new(display: &Display, object: &SubObject, num_textures: usize) -> Self { let mut textures = Vec::from_iter(std::iter::repeat_with(GlObjectsBuilder::default).take(num_textures)); let bsp_data = &object.bsp_data; @@ -498,13 +492,13 @@ impl PofToolsGui { } /// handles talking to the model loading thread, ending it when concluded - fn handle_model_loading_thread(&mut self, display: &Display) -> bool { + fn handle_model_loading_thread(&mut self, window: &Window, display: &Display) -> bool { if let Some(thread) = &self.model_loading_thread { let response = thread.try_recv(); match response { Ok(Ok(Some(data))) => { self.model = data; - self.finish_loading_model(display); + self.finish_loading_model(window, display); self.model_loading_thread = None; return true; @@ -521,7 +515,7 @@ impl PofToolsGui { } // after the above thread has returned, stuffs the new model in - fn finish_loading_model(&mut self, display: &Display) { + fn finish_loading_model(&mut self, window: &Window, display: &Display) { self.buffer_objects.clear(); self.buffer_shield = None; self.buffer_insignias.clear(); @@ -558,15 +552,12 @@ impl PofToolsGui { self.load_textures(); let filename = self.model.path_to_file.file_name().unwrap_or_default().to_string_lossy(); - display - .gl_window() - .window() - .set_title(&format!("Pof Tools v{} - {}", POF_TOOLS_VERSION, filename)); + window.set_title(&format!("Pof Tools v{} - {}", POF_TOOLS_VERSION, filename)); info!("Loaded {}", filename); } - fn handle_texture_loading_thread(&mut self, display: &Display) { + fn handle_texture_loading_thread(&mut self, display: &Display) { if let Some(thread) = &self.texture_loading_thread { let response = thread.try_recv(); match response { @@ -626,7 +617,7 @@ impl PofToolsGui { }); } - pub fn rebuild_subobj_buffers(&mut self, display: &Display, ids: Vec) { + pub fn rebuild_subobj_buffers(&mut self, display: &Display, ids: Vec) { for buf in &mut self.buffer_objects { if ids.contains(&buf.obj_id) { *buf = GlObjectBuffers::new(display, &self.model.sub_objects[buf.obj_id], self.model.textures.len()); @@ -634,18 +625,18 @@ impl PofToolsGui { } } - pub fn rebuild_all_subobj_buffers(&mut self, display: &Display) { + pub fn rebuild_all_subobj_buffers(&mut self, display: &Display) { let ids = (0..self.model.sub_objects.len()).map(|idx| ObjectId(idx as u32)).collect(); self.rebuild_subobj_buffers(display, ids); } - pub fn rebuild_all_insignia_buffers(&mut self, display: &Display) { + pub fn rebuild_all_insignia_buffers(&mut self, display: &Display) { for (i, buffer) in self.buffer_insignias.iter_mut().enumerate() { *buffer = GlBufferedInsignia::new(display, &self.model.insignias[i]); } } - pub fn rebuild_shield_buffer(&mut self, display: &Display) { + pub fn rebuild_shield_buffer(&mut self, display: &Display) { if let Some(shield) = &self.model.shield_data { self.buffer_shield = Some(GlBufferedShield::new(display, shield)); } else { @@ -700,15 +691,15 @@ fn main() { } info!("Pof Tools {} - {}", POF_TOOLS_VERSION, chrono::Local::now()); - let event_loop = glutin::event_loop::EventLoopBuilder::with_user_event().build(); - let display = create_display(&event_loop); + let event_loop = eframe::EventLoopBuilder::with_user_event().build().unwrap(); + let (window, display) = create_window_display(&event_loop); let mut args = std::env::args(); args.next(); let path = args.next().map(|arg| PathBuf::from(arg.as_str())); - let mut egui = egui_glium::EguiGlium::new(&display, &event_loop); - let mut pt_gui = PofToolsGui::new(&display, &egui.egui_ctx); + let mut egui = egui_glium::EguiGlium::new(ViewportId::ROOT, &display, &window, &event_loop); + let mut pt_gui = PofToolsGui::new(&display, egui.egui_ctx()); pt_gui.start_loading_model(path); @@ -724,11 +715,11 @@ fn main() { let mut errored = None; info!("Beginning event loop..."); - event_loop.run(move |event, _, control_flow| { + let result = event_loop.run(move |event, target| { let mut catch_redraw = || { let redraw = || { // handle whether the thread which handles loading has responded (if it exists) - if pt_gui.handle_model_loading_thread(&display) { + if pt_gui.handle_model_loading_thread(&window, &display) { undo_history.clear(); } @@ -736,18 +727,10 @@ fn main() { pt_gui.handle_import_model_loading_thread(); - let repaint_after = egui.run(&display, |ctx| pt_gui.show_ui(ctx, &display, &mut undo_history)); + egui.run(&window, |ctx| pt_gui.show_ui(ctx, &window, &display, &mut undo_history)); - *control_flow = match repaint_after { - time if time.is_zero() => { - display.gl_window().window().request_redraw(); - glutin::event_loop::ControlFlow::Poll - } - time => match std::time::Instant::now().checked_add(time) { - Some(next_frame_time) => glutin::event_loop::ControlFlow::WaitUntil(next_frame_time), - None => glutin::event_loop::ControlFlow::Wait, - }, - }; + let next_frame_time = std::time::Instant::now().checked_add(Duration::from_millis(1000 / 60)).unwrap(); + target.set_control_flow(winit::event_loop::ControlFlow::WaitUntil(next_frame_time)); { use glium::Surface as _; @@ -756,11 +739,7 @@ fn main() { target.clear_color_and_depth((0.0, 0.0, 0.0, 1.0), 1.0); // undo/redo - let input = egui.egui_ctx.input(); - let ctrl = input.modifiers.ctrl; - let z = input.key_pressed(egui::Key::Z); - drop(input); - if egui.egui_ctx.memory().focus().is_none() && ctrl && z { + if egui.egui_ctx().memory(|m| m.focus().is_none()) && egui.egui_ctx().input(|i| i.modifiers.ctrl && i.key_pressed(egui::Key::Z)) { undo_history.undo(&mut *pt_gui.model); pt_gui.sanitize_ui_state(); } @@ -804,31 +783,33 @@ fn main() { let rot_only_view_mat = view_mat; // handle user interactions like rotating the camera - let rect = egui.egui_ctx.available_rect(); // the rectangle not covered by egui UI, i.e. the 3d viewport - let input = egui.egui_ctx.input(); - let mouse_pos = input.pointer.hover_pos(); - let mouse_in_3d_viewport = mouse_pos.map_or(false, |hover_pos| rect.contains(hover_pos)); - if rect.is_positive() { - let last_click_pos = input.pointer.press_origin(); - let clicked_in_3d_viewport = last_click_pos.map_or(false, |hover_pos| rect.contains(hover_pos)); - if clicked_in_3d_viewport { - if !input.modifiers.shift && input.pointer.button_down(egui::PointerButton::Secondary) { - pt_gui.camera_heading += input.pointer.delta().x * -0.01; - pt_gui.camera_pitch += input.pointer.delta().y * -0.01; - } else if input.pointer.button_down(egui::PointerButton::Middle) - || input.modifiers.shift && input.pointer.button_down(egui::PointerButton::Secondary) - { - let x = input.pointer.delta().x * -0.003 * pt_gui.camera_scale; // for some reason x gets inverted - let y = input.pointer.delta().y * 0.003 * pt_gui.camera_scale; - - pt_gui.camera_offset += view_mat.transpose().transform_vector(&glm::vec3(x, y, 0.)).into(); + let rect = egui.egui_ctx().available_rect(); // the rectangle not covered by egui UI, i.e. the 3d viewport + let mut mouse_in_3d_viewport = false; + egui.egui_ctx().input(|input| { + let mouse_pos = input.pointer.hover_pos(); + mouse_in_3d_viewport = mouse_pos.map_or(false, |hover_pos| rect.contains(hover_pos)); + if rect.is_positive() { + let last_click_pos = input.pointer.press_origin(); + let clicked_in_3d_viewport = last_click_pos.map_or(false, |hover_pos| rect.contains(hover_pos)); + if clicked_in_3d_viewport { + if !input.modifiers.shift && input.pointer.button_down(egui::PointerButton::Secondary) { + pt_gui.camera_heading += input.pointer.delta().x * -0.01; + pt_gui.camera_pitch += input.pointer.delta().y * -0.01; + } else if input.pointer.button_down(egui::PointerButton::Middle) + || input.modifiers.shift && input.pointer.button_down(egui::PointerButton::Secondary) + { + let x = input.pointer.delta().x * -0.003 * pt_gui.camera_scale; // for some reason x gets inverted + let y = input.pointer.delta().y * 0.003 * pt_gui.camera_scale; + + pt_gui.camera_offset += view_mat.transpose().transform_vector(&glm::vec3(x, y, 0.)).into(); + } + } + if mouse_in_3d_viewport && !pt_gui.import_window.open { + pt_gui.camera_scale *= 1.0 + (input.raw_scroll_delta.y * -0.001) } } - if mouse_in_3d_viewport && !pt_gui.import_window.open { - pt_gui.camera_scale *= 1.0 + (input.scroll_delta.y * -0.001) - } - } - drop(input); + }); + let model = &pt_gui.model; if !pt_gui.camera_orthographic { view_mat.append_translation_mut(&glm::vec3(0.0, 0.0, pt_gui.camera_scale)); @@ -837,10 +818,11 @@ fn main() { view_mat.prepend_translation_mut(&glm::vec3(-pt_gui.camera_offset.x, -pt_gui.camera_offset.y, -pt_gui.camera_offset.z)); view_mat.prepend_translation_mut(&glm::vec3(-model.visual_center.x, -model.visual_center.y, -model.visual_center.z)); - let mouse_pos = - egui.egui_ctx.input().pointer.hover_pos().map(|pos| { + let mouse_pos = egui.egui_ctx().input(|i| { + i.pointer.hover_pos().map(|pos| { ((pos.x / target.get_dimensions().0 as f32) * 2.0 - 1.0, (pos.y / target.get_dimensions().1 as f32) * 2.0 - 1.0) - }); + }) + }); let mouse_vec = { mouse_pos.map(|pos| { let matrix = (perspective_matrix * view_mat).try_inverse().unwrap(); @@ -858,50 +840,51 @@ fn main() { // start the drag/selection if the user clicked on a lollipop if let Some((vec1, vec2)) = mouse_vec { - if egui.egui_ctx.input().pointer.button_clicked(PointerButton::Primary) { - if let Some(lollipop) = pt_gui.hover_lollipop { - pt_gui.drag_lollipop = Some(lollipop); - let vec = (vec1 - vec2).normalize(); - pt_gui.drag_axis = { - let modifiers = egui.egui_ctx.input().modifiers; - match (modifiers.shift, modifiers.ctrl, modifiers.alt) { - (true, _, _) => DragAxis::YZ, - (_, true, _) => DragAxis::XZ, - (_, _, true) => DragAxis::XY, - _ => match (vec.x, vec.y, vec.z) { - _ if vec.x.abs() > vec.y.abs() && vec.x.abs() > vec.z.abs() => DragAxis::YZ, - _ if vec.y.abs() > vec.x.abs() && vec.y.abs() > vec.z.abs() => DragAxis::XZ, - _ if vec.z.abs() > vec.x.abs() && vec.z.abs() > vec.y.abs() => DragAxis::XY, - _ => DragAxis::YZ, - }, + egui.egui_ctx().input(|input| { + if input.pointer.button_clicked(PointerButton::Primary) { + if let Some(lollipop) = pt_gui.hover_lollipop { + pt_gui.drag_lollipop = Some(lollipop); + let vec = (vec1 - vec2).normalize(); + pt_gui.drag_axis = { + let modifiers = input.modifiers; + match (modifiers.shift, modifiers.ctrl, modifiers.alt) { + (true, _, _) => DragAxis::YZ, + (_, true, _) => DragAxis::XZ, + (_, _, true) => DragAxis::XY, + _ => match (vec.x, vec.y, vec.z) { + _ if vec.x.abs() > vec.y.abs() && vec.x.abs() > vec.z.abs() => DragAxis::YZ, + _ if vec.y.abs() > vec.x.abs() && vec.y.abs() > vec.z.abs() => DragAxis::XZ, + _ if vec.z.abs() > vec.x.abs() && vec.z.abs() > vec.y.abs() => DragAxis::XY, + _ => DragAxis::YZ, + }, + } + }; + pt_gui.drag_start = *lollipop.get_position_ref(&mut pt_gui.model).unwrap(); + if let TreeValue::Turrets(TurretTreeValue::TurretPoint(i, _)) = lollipop { + pt_gui.drag_start += pt_gui.model.get_total_subobj_offset(pt_gui.model.turrets[i].gun_obj); } - }; - pt_gui.drag_start = *lollipop.get_position_ref(&mut pt_gui.model).unwrap(); - if let TreeValue::Turrets(TurretTreeValue::TurretPoint(i, _)) = lollipop { - pt_gui.drag_start += pt_gui.model.get_total_subobj_offset(pt_gui.model.turrets[i].gun_obj); - } - pt_gui.select_new_tree_val(lollipop); - pt_gui.ui_state.properties_panel_dirty = true; + pt_gui.select_new_tree_val(lollipop); + pt_gui.ui_state.properties_panel_dirty = true; + } } - } + }); } // continue the drag if the user is still dragging the lollipop if let Some(drag_lollipop) = pt_gui.drag_lollipop { + let press_origin = egui.egui_ctx().input(|input| input.pointer.press_origin()); + let hover_pos = egui.egui_ctx().input(|input| input.pointer.hover_pos()); + let availble_rect = egui.egui_ctx().available_rect(); + // only drag if they've sufficiently moved the mouse if !pt_gui.actually_dragging - && egui.egui_ctx.input().pointer.press_origin().map_or(false, |origin| { - egui.egui_ctx - .input() - .pointer - .hover_pos() - .map_or(false, |current_pos| current_pos.distance(origin) > 4.) - }) + && press_origin.map_or(false, |origin| hover_pos.map_or(false, |current_pos| current_pos.distance(origin) > 4.)) { pt_gui.actually_dragging = true; } + let primary_down = egui.egui_ctx().input(|input| input.pointer.primary_down()); if pt_gui.actually_dragging { // take into account turret offset let mut maybe_turret_offset = Vec3d::ZERO; @@ -909,9 +892,9 @@ fn main() { maybe_turret_offset = pt_gui.model.get_total_subobj_offset(pt_gui.model.turrets[i].gun_obj); } + let modifiers = egui.egui_ctx().input(|input| input.modifiers); if let Some(vec) = drag_lollipop.get_position_ref(&mut pt_gui.model) { // if the user pressed a hotkey, reset drag_start and use a new axis - let modifiers = egui.egui_ctx.input().modifiers; pt_gui.drag_axis = match (modifiers.shift, modifiers.ctrl, modifiers.alt) { (true, _, _) if pt_gui.drag_axis != DragAxis::YZ => { pt_gui.drag_start = *vec + maybe_turret_offset; @@ -935,13 +918,9 @@ fn main() { DragAxis::XZ => ((*vec + maybe_turret_offset).y - mouse_vec.0.y) / (mouse_vec.1.y - mouse_vec.0.y), DragAxis::XY => ((*vec + maybe_turret_offset).z - mouse_vec.0.z) / (mouse_vec.1.z - mouse_vec.0.z), }; - let hover_pos = egui.egui_ctx.input().pointer.hover_pos(); - let in_3d_viewport = hover_pos.map_or(false, |hover_pos| egui.egui_ctx.available_rect().contains(hover_pos)); - if mouse_pos.is_none() - || !(-1.0..=1.0).contains(&t) - || !egui.egui_ctx.input().pointer.primary_down() - || !in_3d_viewport - { + let in_3d_viewport = hover_pos.map_or(false, |hover_pos| availble_rect.contains(hover_pos)); + + if mouse_pos.is_none() || !(-1.0..=1.0).contains(&t) || !primary_down || !in_3d_viewport { pt_gui.drag_lollipop = None; pt_gui.actually_dragging = false; None @@ -963,7 +942,7 @@ fn main() { } // for when the user releases without dragging - if !egui.egui_ctx.input().pointer.primary_down() { + if !primary_down { pt_gui.drag_lollipop = None; pt_gui.actually_dragging = false; } @@ -1567,13 +1546,13 @@ fn main() { // if there was an error, do this mini event loop and display the error message if let Some((error_string, backtrace)) = &errored { - let repaint_after = egui.run(&display, |ctx| { + egui.run(&window, |ctx| { egui::CentralPanel::default().show(ctx, |ui| { egui::ScrollArea::vertical().auto_shrink([false, false]).show(ui, |ui| { ui.horizontal(|ui| { ui.heading(RichText::new("Error! Please report this!").color(Color32::RED)); if ui.button("Copy").clicked() { - ui.output().copied_text = format!("{}\n\n{:?}", error_string, backtrace); + ui.output_mut(|o| o.copied_text = format!("{}\n\n{:?}", error_string, backtrace)); } }); ui.add_sized(ui.available_size(), TextEdit::multiline(&mut &*format!("{}\n\n{:?}", error_string, backtrace))); @@ -1582,16 +1561,9 @@ fn main() { }); // Needs testing - *control_flow = match repaint_after { - time if time.is_zero() => { - display.gl_window().window().request_redraw(); - glutin::event_loop::ControlFlow::Poll - } - time => match std::time::Instant::now().checked_add(time) { - Some(next_frame_time) => glutin::event_loop::ControlFlow::WaitUntil(next_frame_time), - None => glutin::event_loop::ControlFlow::Wait, - }, - }; + let next_frame_time = std::time::Instant::now().checked_add(Duration::from_millis(1000 / 60)).unwrap(); + target.set_control_flow(winit::event_loop::ControlFlow::WaitUntil(next_frame_time)); + let mut target = display.draw(); use glium::Surface as _; target.clear_color_and_depth((0.0, 0.0, 0.0, 1.0), 1.0); @@ -1602,38 +1574,19 @@ fn main() { } }; - match event { - // Platform-dependent event handlers to workaround a winit bug - // See: https://github.com/rust-windowing/winit/issues/987 - // See: https://github.com/rust-windowing/winit/issues/1619 - glutin::event::Event::RedrawEventsCleared if cfg!(windows) => catch_redraw(), - glutin::event::Event::RedrawRequested(_) if !cfg!(windows) => catch_redraw(), - glutin::event::Event::DeviceEvent { .. } => { - // match event { - // glutin::event::DeviceEvent::Added => todo!(), - // glutin::event::DeviceEvent::Removed => todo!(), - // glutin::event::DeviceEvent::MouseMotion { delta } => todo!(), - // glutin::event::DeviceEvent::MouseWheel { delta } => todo!(), - // glutin::event::DeviceEvent::Motion { axis, value } => todo!(), - // glutin::event::DeviceEvent::Button { button, state } => todo!(), - // glutin::event::DeviceEvent::Key(_) => todo!(), - // glutin::event::DeviceEvent::Text { codepoint } => todo!(), - // } + if let winit::event::Event::WindowEvent { event, .. } = event { + match event { + winit::event::WindowEvent::RedrawRequested => catch_redraw(), + winit::event::WindowEvent::CloseRequested => target.exit(), + _ => {} } - glutin::event::Event::WindowEvent { event, .. } => { - if let WindowEvent::CloseRequested = event { - *control_flow = glium::glutin::event_loop::ControlFlow::Exit; - } - - egui.on_event(&event); - - display.gl_window().window().request_redraw(); // TODO: ask egui if the events warrants a repaint instead + if egui.on_event(&window, &event).repaint { + window.request_redraw(); // TODO: ask egui if the events warrants a repaint instead } - - _ => (), - }; + } }); + result.unwrap(); } // based on the current selection which submodels should be displayed @@ -1782,7 +1735,7 @@ impl PofToolsGui { result } - fn maybe_recalculate_3d_helpers(&mut self, display: &Display) { + fn maybe_recalculate_3d_helpers(&mut self, display: &Display) { if self.buffer_objects.is_empty() { return; } @@ -1891,7 +1844,7 @@ impl PofToolsGui { model.thruster_banks.iter().enumerate().flat_map(|(bank_idx, thruster_bank)| { thruster_bank.glows.iter().enumerate().map(move |(point_idx, thruster_point)| { let position = thruster_point.position; - let normal = thruster_point.normal * thruster_point.radius * 2.0; + let normal = thruster_point.normal.0 * thruster_point.radius * 2.0; let mut radius = thruster_point.radius; if hover_lollipop == Some(TreeValue::Thrusters(ThrusterTreeValue::BankPoint(bank_idx, point_idx))) { radius = radius * 1.1 + 0.4 @@ -2311,8 +2264,8 @@ struct Graphics { fov_shader: glium::Program, } impl Graphics { - fn init(display: &Display) -> Self { - fn load_img(display: &Display, bytes: &[u8]) -> SrgbTexture2d { + fn init(display: &Display) -> Self { + fn load_img(display: &Display, bytes: &[u8]) -> SrgbTexture2d { let image = image::load(Cursor::new(bytes), image::ImageFormat::Png).unwrap().to_rgba8(); let image_dimensions = image.dimensions(); let image_raw = image.into_raw(); diff --git a/src/ui.rs b/src/ui.rs index 2d35fea..803225d 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -1,11 +1,12 @@ use egui::{collapsing_header::CollapsingState, Color32, Id, Label, RichText}; use glium::{ + glutin::surface::WindowSurface, texture::{RawImage2d, SrgbTexture2d}, Display, }; use pof::{ - properties_get_field, Dock, Error, EyePoint, GlowPoint, GlowPointBank, Path, PathPoint, SpecialPoint, SubObject, TextureId, ThrusterBank, - ThrusterGlow, Turret, Vec3d, Version, Warning, WeaponHardpoint, + properties_get_field, Dock, Error, EyePoint, GlowPoint, GlowPointBank, NormalVec3, Path, PathPoint, SpecialPoint, SubObject, TextureId, + ThrusterBank, ThrusterGlow, Turret, Vec3d, Version, Warning, WeaponHardpoint, }; use std::{ collections::HashMap, @@ -13,6 +14,7 @@ use std::{ hash::Hash, sync::mpsc::Receiver, }; +use winit::window::Window; use eframe::egui::{self, Button, TextStyle, Ui}; use pof::ObjectId; @@ -83,6 +85,19 @@ impl TreeValue { _ => None, } } + pub fn get_direction_ref<'a>(&self, model: &'a mut Model) -> Option<&'a mut NormalVec3> { + match *self { + TreeValue::Weapons(WeaponTreeValue::PriBankPoint(i, j)) => Some(&mut model.primary_weps[i][j].normal), + TreeValue::Weapons(WeaponTreeValue::SecBankPoint(i, j)) => Some(&mut model.secondary_weps[i][j].normal), + TreeValue::DockingBays(DockingTreeValue::Bay(i)) => Some(&mut model.docking_bays[i].fvec), + TreeValue::Thrusters(ThrusterTreeValue::BankPoint(i, j)) => Some(&mut model.thruster_banks[i].glows[j].normal), + // TreeValue::Glows(GlowTreeValue::BankPoint(i, j)) => Some(&mut model.glow_banks[i].glow_points[j].normal), + TreeValue::Turrets(TurretTreeValue::Turret(i)) => Some(&mut model.turrets[i].normal), + TreeValue::Turrets(TurretTreeValue::TurretPoint(i, _)) => Some(&mut model.turrets[i].normal), + TreeValue::EyePoints(EyeTreeValue::EyePoint(i)) => Some(&mut model.eye_points[i].normal), + _ => None, + } + } // returns what, if any, tree_value best corresponds to a given error fn from_error(error: &Error) -> Option { match error { @@ -547,7 +562,7 @@ impl std::ops::DerefMut for PofToolsGui { } } impl PofToolsGui { - pub fn new(display: &Display, ctx: &egui::Context) -> Self { + pub fn new(display: &Display, ctx: &egui::Context) -> Self { Self { model: Box::new(Model { pof_model: pof::Model::default(), @@ -569,7 +584,7 @@ impl PofToolsGui { let pixels = image_buffer.as_flat_samples(); egui::ColorImage::from_rgba_unmultiplied(size, pixels.as_slice()) }, - egui::TextureFilter::Linear, + egui::TextureOptions::LINEAR, ) }, camera_pitch: Default::default(), @@ -751,6 +766,10 @@ pub enum UndoAction { tree_val: TreeValue, delta_vec: Vec3d, }, + RotateLollipop { + tree_val: TreeValue, + dir_vec: NormalVec3, + }, IxBAction(IndexingButtonsAction), ChangeTextures { id_map: HashMap, @@ -780,6 +799,15 @@ impl undo::Action for UndoAction { Err("No position ref for tree_val") } } + UndoAction::RotateLollipop { tree_val, dir_vec } => { + let vec_ref = tree_val.get_direction_ref(target); + if let Some(vec) = vec_ref { + *vec = *dir_vec; + Ok(()) + } else { + Err("No position ref for tree_val") + } + } UndoAction::IxBAction(action) => { use IndexingButtonsAction::*; match action { @@ -821,6 +849,10 @@ impl undo::Action for UndoAction { *vec1 += *vec2; undo::Merged::Yes } + ( + UndoAction::RotateLollipop { tree_val: tree_val1, dir_vec: vec1 }, + UndoAction::RotateLollipop { tree_val: tree_val2, dir_vec: vec2 }, + ) if tree_val1 == tree_val2 => undo::Merged::Yes, _ => undo::Merged::No, } } @@ -892,7 +924,7 @@ impl PofToolsGui { // ===================================================== // The big top-level function for drawing and interacting with all of the UI // ==================================================== - pub fn show_ui(&mut self, ctx: &egui::Context, display: &Display, undo_history: &mut undo::History) { + pub fn show_ui(&mut self, ctx: &egui::Context, window: &Window, display: &Display, undo_history: &mut undo::History) { egui::TopBottomPanel::top("menu").default_height(33.0).min_height(33.0).show(ctx, |ui| { Ui::add_space(ui, 6.0); ui.horizontal(|ui| { @@ -914,10 +946,7 @@ impl PofToolsGui { let new_filename = PofToolsGui::save_model(&self.model); if let Some(filename) = new_filename { - display - .gl_window() - .window() - .set_title(&format!("Pof Tools v{} - {}", POF_TOOLS_VERSION, filename)); + window.set_title(&format!("Pof Tools v{} - {}", POF_TOOLS_VERSION, filename)); } ui.close_menu(); } @@ -931,7 +960,7 @@ impl PofToolsGui { if self.ui_state.show_import_window(&self.model, ctx) { self.merge_import_model(); self.import_window.open = false; - self.finish_loading_model(display); + self.finish_loading_model(window, display); self.model.recalc_semantic_name_links(); } diff --git a/src/ui_import.rs b/src/ui_import.rs index b877633..dad5328 100644 --- a/src/ui_import.rs +++ b/src/ui_import.rs @@ -385,7 +385,7 @@ impl UiState { .contains(&TreeValue::SubObjects(SubObjectTreeValue::SubObject(glow_bank.obj_parent))) { let was_already_on_detail0 = - import_model.as_ref().unwrap().header.detail_levels.get(0) == Some(&glow_bank.obj_parent); + import_model.as_ref().unwrap().header.detail_levels.first() == Some(&glow_bank.obj_parent); if !was_already_on_detail0 { warnings.push( RichText::new(format!( @@ -1232,8 +1232,8 @@ impl PofToolsGui { .model .header .detail_levels - .get(0) - .or_else(|| self.model.sub_objects.get(0).map(|sobj| &sobj.obj_id)) + .first() + .or_else(|| self.model.sub_objects.first().map(|sobj| &sobj.obj_id)) { g_bank.obj_parent = *id; } else { diff --git a/src/ui_properties_panel.rs b/src/ui_properties_panel.rs index 1760718..6ee3334 100644 --- a/src/ui_properties_panel.rs +++ b/src/ui_properties_panel.rs @@ -1,8 +1,10 @@ #![allow(clippy::unnecessary_lazy_evaluations)] use std::collections::HashMap; +use std::hash::Hash; use std::str::FromStr; use egui::{style::Widgets, text::LayoutJob, CollapsingHeader, Color32, DragValue, Label, Response, RichText, TextEdit, TextFormat, TextStyle, Ui}; +use glium::glutin::surface::WindowSurface; use glium::Display; use nalgebra_glm::TMat4; use pof::{ @@ -75,7 +77,7 @@ impl IndexingButtonsResponse { } } - pub fn get_new_ui_idx(&self, data_vec: &Vec) -> Option + pub fn get_new_ui_idx(&self, data_vec: &[T]) -> Option where T: Default, { @@ -102,6 +104,28 @@ impl IndexingButtonsResponse { } } +// fn text_edit_single_numeric(ui: &mut Ui, id: impl Hash, string: &mut String) -> Response { +// let response = text_edit_single(ui, id, string); +// string.retain(|c| c.is_ascii_digit() || c == '.' || c == ',' || c.is_whitespace()); +// response +// } + +fn text_edit_single(ui: &mut Ui, id: impl Hash, string: &mut String) -> Response { + let id = egui::Id::new(id); + let text_edit = egui::TextEdit::singleline(string).id(id); + let response = ui.add(text_edit); + egui::TextEdit::load_state(ui.ctx(), id).unwrap().clear_undoer(); + response +} + +fn text_edit_multi(ui: &mut Ui, id: impl Hash, string: &mut String, desired_rows: usize) -> Response { + let id = egui::Id::new(id); + let text_edit = egui::TextEdit::multiline(string).desired_rows(desired_rows).id(id); + let response = ui.add(text_edit); + egui::TextEdit::load_state(ui.ctx(), id).unwrap().clear_undoer(); + response +} + impl UiState { fn set_widget_color(ui: &mut Ui, color: Color32) { ui.visuals_mut().widgets.hovered.fg_stroke.color = color; @@ -214,20 +238,6 @@ impl UiState { ret } - // a text edit field attached to a model value that will show up red if it cannot parse - fn parsable_text_edit(ui: &mut Ui, model_value: &mut T, parsable_string: &mut String) -> bool { - if parsable_string.parse::().is_err() { - ui.visuals_mut().override_text_color = Some(ERROR_RED); - } - if ui.text_edit_singleline(parsable_string).changed() { - if let Ok(value) = parsable_string.parse() { - *model_value = value; - return true; - } - } - false - } - // a combo box for subobjects // selector value is a convenience option to disable the combo box, since most properties panels work on a current selection of Option fn subobject_combo_box( @@ -272,7 +282,7 @@ impl UiState { } fn model_value_edit( - viewport_3d_dirty: &mut bool, ui: &mut Ui, active_warning: bool, model_value: Option<&mut T>, parsable_string: &mut String, + id: impl Hash, viewport_3d_dirty: &mut bool, ui: &mut Ui, active_warning: bool, model_value: Option<&mut T>, parsable_string: &mut String, ) -> Response { if let Some(value) = model_value { if parsable_string.parse::().is_err() { @@ -280,7 +290,8 @@ impl UiState { } else if active_warning { ui.visuals_mut().override_text_color = Some(WARNING_YELLOW); } - let response = ui.text_edit_singleline(parsable_string); + + let response = text_edit_single(ui, id, parsable_string); if response.changed() { if let Ok(parsed_string) = parsable_string.parse() { *value = parsed_string; @@ -860,7 +871,7 @@ impl PropertiesPanel { impl PofToolsGui { pub(crate) fn do_properties_panel( - &mut self, ui: &mut egui::Ui, ctx: &egui::Context, display: &Display, undo_history: &mut undo::History, + &mut self, ui: &mut egui::Ui, ctx: &egui::Context, display: &Display, undo_history: &mut undo::History, ) { let mut reload_textures = false; let mut buffer_ids_to_rebuild = vec![]; @@ -909,6 +920,7 @@ impl PofToolsGui { ui.horizontal(|ui| { ui.label("Min:"); let response = UiState::model_value_edit( + "header bbox min", &mut self.ui_state.viewport_3d_dirty, ui, self.model.warnings.contains(&Warning::BBoxTooSmall(None)), @@ -925,6 +937,7 @@ impl PofToolsGui { ui.horizontal(|ui| { ui.label("Max:"); let response = UiState::model_value_edit( + "header bbox max", &mut self.ui_state.viewport_3d_dirty, ui, self.model.warnings.contains(&Warning::BBoxTooSmall(None)), @@ -962,6 +975,7 @@ impl PofToolsGui { }); let response = UiState::model_value_edit( + "header radius", &mut self.ui_state.viewport_3d_dirty, ui, self.model.warnings.contains(&Warning::RadiusTooSmall(None)), @@ -981,7 +995,14 @@ impl PofToolsGui { self.ui_state.properties_panel_dirty = true; } }); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, Some(&mut self.model.header.mass), mass_string); + UiState::model_value_edit( + "header mass", + &mut self.ui_state.viewport_3d_dirty, + ui, + false, + Some(&mut self.model.header.mass), + mass_string, + ); ui.horizontal(|ui| { ui.add(egui::Label::new("Moment of Inertia:")); @@ -991,6 +1012,7 @@ impl PofToolsGui { } }); UiState::model_value_edit( + "header moi rvec", &mut self.ui_state.viewport_3d_dirty, ui, false, @@ -998,6 +1020,7 @@ impl PofToolsGui { moir_string, ); UiState::model_value_edit( + "header moi uvec", &mut self.ui_state.viewport_3d_dirty, ui, false, @@ -1005,6 +1028,7 @@ impl PofToolsGui { moiu_string, ); UiState::model_value_edit( + "header moi fvec", &mut self.ui_state.viewport_3d_dirty, ui, false, @@ -1183,7 +1207,7 @@ impl PofToolsGui { } ui.label(text); let old_name = self.model.sub_objects[id].name.clone(); - if ui.add(egui::TextEdit::singleline(&mut self.model.sub_objects[id].name)).changed() { + if text_edit_single(ui, "subobj name", &mut self.model.sub_objects[id].name).changed() { self.model.recheck_warnings(One(Warning::SubObjectNameTooLong(id))); self.model.recheck_errors(One(Error::UnnamedSubObject(id))); self.model.recheck_errors(One(Error::DuplicateSubobjectName(old_name))); @@ -1253,6 +1277,7 @@ impl PofToolsGui { ui.horizontal(|ui| { ui.label("Min:"); let response = UiState::model_value_edit( + "subobj bbox min", &mut self.ui_state.viewport_3d_dirty, ui, false, @@ -1269,6 +1294,7 @@ impl PofToolsGui { ui.horizontal(|ui| { ui.label("Max:"); let response = UiState::model_value_edit( + "subobj bbox max", &mut self.ui_state.viewport_3d_dirty, ui, false, @@ -1303,7 +1329,7 @@ impl PofToolsGui { // Offset edit ================================================================ ui.horizontal_wrapped(|ui| { - if self.model.header.detail_levels.get(0).map_or(false, |id| selected_id == Some(*id)) + if self.model.header.detail_levels.first().map_or(false, |id| selected_id == Some(*id)) && self.model.warnings.contains(&Warning::Detail0NonZeroOffset) { ui.visuals_mut().override_text_color = Some(WARNING_YELLOW); @@ -1328,7 +1354,8 @@ impl PofToolsGui { if offset_string.parse::().is_err() { ui.visuals_mut().override_text_color = Some(ERROR_RED); } - let response = ui.text_edit_singleline(offset_string); + + let response = text_edit_single(ui, "subobj offset", offset_string); if response.changed() { if let Ok(parsed_string) = offset_string.parse() { if self.ui_state.move_only_offset { @@ -1374,6 +1401,7 @@ impl PofToolsGui { }); let response = UiState::model_value_edit( + "subobj radius", &mut self.ui_state.viewport_3d_dirty, ui, self.model.warnings.contains(&Warning::RadiusTooSmall(selected_id)), @@ -1452,10 +1480,7 @@ impl PofToolsGui { if self.model.sub_objects[id].uvec_fvec().is_some() { self.ui_state.display_uvec_fvec = true; } - if ui - .add(egui::TextEdit::multiline(&mut self.model.sub_objects[id].properties).desired_rows(2)) - .changed() - { + if text_edit_multi(ui, "subobj props", &mut self.model.sub_objects[id].properties, 2).changed() { self.model.recheck_warnings(One(Warning::SubObjectPropertiesTooLong(id))); self.ui_state.viewport_3d_dirty = true; // There may be changes to the uvec/fvec }; @@ -1674,7 +1699,7 @@ impl PofToolsGui { }; ui.label("Texture Name:"); - if UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, tex, texture_name).changed() + if UiState::model_value_edit("textures texture name", &mut self.ui_state.viewport_3d_dirty, ui, false, tex, texture_name).changed() && self.model.untextured_idx.is_some() && self.ui_state.tree_view_selection == TreeValue::Textures(TextureTreeValue::Texture(self.model.untextured_idx.unwrap())) { @@ -1716,7 +1741,7 @@ impl PofToolsGui { if self.model.warnings.contains(&Warning::ThrusterPropertiesInvalidVersion(bank)) { UiState::set_widget_color(ui, WARNING_YELLOW); } - if ui.text_edit_singleline(engine_subsys_string).changed() { + if text_edit_single(ui, "thrusters engine subsys", engine_subsys_string).changed() { pof::properties_update_field(&mut self.model.thruster_banks[bank].properties, "$engine_subsystem", engine_subsys_string); self.model.recheck_warnings(One(Warning::ThrusterPropertiesTooLong(bank))); self.model.recheck_warnings(One(Warning::ThrusterPropertiesInvalidVersion(bank))); @@ -1760,11 +1785,11 @@ impl PofToolsGui { }; ui.label("Radius:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, radius, radius_string); + UiState::model_value_edit("thrusters radius", &mut self.ui_state.viewport_3d_dirty, ui, false, radius, radius_string); ui.label("Position:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, pos, position_string); + UiState::model_value_edit("thrusters position", &mut self.ui_state.viewport_3d_dirty, ui, false, pos, position_string); ui.label("Normal:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, norm, normal_string); + UiState::model_value_edit("thrusters normal", &mut self.ui_state.viewport_3d_dirty, ui, false, norm, normal_string); if let Some(response) = bank_idx_response { let new_idx = response.get_new_ui_idx(&self.model.thruster_banks); @@ -1854,11 +1879,12 @@ impl PofToolsGui { }; ui.label("Position:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, pos, position_string); + UiState::model_value_edit("weapons position", &mut self.ui_state.viewport_3d_dirty, ui, false, pos, position_string); ui.label("Normal:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, norm, normal_string); + UiState::model_value_edit("weapons normal", &mut self.ui_state.viewport_3d_dirty, ui, false, norm, normal_string); ui.label("Offset:"); let offset_changed = UiState::model_value_edit( + "weapons angle offset", &mut self.ui_state.viewport_3d_dirty, ui, self.model.pof_model.warnings.contains(&Warning::WeaponOffsetInvalidVersion { @@ -1937,7 +1963,7 @@ impl PofToolsGui { ui.horizontal(|ui| { ui.label("Name:"); if let Some(bay) = bay_num { - if ui.text_edit_singleline(name_string).changed() { + if text_edit_single(ui, "docking bay name", name_string).changed() { pof::properties_update_field(&mut self.model.docking_bays[bay].properties, "$name", name_string); self.model.recheck_warnings(One(Warning::DockingBayNameTooLong(bay))); self.model.recheck_warnings(One(Warning::DockingBayPropertiesTooLong(bay))); @@ -2041,11 +2067,11 @@ impl PofToolsGui { ui.label("Position:"); let pos = bay_num.map(|num| &mut self.model.docking_bays[num].position); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, pos, position_string); + UiState::model_value_edit("docking bay position", &mut self.ui_state.viewport_3d_dirty, ui, false, pos, position_string); ui.label(RichText::new("Forward Vector:").color(Color32::from_rgb(140, 150, 210))); let norm = bay_num.map(|num| &mut self.model.docking_bays[num].fvec); - if UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, norm, fvec_string).changed() { + if UiState::model_value_edit("docking bay fvec", &mut self.ui_state.viewport_3d_dirty, ui, false, norm, fvec_string).changed() { let bay = &mut self.model.docking_bays[bay_num.unwrap()]; bay.uvec = Dock::orthonormalize(&bay.uvec.0.into(), &bay.fvec.0.into()); *uvec_ang = bay.get_uvec_angle().to_degrees() % 360.0 @@ -2083,7 +2109,7 @@ impl PofToolsGui { job.append(".", 0.0, TextFormat::default()); ui.label(job); - ui.image(&self.dock_demo_img, self.dock_demo_img.size_vec2()); + ui.image(&self.dock_demo_img); if let Some(response) = bay_idx_response { let new_idx = response.get_new_ui_idx(&self.model.docking_bays); @@ -2126,7 +2152,7 @@ impl PofToolsGui { ui.label("Glow Texture:"); if let Some(bank) = bank_num { - if ui.add(egui::TextEdit::singleline(glow_texture_string).desired_rows(1)).changed() { + if text_edit_single(ui, "glows tex name", glow_texture_string).changed() { pof::properties_update_field(&mut self.model.glow_banks[bank].properties, "$glow_texture", glow_texture_string); self.model.recheck_warnings(One(Warning::GlowBankPropertiesTooLong(bank))); } @@ -2156,12 +2182,12 @@ impl PofToolsGui { ui.horizontal(|ui| { ui.label("LOD:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, lod, lod_string); + UiState::model_value_edit("glows lod", &mut self.ui_state.viewport_3d_dirty, ui, false, lod, lod_string); }); ui.horizontal(|ui| { ui.label("Type:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, glow_type, glow_type_string); + UiState::model_value_edit("glows type", &mut self.ui_state.viewport_3d_dirty, ui, false, glow_type, glow_type_string); }); ui.separator(); @@ -2172,16 +2198,16 @@ impl PofToolsGui { } ui.label("Displacement Time:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, disp_time, disp_time_string); + UiState::model_value_edit("glows disp time", &mut self.ui_state.viewport_3d_dirty, ui, false, disp_time, disp_time_string); ui.horizontal(|ui| { ui.label("On Time:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, on_time, on_time_string); + UiState::model_value_edit("glows on time", &mut self.ui_state.viewport_3d_dirty, ui, false, on_time, on_time_string); }); ui.horizontal(|ui| { ui.label("Off Time:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, off_time, off_time_string); + UiState::model_value_edit("glows off time", &mut self.ui_state.viewport_3d_dirty, ui, false, off_time, off_time_string); }); ui.separator(); @@ -2222,11 +2248,11 @@ impl PofToolsGui { ui.add_space(10.0); ui.label("Radius:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, radius, radius_string); + UiState::model_value_edit("glows radius", &mut self.ui_state.viewport_3d_dirty, ui, false, radius, radius_string); ui.label("Position:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, pos, position_string); + UiState::model_value_edit("glows position", &mut self.ui_state.viewport_3d_dirty, ui, false, pos, position_string); ui.label("Normal:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, norm, normal_string); + UiState::model_value_edit("glows normal", &mut self.ui_state.viewport_3d_dirty, ui, false, norm, normal_string); if let Some(response) = bank_idx_response { let new_idx = response.get_new_ui_idx(&self.model.glow_banks); @@ -2264,7 +2290,7 @@ impl PofToolsGui { ui.horizontal(|ui| { ui.label("Name:"); if let Some(point) = point_num { - if ui.add(egui::TextEdit::singleline(&mut self.model.special_points[point].name)).changed() { + if text_edit_single(ui, "specpoint name", &mut self.model.special_points[point].name).changed() { self.model.recheck_warnings(One(Warning::SpecialPointNameTooLong(point))); } } else { @@ -2331,9 +2357,9 @@ impl PofToolsGui { (None, None) }; ui.label("Radius:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, radius, radius_string); + UiState::model_value_edit("specpoint radius", &mut self.ui_state.viewport_3d_dirty, ui, false, radius, radius_string); ui.label("Position:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, pos, position_string); + UiState::model_value_edit("specpoint position", &mut self.ui_state.viewport_3d_dirty, ui, false, pos, position_string); if let Some(response) = spec_point_idx_response { let new_idx = response.get_new_ui_idx(&self.model.special_points); @@ -2415,7 +2441,7 @@ impl PofToolsGui { }; ui.label("Normal:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, norm, normal_string); + UiState::model_value_edit("turret normal", &mut self.ui_state.viewport_3d_dirty, ui, false, norm, normal_string); ui.separator(); ui.add(Label::new(RichText::new("Turret Fire Points").text_style(TextStyle::Button))); @@ -2433,7 +2459,7 @@ impl PofToolsGui { }; ui.label("Position:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, pos, position_string); + UiState::model_value_edit("turret position", &mut self.ui_state.viewport_3d_dirty, ui, false, pos, position_string); if let Some(response) = turret_idx_response { let new_idx = response.get_new_ui_idx(&self.model.turrets); @@ -2513,9 +2539,9 @@ impl PofToolsGui { }; ui.label("Radius:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, radius, radius_string); + UiState::model_value_edit("path radius", &mut self.ui_state.viewport_3d_dirty, ui, false, radius, radius_string); ui.label("Position:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, pos, position_string); + UiState::model_value_edit("path position", &mut self.ui_state.viewport_3d_dirty, ui, false, pos, position_string); if let Some(response) = path_idx_response { if let IndexingButtonsResponse::Delete(idx) = response { @@ -2564,9 +2590,9 @@ impl PofToolsGui { }; ui.label("Detail Level:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, lod, lod_string); + UiState::model_value_edit("insignia lod", &mut self.ui_state.viewport_3d_dirty, ui, false, lod, lod_string); ui.label("Offset:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, offset, offset_string); + UiState::model_value_edit("insignia offset", &mut self.ui_state.viewport_3d_dirty, ui, false, offset, offset_string); } PropertiesPanel::EyePoint { position_string, normal_string, attached_subobj_idx } => { ui.heading("Eye Point"); @@ -2612,9 +2638,9 @@ impl PofToolsGui { (None, None) }; ui.label("Position:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, pos, position_string); + UiState::model_value_edit("eye position", &mut self.ui_state.viewport_3d_dirty, ui, false, pos, position_string); ui.label("Normal:"); - UiState::model_value_edit(&mut self.ui_state.viewport_3d_dirty, ui, false, norm, normal_string); + UiState::model_value_edit("eye normal", &mut self.ui_state.viewport_3d_dirty, ui, false, norm, normal_string); if let Some(response) = eye_idx_response { let new_idx = response.get_new_ui_idx(&self.model.eye_points); @@ -2634,9 +2660,14 @@ impl PofToolsGui { ui.label("The visual center is treated as the center for things like the targeting box, or tech room."); - if UiState::parsable_text_edit(ui, &mut self.model.visual_center, position) { - self.viewport_3d_dirty = true; - } + UiState::model_value_edit( + "viscenter position", + &mut self.ui_state.viewport_3d_dirty, + ui, + false, + Some(&mut self.model.visual_center), + position, + ); } PropertiesPanel::Comments => { ui.heading("Comments");