From 9de14b06f3e52c19dd5d0ab50aa63dd82627f73f Mon Sep 17 00:00:00 2001 From: elijah-thomas774 Date: Sun, 28 Jan 2024 23:41:29 -0500 Subject: [PATCH] Rust Rewrite --- .gitignore | 9 +- Cargo.lock | 3604 ++++++++++++++++++++++++++++++++++ Cargo.toml | 18 + LICENSE | 2 +- Makefile | 23 - rustfmt.toml | 10 + src/jpa/jpac2_11/bem.rs | 107 + src/jpa/jpac2_11/bsp.rs | 294 +++ src/jpa/jpac2_11/esp.rs | 131 ++ src/jpa/jpac2_11/etx.rs | 38 + src/jpa/jpac2_11/fld.rs | 93 + src/jpa/jpac2_11/kfa.rs | 103 + src/jpa/jpac2_11/mod.rs | 141 ++ src/jpa/jpac2_11/resource.rs | 45 + src/jpa/jpac2_11/ssp.rs | 112 ++ src/jpa/jpac2_11/tdb.rs | 45 + src/jpa/jpac2_11/tex.rs | 75 + src/jpa/mod.rs | 75 + src/main.rs | 153 ++ ui/basicGUI.ui | 260 --- ui/ui_basicGUI.h | 148 -- 21 files changed, 5053 insertions(+), 433 deletions(-) create mode 100644 Cargo.lock create mode 100644 Cargo.toml delete mode 100644 Makefile create mode 100644 rustfmt.toml create mode 100644 src/jpa/jpac2_11/bem.rs create mode 100644 src/jpa/jpac2_11/bsp.rs create mode 100644 src/jpa/jpac2_11/esp.rs create mode 100644 src/jpa/jpac2_11/etx.rs create mode 100644 src/jpa/jpac2_11/fld.rs create mode 100644 src/jpa/jpac2_11/kfa.rs create mode 100644 src/jpa/jpac2_11/mod.rs create mode 100644 src/jpa/jpac2_11/resource.rs create mode 100644 src/jpa/jpac2_11/ssp.rs create mode 100644 src/jpa/jpac2_11/tdb.rs create mode 100644 src/jpa/jpac2_11/tex.rs create mode 100644 src/jpa/mod.rs create mode 100644 src/main.rs delete mode 100644 ui/basicGUI.ui delete mode 100644 ui/ui_basicGUI.h diff --git a/.gitignore b/.gitignore index 1e7be2e..6b49b8b 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,11 @@ dump/* *.json *.jpc -Release* \ No newline at end of file +Release* +/dump +/output +navi_table.dat + +# Added by cargo + +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..0243377 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,3604 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ab_glyph" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80179d7dd5d7e8c285d67c4a1e652972a92de7475beddfb92028c76463b13225" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +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" +dependencies = [ + "enumn", + "serde", +] + +[[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", +] + +[[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 = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "serde", + "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 = "android-activity" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39b801912a977c3fd52d80511fe1c0c8480c6f957f21ae2ce1b92ffe970cf4b9" +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 = "anstream" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" + +[[package]] +name = "anstyle-parse" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "arboard" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aafb29b107435aa276664c1db8954ac27a6e105cdad3c88287a199eb0e313c08" +dependencies = [ + "clipboard-win", + "log", + "objc", + "objc-foundation", + "objc_id", + "parking_lot", + "thiserror", + "winapi", + "x11rb 0.12.0", +] + +[[package]] +name = "array-init" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d62b7694a562cdf5a74227903507c56ab2cc8bdd1f781ed5cb4cf9c9f810bfc" + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + +[[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.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" +dependencies = [ + "concurrent-queue", + "event-listener 4.0.3", + "event-listener-strategy", + "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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb41eb19024a91746eba0773aa5e16036045bbf45733766661099e182ea6a744" +dependencies = [ + "async-lock 3.3.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.2.0", + "parking", + "polling 3.3.2", + "rustix 0.38.30", + "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", + "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.30", + "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.48", +] + +[[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.0", + "async-lock 2.8.0", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 0.38.30", + "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.48", +] + +[[package]] +name = "atk-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "251e0b7d90e33e0ba930891a505a9a35ece37b2dd37a14f3ffc306c13b980009" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[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" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "binrw" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173901312e9850391d4d7c1318c4e099fdc037d61870fca427429830efdb4e5f" +dependencies = [ + "array-init", + "binrw_derive", + "bytemuck", +] + +[[package]] +name = "binrw_derive" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb515fdd6f8d3a357c8e19b8ec59ef53880807864329b1cb1cba5c53bf76557e" +dependencies = [ + "either", + "owo-colors", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bitflags" +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.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + +[[package]] +name = "bytemuck" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "cairo-sys-rs" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "calloop" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" +dependencies = [ + "bitflags 2.4.2", + "log", + "polling 3.3.2", + "rustix 0.38.30", + "slab", + "thiserror", +] + +[[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.30", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "jobserver", + "libc", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfg-expr" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6100bc57b6209840798d95cb2775684849d332f7bd788db2a8c8caf7ef82a41a" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +dependencies = [ + "libc", +] + +[[package]] +name = "clipboard-win" +version = "4.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362" +dependencies = [ + "error-code", + "str-buf", + "winapi", +] + +[[package]] +name = "cocoa" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" +dependencies = [ + "bitflags 1.3.2", + "block", + "cocoa-foundation", + "core-foundation", + "core-graphics", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" +dependencies = [ + "bitflags 1.3.2", + "block", + "core-foundation", + "core-graphics-types", + "libc", + "objc", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "combine" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +dependencies = [ + "bytes", + "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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[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", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[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 = "cursor-icon" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading", +] + +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + +[[package]] +name = "ecolor" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57539aabcdbb733b6806ef421b66dec158dc1582107ad6d51913db3600303354" +dependencies = [ + "bytemuck", + "serde", +] + +[[package]] +name = "eframe" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79c00143a1d564cf27570234c9a199cbe75dc3d43a135510fb2b93406a87ee8e" +dependencies = [ + "bytemuck", + "cocoa", + "egui", + "egui-winit", + "egui_glow", + "glow", + "glutin", + "glutin-winit", + "image", + "js-sys", + "log", + "objc", + "parking_lot", + "percent-encoding", + "raw-window-handle 0.5.2", + "static_assertions", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winapi", + "winit", +] + +[[package]] +name = "egui" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0bf640ed7f3bf3d14ebf00d73bacc09c886443ee84ca6494bde37953012c9e3" +dependencies = [ + "accesskit", + "ahash", + "epaint", + "log", + "nohash-hasher", + "serde", +] + +[[package]] +name = "egui-winit" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d95d9762056c541bd2724de02910d8bccf3af8e37689dc114b21730e64f80a0" +dependencies = [ + "accesskit_winit", + "arboard", + "egui", + "log", + "raw-window-handle 0.5.2", + "smithay-clipboard", + "web-time", + "webbrowser", + "winit", +] + +[[package]] +name = "egui_extras" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "753c36d3e2f7a32425af5290af2e52efb3471ea3a263b87f003b5433351b0fd7" +dependencies = [ + "egui", + "enum-map", + "log", + "mime_guess2", + "serde", +] + +[[package]] +name = "egui_glow" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb2ef815e80d117339c7d6b813f7678d23522d699ccd3243e267ef06166009b9" +dependencies = [ + "bytemuck", + "egui", + "glow", + "log", + "memoffset 0.7.1", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[package]] +name = "emath" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ee58355767587db7ba3738930d93cad3052cd834c2b48b9ef6ef26fe4823b7e" +dependencies = [ + "bytemuck", + "serde", +] + +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", + "serde", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "enumflags2" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5998b4f30320c9d93aed72f63af821bfdac50465b75428fce77b48ec482c3939" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "enumn" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "env_filter" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eeb342678d785662fd2514be38c459bb925f02b68dd2a3e0f21d7ef82d979dd" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "humantime", + "log", +] + +[[package]] +name = "epaint" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e638cb066bff0903bbb6143116cfd134a42279c7d68f19c0352a94f15a402de7" +dependencies = [ + "ab_glyph", + "ahash", + "bytemuck", + "ecolor", + "emath", + "log", + "nohash-hasher", + "parking_lot", + "serde", +] + +[[package]] +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 = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "error-code" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21" +dependencies = [ + "libc", + "str-buf", +] + +[[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 = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" +dependencies = [ + "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-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 = "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 = "fdeflate" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[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 = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-lite" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba" +dependencies = [ + "fastrand 2.0.1", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +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.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31ff856cb3386dae1703a920f803abafcc580e9b5f711ca62ed1620c25b51ff2" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[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.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb65d4ba3173c56a500b555b532f72c42e8d1fe64962b518897f8959fae2c177" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "gethostname" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +dependencies = [ + "libc", + "windows-targets 0.48.5", +] + +[[package]] +name = "getrandom" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gio-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + +[[package]] +name = "glib-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "glow" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glutin" +version = "0.31.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "005459a22af86adc706522d78d360101118e2638ec21df3852fcc626e0dbb212" +dependencies = [ + "bitflags 2.4.2", + "cfg_aliases", + "cgl", + "core-foundation", + "dispatch", + "glutin_egl_sys", + "glutin_glx_sys", + "glutin_wgl_sys", + "icrate", + "libloading", + "objc2 0.4.1", + "once_cell", + "raw-window-handle 0.5.2", + "wayland-sys", + "windows-sys 0.48.0", + "x11-dl", +] + +[[package]] +name = "glutin-winit" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebcdfba24f73b8412c5181e56f092b5eff16671c514ce896b258a0a64bd7735" +dependencies = [ + "cfg_aliases", + "glutin", + "raw-window-handle 0.5.2", + "winit", +] + +[[package]] +name = "glutin_egl_sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77cc5623f5309ef433c3dd4ca1223195347fe62c413da8e2fdd0eb76db2d9bcd" +dependencies = [ + "gl_generator", + "windows-sys 0.48.0", +] + +[[package]] +name = "glutin_glx_sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a165fd686c10dcc2d45380b35796e577eacfd43d4660ee741ec8ebe2201b3b4f" +dependencies = [ + "gl_generator", + "x11-dl", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "gobject-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gtk-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771437bf1de2c1c0b496c11505bdf748e26066bbe942dfc8f614c9460f6d7722" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[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 = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "icrate" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319" +dependencies = [ + "block2 0.3.0", + "dispatch", + "objc2 0.4.1", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "image" +version = "0.24.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "034bbe799d1909622a74d1193aa50147769440040ff36cb2baa947609b0a4e23" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-traits", + "png", +] + +[[package]] +name = "indexmap" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +dependencies = [ + "libc", +] + +[[package]] +name = "jpac2_editor" +version = "0.1.0" +dependencies = [ + "bincode", + "binrw", + "byteorder", + "eframe", + "egui", + "egui_extras", + "env_logger", + "rfd", + "serde", + "to-binary", +] + +[[package]] +name = "js-sys" +version = "0.3.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[package]] +name = "libc" +version = "0.2.152" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" + +[[package]] +name = "libloading" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "libredox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" +dependencies = [ + "bitflags 2.4.2", + "libc", + "redox_syscall 0.4.1", +] + +[[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 = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "memchr" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" + +[[package]] +name = "memmap2" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45fd3a57831bf88bc63f8cebc0cf956116276e97fef3966103e96416209f7c92" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess2" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a3333bb1609500601edc766a39b4c1772874a4ce26022f4d866854dc020c41" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "ndk" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" +dependencies = [ + "bitflags 2.4.2", + "jni-sys", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset 0.7.1", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "num-traits" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "objc-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +dependencies = [ + "block", + "objc", + "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_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +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 = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "owned_ttf_parser" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4586edfe4c648c71797a74c84bacb32b52b212eff5dfe2bb9f2c599844023e7" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "owo-colors" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" + +[[package]] +name = "pango-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.4.1", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project-lite" +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 = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand 2.0.1", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb" + +[[package]] +name = "png" +version = "0.17.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f6c3c3e617595665b8ea2ff95a86066be38fb121ff920a9c0eb282abcd1da5a" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[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.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "545c980a3880efd47b2e262f6a4bb6daad6555cf3367aa9c4e52895f69537a41" +dependencies = [ + "cfg-if", + "concurrent-queue", + "pin-project-lite", + "rustix 0.38.30", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.0", +] + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +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 = "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 = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "regex" +version = "1.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b7fa1134405e2ec9353fd416b17f8dacd46c473d7d3fd1cf202706a14eb792a" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "rfd" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0d8ab342bcc5436e04d3a4c1e09e17d74958bfaddf8d5fad6f85607df0f994f" +dependencies = [ + "block", + "dispatch", + "glib-sys", + "gobject-sys", + "gtk-sys", + "js-sys", + "log", + "objc", + "objc-foundation", + "objc_id", + "raw-window-handle 0.5.2", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustix" +version = "0.37.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" +dependencies = [ + "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.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" +dependencies = [ + "bitflags 2.4.2", + "errno", + "libc", + "linux-raw-sys 0.4.13", + "windows-sys 0.52.0", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sctk-adwaita" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b2eaf3a5b264a521b988b2e73042e742df700c4f962cde845d1541adb46550" +dependencies = [ + "ab_glyph", + "log", + "memmap2", + "smithay-client-toolkit", + "tiny-skia", +] + +[[package]] +name = "serde" +version = "1.0.195" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.195" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "serde_repr" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "serde_spanned" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +dependencies = [ + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slotmap" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" + +[[package]] +name = "smithay-client-toolkit" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60e3d9941fa3bacf7c2bf4b065304faa14164151254cd16ce1b1bc8fc381600f" +dependencies = [ + "bitflags 2.4.2", + "calloop", + "calloop-wayland-source", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 0.38.30", + "thiserror", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-clipboard" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb62b280ce5a5cba847669933a0948d00904cf83845c944eae96a4738cea1a6" +dependencies = [ + "libc", + "smithay-client-toolkit", + "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]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "str-buf" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" + +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "system-deps" +version = "6.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2d580ff6a20c55dfb86be5f9c238f67835d0e81cbdea8bf5680e0897320331" +dependencies = [ + "cfg-expr", + "heck", + "pkg-config", + "toml", + "version-compare", +] + +[[package]] +name = "target-lexicon" +version = "0.12.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" + +[[package]] +name = "tempfile" +version = "3.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" +dependencies = [ + "cfg-if", + "fastrand 2.0.1", + "redox_syscall 0.4.1", + "rustix 0.38.30", + "windows-sys 0.52.0", +] + +[[package]] +name = "thiserror" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "tiny-skia" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6a067b809476893fce6a254cf285850ff69c847e6cfbade6a20b655b6c7e80d" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de35e8a90052baaaf61f171680ac2f8e925a1e43ea9d2e3a00514772250e541" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "to-binary" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4424552bc848fd1afbcd81f0e8a54b7401b90fd81bb418655ad6dc6d0823bbe3" +dependencies = [ + "hex", +] + +[[package]] +name = "toml" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.21.0", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "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.48", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", +] + +[[package]] +name = "ttf-parser" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[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 = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "version-compare" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" + +[[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.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.48", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" + +[[package]] +name = "wayland-backend" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19152ddd73f45f024ed4534d9ca2594e0ef252c1847695255dae47f34df9fbe4" +dependencies = [ + "cc", + "downcast-rs", + "nix", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ca7d52347346f5473bf2f56705f360e8440873052e575e55890c4fa57843ed3" +dependencies = [ + "bitflags 2.4.2", + "nix", + "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.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44aa20ae986659d6c77d64d808a046996a932aa763913864dc40c359ef7ad5b" +dependencies = [ + "nix", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e253d7107ba913923dc253967f35e8561a3c65f914543e46843c88ddd729e21c" +dependencies = [ + "bitflags 2.4.2", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +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 = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" +dependencies = [ + "bitflags 2.4.2", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb8e28403665c9f9513202b7e1ed71ec56fde5c107816843fb14057910b2c09c" +dependencies = [ + "proc-macro2", + "quick-xml", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" +dependencies = [ + "dlib", + "log", + "once_cell", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" +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 = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-wsapoll" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-implement" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2ee588991b9e7e6c8338edf3333fbe4da35dc72092643958ebb43f0ab2c49c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[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.109", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[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.0", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + +[[package]] +name = "winit" +version = "0.29.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c824f11941eeae66ec71111cc2674373c772f482b58939bb4066b642aa2ffcf" +dependencies = [ + "ahash", + "android-activity", + "atomic-waker", + "bitflags 2.4.2", + "bytemuck", + "calloop", + "cfg_aliases", + "core-foundation", + "core-graphics", + "cursor-icon", + "icrate", + "js-sys", + "libc", + "log", + "memmap2", + "ndk", + "ndk-sys", + "objc2 0.4.1", + "once_cell", + "orbclient", + "percent-encoding", + "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", + "redox_syscall 0.3.5", + "rustix 0.38.30", + "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", + "web-time", + "windows-sys 0.48.0", + "x11-dl", + "x11rb 0.13.0", + "xkbcommon-dl", +] + +[[package]] +name = "winnow" +version = "0.5.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16" +dependencies = [ + "memchr", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "x11rb" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1641b26d4dec61337c35a1b1aaf9e3cba8f46f0b43636c609ab0291a648040a" +dependencies = [ + "gethostname 0.3.0", + "nix", + "winapi", + "winapi-wsapoll", + "x11rb-protocol 0.12.0", +] + +[[package]] +name = "x11rb" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a" +dependencies = [ + "as-raw-xcb-connection", + "gethostname 0.4.3", + "libc", + "libloading", + "once_cell", + "rustix 0.38.30", + "x11rb-protocol 0.13.0", +] + +[[package]] +name = "x11rb-protocol" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d6c3f9a0fb6701fab8f6cea9b0c0bd5d6876f1f89f7fada07e558077c344bc" +dependencies = [ + "nix", +] + +[[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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" + +[[package]] +name = "xdg-home" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2769203cd13a0c6015d515be729c526d041e9cf2c0cc478d57faee85f40c6dcd" +dependencies = [ + "nix", + "winapi", +] + +[[package]] +name = "xkbcommon-dl" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6924668544c48c0133152e7eec86d644a056ca3d09275eb8d5cdb9855f9d8699" +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.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" + +[[package]] +name = "zbus" +version = "3.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31de390a2d872e4cd04edd71b425e29853f786dc99317ed72d73d6fcf5ebb948" +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.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d1794a946878c0e807f55a397187c11fc7a038ba5d868e7db4f3bd7760bc9d" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "regex", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb80bb776dbda6e23d705cf0123c3b95df99c4ebeaec6c2599d4a5419902b4a9" +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.48", +] + +[[package]] +name = "zvariant" +version = "3.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44b291bee0d960c53170780af148dca5fa260a63cdd24f1962fa82e03e53338c" +dependencies = [ + "byteorder", + "enumflags2", + "libc", + "serde", + "static_assertions", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "3.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "934d7a7dfc310d6ee06c87ffe88ef4eca7d3e37bb251dece2ef93da8f17d8ecd" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", + "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.109", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..831e384 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "jpac2_editor" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +bincode = "1.3.3" +binrw = "0.13.3" +byteorder = "1.5.0" +eframe = "0.25.0" +egui = "0.25.0" +egui_extras = "0.25.0" +env_logger = "0.11.0" +rfd = "0.13.0" +serde = "1.0.195" +to-binary = "0.4.0" diff --git a/LICENSE b/LICENSE index b000d30..bfe57a9 100644 --- a/LICENSE +++ b/LICENSE @@ -6,7 +6,7 @@ The file used for reference is linked in the repo, with permission from Jasper. The json library used is from the Niels Lohmann, also under the MIT license. This is also linked in the repo for use. -Copyright (c) 2023 Elijah Thomas +Copyright (c) 2024 Elijah Thomas Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Makefile b/Makefile deleted file mode 100644 index fa1835f..0000000 --- a/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -JPAC2_Editor: buffer.o jsonBase.o jsonToJpc.o jpcToJson.o jpc.o main.o - g++ buffer.o jsonBase.o jsonToJpc.o jpcToJson.o jpc.o main.o -o JPAC2_Editor -Iinclude/ -Wno-multichar -static -static-libgcc -static-libstdc++ - -main.o: src/main.cpp - g++ -c src/main.cpp -Iinclude/ -Wno-multichar -buffer.o: src/buffer.cpp include/buffer.hpp - g++ -c src/buffer.cpp -Iinclude/ -Wno-multichar -jsonBase.o: src/jsonBase.cpp include/jsonBase.hpp - g++ -c src/jsonBase.cpp -Iinclude/ -Wno-multichar -jsonToJpc.o: src/jsonToJpc.cpp include/jsonToJpc.hpp - g++ -c src/jsonToJpc.cpp -Iinclude/ -Wno-multichar -jpcToJson.o: src/jpcToJson.cpp include/jpcToJson.hpp - g++ -c src/jpcToJson.cpp -Iinclude/ -Wno-multichar -jpc.o: src/jpc.cpp include/jpc.hpp - g++ -c src/jpc.cpp -Iinclude/ -Wno-multichar - -debug: - g++ src/*.cpp -o debug -Iinclude/ -Wno-multichar -g - -all: - g++ src/*.cpp -o test -Iinclude/ -Wno-multichar -g -clean: - -rm -f *.o core *.core \ No newline at end of file diff --git a/rustfmt.toml b/rustfmt.toml new file mode 100644 index 0000000..5a2d591 --- /dev/null +++ b/rustfmt.toml @@ -0,0 +1,10 @@ +combine_control_expr = false +comment_width = 79 +enum_discrim_align_threshold = 32 +force_multiline_blocks = true +hex_literal_case = "Upper" +match_block_trailing_comma = true +newline_style = "Unix" +normalize_comments = true +struct_field_align_threshold = 32 +wrap_comments = true \ No newline at end of file diff --git a/src/jpa/jpac2_11/bem.rs b/src/jpa/jpac2_11/bem.rs new file mode 100644 index 0000000..33232d2 --- /dev/null +++ b/src/jpa/jpac2_11/bem.rs @@ -0,0 +1,107 @@ +use binrw::binrw; +use egui::{CollapsingHeader, DragValue, RichText, Ui}; +use std::fmt::Debug; + +#[binrw] +#[brw(big)] +#[derive(Debug)] +pub struct BEM1 { + #[br(temp, assert(size == 0x7C))] + #[bw(calc = 0x7C)] + size: u32, // 0x04 + pub emit_flags: u32, // 0x08 + pub unk_flags: u32, // 0x0C + pub scale: [f32; 3], // 0x10 + pub trans: [f32; 3], // 0x1C + pub direction: [f32; 3], // 0x28 + pub initial_vel_omni: f32, // 0x34 + pub initial_vel_axis: f32, // 0x38 + pub initial_vel_rndm: f32, // 0x3C + pub initial_vel_dir: f32, // 0x40 + pub spread: f32, // 0x44 + pub initial_vel_ratio: f32, // 0x48 + pub rate: f32, // 0x4C + pub rate_rndm: f32, // 0x50 + pub life_time_rndm: f32, // 0x54 + pub volume_sweep: f32, // 0x58 + pub volume_min_rad: f32, // 0x5C + pub air_resist: f32, // 0x60 + pub moment_rndm: f32, // 0x64 + pub emitter_rot: [i16; 3], // 0x68 + pub max_frame: i16, // 0x6E + pub start_frame: i16, // 0x70 + pub life_time: i16, // 0x72 + pub volume_size: i16, // 0x74 + pub div_number: i16, // 0x76 + #[brw(pad_after = 3)] + pub rate_step: u8, // 0x78 +} + +fn add_f32_edit_ui(name: &str, val: &mut f32, ui: &mut Ui) { + ui.horizontal(|ui| { + ui.label(name); + ui.add(DragValue::new(val).speed(1)) + }); +} +fn add_i16_edit_ui(name: &str, val: &mut i16, ui: &mut Ui) { + ui.horizontal(|ui| { + ui.label(name); + ui.add(DragValue::new(val).speed(1)) + }); +} + +fn add_f32_arr3_ui(name: &str, arr: &mut [f32; 3], ui: &mut Ui) { + ui.horizontal(|ui| { + ui.label(name); + ui.add(DragValue::new(&mut arr[0]).speed(1).prefix("x: ")); + ui.add(DragValue::new(&mut arr[1]).speed(1).prefix("y: ")); + ui.add(DragValue::new(&mut arr[2]).speed(1).prefix("z: ")); + }); +} +fn add_i16_arr3_ui(name: &str, arr: &mut [i16; 3], ui: &mut Ui) { + ui.horizontal(|ui| { + ui.label(name); + ui.add(DragValue::new(&mut arr[0]).speed(1).prefix("x: ")); + ui.add(DragValue::new(&mut arr[1]).speed(1).prefix("y: ")); + ui.add(DragValue::new(&mut arr[2]).speed(1).prefix("z: ")); + }); +} + +impl BEM1 { + pub fn show_editor(&mut self, ui: &mut Ui) { + CollapsingHeader::new("Dynamics").show(ui, |ui| { + ui.label(RichText::new(format!("Emitter Flags: {:08X}", self.emit_flags)).monospace()); + ui.label(RichText::new(format!("Unknown Flags: {:08X}", self.unk_flags)).monospace()); + add_f32_arr3_ui("Scale: ", &mut self.scale, ui); + add_f32_arr3_ui("Translation: ", &mut self.trans, ui); + add_f32_arr3_ui("Direction: ", &mut self.direction, ui); + add_f32_edit_ui("Velocity Omni: ", &mut self.initial_vel_omni, ui); + add_f32_edit_ui("Velocity Axis: ", &mut self.initial_vel_axis, ui); + add_f32_edit_ui("Velocity Random: ", &mut self.initial_vel_rndm, ui); + add_f32_edit_ui("Velocity Direction: ", &mut self.initial_vel_dir, ui); + add_f32_edit_ui("Spread: ", &mut self.spread, ui); + add_f32_edit_ui("Velocity Ratio: ", &mut self.initial_vel_ratio, ui); + add_f32_edit_ui("Rate: ", &mut self.rate, ui); + add_f32_edit_ui("Rate Random: ", &mut self.rate_rndm, ui); + add_f32_edit_ui("Life Time Random: ", &mut self.life_time_rndm, ui); + add_f32_edit_ui("Volume Sweep: ", &mut self.volume_sweep, ui); + add_f32_edit_ui("Volume Min Radius: ", &mut self.volume_min_rad, ui); + add_f32_edit_ui("Air Resistance: ", &mut self.air_resist, ui); + add_f32_edit_ui("Moment Random: ", &mut self.moment_rndm, ui); + add_i16_arr3_ui("Emitter Rotation: ", &mut self.emitter_rot, ui); + add_i16_edit_ui("Max Frame", &mut self.max_frame, ui); + add_i16_edit_ui("Start Frame", &mut self.start_frame, ui); + add_i16_edit_ui("Life Time", &mut self.life_time, ui); + add_i16_edit_ui("Volume Size", &mut self.volume_size, ui); + add_i16_edit_ui("Division Number", &mut self.div_number, ui); + ui.horizontal(|ui| { + ui.label("Rate Step: "); + ui.add( + DragValue::new(&mut self.rate_step) + .speed(1) + .clamp_range(u8::MIN..=u8::MAX), + ) + }); + }); + } +} diff --git a/src/jpa/jpac2_11/bsp.rs b/src/jpa/jpac2_11/bsp.rs new file mode 100644 index 0000000..dfefe49 --- /dev/null +++ b/src/jpa/jpac2_11/bsp.rs @@ -0,0 +1,294 @@ +use binrw::binrw; +use egui::{CollapsingHeader, Color32, DragValue, Response, RichText, Ui}; +use std::fmt::Debug; + +#[binrw] +#[brw(big)] +#[derive(Debug)] +pub struct BSP1TexScrollAnmData { + pub initial_trans: [f32; 2], + pub initial_scale: [f32; 2], + pub initial_rot: f32, + pub increment_trans: [f32; 2], + pub increment_scale: [f32; 2], + pub increment_rot: f32, +} + +impl BSP1TexScrollAnmData { + pub fn show_editor(&mut self, ui: &mut Ui) { + CollapsingHeader::new("Texture Animation Data").show(ui, |ui| { + ui.horizontal(|ui| { + ui.label("Initial Translation: "); + ui.add( + DragValue::new(&mut self.initial_trans[0]) + .speed(1) + .prefix("x: "), + ); + ui.add( + DragValue::new(&mut self.initial_trans[1]) + .speed(1) + .prefix("y: "), + ); + }); + ui.horizontal(|ui| { + ui.label("Initial Scale: "); + ui.add( + DragValue::new(&mut self.initial_scale[0]) + .speed(1) + .prefix("x: "), + ); + ui.add( + DragValue::new(&mut self.initial_scale[1]) + .speed(1) + .prefix("y: "), + ); + }); + ui.horizontal(|ui| { + ui.label("Initial Rotation: "); + ui.add(DragValue::new(&mut self.initial_rot).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Increment Translation: "); + ui.add( + DragValue::new(&mut self.increment_trans[0]) + .speed(1) + .prefix("x: "), + ); + ui.add( + DragValue::new(&mut self.increment_trans[1]) + .speed(1) + .prefix("y: "), + ); + }); + ui.horizontal(|ui| { + ui.label("Increment Scale: "); + ui.add( + DragValue::new(&mut self.increment_scale[0]) + .speed(1) + .prefix("x: "), + ); + ui.add( + DragValue::new(&mut self.increment_scale[1]) + .speed(1) + .prefix("y: "), + ); + }); + ui.horizontal(|ui| { + ui.label("Increment Rotation: "); + ui.add(DragValue::new(&mut self.increment_rot).speed(1)); + }); + }); + } +} + +#[binrw] +#[brw(big)] +#[derive(Default)] +pub struct FrameColor { + frame: u16, + #[br(temp)] + #[bw(calc = [color.r(), color.g(), color.b(), color.a()])] + color_temp: [u8; 4], + #[bw(ignore)] + #[br(calc = Color32::from_rgba_premultiplied(color_temp[0], color_temp[1], color_temp[2], color_temp[3]))] + color: Color32, +} + +impl FrameColor { + fn show_editor(&mut self, ui: &mut Ui) -> Response { + ui.horizontal(|ui| { + ui.label("Frame: "); + ui.add( + DragValue::new(&mut self.frame) + .speed(1) + .clamp_range(0..=u16::MAX), + ); + ui.label(RichText::new(format!("Color : {}", self.color.to_hex())).monospace()); + ui.color_edit_button_srgba(&mut self.color); + ui.button(RichText::new("X").color(Color32::RED)) + }) + .inner + } +} + +impl Debug for FrameColor { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("FrameColor") + .field("frame", &self.frame) + .field( + "color", + &format!( + "{:08X?}", + &[self.color[0], self.color[1], self.color[2], self.color[3]] + ), + ) + .finish() + } +} + +#[binrw] +#[brw(big, stream = s)] +#[derive(Debug)] +pub struct BSP1 { + #[br(temp)] + #[bw(calc = (0x34 // Base Size + + if flags & 0x0400_0000 != 0 { 0x28 } else { 0x00 } // Texture Scroll Anim Data + + ((tex_idx_anim_data.len() + 3) & !3) // Texture Anim Data + + if color_flags & 0x02 != 0 {(color_prm_data.len()*6 + 3) & !3} else { 0 } // Color Prm Table + + if color_flags & 0x08 != 0 {(color_env_data.len()*6 + 3) & !3} else { 0 } // Color Env Table + ) as u32)] + _size: u32, // 0x04 + flags: u32, // 0x08 + #[bw(calc = if color_flags & 0x02 != 0 { 0x34 + if flags & 0x0400_0000 != 0 {0x28} else {0} + ((tex_idx_anim_data.len() +3 ) & !3)} else {0} as u16)] + _color_prm_offs: u16, // 0x0C + #[bw(calc = if color_flags & 0x08 != 0 {0x34 + if flags & 0x0400_0000 != 0 {0x28} else {0} + ((tex_idx_anim_data.len() + 3) & !3) + ((color_prm_data.len()*6 + 3) & !3)} else {0} as u16)] + _color_env_offs: u16, // 0x0E + base_size: [f32; 2], // 0x10 + blend_mode_flags: u16, // 0x18 + alpha_cmpr_flags: u8, // 0x1A + alpha_ref_0: u8, // 0x1B + alpha_ref_1: u8, // 0x1C + z_mode_flags: u8, // 0x1D + tex_flags: u8, // 0x1E + #[br(temp)] + #[bw(calc = tex_idx_anim_data.len() as u8)] + tex_idx_anm_count: u8, // 0x1F + tex_idx: u8, // 0x20 + color_flags: u8, // 0x21 + #[br(temp)] + #[bw(calc = color_prm_data.len() as u8)] + color_prm_data_count: u8, // 0x22 + #[br(temp)] + #[bw(calc = color_env_data.len() as u8)] + color_env_data_count: u8, // 0x23 + color_anm_max_frame: u16, // 0x24 + #[br(temp)] + #[bw(calc = [color_prm.r(), color_prm.g(), color_prm.b(), color_prm.a()])] + color_prm_temp: [u8; 4], // 0x26 + #[br(temp)] + #[bw(calc = [color_env.r(), color_env.g(), color_env.b(), color_env.a()])] + color_env_temp: [u8; 4], // 0x2A + #[br(calc = Color32::from_rgba_premultiplied(color_prm_temp[0], color_prm_temp[1], color_prm_temp[2], color_prm_temp[3]))] + #[bw(ignore)] + color_prm: Color32, + #[br(calc = Color32::from_rgba_premultiplied(color_env_temp[0], color_env_temp[1], color_env_temp[2], color_env_temp[3]))] + #[bw(ignore)] + color_env: Color32, + anm_rndm: u8, // 0x2E + color_loop_offset_mask: u8, // 0x2F + #[brw(pad_after = 3)] + tex_idx_loop_offset_mask: u8, // 0x30 + #[brw(if((flags & 0x0400_0000) != 0))] + tex_scroll_anm_data: Option, + #[br(count = tex_idx_anm_count)] + #[brw(align_after = 0x4)] + tex_idx_anim_data: Vec, // 0x34 + 0x28? + #[brw(if(color_flags & 0x02 != 0))] + #[br(count = color_prm_data_count)] + #[brw(align_after = 4)] + color_prm_data: Vec, + #[brw(if(color_flags & 0x08 != 0))] + #[brw(align_after = 4)] + #[br(count = color_env_data_count)] + color_env_data: Vec, +} + +impl BSP1 { + pub fn show_editor(&mut self, ui: &mut Ui) { + CollapsingHeader::new("Base Shape").show(ui, |ui| { + ui.label(RichText::new(format!("Flags: {:08X}", self.flags)).monospace()); + ui.horizontal(|ui| { + ui.label("Size: "); + ui.add( + DragValue::new(&mut self.base_size[0]) + .speed(1) + .prefix("x: "), + ); + ui.add( + DragValue::new(&mut self.base_size[1]) + .speed(1) + .prefix("y: "), + ); + }); + ui.label( + RichText::new(format!("Blend Mode Flags: {:#04X}", self.blend_mode_flags)) + .monospace(), + ); + ui.label(format!( + "Alpha Compare Flags: {:#02X}", + self.alpha_cmpr_flags + )); + ui.label( + RichText::new(format!("Z Mode Flags: {:#02X}", self.z_mode_flags)).monospace(), + ); + ui.label(RichText::new(format!("Texture Flags: {:#02X}", self.tex_flags)).monospace()); + ui.horizontal(|ui| { + ui.label("Alpha Ref values: "); + ui.add(DragValue::new(&mut self.alpha_ref_0).speed(1).prefix("0: ")); + ui.add(DragValue::new(&mut self.alpha_ref_0).speed(1).prefix("1: ")); + }); + ui.label(format!("Textures Index: {} ", self.tex_idx)); + ui.label(RichText::new(format!("Color Flags: {:#02X}", self.color_flags)).monospace()); + ui.horizontal(|ui| { + ui.label("Color Animation Frame Count: "); + ui.add(DragValue::new(&mut self.anm_rndm).speed(1)); + }); + ui.label(format!("Anim Random: {}", self.anm_rndm)); + ui.horizontal(|ui| { + ui.label( + RichText::new(format!("Color Prm: {}", self.color_prm.to_hex())).monospace(), + ); + ui.color_edit_button_srgba(&mut self.color_prm); + }); + ui.horizontal(|ui| { + ui.label( + RichText::new(format!("Color Env: {}", self.color_env.to_hex())).monospace(), + ); + ui.color_edit_button_srgba(&mut self.color_env); + }); + if let Some(extra_data) = &mut self.tex_scroll_anm_data { + extra_data.show_editor(ui); + } + + ui.label(format!( + "Texture Index: {:?}", + self.tex_idx_anim_data.as_slice() + )); + + CollapsingHeader::new("Color Prm Table").show(ui, |ui| { + let mut delete_pressed: Option = None; + for n in 0..self.color_prm_data.len() { + if self.color_prm_data[n].show_editor(ui).clicked() { + delete_pressed = Some(n); + } + } + if let Some(idx) = delete_pressed { + self.color_prm_data.remove(idx); + } + if ui + .button(RichText::new("+").color(Color32::GREEN)) + .clicked() + { + self.color_prm_data.push(FrameColor::default()); + } + }); + CollapsingHeader::new("Color Env Table").show(ui, |ui| { + let mut delete_pressed: Option = None; + for n in 0..self.color_env_data.len() { + if self.color_env_data[n].show_editor(ui).clicked() { + delete_pressed = Some(n); + } + } + if let Some(idx) = delete_pressed { + self.color_env_data.remove(idx); + } + if ui + .button(RichText::new("+").color(Color32::GREEN)) + .clicked() + { + self.color_env_data.push(FrameColor::default()); + } + }); + }); + } +} diff --git a/src/jpa/jpac2_11/esp.rs b/src/jpa/jpac2_11/esp.rs new file mode 100644 index 0000000..1a25cde --- /dev/null +++ b/src/jpa/jpac2_11/esp.rs @@ -0,0 +1,131 @@ +use binrw::binrw; +use egui::{CollapsingHeader, DragValue, RichText, Ui}; +use std::fmt::Debug; + +#[binrw] +#[brw(big)] +#[derive(Debug)] +pub struct ESP1 { + #[br(temp, assert(size == 0x60))] + #[bw(calc = 0x60)] + size: u32, // 0x04 + pub flags: u32, // 0x08 + pub scale_in_timing: f32, // 0x0C + pub scale_out_timing: f32, // 0x10 + pub scale_in_value_x: f32, // 0x14 + pub scale_out_value_x: f32, // 0x18 + pub scale_in_value_y: f32, // 0x1C + pub scale_out_value_y: f32, // 0x20 + pub scale_out_random: f32, // 0x24 + pub scale_anm_max_frame_x: u16, // 0x28 + pub scale_anm_max_frame_y: u16, // 0x2A + pub alpha_in_timing: f32, // 0x2C + pub alpha_out_timing: f32, // 0x30 + pub alpha_in_value: f32, // 0x34 + pub alpha_base_value: f32, // 0x38 + pub alpha_out_value: f32, // 0x3C + pub alpha_wave_random: f32, // 0x44 + pub alpha_wave_frequency: f32, // 0x40 + pub alpha_wave_amplitude: f32, // 0x48 + pub rotate_angle: f32, // 0x4C + pub rotate_angle_random: f32, // 0x50 + pub rotate_speed: f32, // 0x54 + pub rotate_speed_random: f32, // 0x58 + pub rotate_direction: f32, // 0x5C +} + +impl ESP1 { + pub fn show_editor(&mut self, ui: &mut Ui) { + CollapsingHeader::new("Extra Shape").show(ui, |ui| { + ui.label(RichText::new(format!("Flags: {:08X}", self.flags)).monospace()); + ui.horizontal(|ui| { + ui.label("Scale In Timing: "); + ui.add(DragValue::new(&mut self.scale_in_timing).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Scale Out Timing: "); + ui.add(DragValue::new(&mut self.scale_out_timing).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Scale In X: "); + ui.add(DragValue::new(&mut self.scale_in_value_x).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Scale Out X: "); + ui.add(DragValue::new(&mut self.scale_out_value_x).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Scale In Y: "); + ui.add(DragValue::new(&mut self.scale_in_value_y).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Scale Out Y "); + ui.add(DragValue::new(&mut self.scale_out_value_y).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Scale Out Random: "); + ui.add(DragValue::new(&mut self.scale_out_random).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Scale Animation Frames X: "); + ui.add(DragValue::new(&mut self.scale_anm_max_frame_x).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Scale Animation Frames Y: "); + ui.add(DragValue::new(&mut self.scale_anm_max_frame_y).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Alpha In Timing: "); + ui.add(DragValue::new(&mut self.alpha_in_timing).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Alpha Out Timing: "); + ui.add(DragValue::new(&mut self.alpha_out_timing).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Alpha In: "); + ui.add(DragValue::new(&mut self.alpha_in_value).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Alpha Base: "); + ui.add(DragValue::new(&mut self.alpha_base_value).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Alpha Out: "); + ui.add(DragValue::new(&mut self.alpha_out_value).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Alpha Wave Random: "); + ui.add(DragValue::new(&mut self.alpha_wave_random).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Alpha Wave Frequency: "); + ui.add(DragValue::new(&mut self.alpha_wave_frequency).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Alpha Wave Amplitude: "); + ui.add(DragValue::new(&mut self.alpha_wave_amplitude).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Rotate Angle: "); + ui.add(DragValue::new(&mut self.rotate_angle).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Rotate Angle Random: "); + ui.add(DragValue::new(&mut self.rotate_angle_random).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Rotate Speed: "); + ui.add(DragValue::new(&mut self.rotate_speed).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Rotate Speed Random: "); + ui.add(DragValue::new(&mut self.rotate_speed_random).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Rotate Direction: "); + ui.add(DragValue::new(&mut self.rotate_direction).speed(1)); + }); + }); + } +} diff --git a/src/jpa/jpac2_11/etx.rs b/src/jpa/jpac2_11/etx.rs new file mode 100644 index 0000000..a922964 --- /dev/null +++ b/src/jpa/jpac2_11/etx.rs @@ -0,0 +1,38 @@ +use binrw::binrw; +use egui::{CollapsingHeader, RichText, Ui}; +use std::fmt::Debug; + +#[binrw] +#[brw(big)] +#[derive(Debug)] +pub struct ETX1 { + #[br(temp, assert(size == 0x50))] + #[bw(calc = 0x50)] + size: u32, // 0x04 + pub flags: u32, // 0x08 + pub values: [f32; 16], // 0x0C + pub unk: u8, // 0x4C + pub scale: i8, // 0x4D + pub ind_tex_id: u8, // 0x4E + #[bw(if(flags & 0x100 != 0, 0))] + pub ind_tex_id_2: u8, // 0x4F +} + +impl ETX1 { + pub fn show_editor(&mut self, ui: &mut Ui) { + CollapsingHeader::new("ExTex").show(ui, |ui| { + ui.label(RichText::new(format!("Flags: {:08X}", self.flags)).monospace()); + ui.label(format!( + "Values:\n\t{:.3?},\n\t{:.3?},\n\t{:.3?},\n\t{:.3?}", + &self.values[0..4], + &self.values[4..8], + &self.values[8..12], + &self.values[12..16] + )); + ui.label(format!("Unk: {:#02X}", self.unk)); + ui.label(format!("Scale: {}", self.scale)); + ui.label(format!("Indirect Texture Index: {}", self.ind_tex_id)); + ui.label(format!("Indirect Texture Index 2: {}", self.ind_tex_id_2)); + }); + } +} diff --git a/src/jpa/jpac2_11/fld.rs b/src/jpa/jpac2_11/fld.rs new file mode 100644 index 0000000..12bec9b --- /dev/null +++ b/src/jpa/jpac2_11/fld.rs @@ -0,0 +1,93 @@ +use binrw::binrw; +use egui::{CollapsingHeader, DragValue, Ui}; +use std::fmt::Debug; + +#[binrw] +#[brw(big)] +#[derive(Debug)] +pub struct FLD1 { + #[br(temp, assert(size==0x44))] + #[bw(calc = 0x44)] + size: u32, // 0x04 + pub flags: u32, // 0x08 + pub position: [f32; 3], // 0x0C + pub distance: [f32; 3], // 0x18 + pub param1: f32, // 0x24 + pub param2: f32, // 0x28 + pub param3: f32, // 0x2C + pub fade_in: f32, // 0x30 + pub fade_out: f32, // 0x34 + pub en_time: f32, // 0x38 + pub dis_time: f32, // 0x3C + pub cycle: f32, // 0x40 +} + +impl FLD1 { + pub fn show_editor(&mut self, block_num: usize, ui: &mut Ui) { + CollapsingHeader::new(format!("Field {block_num}")).show(ui, |ui| { + ui.label(format!("Flags: {:08X}", self.flags)); + + ui.horizontal(|ui| { + ui.label("Position: "); + ui.add( + DragValue::new(&mut self.position[0]) + .speed(1) + .clamp_range(f32::MIN..=f32::MAX) + .prefix("x: "), + ); + ui.add( + DragValue::new(&mut self.position[1]) + .speed(1) + .clamp_range(f32::MIN..=f32::MAX) + .prefix("y: "), + ); + ui.add( + DragValue::new(&mut self.position[2]) + .speed(1) + .clamp_range(f32::MIN..=f32::MAX) + .prefix("z: "), + ); + }); + + ui.horizontal(|ui| { + ui.label("Distance: "); + ui.add(DragValue::new(&mut self.distance[0]).speed(1).prefix("x: ")); + ui.add(DragValue::new(&mut self.distance[1]).speed(1).prefix("y: ")); + ui.add(DragValue::new(&mut self.distance[2]).speed(1).prefix("z: ")); + }); + + ui.horizontal(|ui| { + ui.label("Param 1: "); + ui.add(DragValue::new(&mut self.param1).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Param 2: "); + ui.add(DragValue::new(&mut self.param2).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Param 3: "); + ui.add(DragValue::new(&mut self.param3).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Fade In: "); + ui.add(DragValue::new(&mut self.fade_in).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Fade Out: "); + ui.add(DragValue::new(&mut self.fade_out).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("en_time: "); + ui.add(DragValue::new(&mut self.en_time).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("dis_time: "); + ui.add(DragValue::new(&mut self.dis_time).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Cycle: "); + ui.add(DragValue::new(&mut self.cycle).speed(1)); + }); + }); + } +} diff --git a/src/jpa/jpac2_11/kfa.rs b/src/jpa/jpac2_11/kfa.rs new file mode 100644 index 0000000..e4bb890 --- /dev/null +++ b/src/jpa/jpac2_11/kfa.rs @@ -0,0 +1,103 @@ +use binrw::binrw; +use egui::{Checkbox, CollapsingHeader, ComboBox, Ui}; +use std::fmt::Debug; + +#[binrw] +#[brw(big, repr = u8)] +#[derive(Debug, PartialEq)] +pub enum JPAKeyType { + None = -1, + Rate = 0x00, + VolumeSize = 0x01, + VolumeSweep = 0x02, + VolumeMinRad = 0x03, + LifeTime = 0x04, + Moment = 0x05, + InitialVelOmni = 0x06, + InitialVelAxis = 0x07, + InitialVelDir = 0x08, + Spread = 0x09, + Scale = 0x0A, +} + +#[binrw] +#[brw(big)] +#[derive(Debug)] +pub struct KFA1 { + #[br(temp)] + #[bw(calc = (0xC + ((key_values.len()*4)+3)&!3) as u32)] + _size: u32, + pub key_type: JPAKeyType, + #[br(temp)] + #[bw(calc = (key_values.len()/4) as u8)] + pub key_count: u8, + pub unk_a: u8, + #[br(temp)] + #[bw(calc = if *is_loop_enable {1u8} else {0u8})] + temp_en: u8, + #[br(calc = temp_en != 0)] + #[bw(ignore)] + pub is_loop_enable: bool, + #[br(count = key_count*4)] + pub key_values: Vec, +} + +impl KFA1 { + pub fn show_editor(&mut self, block_num: usize, ui: &mut Ui) { + CollapsingHeader::new(format!("Key Frame {}", block_num)).show(ui, |ui| { + ui.horizontal(|ui| { + ui.label("Key Type:"); + ComboBox::from_label("") + .selected_text(format!("{:?}", self.key_type)) + .show_ui(ui, |ui| { + ui.selectable_value(&mut self.key_type, JPAKeyType::None, "None"); + ui.selectable_value(&mut self.key_type, JPAKeyType::Rate, "Rate"); + ui.selectable_value( + &mut self.key_type, + JPAKeyType::VolumeSize, + "VolumeSize", + ); + ui.selectable_value( + &mut self.key_type, + JPAKeyType::VolumeSweep, + "VolumeSweep", + ); + ui.selectable_value( + &mut self.key_type, + JPAKeyType::VolumeMinRad, + "VolumeMinRad", + ); + ui.selectable_value(&mut self.key_type, JPAKeyType::LifeTime, "LifeTime"); + ui.selectable_value(&mut self.key_type, JPAKeyType::Moment, "Moment"); + ui.selectable_value( + &mut self.key_type, + JPAKeyType::InitialVelOmni, + "InitialVelOmni", + ); + ui.selectable_value( + &mut self.key_type, + JPAKeyType::InitialVelAxis, + "InitialVelAxis", + ); + ui.selectable_value( + &mut self.key_type, + JPAKeyType::InitialVelDir, + "InitialVelDir", + ); + ui.selectable_value(&mut self.key_type, JPAKeyType::Spread, "Spread"); + ui.selectable_value(&mut self.key_type, JPAKeyType::Scale, "Scale"); + }); + }); + ui.label(format!("Unknown 0x0A: {:#02X}", self.unk_a)); + ui.horizontal(|ui| { + ui.label("Loop: "); + ui.add(Checkbox::without_text(&mut self.is_loop_enable)); + }); + let chunks = self.key_values.as_chunks::<4>().0; + ui.label("Key Values: "); + for chunk in chunks { + ui.label(format!("\t{:.3?},", chunk)); + } + }); + } +} diff --git a/src/jpa/jpac2_11/mod.rs b/src/jpa/jpac2_11/mod.rs new file mode 100644 index 0000000..cf49e1a --- /dev/null +++ b/src/jpa/jpac2_11/mod.rs @@ -0,0 +1,141 @@ +use binrw::binrw; +use egui::{CollapsingHeader, Ui}; +use std::{fmt::Debug, io}; + +pub mod bem; +pub mod bsp; +pub mod esp; +pub mod etx; +pub mod fld; +pub mod kfa; +pub mod resource; +pub mod ssp; +pub mod tdb; +pub mod tex; + +use resource::JPAResource; +use tex::JPATexture; + +use self::resource::DataBlock; + +use super::Selected; + +#[binrw] +#[brw(big, stream = s)] +#[derive(Debug)] +pub struct JPAC { + #[br(temp)] + #[bw(calc = resources.len() as u16)] + pub resource_count: u16, + #[br(temp)] + #[bw(calc = textures.len() as u16)] + pub texture_count: u16, + #[br(temp)] + #[bw(calc = 0)] // Will return to write after + pub texture_offset: u32, + #[br(count = resource_count)] + #[bw(align_after = 0x20)] + pub resources: Vec, + #[br(ignore)] + #[bw(restore_position, calc = {let t = s.stream_position()? as u32; s.seek(io::SeekFrom::Start(0xC))?; t})] + tex_offset_corrected: u32, + #[br(seek_before = io::SeekFrom::Start(texture_offset as _))] + #[br(count = texture_count)] + pub textures: Vec, +} + +impl JPAC { + pub fn show_tree_ui(&mut self, selected: &mut Selected, filter: &mut String, ui: &mut Ui) { + ui.label("Version: JPAC2_11"); + CollapsingHeader::new("Resources") + .default_open(false) + .show(ui, |ui| { + // List all resources + for n in 0..self.resources.len() { + let checked: bool = match *selected { + Selected::Resource(idx) => n == idx, + _ => false, + }; + // Show the label "Resource #" + let name = format!("Resource {}", self.resources[n].res_id); + if name.contains(filter.as_str()) { + if ui.selectable_label(checked, name).clicked() { + *selected = Selected::Resource(n); + } + } + } + }); + CollapsingHeader::new("Textures") + .default_open(false) + .show(ui, |ui| { + // List all Textures + for n in 0..self.textures.len() { + let checked: bool = match *selected { + Selected::Texture(idx) => n == idx, + _ => false, + }; + // Show the Texture name + let name = std::str::from_utf8(&self.textures[n].name) + .expect("Could not read texture name") + .trim(); + if name.contains(filter.as_str()) { + if ui.selectable_label(checked, name).clicked() { + *selected = Selected::Texture(n); + } + } + } + }); + } + pub fn show_edit_ui(&mut self, selected: Selected, ui: &mut Ui) { + match selected { + Selected::Resource(idx) => { + let res = self.resources.get_mut(idx).unwrap(); + let mut num_kfa = 0; + let mut num_fld = 0; + for block in &mut res.blocks { + match block { + DataBlock::Dynamics(bem) => bem.show_editor(ui), + DataBlock::BaseShape(bsp) => bsp.show_editor(ui), + DataBlock::ExTex(etx) => etx.show_editor(ui), + DataBlock::ExtraShape(esp) => esp.show_editor(ui), + DataBlock::ChildShape(ssp) => ssp.show_editor(ui), + DataBlock::TextureDataBase(tdb) => { + tdb.show_editor(&mut res.tdb_count, &self.textures, ui) + }, + DataBlock::Field(fld) => { + fld.show_editor(num_fld, ui); + num_fld += 1; + }, + DataBlock::KeyFrame(kfa) => { + kfa.show_editor(num_kfa, ui); + num_kfa += 1; + }, + } + } + // ui.label(format!("{:#?}", &res)); + }, + Selected::Texture(idx) => { + if let Some(tex) = self.textures.get_mut(idx) { + ui.label(format!("{:#?}", tex)); + } else { + ui.label("Somehow an out of bounds texture was selected"); + } + }, + Selected::None => { + ui.label("Select a Resource or Texture from the left side"); + }, + } + } + + pub fn correct_parsing(&mut self) { + for res in &mut self.resources { + for block in &mut res.blocks { + match block { + // Couldnt figure out arg parsing, but this should work + DataBlock::TextureDataBase(tdb) => tdb.textures.truncate(res.tdb_count.into()), + _ => {}, + } + } + } + } +} diff --git a/src/jpa/jpac2_11/resource.rs b/src/jpa/jpac2_11/resource.rs new file mode 100644 index 0000000..281a4b5 --- /dev/null +++ b/src/jpa/jpac2_11/resource.rs @@ -0,0 +1,45 @@ +use super::{bem, bsp, esp, etx, fld, kfa, ssp, tdb}; +use binrw::binrw; +use std::fmt::Debug; + +#[binrw] +#[brw(big)] +#[derive(Debug)] +pub enum DataBlock { + #[brw(magic = b"BEM1")] + Dynamics(bem::BEM1), + #[brw(magic = b"BSP1")] + BaseShape(bsp::BSP1), + #[brw(magic = b"ESP1")] + ExtraShape(esp::ESP1), + #[brw(magic = b"ETX1")] + ExTex(etx::ETX1), + #[brw(magic = b"SSP1")] + ChildShape(ssp::SSP1), + #[brw(magic = b"FLD1")] + Field(fld::FLD1), + #[brw(magic = b"KFA1")] + KeyFrame(kfa::KFA1), + #[brw(magic = b"TDB1")] + TextureDataBase(tdb::TDB1), +} + +#[binrw] +#[brw(big)] +#[derive(Debug, Default)] +pub struct JPAResource { + pub res_id: u16, + #[br(temp)] + #[bw(calc = blocks.len() as u16)] + block_count: u16, + #[br(temp)] + #[bw(calc = blocks.iter().filter(|&block| match block {DataBlock::Field(_) => true, _=> false}).count() as u8)] + _fld_count: u8, + #[br(temp)] + #[bw(calc = blocks.iter().filter(|&block| match block {DataBlock::KeyFrame(_) => true, _=> false}).count() as u8)] + _kfa_count: u8, + pub tdb_count: u8, + #[brw(pad_before = 1)] + #[br(count = block_count)] + pub blocks: Vec, +} diff --git a/src/jpa/jpac2_11/ssp.rs b/src/jpa/jpac2_11/ssp.rs new file mode 100644 index 0000000..1260825 --- /dev/null +++ b/src/jpa/jpac2_11/ssp.rs @@ -0,0 +1,112 @@ +use binrw::binrw; +use egui::{CollapsingHeader, Color32, DragValue, RichText, Ui}; +use std::fmt::Debug; + +#[binrw] +#[brw(big)] +#[derive(Debug)] +pub struct SSP1 { + #[br(temp, assert(size==0x48))] + #[bw(calc = 0x48)] + size: u32, // 0x04 + pub flags: u32, // 0x08 + pub position_random: f32, // 0x0C + pub base_velocity: f32, // 0x10 + pub base_velocity_random: f32, // 0x14 + pub velocity_inf_rate: f32, // 0x18 + pub gravity: f32, // 0x1C + pub scale_2d: [f32; 2], // 0x20 + pub inherit_scale: f32, // 0x28 + pub inherit_alpha: f32, // 0x2C + pub inherit_rgb: f32, // 0x30 + #[bw(calc = [color_prm.r(), color_prm.g(), color_prm.b(), color_prm.a()])] + color_temp: [u8; 4], // 0x34 + #[bw(ignore)] + #[br(calc = Color32::from_rgba_premultiplied(color_temp[0], color_temp[1], color_temp[2], color_temp[3]))] + pub color_prm: Color32, // 0x34 + #[bw(calc = [color_env.r(), color_env.g(), color_env.b(), color_env.a()])] + color_temp: [u8; 4], // 0x38 + #[bw(ignore)] + #[br(calc = Color32::from_rgba_premultiplied(color_temp[0], color_temp[1], color_temp[2], color_temp[3]))] + pub color_env: Color32, // 0x38 + pub timing: f32, // 0x3C + pub life: u16, // 0x40 + pub rate: u16, // 0x42 + pub step: u8, // 0x44 + pub texture_idx: u8, // 0x45 + pub rotate_speed: u16, // 0x46 +} + +impl SSP1 { + pub fn show_editor(&mut self, ui: &mut Ui) { + CollapsingHeader::new("Child Shape").show(ui, |ui| { + ui.label(RichText::new(format!("Flags: {:08X}", self.flags)).monospace()); + ui.horizontal(|ui| { + ui.label("Position Random: "); + ui.add(DragValue::new(&mut self.position_random).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Base Velocity: "); + ui.add(DragValue::new(&mut self.base_velocity).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Base Velocity Random: "); + ui.add(DragValue::new(&mut self.base_velocity_random).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Velocity Inf Rate: "); + ui.add(DragValue::new(&mut self.velocity_inf_rate).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Global Scale 2D: "); + ui.add(DragValue::new(&mut self.scale_2d[0]).speed(1).prefix("x: ")); + ui.add(DragValue::new(&mut self.scale_2d[1]).speed(1).prefix("y: ")); + }); + ui.horizontal(|ui| { + ui.label("Inherit Scale: "); + ui.add(DragValue::new(&mut self.inherit_scale).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Inherit Alpha: "); + ui.add(DragValue::new(&mut self.inherit_alpha).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Inherit RGB: "); + ui.add(DragValue::new(&mut self.inherit_rgb).speed(1)); + }); + ui.horizontal(|ui| { + ui.label( + RichText::new(format!("Color Prm: {}", self.color_prm.to_hex())).monospace(), + ); + ui.color_edit_button_srgba(&mut self.color_prm); + }); + ui.horizontal(|ui| { + ui.label( + RichText::new(format!("Color Env: {}", self.color_env.to_hex())).monospace(), + ); + ui.color_edit_button_srgba(&mut self.color_env); + }); + ui.horizontal(|ui| { + ui.label("Timing: "); + ui.add(DragValue::new(&mut self.timing).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Life: "); + ui.add(DragValue::new(&mut self.life).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Rate: "); + ui.add(DragValue::new(&mut self.rate).speed(1)); + }); + ui.horizontal(|ui| { + ui.label("Step: "); + ui.add(DragValue::new(&mut self.step).speed(1)); + }); + ui.label(format!("Texture Indx: {}", self.texture_idx)); + ui.horizontal(|ui| { + ui.label("Rotate Speed: "); + ui.add(DragValue::new(&mut self.rotate_speed).speed(1)); + }); + }); + } +} diff --git a/src/jpa/jpac2_11/tdb.rs b/src/jpa/jpac2_11/tdb.rs new file mode 100644 index 0000000..b932aac --- /dev/null +++ b/src/jpa/jpac2_11/tdb.rs @@ -0,0 +1,45 @@ +use binrw::binrw; +use egui::{CollapsingHeader, Ui}; +use std::fmt::Debug; + +use super::tex::JPATexture; + +#[binrw] +#[brw(big)] +pub struct TDB1 { + #[br(temp)] + #[bw(calc = 8 + (((textures.len()*2) + 3)&!3) as u32)] + size: u32, + #[br(count = (size-8)/2)] + #[bw(align_after = 4)] + pub textures: Vec, +} + +impl Debug for TDB1 { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("TDB1") + .field("textures", &format!("{:04X?}", &self.textures)) + .finish() + } +} + +impl TDB1 { + pub fn show_editor(&mut self, num_textures: &mut u8, textures: &Vec, ui: &mut Ui) { + CollapsingHeader::new("Textures").show(ui, |ui| { + for n in 0..*num_textures as usize { + match textures.get(self.textures[n] as usize) { + Some(tex) => { + ui.label(format!( + "{}: {}", + n, + std::str::from_utf8(&tex.name).unwrap().trim_matches('\0') + )); + }, + None => { + ui.label(format!("{}: Invalid", n)); + }, + } + } + }); + } +} diff --git a/src/jpa/jpac2_11/tex.rs b/src/jpa/jpac2_11/tex.rs new file mode 100644 index 0000000..22c8b26 --- /dev/null +++ b/src/jpa/jpac2_11/tex.rs @@ -0,0 +1,75 @@ +use binrw::binrw; +use std::fmt::Debug; + +#[binrw] +#[brw(big, repr = u8)] +#[derive(Debug)] +pub enum BTIFormat { + I4 = 0x0, + I8 = 0x1, + IA4 = 0x2, + IA8 = 0x3, + RGB565 = 0x4, + RGB5A3 = 0x5, + RGBA8 = 0x6, + C4 = 0x8, + C8 = 0x9, + C14X2 = 0xA, + CMPR = 0xE, +} + +#[binrw] +#[brw(big)] +#[derive(Debug)] +pub struct BTIHeader { + format: BTIFormat, // 0x00 + enable_alpha: u8, // 0x01 + width: u16, // 0x02 + height: u16, // 0x04 + wrap_s: u8, // 0x06 + wrap_t: u8, // 0x07 + pallet_fmt: u16, // 0x08 + num_pallet_etries: u16, // 0x0A + pallet_data_offs: u32, // 0x0C + unk1: u32, // 0x10 + mag_filter_type: u8, // 0x14 + min_filter_type: u8, // 0x15 + unk2: u16, // 0x16 + num_images: u8, // 0x18 + unk3: u8, // 0x19 + unk4: u16, // 0x1A + image_data_offs: u32, // 0x1C // Will always be 0x20 +} + +#[binrw] +#[brw(big)] +#[brw(magic = b"TEX1")] +pub struct JPATexture { + #[br(temp)] + #[bw(calc = (0x20 + 0x20 + image_data.len()) as u32)] + pub size: u32, + pub unk: u32, + pub name: [u8; 0x14], + pub header: BTIHeader, + #[br(count = size-0x40)] + pub image_data: Vec, +} + +impl Debug for JPATexture { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("JPATexture") + .field("unk", &self.unk) + .field( + "name", + &std::str::from_utf8(&self.name) + .unwrap() + .trim_end_matches(['\0']), + ) + .field("header", &self.header) + .field( + "image_data", + &format!("{:02X?}", &self.image_data.as_slice()), + ) + .finish() + } +} diff --git a/src/jpa/mod.rs b/src/jpa/mod.rs new file mode 100644 index 0000000..e0df099 --- /dev/null +++ b/src/jpa/mod.rs @@ -0,0 +1,75 @@ +use std::fmt::Debug; + +use egui::{ScrollArea, Ui}; + +use binrw::binrw; + +pub mod jpac2_11; + +#[derive(Clone, Copy, PartialEq, Debug)] +pub enum Selected { + None, + Resource(usize), + Texture(usize), +} +impl Default for Selected { + fn default() -> Self { + Self::None + } +} + +#[binrw] +#[brw(big)] +#[derive(Debug)] +pub enum JPAC { + #[brw(magic = b"JPAC2-11")] + JPAC2_11(jpac2_11::JPAC), +} + +impl JPAC { + pub fn correct_parsing(&mut self) { + match self { + JPAC::JPAC2_11(jpac) => jpac.correct_parsing(), + } + } + + pub fn get_num_resources(&self) -> usize { + match self { + JPAC::JPAC2_11(jpac) => jpac.resources.len(), + } + } + pub fn get_num_textures(&self) -> usize { + match self { + JPAC::JPAC2_11(jpac) => jpac.textures.len(), + } + } + + pub fn show_tree_ui(&mut self, selected: &mut Selected, filter: &mut String, ui: &mut Ui) { + // Filter Arrea + ui.horizontal(|ui| { + ui.label("Filter: "); + ui.text_edit_singleline(filter); + }); + + // The Scroll Area for navigating the tree + ScrollArea::new([false, true]) + .auto_shrink([false, false]) + .show(ui, |ui| { + match self { + Self::JPAC2_11(jpac) => { + jpac.show_tree_ui(selected, filter, ui); + }, + } + }); + } + + pub fn show_editor(&mut self, selected: Selected, ui: &mut Ui) { + ScrollArea::new([false, true]) + .auto_shrink(false) + .show(ui, |ui| { + match self { + Self::JPAC2_11(jpac) => jpac.show_edit_ui(selected, ui), + } + }); + } +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..bbe900b --- /dev/null +++ b/src/main.rs @@ -0,0 +1,153 @@ +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] +#![feature(slice_as_chunks)] + +use std::{ + fs::File, + io::{Cursor, Read}, +}; + +use crate::jpa::JPAC; +use binrw::{BinRead, BinWrite}; +use eframe::egui; +use egui::{menu, Ui}; + +mod jpa; + +fn main() -> Result<(), eframe::Error> { + env_logger::init(); // Log to stderr (if you run with `RUST_LOG=debug`). + let options = eframe::NativeOptions { + ..Default::default() + }; + eframe::run_native( + "JPAC Editor", + options, + Box::new(|_cc| Box::::default()), + ) +} + +#[derive(Debug, Default)] +struct MyApp { + picked_path: Option, + jpac: Option, + edit: jpa::Selected, + filter_text: String, +} + +impl MyApp { + fn show_menu(&mut self, ui: &mut Ui) { + menu::bar(ui, |ui| { + ui.menu_button("File", |ui| { + if ui.button("Open JPC").clicked() { + if let Some(path) = rfd::FileDialog::new() + .add_filter("JPC", &["jpc"]) + .pick_file() + { + self.picked_path = Some(path.display().to_string()); + self.jpac = None; + } + ui.close_menu(); + } + if ui.button("Open JPN").clicked() { + ui.close_menu(); + } + if ui.button("Save").clicked() { + if let Some(path) = &rfd::FileDialog::new() + .set_file_name("new_jpc.jpc") + .add_filter("JPC", &["jpc"]) + .save_file() + { + let mut f = File::create(path).expect("File Could not be opened"); + self.jpac.write(&mut f).expect("File could not be read"); + } + ui.close_menu(); + } + }); + }); + } + fn show_ribbon(&mut self, ctx: &egui::Context) { + egui::TopBottomPanel::top("top_ribbon") + .resizable(false) + .show(ctx, |ui| { + self.show_menu(ui); + }); + } + + fn show_tree_view(&mut self, ctx: &egui::Context) { + if egui::SidePanel::left("side_panel") + .resizable(true) + .default_width(250.0) + .show(ctx, |ui| { + if let Some(jpac) = &mut self.jpac { + jpac.show_tree_ui(&mut self.edit, &mut self.filter_text, ui); + } else { + ui.label("Pick a File First"); + } + }) + .response + .hovered() + { + let down_pressed = ctx.input(|i| i.key_pressed(egui::Key::ArrowDown)); + let up_pressed = ctx.input(|i| i.key_pressed(egui::Key::ArrowUp)); + match self.edit { + jpa::Selected::Resource(idx) => { + if up_pressed && idx != 0 { + self.edit = jpa::Selected::Resource(idx - 1); + } else if down_pressed { + if let Some(jpac) = &self.jpac { + if idx < jpac.get_num_resources() { + self.edit = jpa::Selected::Resource(idx + 1); + } + } + } + }, + jpa::Selected::Texture(idx) => { + if up_pressed && idx != 0 { + self.edit = jpa::Selected::Texture(idx - 1); + } else if down_pressed { + if let Some(jpac) = &self.jpac { + if idx < jpac.get_num_textures() { + self.edit = jpa::Selected::Texture(idx + 1); + } + } + } + }, + jpa::Selected::None => {}, + }; + } + } + + fn show_edit_view(&mut self, ctx: &egui::Context) { + egui::CentralPanel::default().show(ctx, |ui| { + if let Some(jpac) = &mut self.jpac { + jpac.show_editor(self.edit, ui); + } else { + if let Some(picked_path) = &self.picked_path { + let mut file_contents: Vec = Vec::new(); + File::open(&picked_path) + .expect("File Could not be opened") + .read_to_end(&mut file_contents) + .expect("Could not Read File Contents"); + match JPAC::read(&mut Cursor::new(file_contents)) { + Ok(mut jpac) => { + jpac.correct_parsing(); + self.jpac = Some(jpac); + }, + Err(msg) => { + ui.label("The file is either an incorrect Version or incorrect format"); + println!("{msg}"); + self.picked_path = None; + }, + } + } + } + }); + } +} + +impl eframe::App for MyApp { + fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + self.show_ribbon(ctx); + self.show_tree_view(ctx); + self.show_edit_view(ctx); + } +} diff --git a/ui/basicGUI.ui b/ui/basicGUI.ui deleted file mode 100644 index 35524c9..0000000 --- a/ui/basicGUI.ui +++ /dev/null @@ -1,260 +0,0 @@ - - - MainWindow - - - - 0 - 0 - 550 - 410 - - - - - 0 - 0 - - - - - 550 - 400 - - - - - 550 - 410 - - - - JPAC2 Editor - - - - - - 10 - 10 - 531 - 61 - - - - Original Particle File (.jpc) - - - - - 10 - 20 - 101 - 31 - - - - Browse - - - - - - 120 - 20 - 401 - 31 - - - - Choose the original particle file - - - - - - - 10 - 80 - 531 - 91 - - - - Texture Folder - - - - - 10 - 20 - 101 - 31 - - - - Browse - - - - - - 10 - 50 - 101 - 31 - - - - Dump Textures - - - - - - 120 - 20 - 401 - 31 - - - - Choose the texture folder for replacements/dump destination - - - - - - 240 - 90 - 401 - 31 - - - - Choose the texture folder for replacements/dump destination - - - - - - - 10 - 180 - 531 - 61 - - - - Change File (.json) - - - - - 10 - 20 - 101 - 31 - - - - Browse - - - - - - 120 - 20 - 401 - 31 - - - - Choose the json file for edits to the particle file - - - - - - - 10 - 250 - 531 - 91 - - - - Output Folder - - - - - 10 - 20 - 101 - 31 - - - - Browse - - - - - - 10 - 50 - 101 - 31 - - - - Apply Edits - - - - - - 120 - 20 - 401 - 31 - - - - Output folder. File will be named the same as the input file. - - - - - - - 20 - 350 - 511 - 41 - - - - This tool only support JPAC2-10 and JPAC2-11 Files. See template doc for details and readme for directions. - - - true - - - - - - - 0 - 0 - 550 - 22 - - - - - - - diff --git a/ui/ui_basicGUI.h b/ui/ui_basicGUI.h deleted file mode 100644 index c74ab77..0000000 --- a/ui/ui_basicGUI.h +++ /dev/null @@ -1,148 +0,0 @@ -/******************************************************************************** -** Form generated from reading UI file 'basicGUI.ui' -** -** Created by: Qt User Interface Compiler version 6.2.4 -** -** WARNING! All changes made in this file will be lost when recompiling UI file! -********************************************************************************/ - -#ifndef BASICGUIRXKEBL_H -#define BASICGUIRXKEBL_H - -#include -#include -#include -#include -#include -#include -#include -#include - -QT_BEGIN_NAMESPACE - -class Ui_MainWindow -{ -public: - QWidget *centralwidget; - QGroupBox *original_file_gbox; - QPushButton *original_file_browse_btn; - QLabel *original_file_label; - QGroupBox *texture_folder_gbox; - QPushButton *texture_folder_browse_btn; - QPushButton *dump_textures_btn; - QLabel *texture_folder_label; - QLabel *label_3; - QGroupBox *change_file_gbox; - QPushButton *change_file_browse_btn; - QLabel *edit_file_label; - QGroupBox *ouput_folder_gbox; - QPushButton *output_folder_browse_btn; - QPushButton *apply_edits_btn; - QLabel *output_folder_label; - QLabel *notice_label; - QMenuBar *menubar; - - void setupUi(QMainWindow *MainWindow) - { - if (MainWindow->objectName().isEmpty()) - MainWindow->setObjectName(QString::fromUtf8("MainWindow")); - MainWindow->resize(550, 410); - QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - sizePolicy.setHorizontalStretch(0); - sizePolicy.setVerticalStretch(0); - sizePolicy.setHeightForWidth(MainWindow->sizePolicy().hasHeightForWidth()); - MainWindow->setSizePolicy(sizePolicy); - MainWindow->setMinimumSize(QSize(550, 400)); - MainWindow->setMaximumSize(QSize(550, 410)); - centralwidget = new QWidget(MainWindow); - centralwidget->setObjectName(QString::fromUtf8("centralwidget")); - original_file_gbox = new QGroupBox(centralwidget); - original_file_gbox->setObjectName(QString::fromUtf8("original_file_gbox")); - original_file_gbox->setGeometry(QRect(10, 10, 531, 61)); - original_file_browse_btn = new QPushButton(original_file_gbox); - original_file_browse_btn->setObjectName(QString::fromUtf8("original_file_browse_btn")); - original_file_browse_btn->setGeometry(QRect(10, 20, 101, 31)); - original_file_label = new QLabel(original_file_gbox); - original_file_label->setObjectName(QString::fromUtf8("original_file_label")); - original_file_label->setGeometry(QRect(120, 20, 401, 31)); - texture_folder_gbox = new QGroupBox(centralwidget); - texture_folder_gbox->setObjectName(QString::fromUtf8("texture_folder_gbox")); - texture_folder_gbox->setGeometry(QRect(10, 80, 531, 91)); - texture_folder_browse_btn = new QPushButton(texture_folder_gbox); - texture_folder_browse_btn->setObjectName(QString::fromUtf8("texture_folder_browse_btn")); - texture_folder_browse_btn->setGeometry(QRect(10, 20, 101, 31)); - dump_textures_btn = new QPushButton(texture_folder_gbox); - dump_textures_btn->setObjectName(QString::fromUtf8("dump_textures_btn")); - dump_textures_btn->setGeometry(QRect(10, 50, 101, 31)); - texture_folder_label = new QLabel(texture_folder_gbox); - texture_folder_label->setObjectName(QString::fromUtf8("texture_folder_label")); - texture_folder_label->setGeometry(QRect(120, 20, 401, 31)); - label_3 = new QLabel(texture_folder_gbox); - label_3->setObjectName(QString::fromUtf8("label_3")); - label_3->setGeometry(QRect(240, 90, 401, 31)); - change_file_gbox = new QGroupBox(centralwidget); - change_file_gbox->setObjectName(QString::fromUtf8("change_file_gbox")); - change_file_gbox->setGeometry(QRect(10, 180, 531, 61)); - change_file_browse_btn = new QPushButton(change_file_gbox); - change_file_browse_btn->setObjectName(QString::fromUtf8("change_file_browse_btn")); - change_file_browse_btn->setGeometry(QRect(10, 20, 101, 31)); - edit_file_label = new QLabel(change_file_gbox); - edit_file_label->setObjectName(QString::fromUtf8("edit_file_label")); - edit_file_label->setGeometry(QRect(120, 20, 401, 31)); - ouput_folder_gbox = new QGroupBox(centralwidget); - ouput_folder_gbox->setObjectName(QString::fromUtf8("ouput_folder_gbox")); - ouput_folder_gbox->setGeometry(QRect(10, 250, 531, 91)); - output_folder_browse_btn = new QPushButton(ouput_folder_gbox); - output_folder_browse_btn->setObjectName(QString::fromUtf8("output_folder_browse_btn")); - output_folder_browse_btn->setGeometry(QRect(10, 20, 101, 31)); - apply_edits_btn = new QPushButton(ouput_folder_gbox); - apply_edits_btn->setObjectName(QString::fromUtf8("apply_edits_btn")); - apply_edits_btn->setGeometry(QRect(10, 50, 101, 31)); - output_folder_label = new QLabel(ouput_folder_gbox); - output_folder_label->setObjectName(QString::fromUtf8("output_folder_label")); - output_folder_label->setGeometry(QRect(120, 20, 401, 31)); - notice_label = new QLabel(centralwidget); - notice_label->setObjectName(QString::fromUtf8("notice_label")); - notice_label->setGeometry(QRect(20, 350, 511, 41)); - notice_label->setWordWrap(true); - MainWindow->setCentralWidget(centralwidget); - menubar = new QMenuBar(MainWindow); - menubar->setObjectName(QString::fromUtf8("menubar")); - menubar->setGeometry(QRect(0, 0, 550, 22)); - MainWindow->setMenuBar(menubar); - - retranslateUi(MainWindow); - - QMetaObject::connectSlotsByName(MainWindow); - } // setupUi - - void retranslateUi(QMainWindow *MainWindow) - { - MainWindow->setWindowTitle(QCoreApplication::translate("MainWindow", "JPAC2 Editor", nullptr)); - original_file_gbox->setTitle(QCoreApplication::translate("MainWindow", "Original Particle File (.jpc)", nullptr)); - original_file_browse_btn->setText(QCoreApplication::translate("MainWindow", "Browse", nullptr)); - original_file_label->setText(QCoreApplication::translate("MainWindow", "Choose the original particle file", nullptr)); - texture_folder_gbox->setTitle(QCoreApplication::translate("MainWindow", "Texture Folder", nullptr)); - texture_folder_browse_btn->setText(QCoreApplication::translate("MainWindow", "Browse", nullptr)); - dump_textures_btn->setText(QCoreApplication::translate("MainWindow", "Dump Textures", nullptr)); - texture_folder_label->setText(QCoreApplication::translate("MainWindow", "Choose the texture folder for replacements/dump destination", nullptr)); - label_3->setText(QCoreApplication::translate("MainWindow", "Choose the texture folder for replacements/dump destination", nullptr)); - change_file_gbox->setTitle(QCoreApplication::translate("MainWindow", "Change File (.json)", nullptr)); - change_file_browse_btn->setText(QCoreApplication::translate("MainWindow", "Browse", nullptr)); - edit_file_label->setText(QCoreApplication::translate("MainWindow", "Choose the json file for edits to the particle file", nullptr)); - ouput_folder_gbox->setTitle(QCoreApplication::translate("MainWindow", "Output Folder", nullptr)); - output_folder_browse_btn->setText(QCoreApplication::translate("MainWindow", "Browse", nullptr)); - apply_edits_btn->setText(QCoreApplication::translate("MainWindow", "Apply Edits", nullptr)); - output_folder_label->setText(QCoreApplication::translate("MainWindow", "Output folder. File will be named the same as the input file.", nullptr)); - notice_label->setText(QCoreApplication::translate("MainWindow", "This tool only support JPAC2-10 and JPAC2-11 Files. See template doc for details and readme for directions.", nullptr)); - } // retranslateUi - -}; - -namespace Ui { - class MainWindow: public Ui_MainWindow {}; -} // namespace Ui - -QT_END_NAMESPACE - -#endif // BASICGUIRXKEBL_H